MPE Home Metamath Proof Explorer < Previous   Next >
Nearby theorems
Mirrors  >  Home  >  MPE Home  >  Th. List  >  chpscmatgsumbin Structured version   Visualization version   GIF version

Theorem chpscmatgsumbin 22337
Description: The characteristic polynomial of a (nonempty!) scalar matrix, expressed as finite group sum of binomials. (Contributed by AV, 2-Sep-2019.)
Hypotheses
Ref Expression
chp0mat.c 𝐢 = (𝑁 CharPlyMat 𝑅)
chp0mat.p 𝑃 = (Poly1β€˜π‘…)
chp0mat.a 𝐴 = (𝑁 Mat 𝑅)
chp0mat.x 𝑋 = (var1β€˜π‘…)
chp0mat.g 𝐺 = (mulGrpβ€˜π‘ƒ)
chp0mat.m ↑ = (.gβ€˜πΊ)
chpscmat.d 𝐷 = {π‘š ∈ (Baseβ€˜π΄) ∣ βˆƒπ‘ ∈ (Baseβ€˜π‘…)βˆ€π‘– ∈ 𝑁 βˆ€π‘— ∈ 𝑁 (π‘–π‘šπ‘—) = if(𝑖 = 𝑗, 𝑐, (0gβ€˜π‘…))}
chpscmat.s 𝑆 = (algScβ€˜π‘ƒ)
chpscmat.m βˆ’ = (-gβ€˜π‘ƒ)
chpscmatgsum.f 𝐹 = (.gβ€˜π‘ƒ)
chpscmatgsum.h 𝐻 = (mulGrpβ€˜π‘…)
chpscmatgsum.e 𝐸 = (.gβ€˜π»)
chpscmatgsum.i 𝐼 = (invgβ€˜π‘…)
chpscmatgsum.s Β· = ( ·𝑠 β€˜π‘ƒ)
Assertion
Ref Expression
chpscmatgsumbin (((𝑁 ∈ Fin ∧ 𝑅 ∈ CRing) ∧ (𝑀 ∈ 𝐷 ∧ 𝐽 ∈ 𝑁 ∧ βˆ€π‘› ∈ 𝑁 (𝑛𝑀𝑛) = (𝐽𝑀𝐽))) β†’ (πΆβ€˜π‘€) = (𝑃 Ξ£g (𝑙 ∈ (0...(β™―β€˜π‘)) ↦ (((β™―β€˜π‘)C𝑙)𝐹((((β™―β€˜π‘) βˆ’ 𝑙)𝐸(πΌβ€˜(𝐽𝑀𝐽))) Β· (𝑙 ↑ 𝑋))))))
Distinct variable groups:   𝑖,𝑗,𝐴   𝑖,𝑁,𝑗   𝑃,𝑖,𝑗   𝑅,𝑖,𝑗   𝑖,𝑋,𝑗   𝐴,𝑐,π‘š   𝐷,𝑛   𝑛,𝐸   𝑛,𝐼   𝑀,𝑐,𝑖,𝑗,π‘š,𝑛   𝑁,𝑐,π‘š,𝑛   𝑃,𝑛   𝑅,𝑐,π‘š,𝑛   𝑆,𝑛   𝐷,𝑙   𝐹,𝑙   𝐼,𝑙   𝐽,𝑙,𝑛   𝑀,𝑙   𝑁,𝑙   𝑃,𝑙   𝑅,𝑙   𝑆,𝑙   𝑋,𝑙   ↑ ,𝑙
Allowed substitution hints:   𝐴(𝑛,𝑙)   𝐢(𝑖,𝑗,π‘š,𝑛,𝑐,𝑙)   𝐷(𝑖,𝑗,π‘š,𝑐)   𝑃(π‘š,𝑐)   𝑆(𝑖,𝑗,π‘š,𝑐)   Β· (𝑖,𝑗,π‘š,𝑛,𝑐,𝑙)   𝐸(𝑖,𝑗,π‘š,𝑐,𝑙)   ↑ (𝑖,𝑗,π‘š,𝑛,𝑐)   𝐹(𝑖,𝑗,π‘š,𝑛,𝑐)   𝐺(𝑖,𝑗,π‘š,𝑛,𝑐,𝑙)   𝐻(𝑖,𝑗,π‘š,𝑛,𝑐,𝑙)   𝐼(𝑖,𝑗,π‘š,𝑐)   𝐽(𝑖,𝑗,π‘š,𝑐)   βˆ’ (𝑖,𝑗,π‘š,𝑛,𝑐,𝑙)   𝑋(π‘š,𝑛,𝑐)

