Users' Mathboxes Mathbox for Alexander van der Vekens < Previous   Next >
Nearby theorems
Mirrors  >  Home  >  MPE Home  >  Th. List  >   Mathboxes  >  rhmsubcALTVlem4 Structured version   Visualization version   GIF version

Theorem rhmsubcALTVlem4 46995
Description: Lemma 4 for rhmsubcALTV 46996. (Contributed by AV, 2-Mar-2020.) (New usage is discouraged.)
Hypotheses
Ref Expression
rngcrescrhmALTV.u (πœ‘ β†’ π‘ˆ ∈ 𝑉)
rngcrescrhmALTV.c 𝐢 = (RngCatALTVβ€˜π‘ˆ)
rngcrescrhmALTV.r (πœ‘ β†’ 𝑅 = (Ring ∩ π‘ˆ))
rngcrescrhmALTV.h 𝐻 = ( RingHom β†Ύ (𝑅 Γ— 𝑅))
Assertion
Ref Expression
rhmsubcALTVlem4 ((((πœ‘ ∧ π‘₯ ∈ 𝑅) ∧ (𝑦 ∈ 𝑅 ∧ 𝑧 ∈ 𝑅)) ∧ (𝑓 ∈ (π‘₯𝐻𝑦) ∧ 𝑔 ∈ (𝑦𝐻𝑧))) β†’ (𝑔(⟨π‘₯, π‘¦βŸ©(compβ€˜(RngCatALTVβ€˜π‘ˆ))𝑧)𝑓) ∈ (π‘₯𝐻𝑧))
Distinct variable groups:   π‘₯,𝑅,𝑦   𝑦,π‘ˆ   𝑦,𝑉   πœ‘,𝑦   𝑧,𝑅,π‘₯,𝑦   πœ‘,π‘₯
Allowed substitution hints:   πœ‘(𝑧,𝑓,𝑔)   𝐢(π‘₯,𝑦,𝑧,𝑓,𝑔)   𝑅(𝑓,𝑔)   π‘ˆ(π‘₯,𝑧,𝑓,𝑔)   𝐻(π‘₯,𝑦,𝑧,𝑓,𝑔)   𝑉(π‘₯,𝑧,𝑓,𝑔)

