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

Theorem ply1coe 19666
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 2622 . . 3 (1𝑜 mPoly 𝑅) = (1𝑜 mPoly 𝑅)
2 psr1baslem 19555 . . 3 (ℕ0𝑚 1𝑜) = {𝑑 ∈ (ℕ0𝑚 1𝑜) ∣ (𝑑 “ ℕ) ∈ Fin}
3 eqid 2622 . . 3 (0g𝑅) = (0g𝑅)
4 eqid 2622 . . 3 (1r𝑅) = (1r𝑅)
5 1onn 7719 . . . 4 1𝑜 ∈ ω
65a1i 11 . . 3 ((𝑅 ∈ Ring ∧ 𝐾𝐵) → 1𝑜 ∈ ω)
7 ply1coe.p . . . 4 𝑃 = (Poly1𝑅)
8 eqid 2622 . . . 4 (PwSer1𝑅) = (PwSer1𝑅)
9 ply1coe.b . . . 4 𝐵 = (Base‘𝑃)
107, 8, 9ply1bas 19565 . . 3 𝐵 = (Base‘(1𝑜 mPoly 𝑅))
11 ply1coe.n . . . 4 · = ( ·𝑠𝑃)
127, 1, 11ply1vsca 19596 . . 3 · = ( ·𝑠 ‘(1𝑜 mPoly 𝑅))
13 simpl 473 . . 3 ((𝑅 ∈ Ring ∧ 𝐾𝐵) → 𝑅 ∈ Ring)
14 simpr 477 . . 3 ((𝑅 ∈ Ring ∧ 𝐾𝐵) → 𝐾𝐵)
151, 2, 3, 4, 6, 10, 12, 13, 14mplcoe1 19465 . 2 ((𝑅 ∈ Ring ∧ 𝐾𝐵) → 𝐾 = ((1𝑜 mPoly 𝑅) Σg (𝑎 ∈ (ℕ0𝑚 1𝑜) ↦ ((𝐾𝑎) · (𝑏 ∈ (ℕ0𝑚 1𝑜) ↦ if(𝑏 = 𝑎, (1r𝑅), (0g𝑅)))))))
16 ply1coe.a . . . . . . 7 𝐴 = (coe1𝐾)
1716fvcoe1 19577 . . . . . 6 ((𝐾𝐵𝑎 ∈ (ℕ0𝑚 1𝑜)) → (𝐾𝑎) = (𝐴‘(𝑎‘∅)))
1817adantll 750 . . . . 5 (((𝑅 ∈ Ring ∧ 𝐾𝐵) ∧ 𝑎 ∈ (ℕ0𝑚 1𝑜)) → (𝐾𝑎) = (𝐴‘(𝑎‘∅)))
195a1i 11 . . . . . . 7 (((𝑅 ∈ Ring ∧ 𝐾𝐵) ∧ 𝑎 ∈ (ℕ0𝑚 1𝑜)) → 1𝑜 ∈ ω)
20 eqid 2622 . . . . . . 7 (mulGrp‘(1𝑜 mPoly 𝑅)) = (mulGrp‘(1𝑜 mPoly 𝑅))
21 eqid 2622 . . . . . . 7 (.g‘(mulGrp‘(1𝑜 mPoly 𝑅))) = (.g‘(mulGrp‘(1𝑜 mPoly 𝑅)))
22 eqid 2622 . . . . . . 7 (1𝑜 mVar 𝑅) = (1𝑜 mVar 𝑅)
23 simpll 790 . . . . . . 7 (((𝑅 ∈ Ring ∧ 𝐾𝐵) ∧ 𝑎 ∈ (ℕ0𝑚 1𝑜)) → 𝑅 ∈ Ring)
24 simpr 477 . . . . . . 7 (((𝑅 ∈ Ring ∧ 𝐾𝐵) ∧ 𝑎 ∈ (ℕ0𝑚 1𝑜)) → 𝑎 ∈ (ℕ0𝑚 1𝑜))
25 eqidd 2623 . . . . . . . . . 10 (((𝑅 ∈ Ring ∧ 𝐾𝐵) ∧ 𝑎 ∈ (ℕ0𝑚 1𝑜)) → (((1𝑜 mVar 𝑅)‘∅)(+g‘(mulGrp‘(1𝑜 mPoly 𝑅)))((1𝑜 mVar 𝑅)‘∅)) = (((1𝑜 mVar 𝑅)‘∅)(+g‘(mulGrp‘(1𝑜 mPoly 𝑅)))((1𝑜 mVar 𝑅)‘∅)))
26 0ex 4790 . . . . . . . . . . 11 ∅ ∈ V
27 fveq2 6191 . . . . . . . . . . . . 13 (𝑏 = ∅ → ((1𝑜 mVar 𝑅)‘𝑏) = ((1𝑜 mVar 𝑅)‘∅))
2827oveq1d 6665 . . . . . . . . . . . 12 (𝑏 = ∅ → (((1𝑜 mVar 𝑅)‘𝑏)(+g‘(mulGrp‘(1𝑜 mPoly 𝑅)))((1𝑜 mVar 𝑅)‘∅)) = (((1𝑜 mVar 𝑅)‘∅)(+g‘(mulGrp‘(1𝑜 mPoly 𝑅)))((1𝑜 mVar 𝑅)‘∅)))
2927oveq2d 6666 . . . . . . . . . . . 12 (𝑏 = ∅ → (((1𝑜 mVar 𝑅)‘∅)(+g‘(mulGrp‘(1𝑜 mPoly 𝑅)))((1𝑜 mVar 𝑅)‘𝑏)) = (((1𝑜 mVar 𝑅)‘∅)(+g‘(mulGrp‘(1𝑜 mPoly 𝑅)))((1𝑜 mVar 𝑅)‘∅)))
3028, 29eqeq12d 2637 . . . . . . . . . . 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 4222 . . . . . . . . . 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 6191 . . . . . . . . . . . . 13 (𝑥 = ∅ → ((1𝑜 mVar 𝑅)‘𝑥) = ((1𝑜 mVar 𝑅)‘∅))
3433oveq2d 6666 . . . . . . . . . . . 12 (𝑥 = ∅ → (((1𝑜 mVar 𝑅)‘𝑏)(+g‘(mulGrp‘(1𝑜 mPoly 𝑅)))((1𝑜 mVar 𝑅)‘𝑥)) = (((1𝑜 mVar 𝑅)‘𝑏)(+g‘(mulGrp‘(1𝑜 mPoly 𝑅)))((1𝑜 mVar 𝑅)‘∅)))
3533oveq1d 6665 . . . . . . . . . . . 12 (𝑥 = ∅ → (((1𝑜 mVar 𝑅)‘𝑥)(+g‘(mulGrp‘(1𝑜 mPoly 𝑅)))((1𝑜 mVar 𝑅)‘𝑏)) = (((1𝑜 mVar 𝑅)‘∅)(+g‘(mulGrp‘(1𝑜 mPoly 𝑅)))((1𝑜 mVar 𝑅)‘𝑏)))
3634, 35eqeq12d 2637 . . . . . . . . . . 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 2986 . . . . . . . . . 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 4222 . . . . . . . . 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 7572 . . . . . . . . 9 1𝑜 = {∅}
4140raleqi 3142 . . . . . . . . 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 2990 . . . . . . . 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 19468 . . . . . 6 (((𝑅 ∈ Ring ∧ 𝐾𝐵) ∧ 𝑎 ∈ (ℕ0𝑚 1𝑜)) → (𝑏 ∈ (ℕ0𝑚 1𝑜) ↦ if(𝑏 = 𝑎, (1r𝑅), (0g𝑅))) = ((mulGrp‘(1𝑜 mPoly 𝑅)) Σg (𝑐 ∈ 1𝑜 ↦ ((𝑎𝑐)(.g‘(mulGrp‘(1𝑜 mPoly 𝑅)))((1𝑜 mVar 𝑅)‘𝑐)))))
45 mpteq1 4737 . . . . . . . . 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 6661 . . . . . . 7 ((mulGrp‘(1𝑜 mPoly 𝑅)) Σg (𝑐 ∈ 1𝑜 ↦ ((𝑎𝑐)(.g‘(mulGrp‘(1𝑜 mPoly 𝑅)))((1𝑜 mVar 𝑅)‘𝑐)))) = ((mulGrp‘(1𝑜 mPoly 𝑅)) Σg (𝑐 ∈ {∅} ↦ ((𝑎𝑐)(.g‘(mulGrp‘(1𝑜 mPoly 𝑅)))((1𝑜 mVar 𝑅)‘𝑐))))
481mplring 19452 . . . . . . . . . . 11 ((1𝑜 ∈ ω ∧ 𝑅 ∈ Ring) → (1𝑜 mPoly 𝑅) ∈ Ring)
495, 48mpan 706 . . . . . . . . . 10 (𝑅 ∈ Ring → (1𝑜 mPoly 𝑅) ∈ Ring)
5020ringmgp 18553 . . . . . . . . . 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 18495 . . . . . . . . . . . . 13 𝐵 = (Base‘(mulGrp‘(1𝑜 mPoly 𝑅)))
5655a1i 11 . . . . . . . . . . . 12 ((𝑅 ∈ Ring ∧ 𝐾𝐵) → 𝐵 = (Base‘(mulGrp‘(1𝑜 mPoly 𝑅))))
57 ply1coe.m . . . . . . . . . . . . . 14 𝑀 = (mulGrp‘𝑃)
5857, 9mgpbas 18495 . . . . . . . . . . . . 13 𝐵 = (Base‘𝑀)
5958a1i 11 . . . . . . . . . . . 12 ((𝑅 ∈ Ring ∧ 𝐾𝐵) → 𝐵 = (Base‘𝑀))
60 ssv 3625 . . . . . . . . . . . . 13 𝐵 ⊆ V
6160a1i 11 . . . . . . . . . . . 12 ((𝑅 ∈ Ring ∧ 𝐾𝐵) → 𝐵 ⊆ V)
62 ovexd 6680 . . . . . . . . . . . 12 (((𝑅 ∈ Ring ∧ 𝐾𝐵) ∧ (𝑎 ∈ V ∧ 𝑏 ∈ V)) → (𝑎(+g‘(mulGrp‘(1𝑜 mPoly 𝑅)))𝑏) ∈ V)
63 eqid 2622 . . . . . . . . . . . . . . . . 17 (.r𝑃) = (.r𝑃)
647, 1, 63ply1mulr 19597 . . . . . . . . . . . . . . . 16 (.r𝑃) = (.r‘(1𝑜 mPoly 𝑅))
6520, 64mgpplusg 18493 . . . . . . . . . . . . . . 15 (.r𝑃) = (+g‘(mulGrp‘(1𝑜 mPoly 𝑅)))
6657, 63mgpplusg 18493 . . . . . . . . . . . . . . 15 (.r𝑃) = (+g𝑀)
6765, 66eqtr3i 2646 . . . . . . . . . . . . . 14 (+g‘(mulGrp‘(1𝑜 mPoly 𝑅))) = (+g𝑀)
6867oveqi 6663 . . . . . . . . . . . . 13 (𝑎(+g‘(mulGrp‘(1𝑜 mPoly 𝑅)))𝑏) = (𝑎(+g𝑀)𝑏)
6968a1i 11 . . . . . . . . . . . 12 (((𝑅 ∈ Ring ∧ 𝐾𝐵) ∧ (𝑎 ∈ V ∧ 𝑏 ∈ V)) → (𝑎(+g‘(mulGrp‘(1𝑜 mPoly 𝑅)))𝑏) = (𝑎(+g𝑀)𝑏))
7021, 54, 56, 59, 61, 62, 69mulgpropd 17584 . . . . . . . . . . 11 ((𝑅 ∈ Ring ∧ 𝐾𝐵) → (.g‘(mulGrp‘(1𝑜 mPoly 𝑅))) = )
7170oveqd 6667 . . . . . . . . . 10 ((𝑅 ∈ Ring ∧ 𝐾𝐵) → ((𝑎‘∅)(.g‘(mulGrp‘(1𝑜 mPoly 𝑅)))𝑋) = ((𝑎‘∅) 𝑋))
7271adantr 481 . . . . . . . . 9 (((𝑅 ∈ Ring ∧ 𝐾𝐵) ∧ 𝑎 ∈ (ℕ0𝑚 1𝑜)) → ((𝑎‘∅)(.g‘(mulGrp‘(1𝑜 mPoly 𝑅)))𝑋) = ((𝑎‘∅) 𝑋))
737ply1ring 19618 . . . . . . . . . . . 12 (𝑅 ∈ Ring → 𝑃 ∈ Ring)
7457ringmgp 18553 . . . . . . . . . . . 12 (𝑃 ∈ Ring → 𝑀 ∈ Mnd)
7573, 74syl 17 . . . . . . . . . . 11 (𝑅 ∈ Ring → 𝑀 ∈ Mnd)
7675ad2antrr 762 . . . . . . . . . 10 (((𝑅 ∈ Ring ∧ 𝐾𝐵) ∧ 𝑎 ∈ (ℕ0𝑚 1𝑜)) → 𝑀 ∈ Mnd)
77 elmapi 7879 . . . . . . . . . . . 12 (𝑎 ∈ (ℕ0𝑚 1𝑜) → 𝑎:1𝑜⟶ℕ0)
78 0lt1o 7584 . . . . . . . . . . . 12 ∅ ∈ 1𝑜
79 ffvelrn 6357 . . . . . . . . . . . 12 ((𝑎:1𝑜⟶ℕ0 ∧ ∅ ∈ 1𝑜) → (𝑎‘∅) ∈ ℕ0)
8077, 78, 79sylancl 694 . . . . . . . . . . 11 (𝑎 ∈ (ℕ0𝑚 1𝑜) → (𝑎‘∅) ∈ ℕ0)
8180adantl 482 . . . . . . . . . 10 (((𝑅 ∈ Ring ∧ 𝐾𝐵) ∧ 𝑎 ∈ (ℕ0𝑚 1𝑜)) → (𝑎‘∅) ∈ ℕ0)
82 ply1coe.x . . . . . . . . . . . 12 𝑋 = (var1𝑅)
8382, 7, 9vr1cl 19587 . . . . . . . . . . 11 (𝑅 ∈ Ring → 𝑋𝐵)
8483ad2antrr 762 . . . . . . . . . 10 (((𝑅 ∈ Ring ∧ 𝐾𝐵) ∧ 𝑎 ∈ (ℕ0𝑚 1𝑜)) → 𝑋𝐵)
8558, 54mulgnn0cl 17558 . . . . . . . . . 10 ((𝑀 ∈ Mnd ∧ (𝑎‘∅) ∈ ℕ0𝑋𝐵) → ((𝑎‘∅) 𝑋) ∈ 𝐵)
8676, 81, 84, 85syl3anc 1326 . . . . . . . . 9 (((𝑅 ∈ Ring ∧ 𝐾𝐵) ∧ 𝑎 ∈ (ℕ0𝑚 1𝑜)) → ((𝑎‘∅) 𝑋) ∈ 𝐵)
8772, 86eqeltrd 2701 . . . . . . . 8 (((𝑅 ∈ Ring ∧ 𝐾𝐵) ∧ 𝑎 ∈ (ℕ0𝑚 1𝑜)) → ((𝑎‘∅)(.g‘(mulGrp‘(1𝑜 mPoly 𝑅)))𝑋) ∈ 𝐵)
88 fveq2 6191 . . . . . . . . . 10 (𝑐 = ∅ → (𝑎𝑐) = (𝑎‘∅))
89 fveq2 6191 . . . . . . . . . . 11 (𝑐 = ∅ → ((1𝑜 mVar 𝑅)‘𝑐) = ((1𝑜 mVar 𝑅)‘∅))
9082vr1val 19562 . . . . . . . . . . 11 𝑋 = ((1𝑜 mVar 𝑅)‘∅)
9189, 90syl6eqr 2674 . . . . . . . . . 10 (𝑐 = ∅ → ((1𝑜 mVar 𝑅)‘𝑐) = 𝑋)
9288, 91oveq12d 6668 . . . . . . . . 9 (𝑐 = ∅ → ((𝑎𝑐)(.g‘(mulGrp‘(1𝑜 mPoly 𝑅)))((1𝑜 mVar 𝑅)‘𝑐)) = ((𝑎‘∅)(.g‘(mulGrp‘(1𝑜 mPoly 𝑅)))𝑋))
9355, 92gsumsn 18354 . . . . . . . 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 1326 . . . . . . 7 (((𝑅 ∈ Ring ∧ 𝐾𝐵) ∧ 𝑎 ∈ (ℕ0𝑚 1𝑜)) → ((mulGrp‘(1𝑜 mPoly 𝑅)) Σg (𝑐 ∈ {∅} ↦ ((𝑎𝑐)(.g‘(mulGrp‘(1𝑜 mPoly 𝑅)))((1𝑜 mVar 𝑅)‘𝑐)))) = ((𝑎‘∅)(.g‘(mulGrp‘(1𝑜 mPoly 𝑅)))𝑋))
9547, 94syl5eq 2668 . . . . . 6 (((𝑅 ∈ Ring ∧ 𝐾𝐵) ∧ 𝑎 ∈ (ℕ0𝑚 1𝑜)) → ((mulGrp‘(1𝑜 mPoly 𝑅)) Σg (𝑐 ∈ 1𝑜 ↦ ((𝑎𝑐)(.g‘(mulGrp‘(1𝑜 mPoly 𝑅)))((1𝑜 mVar 𝑅)‘𝑐)))) = ((𝑎‘∅)(.g‘(mulGrp‘(1𝑜 mPoly 𝑅)))𝑋))
9644, 95, 723eqtrd 2660 . . . . 5 (((𝑅 ∈ Ring ∧ 𝐾𝐵) ∧ 𝑎 ∈ (ℕ0𝑚 1𝑜)) → (𝑏 ∈ (ℕ0𝑚 1𝑜) ↦ if(𝑏 = 𝑎, (1r𝑅), (0g𝑅))) = ((𝑎‘∅) 𝑋))
9718, 96oveq12d 6668 . . . 4 (((𝑅 ∈ Ring ∧ 𝐾𝐵) ∧ 𝑎 ∈ (ℕ0𝑚 1𝑜)) → ((𝐾𝑎) · (𝑏 ∈ (ℕ0𝑚 1𝑜) ↦ if(𝑏 = 𝑎, (1r𝑅), (0g𝑅)))) = ((𝐴‘(𝑎‘∅)) · ((𝑎‘∅) 𝑋)))
9897mpteq2dva 4744 . . 3 ((𝑅 ∈ Ring ∧ 𝐾𝐵) → (𝑎 ∈ (ℕ0𝑚 1𝑜) ↦ ((𝐾𝑎) · (𝑏 ∈ (ℕ0𝑚 1𝑜) ↦ if(𝑏 = 𝑎, (1r𝑅), (0g𝑅))))) = (𝑎 ∈ (ℕ0𝑚 1𝑜) ↦ ((𝐴‘(𝑎‘∅)) · ((𝑎‘∅) 𝑋))))
9998oveq2d 6666 . 2 ((𝑅 ∈ Ring ∧ 𝐾𝐵) → ((1𝑜 mPoly 𝑅) Σg (𝑎 ∈ (ℕ0𝑚 1𝑜) ↦ ((𝐾𝑎) · (𝑏 ∈ (ℕ0𝑚 1𝑜) ↦ if(𝑏 = 𝑎, (1r𝑅), (0g𝑅)))))) = ((1𝑜 mPoly 𝑅) Σg (𝑎 ∈ (ℕ0𝑚 1𝑜) ↦ ((𝐴‘(𝑎‘∅)) · ((𝑎‘∅) 𝑋)))))
100 nn0ex 11298 . . . . . 6 0 ∈ V
101100mptex 6486 . . . . 5 (𝑘 ∈ ℕ0 ↦ ((𝐴𝑘) · (𝑘 𝑋))) ∈ V
102101a1i 11 . . . 4 ((𝑅 ∈ Ring ∧ 𝐾𝐵) → (𝑘 ∈ ℕ0 ↦ ((𝐴𝑘) · (𝑘 𝑋))) ∈ V)
103 fvex 6201 . . . . . 6 (Poly1𝑅) ∈ V
1047, 103eqeltri 2697 . . . . 5 𝑃 ∈ V
105104a1i 11 . . . 4 ((𝑅 ∈ Ring ∧ 𝐾𝐵) → 𝑃 ∈ V)
106 ovexd 6680 . . . 4 ((𝑅 ∈ Ring ∧ 𝐾𝐵) → (1𝑜 mPoly 𝑅) ∈ V)
1079, 10eqtr3i 2646 . . . . 5 (Base‘𝑃) = (Base‘(1𝑜 mPoly 𝑅))
108107a1i 11 . . . 4 ((𝑅 ∈ Ring ∧ 𝐾𝐵) → (Base‘𝑃) = (Base‘(1𝑜 mPoly 𝑅)))
109 eqid 2622 . . . . . 6 (+g𝑃) = (+g𝑃)
1107, 1, 109ply1plusg 19595 . . . . 5 (+g𝑃) = (+g‘(1𝑜 mPoly 𝑅))
111110a1i 11 . . . 4 ((𝑅 ∈ Ring ∧ 𝐾𝐵) → (+g𝑃) = (+g‘(1𝑜 mPoly 𝑅)))
112102, 105, 106, 108, 111gsumpropd 17272 . . 3 ((𝑅 ∈ Ring ∧ 𝐾𝐵) → (𝑃 Σg (𝑘 ∈ ℕ0 ↦ ((𝐴𝑘) · (𝑘 𝑋)))) = ((1𝑜 mPoly 𝑅) Σg (𝑘 ∈ ℕ0 ↦ ((𝐴𝑘) · (𝑘 𝑋)))))
113 eqid 2622 . . . . 5 (0g𝑃) = (0g𝑃)
1141, 7, 113ply1mpl0 19625 . . . 4 (0g𝑃) = (0g‘(1𝑜 mPoly 𝑅))
1151mpllmod 19451 . . . . . 6 ((1𝑜 ∈ ω ∧ 𝑅 ∈ Ring) → (1𝑜 mPoly 𝑅) ∈ LMod)
1165, 13, 115sylancr 695 . . . . 5 ((𝑅 ∈ Ring ∧ 𝐾𝐵) → (1𝑜 mPoly 𝑅) ∈ LMod)
117 lmodcmn 18911 . . . . 5 ((1𝑜 mPoly 𝑅) ∈ LMod → (1𝑜 mPoly 𝑅) ∈ CMnd)
118116, 117syl 17 . . . 4 ((𝑅 ∈ Ring ∧ 𝐾𝐵) → (1𝑜 mPoly 𝑅) ∈ CMnd)
119100a1i 11 . . . 4 ((𝑅 ∈ Ring ∧ 𝐾𝐵) → ℕ0 ∈ V)
1207ply1lmod 19622 . . . . . . 7 (𝑅 ∈ Ring → 𝑃 ∈ LMod)
121120ad2antrr 762 . . . . . 6 (((𝑅 ∈ Ring ∧ 𝐾𝐵) ∧ 𝑘 ∈ ℕ0) → 𝑃 ∈ LMod)
122 eqid 2622 . . . . . . . . . 10 (Base‘𝑅) = (Base‘𝑅)
12316, 9, 7, 122coe1f 19581 . . . . . . . . 9 (𝐾𝐵𝐴:ℕ0⟶(Base‘𝑅))
124123adantl 482 . . . . . . . 8 ((𝑅 ∈ Ring ∧ 𝐾𝐵) → 𝐴:ℕ0⟶(Base‘𝑅))
125124ffvelrnda 6359 . . . . . . 7 (((𝑅 ∈ Ring ∧ 𝐾𝐵) ∧ 𝑘 ∈ ℕ0) → (𝐴𝑘) ∈ (Base‘𝑅))
1267ply1sca 19623 . . . . . . . . . 10 (𝑅 ∈ Ring → 𝑅 = (Scalar‘𝑃))
127126eqcomd 2628 . . . . . . . . 9 (𝑅 ∈ Ring → (Scalar‘𝑃) = 𝑅)
128127ad2antrr 762 . . . . . . . 8 (((𝑅 ∈ Ring ∧ 𝐾𝐵) ∧ 𝑘 ∈ ℕ0) → (Scalar‘𝑃) = 𝑅)
129128fveq2d 6195 . . . . . . 7 (((𝑅 ∈ Ring ∧ 𝐾𝐵) ∧ 𝑘 ∈ ℕ0) → (Base‘(Scalar‘𝑃)) = (Base‘𝑅))
130125, 129eleqtrrd 2704 . . . . . 6 (((𝑅 ∈ Ring ∧ 𝐾𝐵) ∧ 𝑘 ∈ ℕ0) → (𝐴𝑘) ∈ (Base‘(Scalar‘𝑃)))
13175ad2antrr 762 . . . . . . 7 (((𝑅 ∈ Ring ∧ 𝐾𝐵) ∧ 𝑘 ∈ ℕ0) → 𝑀 ∈ Mnd)
132 simpr 477 . . . . . . 7 (((𝑅 ∈ Ring ∧ 𝐾𝐵) ∧ 𝑘 ∈ ℕ0) → 𝑘 ∈ ℕ0)
13383ad2antrr 762 . . . . . . 7 (((𝑅 ∈ Ring ∧ 𝐾𝐵) ∧ 𝑘 ∈ ℕ0) → 𝑋𝐵)
13458, 54mulgnn0cl 17558 . . . . . . 7 ((𝑀 ∈ Mnd ∧ 𝑘 ∈ ℕ0𝑋𝐵) → (𝑘 𝑋) ∈ 𝐵)
135131, 132, 133, 134syl3anc 1326 . . . . . 6 (((𝑅 ∈ Ring ∧ 𝐾𝐵) ∧ 𝑘 ∈ ℕ0) → (𝑘 𝑋) ∈ 𝐵)
136 eqid 2622 . . . . . . 7 (Scalar‘𝑃) = (Scalar‘𝑃)
137 eqid 2622 . . . . . . 7 (Base‘(Scalar‘𝑃)) = (Base‘(Scalar‘𝑃))
1389, 136, 11, 137lmodvscl 18880 . . . . . 6 ((𝑃 ∈ LMod ∧ (𝐴𝑘) ∈ (Base‘(Scalar‘𝑃)) ∧ (𝑘 𝑋) ∈ 𝐵) → ((𝐴𝑘) · (𝑘 𝑋)) ∈ 𝐵)
139121, 130, 135, 138syl3anc 1326 . . . . 5 (((𝑅 ∈ Ring ∧ 𝐾𝐵) ∧ 𝑘 ∈ ℕ0) → ((𝐴𝑘) · (𝑘 𝑋)) ∈ 𝐵)
140 eqid 2622 . . . . 5 (𝑘 ∈ ℕ0 ↦ ((𝐴𝑘) · (𝑘 𝑋))) = (𝑘 ∈ ℕ0 ↦ ((𝐴𝑘) · (𝑘 𝑋)))
141139, 140fmptd 6385 . . . 4 ((𝑅 ∈ Ring ∧ 𝐾𝐵) → (𝑘 ∈ ℕ0 ↦ ((𝐴𝑘) · (𝑘 𝑋))):ℕ0𝐵)
1427, 82, 9, 11, 57, 54, 16ply1coefsupp 19665 . . . 4 ((𝑅 ∈ Ring ∧ 𝐾𝐵) → (𝑘 ∈ ℕ0 ↦ ((𝐴𝑘) · (𝑘 𝑋))) finSupp (0g𝑃))
143 eqid 2622 . . . . . 6 (𝑎 ∈ (ℕ0𝑚 1𝑜) ↦ (𝑎‘∅)) = (𝑎 ∈ (ℕ0𝑚 1𝑜) ↦ (𝑎‘∅))
14440, 100, 26, 143mapsnf1o2 7905 . . . . 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 18317 . . 3 ((𝑅 ∈ Ring ∧ 𝐾𝐵) → ((1𝑜 mPoly 𝑅) Σg (𝑘 ∈ ℕ0 ↦ ((𝐴𝑘) · (𝑘 𝑋)))) = ((1𝑜 mPoly 𝑅) Σg ((𝑘 ∈ ℕ0 ↦ ((𝐴𝑘) · (𝑘 𝑋))) ∘ (𝑎 ∈ (ℕ0𝑚 1𝑜) ↦ (𝑎‘∅)))))
147 eqidd 2623 . . . . 5 ((𝑅 ∈ Ring ∧ 𝐾𝐵) → (𝑎 ∈ (ℕ0𝑚 1𝑜) ↦ (𝑎‘∅)) = (𝑎 ∈ (ℕ0𝑚 1𝑜) ↦ (𝑎‘∅)))
148 eqidd 2623 . . . . 5 ((𝑅 ∈ Ring ∧ 𝐾𝐵) → (𝑘 ∈ ℕ0 ↦ ((𝐴𝑘) · (𝑘 𝑋))) = (𝑘 ∈ ℕ0 ↦ ((𝐴𝑘) · (𝑘 𝑋))))
149 fveq2 6191 . . . . . 6 (𝑘 = (𝑎‘∅) → (𝐴𝑘) = (𝐴‘(𝑎‘∅)))
150 oveq1 6657 . . . . . 6 (𝑘 = (𝑎‘∅) → (𝑘 𝑋) = ((𝑎‘∅) 𝑋))
151149, 150oveq12d 6668 . . . . 5 (𝑘 = (𝑎‘∅) → ((𝐴𝑘) · (𝑘 𝑋)) = ((𝐴‘(𝑎‘∅)) · ((𝑎‘∅) 𝑋)))
15281, 147, 148, 151fmptco 6396 . . . 4 ((𝑅 ∈ Ring ∧ 𝐾𝐵) → ((𝑘 ∈ ℕ0 ↦ ((𝐴𝑘) · (𝑘 𝑋))) ∘ (𝑎 ∈ (ℕ0𝑚 1𝑜) ↦ (𝑎‘∅))) = (𝑎 ∈ (ℕ0𝑚 1𝑜) ↦ ((𝐴‘(𝑎‘∅)) · ((𝑎‘∅) 𝑋))))
153152oveq2d 6666 . . 3 ((𝑅 ∈ Ring ∧ 𝐾𝐵) → ((1𝑜 mPoly 𝑅) Σg ((𝑘 ∈ ℕ0 ↦ ((𝐴𝑘) · (𝑘 𝑋))) ∘ (𝑎 ∈ (ℕ0𝑚 1𝑜) ↦ (𝑎‘∅)))) = ((1𝑜 mPoly 𝑅) Σg (𝑎 ∈ (ℕ0𝑚 1𝑜) ↦ ((𝐴‘(𝑎‘∅)) · ((𝑎‘∅) 𝑋)))))
154112, 146, 1533eqtrrd 2661 . 2 ((𝑅 ∈ Ring ∧ 𝐾𝐵) → ((1𝑜 mPoly 𝑅) Σg (𝑎 ∈ (ℕ0𝑚 1𝑜) ↦ ((𝐴‘(𝑎‘∅)) · ((𝑎‘∅) 𝑋)))) = (𝑃 Σg (𝑘 ∈ ℕ0 ↦ ((𝐴𝑘) · (𝑘 𝑋)))))
15515, 99, 1543eqtrd 2660 1 ((𝑅 ∈ Ring ∧ 𝐾𝐵) → 𝐾 = (𝑃 Σg (𝑘 ∈ ℕ0 ↦ ((𝐴𝑘) · (𝑘 𝑋)))))
Colors of variables: wff setvar class
Syntax hints:  wi 4  wa 384   = wceq 1483  wcel 1990  wral 2912  Vcvv 3200  wss 3574  c0 3915  ifcif 4086  {csn 4177  cmpt 4729  ccom 5118  wf 5884  1-1-ontowf1o 5887  cfv 5888  (class class class)co 6650  ωcom 7065  1𝑜c1o 7553  𝑚 cmap 7857  0cn0 11292  Basecbs 15857  +gcplusg 15941  .rcmulr 15942  Scalarcsca 15944   ·𝑠 cvsca 15945  0gc0g 16100   Σg cgsu 16101  Mndcmnd 17294  .gcmg 17540  CMndccmn 18193  mulGrpcmgp 18489  1rcur 18501  Ringcrg 18547  LModclmod 18863   mVar cmvr 19352   mPoly cmpl 19353  PwSer1cps1 19545  var1cv1 19546  Poly1cpl1 19547  coe1cco1 19548
This theorem was proved from axioms:  ax-mp 5  ax-1 6  ax-2 7  ax-3 8  ax-gen 1722  ax-4 1737  ax-5 1839  ax-6 1888  ax-7 1935  ax-8 1992  ax-9 1999  ax-10 2019  ax-11 2034  ax-12 2047  ax-13 2246  ax-ext 2602  ax-rep 4771  ax-sep 4781  ax-nul 4789  ax-pow 4843  ax-pr 4906  ax-un 6949  ax-inf2 8538  ax-cnex 9992  ax-resscn 9993  ax-1cn 9994  ax-icn 9995  ax-addcl 9996  ax-addrcl 9997  ax-mulcl 9998  ax-mulrcl 9999  ax-mulcom 10000  ax-addass 10001  ax-mulass 10002  ax-distr 10003  ax-i2m1 10004  ax-1ne0 10005  ax-1rid 10006  ax-rnegex 10007  ax-rrecex 10008  ax-cnre 10009  ax-pre-lttri 10010  ax-pre-lttrn 10011  ax-pre-ltadd 10012  ax-pre-mulgt0 10013
This theorem depends on definitions:  df-bi 197  df-or 385  df-an 386  df-3or 1038  df-3an 1039  df-tru 1486  df-fal 1489  df-ex 1705  df-nf 1710  df-sb 1881  df-eu 2474  df-mo 2475  df-clab 2609  df-cleq 2615  df-clel 2618  df-nfc 2753  df-ne 2795  df-nel 2898  df-ral 2917  df-rex 2918  df-reu 2919  df-rmo 2920  df-rab 2921  df-v 3202  df-sbc 3436  df-csb 3534  df-dif 3577  df-un 3579  df-in 3581  df-ss 3588  df-pss 3590  df-nul 3916  df-if 4087  df-pw 4160  df-sn 4178  df-pr 4180  df-tp 4182  df-op 4184  df-uni 4437  df-int 4476  df-iun 4522  df-iin 4523  df-br 4654  df-opab 4713  df-mpt 4730  df-tr 4753  df-id 5024  df-eprel 5029  df-po 5035  df-so 5036  df-fr 5073  df-se 5074  df-we 5075  df-xp 5120  df-rel 5121  df-cnv 5122  df-co 5123  df-dm 5124  df-rn 5125  df-res 5126  df-ima 5127  df-pred 5680  df-ord 5726  df-on 5727  df-lim 5728  df-suc 5729  df-iota 5851  df-fun 5890  df-fn 5891  df-f 5892  df-f1 5893  df-fo 5894  df-f1o 5895  df-fv 5896  df-isom 5897  df-riota 6611  df-ov 6653  df-oprab 6654  df-mpt2 6655  df-of 6897  df-ofr 6898  df-om 7066  df-1st 7168  df-2nd 7169  df-supp 7296  df-wrecs 7407  df-recs 7468  df-rdg 7506  df-1o 7560  df-2o 7561  df-oadd 7564  df-er 7742  df-map 7859  df-pm 7860  df-ixp 7909  df-en 7956  df-dom 7957  df-sdom 7958  df-fin 7959  df-fsupp 8276  df-oi 8415  df-card 8765  df-pnf 10076  df-mnf 10077  df-xr 10078  df-ltxr 10079  df-le 10080  df-sub 10268  df-neg 10269  df-nn 11021  df-2 11079  df-3 11080  df-4 11081  df-5 11082  df-6 11083  df-7 11084  df-8 11085  df-9 11086  df-n0 11293  df-z 11378  df-dec 11494  df-uz 11688  df-fz 12327  df-fzo 12466  df-seq 12802  df-hash 13118  df-struct 15859  df-ndx 15860  df-slot 15861  df-base 15863  df-sets 15864  df-ress 15865  df-plusg 15954  df-mulr 15955  df-sca 15957  df-vsca 15958  df-tset 15960  df-ple 15961  df-0g 16102  df-gsum 16103  df-mre 16246  df-mrc 16247  df-acs 16249  df-mgm 17242  df-sgrp 17284  df-mnd 17295  df-mhm 17335  df-submnd 17336  df-grp 17425  df-minusg 17426  df-sbg 17427  df-mulg 17541  df-subg 17591  df-ghm 17658  df-cntz 17750  df-cmn 18195  df-abl 18196  df-mgp 18490  df-ur 18502  df-srg 18506  df-ring 18549  df-subrg 18778  df-lmod 18865  df-lss 18933  df-psr 19356  df-mvr 19357  df-mpl 19358  df-opsr 19360  df-psr1 19550  df-vr1 19551  df-ply1 19552  df-coe1 19553
This theorem is referenced by:  eqcoe1ply1eq  19667  pmatcollpw1lem2  20580  mp2pm2mp  20616  plypf1  23968
  Copyright terms: Public domain W3C validator