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

Theorem ply1coe 19714
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 2651 . . 3 (1𝑜 mPoly 𝑅) = (1𝑜 mPoly 𝑅)
2 psr1baslem 19603 . . 3 (ℕ0𝑚 1𝑜) = {𝑑 ∈ (ℕ0𝑚 1𝑜) ∣ (𝑑 “ ℕ) ∈ Fin}
3 eqid 2651 . . 3 (0g𝑅) = (0g𝑅)
4 eqid 2651 . . 3 (1r𝑅) = (1r𝑅)
5 1onn 7764 . . . 4 1𝑜 ∈ ω
65a1i 11 . . 3 ((𝑅 ∈ Ring ∧ 𝐾𝐵) → 1𝑜 ∈ ω)
7 ply1coe.p . . . 4 𝑃 = (Poly1𝑅)
8 eqid 2651 . . . 4 (PwSer1𝑅) = (PwSer1𝑅)
9 ply1coe.b . . . 4 𝐵 = (Base‘𝑃)
107, 8, 9ply1bas 19613 . . 3 𝐵 = (Base‘(1𝑜 mPoly 𝑅))
11 ply1coe.n . . . 4 · = ( ·𝑠𝑃)
127, 1, 11ply1vsca 19644 . . 3 · = ( ·𝑠 ‘(1𝑜 mPoly 𝑅))
13 simpl 472 . . 3 ((𝑅 ∈ Ring ∧ 𝐾𝐵) → 𝑅 ∈ Ring)
14 simpr 476 . . 3 ((𝑅 ∈ Ring ∧ 𝐾𝐵) → 𝐾𝐵)
151, 2, 3, 4, 6, 10, 12, 13, 14mplcoe1 19513 . 2 ((𝑅 ∈ Ring ∧ 𝐾𝐵) → 𝐾 = ((1𝑜 mPoly 𝑅) Σg (𝑎 ∈ (ℕ0𝑚 1𝑜) ↦ ((𝐾𝑎) · (𝑏 ∈ (ℕ0𝑚 1𝑜) ↦ if(𝑏 = 𝑎, (1r𝑅), (0g𝑅)))))))
16 ply1coe.a . . . . . . 7 𝐴 = (coe1𝐾)
1716fvcoe1 19625 . . . . . 6 ((𝐾𝐵𝑎 ∈ (ℕ0𝑚 1𝑜)) → (𝐾𝑎) = (𝐴‘(𝑎‘∅)))
1817adantll 750 . . . . 5 (((𝑅 ∈ Ring ∧ 𝐾𝐵) ∧ 𝑎 ∈ (ℕ0𝑚 1𝑜)) → (𝐾𝑎) = (𝐴‘(𝑎‘∅)))
195a1i 11 . . . . . . 7 (((𝑅 ∈ Ring ∧ 𝐾𝐵) ∧ 𝑎 ∈ (ℕ0𝑚 1𝑜)) → 1𝑜 ∈ ω)
20 eqid 2651 . . . . . . 7 (mulGrp‘(1𝑜 mPoly 𝑅)) = (mulGrp‘(1𝑜 mPoly 𝑅))
21 eqid 2651 . . . . . . 7 (.g‘(mulGrp‘(1𝑜 mPoly 𝑅))) = (.g‘(mulGrp‘(1𝑜 mPoly 𝑅)))
22 eqid 2651 . . . . . . 7 (1𝑜 mVar 𝑅) = (1𝑜 mVar 𝑅)
23 simpll 805 . . . . . . 7 (((𝑅 ∈ Ring ∧ 𝐾𝐵) ∧ 𝑎 ∈ (ℕ0𝑚 1𝑜)) → 𝑅 ∈ Ring)
24 simpr 476 . . . . . . 7 (((𝑅 ∈ Ring ∧ 𝐾𝐵) ∧ 𝑎 ∈ (ℕ0𝑚 1𝑜)) → 𝑎 ∈ (ℕ0𝑚 1𝑜))
25 eqidd 2652 . . . . . . . . . 10 (((𝑅 ∈ Ring ∧ 𝐾𝐵) ∧ 𝑎 ∈ (ℕ0𝑚 1𝑜)) → (((1𝑜 mVar 𝑅)‘∅)(+g‘(mulGrp‘(1𝑜 mPoly 𝑅)))((1𝑜 mVar 𝑅)‘∅)) = (((1𝑜 mVar 𝑅)‘∅)(+g‘(mulGrp‘(1𝑜 mPoly 𝑅)))((1𝑜 mVar 𝑅)‘∅)))
26 0ex 4823 . . . . . . . . . . 11 ∅ ∈ V
27 fveq2 6229 . . . . . . . . . . . . 13 (𝑏 = ∅ → ((1𝑜 mVar 𝑅)‘𝑏) = ((1𝑜 mVar 𝑅)‘∅))
2827oveq1d 6705 . . . . . . . . . . . 12 (𝑏 = ∅ → (((1𝑜 mVar 𝑅)‘𝑏)(+g‘(mulGrp‘(1𝑜 mPoly 𝑅)))((1𝑜 mVar 𝑅)‘∅)) = (((1𝑜 mVar 𝑅)‘∅)(+g‘(mulGrp‘(1𝑜 mPoly 𝑅)))((1𝑜 mVar 𝑅)‘∅)))
2927oveq2d 6706 . . . . . . . . . . . 12 (𝑏 = ∅ → (((1𝑜 mVar 𝑅)‘∅)(+g‘(mulGrp‘(1𝑜 mPoly 𝑅)))((1𝑜 mVar 𝑅)‘𝑏)) = (((1𝑜 mVar 𝑅)‘∅)(+g‘(mulGrp‘(1𝑜 mPoly 𝑅)))((1𝑜 mVar 𝑅)‘∅)))
3028, 29eqeq12d 2666 . . . . . . . . . . 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 4254 . . . . . . . . . 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 6229 . . . . . . . . . . . . 13 (𝑥 = ∅ → ((1𝑜 mVar 𝑅)‘𝑥) = ((1𝑜 mVar 𝑅)‘∅))
3433oveq2d 6706 . . . . . . . . . . . 12 (𝑥 = ∅ → (((1𝑜 mVar 𝑅)‘𝑏)(+g‘(mulGrp‘(1𝑜 mPoly 𝑅)))((1𝑜 mVar 𝑅)‘𝑥)) = (((1𝑜 mVar 𝑅)‘𝑏)(+g‘(mulGrp‘(1𝑜 mPoly 𝑅)))((1𝑜 mVar 𝑅)‘∅)))
3533oveq1d 6705 . . . . . . . . . . . 12 (𝑥 = ∅ → (((1𝑜 mVar 𝑅)‘𝑥)(+g‘(mulGrp‘(1𝑜 mPoly 𝑅)))((1𝑜 mVar 𝑅)‘𝑏)) = (((1𝑜 mVar 𝑅)‘∅)(+g‘(mulGrp‘(1𝑜 mPoly 𝑅)))((1𝑜 mVar 𝑅)‘𝑏)))
3634, 35eqeq12d 2666 . . . . . . . . . . 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 3015 . . . . . . . . . 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 4254 . . . . . . . . 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 7617 . . . . . . . . 9 1𝑜 = {∅}
4140raleqi 3172 . . . . . . . . 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 3019 . . . . . . . 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 19516 . . . . . 6 (((𝑅 ∈ Ring ∧ 𝐾𝐵) ∧ 𝑎 ∈ (ℕ0𝑚 1𝑜)) → (𝑏 ∈ (ℕ0𝑚 1𝑜) ↦ if(𝑏 = 𝑎, (1r𝑅), (0g𝑅))) = ((mulGrp‘(1𝑜 mPoly 𝑅)) Σg (𝑐 ∈ 1𝑜 ↦ ((𝑎𝑐)(.g‘(mulGrp‘(1𝑜 mPoly 𝑅)))((1𝑜 mVar 𝑅)‘𝑐)))))
45 mpteq1 4770 . . . . . . . . 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 6701 . . . . . . 7 ((mulGrp‘(1𝑜 mPoly 𝑅)) Σg (𝑐 ∈ 1𝑜 ↦ ((𝑎𝑐)(.g‘(mulGrp‘(1𝑜 mPoly 𝑅)))((1𝑜 mVar 𝑅)‘𝑐)))) = ((mulGrp‘(1𝑜 mPoly 𝑅)) Σg (𝑐 ∈ {∅} ↦ ((𝑎𝑐)(.g‘(mulGrp‘(1𝑜 mPoly 𝑅)))((1𝑜 mVar 𝑅)‘𝑐))))
481mplring 19500 . . . . . . . . . . 11 ((1𝑜 ∈ ω ∧ 𝑅 ∈ Ring) → (1𝑜 mPoly 𝑅) ∈ Ring)
495, 48mpan 706 . . . . . . . . . 10 (𝑅 ∈ Ring → (1𝑜 mPoly 𝑅) ∈ Ring)
5020ringmgp 18599 . . . . . . . . . 10 ((1𝑜 mPoly 𝑅) ∈ Ring → (mulGrp‘(1𝑜 mPoly 𝑅)) ∈ Mnd)
5149, 50syl 17 . . . . . . . . 9 (𝑅 ∈ Ring → (mulGrp‘(1𝑜 mPoly 𝑅)) ∈ Mnd)
5251ad2antrr 762 . . . . . . . 8 (((𝑅 ∈ Ring ∧ 𝐾𝐵) ∧ 𝑎 ∈ (ℕ0𝑚 1𝑜)) → (mulGrp‘(1𝑜 mPoly 𝑅)) ∈ Mnd)
5326a1i 11 . . . . . . . 8 (((𝑅 ∈ Ring ∧ 𝐾𝐵) ∧ 𝑎 ∈ (ℕ0𝑚 1𝑜)) → ∅ ∈ V)
54 ply1coe.e . . . . . . . . . . . 12 = (.g𝑀)
5520, 10mgpbas 18541 . . . . . . . . . . . . 13 𝐵 = (Base‘(mulGrp‘(1𝑜 mPoly 𝑅)))
5655a1i 11 . . . . . . . . . . . 12 ((𝑅 ∈ Ring ∧ 𝐾𝐵) → 𝐵 = (Base‘(mulGrp‘(1𝑜 mPoly 𝑅))))
57 ply1coe.m . . . . . . . . . . . . . 14 𝑀 = (mulGrp‘𝑃)
5857, 9mgpbas 18541 . . . . . . . . . . . . 13 𝐵 = (Base‘𝑀)
5958a1i 11 . . . . . . . . . . . 12 ((𝑅 ∈ Ring ∧ 𝐾𝐵) → 𝐵 = (Base‘𝑀))
60 ssv 3658 . . . . . . . . . . . . 13 𝐵 ⊆ V
6160a1i 11 . . . . . . . . . . . 12 ((𝑅 ∈ Ring ∧ 𝐾𝐵) → 𝐵 ⊆ V)
62 ovexd 6720 . . . . . . . . . . . 12 (((𝑅 ∈ Ring ∧ 𝐾𝐵) ∧ (𝑎 ∈ V ∧ 𝑏 ∈ V)) → (𝑎(+g‘(mulGrp‘(1𝑜 mPoly 𝑅)))𝑏) ∈ V)
63 eqid 2651 . . . . . . . . . . . . . . . . 17 (.r𝑃) = (.r𝑃)
647, 1, 63ply1mulr 19645 . . . . . . . . . . . . . . . 16 (.r𝑃) = (.r‘(1𝑜 mPoly 𝑅))
6520, 64mgpplusg 18539 . . . . . . . . . . . . . . 15 (.r𝑃) = (+g‘(mulGrp‘(1𝑜 mPoly 𝑅)))
6657, 63mgpplusg 18539 . . . . . . . . . . . . . . 15 (.r𝑃) = (+g𝑀)
6765, 66eqtr3i 2675 . . . . . . . . . . . . . 14 (+g‘(mulGrp‘(1𝑜 mPoly 𝑅))) = (+g𝑀)
6867oveqi 6703 . . . . . . . . . . . . 13 (𝑎(+g‘(mulGrp‘(1𝑜 mPoly 𝑅)))𝑏) = (𝑎(+g𝑀)𝑏)
6968a1i 11 . . . . . . . . . . . 12 (((𝑅 ∈ Ring ∧ 𝐾𝐵) ∧ (𝑎 ∈ V ∧ 𝑏 ∈ V)) → (𝑎(+g‘(mulGrp‘(1𝑜 mPoly 𝑅)))𝑏) = (𝑎(+g𝑀)𝑏))
7021, 54, 56, 59, 61, 62, 69mulgpropd 17631 . . . . . . . . . . 11 ((𝑅 ∈ Ring ∧ 𝐾𝐵) → (.g‘(mulGrp‘(1𝑜 mPoly 𝑅))) = )
7170oveqd 6707 . . . . . . . . . 10 ((𝑅 ∈ Ring ∧ 𝐾𝐵) → ((𝑎‘∅)(.g‘(mulGrp‘(1𝑜 mPoly 𝑅)))𝑋) = ((𝑎‘∅) 𝑋))
7271adantr 480 . . . . . . . . 9 (((𝑅 ∈ Ring ∧ 𝐾𝐵) ∧ 𝑎 ∈ (ℕ0𝑚 1𝑜)) → ((𝑎‘∅)(.g‘(mulGrp‘(1𝑜 mPoly 𝑅)))𝑋) = ((𝑎‘∅) 𝑋))
737ply1ring 19666 . . . . . . . . . . . 12 (𝑅 ∈ Ring → 𝑃 ∈ Ring)
7457ringmgp 18599 . . . . . . . . . . . 12 (𝑃 ∈ Ring → 𝑀 ∈ Mnd)
7573, 74syl 17 . . . . . . . . . . 11 (𝑅 ∈ Ring → 𝑀 ∈ Mnd)
7675ad2antrr 762 . . . . . . . . . 10 (((𝑅 ∈ Ring ∧ 𝐾𝐵) ∧ 𝑎 ∈ (ℕ0𝑚 1𝑜)) → 𝑀 ∈ Mnd)
77 elmapi 7921 . . . . . . . . . . . 12 (𝑎 ∈ (ℕ0𝑚 1𝑜) → 𝑎:1𝑜⟶ℕ0)
78 0lt1o 7629 . . . . . . . . . . . 12 ∅ ∈ 1𝑜
79 ffvelrn 6397 . . . . . . . . . . . 12 ((𝑎:1𝑜⟶ℕ0 ∧ ∅ ∈ 1𝑜) → (𝑎‘∅) ∈ ℕ0)
8077, 78, 79sylancl 695 . . . . . . . . . . 11 (𝑎 ∈ (ℕ0𝑚 1𝑜) → (𝑎‘∅) ∈ ℕ0)
8180adantl 481 . . . . . . . . . 10 (((𝑅 ∈ Ring ∧ 𝐾𝐵) ∧ 𝑎 ∈ (ℕ0𝑚 1𝑜)) → (𝑎‘∅) ∈ ℕ0)
82 ply1coe.x . . . . . . . . . . . 12 𝑋 = (var1𝑅)
8382, 7, 9vr1cl 19635 . . . . . . . . . . 11 (𝑅 ∈ Ring → 𝑋𝐵)
8483ad2antrr 762 . . . . . . . . . 10 (((𝑅 ∈ Ring ∧ 𝐾𝐵) ∧ 𝑎 ∈ (ℕ0𝑚 1𝑜)) → 𝑋𝐵)
8558, 54mulgnn0cl 17605 . . . . . . . . . 10 ((𝑀 ∈ Mnd ∧ (𝑎‘∅) ∈ ℕ0𝑋𝐵) → ((𝑎‘∅) 𝑋) ∈ 𝐵)
8676, 81, 84, 85syl3anc 1366 . . . . . . . . 9 (((𝑅 ∈ Ring ∧ 𝐾𝐵) ∧ 𝑎 ∈ (ℕ0𝑚 1𝑜)) → ((𝑎‘∅) 𝑋) ∈ 𝐵)
8772, 86eqeltrd 2730 . . . . . . . 8 (((𝑅 ∈ Ring ∧ 𝐾𝐵) ∧ 𝑎 ∈ (ℕ0𝑚 1𝑜)) → ((𝑎‘∅)(.g‘(mulGrp‘(1𝑜 mPoly 𝑅)))𝑋) ∈ 𝐵)
88 fveq2 6229 . . . . . . . . . 10 (𝑐 = ∅ → (𝑎𝑐) = (𝑎‘∅))
89 fveq2 6229 . . . . . . . . . . 11 (𝑐 = ∅ → ((1𝑜 mVar 𝑅)‘𝑐) = ((1𝑜 mVar 𝑅)‘∅))
9082vr1val 19610 . . . . . . . . . . 11 𝑋 = ((1𝑜 mVar 𝑅)‘∅)
9189, 90syl6eqr 2703 . . . . . . . . . 10 (𝑐 = ∅ → ((1𝑜 mVar 𝑅)‘𝑐) = 𝑋)
9288, 91oveq12d 6708 . . . . . . . . 9 (𝑐 = ∅ → ((𝑎𝑐)(.g‘(mulGrp‘(1𝑜 mPoly 𝑅)))((1𝑜 mVar 𝑅)‘𝑐)) = ((𝑎‘∅)(.g‘(mulGrp‘(1𝑜 mPoly 𝑅)))𝑋))
9355, 92gsumsn 18400 . . . . . . . 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 1366 . . . . . . 7 (((𝑅 ∈ Ring ∧ 𝐾𝐵) ∧ 𝑎 ∈ (ℕ0𝑚 1𝑜)) → ((mulGrp‘(1𝑜 mPoly 𝑅)) Σg (𝑐 ∈ {∅} ↦ ((𝑎𝑐)(.g‘(mulGrp‘(1𝑜 mPoly 𝑅)))((1𝑜 mVar 𝑅)‘𝑐)))) = ((𝑎‘∅)(.g‘(mulGrp‘(1𝑜 mPoly 𝑅)))𝑋))
9547, 94syl5eq 2697 . . . . . 6 (((𝑅 ∈ Ring ∧ 𝐾𝐵) ∧ 𝑎 ∈ (ℕ0𝑚 1𝑜)) → ((mulGrp‘(1𝑜 mPoly 𝑅)) Σg (𝑐 ∈ 1𝑜 ↦ ((𝑎𝑐)(.g‘(mulGrp‘(1𝑜 mPoly 𝑅)))((1𝑜 mVar 𝑅)‘𝑐)))) = ((𝑎‘∅)(.g‘(mulGrp‘(1𝑜 mPoly 𝑅)))𝑋))
9644, 95, 723eqtrd 2689 . . . . 5 (((𝑅 ∈ Ring ∧ 𝐾𝐵) ∧ 𝑎 ∈ (ℕ0𝑚 1𝑜)) → (𝑏 ∈ (ℕ0𝑚 1𝑜) ↦ if(𝑏 = 𝑎, (1r𝑅), (0g𝑅))) = ((𝑎‘∅) 𝑋))
9718, 96oveq12d 6708 . . . 4 (((𝑅 ∈ Ring ∧ 𝐾𝐵) ∧ 𝑎 ∈ (ℕ0𝑚 1𝑜)) → ((𝐾𝑎) · (𝑏 ∈ (ℕ0𝑚 1𝑜) ↦ if(𝑏 = 𝑎, (1r𝑅), (0g𝑅)))) = ((𝐴‘(𝑎‘∅)) · ((𝑎‘∅) 𝑋)))
9897mpteq2dva 4777 . . 3 ((𝑅 ∈ Ring ∧ 𝐾𝐵) → (𝑎 ∈ (ℕ0𝑚 1𝑜) ↦ ((𝐾𝑎) · (𝑏 ∈ (ℕ0𝑚 1𝑜) ↦ if(𝑏 = 𝑎, (1r𝑅), (0g𝑅))))) = (𝑎 ∈ (ℕ0𝑚 1𝑜) ↦ ((𝐴‘(𝑎‘∅)) · ((𝑎‘∅) 𝑋))))
9998oveq2d 6706 . 2 ((𝑅 ∈ Ring ∧ 𝐾𝐵) → ((1𝑜 mPoly 𝑅) Σg (𝑎 ∈ (ℕ0𝑚 1𝑜) ↦ ((𝐾𝑎) · (𝑏 ∈ (ℕ0𝑚 1𝑜) ↦ if(𝑏 = 𝑎, (1r𝑅), (0g𝑅)))))) = ((1𝑜 mPoly 𝑅) Σg (𝑎 ∈ (ℕ0𝑚 1𝑜) ↦ ((𝐴‘(𝑎‘∅)) · ((𝑎‘∅) 𝑋)))))
100 nn0ex 11336 . . . . . 6 0 ∈ V
101100mptex 6527 . . . . 5 (𝑘 ∈ ℕ0 ↦ ((𝐴𝑘) · (𝑘 𝑋))) ∈ V
102101a1i 11 . . . 4 ((𝑅 ∈ Ring ∧ 𝐾𝐵) → (𝑘 ∈ ℕ0 ↦ ((𝐴𝑘) · (𝑘 𝑋))) ∈ V)
103 fvex 6239 . . . . . 6 (Poly1𝑅) ∈ V
1047, 103eqeltri 2726 . . . . 5 𝑃 ∈ V
105104a1i 11 . . . 4 ((𝑅 ∈ Ring ∧ 𝐾𝐵) → 𝑃 ∈ V)
106 ovexd 6720 . . . 4 ((𝑅 ∈ Ring ∧ 𝐾𝐵) → (1𝑜 mPoly 𝑅) ∈ V)
1079, 10eqtr3i 2675 . . . . 5 (Base‘𝑃) = (Base‘(1𝑜 mPoly 𝑅))
108107a1i 11 . . . 4 ((𝑅 ∈ Ring ∧ 𝐾𝐵) → (Base‘𝑃) = (Base‘(1𝑜 mPoly 𝑅)))
109 eqid 2651 . . . . . 6 (+g𝑃) = (+g𝑃)
1107, 1, 109ply1plusg 19643 . . . . 5 (+g𝑃) = (+g‘(1𝑜 mPoly 𝑅))
111110a1i 11 . . . 4 ((𝑅 ∈ Ring ∧ 𝐾𝐵) → (+g𝑃) = (+g‘(1𝑜 mPoly 𝑅)))
112102, 105, 106, 108, 111gsumpropd 17319 . . 3 ((𝑅 ∈ Ring ∧ 𝐾𝐵) → (𝑃 Σg (𝑘 ∈ ℕ0 ↦ ((𝐴𝑘) · (𝑘 𝑋)))) = ((1𝑜 mPoly 𝑅) Σg (𝑘 ∈ ℕ0 ↦ ((𝐴𝑘) · (𝑘 𝑋)))))
113 eqid 2651 . . . . 5 (0g𝑃) = (0g𝑃)
1141, 7, 113ply1mpl0 19673 . . . 4 (0g𝑃) = (0g‘(1𝑜 mPoly 𝑅))
1151mpllmod 19499 . . . . . 6 ((1𝑜 ∈ ω ∧ 𝑅 ∈ Ring) → (1𝑜 mPoly 𝑅) ∈ LMod)
1165, 13, 115sylancr 696 . . . . 5 ((𝑅 ∈ Ring ∧ 𝐾𝐵) → (1𝑜 mPoly 𝑅) ∈ LMod)
117 lmodcmn 18959 . . . . 5 ((1𝑜 mPoly 𝑅) ∈ LMod → (1𝑜 mPoly 𝑅) ∈ CMnd)
118116, 117syl 17 . . . 4 ((𝑅 ∈ Ring ∧ 𝐾𝐵) → (1𝑜 mPoly 𝑅) ∈ CMnd)
119100a1i 11 . . . 4 ((𝑅 ∈ Ring ∧ 𝐾𝐵) → ℕ0 ∈ V)
1207ply1lmod 19670 . . . . . . 7 (𝑅 ∈ Ring → 𝑃 ∈ LMod)
121120ad2antrr 762 . . . . . 6 (((𝑅 ∈ Ring ∧ 𝐾𝐵) ∧ 𝑘 ∈ ℕ0) → 𝑃 ∈ LMod)
122 eqid 2651 . . . . . . . . . 10 (Base‘𝑅) = (Base‘𝑅)
12316, 9, 7, 122coe1f 19629 . . . . . . . . 9 (𝐾𝐵𝐴:ℕ0⟶(Base‘𝑅))
124123adantl 481 . . . . . . . 8 ((𝑅 ∈ Ring ∧ 𝐾𝐵) → 𝐴:ℕ0⟶(Base‘𝑅))
125124ffvelrnda 6399 . . . . . . 7 (((𝑅 ∈ Ring ∧ 𝐾𝐵) ∧ 𝑘 ∈ ℕ0) → (𝐴𝑘) ∈ (Base‘𝑅))
1267ply1sca 19671 . . . . . . . . . 10 (𝑅 ∈ Ring → 𝑅 = (Scalar‘𝑃))
127126eqcomd 2657 . . . . . . . . 9 (𝑅 ∈ Ring → (Scalar‘𝑃) = 𝑅)
128127ad2antrr 762 . . . . . . . 8 (((𝑅 ∈ Ring ∧ 𝐾𝐵) ∧ 𝑘 ∈ ℕ0) → (Scalar‘𝑃) = 𝑅)
129128fveq2d 6233 . . . . . . 7 (((𝑅 ∈ Ring ∧ 𝐾𝐵) ∧ 𝑘 ∈ ℕ0) → (Base‘(Scalar‘𝑃)) = (Base‘𝑅))
130125, 129eleqtrrd 2733 . . . . . 6 (((𝑅 ∈ Ring ∧ 𝐾𝐵) ∧ 𝑘 ∈ ℕ0) → (𝐴𝑘) ∈ (Base‘(Scalar‘𝑃)))
13175ad2antrr 762 . . . . . . 7 (((𝑅 ∈ Ring ∧ 𝐾𝐵) ∧ 𝑘 ∈ ℕ0) → 𝑀 ∈ Mnd)
132 simpr 476 . . . . . . 7 (((𝑅 ∈ Ring ∧ 𝐾𝐵) ∧ 𝑘 ∈ ℕ0) → 𝑘 ∈ ℕ0)
13383ad2antrr 762 . . . . . . 7 (((𝑅 ∈ Ring ∧ 𝐾𝐵) ∧ 𝑘 ∈ ℕ0) → 𝑋𝐵)
13458, 54mulgnn0cl 17605 . . . . . . 7 ((𝑀 ∈ Mnd ∧ 𝑘 ∈ ℕ0𝑋𝐵) → (𝑘 𝑋) ∈ 𝐵)
135131, 132, 133, 134syl3anc 1366 . . . . . 6 (((𝑅 ∈ Ring ∧ 𝐾𝐵) ∧ 𝑘 ∈ ℕ0) → (𝑘 𝑋) ∈ 𝐵)
136 eqid 2651 . . . . . . 7 (Scalar‘𝑃) = (Scalar‘𝑃)
137 eqid 2651 . . . . . . 7 (Base‘(Scalar‘𝑃)) = (Base‘(Scalar‘𝑃))
1389, 136, 11, 137lmodvscl 18928 . . . . . 6 ((𝑃 ∈ LMod ∧ (𝐴𝑘) ∈ (Base‘(Scalar‘𝑃)) ∧ (𝑘 𝑋) ∈ 𝐵) → ((𝐴𝑘) · (𝑘 𝑋)) ∈ 𝐵)
139121, 130, 135, 138syl3anc 1366 . . . . 5 (((𝑅 ∈ Ring ∧ 𝐾𝐵) ∧ 𝑘 ∈ ℕ0) → ((𝐴𝑘) · (𝑘 𝑋)) ∈ 𝐵)
140 eqid 2651 . . . . 5 (𝑘 ∈ ℕ0 ↦ ((𝐴𝑘) · (𝑘 𝑋))) = (𝑘 ∈ ℕ0 ↦ ((𝐴𝑘) · (𝑘 𝑋)))
141139, 140fmptd 6425 . . . 4 ((𝑅 ∈ Ring ∧ 𝐾𝐵) → (𝑘 ∈ ℕ0 ↦ ((𝐴𝑘) · (𝑘 𝑋))):ℕ0𝐵)
1427, 82, 9, 11, 57, 54, 16ply1coefsupp 19713 . . . 4 ((𝑅 ∈ Ring ∧ 𝐾𝐵) → (𝑘 ∈ ℕ0 ↦ ((𝐴𝑘) · (𝑘 𝑋))) finSupp (0g𝑃))
143 eqid 2651 . . . . . 6 (𝑎 ∈ (ℕ0𝑚 1𝑜) ↦ (𝑎‘∅)) = (𝑎 ∈ (ℕ0𝑚 1𝑜) ↦ (𝑎‘∅))
14440, 100, 26, 143mapsnf1o2 7947 . . . . 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 18363 . . 3 ((𝑅 ∈ Ring ∧ 𝐾𝐵) → ((1𝑜 mPoly 𝑅) Σg (𝑘 ∈ ℕ0 ↦ ((𝐴𝑘) · (𝑘 𝑋)))) = ((1𝑜 mPoly 𝑅) Σg ((𝑘 ∈ ℕ0 ↦ ((𝐴𝑘) · (𝑘 𝑋))) ∘ (𝑎 ∈ (ℕ0𝑚 1𝑜) ↦ (𝑎‘∅)))))
147 eqidd 2652 . . . . 5 ((𝑅 ∈ Ring ∧ 𝐾𝐵) → (𝑎 ∈ (ℕ0𝑚 1𝑜) ↦ (𝑎‘∅)) = (𝑎 ∈ (ℕ0𝑚 1𝑜) ↦ (𝑎‘∅)))
148 eqidd 2652 . . . . 5 ((𝑅 ∈ Ring ∧ 𝐾𝐵) → (𝑘 ∈ ℕ0 ↦ ((𝐴𝑘) · (𝑘 𝑋))) = (𝑘 ∈ ℕ0 ↦ ((𝐴𝑘) · (𝑘 𝑋))))
149 fveq2 6229 . . . . . 6 (𝑘 = (𝑎‘∅) → (𝐴𝑘) = (𝐴‘(𝑎‘∅)))
150 oveq1 6697 . . . . . 6 (𝑘 = (𝑎‘∅) → (𝑘 𝑋) = ((𝑎‘∅) 𝑋))
151149, 150oveq12d 6708 . . . . 5 (𝑘 = (𝑎‘∅) → ((𝐴𝑘) · (𝑘 𝑋)) = ((𝐴‘(𝑎‘∅)) · ((𝑎‘∅) 𝑋)))
15281, 147, 148, 151fmptco 6436 . . . 4 ((𝑅 ∈ Ring ∧ 𝐾𝐵) → ((𝑘 ∈ ℕ0 ↦ ((𝐴𝑘) · (𝑘 𝑋))) ∘ (𝑎 ∈ (ℕ0𝑚 1𝑜) ↦ (𝑎‘∅))) = (𝑎 ∈ (ℕ0𝑚 1𝑜) ↦ ((𝐴‘(𝑎‘∅)) · ((𝑎‘∅) 𝑋))))
153152oveq2d 6706 . . 3 ((𝑅 ∈ Ring ∧ 𝐾𝐵) → ((1𝑜 mPoly 𝑅) Σg ((𝑘 ∈ ℕ0 ↦ ((𝐴𝑘) · (𝑘 𝑋))) ∘ (𝑎 ∈ (ℕ0𝑚 1𝑜) ↦ (𝑎‘∅)))) = ((1𝑜 mPoly 𝑅) Σg (𝑎 ∈ (ℕ0𝑚 1𝑜) ↦ ((𝐴‘(𝑎‘∅)) · ((𝑎‘∅) 𝑋)))))
154112, 146, 1533eqtrrd 2690 . 2 ((𝑅 ∈ Ring ∧ 𝐾𝐵) → ((1𝑜 mPoly 𝑅) Σg (𝑎 ∈ (ℕ0𝑚 1𝑜) ↦ ((𝐴‘(𝑎‘∅)) · ((𝑎‘∅) 𝑋)))) = (𝑃 Σg (𝑘 ∈ ℕ0 ↦ ((𝐴𝑘) · (𝑘 𝑋)))))
15515, 99, 1543eqtrd 2689 1 ((𝑅 ∈ Ring ∧ 𝐾𝐵) → 𝐾 = (𝑃 Σg (𝑘 ∈ ℕ0 ↦ ((𝐴𝑘) · (𝑘 𝑋)))))
Colors of variables: wff setvar class
Syntax hints:  wi 4  wa 383   = wceq 1523  wcel 2030  wral 2941  Vcvv 3231  wss 3607  c0 3948  ifcif 4119  {csn 4210  cmpt 4762  ccom 5147  wf 5922  1-1-ontowf1o 5925  cfv 5926  (class class class)co 6690  ωcom 7107  1𝑜c1o 7598  𝑚 cmap 7899  0cn0 11330  Basecbs 15904  +gcplusg 15988  .rcmulr 15989  Scalarcsca 15991   ·𝑠 cvsca 15992  0gc0g 16147   Σg cgsu 16148  Mndcmnd 17341  .gcmg 17587  CMndccmn 18239  mulGrpcmgp 18535  1rcur 18547  Ringcrg 18593  LModclmod 18911   mVar cmvr 19400   mPoly cmpl 19401  PwSer1cps1 19593  var1cv1 19594  Poly1cpl1 19595  coe1cco1 19596
This theorem was proved from axioms:  ax-mp 5  ax-1 6  ax-2 7  ax-3 8  ax-gen 1762  ax-4 1777  ax-5 1879  ax-6 1945  ax-7 1981  ax-8 2032  ax-9 2039  ax-10 2059  ax-11 2074  ax-12 2087  ax-13 2282  ax-ext 2631  ax-rep 4804  ax-sep 4814  ax-nul 4822  ax-pow 4873  ax-pr 4936  ax-un 6991  ax-inf2 8576  ax-cnex 10030  ax-resscn 10031  ax-1cn 10032  ax-icn 10033  ax-addcl 10034  ax-addrcl 10035  ax-mulcl 10036  ax-mulrcl 10037  ax-mulcom 10038  ax-addass 10039  ax-mulass 10040  ax-distr 10041  ax-i2m1 10042  ax-1ne0 10043  ax-1rid 10044  ax-rnegex 10045  ax-rrecex 10046  ax-cnre 10047  ax-pre-lttri 10048  ax-pre-lttrn 10049  ax-pre-ltadd 10050  ax-pre-mulgt0 10051
This theorem depends on definitions:  df-bi 197  df-or 384  df-an 385  df-3or 1055  df-3an 1056  df-tru 1526  df-fal 1529  df-ex 1745  df-nf 1750  df-sb 1938  df-eu 2502  df-mo 2503  df-clab 2638  df-cleq 2644  df-clel 2647  df-nfc 2782  df-ne 2824  df-nel 2927  df-ral 2946  df-rex 2947  df-reu 2948  df-rmo 2949  df-rab 2950  df-v 3233  df-sbc 3469  df-csb 3567  df-dif 3610  df-un 3612  df-in 3614  df-ss 3621  df-pss 3623  df-nul 3949  df-if 4120  df-pw 4193  df-sn 4211  df-pr 4213  df-tp 4215  df-op 4217  df-uni 4469  df-int 4508  df-iun 4554  df-iin 4555  df-br 4686  df-opab 4746  df-mpt 4763  df-tr 4786  df-id 5053  df-eprel 5058  df-po 5064  df-so 5065  df-fr 5102  df-se 5103  df-we 5104  df-xp 5149  df-rel 5150  df-cnv 5151  df-co 5152  df-dm 5153  df-rn 5154  df-res 5155  df-ima 5156  df-pred 5718  df-ord 5764  df-on 5765  df-lim 5766  df-suc 5767  df-iota 5889  df-fun 5928  df-fn 5929  df-f 5930  df-f1 5931  df-fo 5932  df-f1o 5933  df-fv 5934  df-isom 5935  df-riota 6651  df-ov 6693  df-oprab 6694  df-mpt2 6695  df-of 6939  df-ofr 6940  df-om 7108  df-1st 7210  df-2nd 7211  df-supp 7341  df-wrecs 7452  df-recs 7513  df-rdg 7551  df-1o 7605  df-2o 7606  df-oadd 7609  df-er 7787  df-map 7901  df-pm 7902  df-ixp 7951  df-en 7998  df-dom 7999  df-sdom 8000  df-fin 8001  df-fsupp 8317  df-oi 8456  df-card 8803  df-pnf 10114  df-mnf 10115  df-xr 10116  df-ltxr 10117  df-le 10118  df-sub 10306  df-neg 10307  df-nn 11059  df-2 11117  df-3 11118  df-4 11119  df-5 11120  df-6 11121  df-7 11122  df-8 11123  df-9 11124  df-n0 11331  df-z 11416  df-dec 11532  df-uz 11726  df-fz 12365  df-fzo 12505  df-seq 12842  df-hash 13158  df-struct 15906  df-ndx 15907  df-slot 15908  df-base 15910  df-sets 15911  df-ress 15912  df-plusg 16001  df-mulr 16002  df-sca 16004  df-vsca 16005  df-tset 16007  df-ple 16008  df-0g 16149  df-gsum 16150  df-mre 16293  df-mrc 16294  df-acs 16296  df-mgm 17289  df-sgrp 17331  df-mnd 17342  df-mhm 17382  df-submnd 17383  df-grp 17472  df-minusg 17473  df-sbg 17474  df-mulg 17588  df-subg 17638  df-ghm 17705  df-cntz 17796  df-cmn 18241  df-abl 18242  df-mgp 18536  df-ur 18548  df-srg 18552  df-ring 18595  df-subrg 18826  df-lmod 18913  df-lss 18981  df-psr 19404  df-mvr 19405  df-mpl 19406  df-opsr 19408  df-psr1 19598  df-vr1 19599  df-ply1 19600  df-coe1 19601
This theorem is referenced by:  eqcoe1ply1eq  19715  pmatcollpw1lem2  20628  mp2pm2mp  20664  plypf1  24013
  Copyright terms: Public domain W3C validator