Proof of Theorem rhmsubcALTVlem4
StepHypRef Expression
1 simpl 483 . . . . . . . 8 ((πœ‘ ∧ π‘₯ ∈ 𝑅) β†’ πœ‘)
21adantr 481 . . . . . . 7 (((πœ‘ ∧ π‘₯ ∈ 𝑅) ∧ (𝑦 ∈ 𝑅 ∧ 𝑧 ∈ 𝑅)) β†’ πœ‘)
3 simpr 485 . . . . . . . 8 ((πœ‘ ∧ π‘₯ ∈ 𝑅) β†’ π‘₯ ∈ 𝑅)
43adantr 481 . . . . . . 7 (((πœ‘ ∧ π‘₯ ∈ 𝑅) ∧ (𝑦 ∈ 𝑅 ∧ 𝑧 ∈ 𝑅)) β†’ π‘₯ ∈ 𝑅)
5 simpl 483 . . . . . . . 8 ((𝑦 ∈ 𝑅 ∧ 𝑧 ∈ 𝑅) β†’ 𝑦 ∈ 𝑅)
65adantl 482 . . . . . . 7 (((πœ‘ ∧ π‘₯ ∈ 𝑅) ∧ (𝑦 ∈ 𝑅 ∧ 𝑧 ∈ 𝑅)) β†’ 𝑦 ∈ 𝑅)
7 rngcrescrhmALTV.u . . . . . . . 8 (πœ‘ β†’ π‘ˆ ∈ 𝑉)
8 rngcrescrhmALTV.c . . . . . . . 8 𝐢 = (RngCatALTVβ€˜π‘ˆ)
9 rngcrescrhmALTV.r . . . . . . . 8 (πœ‘ β†’ 𝑅 = (Ring ∩ π‘ˆ))
10 rngcrescrhmALTV.h . . . . . . . 8 𝐻 = ( RingHom β†Ύ (𝑅 Γ— 𝑅))
117, 8, 9, 10rhmsubcALTVlem2 46993 . . . . . . 7 ((πœ‘ ∧ π‘₯ ∈ 𝑅 ∧ 𝑦 ∈ 𝑅) β†’ (π‘₯𝐻𝑦) = (π‘₯ RingHom 𝑦))
122, 4, 6, 11syl3anc 1371 . . . . . 6 (((πœ‘ ∧ π‘₯ ∈ 𝑅) ∧ (𝑦 ∈ 𝑅 ∧ 𝑧 ∈ 𝑅)) β†’ (π‘₯𝐻𝑦) = (π‘₯ RingHom 𝑦))
1312eleq2d 2819 . . . . 5 (((πœ‘ ∧ π‘₯ ∈ 𝑅) ∧ (𝑦 ∈ 𝑅 ∧ 𝑧 ∈ 𝑅)) β†’ (𝑓 ∈ (π‘₯𝐻𝑦) ↔ 𝑓 ∈ (π‘₯ RingHom 𝑦)))
14 simpr 485 . . . . . . . 8 ((𝑦 ∈ 𝑅 ∧ 𝑧 ∈ 𝑅) β†’ 𝑧 ∈ 𝑅)
1514adantl 482 . . . . . . 7 (((πœ‘ ∧ π‘₯ ∈ 𝑅) ∧ (𝑦 ∈ 𝑅 ∧ 𝑧 ∈ 𝑅)) β†’ 𝑧 ∈ 𝑅)
167, 8, 9, 10rhmsubcALTVlem2 46993 . . . . . . 7 ((πœ‘ ∧ 𝑦 ∈ 𝑅 ∧ 𝑧 ∈ 𝑅) β†’ (𝑦𝐻𝑧) = (𝑦 RingHom 𝑧))
172, 6, 15, 16syl3anc 1371 . . . . . 6 (((πœ‘ ∧ π‘₯ ∈ 𝑅) ∧ (𝑦 ∈ 𝑅 ∧ 𝑧 ∈ 𝑅)) β†’ (𝑦𝐻𝑧) = (𝑦 RingHom 𝑧))
1817eleq2d 2819 . . . . 5 (((πœ‘ ∧ π‘₯ ∈ 𝑅) ∧ (𝑦 ∈ 𝑅 ∧ 𝑧 ∈ 𝑅)) β†’ (𝑔 ∈ (𝑦𝐻𝑧) ↔ 𝑔 ∈ (𝑦 RingHom 𝑧)))
1913, 18anbi12d 631 . . . 4 (((πœ‘ ∧ π‘₯ ∈ 𝑅) ∧ (𝑦 ∈ 𝑅 ∧ 𝑧 ∈ 𝑅)) β†’ ((𝑓 ∈ (π‘₯𝐻𝑦) ∧ 𝑔 ∈ (𝑦𝐻𝑧)) ↔ (𝑓 ∈ (π‘₯ RingHom 𝑦) ∧ 𝑔 ∈ (𝑦 RingHom 𝑧))))
20 rhmco 20275 . . . . 5 ((𝑔 ∈ (𝑦 RingHom 𝑧) ∧ 𝑓 ∈ (π‘₯ RingHom 𝑦)) β†’ (𝑔 ∘ 𝑓) ∈ (π‘₯ RingHom 𝑧))
2120ancoms 459 . . . 4 ((𝑓 ∈ (π‘₯ RingHom 𝑦) ∧ 𝑔 ∈ (𝑦 RingHom 𝑧)) β†’ (𝑔 ∘ 𝑓) ∈ (π‘₯ RingHom 𝑧))
2219, 21syl6bi 252 . . 3 (((πœ‘ ∧ π‘₯ ∈ 𝑅) ∧ (𝑦 ∈ 𝑅 ∧ 𝑧 ∈ 𝑅)) β†’ ((𝑓 ∈ (π‘₯𝐻𝑦) ∧ 𝑔 ∈ (𝑦𝐻𝑧)) β†’ (𝑔 ∘ 𝑓) ∈ (π‘₯ RingHom 𝑧)))
2322imp 407 . 2 ((((πœ‘ ∧ π‘₯ ∈ 𝑅) ∧ (𝑦 ∈ 𝑅 ∧ 𝑧 ∈ 𝑅)) ∧ (𝑓 ∈ (π‘₯𝐻𝑦) ∧ 𝑔 ∈ (𝑦𝐻𝑧))) β†’ (𝑔 ∘ 𝑓) ∈ (π‘₯ RingHom 𝑧))
24 eqid 2732 . . 3 (RngCatALTVβ€˜π‘ˆ) = (RngCatALTVβ€˜π‘ˆ)
25 eqid 2732 . . 3 (Baseβ€˜(RngCatALTVβ€˜π‘ˆ)) = (Baseβ€˜(RngCatALTVβ€˜π‘ˆ))
267ad3antrrr 728 . . 3 ((((πœ‘ ∧ π‘₯ ∈ 𝑅) ∧ (𝑦 ∈ 𝑅 ∧ 𝑧 ∈ 𝑅)) ∧ (𝑓 ∈ (π‘₯𝐻𝑦) ∧ 𝑔 ∈ (𝑦𝐻𝑧))) β†’ π‘ˆ ∈ 𝑉)
27 eqid 2732 . . 3 (compβ€˜(RngCatALTVβ€˜π‘ˆ)) = (compβ€˜(RngCatALTVβ€˜π‘ˆ))
28 incom 4201 . . . . . . . 8 (Ring ∩ π‘ˆ) = (π‘ˆ ∩ Ring)
29 ringrng 46645 . . . . . . . . . . 11 (π‘₯ ∈ Ring β†’ π‘₯ ∈ Rng)
3029a1i 11 . . . . . . . . . 10 (πœ‘ β†’ (π‘₯ ∈ Ring β†’ π‘₯ ∈ Rng))
3130ssrdv 3988 . . . . . . . . 9 (πœ‘ β†’ Ring βŠ† Rng)
32 sslin 4234 . . . . . . . . 9 (Ring βŠ† Rng β†’ (π‘ˆ ∩ Ring) βŠ† (π‘ˆ ∩ Rng))
3331, 32syl 17 . . . . . . . 8 (πœ‘ β†’ (π‘ˆ ∩ Ring) βŠ† (π‘ˆ ∩ Rng))
3428, 33eqsstrid 4030 . . . . . . 7 (πœ‘ β†’ (Ring ∩ π‘ˆ) βŠ† (π‘ˆ ∩ Rng))
3524, 25, 7rngcbasALTV 46871 . . . . . . 7 (πœ‘ β†’ (Baseβ€˜(RngCatALTVβ€˜π‘ˆ)) = (π‘ˆ ∩ Rng))
3634, 9, 353sstr4d 4029 . . . . . 6 (πœ‘ β†’ 𝑅 βŠ† (Baseβ€˜(RngCatALTVβ€˜π‘ˆ)))
3736sselda 3982 . . . . 5 ((πœ‘ ∧ π‘₯ ∈ 𝑅) β†’ π‘₯ ∈ (Baseβ€˜(RngCatALTVβ€˜π‘ˆ)))
3837adantr 481 . . . 4 (((πœ‘ ∧ π‘₯ ∈ 𝑅) ∧ (𝑦 ∈ 𝑅 ∧ 𝑧 ∈ 𝑅)) β†’ π‘₯ ∈ (Baseβ€˜(RngCatALTVβ€˜π‘ˆ)))
3938adantr 481 . . 3 ((((πœ‘ ∧ π‘₯ ∈ 𝑅) ∧ (𝑦 ∈ 𝑅 ∧ 𝑧 ∈ 𝑅)) ∧ (𝑓 ∈ (π‘₯𝐻𝑦) ∧ 𝑔 ∈ (𝑦𝐻𝑧))) β†’ π‘₯ ∈ (Baseβ€˜(RngCatALTVβ€˜π‘ˆ)))
4036sseld 3981 . . . . . . . 8 (πœ‘ β†’ (𝑦 ∈ 𝑅 β†’ 𝑦 ∈ (Baseβ€˜(RngCatALTVβ€˜π‘ˆ))))
4140adantr 481 . . . . . . 7 ((πœ‘ ∧ π‘₯ ∈ 𝑅) β†’ (𝑦 ∈ 𝑅 β†’ 𝑦 ∈ (Baseβ€˜(RngCatALTVβ€˜π‘ˆ))))
4241com12 32 . . . . . 6 (𝑦 ∈ 𝑅 β†’ ((πœ‘ ∧ π‘₯ ∈ 𝑅) β†’ 𝑦 ∈ (Baseβ€˜(RngCatALTVβ€˜π‘ˆ))))
4342adantr 481 . . . . 5 ((𝑦 ∈ 𝑅 ∧ 𝑧 ∈ 𝑅) β†’ ((πœ‘ ∧ π‘₯ ∈ 𝑅) β†’ 𝑦 ∈ (Baseβ€˜(RngCatALTVβ€˜π‘ˆ))))
4443impcom 408 . . . 4 (((πœ‘ ∧ π‘₯ ∈ 𝑅) ∧ (𝑦 ∈ 𝑅 ∧ 𝑧 ∈ 𝑅)) β†’ 𝑦 ∈ (Baseβ€˜(RngCatALTVβ€˜π‘ˆ)))
4544adantr 481 . . 3 ((((πœ‘ ∧ π‘₯ ∈ 𝑅) ∧ (𝑦 ∈ 𝑅 ∧ 𝑧 ∈ 𝑅)) ∧ (𝑓 ∈ (π‘₯𝐻𝑦) ∧ 𝑔 ∈ (𝑦𝐻𝑧))) β†’ 𝑦 ∈ (Baseβ€˜(RngCatALTVβ€˜π‘ˆ)))
4636sseld 3981 . . . . . . 7 (πœ‘ β†’ (𝑧 ∈ 𝑅 β†’ 𝑧 ∈ (Baseβ€˜(RngCatALTVβ€˜π‘ˆ))))
4746adantr 481 . . . . . 6 ((πœ‘ ∧ π‘₯ ∈ 𝑅) β†’ (𝑧 ∈ 𝑅 β†’ 𝑧 ∈ (Baseβ€˜(RngCatALTVβ€˜π‘ˆ))))
4847adantld 491 . . . . 5 ((πœ‘ ∧ π‘₯ ∈ 𝑅) β†’ ((𝑦 ∈ 𝑅 ∧ 𝑧 ∈ 𝑅) β†’ 𝑧 ∈ (Baseβ€˜(RngCatALTVβ€˜π‘ˆ))))
4948imp 407 . . . 4 (((πœ‘ ∧ π‘₯ ∈ 𝑅) ∧ (𝑦 ∈ 𝑅 ∧ 𝑧 ∈ 𝑅)) β†’ 𝑧 ∈ (Baseβ€˜(RngCatALTVβ€˜π‘ˆ)))
5049adantr 481 . . 3 ((((πœ‘ ∧ π‘₯ ∈ 𝑅) ∧ (𝑦 ∈ 𝑅 ∧ 𝑧 ∈ 𝑅)) ∧ (𝑓 ∈ (π‘₯𝐻𝑦) ∧ 𝑔 ∈ (𝑦𝐻𝑧))) β†’ 𝑧 ∈ (Baseβ€˜(RngCatALTVβ€˜π‘ˆ)))
51 rhmisrnghm 46713 . . . . . . 7 (𝑓 ∈ (π‘₯ RingHom 𝑦) β†’ 𝑓 ∈ (π‘₯ RngHomo 𝑦))
5213, 51syl6bi 252 . . . . . 6 (((πœ‘ ∧ π‘₯ ∈ 𝑅) ∧ (𝑦 ∈ 𝑅 ∧ 𝑧 ∈ 𝑅)) β†’ (𝑓 ∈ (π‘₯𝐻𝑦) β†’ 𝑓 ∈ (π‘₯ RngHomo 𝑦)))
5352com12 32 . . . . 5 (𝑓 ∈ (π‘₯𝐻𝑦) β†’ (((πœ‘ ∧ π‘₯ ∈ 𝑅) ∧ (𝑦 ∈ 𝑅 ∧ 𝑧 ∈ 𝑅)) β†’ 𝑓 ∈ (π‘₯ RngHomo 𝑦)))
5453adantr 481 . . . 4 ((𝑓 ∈ (π‘₯𝐻𝑦) ∧ 𝑔 ∈ (𝑦𝐻𝑧)) β†’ (((πœ‘ ∧ π‘₯ ∈ 𝑅) ∧ (𝑦 ∈ 𝑅 ∧ 𝑧 ∈ 𝑅)) β†’ 𝑓 ∈ (π‘₯ RngHomo 𝑦)))
5554impcom 408 . . 3 ((((πœ‘ ∧ π‘₯ ∈ 𝑅) ∧ (𝑦 ∈ 𝑅 ∧ 𝑧 ∈ 𝑅)) ∧ (𝑓 ∈ (π‘₯𝐻𝑦) ∧ 𝑔 ∈ (𝑦𝐻𝑧))) β†’ 𝑓 ∈ (π‘₯ RngHomo 𝑦))
56 rhmisrnghm 46713 . . . . . 6 (𝑔 ∈ (𝑦 RingHom 𝑧) β†’ 𝑔 ∈ (𝑦 RngHomo 𝑧))
5718, 56syl6bi 252 . . . . 5 (((πœ‘ ∧ π‘₯ ∈ 𝑅) ∧ (𝑦 ∈ 𝑅 ∧ 𝑧 ∈ 𝑅)) β†’ (𝑔 ∈ (𝑦𝐻𝑧) β†’ 𝑔 ∈ (𝑦 RngHomo 𝑧)))
5857adantld 491 . . . 4 (((πœ‘ ∧ π‘₯ ∈ 𝑅) ∧ (𝑦 ∈ 𝑅 ∧ 𝑧 ∈ 𝑅)) β†’ ((𝑓 ∈ (π‘₯𝐻𝑦) ∧ 𝑔 ∈ (𝑦𝐻𝑧)) β†’ 𝑔 ∈ (𝑦 RngHomo 𝑧)))
5958imp 407 . . 3 ((((πœ‘ ∧ π‘₯ ∈ 𝑅) ∧ (𝑦 ∈ 𝑅 ∧ 𝑧 ∈ 𝑅)) ∧ (𝑓 ∈ (π‘₯𝐻𝑦) ∧ 𝑔 ∈ (𝑦𝐻𝑧))) β†’ 𝑔 ∈ (𝑦 RngHomo 𝑧))
6024, 25, 26, 27, 39, 45, 50, 55, 59rngccoALTV 46876 . 2 ((((πœ‘ ∧ π‘₯ ∈ 𝑅) ∧ (𝑦 ∈ 𝑅 ∧ 𝑧 ∈ 𝑅)) ∧ (𝑓 ∈ (π‘₯𝐻𝑦) ∧ 𝑔 ∈ (𝑦𝐻𝑧))) β†’ (𝑔(⟨π‘₯, π‘¦βŸ©(compβ€˜(RngCatALTVβ€˜π‘ˆ))𝑧)𝑓) = (𝑔 ∘ 𝑓))
617, 8, 9, 10rhmsubcALTVlem2 46993 . . . 4 ((πœ‘ ∧ π‘₯ ∈ 𝑅 ∧ 𝑧 ∈ 𝑅) β†’ (π‘₯𝐻𝑧) = (π‘₯ RingHom 𝑧))
622, 4, 15, 61syl3anc 1371 . . 3 (((πœ‘ ∧ π‘₯ ∈ 𝑅) ∧ (𝑦 ∈ 𝑅 ∧ 𝑧 ∈ 𝑅)) β†’ (π‘₯𝐻𝑧) = (π‘₯ RingHom 𝑧))
6362adantr 481 . 2 ((((πœ‘ ∧ π‘₯ ∈ 𝑅) ∧ (𝑦 ∈ 𝑅 ∧ 𝑧 ∈ 𝑅)) ∧ (𝑓 ∈ (π‘₯𝐻𝑦) ∧ 𝑔 ∈ (𝑦𝐻𝑧))) β†’ (π‘₯𝐻𝑧) = (π‘₯ RingHom 𝑧))
6423, 60, 633eltr4d 2848 1 ((((πœ‘ ∧ π‘₯ ∈ 𝑅) ∧ (𝑦 ∈ 𝑅 ∧ 𝑧 ∈ 𝑅)) ∧ (𝑓 ∈ (π‘₯𝐻𝑦) ∧ 𝑔 ∈ (𝑦𝐻𝑧))) β†’ (𝑔(⟨π‘₯, π‘¦βŸ©(compβ€˜(RngCatALTVβ€˜π‘ˆ))𝑧)𝑓) ∈ (π‘₯𝐻𝑧))
Colors of variables: wff setvar class
Syntax hints:   β†’ wi 4   ∧ wa 396   = wceq 1541   ∈ wcel 2106   ∩ cin 3947   βŠ† wss 3948  βŸ¨cop 4634   Γ— cxp 5674   β†Ύ cres 5678   ∘ ccom 5680  β€˜cfv 6543  (class class class)co 7408  Basecbs 17143  compcco 17208  Ringcrg 20055   RingHom crh 20247  Rngcrng 46638   RngHomo crngh 46673  RngCatALTVcrngcALTV 46846
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 5285  ax-sep 5299  ax-nul 5306  ax-pow 5363  ax-pr 5427  ax-un 7724  ax-cnex 11165  ax-resscn 11166  ax-1cn 11167  ax-icn 11168  ax-addcl 11169  ax-addrcl 11170  ax-mulcl 11171  ax-mulrcl 11172  ax-mulcom 11173  ax-addass 11174  ax-mulass 11175  ax-distr 11176  ax-i2m1 11177  ax-1ne0 11178  ax-1rid 11179  ax-rnegex 11180  ax-rrecex 11181  ax-cnre 11182  ax-pre-lttri 11183  ax-pre-lttrn 11184  ax-pre-ltadd 11185  ax-pre-mulgt0 11186
This theorem depends on definitions:  df-bi 206  df-an 397  df-or 846  df-3or 1088  df-3an 1089  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 3778  df-csb 3894  df-dif 3951  df-un 3953  df-in 3955  df-ss 3965  df-pss 3967  df-nul 4323  df-if 4529  df-pw 4604  df-sn 4629  df-pr 4631  df-tp 4633  df-op 4635  df-uni 4909  df-iun 4999  df-br 5149  df-opab 5211  df-mpt 5232  df-tr 5266  df-id 5574  df-eprel 5580  df-po 5588  df-so 5589  df-fr 5631  df-we 5633  df-xp 5682  df-rel 5683  df-cnv 5684  df-co 5685  df-dm 5686  df-rn 5687  df-res 5688  df-ima 5689  df-pred 6300  df-ord 6367  df-on 6368  df-lim 6369  df-suc 6370  df-iota 6495  df-fun 6545  df-fn 6546  df-f 6547  df-f1 6548  df-fo 6549  df-f1o 6550  df-fv 6551  df-riota 7364  df-ov 7411  df-oprab 7412  df-mpo 7413  df-om 7855  df-1st 7974  df-2nd 7975  df-frecs 8265  df-wrecs 8296  df-recs 8370  df-rdg 8409  df-1o 8465  df-er 8702  df-map 8821  df-en 8939  df-dom 8940  df-sdom 8941  df-fin 8942  df-pnf 11249  df-mnf 11250  df-xr 11251  df-ltxr 11252  df-le 11253  df-sub 11445  df-neg 11446  df-nn 12212  df-2 12274  df-3 12275  df-4 12276  df-5 12277  df-6 12278  df-7 12279  df-8 12280  df-9 12281  df-n0 12472  df-z 12558  df-dec 12677  df-uz 12822  df-fz 13484  df-struct 17079  df-sets 17096  df-slot 17114  df-ndx 17126  df-base 17144  df-plusg 17209  df-hom 17220  df-cco 17221  df-0g 17386  df-mgm 18560  df-sgrp 18609  df-mnd 18625  df-mhm 18670  df-grp 18821  df-minusg 18822  df-ghm 19089  df-cmn 19649  df-abl 19650  df-mgp 19987  df-ur 20004  df-ring 20057  df-rnghom 20250  df-mgmhm 46539  df-rng 46639  df-rnghomo 46675  df-rngcALTV 46848
This theorem is referenced by:  rhmsubcALTV  46996
  Copyright terms: Public domain W3C validator