Proof of Theorem chpscmatgsumbin
StepHypRef Expression
1 chp0mat.c . . 3 𝐢 = (𝑁 CharPlyMat 𝑅)
2 chp0mat.p . . 3 𝑃 = (Poly1β€˜π‘…)
3 chp0mat.a . . 3 𝐴 = (𝑁 Mat 𝑅)
4 chp0mat.x . . 3 𝑋 = (var1β€˜π‘…)
5 chp0mat.g . . 3 𝐺 = (mulGrpβ€˜π‘ƒ)
6 chp0mat.m . . 3 ↑ = (.gβ€˜πΊ)
7 chpscmat.d . . 3 𝐷 = {π‘š ∈ (Baseβ€˜π΄) ∣ βˆƒπ‘ ∈ (Baseβ€˜π‘…)βˆ€π‘– ∈ 𝑁 βˆ€π‘— ∈ 𝑁 (π‘–π‘šπ‘—) = if(𝑖 = 𝑗, 𝑐, (0gβ€˜π‘…))}
8 chpscmat.s . . 3 𝑆 = (algScβ€˜π‘ƒ)
9 chpscmat.m . . 3 βˆ’ = (-gβ€˜π‘ƒ)
101, 2, 3, 4, 5, 6, 7, 8, 9chpscmat0 22336 . 2 (((𝑁 ∈ Fin ∧ 𝑅 ∈ CRing) ∧ (𝑀 ∈ 𝐷 ∧ 𝐽 ∈ 𝑁 ∧ βˆ€π‘› ∈ 𝑁 (𝑛𝑀𝑛) = (𝐽𝑀𝐽))) β†’ (πΆβ€˜π‘€) = ((β™―β€˜π‘) ↑ (𝑋 βˆ’ (π‘†β€˜(𝐽𝑀𝐽)))))
11 crngring 20061 . . . . . . . 8 (𝑅 ∈ CRing β†’ 𝑅 ∈ Ring)
1211adantl 482 . . . . . . 7 ((𝑁 ∈ Fin ∧ 𝑅 ∈ CRing) β†’ 𝑅 ∈ Ring)
13 eqid 2732 . . . . . . . 8 (Baseβ€˜π‘ƒ) = (Baseβ€˜π‘ƒ)
144, 2, 13vr1cl 21732 . . . . . . 7 (𝑅 ∈ Ring β†’ 𝑋 ∈ (Baseβ€˜π‘ƒ))
1512, 14syl 17 . . . . . 6 ((𝑁 ∈ Fin ∧ 𝑅 ∈ CRing) β†’ 𝑋 ∈ (Baseβ€˜π‘ƒ))
1615adantr 481 . . . . 5 (((𝑁 ∈ Fin ∧ 𝑅 ∈ CRing) ∧ (𝑀 ∈ 𝐷 ∧ 𝐽 ∈ 𝑁 ∧ βˆ€π‘› ∈ 𝑁 (𝑛𝑀𝑛) = (𝐽𝑀𝐽))) β†’ 𝑋 ∈ (Baseβ€˜π‘ƒ))
1711ad2antlr 725 . . . . . . 7 (((𝑁 ∈ Fin ∧ 𝑅 ∈ CRing) ∧ (𝑀 ∈ 𝐷 ∧ 𝐽 ∈ 𝑁 ∧ βˆ€π‘› ∈ 𝑁 (𝑛𝑀𝑛) = (𝐽𝑀𝐽))) β†’ 𝑅 ∈ Ring)
18 eqid 2732 . . . . . . . 8 (Scalarβ€˜π‘ƒ) = (Scalarβ€˜π‘ƒ)
192ply1ring 21761 . . . . . . . 8 (𝑅 ∈ Ring β†’ 𝑃 ∈ Ring)
202ply1lmod 21765 . . . . . . . 8 (𝑅 ∈ Ring β†’ 𝑃 ∈ LMod)
21 eqid 2732 . . . . . . . 8 (Baseβ€˜(Scalarβ€˜π‘ƒ)) = (Baseβ€˜(Scalarβ€˜π‘ƒ))
228, 18, 19, 20, 21, 13asclf 21427 . . . . . . 7 (𝑅 ∈ Ring β†’ 𝑆:(Baseβ€˜(Scalarβ€˜π‘ƒ))⟢(Baseβ€˜π‘ƒ))
2317, 22syl 17 . . . . . 6 (((𝑁 ∈ Fin ∧ 𝑅 ∈ CRing) ∧ (𝑀 ∈ 𝐷 ∧ 𝐽 ∈ 𝑁 ∧ βˆ€π‘› ∈ 𝑁 (𝑛𝑀𝑛) = (𝐽𝑀𝐽))) β†’ 𝑆:(Baseβ€˜(Scalarβ€˜π‘ƒ))⟢(Baseβ€˜π‘ƒ))
24 simpr2 1195 . . . . . . . 8 (((𝑁 ∈ Fin ∧ 𝑅 ∈ CRing) ∧ (𝑀 ∈ 𝐷 ∧ 𝐽 ∈ 𝑁 ∧ βˆ€π‘› ∈ 𝑁 (𝑛𝑀𝑛) = (𝐽𝑀𝐽))) β†’ 𝐽 ∈ 𝑁)
25 elrabi 3676 . . . . . . . . . . . 12 (𝑀 ∈ {π‘š ∈ (Baseβ€˜π΄) ∣ βˆƒπ‘ ∈ (Baseβ€˜π‘…)βˆ€π‘– ∈ 𝑁 βˆ€π‘— ∈ 𝑁 (π‘–π‘šπ‘—) = if(𝑖 = 𝑗, 𝑐, (0gβ€˜π‘…))} β†’ 𝑀 ∈ (Baseβ€˜π΄))
2625a1d 25 . . . . . . . . . . 11 (𝑀 ∈ {π‘š ∈ (Baseβ€˜π΄) ∣ βˆƒπ‘ ∈ (Baseβ€˜π‘…)βˆ€π‘– ∈ 𝑁 βˆ€π‘— ∈ 𝑁 (π‘–π‘šπ‘—) = if(𝑖 = 𝑗, 𝑐, (0gβ€˜π‘…))} β†’ ((𝑁 ∈ Fin ∧ 𝑅 ∈ CRing) β†’ 𝑀 ∈ (Baseβ€˜π΄)))
2726, 7eleq2s 2851 . . . . . . . . . 10 (𝑀 ∈ 𝐷 β†’ ((𝑁 ∈ Fin ∧ 𝑅 ∈ CRing) β†’ 𝑀 ∈ (Baseβ€˜π΄)))
28273ad2ant1 1133 . . . . . . . . 9 ((𝑀 ∈ 𝐷 ∧ 𝐽 ∈ 𝑁 ∧ βˆ€π‘› ∈ 𝑁 (𝑛𝑀𝑛) = (𝐽𝑀𝐽)) β†’ ((𝑁 ∈ Fin ∧ 𝑅 ∈ CRing) β†’ 𝑀 ∈ (Baseβ€˜π΄)))
2928impcom 408 . . . . . . . 8 (((𝑁 ∈ Fin ∧ 𝑅 ∈ CRing) ∧ (𝑀 ∈ 𝐷 ∧ 𝐽 ∈ 𝑁 ∧ βˆ€π‘› ∈ 𝑁 (𝑛𝑀𝑛) = (𝐽𝑀𝐽))) β†’ 𝑀 ∈ (Baseβ€˜π΄))
30 eqid 2732 . . . . . . . . 9 (Baseβ€˜π‘…) = (Baseβ€˜π‘…)
313, 30matecl 21918 . . . . . . . 8 ((𝐽 ∈ 𝑁 ∧ 𝐽 ∈ 𝑁 ∧ 𝑀 ∈ (Baseβ€˜π΄)) β†’ (𝐽𝑀𝐽) ∈ (Baseβ€˜π‘…))
3224, 24, 29, 31syl3anc 1371 . . . . . . 7 (((𝑁 ∈ Fin ∧ 𝑅 ∈ CRing) ∧ (𝑀 ∈ 𝐷 ∧ 𝐽 ∈ 𝑁 ∧ βˆ€π‘› ∈ 𝑁 (𝑛𝑀𝑛) = (𝐽𝑀𝐽))) β†’ (𝐽𝑀𝐽) ∈ (Baseβ€˜π‘…))
332ply1sca 21766 . . . . . . . . . . 11 (𝑅 ∈ CRing β†’ 𝑅 = (Scalarβ€˜π‘ƒ))
3433adantl 482 . . . . . . . . . 10 ((𝑁 ∈ Fin ∧ 𝑅 ∈ CRing) β†’ 𝑅 = (Scalarβ€˜π‘ƒ))
3534eqcomd 2738 . . . . . . . . 9 ((𝑁 ∈ Fin ∧ 𝑅 ∈ CRing) β†’ (Scalarβ€˜π‘ƒ) = 𝑅)
3635adantr 481 . . . . . . . 8 (((𝑁 ∈ Fin ∧ 𝑅 ∈ CRing) ∧ (𝑀 ∈ 𝐷 ∧ 𝐽 ∈ 𝑁 ∧ βˆ€π‘› ∈ 𝑁 (𝑛𝑀𝑛) = (𝐽𝑀𝐽))) β†’ (Scalarβ€˜π‘ƒ) = 𝑅)
3736fveq2d 6892 . . . . . . 7 (((𝑁 ∈ Fin ∧ 𝑅 ∈ CRing) ∧ (𝑀 ∈ 𝐷 ∧ 𝐽 ∈ 𝑁 ∧ βˆ€π‘› ∈ 𝑁 (𝑛𝑀𝑛) = (𝐽𝑀𝐽))) β†’ (Baseβ€˜(Scalarβ€˜π‘ƒ)) = (Baseβ€˜π‘…))
3832, 37eleqtrrd 2836 . . . . . 6 (((𝑁 ∈ Fin ∧ 𝑅 ∈ CRing) ∧ (𝑀 ∈ 𝐷 ∧ 𝐽 ∈ 𝑁 ∧ βˆ€π‘› ∈ 𝑁 (𝑛𝑀𝑛) = (𝐽𝑀𝐽))) β†’ (𝐽𝑀𝐽) ∈ (Baseβ€˜(Scalarβ€˜π‘ƒ)))
3923, 38ffvelcdmd 7084 . . . . 5 (((𝑁 ∈ Fin ∧ 𝑅 ∈ CRing) ∧ (𝑀 ∈ 𝐷 ∧ 𝐽 ∈ 𝑁 ∧ βˆ€π‘› ∈ 𝑁 (𝑛𝑀𝑛) = (𝐽𝑀𝐽))) β†’ (π‘†β€˜(𝐽𝑀𝐽)) ∈ (Baseβ€˜π‘ƒ))
40 eqid 2732 . . . . . 6 (+gβ€˜π‘ƒ) = (+gβ€˜π‘ƒ)
41 eqid 2732 . . . . . 6 (invgβ€˜π‘ƒ) = (invgβ€˜π‘ƒ)
4213, 40, 41, 9grpsubval 18866 . . . . 5 ((𝑋 ∈ (Baseβ€˜π‘ƒ) ∧ (π‘†β€˜(𝐽𝑀𝐽)) ∈ (Baseβ€˜π‘ƒ)) β†’ (𝑋 βˆ’ (π‘†β€˜(𝐽𝑀𝐽))) = (𝑋(+gβ€˜π‘ƒ)((invgβ€˜π‘ƒ)β€˜(π‘†β€˜(𝐽𝑀𝐽)))))
4316, 39, 42syl2anc 584 . . . 4 (((𝑁 ∈ Fin ∧ 𝑅 ∈ CRing) ∧ (𝑀 ∈ 𝐷 ∧ 𝐽 ∈ 𝑁 ∧ βˆ€π‘› ∈ 𝑁 (𝑛𝑀𝑛) = (𝐽𝑀𝐽))) β†’ (𝑋 βˆ’ (π‘†β€˜(𝐽𝑀𝐽))) = (𝑋(+gβ€˜π‘ƒ)((invgβ€˜π‘ƒ)β€˜(π‘†β€˜(𝐽𝑀𝐽)))))
4412, 20syl 17 . . . . . . . 8 ((𝑁 ∈ Fin ∧ 𝑅 ∈ CRing) β†’ 𝑃 ∈ LMod)
4544adantr 481 . . . . . . 7 (((𝑁 ∈ Fin ∧ 𝑅 ∈ CRing) ∧ (𝑀 ∈ 𝐷 ∧ 𝐽 ∈ 𝑁 ∧ βˆ€π‘› ∈ 𝑁 (𝑛𝑀𝑛) = (𝐽𝑀𝐽))) β†’ 𝑃 ∈ LMod)
4612, 19syl 17 . . . . . . . 8 ((𝑁 ∈ Fin ∧ 𝑅 ∈ CRing) β†’ 𝑃 ∈ Ring)
4746adantr 481 . . . . . . 7 (((𝑁 ∈ Fin ∧ 𝑅 ∈ CRing) ∧ (𝑀 ∈ 𝐷 ∧ 𝐽 ∈ 𝑁 ∧ βˆ€π‘› ∈ 𝑁 (𝑛𝑀𝑛) = (𝐽𝑀𝐽))) β†’ 𝑃 ∈ Ring)
48 eqid 2732 . . . . . . . 8 (invgβ€˜(Scalarβ€˜π‘ƒ)) = (invgβ€˜(Scalarβ€˜π‘ƒ))
498, 18, 21, 48, 41asclinvg 21434 . . . . . . 7 ((𝑃 ∈ LMod ∧ 𝑃 ∈ Ring ∧ (𝐽𝑀𝐽) ∈ (Baseβ€˜(Scalarβ€˜π‘ƒ))) β†’ ((invgβ€˜π‘ƒ)β€˜(π‘†β€˜(𝐽𝑀𝐽))) = (π‘†β€˜((invgβ€˜(Scalarβ€˜π‘ƒ))β€˜(𝐽𝑀𝐽))))
5045, 47, 38, 49syl3anc 1371 . . . . . 6 (((𝑁 ∈ Fin ∧ 𝑅 ∈ CRing) ∧ (𝑀 ∈ 𝐷 ∧ 𝐽 ∈ 𝑁 ∧ βˆ€π‘› ∈ 𝑁 (𝑛𝑀𝑛) = (𝐽𝑀𝐽))) β†’ ((invgβ€˜π‘ƒ)β€˜(π‘†β€˜(𝐽𝑀𝐽))) = (π‘†β€˜((invgβ€˜(Scalarβ€˜π‘ƒ))β€˜(𝐽𝑀𝐽))))
51 chpscmatgsum.i . . . . . . . . 9 𝐼 = (invgβ€˜π‘…)
5234fveq2d 6892 . . . . . . . . . 10 ((𝑁 ∈ Fin ∧ 𝑅 ∈ CRing) β†’ (invgβ€˜π‘…) = (invgβ€˜(Scalarβ€˜π‘ƒ)))
5352adantr 481 . . . . . . . . 9 (((𝑁 ∈ Fin ∧ 𝑅 ∈ CRing) ∧ (𝑀 ∈ 𝐷 ∧ 𝐽 ∈ 𝑁 ∧ βˆ€π‘› ∈ 𝑁 (𝑛𝑀𝑛) = (𝐽𝑀𝐽))) β†’ (invgβ€˜π‘…) = (invgβ€˜(Scalarβ€˜π‘ƒ)))
5451, 53eqtr2id 2785 . . . . . . . 8 (((𝑁 ∈ Fin ∧ 𝑅 ∈ CRing) ∧ (𝑀 ∈ 𝐷 ∧ 𝐽 ∈ 𝑁 ∧ βˆ€π‘› ∈ 𝑁 (𝑛𝑀𝑛) = (𝐽𝑀𝐽))) β†’ (invgβ€˜(Scalarβ€˜π‘ƒ)) = 𝐼)
5554fveq1d 6890 . . . . . . 7 (((𝑁 ∈ Fin ∧ 𝑅 ∈ CRing) ∧ (𝑀 ∈ 𝐷 ∧ 𝐽 ∈ 𝑁 ∧ βˆ€π‘› ∈ 𝑁 (𝑛𝑀𝑛) = (𝐽𝑀𝐽))) β†’ ((invgβ€˜(Scalarβ€˜π‘ƒ))β€˜(𝐽𝑀𝐽)) = (πΌβ€˜(𝐽𝑀𝐽)))
5655fveq2d 6892 . . . . . 6 (((𝑁 ∈ Fin ∧ 𝑅 ∈ CRing) ∧ (𝑀 ∈ 𝐷 ∧ 𝐽 ∈ 𝑁 ∧ βˆ€π‘› ∈ 𝑁 (𝑛𝑀𝑛) = (𝐽𝑀𝐽))) β†’ (π‘†β€˜((invgβ€˜(Scalarβ€˜π‘ƒ))β€˜(𝐽𝑀𝐽))) = (π‘†β€˜(πΌβ€˜(𝐽𝑀𝐽))))
5750, 56eqtrd 2772 . . . . 5 (((𝑁 ∈ Fin ∧ 𝑅 ∈ CRing) ∧ (𝑀 ∈ 𝐷 ∧ 𝐽 ∈ 𝑁 ∧ βˆ€π‘› ∈ 𝑁 (𝑛𝑀𝑛) = (𝐽𝑀𝐽))) β†’ ((invgβ€˜π‘ƒ)β€˜(π‘†β€˜(𝐽𝑀𝐽))) = (π‘†β€˜(πΌβ€˜(𝐽𝑀𝐽))))
5857oveq2d 7421 . . . 4 (((𝑁 ∈ Fin ∧ 𝑅 ∈ CRing) ∧ (𝑀 ∈ 𝐷 ∧ 𝐽 ∈ 𝑁 ∧ βˆ€π‘› ∈ 𝑁 (𝑛𝑀𝑛) = (𝐽𝑀𝐽))) β†’ (𝑋(+gβ€˜π‘ƒ)((invgβ€˜π‘ƒ)β€˜(π‘†β€˜(𝐽𝑀𝐽)))) = (𝑋(+gβ€˜π‘ƒ)(π‘†β€˜(πΌβ€˜(𝐽𝑀𝐽)))))
5943, 58eqtrd 2772 . . 3 (((𝑁 ∈ Fin ∧ 𝑅 ∈ CRing) ∧ (𝑀 ∈ 𝐷 ∧ 𝐽 ∈ 𝑁 ∧ βˆ€π‘› ∈ 𝑁 (𝑛𝑀𝑛) = (𝐽𝑀𝐽))) β†’ (𝑋 βˆ’ (π‘†β€˜(𝐽𝑀𝐽))) = (𝑋(+gβ€˜π‘ƒ)(π‘†β€˜(πΌβ€˜(𝐽𝑀𝐽)))))
6059oveq2d 7421 . 2 (((𝑁 ∈ Fin ∧ 𝑅 ∈ CRing) ∧ (𝑀 ∈ 𝐷 ∧ 𝐽 ∈ 𝑁 ∧ βˆ€π‘› ∈ 𝑁 (𝑛𝑀𝑛) = (𝐽𝑀𝐽))) β†’ ((β™―β€˜π‘) ↑ (𝑋 βˆ’ (π‘†β€˜(𝐽𝑀𝐽)))) = ((β™―β€˜π‘) ↑ (𝑋(+gβ€˜π‘ƒ)(π‘†β€˜(πΌβ€˜(𝐽𝑀𝐽))))))
61 simplr 767 . . . 4 (((𝑁 ∈ Fin ∧ 𝑅 ∈ CRing) ∧ (𝑀 ∈ 𝐷 ∧ 𝐽 ∈ 𝑁 ∧ βˆ€π‘› ∈ 𝑁 (𝑛𝑀𝑛) = (𝐽𝑀𝐽))) β†’ 𝑅 ∈ CRing)
62 hashcl 14312 . . . . 5 (𝑁 ∈ Fin β†’ (β™―β€˜π‘) ∈ β„•0)
6362ad2antrr 724 . . . 4 (((𝑁 ∈ Fin ∧ 𝑅 ∈ CRing) ∧ (𝑀 ∈ 𝐷 ∧ 𝐽 ∈ 𝑁 ∧ βˆ€π‘› ∈ 𝑁 (𝑛𝑀𝑛) = (𝐽𝑀𝐽))) β†’ (β™―β€˜π‘) ∈ β„•0)
64 ringgrp 20054 . . . . . . 7 (𝑅 ∈ Ring β†’ 𝑅 ∈ Grp)
6511, 64syl 17 . . . . . 6 (𝑅 ∈ CRing β†’ 𝑅 ∈ Grp)
6665ad2antlr 725 . . . . 5 (((𝑁 ∈ Fin ∧ 𝑅 ∈ CRing) ∧ (𝑀 ∈ 𝐷 ∧ 𝐽 ∈ 𝑁 ∧ βˆ€π‘› ∈ 𝑁 (𝑛𝑀𝑛) = (𝐽𝑀𝐽))) β†’ 𝑅 ∈ Grp)
6730, 51grpinvcl 18868 . . . . 5 ((𝑅 ∈ Grp ∧ (𝐽𝑀𝐽) ∈ (Baseβ€˜π‘…)) β†’ (πΌβ€˜(𝐽𝑀𝐽)) ∈ (Baseβ€˜π‘…))
6866, 32, 67syl2anc 584 . . . 4 (((𝑁 ∈ Fin ∧ 𝑅 ∈ CRing) ∧ (𝑀 ∈ 𝐷 ∧ 𝐽 ∈ 𝑁 ∧ βˆ€π‘› ∈ 𝑁 (𝑛𝑀𝑛) = (𝐽𝑀𝐽))) β†’ (πΌβ€˜(𝐽𝑀𝐽)) ∈ (Baseβ€˜π‘…))
69 eqid 2732 . . . . 5 (.rβ€˜π‘ƒ) = (.rβ€˜π‘ƒ)
70 chpscmatgsum.f . . . . 5 𝐹 = (.gβ€˜π‘ƒ)
71 chpscmatgsum.h . . . . 5 𝐻 = (mulGrpβ€˜π‘…)
72 chpscmatgsum.e . . . . 5 𝐸 = (.gβ€˜π»)
732, 4, 40, 69, 70, 5, 6, 30, 8, 71, 72lply1binomsc 21822 . . . 4 ((𝑅 ∈ CRing ∧ (β™―β€˜π‘) ∈ β„•0 ∧ (πΌβ€˜(𝐽𝑀𝐽)) ∈ (Baseβ€˜π‘…)) β†’ ((β™―β€˜π‘) ↑ (𝑋(+gβ€˜π‘ƒ)(π‘†β€˜(πΌβ€˜(𝐽𝑀𝐽))))) = (𝑃 Ξ£g (𝑙 ∈ (0...(β™―β€˜π‘)) ↦ (((β™―β€˜π‘)C𝑙)𝐹((π‘†β€˜(((β™―β€˜π‘) βˆ’ 𝑙)𝐸(πΌβ€˜(𝐽𝑀𝐽))))(.rβ€˜π‘ƒ)(𝑙 ↑ 𝑋))))))
7461, 63, 68, 73syl3anc 1371 . . 3 (((𝑁 ∈ Fin ∧ 𝑅 ∈ CRing) ∧ (𝑀 ∈ 𝐷 ∧ 𝐽 ∈ 𝑁 ∧ βˆ€π‘› ∈ 𝑁 (𝑛𝑀𝑛) = (𝐽𝑀𝐽))) β†’ ((β™―β€˜π‘) ↑ (𝑋(+gβ€˜π‘ƒ)(π‘†β€˜(πΌβ€˜(𝐽𝑀𝐽))))) = (𝑃 Ξ£g (𝑙 ∈ (0...(β™―β€˜π‘)) ↦ (((β™―β€˜π‘)C𝑙)𝐹((π‘†β€˜(((β™―β€˜π‘) βˆ’ 𝑙)𝐸(πΌβ€˜(𝐽𝑀𝐽))))(.rβ€˜π‘ƒ)(𝑙 ↑ 𝑋))))))
752ply1assa 21714 . . . . . . . . 9 (𝑅 ∈ CRing β†’ 𝑃 ∈ AssAlg)
7675adantl 482 . . . . . . . 8 ((𝑁 ∈ Fin ∧ 𝑅 ∈ CRing) β†’ 𝑃 ∈ AssAlg)
7776ad2antrr 724 . . . . . . 7 ((((𝑁 ∈ Fin ∧ 𝑅 ∈ CRing) ∧ (𝑀 ∈ 𝐷 ∧ 𝐽 ∈ 𝑁 ∧ βˆ€π‘› ∈ 𝑁 (𝑛𝑀𝑛) = (𝐽𝑀𝐽))) ∧ 𝑙 ∈ (0...(β™―β€˜π‘))) β†’ 𝑃 ∈ AssAlg)
78 eqid 2732 . . . . . . . . 9 (Baseβ€˜π») = (Baseβ€˜π»)
7971ringmgp 20055 . . . . . . . . . . 11 (𝑅 ∈ Ring β†’ 𝐻 ∈ Mnd)
8012, 79syl 17 . . . . . . . . . 10 ((𝑁 ∈ Fin ∧ 𝑅 ∈ CRing) β†’ 𝐻 ∈ Mnd)
8180ad2antrr 724 . . . . . . . . 9 ((((𝑁 ∈ Fin ∧ 𝑅 ∈ CRing) ∧ (𝑀 ∈ 𝐷 ∧ 𝐽 ∈ 𝑁 ∧ βˆ€π‘› ∈ 𝑁 (𝑛𝑀𝑛) = (𝐽𝑀𝐽))) ∧ 𝑙 ∈ (0...(β™―β€˜π‘))) β†’ 𝐻 ∈ Mnd)
82 fznn0sub 13529 . . . . . . . . . 10 (𝑙 ∈ (0...(β™―β€˜π‘)) β†’ ((β™―β€˜π‘) βˆ’ 𝑙) ∈ β„•0)
8382adantl 482 . . . . . . . . 9 ((((𝑁 ∈ Fin ∧ 𝑅 ∈ CRing) ∧ (𝑀 ∈ 𝐷 ∧ 𝐽 ∈ 𝑁 ∧ βˆ€π‘› ∈ 𝑁 (𝑛𝑀𝑛) = (𝐽𝑀𝐽))) ∧ 𝑙 ∈ (0...(β™―β€˜π‘))) β†’ ((β™―β€˜π‘) βˆ’ 𝑙) ∈ β„•0)
8471, 30mgpbas 19987 . . . . . . . . . . 11 (Baseβ€˜π‘…) = (Baseβ€˜π»)
8568, 84eleqtrdi 2843 . . . . . . . . . 10 (((𝑁 ∈ Fin ∧ 𝑅 ∈ CRing) ∧ (𝑀 ∈ 𝐷 ∧ 𝐽 ∈ 𝑁 ∧ βˆ€π‘› ∈ 𝑁 (𝑛𝑀𝑛) = (𝐽𝑀𝐽))) β†’ (πΌβ€˜(𝐽𝑀𝐽)) ∈ (Baseβ€˜π»))
8685adantr 481 . . . . . . . . 9 ((((𝑁 ∈ Fin ∧ 𝑅 ∈ CRing) ∧ (𝑀 ∈ 𝐷 ∧ 𝐽 ∈ 𝑁 ∧ βˆ€π‘› ∈ 𝑁 (𝑛𝑀𝑛) = (𝐽𝑀𝐽))) ∧ 𝑙 ∈ (0...(β™―β€˜π‘))) β†’ (πΌβ€˜(𝐽𝑀𝐽)) ∈ (Baseβ€˜π»))
8778, 72, 81, 83, 86mulgnn0cld 18969 . . . . . . . 8 ((((𝑁 ∈ Fin ∧ 𝑅 ∈ CRing) ∧ (𝑀 ∈ 𝐷 ∧ 𝐽 ∈ 𝑁 ∧ βˆ€π‘› ∈ 𝑁 (𝑛𝑀𝑛) = (𝐽𝑀𝐽))) ∧ 𝑙 ∈ (0...(β™―β€˜π‘))) β†’ (((β™―β€˜π‘) βˆ’ 𝑙)𝐸(πΌβ€˜(𝐽𝑀𝐽))) ∈ (Baseβ€˜π»))
8835fveq2d 6892 . . . . . . . . . 10 ((𝑁 ∈ Fin ∧ 𝑅 ∈ CRing) β†’ (Baseβ€˜(Scalarβ€˜π‘ƒ)) = (Baseβ€˜π‘…))
8988, 84eqtrdi 2788 . . . . . . . . 9 ((𝑁 ∈ Fin ∧ 𝑅 ∈ CRing) β†’ (Baseβ€˜(Scalarβ€˜π‘ƒ)) = (Baseβ€˜π»))
9089ad2antrr 724 . . . . . . . 8 ((((𝑁 ∈ Fin ∧ 𝑅 ∈ CRing) ∧ (𝑀 ∈ 𝐷 ∧ 𝐽 ∈ 𝑁 ∧ βˆ€π‘› ∈ 𝑁 (𝑛𝑀𝑛) = (𝐽𝑀𝐽))) ∧ 𝑙 ∈ (0...(β™―β€˜π‘))) β†’ (Baseβ€˜(Scalarβ€˜π‘ƒ)) = (Baseβ€˜π»))
9187, 90eleqtrrd 2836 . . . . . . 7 ((((𝑁 ∈ Fin ∧ 𝑅 ∈ CRing) ∧ (𝑀 ∈ 𝐷 ∧ 𝐽 ∈ 𝑁 ∧ βˆ€π‘› ∈ 𝑁 (𝑛𝑀𝑛) = (𝐽𝑀𝐽))) ∧ 𝑙 ∈ (0...(β™―β€˜π‘))) β†’ (((β™―β€˜π‘) βˆ’ 𝑙)𝐸(πΌβ€˜(𝐽𝑀𝐽))) ∈ (Baseβ€˜(Scalarβ€˜π‘ƒ)))
925, 13mgpbas 19987 . . . . . . . . 9 (Baseβ€˜π‘ƒ) = (Baseβ€˜πΊ)
935ringmgp 20055 . . . . . . . . . . 11 (𝑃 ∈ Ring β†’ 𝐺 ∈ Mnd)
9411, 19, 933syl 18 . . . . . . . . . 10 (𝑅 ∈ CRing β†’ 𝐺 ∈ Mnd)
9594ad2antlr 725 . . . . . . . . 9 (((𝑁 ∈ Fin ∧ 𝑅 ∈ CRing) ∧ 𝑙 ∈ (0...(β™―β€˜π‘))) β†’ 𝐺 ∈ Mnd)
96 elfznn0 13590 . . . . . . . . . 10 (𝑙 ∈ (0...(β™―β€˜π‘)) β†’ 𝑙 ∈ β„•0)
9796adantl 482 . . . . . . . . 9 (((𝑁 ∈ Fin ∧ 𝑅 ∈ CRing) ∧ 𝑙 ∈ (0...(β™―β€˜π‘))) β†’ 𝑙 ∈ β„•0)
9815adantr 481 . . . . . . . . 9 (((𝑁 ∈ Fin ∧ 𝑅 ∈ CRing) ∧ 𝑙 ∈ (0...(β™―β€˜π‘))) β†’ 𝑋 ∈ (Baseβ€˜π‘ƒ))
9992, 6, 95, 97, 98mulgnn0cld 18969 . . . . . . . 8 (((𝑁 ∈ Fin ∧ 𝑅 ∈ CRing) ∧ 𝑙 ∈ (0...(β™―β€˜π‘))) β†’ (𝑙 ↑ 𝑋) ∈ (Baseβ€˜π‘ƒ))
10099adantlr 713 . . . . . . 7 ((((𝑁 ∈ Fin ∧ 𝑅 ∈ CRing) ∧ (𝑀 ∈ 𝐷 ∧ 𝐽 ∈ 𝑁 ∧ βˆ€π‘› ∈ 𝑁 (𝑛𝑀𝑛) = (𝐽𝑀𝐽))) ∧ 𝑙 ∈ (0...(β™―β€˜π‘))) β†’ (𝑙 ↑ 𝑋) ∈ (Baseβ€˜π‘ƒ))
101 chpscmatgsum.s . . . . . . . 8 Β· = ( ·𝑠 β€˜π‘ƒ)
1028, 18, 21, 13, 69, 101asclmul1 21431 . . . . . . 7 ((𝑃 ∈ AssAlg ∧ (((β™―β€˜π‘) βˆ’ 𝑙)𝐸(πΌβ€˜(𝐽𝑀𝐽))) ∈ (Baseβ€˜(Scalarβ€˜π‘ƒ)) ∧ (𝑙 ↑ 𝑋) ∈ (Baseβ€˜π‘ƒ)) β†’ ((π‘†β€˜(((β™―β€˜π‘) βˆ’ 𝑙)𝐸(πΌβ€˜(𝐽𝑀𝐽))))(.rβ€˜π‘ƒ)(𝑙 ↑ 𝑋)) = ((((β™―β€˜π‘) βˆ’ 𝑙)𝐸(πΌβ€˜(𝐽𝑀𝐽))) Β· (𝑙 ↑ 𝑋)))
10377, 91, 100, 102syl3anc 1371 . . . . . 6 ((((𝑁 ∈ Fin ∧ 𝑅 ∈ CRing) ∧ (𝑀 ∈ 𝐷 ∧ 𝐽 ∈ 𝑁 ∧ βˆ€π‘› ∈ 𝑁 (𝑛𝑀𝑛) = (𝐽𝑀𝐽))) ∧ 𝑙 ∈ (0...(β™―β€˜π‘))) β†’ ((π‘†β€˜(((β™―β€˜π‘) βˆ’ 𝑙)𝐸(πΌβ€˜(𝐽𝑀𝐽))))(.rβ€˜π‘ƒ)(𝑙 ↑ 𝑋)) = ((((β™―β€˜π‘) βˆ’ 𝑙)𝐸(πΌβ€˜(𝐽𝑀𝐽))) Β· (𝑙 ↑ 𝑋)))
104103oveq2d 7421 . . . . 5 ((((𝑁 ∈ Fin ∧ 𝑅 ∈ CRing) ∧ (𝑀 ∈ 𝐷 ∧ 𝐽 ∈ 𝑁 ∧ βˆ€π‘› ∈ 𝑁 (𝑛𝑀𝑛) = (𝐽𝑀𝐽))) ∧ 𝑙 ∈ (0...(β™―β€˜π‘))) β†’ (((β™―β€˜π‘)C𝑙)𝐹((π‘†β€˜(((β™―β€˜π‘) βˆ’ 𝑙)𝐸(πΌβ€˜(𝐽𝑀𝐽))))(.rβ€˜π‘ƒ)(𝑙 ↑ 𝑋))) = (((β™―β€˜π‘)C𝑙)𝐹((((β™―β€˜π‘) βˆ’ 𝑙)𝐸(πΌβ€˜(𝐽𝑀𝐽))) Β· (𝑙 ↑ 𝑋))))
105104mpteq2dva 5247 . . . 4 (((𝑁 ∈ Fin ∧ 𝑅 ∈ CRing) ∧ (𝑀 ∈ 𝐷 ∧ 𝐽 ∈ 𝑁 ∧ βˆ€π‘› ∈ 𝑁 (𝑛𝑀𝑛) = (𝐽𝑀𝐽))) β†’ (𝑙 ∈ (0...(β™―β€˜π‘)) ↦ (((β™―β€˜π‘)C𝑙)𝐹((π‘†β€˜(((β™―β€˜π‘) βˆ’ 𝑙)𝐸(πΌβ€˜(𝐽𝑀𝐽))))(.rβ€˜π‘ƒ)(𝑙 ↑ 𝑋)))) = (𝑙 ∈ (0...(β™―β€˜π‘)) ↦ (((β™―β€˜π‘)C𝑙)𝐹((((β™―β€˜π‘) βˆ’ 𝑙)𝐸(πΌβ€˜(𝐽𝑀𝐽))) Β· (𝑙 ↑ 𝑋)))))
106105oveq2d 7421 . . 3 (((𝑁 ∈ Fin ∧ 𝑅 ∈ CRing) ∧ (𝑀 ∈ 𝐷 ∧ 𝐽 ∈ 𝑁 ∧ βˆ€π‘› ∈ 𝑁 (𝑛𝑀𝑛) = (𝐽𝑀𝐽))) β†’ (𝑃 Ξ£g (𝑙 ∈ (0...(β™―β€˜π‘)) ↦ (((β™―β€˜π‘)C𝑙)𝐹((π‘†β€˜(((β™―β€˜π‘) βˆ’ 𝑙)𝐸(πΌβ€˜(𝐽𝑀𝐽))))(.rβ€˜π‘ƒ)(𝑙 ↑ 𝑋))))) = (𝑃 Ξ£g (𝑙 ∈ (0...(β™―β€˜π‘)) ↦ (((β™―β€˜π‘)C𝑙)𝐹((((β™―β€˜π‘) βˆ’ 𝑙)𝐸(πΌβ€˜(𝐽𝑀𝐽))) Β· (𝑙 ↑ 𝑋))))))
10774, 106eqtrd 2772 . 2 (((𝑁 ∈ Fin ∧ 𝑅 ∈ CRing) ∧ (𝑀 ∈ 𝐷 ∧ 𝐽 ∈ 𝑁 ∧ βˆ€π‘› ∈ 𝑁 (𝑛𝑀𝑛) = (𝐽𝑀𝐽))) β†’ ((β™―β€˜π‘) ↑ (𝑋(+gβ€˜π‘ƒ)(π‘†β€˜(πΌβ€˜(𝐽𝑀𝐽))))) = (𝑃 Ξ£g (𝑙 ∈ (0...(β™―β€˜π‘)) ↦ (((β™―β€˜π‘)C𝑙)𝐹((((β™―β€˜π‘) βˆ’ 𝑙)𝐸(πΌβ€˜(𝐽𝑀𝐽))) Β· (𝑙 ↑ 𝑋))))))
10810, 60, 1073eqtrd 2776 1 (((𝑁 ∈ Fin ∧ 𝑅 ∈ CRing) ∧ (𝑀 ∈ 𝐷 ∧ 𝐽 ∈ 𝑁 ∧ βˆ€π‘› ∈ 𝑁 (𝑛𝑀𝑛) = (𝐽𝑀𝐽))) β†’ (πΆβ€˜π‘€) = (𝑃 Ξ£g (𝑙 ∈ (0...(β™―β€˜π‘)) ↦ (((β™―β€˜π‘)C𝑙)𝐹((((β™―β€˜π‘) βˆ’ 𝑙)𝐸(πΌβ€˜(𝐽𝑀𝐽))) Β· (𝑙 ↑ 𝑋))))))
Colors of variables: wff setvar class
Syntax hints:   β†’ wi 4   ∧ wa 396   ∧ w3a 1087   = wceq 1541   ∈ wcel 2106  βˆ€wral 3061  βˆƒwrex 3070  {crab 3432  ifcif 4527   ↦ cmpt 5230  βŸΆwf 6536  β€˜cfv 6540  (class class class)co 7405  Fincfn 8935  0cc0 11106   βˆ’ cmin 11440  β„•0cn0 12468  ...cfz 13480  Ccbc 14258  β™―chash 14286  Basecbs 17140  +gcplusg 17193  .rcmulr 17194  Scalarcsca 17196   ·𝑠 cvsca 17197  0gc0g 17381   Ξ£g cgsu 17382  Mndcmnd 18621  Grpcgrp 18815  invgcminusg 18816  -gcsg 18817  .gcmg 18944  mulGrpcmgp 19981  Ringcrg 20049  CRingccrg 20050  LModclmod 20463  AssAlgcasa 21396  algSccascl 21398  var1cv1 21691  Poly1cpl1 21692   Mat cmat 21898   CharPlyMat cchpmat 22319
This theorem was proved from axioms:  ax-mp 5  ax-1 6  ax-2 7  ax-3 8  ax-gen 1797  ax-4 1811  ax-5 1913  ax-6 1971  ax-7 2011  ax-8 2108  ax-9 2116  ax-10 2137  ax-11 2154  ax-12 2171  ax-ext 2703  ax-rep 5284  ax-sep 5298  ax-nul 5305  ax-pow 5362  ax-pr 5426  ax-un 7721  ax-cnex 11162  ax-resscn 11163  ax-1cn 11164  ax-icn 11165  ax-addcl 11166  ax-addrcl 11167  ax-mulcl 11168  ax-mulrcl 11169  ax-mulcom 11170  ax-addass 11171  ax-mulass 11172  ax-distr 11173  ax-i2m1 11174  ax-1ne0 11175  ax-1rid 11176  ax-rnegex 11177  ax-rrecex 11178  ax-cnre 11179  ax-pre-lttri 11180  ax-pre-lttrn 11181  ax-pre-ltadd 11182  ax-pre-mulgt0 11183  ax-addf 11185  ax-mulf 11186
This theorem depends on definitions:  df-bi 206  df-an 397  df-or 846  df-3or 1088  df-3an 1089  df-xor 1510  df-tru 1544  df-fal 1554  df-ex 1782  df-nf 1786  df-sb 2068  df-mo 2534  df-eu 2563  df-clab 2710  df-cleq 2724  df-clel 2810  df-nfc 2885  df-ne 2941  df-nel 3047  df-ral 3062  df-rex 3071  df-rmo 3376  df-reu 3377  df-rab 3433  df-v 3476  df-sbc 3777  df-csb 3893  df-dif 3950  df-un 3952  df-in 3954  df-ss 3964  df-pss 3966  df-nul 4322  df-if 4528  df-pw 4603  df-sn 4628  df-pr 4630  df-tp 4632  df-op 4634  df-ot 4636  df-uni 4908  df-int 4950  df-iun 4998  df-iin 4999  df-br 5148  df-opab 5210  df-mpt 5231  df-tr 5265  df-id 5573  df-eprel 5579  df-po 5587  df-so 5588  df-fr 5630  df-se 5631  df-we 5632  df-xp 5681  df-rel 5682  df-cnv 5683  df-co 5684  df-dm 5685  df-rn 5686  df-res 5687  df-ima 5688  df-pred 6297  df-ord 6364  df-on 6365  df-lim 6366  df-suc 6367  df-iota 6492  df-fun 6542  df-fn 6543  df-f 6544  df-f1 6545  df-fo 6546  df-f1o 6547  df-fv 6548  df-isom 6549  df-riota 7361  df-ov 7408  df-oprab 7409  df-mpo 7410  df-of 7666  df-ofr 7667  df-om 7852  df-1st 7971  df-2nd 7972  df-supp 8143  df-tpos 8207  df-frecs 8262  df-wrecs 8293  df-recs 8367  df-rdg 8406  df-1o 8462  df-2o 8463  df-er 8699  df-map 8818  df-pm 8819  df-ixp 8888  df-en 8936  df-dom 8937  df-sdom 8938  df-fin 8939  df-fsupp 9358  df-sup 9433  df-oi 9501  df-card 9930  df-pnf 11246  df-mnf 11247  df-xr 11248  df-ltxr 11249  df-le 11250  df-sub 11442  df-neg 11443  df-div 11868  df-nn 12209  df-2 12271  df-3 12272  df-4 12273  df-5 12274  df-6 12275  df-7 12276  df-8 12277  df-9 12278  df-n0 12469  df-xnn0 12541  df-z 12555  df-dec 12674  df-uz 12819  df-rp 12971  df-fz 13481  df-fzo 13624  df-seq 13963  df-exp 14024  df-fac 14230  df-bc 14259  df-hash 14287  df-word 14461  df-lsw 14509  df-concat 14517  df-s1 14542  df-substr 14587  df-pfx 14617  df-splice 14696  df-reverse 14705  df-s2 14795  df-struct 17076  df-sets 17093  df-slot 17111  df-ndx 17123  df-base 17141  df-ress 17170  df-plusg 17206  df-mulr 17207  df-starv 17208  df-sca 17209  df-vsca 17210  df-ip 17211  df-tset 17212  df-ple 17213  df-ds 17215  df-unif 17216  df-hom 17217  df-cco 17218  df-0g 17383  df-gsum 17384  df-prds 17389  df-pws 17391  df-mre 17526  df-mrc 17527  df-acs 17529  df-mgm 18557  df-sgrp 18606  df-mnd 18622  df-mhm 18667  df-submnd 18668  df-efmnd 18746  df-grp 18818  df-minusg 18819  df-sbg 18820  df-mulg 18945  df-subg 18997  df-ghm 19084  df-gim 19127  df-cntz 19175  df-oppg 19204  df-symg 19229  df-pmtr 19304  df-psgn 19353  df-cmn 19644  df-abl 19645  df-mgp 19982  df-ur 19999  df-srg 20003  df-ring 20051  df-cring 20052  df-oppr 20142  df-dvdsr 20163  df-unit 20164  df-invr 20194  df-dvr 20207  df-rnghom 20243  df-drng 20309  df-subrg 20353  df-lmod 20465  df-lss 20535  df-sra 20777  df-rgmod 20778  df-cnfld 20937  df-zring 21010  df-zrh 21044  df-dsmm 21278  df-frlm 21293  df-assa 21399  df-ascl 21401  df-psr 21453  df-mvr 21454  df-mpl 21455  df-opsr 21457  df-psr1 21695  df-vr1 21696  df-ply1 21697  df-mamu 21877  df-mat 21899  df-mdet 22078  df-mat2pmat 22200  df-chpmat 22320
This theorem is referenced by:  chpscmatgsummon  22338
  Copyright terms: Public domain W3C validator