Users' Mathboxes Mathbox for Stefan O'Rear < Previous   Next >
Nearby theorems
Mirrors  >  Home  >  MPE Home  >  Th. List  >   Mathboxes  >  isnumbasgrplem2 Structured version   Visualization version   GIF version

Theorem isnumbasgrplem2 42335
Description: If the (to be thought of as disjoint, although the proof does not require this) union of a set and its Hartogs number supports a group structure (more generally, a cancellative magma), then the set must be numerable. (Contributed by Stefan O'Rear, 9-Jul-2015.)
Assertion
Ref Expression
isnumbasgrplem2 ((𝑆 βˆͺ (harβ€˜π‘†)) ∈ (Base β€œ Grp) β†’ 𝑆 ∈ dom card)

Proof of Theorem isnumbasgrplem2
Dummy variables π‘Ž 𝑏 𝑐 𝑑 π‘₯ are mutually distinct and distinct from all other variables.
StepHypRef Expression
1 basfn 17147 . . 3 Base Fn V
2 ssv 3998 . . 3 Grp βŠ† V
3 fvelimab 6954 . . 3 ((Base Fn V ∧ Grp βŠ† V) β†’ ((𝑆 βˆͺ (harβ€˜π‘†)) ∈ (Base β€œ Grp) ↔ βˆƒπ‘₯ ∈ Grp (Baseβ€˜π‘₯) = (𝑆 βˆͺ (harβ€˜π‘†))))
41, 2, 3mp2an 689 . 2 ((𝑆 βˆͺ (harβ€˜π‘†)) ∈ (Base β€œ Grp) ↔ βˆƒπ‘₯ ∈ Grp (Baseβ€˜π‘₯) = (𝑆 βˆͺ (harβ€˜π‘†)))
5 harcl 9550 . . . . . 6 (harβ€˜π‘†) ∈ On
6 onenon 9940 . . . . . 6 ((harβ€˜π‘†) ∈ On β†’ (harβ€˜π‘†) ∈ dom card)
75, 6ax-mp 5 . . . . 5 (harβ€˜π‘†) ∈ dom card
8 xpnum 9942 . . . . 5 (((harβ€˜π‘†) ∈ dom card ∧ (harβ€˜π‘†) ∈ dom card) β†’ ((harβ€˜π‘†) Γ— (harβ€˜π‘†)) ∈ dom card)
97, 7, 8mp2an 689 . . . 4 ((harβ€˜π‘†) Γ— (harβ€˜π‘†)) ∈ dom card
10 ssun1 4164 . . . . . . . 8 𝑆 βŠ† (𝑆 βˆͺ (harβ€˜π‘†))
11 simpr 484 . . . . . . . 8 ((π‘₯ ∈ Grp ∧ (Baseβ€˜π‘₯) = (𝑆 βˆͺ (harβ€˜π‘†))) β†’ (Baseβ€˜π‘₯) = (𝑆 βˆͺ (harβ€˜π‘†)))
1210, 11sseqtrrid 4027 . . . . . . 7 ((π‘₯ ∈ Grp ∧ (Baseβ€˜π‘₯) = (𝑆 βˆͺ (harβ€˜π‘†))) β†’ 𝑆 βŠ† (Baseβ€˜π‘₯))
13 fvex 6894 . . . . . . . 8 (Baseβ€˜π‘₯) ∈ V
1413ssex 5311 . . . . . . 7 (𝑆 βŠ† (Baseβ€˜π‘₯) β†’ 𝑆 ∈ V)
1512, 14syl 17 . . . . . 6 ((π‘₯ ∈ Grp ∧ (Baseβ€˜π‘₯) = (𝑆 βˆͺ (harβ€˜π‘†))) β†’ 𝑆 ∈ V)
167a1i 11 . . . . . 6 ((π‘₯ ∈ Grp ∧ (Baseβ€˜π‘₯) = (𝑆 βˆͺ (harβ€˜π‘†))) β†’ (harβ€˜π‘†) ∈ dom card)
17 simp1l 1194 . . . . . . . 8 (((π‘₯ ∈ Grp ∧ (Baseβ€˜π‘₯) = (𝑆 βˆͺ (harβ€˜π‘†))) ∧ π‘Ž ∈ 𝑆 ∧ 𝑐 ∈ (harβ€˜π‘†)) β†’ π‘₯ ∈ Grp)
18123ad2ant1 1130 . . . . . . . . 9 (((π‘₯ ∈ Grp ∧ (Baseβ€˜π‘₯) = (𝑆 βˆͺ (harβ€˜π‘†))) ∧ π‘Ž ∈ 𝑆 ∧ 𝑐 ∈ (harβ€˜π‘†)) β†’ 𝑆 βŠ† (Baseβ€˜π‘₯))
19 simp2 1134 . . . . . . . . 9 (((π‘₯ ∈ Grp ∧ (Baseβ€˜π‘₯) = (𝑆 βˆͺ (harβ€˜π‘†))) ∧ π‘Ž ∈ 𝑆 ∧ 𝑐 ∈ (harβ€˜π‘†)) β†’ π‘Ž ∈ 𝑆)
2018, 19sseldd 3975 . . . . . . . 8 (((π‘₯ ∈ Grp ∧ (Baseβ€˜π‘₯) = (𝑆 βˆͺ (harβ€˜π‘†))) ∧ π‘Ž ∈ 𝑆 ∧ 𝑐 ∈ (harβ€˜π‘†)) β†’ π‘Ž ∈ (Baseβ€˜π‘₯))
21 ssun2 4165 . . . . . . . . . . 11 (harβ€˜π‘†) βŠ† (𝑆 βˆͺ (harβ€˜π‘†))
2221, 11sseqtrrid 4027 . . . . . . . . . 10 ((π‘₯ ∈ Grp ∧ (Baseβ€˜π‘₯) = (𝑆 βˆͺ (harβ€˜π‘†))) β†’ (harβ€˜π‘†) βŠ† (Baseβ€˜π‘₯))
23223ad2ant1 1130 . . . . . . . . 9 (((π‘₯ ∈ Grp ∧ (Baseβ€˜π‘₯) = (𝑆 βˆͺ (harβ€˜π‘†))) ∧ π‘Ž ∈ 𝑆 ∧ 𝑐 ∈ (harβ€˜π‘†)) β†’ (harβ€˜π‘†) βŠ† (Baseβ€˜π‘₯))
24 simp3 1135 . . . . . . . . 9 (((π‘₯ ∈ Grp ∧ (Baseβ€˜π‘₯) = (𝑆 βˆͺ (harβ€˜π‘†))) ∧ π‘Ž ∈ 𝑆 ∧ 𝑐 ∈ (harβ€˜π‘†)) β†’ 𝑐 ∈ (harβ€˜π‘†))
2523, 24sseldd 3975 . . . . . . . 8 (((π‘₯ ∈ Grp ∧ (Baseβ€˜π‘₯) = (𝑆 βˆͺ (harβ€˜π‘†))) ∧ π‘Ž ∈ 𝑆 ∧ 𝑐 ∈ (harβ€˜π‘†)) β†’ 𝑐 ∈ (Baseβ€˜π‘₯))
26 eqid 2724 . . . . . . . . 9 (Baseβ€˜π‘₯) = (Baseβ€˜π‘₯)
27 eqid 2724 . . . . . . . . 9 (+gβ€˜π‘₯) = (+gβ€˜π‘₯)
2826, 27grpcl 18861 . . . . . . . 8 ((π‘₯ ∈ Grp ∧ π‘Ž ∈ (Baseβ€˜π‘₯) ∧ 𝑐 ∈ (Baseβ€˜π‘₯)) β†’ (π‘Ž(+gβ€˜π‘₯)𝑐) ∈ (Baseβ€˜π‘₯))
2917, 20, 25, 28syl3anc 1368 . . . . . . 7 (((π‘₯ ∈ Grp ∧ (Baseβ€˜π‘₯) = (𝑆 βˆͺ (harβ€˜π‘†))) ∧ π‘Ž ∈ 𝑆 ∧ 𝑐 ∈ (harβ€˜π‘†)) β†’ (π‘Ž(+gβ€˜π‘₯)𝑐) ∈ (Baseβ€˜π‘₯))
30 simp1r 1195 . . . . . . 7 (((π‘₯ ∈ Grp ∧ (Baseβ€˜π‘₯) = (𝑆 βˆͺ (harβ€˜π‘†))) ∧ π‘Ž ∈ 𝑆 ∧ 𝑐 ∈ (harβ€˜π‘†)) β†’ (Baseβ€˜π‘₯) = (𝑆 βˆͺ (harβ€˜π‘†)))
3129, 30eleqtrd 2827 . . . . . 6 (((π‘₯ ∈ Grp ∧ (Baseβ€˜π‘₯) = (𝑆 βˆͺ (harβ€˜π‘†))) ∧ π‘Ž ∈ 𝑆 ∧ 𝑐 ∈ (harβ€˜π‘†)) β†’ (π‘Ž(+gβ€˜π‘₯)𝑐) ∈ (𝑆 βˆͺ (harβ€˜π‘†)))
32 simplll 772 . . . . . . 7 ((((π‘₯ ∈ Grp ∧ (Baseβ€˜π‘₯) = (𝑆 βˆͺ (harβ€˜π‘†))) ∧ π‘Ž ∈ 𝑆) ∧ (𝑐 ∈ (harβ€˜π‘†) ∧ 𝑑 ∈ (harβ€˜π‘†))) β†’ π‘₯ ∈ Grp)
3322ad2antrr 723 . . . . . . . 8 ((((π‘₯ ∈ Grp ∧ (Baseβ€˜π‘₯) = (𝑆 βˆͺ (harβ€˜π‘†))) ∧ π‘Ž ∈ 𝑆) ∧ (𝑐 ∈ (harβ€˜π‘†) ∧ 𝑑 ∈ (harβ€˜π‘†))) β†’ (harβ€˜π‘†) βŠ† (Baseβ€˜π‘₯))
34 simprl 768 . . . . . . . 8 ((((π‘₯ ∈ Grp ∧ (Baseβ€˜π‘₯) = (𝑆 βˆͺ (harβ€˜π‘†))) ∧ π‘Ž ∈ 𝑆) ∧ (𝑐 ∈ (harβ€˜π‘†) ∧ 𝑑 ∈ (harβ€˜π‘†))) β†’ 𝑐 ∈ (harβ€˜π‘†))
3533, 34sseldd 3975 . . . . . . 7 ((((π‘₯ ∈ Grp ∧ (Baseβ€˜π‘₯) = (𝑆 βˆͺ (harβ€˜π‘†))) ∧ π‘Ž ∈ 𝑆) ∧ (𝑐 ∈ (harβ€˜π‘†) ∧ 𝑑 ∈ (harβ€˜π‘†))) β†’ 𝑐 ∈ (Baseβ€˜π‘₯))
36 simprr 770 . . . . . . . 8 ((((π‘₯ ∈ Grp ∧ (Baseβ€˜π‘₯) = (𝑆 βˆͺ (harβ€˜π‘†))) ∧ π‘Ž ∈ 𝑆) ∧ (𝑐 ∈ (harβ€˜π‘†) ∧ 𝑑 ∈ (harβ€˜π‘†))) β†’ 𝑑 ∈ (harβ€˜π‘†))
3733, 36sseldd 3975 . . . . . . 7 ((((π‘₯ ∈ Grp ∧ (Baseβ€˜π‘₯) = (𝑆 βˆͺ (harβ€˜π‘†))) ∧ π‘Ž ∈ 𝑆) ∧ (𝑐 ∈ (harβ€˜π‘†) ∧ 𝑑 ∈ (harβ€˜π‘†))) β†’ 𝑑 ∈ (Baseβ€˜π‘₯))
3812ad2antrr 723 . . . . . . . 8 ((((π‘₯ ∈ Grp ∧ (Baseβ€˜π‘₯) = (𝑆 βˆͺ (harβ€˜π‘†))) ∧ π‘Ž ∈ 𝑆) ∧ (𝑐 ∈ (harβ€˜π‘†) ∧ 𝑑 ∈ (harβ€˜π‘†))) β†’ 𝑆 βŠ† (Baseβ€˜π‘₯))
39 simplr 766 . . . . . . . 8 ((((π‘₯ ∈ Grp ∧ (Baseβ€˜π‘₯) = (𝑆 βˆͺ (harβ€˜π‘†))) ∧ π‘Ž ∈ 𝑆) ∧ (𝑐 ∈ (harβ€˜π‘†) ∧ 𝑑 ∈ (harβ€˜π‘†))) β†’ π‘Ž ∈ 𝑆)
4038, 39sseldd 3975 . . . . . . 7 ((((π‘₯ ∈ Grp ∧ (Baseβ€˜π‘₯) = (𝑆 βˆͺ (harβ€˜π‘†))) ∧ π‘Ž ∈ 𝑆) ∧ (𝑐 ∈ (harβ€˜π‘†) ∧ 𝑑 ∈ (harβ€˜π‘†))) β†’ π‘Ž ∈ (Baseβ€˜π‘₯))
4126, 27grplcan 18920 . . . . . . 7 ((π‘₯ ∈ Grp ∧ (𝑐 ∈ (Baseβ€˜π‘₯) ∧ 𝑑 ∈ (Baseβ€˜π‘₯) ∧ π‘Ž ∈ (Baseβ€˜π‘₯))) β†’ ((π‘Ž(+gβ€˜π‘₯)𝑐) = (π‘Ž(+gβ€˜π‘₯)𝑑) ↔ 𝑐 = 𝑑))
4232, 35, 37, 40, 41syl13anc 1369 . . . . . 6 ((((π‘₯ ∈ Grp ∧ (Baseβ€˜π‘₯) = (𝑆 βˆͺ (harβ€˜π‘†))) ∧ π‘Ž ∈ 𝑆) ∧ (𝑐 ∈ (harβ€˜π‘†) ∧ 𝑑 ∈ (harβ€˜π‘†))) β†’ ((π‘Ž(+gβ€˜π‘₯)𝑐) = (π‘Ž(+gβ€˜π‘₯)𝑑) ↔ 𝑐 = 𝑑))
43 simplll 772 . . . . . . 7 ((((π‘₯ ∈ Grp ∧ (Baseβ€˜π‘₯) = (𝑆 βˆͺ (harβ€˜π‘†))) ∧ 𝑏 ∈ (harβ€˜π‘†)) ∧ (π‘Ž ∈ 𝑆 ∧ 𝑑 ∈ 𝑆)) β†’ π‘₯ ∈ Grp)
4412ad2antrr 723 . . . . . . . 8 ((((π‘₯ ∈ Grp ∧ (Baseβ€˜π‘₯) = (𝑆 βˆͺ (harβ€˜π‘†))) ∧ 𝑏 ∈ (harβ€˜π‘†)) ∧ (π‘Ž ∈ 𝑆 ∧ 𝑑 ∈ 𝑆)) β†’ 𝑆 βŠ† (Baseβ€˜π‘₯))
45 simprr 770 . . . . . . . 8 ((((π‘₯ ∈ Grp ∧ (Baseβ€˜π‘₯) = (𝑆 βˆͺ (harβ€˜π‘†))) ∧ 𝑏 ∈ (harβ€˜π‘†)) ∧ (π‘Ž ∈ 𝑆 ∧ 𝑑 ∈ 𝑆)) β†’ 𝑑 ∈ 𝑆)
4644, 45sseldd 3975 . . . . . . 7 ((((π‘₯ ∈ Grp ∧ (Baseβ€˜π‘₯) = (𝑆 βˆͺ (harβ€˜π‘†))) ∧ 𝑏 ∈ (harβ€˜π‘†)) ∧ (π‘Ž ∈ 𝑆 ∧ 𝑑 ∈ 𝑆)) β†’ 𝑑 ∈ (Baseβ€˜π‘₯))
47 simprl 768 . . . . . . . 8 ((((π‘₯ ∈ Grp ∧ (Baseβ€˜π‘₯) = (𝑆 βˆͺ (harβ€˜π‘†))) ∧ 𝑏 ∈ (harβ€˜π‘†)) ∧ (π‘Ž ∈ 𝑆 ∧ 𝑑 ∈ 𝑆)) β†’ π‘Ž ∈ 𝑆)
4844, 47sseldd 3975 . . . . . . 7 ((((π‘₯ ∈ Grp ∧ (Baseβ€˜π‘₯) = (𝑆 βˆͺ (harβ€˜π‘†))) ∧ 𝑏 ∈ (harβ€˜π‘†)) ∧ (π‘Ž ∈ 𝑆 ∧ 𝑑 ∈ 𝑆)) β†’ π‘Ž ∈ (Baseβ€˜π‘₯))
4922ad2antrr 723 . . . . . . . 8 ((((π‘₯ ∈ Grp ∧ (Baseβ€˜π‘₯) = (𝑆 βˆͺ (harβ€˜π‘†))) ∧ 𝑏 ∈ (harβ€˜π‘†)) ∧ (π‘Ž ∈ 𝑆 ∧ 𝑑 ∈ 𝑆)) β†’ (harβ€˜π‘†) βŠ† (Baseβ€˜π‘₯))
50 simplr 766 . . . . . . . 8 ((((π‘₯ ∈ Grp ∧ (Baseβ€˜π‘₯) = (𝑆 βˆͺ (harβ€˜π‘†))) ∧ 𝑏 ∈ (harβ€˜π‘†)) ∧ (π‘Ž ∈ 𝑆 ∧ 𝑑 ∈ 𝑆)) β†’ 𝑏 ∈ (harβ€˜π‘†))
5149, 50sseldd 3975 . . . . . . 7 ((((π‘₯ ∈ Grp ∧ (Baseβ€˜π‘₯) = (𝑆 βˆͺ (harβ€˜π‘†))) ∧ 𝑏 ∈ (harβ€˜π‘†)) ∧ (π‘Ž ∈ 𝑆 ∧ 𝑑 ∈ 𝑆)) β†’ 𝑏 ∈ (Baseβ€˜π‘₯))
5226, 27grprcan 18893 . . . . . . 7 ((π‘₯ ∈ Grp ∧ (𝑑 ∈ (Baseβ€˜π‘₯) ∧ π‘Ž ∈ (Baseβ€˜π‘₯) ∧ 𝑏 ∈ (Baseβ€˜π‘₯))) β†’ ((𝑑(+gβ€˜π‘₯)𝑏) = (π‘Ž(+gβ€˜π‘₯)𝑏) ↔ 𝑑 = π‘Ž))
5343, 46, 48, 51, 52syl13anc 1369 . . . . . 6 ((((π‘₯ ∈ Grp ∧ (Baseβ€˜π‘₯) = (𝑆 βˆͺ (harβ€˜π‘†))) ∧ 𝑏 ∈ (harβ€˜π‘†)) ∧ (π‘Ž ∈ 𝑆 ∧ 𝑑 ∈ 𝑆)) β†’ ((𝑑(+gβ€˜π‘₯)𝑏) = (π‘Ž(+gβ€˜π‘₯)𝑏) ↔ 𝑑 = π‘Ž))
54 harndom 9553 . . . . . . 7 Β¬ (harβ€˜π‘†) β‰Ό 𝑆
5554a1i 11 . . . . . 6 ((π‘₯ ∈ Grp ∧ (Baseβ€˜π‘₯) = (𝑆 βˆͺ (harβ€˜π‘†))) β†’ Β¬ (harβ€˜π‘†) β‰Ό 𝑆)
5615, 16, 16, 31, 42, 53, 55unxpwdom3 42326 . . . . 5 ((π‘₯ ∈ Grp ∧ (Baseβ€˜π‘₯) = (𝑆 βˆͺ (harβ€˜π‘†))) β†’ 𝑆 β‰Ό* ((harβ€˜π‘†) Γ— (harβ€˜π‘†)))
57 wdomnumr 10055 . . . . . 6 (((harβ€˜π‘†) Γ— (harβ€˜π‘†)) ∈ dom card β†’ (𝑆 β‰Ό* ((harβ€˜π‘†) Γ— (harβ€˜π‘†)) ↔ 𝑆 β‰Ό ((harβ€˜π‘†) Γ— (harβ€˜π‘†))))
589, 57ax-mp 5 . . . . 5 (𝑆 β‰Ό* ((harβ€˜π‘†) Γ— (harβ€˜π‘†)) ↔ 𝑆 β‰Ό ((harβ€˜π‘†) Γ— (harβ€˜π‘†)))
5956, 58sylib 217 . . . 4 ((π‘₯ ∈ Grp ∧ (Baseβ€˜π‘₯) = (𝑆 βˆͺ (harβ€˜π‘†))) β†’ 𝑆 β‰Ό ((harβ€˜π‘†) Γ— (harβ€˜π‘†)))
60 numdom 10029 . . . 4 ((((harβ€˜π‘†) Γ— (harβ€˜π‘†)) ∈ dom card ∧ 𝑆 β‰Ό ((harβ€˜π‘†) Γ— (harβ€˜π‘†))) β†’ 𝑆 ∈ dom card)
619, 59, 60sylancr 586 . . 3 ((π‘₯ ∈ Grp ∧ (Baseβ€˜π‘₯) = (𝑆 βˆͺ (harβ€˜π‘†))) β†’ 𝑆 ∈ dom card)
6261rexlimiva 3139 . 2 (βˆƒπ‘₯ ∈ Grp (Baseβ€˜π‘₯) = (𝑆 βˆͺ (harβ€˜π‘†)) β†’ 𝑆 ∈ dom card)
634, 62sylbi 216 1 ((𝑆 βˆͺ (harβ€˜π‘†)) ∈ (Base β€œ Grp) β†’ 𝑆 ∈ dom card)
Colors of variables: wff setvar class
Syntax hints:  Β¬ wn 3   β†’ wi 4   ↔ wb 205   ∧ wa 395   ∧ w3a 1084   = wceq 1533   ∈ wcel 2098  βˆƒwrex 3062  Vcvv 3466   βˆͺ cun 3938   βŠ† wss 3940   class class class wbr 5138   Γ— cxp 5664  dom cdm 5666   β€œ cima 5669  Oncon0 6354   Fn wfn 6528  β€˜cfv 6533  (class class class)co 7401   β‰Ό cdom 8933  harchar 9547   β‰Ό* cwdom 9555  cardccrd 9926  Basecbs 17143  +gcplusg 17196  Grpcgrp 18853
This theorem was proved from axioms:  ax-mp 5  ax-1 6  ax-2 7  ax-3 8  ax-gen 1789  ax-4 1803  ax-5 1905  ax-6 1963  ax-7 2003  ax-8 2100  ax-9 2108  ax-10 2129  ax-11 2146  ax-12 2163  ax-ext 2695  ax-rep 5275  ax-sep 5289  ax-nul 5296  ax-pow 5353  ax-pr 5417  ax-un 7718  ax-cnex 11162  ax-1cn 11164  ax-addcl 11166
This theorem depends on definitions:  df-bi 206  df-an 396  df-or 845  df-3or 1085  df-3an 1086  df-tru 1536  df-fal 1546  df-ex 1774  df-nf 1778  df-sb 2060  df-mo 2526  df-eu 2555  df-clab 2702  df-cleq 2716  df-clel 2802  df-nfc 2877  df-ne 2933  df-ral 3054  df-rex 3063  df-rmo 3368  df-reu 3369  df-rab 3425  df-v 3468  df-sbc 3770  df-csb 3886  df-dif 3943  df-un 3945  df-in 3947  df-ss 3957  df-pss 3959  df-nul 4315  df-if 4521  df-pw 4596  df-sn 4621  df-pr 4623  df-op 4627  df-uni 4900  df-int 4941  df-iun 4989  df-br 5139  df-opab 5201  df-mpt 5222  df-tr 5256  df-id 5564  df-eprel 5570  df-po 5578  df-so 5579  df-fr 5621  df-se 5622  df-we 5623  df-xp 5672  df-rel 5673  df-cnv 5674  df-co 5675  df-dm 5676  df-rn 5677  df-res 5678  df-ima 5679  df-pred 6290  df-ord 6357  df-on 6358  df-lim 6359  df-suc 6360  df-iota 6485  df-fun 6535  df-fn 6536  df-f 6537  df-f1 6538  df-fo 6539  df-f1o 6540  df-fv 6541  df-isom 6542  df-riota 7357  df-ov 7404  df-oprab 7405  df-mpo 7406  df-om 7849  df-1st 7968  df-2nd 7969  df-frecs 8261  df-wrecs 8292  df-recs 8366  df-rdg 8405  df-1o 8461  df-oadd 8465  df-omul 8466  df-er 8699  df-map 8818  df-en 8936  df-dom 8937  df-sdom 8938  df-oi 9501  df-har 9548  df-wdom 9556  df-card 9930  df-acn 9933  df-nn 12210  df-slot 17114  df-ndx 17126  df-base 17144  df-0g 17386  df-mgm 18563  df-sgrp 18642  df-mnd 18658  df-grp 18856  df-minusg 18857
This theorem is referenced by:  isnumbasabl  42337  isnumbasgrp  42338
  Copyright terms: Public domain W3C validator