Metamath Proof Explorer


Theorem ply1degltdim

Description: The space S of the univariate polynomials of degree less than N has dimension N . (Contributed by Thierry Arnoux, 20-Feb-2025)

Ref Expression
Hypotheses ply1degltdim.p 𝑃 = ( Poly1𝑅 )
ply1degltdim.d 𝐷 = ( deg1𝑅 )
ply1degltdim.s 𝑆 = ( 𝐷 “ ( -∞ [,) 𝑁 ) )
ply1degltdim.n ( 𝜑𝑁 ∈ ℕ0 )
ply1degltdim.r ( 𝜑𝑅 ∈ DivRing )
ply1degltdim.e 𝐸 = ( 𝑃s 𝑆 )
Assertion ply1degltdim ( 𝜑 → ( dim ‘ 𝐸 ) = 𝑁 )

Proof

Step Hyp Ref Expression
1 ply1degltdim.p 𝑃 = ( Poly1𝑅 )
2 ply1degltdim.d 𝐷 = ( deg1𝑅 )
3 ply1degltdim.s 𝑆 = ( 𝐷 “ ( -∞ [,) 𝑁 ) )
4 ply1degltdim.n ( 𝜑𝑁 ∈ ℕ0 )
5 ply1degltdim.r ( 𝜑𝑅 ∈ DivRing )
6 ply1degltdim.e 𝐸 = ( 𝑃s 𝑆 )
7 1 5 ply1lvec ( 𝜑𝑃 ∈ LVec )
8 5 drngringd ( 𝜑𝑅 ∈ Ring )
9 1 2 3 4 8 ply1degltlss ( 𝜑𝑆 ∈ ( LSubSp ‘ 𝑃 ) )
10 eqid ( LSubSp ‘ 𝑃 ) = ( LSubSp ‘ 𝑃 )
11 6 10 lsslvec ( ( 𝑃 ∈ LVec ∧ 𝑆 ∈ ( LSubSp ‘ 𝑃 ) ) → 𝐸 ∈ LVec )
12 7 9 11 syl2anc ( 𝜑𝐸 ∈ LVec )
13 oveq1 ( 𝑘 = 𝑛 → ( 𝑘 ( .g ‘ ( mulGrp ‘ 𝑃 ) ) ( var1𝑅 ) ) = ( 𝑛 ( .g ‘ ( mulGrp ‘ 𝑃 ) ) ( var1𝑅 ) ) )
14 13 cbvmptv ( 𝑘 ∈ ( 0 ..^ 𝑁 ) ↦ ( 𝑘 ( .g ‘ ( mulGrp ‘ 𝑃 ) ) ( var1𝑅 ) ) ) = ( 𝑛 ∈ ( 0 ..^ 𝑁 ) ↦ ( 𝑛 ( .g ‘ ( mulGrp ‘ 𝑃 ) ) ( var1𝑅 ) ) )
15 1 2 3 4 5 6 14 ply1degltdimlem ( 𝜑 → ran ( 𝑘 ∈ ( 0 ..^ 𝑁 ) ↦ ( 𝑘 ( .g ‘ ( mulGrp ‘ 𝑃 ) ) ( var1𝑅 ) ) ) ∈ ( LBasis ‘ 𝐸 ) )
16 eqid ( Base ‘ 𝑃 ) = ( Base ‘ 𝑃 )
17 2 1 16 deg1xrf 𝐷 : ( Base ‘ 𝑃 ) ⟶ ℝ*
18 ffn ( 𝐷 : ( Base ‘ 𝑃 ) ⟶ ℝ*𝐷 Fn ( Base ‘ 𝑃 ) )
19 17 18 mp1i ( ( 𝜑𝑛 ∈ ( 0 ..^ 𝑁 ) ) → 𝐷 Fn ( Base ‘ 𝑃 ) )
20 eqid ( mulGrp ‘ 𝑃 ) = ( mulGrp ‘ 𝑃 )
21 20 16 mgpbas ( Base ‘ 𝑃 ) = ( Base ‘ ( mulGrp ‘ 𝑃 ) )
22 eqid ( .g ‘ ( mulGrp ‘ 𝑃 ) ) = ( .g ‘ ( mulGrp ‘ 𝑃 ) )
23 1 ply1ring ( 𝑅 ∈ Ring → 𝑃 ∈ Ring )
24 20 ringmgp ( 𝑃 ∈ Ring → ( mulGrp ‘ 𝑃 ) ∈ Mnd )
25 8 23 24 3syl ( 𝜑 → ( mulGrp ‘ 𝑃 ) ∈ Mnd )
26 25 adantr ( ( 𝜑𝑛 ∈ ( 0 ..^ 𝑁 ) ) → ( mulGrp ‘ 𝑃 ) ∈ Mnd )
27 elfzonn0 ( 𝑛 ∈ ( 0 ..^ 𝑁 ) → 𝑛 ∈ ℕ0 )
28 27 adantl ( ( 𝜑𝑛 ∈ ( 0 ..^ 𝑁 ) ) → 𝑛 ∈ ℕ0 )
29 eqid ( var1𝑅 ) = ( var1𝑅 )
30 29 1 16 vr1cl ( 𝑅 ∈ Ring → ( var1𝑅 ) ∈ ( Base ‘ 𝑃 ) )
31 8 30 syl ( 𝜑 → ( var1𝑅 ) ∈ ( Base ‘ 𝑃 ) )
32 31 adantr ( ( 𝜑𝑛 ∈ ( 0 ..^ 𝑁 ) ) → ( var1𝑅 ) ∈ ( Base ‘ 𝑃 ) )
33 21 22 26 28 32 mulgnn0cld ( ( 𝜑𝑛 ∈ ( 0 ..^ 𝑁 ) ) → ( 𝑛 ( .g ‘ ( mulGrp ‘ 𝑃 ) ) ( var1𝑅 ) ) ∈ ( Base ‘ 𝑃 ) )
34 mnfxr -∞ ∈ ℝ*
35 34 a1i ( ( 𝜑𝑛 ∈ ( 0 ..^ 𝑁 ) ) → -∞ ∈ ℝ* )
36 4 nn0red ( 𝜑𝑁 ∈ ℝ )
37 36 rexrd ( 𝜑𝑁 ∈ ℝ* )
38 37 adantr ( ( 𝜑𝑛 ∈ ( 0 ..^ 𝑁 ) ) → 𝑁 ∈ ℝ* )
39 2 1 16 deg1xrcl ( ( 𝑛 ( .g ‘ ( mulGrp ‘ 𝑃 ) ) ( var1𝑅 ) ) ∈ ( Base ‘ 𝑃 ) → ( 𝐷 ‘ ( 𝑛 ( .g ‘ ( mulGrp ‘ 𝑃 ) ) ( var1𝑅 ) ) ) ∈ ℝ* )
40 33 39 syl ( ( 𝜑𝑛 ∈ ( 0 ..^ 𝑁 ) ) → ( 𝐷 ‘ ( 𝑛 ( .g ‘ ( mulGrp ‘ 𝑃 ) ) ( var1𝑅 ) ) ) ∈ ℝ* )
41 40 mnfled ( ( 𝜑𝑛 ∈ ( 0 ..^ 𝑁 ) ) → -∞ ≤ ( 𝐷 ‘ ( 𝑛 ( .g ‘ ( mulGrp ‘ 𝑃 ) ) ( var1𝑅 ) ) ) )
42 27 nn0red ( 𝑛 ∈ ( 0 ..^ 𝑁 ) → 𝑛 ∈ ℝ )
43 42 rexrd ( 𝑛 ∈ ( 0 ..^ 𝑁 ) → 𝑛 ∈ ℝ* )
44 43 adantl ( ( 𝜑𝑛 ∈ ( 0 ..^ 𝑁 ) ) → 𝑛 ∈ ℝ* )
45 2 1 29 20 22 deg1pwle ( ( 𝑅 ∈ Ring ∧ 𝑛 ∈ ℕ0 ) → ( 𝐷 ‘ ( 𝑛 ( .g ‘ ( mulGrp ‘ 𝑃 ) ) ( var1𝑅 ) ) ) ≤ 𝑛 )
46 8 27 45 syl2an ( ( 𝜑𝑛 ∈ ( 0 ..^ 𝑁 ) ) → ( 𝐷 ‘ ( 𝑛 ( .g ‘ ( mulGrp ‘ 𝑃 ) ) ( var1𝑅 ) ) ) ≤ 𝑛 )
47 elfzolt2 ( 𝑛 ∈ ( 0 ..^ 𝑁 ) → 𝑛 < 𝑁 )
48 47 adantl ( ( 𝜑𝑛 ∈ ( 0 ..^ 𝑁 ) ) → 𝑛 < 𝑁 )
49 40 44 38 46 48 xrlelttrd ( ( 𝜑𝑛 ∈ ( 0 ..^ 𝑁 ) ) → ( 𝐷 ‘ ( 𝑛 ( .g ‘ ( mulGrp ‘ 𝑃 ) ) ( var1𝑅 ) ) ) < 𝑁 )
50 35 38 40 41 49 elicod ( ( 𝜑𝑛 ∈ ( 0 ..^ 𝑁 ) ) → ( 𝐷 ‘ ( 𝑛 ( .g ‘ ( mulGrp ‘ 𝑃 ) ) ( var1𝑅 ) ) ) ∈ ( -∞ [,) 𝑁 ) )
51 19 33 50 elpreimad ( ( 𝜑𝑛 ∈ ( 0 ..^ 𝑁 ) ) → ( 𝑛 ( .g ‘ ( mulGrp ‘ 𝑃 ) ) ( var1𝑅 ) ) ∈ ( 𝐷 “ ( -∞ [,) 𝑁 ) ) )
52 51 3 eleqtrrdi ( ( 𝜑𝑛 ∈ ( 0 ..^ 𝑁 ) ) → ( 𝑛 ( .g ‘ ( mulGrp ‘ 𝑃 ) ) ( var1𝑅 ) ) ∈ 𝑆 )
53 16 10 lssss ( 𝑆 ∈ ( LSubSp ‘ 𝑃 ) → 𝑆 ⊆ ( Base ‘ 𝑃 ) )
54 6 16 ressbas2 ( 𝑆 ⊆ ( Base ‘ 𝑃 ) → 𝑆 = ( Base ‘ 𝐸 ) )
55 9 53 54 3syl ( 𝜑𝑆 = ( Base ‘ 𝐸 ) )
56 55 adantr ( ( 𝜑𝑛 ∈ ( 0 ..^ 𝑁 ) ) → 𝑆 = ( Base ‘ 𝐸 ) )
57 52 56 eleqtrd ( ( 𝜑𝑛 ∈ ( 0 ..^ 𝑁 ) ) → ( 𝑛 ( .g ‘ ( mulGrp ‘ 𝑃 ) ) ( var1𝑅 ) ) ∈ ( Base ‘ 𝐸 ) )
58 57 14 fmptd ( 𝜑 → ( 𝑘 ∈ ( 0 ..^ 𝑁 ) ↦ ( 𝑘 ( .g ‘ ( mulGrp ‘ 𝑃 ) ) ( var1𝑅 ) ) ) : ( 0 ..^ 𝑁 ) ⟶ ( Base ‘ 𝐸 ) )
59 58 ffnd ( 𝜑 → ( 𝑘 ∈ ( 0 ..^ 𝑁 ) ↦ ( 𝑘 ( .g ‘ ( mulGrp ‘ 𝑃 ) ) ( var1𝑅 ) ) ) Fn ( 0 ..^ 𝑁 ) )
60 hashfn ( ( 𝑘 ∈ ( 0 ..^ 𝑁 ) ↦ ( 𝑘 ( .g ‘ ( mulGrp ‘ 𝑃 ) ) ( var1𝑅 ) ) ) Fn ( 0 ..^ 𝑁 ) → ( ♯ ‘ ( 𝑘 ∈ ( 0 ..^ 𝑁 ) ↦ ( 𝑘 ( .g ‘ ( mulGrp ‘ 𝑃 ) ) ( var1𝑅 ) ) ) ) = ( ♯ ‘ ( 0 ..^ 𝑁 ) ) )
61 59 60 syl ( 𝜑 → ( ♯ ‘ ( 𝑘 ∈ ( 0 ..^ 𝑁 ) ↦ ( 𝑘 ( .g ‘ ( mulGrp ‘ 𝑃 ) ) ( var1𝑅 ) ) ) ) = ( ♯ ‘ ( 0 ..^ 𝑁 ) ) )
62 ovexd ( 𝜑 → ( 0 ..^ 𝑁 ) ∈ V )
63 57 ralrimiva ( 𝜑 → ∀ 𝑛 ∈ ( 0 ..^ 𝑁 ) ( 𝑛 ( .g ‘ ( mulGrp ‘ 𝑃 ) ) ( var1𝑅 ) ) ∈ ( Base ‘ 𝐸 ) )
64 drngnzr ( 𝑅 ∈ DivRing → 𝑅 ∈ NzRing )
65 5 64 syl ( 𝜑𝑅 ∈ NzRing )
66 65 ad2antrr ( ( ( 𝜑𝑛 ∈ ( 0 ..^ 𝑁 ) ) ∧ 𝑖 ∈ ( 0 ..^ 𝑁 ) ) → 𝑅 ∈ NzRing )
67 28 adantr ( ( ( 𝜑𝑛 ∈ ( 0 ..^ 𝑁 ) ) ∧ 𝑖 ∈ ( 0 ..^ 𝑁 ) ) → 𝑛 ∈ ℕ0 )
68 elfzonn0 ( 𝑖 ∈ ( 0 ..^ 𝑁 ) → 𝑖 ∈ ℕ0 )
69 68 adantl ( ( ( 𝜑𝑛 ∈ ( 0 ..^ 𝑁 ) ) ∧ 𝑖 ∈ ( 0 ..^ 𝑁 ) ) → 𝑖 ∈ ℕ0 )
70 1 29 22 66 67 69 ply1moneq ( ( ( 𝜑𝑛 ∈ ( 0 ..^ 𝑁 ) ) ∧ 𝑖 ∈ ( 0 ..^ 𝑁 ) ) → ( ( 𝑛 ( .g ‘ ( mulGrp ‘ 𝑃 ) ) ( var1𝑅 ) ) = ( 𝑖 ( .g ‘ ( mulGrp ‘ 𝑃 ) ) ( var1𝑅 ) ) ↔ 𝑛 = 𝑖 ) )
71 70 biimpd ( ( ( 𝜑𝑛 ∈ ( 0 ..^ 𝑁 ) ) ∧ 𝑖 ∈ ( 0 ..^ 𝑁 ) ) → ( ( 𝑛 ( .g ‘ ( mulGrp ‘ 𝑃 ) ) ( var1𝑅 ) ) = ( 𝑖 ( .g ‘ ( mulGrp ‘ 𝑃 ) ) ( var1𝑅 ) ) → 𝑛 = 𝑖 ) )
72 71 anasss ( ( 𝜑 ∧ ( 𝑛 ∈ ( 0 ..^ 𝑁 ) ∧ 𝑖 ∈ ( 0 ..^ 𝑁 ) ) ) → ( ( 𝑛 ( .g ‘ ( mulGrp ‘ 𝑃 ) ) ( var1𝑅 ) ) = ( 𝑖 ( .g ‘ ( mulGrp ‘ 𝑃 ) ) ( var1𝑅 ) ) → 𝑛 = 𝑖 ) )
73 72 ralrimivva ( 𝜑 → ∀ 𝑛 ∈ ( 0 ..^ 𝑁 ) ∀ 𝑖 ∈ ( 0 ..^ 𝑁 ) ( ( 𝑛 ( .g ‘ ( mulGrp ‘ 𝑃 ) ) ( var1𝑅 ) ) = ( 𝑖 ( .g ‘ ( mulGrp ‘ 𝑃 ) ) ( var1𝑅 ) ) → 𝑛 = 𝑖 ) )
74 oveq1 ( 𝑛 = 𝑖 → ( 𝑛 ( .g ‘ ( mulGrp ‘ 𝑃 ) ) ( var1𝑅 ) ) = ( 𝑖 ( .g ‘ ( mulGrp ‘ 𝑃 ) ) ( var1𝑅 ) ) )
75 14 74 f1mpt ( ( 𝑘 ∈ ( 0 ..^ 𝑁 ) ↦ ( 𝑘 ( .g ‘ ( mulGrp ‘ 𝑃 ) ) ( var1𝑅 ) ) ) : ( 0 ..^ 𝑁 ) –1-1→ ( Base ‘ 𝐸 ) ↔ ( ∀ 𝑛 ∈ ( 0 ..^ 𝑁 ) ( 𝑛 ( .g ‘ ( mulGrp ‘ 𝑃 ) ) ( var1𝑅 ) ) ∈ ( Base ‘ 𝐸 ) ∧ ∀ 𝑛 ∈ ( 0 ..^ 𝑁 ) ∀ 𝑖 ∈ ( 0 ..^ 𝑁 ) ( ( 𝑛 ( .g ‘ ( mulGrp ‘ 𝑃 ) ) ( var1𝑅 ) ) = ( 𝑖 ( .g ‘ ( mulGrp ‘ 𝑃 ) ) ( var1𝑅 ) ) → 𝑛 = 𝑖 ) ) )
76 63 73 75 sylanbrc ( 𝜑 → ( 𝑘 ∈ ( 0 ..^ 𝑁 ) ↦ ( 𝑘 ( .g ‘ ( mulGrp ‘ 𝑃 ) ) ( var1𝑅 ) ) ) : ( 0 ..^ 𝑁 ) –1-1→ ( Base ‘ 𝐸 ) )
77 hashf1rn ( ( ( 0 ..^ 𝑁 ) ∈ V ∧ ( 𝑘 ∈ ( 0 ..^ 𝑁 ) ↦ ( 𝑘 ( .g ‘ ( mulGrp ‘ 𝑃 ) ) ( var1𝑅 ) ) ) : ( 0 ..^ 𝑁 ) –1-1→ ( Base ‘ 𝐸 ) ) → ( ♯ ‘ ( 𝑘 ∈ ( 0 ..^ 𝑁 ) ↦ ( 𝑘 ( .g ‘ ( mulGrp ‘ 𝑃 ) ) ( var1𝑅 ) ) ) ) = ( ♯ ‘ ran ( 𝑘 ∈ ( 0 ..^ 𝑁 ) ↦ ( 𝑘 ( .g ‘ ( mulGrp ‘ 𝑃 ) ) ( var1𝑅 ) ) ) ) )
78 62 76 77 syl2anc ( 𝜑 → ( ♯ ‘ ( 𝑘 ∈ ( 0 ..^ 𝑁 ) ↦ ( 𝑘 ( .g ‘ ( mulGrp ‘ 𝑃 ) ) ( var1𝑅 ) ) ) ) = ( ♯ ‘ ran ( 𝑘 ∈ ( 0 ..^ 𝑁 ) ↦ ( 𝑘 ( .g ‘ ( mulGrp ‘ 𝑃 ) ) ( var1𝑅 ) ) ) ) )
79 hashfzo0 ( 𝑁 ∈ ℕ0 → ( ♯ ‘ ( 0 ..^ 𝑁 ) ) = 𝑁 )
80 4 79 syl ( 𝜑 → ( ♯ ‘ ( 0 ..^ 𝑁 ) ) = 𝑁 )
81 61 78 80 3eqtr3d ( 𝜑 → ( ♯ ‘ ran ( 𝑘 ∈ ( 0 ..^ 𝑁 ) ↦ ( 𝑘 ( .g ‘ ( mulGrp ‘ 𝑃 ) ) ( var1𝑅 ) ) ) ) = 𝑁 )
82 hashvnfin ( ( ran ( 𝑘 ∈ ( 0 ..^ 𝑁 ) ↦ ( 𝑘 ( .g ‘ ( mulGrp ‘ 𝑃 ) ) ( var1𝑅 ) ) ) ∈ ( LBasis ‘ 𝐸 ) ∧ 𝑁 ∈ ℕ0 ) → ( ( ♯ ‘ ran ( 𝑘 ∈ ( 0 ..^ 𝑁 ) ↦ ( 𝑘 ( .g ‘ ( mulGrp ‘ 𝑃 ) ) ( var1𝑅 ) ) ) ) = 𝑁 → ran ( 𝑘 ∈ ( 0 ..^ 𝑁 ) ↦ ( 𝑘 ( .g ‘ ( mulGrp ‘ 𝑃 ) ) ( var1𝑅 ) ) ) ∈ Fin ) )
83 82 imp ( ( ( ran ( 𝑘 ∈ ( 0 ..^ 𝑁 ) ↦ ( 𝑘 ( .g ‘ ( mulGrp ‘ 𝑃 ) ) ( var1𝑅 ) ) ) ∈ ( LBasis ‘ 𝐸 ) ∧ 𝑁 ∈ ℕ0 ) ∧ ( ♯ ‘ ran ( 𝑘 ∈ ( 0 ..^ 𝑁 ) ↦ ( 𝑘 ( .g ‘ ( mulGrp ‘ 𝑃 ) ) ( var1𝑅 ) ) ) ) = 𝑁 ) → ran ( 𝑘 ∈ ( 0 ..^ 𝑁 ) ↦ ( 𝑘 ( .g ‘ ( mulGrp ‘ 𝑃 ) ) ( var1𝑅 ) ) ) ∈ Fin )
84 15 4 81 83 syl21anc ( 𝜑 → ran ( 𝑘 ∈ ( 0 ..^ 𝑁 ) ↦ ( 𝑘 ( .g ‘ ( mulGrp ‘ 𝑃 ) ) ( var1𝑅 ) ) ) ∈ Fin )
85 eqid ( LBasis ‘ 𝐸 ) = ( LBasis ‘ 𝐸 )
86 85 dimvalfi ( ( 𝐸 ∈ LVec ∧ ran ( 𝑘 ∈ ( 0 ..^ 𝑁 ) ↦ ( 𝑘 ( .g ‘ ( mulGrp ‘ 𝑃 ) ) ( var1𝑅 ) ) ) ∈ ( LBasis ‘ 𝐸 ) ∧ ran ( 𝑘 ∈ ( 0 ..^ 𝑁 ) ↦ ( 𝑘 ( .g ‘ ( mulGrp ‘ 𝑃 ) ) ( var1𝑅 ) ) ) ∈ Fin ) → ( dim ‘ 𝐸 ) = ( ♯ ‘ ran ( 𝑘 ∈ ( 0 ..^ 𝑁 ) ↦ ( 𝑘 ( .g ‘ ( mulGrp ‘ 𝑃 ) ) ( var1𝑅 ) ) ) ) )
87 12 15 84 86 syl3anc ( 𝜑 → ( dim ‘ 𝐸 ) = ( ♯ ‘ ran ( 𝑘 ∈ ( 0 ..^ 𝑁 ) ↦ ( 𝑘 ( .g ‘ ( mulGrp ‘ 𝑃 ) ) ( var1𝑅 ) ) ) ) )
88 87 81 eqtrd ( 𝜑 → ( dim ‘ 𝐸 ) = 𝑁 )