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

Theorem ply1coe 19888
Description: Decompose a univariate polynomial as a sum of powers. (Contributed by Stefan O'Rear, 21-Mar-2015.) (Revised by AV, 7-Oct-2019.)
Hypotheses
Ref Expression
ply1coe.p 𝑃 = (Poly1𝑅)
ply1coe.x 𝑋 = (var1𝑅)
ply1coe.b 𝐵 = (Base‘𝑃)
ply1coe.n · = ( ·𝑠𝑃)
ply1coe.m 𝑀 = (mulGrp‘𝑃)
ply1coe.e = (.g𝑀)
ply1coe.a 𝐴 = (coe1𝐾)
Assertion
Ref Expression
ply1coe ((𝑅 ∈ Ring ∧ 𝐾𝐵) → 𝐾 = (𝑃 Σg (𝑘 ∈ ℕ0 ↦ ((𝐴𝑘) · (𝑘 𝑋)))))
Distinct variable groups:   𝐴,𝑘   𝐵,𝑘   𝑘,𝐾   𝑘,𝑋   ,𝑘   𝑅,𝑘   · ,𝑘   𝑃,𝑘
Allowed substitution hint:   𝑀(𝑘)

Proof of Theorem ply1coe
Dummy variables 𝑎 𝑏 𝑐 𝑥 𝑑 are mutually distinct and distinct from all other variables.
StepHypRef Expression
1 eqid 2760 . . 3 (1𝑜 mPoly 𝑅) = (1𝑜 mPoly 𝑅)
2 psr1baslem 19777 . . 3 (ℕ0𝑚 1𝑜) = {𝑑 ∈ (ℕ0𝑚 1𝑜) ∣ (𝑑 “ ℕ) ∈ Fin}
3 eqid 2760 . . 3 (0g𝑅) = (0g𝑅)
4 eqid 2760 . . 3 (1r𝑅) = (1r𝑅)
5 1onn 7890 . . . 4 1𝑜 ∈ ω
65a1i 11 . . 3 ((𝑅 ∈ Ring ∧ 𝐾𝐵) → 1𝑜 ∈ ω)
7 ply1coe.p . . . 4 𝑃 = (Poly1𝑅)
8 eqid 2760 . . . 4 (PwSer1𝑅) = (PwSer1𝑅)
9 ply1coe.b . . . 4 𝐵 = (Base‘𝑃)
107, 8, 9ply1bas 19787 . . 3 𝐵 = (Base‘(1𝑜 mPoly 𝑅))
11 ply1coe.n . . . 4 · = ( ·𝑠𝑃)
127, 1, 11ply1vsca 19818 . . 3 · = ( ·𝑠 ‘(1𝑜 mPoly 𝑅))
13 simpl 474 . . 3 ((𝑅 ∈ Ring ∧ 𝐾𝐵) → 𝑅 ∈ Ring)
14 simpr 479 . . 3 ((𝑅 ∈ Ring ∧ 𝐾𝐵) → 𝐾𝐵)
151, 2, 3, 4, 6, 10, 12, 13, 14mplcoe1 19687 . 2 ((𝑅 ∈ Ring ∧ 𝐾𝐵) → 𝐾 = ((1𝑜 mPoly 𝑅) Σg (𝑎 ∈ (ℕ0𝑚 1𝑜) ↦ ((𝐾𝑎) · (𝑏 ∈ (ℕ0𝑚 1𝑜) ↦ if(𝑏 = 𝑎, (1r𝑅), (0g𝑅)))))))
16 ply1coe.a . . . . . . 7 𝐴 = (coe1𝐾)
1716fvcoe1 19799 . . . . . 6 ((𝐾𝐵𝑎 ∈ (ℕ0𝑚 1𝑜)) → (𝐾𝑎) = (𝐴‘(𝑎‘∅)))
1817adantll 752 . . . . 5 (((𝑅 ∈ Ring ∧ 𝐾𝐵) ∧ 𝑎 ∈ (ℕ0𝑚 1𝑜)) → (𝐾𝑎) = (𝐴‘(𝑎‘∅)))
195a1i 11 . . . . . . 7 (((𝑅 ∈ Ring ∧ 𝐾𝐵) ∧ 𝑎 ∈ (ℕ0𝑚 1𝑜)) → 1𝑜 ∈ ω)
20 eqid 2760 . . . . . . 7 (mulGrp‘(1𝑜 mPoly 𝑅)) = (mulGrp‘(1𝑜 mPoly 𝑅))
21 eqid 2760 . . . . . . 7 (.g‘(mulGrp‘(1𝑜 mPoly 𝑅))) = (.g‘(mulGrp‘(1𝑜 mPoly 𝑅)))
22 eqid 2760 . . . . . . 7 (1𝑜 mVar 𝑅) = (1𝑜 mVar 𝑅)
23 simpll 807 . . . . . . 7 (((𝑅 ∈ Ring ∧ 𝐾𝐵) ∧ 𝑎 ∈ (ℕ0𝑚 1𝑜)) → 𝑅 ∈ Ring)
24 simpr 479 . . . . . . 7 (((𝑅 ∈ Ring ∧ 𝐾𝐵) ∧ 𝑎 ∈ (ℕ0𝑚 1𝑜)) → 𝑎 ∈ (ℕ0𝑚 1𝑜))
25 eqidd 2761 . . . . . . . . . 10 (((𝑅 ∈ Ring ∧ 𝐾𝐵) ∧ 𝑎 ∈ (ℕ0𝑚 1𝑜)) → (((1𝑜 mVar 𝑅)‘∅)(+g‘(mulGrp‘(1𝑜 mPoly 𝑅)))((1𝑜 mVar 𝑅)‘∅)) = (((1𝑜 mVar 𝑅)‘∅)(+g‘(mulGrp‘(1𝑜 mPoly 𝑅)))((1𝑜 mVar 𝑅)‘∅)))
26 0ex 4942 . . . . . . . . . . 11 ∅ ∈ V
27 fveq2 6353 . . . . . . . . . . . . 13 (𝑏 = ∅ → ((1𝑜 mVar 𝑅)‘𝑏) = ((1𝑜 mVar 𝑅)‘∅))
2827oveq1d 6829 . . . . . . . . . . . 12 (𝑏 = ∅ → (((1𝑜 mVar 𝑅)‘𝑏)(+g‘(mulGrp‘(1𝑜 mPoly 𝑅)))((1𝑜 mVar 𝑅)‘∅)) = (((1𝑜 mVar 𝑅)‘∅)(+g‘(mulGrp‘(1𝑜 mPoly 𝑅)))((1𝑜 mVar 𝑅)‘∅)))
2927oveq2d 6830 . . . . . . . . . . . 12 (𝑏 = ∅ → (((1𝑜 mVar 𝑅)‘∅)(+g‘(mulGrp‘(1𝑜 mPoly 𝑅)))((1𝑜 mVar 𝑅)‘𝑏)) = (((1𝑜 mVar 𝑅)‘∅)(+g‘(mulGrp‘(1𝑜 mPoly 𝑅)))((1𝑜 mVar 𝑅)‘∅)))
3028, 29eqeq12d 2775 . . . . . . . . . . 11 (𝑏 = ∅ → ((((1𝑜 mVar 𝑅)‘𝑏)(+g‘(mulGrp‘(1𝑜 mPoly 𝑅)))((1𝑜 mVar 𝑅)‘∅)) = (((1𝑜 mVar 𝑅)‘∅)(+g‘(mulGrp‘(1𝑜 mPoly 𝑅)))((1𝑜 mVar 𝑅)‘𝑏)) ↔ (((1𝑜 mVar 𝑅)‘∅)(+g‘(mulGrp‘(1𝑜 mPoly 𝑅)))((1𝑜 mVar 𝑅)‘∅)) = (((1𝑜 mVar 𝑅)‘∅)(+g‘(mulGrp‘(1𝑜 mPoly 𝑅)))((1𝑜 mVar 𝑅)‘∅))))
3126, 30ralsn 4366 . . . . . . . . . 10 (∀𝑏 ∈ {∅} (((1𝑜 mVar 𝑅)‘𝑏)(+g‘(mulGrp‘(1𝑜 mPoly 𝑅)))((1𝑜 mVar 𝑅)‘∅)) = (((1𝑜 mVar 𝑅)‘∅)(+g‘(mulGrp‘(1𝑜 mPoly 𝑅)))((1𝑜 mVar 𝑅)‘𝑏)) ↔ (((1𝑜 mVar 𝑅)‘∅)(+g‘(mulGrp‘(1𝑜 mPoly 𝑅)))((1𝑜 mVar 𝑅)‘∅)) = (((1𝑜 mVar 𝑅)‘∅)(+g‘(mulGrp‘(1𝑜 mPoly 𝑅)))((1𝑜 mVar 𝑅)‘∅)))
3225, 31sylibr 224 . . . . . . . . 9 (((𝑅 ∈ Ring ∧ 𝐾𝐵) ∧ 𝑎 ∈ (ℕ0𝑚 1𝑜)) → ∀𝑏 ∈ {∅} (((1𝑜 mVar 𝑅)‘𝑏)(+g‘(mulGrp‘(1𝑜 mPoly 𝑅)))((1𝑜 mVar 𝑅)‘∅)) = (((1𝑜 mVar 𝑅)‘∅)(+g‘(mulGrp‘(1𝑜 mPoly 𝑅)))((1𝑜 mVar 𝑅)‘𝑏)))
33 fveq2 6353 . . . . . . . . . . . . 13 (𝑥 = ∅ → ((1𝑜 mVar 𝑅)‘𝑥) = ((1𝑜 mVar 𝑅)‘∅))
3433oveq2d 6830 . . . . . . . . . . . 12 (𝑥 = ∅ → (((1𝑜 mVar 𝑅)‘𝑏)(+g‘(mulGrp‘(1𝑜 mPoly 𝑅)))((1𝑜 mVar 𝑅)‘𝑥)) = (((1𝑜 mVar 𝑅)‘𝑏)(+g‘(mulGrp‘(1𝑜 mPoly 𝑅)))((1𝑜 mVar 𝑅)‘∅)))
3533oveq1d 6829 . . . . . . . . . . . 12 (𝑥 = ∅ → (((1𝑜 mVar 𝑅)‘𝑥)(+g‘(mulGrp‘(1𝑜 mPoly 𝑅)))((1𝑜 mVar 𝑅)‘𝑏)) = (((1𝑜 mVar 𝑅)‘∅)(+g‘(mulGrp‘(1𝑜 mPoly 𝑅)))((1𝑜 mVar 𝑅)‘𝑏)))
3634, 35eqeq12d 2775 . . . . . . . . . . 11 (𝑥 = ∅ → ((((1𝑜 mVar 𝑅)‘𝑏)(+g‘(mulGrp‘(1𝑜 mPoly 𝑅)))((1𝑜 mVar 𝑅)‘𝑥)) = (((1𝑜 mVar 𝑅)‘𝑥)(+g‘(mulGrp‘(1𝑜 mPoly 𝑅)))((1𝑜 mVar 𝑅)‘𝑏)) ↔ (((1𝑜 mVar 𝑅)‘𝑏)(+g‘(mulGrp‘(1𝑜 mPoly 𝑅)))((1𝑜 mVar 𝑅)‘∅)) = (((1𝑜 mVar 𝑅)‘∅)(+g‘(mulGrp‘(1𝑜 mPoly 𝑅)))((1𝑜 mVar 𝑅)‘𝑏))))
3736ralbidv 3124 . . . . . . . . . 10 (𝑥 = ∅ → (∀𝑏 ∈ {∅} (((1𝑜 mVar 𝑅)‘𝑏)(+g‘(mulGrp‘(1𝑜 mPoly 𝑅)))((1𝑜 mVar 𝑅)‘𝑥)) = (((1𝑜 mVar 𝑅)‘𝑥)(+g‘(mulGrp‘(1𝑜 mPoly 𝑅)))((1𝑜 mVar 𝑅)‘𝑏)) ↔ ∀𝑏 ∈ {∅} (((1𝑜 mVar 𝑅)‘𝑏)(+g‘(mulGrp‘(1𝑜 mPoly 𝑅)))((1𝑜 mVar 𝑅)‘∅)) = (((1𝑜 mVar 𝑅)‘∅)(+g‘(mulGrp‘(1𝑜 mPoly 𝑅)))((1𝑜 mVar 𝑅)‘𝑏))))
3826, 37ralsn 4366 . . . . . . . . 9 (∀𝑥 ∈ {∅}∀𝑏 ∈ {∅} (((1𝑜 mVar 𝑅)‘𝑏)(+g‘(mulGrp‘(1𝑜 mPoly 𝑅)))((1𝑜 mVar 𝑅)‘𝑥)) = (((1𝑜 mVar 𝑅)‘𝑥)(+g‘(mulGrp‘(1𝑜 mPoly 𝑅)))((1𝑜 mVar 𝑅)‘𝑏)) ↔ ∀𝑏 ∈ {∅} (((1𝑜 mVar 𝑅)‘𝑏)(+g‘(mulGrp‘(1𝑜 mPoly 𝑅)))((1𝑜 mVar 𝑅)‘∅)) = (((1𝑜 mVar 𝑅)‘∅)(+g‘(mulGrp‘(1𝑜 mPoly 𝑅)))((1𝑜 mVar 𝑅)‘𝑏)))
3932, 38sylibr 224 . . . . . . . 8 (((𝑅 ∈ Ring ∧ 𝐾𝐵) ∧ 𝑎 ∈ (ℕ0𝑚 1𝑜)) → ∀𝑥 ∈ {∅}∀𝑏 ∈ {∅} (((1𝑜 mVar 𝑅)‘𝑏)(+g‘(mulGrp‘(1𝑜 mPoly 𝑅)))((1𝑜 mVar 𝑅)‘𝑥)) = (((1𝑜 mVar 𝑅)‘𝑥)(+g‘(mulGrp‘(1𝑜 mPoly 𝑅)))((1𝑜 mVar 𝑅)‘𝑏)))
40 df1o2 7743 . . . . . . . . 9 1𝑜 = {∅}
4140raleqi 3281 . . . . . . . . 9 (∀𝑏 ∈ 1𝑜 (((1𝑜 mVar 𝑅)‘𝑏)(+g‘(mulGrp‘(1𝑜 mPoly 𝑅)))((1𝑜 mVar 𝑅)‘𝑥)) = (((1𝑜 mVar 𝑅)‘𝑥)(+g‘(mulGrp‘(1𝑜 mPoly 𝑅)))((1𝑜 mVar 𝑅)‘𝑏)) ↔ ∀𝑏 ∈ {∅} (((1𝑜 mVar 𝑅)‘𝑏)(+g‘(mulGrp‘(1𝑜 mPoly 𝑅)))((1𝑜 mVar 𝑅)‘𝑥)) = (((1𝑜 mVar 𝑅)‘𝑥)(+g‘(mulGrp‘(1𝑜 mPoly 𝑅)))((1𝑜 mVar 𝑅)‘𝑏)))
4240, 41raleqbii 3128 . . . . . . . 8 (∀𝑥 ∈ 1𝑜𝑏 ∈ 1𝑜 (((1𝑜 mVar 𝑅)‘𝑏)(+g‘(mulGrp‘(1𝑜 mPoly 𝑅)))((1𝑜 mVar 𝑅)‘𝑥)) = (((1𝑜 mVar 𝑅)‘𝑥)(+g‘(mulGrp‘(1𝑜 mPoly 𝑅)))((1𝑜 mVar 𝑅)‘𝑏)) ↔ ∀𝑥 ∈ {∅}∀𝑏 ∈ {∅} (((1𝑜 mVar 𝑅)‘𝑏)(+g‘(mulGrp‘(1𝑜 mPoly 𝑅)))((1𝑜 mVar 𝑅)‘𝑥)) = (((1𝑜 mVar 𝑅)‘𝑥)(+g‘(mulGrp‘(1𝑜 mPoly 𝑅)))((1𝑜 mVar 𝑅)‘𝑏)))
4339, 42sylibr 224 . . . . . . 7 (((𝑅 ∈ Ring ∧ 𝐾𝐵) ∧ 𝑎 ∈ (ℕ0𝑚 1𝑜)) → ∀𝑥 ∈ 1𝑜𝑏 ∈ 1𝑜 (((1𝑜 mVar 𝑅)‘𝑏)(+g‘(mulGrp‘(1𝑜 mPoly 𝑅)))((1𝑜 mVar 𝑅)‘𝑥)) = (((1𝑜 mVar 𝑅)‘𝑥)(+g‘(mulGrp‘(1𝑜 mPoly 𝑅)))((1𝑜 mVar 𝑅)‘𝑏)))
441, 2, 3, 4, 19, 20, 21, 22, 23, 24, 43mplcoe5 19690 . . . . . 6 (((𝑅 ∈ Ring ∧ 𝐾𝐵) ∧ 𝑎 ∈ (ℕ0𝑚 1𝑜)) → (𝑏 ∈ (ℕ0𝑚 1𝑜) ↦ if(𝑏 = 𝑎, (1r𝑅), (0g𝑅))) = ((mulGrp‘(1𝑜 mPoly 𝑅)) Σg (𝑐 ∈ 1𝑜 ↦ ((𝑎𝑐)(.g‘(mulGrp‘(1𝑜 mPoly 𝑅)))((1𝑜 mVar 𝑅)‘𝑐)))))
45 mpteq1 4889 . . . . . . . . 9 (1𝑜 = {∅} → (𝑐 ∈ 1𝑜 ↦ ((𝑎𝑐)(.g‘(mulGrp‘(1𝑜 mPoly 𝑅)))((1𝑜 mVar 𝑅)‘𝑐))) = (𝑐 ∈ {∅} ↦ ((𝑎𝑐)(.g‘(mulGrp‘(1𝑜 mPoly 𝑅)))((1𝑜 mVar 𝑅)‘𝑐))))
4640, 45ax-mp 5 . . . . . . . 8 (𝑐 ∈ 1𝑜 ↦ ((𝑎𝑐)(.g‘(mulGrp‘(1𝑜 mPoly 𝑅)))((1𝑜 mVar 𝑅)‘𝑐))) = (𝑐 ∈ {∅} ↦ ((𝑎𝑐)(.g‘(mulGrp‘(1𝑜 mPoly 𝑅)))((1𝑜 mVar 𝑅)‘𝑐)))
4746oveq2i 6825 . . . . . . 7 ((mulGrp‘(1𝑜 mPoly 𝑅)) Σg (𝑐 ∈ 1𝑜 ↦ ((𝑎𝑐)(.g‘(mulGrp‘(1𝑜 mPoly 𝑅)))((1𝑜 mVar 𝑅)‘𝑐)))) = ((mulGrp‘(1𝑜 mPoly 𝑅)) Σg (𝑐 ∈ {∅} ↦ ((𝑎𝑐)(.g‘(mulGrp‘(1𝑜 mPoly 𝑅)))((1𝑜 mVar 𝑅)‘𝑐))))
481mplring 19674 . . . . . . . . . . 11 ((1𝑜 ∈ ω ∧ 𝑅 ∈ Ring) → (1𝑜 mPoly 𝑅) ∈ Ring)
495, 48mpan 708 . . . . . . . . . 10 (𝑅 ∈ Ring → (1𝑜 mPoly 𝑅) ∈ Ring)
5020ringmgp 18773 . . . . . . . . . 10 ((1𝑜 mPoly 𝑅) ∈ Ring → (mulGrp‘(1𝑜 mPoly 𝑅)) ∈ Mnd)
5149, 50syl 17 . . . . . . . . 9 (𝑅 ∈ Ring → (mulGrp‘(1𝑜 mPoly 𝑅)) ∈ Mnd)
5251ad2antrr 764 . . . . . . . 8 (((𝑅 ∈ Ring ∧ 𝐾𝐵) ∧ 𝑎 ∈ (ℕ0𝑚 1𝑜)) → (mulGrp‘(1𝑜 mPoly 𝑅)) ∈ Mnd)
5326a1i 11 . . . . . . . 8 (((𝑅 ∈ Ring ∧ 𝐾𝐵) ∧ 𝑎 ∈ (ℕ0𝑚 1𝑜)) → ∅ ∈ V)
54 ply1coe.e . . . . . . . . . . . 12 = (.g𝑀)
5520, 10mgpbas 18715 . . . . . . . . . . . . 13 𝐵 = (Base‘(mulGrp‘(1𝑜 mPoly 𝑅)))
5655a1i 11 . . . . . . . . . . . 12 ((𝑅 ∈ Ring ∧ 𝐾𝐵) → 𝐵 = (Base‘(mulGrp‘(1𝑜 mPoly 𝑅))))
57 ply1coe.m . . . . . . . . . . . . . 14 𝑀 = (mulGrp‘𝑃)
5857, 9mgpbas 18715 . . . . . . . . . . . . 13 𝐵 = (Base‘𝑀)
5958a1i 11 . . . . . . . . . . . 12 ((𝑅 ∈ Ring ∧ 𝐾𝐵) → 𝐵 = (Base‘𝑀))
60 ssv 3766 . . . . . . . . . . . . 13 𝐵 ⊆ V
6160a1i 11 . . . . . . . . . . . 12 ((𝑅 ∈ Ring ∧ 𝐾𝐵) → 𝐵 ⊆ V)
62 ovexd 6844 . . . . . . . . . . . 12 (((𝑅 ∈ Ring ∧ 𝐾𝐵) ∧ (𝑎 ∈ V ∧ 𝑏 ∈ V)) → (𝑎(+g‘(mulGrp‘(1𝑜 mPoly 𝑅)))𝑏) ∈ V)
63 eqid 2760 . . . . . . . . . . . . . . . . 17 (.r𝑃) = (.r𝑃)
647, 1, 63ply1mulr 19819 . . . . . . . . . . . . . . . 16 (.r𝑃) = (.r‘(1𝑜 mPoly 𝑅))
6520, 64mgpplusg 18713 . . . . . . . . . . . . . . 15 (.r𝑃) = (+g‘(mulGrp‘(1𝑜 mPoly 𝑅)))
6657, 63mgpplusg 18713 . . . . . . . . . . . . . . 15 (.r𝑃) = (+g𝑀)
6765, 66eqtr3i 2784 . . . . . . . . . . . . . 14 (+g‘(mulGrp‘(1𝑜 mPoly 𝑅))) = (+g𝑀)
6867oveqi 6827 . . . . . . . . . . . . 13 (𝑎(+g‘(mulGrp‘(1𝑜 mPoly 𝑅)))𝑏) = (𝑎(+g𝑀)𝑏)
6968a1i 11 . . . . . . . . . . . 12 (((𝑅 ∈ Ring ∧ 𝐾𝐵) ∧ (𝑎 ∈ V ∧ 𝑏 ∈ V)) → (𝑎(+g‘(mulGrp‘(1𝑜 mPoly 𝑅)))𝑏) = (𝑎(+g𝑀)𝑏))
7021, 54, 56, 59, 61, 62, 69mulgpropd 17805 . . . . . . . . . . 11 ((𝑅 ∈ Ring ∧ 𝐾𝐵) → (.g‘(mulGrp‘(1𝑜 mPoly 𝑅))) = )
7170oveqd 6831 . . . . . . . . . 10 ((𝑅 ∈ Ring ∧ 𝐾𝐵) → ((𝑎‘∅)(.g‘(mulGrp‘(1𝑜 mPoly 𝑅)))𝑋) = ((𝑎‘∅) 𝑋))
7271adantr 472 . . . . . . . . 9 (((𝑅 ∈ Ring ∧ 𝐾𝐵) ∧ 𝑎 ∈ (ℕ0𝑚 1𝑜)) → ((𝑎‘∅)(.g‘(mulGrp‘(1𝑜 mPoly 𝑅)))𝑋) = ((𝑎‘∅) 𝑋))
737ply1ring 19840 . . . . . . . . . . . 12 (𝑅 ∈ Ring → 𝑃 ∈ Ring)
7457ringmgp 18773 . . . . . . . . . . . 12 (𝑃 ∈ Ring → 𝑀 ∈ Mnd)
7573, 74syl 17 . . . . . . . . . . 11 (𝑅 ∈ Ring → 𝑀 ∈ Mnd)
7675ad2antrr 764 . . . . . . . . . 10 (((𝑅 ∈ Ring ∧ 𝐾𝐵) ∧ 𝑎 ∈ (ℕ0𝑚 1𝑜)) → 𝑀 ∈ Mnd)
77 elmapi 8047 . . . . . . . . . . . 12 (𝑎 ∈ (ℕ0𝑚 1𝑜) → 𝑎:1𝑜⟶ℕ0)
78 0lt1o 7755 . . . . . . . . . . . 12 ∅ ∈ 1𝑜
79 ffvelrn 6521 . . . . . . . . . . . 12 ((𝑎:1𝑜⟶ℕ0 ∧ ∅ ∈ 1𝑜) → (𝑎‘∅) ∈ ℕ0)
8077, 78, 79sylancl 697 . . . . . . . . . . 11 (𝑎 ∈ (ℕ0𝑚 1𝑜) → (𝑎‘∅) ∈ ℕ0)
8180adantl 473 . . . . . . . . . 10 (((𝑅 ∈ Ring ∧ 𝐾𝐵) ∧ 𝑎 ∈ (ℕ0𝑚 1𝑜)) → (𝑎‘∅) ∈ ℕ0)
82 ply1coe.x . . . . . . . . . . . 12 𝑋 = (var1𝑅)
8382, 7, 9vr1cl 19809 . . . . . . . . . . 11 (𝑅 ∈ Ring → 𝑋𝐵)
8483ad2antrr 764 . . . . . . . . . 10 (((𝑅 ∈ Ring ∧ 𝐾𝐵) ∧ 𝑎 ∈ (ℕ0𝑚 1𝑜)) → 𝑋𝐵)
8558, 54mulgnn0cl 17779 . . . . . . . . . 10 ((𝑀 ∈ Mnd ∧ (𝑎‘∅) ∈ ℕ0𝑋𝐵) → ((𝑎‘∅) 𝑋) ∈ 𝐵)
8676, 81, 84, 85syl3anc 1477 . . . . . . . . 9 (((𝑅 ∈ Ring ∧ 𝐾𝐵) ∧ 𝑎 ∈ (ℕ0𝑚 1𝑜)) → ((𝑎‘∅) 𝑋) ∈ 𝐵)
8772, 86eqeltrd 2839 . . . . . . . 8 (((𝑅 ∈ Ring ∧ 𝐾𝐵) ∧ 𝑎 ∈ (ℕ0𝑚 1𝑜)) → ((𝑎‘∅)(.g‘(mulGrp‘(1𝑜 mPoly 𝑅)))𝑋) ∈ 𝐵)
88 fveq2 6353 . . . . . . . . . 10 (𝑐 = ∅ → (𝑎𝑐) = (𝑎‘∅))
89 fveq2 6353 . . . . . . . . . . 11 (𝑐 = ∅ → ((1𝑜 mVar 𝑅)‘𝑐) = ((1𝑜 mVar 𝑅)‘∅))
9082vr1val 19784 . . . . . . . . . . 11 𝑋 = ((1𝑜 mVar 𝑅)‘∅)
9189, 90syl6eqr 2812 . . . . . . . . . 10 (𝑐 = ∅ → ((1𝑜 mVar 𝑅)‘𝑐) = 𝑋)
9288, 91oveq12d 6832 . . . . . . . . 9 (𝑐 = ∅ → ((𝑎𝑐)(.g‘(mulGrp‘(1𝑜 mPoly 𝑅)))((1𝑜 mVar 𝑅)‘𝑐)) = ((𝑎‘∅)(.g‘(mulGrp‘(1𝑜 mPoly 𝑅)))𝑋))
9355, 92gsumsn 18574 . . . . . . . 8 (((mulGrp‘(1𝑜 mPoly 𝑅)) ∈ Mnd ∧ ∅ ∈ V ∧ ((𝑎‘∅)(.g‘(mulGrp‘(1𝑜 mPoly 𝑅)))𝑋) ∈ 𝐵) → ((mulGrp‘(1𝑜 mPoly 𝑅)) Σg (𝑐 ∈ {∅} ↦ ((𝑎𝑐)(.g‘(mulGrp‘(1𝑜 mPoly 𝑅)))((1𝑜 mVar 𝑅)‘𝑐)))) = ((𝑎‘∅)(.g‘(mulGrp‘(1𝑜 mPoly 𝑅)))𝑋))
9452, 53, 87, 93syl3anc 1477 . . . . . . 7 (((𝑅 ∈ Ring ∧ 𝐾𝐵) ∧ 𝑎 ∈ (ℕ0𝑚 1𝑜)) → ((mulGrp‘(1𝑜 mPoly 𝑅)) Σg (𝑐 ∈ {∅} ↦ ((𝑎𝑐)(.g‘(mulGrp‘(1𝑜 mPoly 𝑅)))((1𝑜 mVar 𝑅)‘𝑐)))) = ((𝑎‘∅)(.g‘(mulGrp‘(1𝑜 mPoly 𝑅)))𝑋))
9547, 94syl5eq 2806 . . . . . 6 (((𝑅 ∈ Ring ∧ 𝐾𝐵) ∧ 𝑎 ∈ (ℕ0𝑚 1𝑜)) → ((mulGrp‘(1𝑜 mPoly 𝑅)) Σg (𝑐 ∈ 1𝑜 ↦ ((𝑎𝑐)(.g‘(mulGrp‘(1𝑜 mPoly 𝑅)))((1𝑜 mVar 𝑅)‘𝑐)))) = ((𝑎‘∅)(.g‘(mulGrp‘(1𝑜 mPoly 𝑅)))𝑋))
9644, 95, 723eqtrd 2798 . . . . 5 (((𝑅 ∈ Ring ∧ 𝐾𝐵) ∧ 𝑎 ∈ (ℕ0𝑚 1𝑜)) → (𝑏 ∈ (ℕ0𝑚 1𝑜) ↦ if(𝑏 = 𝑎, (1r𝑅), (0g𝑅))) = ((𝑎‘∅) 𝑋))
9718, 96oveq12d 6832 . . . 4 (((𝑅 ∈ Ring ∧ 𝐾𝐵) ∧ 𝑎 ∈ (ℕ0𝑚 1𝑜)) → ((𝐾𝑎) · (𝑏 ∈ (ℕ0𝑚 1𝑜) ↦ if(𝑏 = 𝑎, (1r𝑅), (0g𝑅)))) = ((𝐴‘(𝑎‘∅)) · ((𝑎‘∅) 𝑋)))
9897mpteq2dva 4896 . . 3 ((𝑅 ∈ Ring ∧ 𝐾𝐵) → (𝑎 ∈ (ℕ0𝑚 1𝑜) ↦ ((𝐾𝑎) · (𝑏 ∈ (ℕ0𝑚 1𝑜) ↦ if(𝑏 = 𝑎, (1r𝑅), (0g𝑅))))) = (𝑎 ∈ (ℕ0𝑚 1𝑜) ↦ ((𝐴‘(𝑎‘∅)) · ((𝑎‘∅) 𝑋))))
9998oveq2d 6830 . 2 ((𝑅 ∈ Ring ∧ 𝐾𝐵) → ((1𝑜 mPoly 𝑅) Σg (𝑎 ∈ (ℕ0𝑚 1𝑜) ↦ ((𝐾𝑎) · (𝑏 ∈ (ℕ0𝑚 1𝑜) ↦ if(𝑏 = 𝑎, (1r𝑅), (0g𝑅)))))) = ((1𝑜 mPoly 𝑅) Σg (𝑎 ∈ (ℕ0𝑚 1𝑜) ↦ ((𝐴‘(𝑎‘∅)) · ((𝑎‘∅) 𝑋)))))
100 nn0ex 11510 . . . . . 6 0 ∈ V
101100mptex 6651 . . . . 5 (𝑘 ∈ ℕ0 ↦ ((𝐴𝑘) · (𝑘 𝑋))) ∈ V
102101a1i 11 . . . 4 ((𝑅 ∈ Ring ∧ 𝐾𝐵) → (𝑘 ∈ ℕ0 ↦ ((𝐴𝑘) · (𝑘 𝑋))) ∈ V)
103 fvex 6363 . . . . . 6 (Poly1𝑅) ∈ V
1047, 103eqeltri 2835 . . . . 5 𝑃 ∈ V
105104a1i 11 . . . 4 ((𝑅 ∈ Ring ∧ 𝐾𝐵) → 𝑃 ∈ V)
106 ovexd 6844 . . . 4 ((𝑅 ∈ Ring ∧ 𝐾𝐵) → (1𝑜 mPoly 𝑅) ∈ V)
1079, 10eqtr3i 2784 . . . . 5 (Base‘𝑃) = (Base‘(1𝑜 mPoly 𝑅))
108107a1i 11 . . . 4 ((𝑅 ∈ Ring ∧ 𝐾𝐵) → (Base‘𝑃) = (Base‘(1𝑜 mPoly 𝑅)))
109 eqid 2760 . . . . . 6 (+g𝑃) = (+g𝑃)
1107, 1, 109ply1plusg 19817 . . . . 5 (+g𝑃) = (+g‘(1𝑜 mPoly 𝑅))
111110a1i 11 . . . 4 ((𝑅 ∈ Ring ∧ 𝐾𝐵) → (+g𝑃) = (+g‘(1𝑜 mPoly 𝑅)))
112102, 105, 106, 108, 111gsumpropd 17493 . . 3 ((𝑅 ∈ Ring ∧ 𝐾𝐵) → (𝑃 Σg (𝑘 ∈ ℕ0 ↦ ((𝐴𝑘) · (𝑘 𝑋)))) = ((1𝑜 mPoly 𝑅) Σg (𝑘 ∈ ℕ0 ↦ ((𝐴𝑘) · (𝑘 𝑋)))))
113 eqid 2760 . . . . 5 (0g𝑃) = (0g𝑃)
1141, 7, 113ply1mpl0 19847 . . . 4 (0g𝑃) = (0g‘(1𝑜 mPoly 𝑅))
1151mpllmod 19673 . . . . . 6 ((1𝑜 ∈ ω ∧ 𝑅 ∈ Ring) → (1𝑜 mPoly 𝑅) ∈ LMod)
1165, 13, 115sylancr 698 . . . . 5 ((𝑅 ∈ Ring ∧ 𝐾𝐵) → (1𝑜 mPoly 𝑅) ∈ LMod)
117 lmodcmn 19133 . . . . 5 ((1𝑜 mPoly 𝑅) ∈ LMod → (1𝑜 mPoly 𝑅) ∈ CMnd)
118116, 117syl 17 . . . 4 ((𝑅 ∈ Ring ∧ 𝐾𝐵) → (1𝑜 mPoly 𝑅) ∈ CMnd)
119100a1i 11 . . . 4 ((𝑅 ∈ Ring ∧ 𝐾𝐵) → ℕ0 ∈ V)
1207ply1lmod 19844 . . . . . . 7 (𝑅 ∈ Ring → 𝑃 ∈ LMod)
121120ad2antrr 764 . . . . . 6 (((𝑅 ∈ Ring ∧ 𝐾𝐵) ∧ 𝑘 ∈ ℕ0) → 𝑃 ∈ LMod)
122 eqid 2760 . . . . . . . . . 10 (Base‘𝑅) = (Base‘𝑅)
12316, 9, 7, 122coe1f 19803 . . . . . . . . 9 (𝐾𝐵𝐴:ℕ0⟶(Base‘𝑅))
124123adantl 473 . . . . . . . 8 ((𝑅 ∈ Ring ∧ 𝐾𝐵) → 𝐴:ℕ0⟶(Base‘𝑅))
125124ffvelrnda 6523 . . . . . . 7 (((𝑅 ∈ Ring ∧ 𝐾𝐵) ∧ 𝑘 ∈ ℕ0) → (𝐴𝑘) ∈ (Base‘𝑅))
1267ply1sca 19845 . . . . . . . . . 10 (𝑅 ∈ Ring → 𝑅 = (Scalar‘𝑃))
127126eqcomd 2766 . . . . . . . . 9 (𝑅 ∈ Ring → (Scalar‘𝑃) = 𝑅)
128127ad2antrr 764 . . . . . . . 8 (((𝑅 ∈ Ring ∧ 𝐾𝐵) ∧ 𝑘 ∈ ℕ0) → (Scalar‘𝑃) = 𝑅)
129128fveq2d 6357 . . . . . . 7 (((𝑅 ∈ Ring ∧ 𝐾𝐵) ∧ 𝑘 ∈ ℕ0) → (Base‘(Scalar‘𝑃)) = (Base‘𝑅))
130125, 129eleqtrrd 2842 . . . . . 6 (((𝑅 ∈ Ring ∧ 𝐾𝐵) ∧ 𝑘 ∈ ℕ0) → (𝐴𝑘) ∈ (Base‘(Scalar‘𝑃)))
13175ad2antrr 764 . . . . . . 7 (((𝑅 ∈ Ring ∧ 𝐾𝐵) ∧ 𝑘 ∈ ℕ0) → 𝑀 ∈ Mnd)
132 simpr 479 . . . . . . 7 (((𝑅 ∈ Ring ∧ 𝐾𝐵) ∧ 𝑘 ∈ ℕ0) → 𝑘 ∈ ℕ0)
13383ad2antrr 764 . . . . . . 7 (((𝑅 ∈ Ring ∧ 𝐾𝐵) ∧ 𝑘 ∈ ℕ0) → 𝑋𝐵)
13458, 54mulgnn0cl 17779 . . . . . . 7 ((𝑀 ∈ Mnd ∧ 𝑘 ∈ ℕ0𝑋𝐵) → (𝑘 𝑋) ∈ 𝐵)
135131, 132, 133, 134syl3anc 1477 . . . . . 6 (((𝑅 ∈ Ring ∧ 𝐾𝐵) ∧ 𝑘 ∈ ℕ0) → (𝑘 𝑋) ∈ 𝐵)
136 eqid 2760 . . . . . . 7 (Scalar‘𝑃) = (Scalar‘𝑃)
137 eqid 2760 . . . . . . 7 (Base‘(Scalar‘𝑃)) = (Base‘(Scalar‘𝑃))
1389, 136, 11, 137lmodvscl 19102 . . . . . 6 ((𝑃 ∈ LMod ∧ (𝐴𝑘) ∈ (Base‘(Scalar‘𝑃)) ∧ (𝑘 𝑋) ∈ 𝐵) → ((𝐴𝑘) · (𝑘 𝑋)) ∈ 𝐵)
139121, 130, 135, 138syl3anc 1477 . . . . 5 (((𝑅 ∈ Ring ∧ 𝐾𝐵) ∧ 𝑘 ∈ ℕ0) → ((𝐴𝑘) · (𝑘 𝑋)) ∈ 𝐵)
140 eqid 2760 . . . . 5 (𝑘 ∈ ℕ0 ↦ ((𝐴𝑘) · (𝑘 𝑋))) = (𝑘 ∈ ℕ0 ↦ ((𝐴𝑘) · (𝑘 𝑋)))
141139, 140fmptd 6549 . . . 4 ((𝑅 ∈ Ring ∧ 𝐾𝐵) → (𝑘 ∈ ℕ0 ↦ ((𝐴𝑘) · (𝑘 𝑋))):ℕ0𝐵)
1427, 82, 9, 11, 57, 54, 16ply1coefsupp 19887 . . . 4 ((𝑅 ∈ Ring ∧ 𝐾𝐵) → (𝑘 ∈ ℕ0 ↦ ((𝐴𝑘) · (𝑘 𝑋))) finSupp (0g𝑃))
143 eqid 2760 . . . . . 6 (𝑎 ∈ (ℕ0𝑚 1𝑜) ↦ (𝑎‘∅)) = (𝑎 ∈ (ℕ0𝑚 1𝑜) ↦ (𝑎‘∅))
14440, 100, 26, 143mapsnf1o2 8073 . . . . 5 (𝑎 ∈ (ℕ0𝑚 1𝑜) ↦ (𝑎‘∅)):(ℕ0𝑚 1𝑜)–1-1-onto→ℕ0
145144a1i 11 . . . 4 ((𝑅 ∈ Ring ∧ 𝐾𝐵) → (𝑎 ∈ (ℕ0𝑚 1𝑜) ↦ (𝑎‘∅)):(ℕ0𝑚 1𝑜)–1-1-onto→ℕ0)
14610, 114, 118, 119, 141, 142, 145gsumf1o 18537 . . 3 ((𝑅 ∈ Ring ∧ 𝐾𝐵) → ((1𝑜 mPoly 𝑅) Σg (𝑘 ∈ ℕ0 ↦ ((𝐴𝑘) · (𝑘 𝑋)))) = ((1𝑜 mPoly 𝑅) Σg ((𝑘 ∈ ℕ0 ↦ ((𝐴𝑘) · (𝑘 𝑋))) ∘ (𝑎 ∈ (ℕ0𝑚 1𝑜) ↦ (𝑎‘∅)))))
147 eqidd 2761 . . . . 5 ((𝑅 ∈ Ring ∧ 𝐾𝐵) → (𝑎 ∈ (ℕ0𝑚 1𝑜) ↦ (𝑎‘∅)) = (𝑎 ∈ (ℕ0𝑚 1𝑜) ↦ (𝑎‘∅)))
148 eqidd 2761 . . . . 5 ((𝑅 ∈ Ring ∧ 𝐾𝐵) → (𝑘 ∈ ℕ0 ↦ ((𝐴𝑘) · (𝑘 𝑋))) = (𝑘 ∈ ℕ0 ↦ ((𝐴𝑘) · (𝑘 𝑋))))
149 fveq2 6353 . . . . . 6 (𝑘 = (𝑎‘∅) → (𝐴𝑘) = (𝐴‘(𝑎‘∅)))
150 oveq1 6821 . . . . . 6 (𝑘 = (𝑎‘∅) → (𝑘 𝑋) = ((𝑎‘∅) 𝑋))
151149, 150oveq12d 6832 . . . . 5 (𝑘 = (𝑎‘∅) → ((𝐴𝑘) · (𝑘 𝑋)) = ((𝐴‘(𝑎‘∅)) · ((𝑎‘∅) 𝑋)))
15281, 147, 148, 151fmptco 6560 . . . 4 ((𝑅 ∈ Ring ∧ 𝐾𝐵) → ((𝑘 ∈ ℕ0 ↦ ((𝐴𝑘) · (𝑘 𝑋))) ∘ (𝑎 ∈ (ℕ0𝑚 1𝑜) ↦ (𝑎‘∅))) = (𝑎 ∈ (ℕ0𝑚 1𝑜) ↦ ((𝐴‘(𝑎‘∅)) · ((𝑎‘∅) 𝑋))))
153152oveq2d 6830 . . 3 ((𝑅 ∈ Ring ∧ 𝐾𝐵) → ((1𝑜 mPoly 𝑅) Σg ((𝑘 ∈ ℕ0 ↦ ((𝐴𝑘) · (𝑘 𝑋))) ∘ (𝑎 ∈ (ℕ0𝑚 1𝑜) ↦ (𝑎‘∅)))) = ((1𝑜 mPoly 𝑅) Σg (𝑎 ∈ (ℕ0𝑚 1𝑜) ↦ ((𝐴‘(𝑎‘∅)) · ((𝑎‘∅) 𝑋)))))
154112, 146, 1533eqtrrd 2799 . 2 ((𝑅 ∈ Ring ∧ 𝐾𝐵) → ((1𝑜 mPoly 𝑅) Σg (𝑎 ∈ (ℕ0𝑚 1𝑜) ↦ ((𝐴‘(𝑎‘∅)) · ((𝑎‘∅) 𝑋)))) = (𝑃 Σg (𝑘 ∈ ℕ0 ↦ ((𝐴𝑘) · (𝑘 𝑋)))))
15515, 99, 1543eqtrd 2798 1 ((𝑅 ∈ Ring ∧ 𝐾𝐵) → 𝐾 = (𝑃 Σg (𝑘 ∈ ℕ0 ↦ ((𝐴𝑘) · (𝑘 𝑋)))))
Colors of variables: wff setvar class
Syntax hints:  wi 4  wa 383   = wceq 1632  wcel 2139  wral 3050  Vcvv 3340  wss 3715  c0 4058  ifcif 4230  {csn 4321  cmpt 4881  ccom 5270  wf 6045  1-1-ontowf1o 6048  cfv 6049  (class class class)co 6814  ωcom 7231  1𝑜c1o 7723  𝑚 cmap 8025  0cn0 11504  Basecbs 16079  +gcplusg 16163  .rcmulr 16164  Scalarcsca 16166   ·𝑠 cvsca 16167  0gc0g 16322   Σg cgsu 16323  Mndcmnd 17515  .gcmg 17761  CMndccmn 18413  mulGrpcmgp 18709  1rcur 18721  Ringcrg 18767  LModclmod 19085   mVar cmvr 19574   mPoly cmpl 19575  PwSer1cps1 19767  var1cv1 19768  Poly1cpl1 19769  coe1cco1 19770
This theorem was proved from axioms:  ax-mp 5  ax-1 6  ax-2 7  ax-3 8  ax-gen 1871  ax-4 1886  ax-5 1988  ax-6 2054  ax-7 2090  ax-8 2141  ax-9 2148  ax-10 2168  ax-11 2183  ax-12 2196  ax-13 2391  ax-ext 2740  ax-rep 4923  ax-sep 4933  ax-nul 4941  ax-pow 4992  ax-pr 5055  ax-un 7115  ax-inf2 8713  ax-cnex 10204  ax-resscn 10205  ax-1cn 10206  ax-icn 10207  ax-addcl 10208  ax-addrcl 10209  ax-mulcl 10210  ax-mulrcl 10211  ax-mulcom 10212  ax-addass 10213  ax-mulass 10214  ax-distr 10215  ax-i2m1 10216  ax-1ne0 10217  ax-1rid 10218  ax-rnegex 10219  ax-rrecex 10220  ax-cnre 10221  ax-pre-lttri 10222  ax-pre-lttrn 10223  ax-pre-ltadd 10224  ax-pre-mulgt0 10225
This theorem depends on definitions:  df-bi 197  df-or 384  df-an 385  df-3or 1073  df-3an 1074  df-tru 1635  df-fal 1638  df-ex 1854  df-nf 1859  df-sb 2047  df-eu 2611  df-mo 2612  df-clab 2747  df-cleq 2753  df-clel 2756  df-nfc 2891  df-ne 2933  df-nel 3036  df-ral 3055  df-rex 3056  df-reu 3057  df-rmo 3058  df-rab 3059  df-v 3342  df-sbc 3577  df-csb 3675  df-dif 3718  df-un 3720  df-in 3722  df-ss 3729  df-pss 3731  df-nul 4059  df-if 4231  df-pw 4304  df-sn 4322  df-pr 4324  df-tp 4326  df-op 4328  df-uni 4589  df-int 4628  df-iun 4674  df-iin 4675  df-br 4805  df-opab 4865  df-mpt 4882  df-tr 4905  df-id 5174  df-eprel 5179  df-po 5187  df-so 5188  df-fr 5225  df-se 5226  df-we 5227  df-xp 5272  df-rel 5273  df-cnv 5274  df-co 5275  df-dm 5276  df-rn 5277  df-res 5278  df-ima 5279  df-pred 5841  df-ord 5887  df-on 5888  df-lim 5889  df-suc 5890  df-iota 6012  df-fun 6051  df-fn 6052  df-f 6053  df-f1 6054  df-fo 6055  df-f1o 6056  df-fv 6057  df-isom 6058  df-riota 6775  df-ov 6817  df-oprab 6818  df-mpt2 6819  df-of 7063  df-ofr 7064  df-om 7232  df-1st 7334  df-2nd 7335  df-supp 7465  df-wrecs 7577  df-recs 7638  df-rdg 7676  df-1o 7730  df-2o 7731  df-oadd 7734  df-er 7913  df-map 8027  df-pm 8028  df-ixp 8077  df-en 8124  df-dom 8125  df-sdom 8126  df-fin 8127  df-fsupp 8443  df-oi 8582  df-card 8975  df-pnf 10288  df-mnf 10289  df-xr 10290  df-ltxr 10291  df-le 10292  df-sub 10480  df-neg 10481  df-nn 11233  df-2 11291  df-3 11292  df-4 11293  df-5 11294  df-6 11295  df-7 11296  df-8 11297  df-9 11298  df-n0 11505  df-z 11590  df-dec 11706  df-uz 11900  df-fz 12540  df-fzo 12680  df-seq 13016  df-hash 13332  df-struct 16081  df-ndx 16082  df-slot 16083  df-base 16085  df-sets 16086  df-ress 16087  df-plusg 16176  df-mulr 16177  df-sca 16179  df-vsca 16180  df-tset 16182  df-ple 16183  df-0g 16324  df-gsum 16325  df-mre 16468  df-mrc 16469  df-acs 16471  df-mgm 17463  df-sgrp 17505  df-mnd 17516  df-mhm 17556  df-submnd 17557  df-grp 17646  df-minusg 17647  df-sbg 17648  df-mulg 17762  df-subg 17812  df-ghm 17879  df-cntz 17970  df-cmn 18415  df-abl 18416  df-mgp 18710  df-ur 18722  df-srg 18726  df-ring 18769  df-subrg 19000  df-lmod 19087  df-lss 19155  df-psr 19578  df-mvr 19579  df-mpl 19580  df-opsr 19582  df-psr1 19772  df-vr1 19773  df-ply1 19774  df-coe1 19775
This theorem is referenced by:  eqcoe1ply1eq  19889  pmatcollpw1lem2  20802  mp2pm2mp  20838  plypf1  24187
  Copyright terms: Public domain W3C validator