Users' Mathboxes Mathbox for Norm Megill < Previous   Next >
Nearby theorems
Mirrors  >  Home  >  MPE Home  >  Th. List  >   Mathboxes  >  lplncvrlvol Structured version   Visualization version   GIF version

Theorem lplncvrlvol 34902
Description: An element covering a lattice plane is a lattice volume and vice-versa. (Contributed by NM, 15-Jul-2012.)
Hypotheses
Ref Expression
lplncvrlvol.b 𝐵 = (Base‘𝐾)
lplncvrlvol.c 𝐶 = ( ⋖ ‘𝐾)
lplncvrlvol.p 𝑃 = (LPlanes‘𝐾)
lplncvrlvol.v 𝑉 = (LVols‘𝐾)
Assertion
Ref Expression
lplncvrlvol (((𝐾 ∈ HL ∧ 𝑋𝐵𝑌𝐵) ∧ 𝑋𝐶𝑌) → (𝑋𝑃𝑌𝑉))

Proof of Theorem lplncvrlvol
Dummy variable 𝑧 is distinct from all other variables.
StepHypRef Expression
1 simpll1 1100 . . 3 ((((𝐾 ∈ HL ∧ 𝑋𝐵𝑌𝐵) ∧ 𝑋𝐶𝑌) ∧ 𝑋𝑃) → 𝐾 ∈ HL)
2 simpll3 1102 . . 3 ((((𝐾 ∈ HL ∧ 𝑋𝐵𝑌𝐵) ∧ 𝑋𝐶𝑌) ∧ 𝑋𝑃) → 𝑌𝐵)
3 simpr 477 . . 3 ((((𝐾 ∈ HL ∧ 𝑋𝐵𝑌𝐵) ∧ 𝑋𝐶𝑌) ∧ 𝑋𝑃) → 𝑋𝑃)
4 simplr 792 . . 3 ((((𝐾 ∈ HL ∧ 𝑋𝐵𝑌𝐵) ∧ 𝑋𝐶𝑌) ∧ 𝑋𝑃) → 𝑋𝐶𝑌)
5 lplncvrlvol.b . . . 4 𝐵 = (Base‘𝐾)
6 lplncvrlvol.c . . . 4 𝐶 = ( ⋖ ‘𝐾)
7 lplncvrlvol.p . . . 4 𝑃 = (LPlanes‘𝐾)
8 lplncvrlvol.v . . . 4 𝑉 = (LVols‘𝐾)
95, 6, 7, 8lvoli 34861 . . 3 (((𝐾 ∈ HL ∧ 𝑌𝐵𝑋𝑃) ∧ 𝑋𝐶𝑌) → 𝑌𝑉)
101, 2, 3, 4, 9syl31anc 1329 . 2 ((((𝐾 ∈ HL ∧ 𝑋𝐵𝑌𝐵) ∧ 𝑋𝐶𝑌) ∧ 𝑋𝑃) → 𝑌𝑉)
11 simpll1 1100 . . . 4 ((((𝐾 ∈ HL ∧ 𝑋𝐵𝑌𝐵) ∧ 𝑋𝐶𝑌) ∧ 𝑌𝑉) → 𝐾 ∈ HL)
12 simpll2 1101 . . . 4 ((((𝐾 ∈ HL ∧ 𝑋𝐵𝑌𝐵) ∧ 𝑋𝐶𝑌) ∧ 𝑌𝑉) → 𝑋𝐵)
13 hllat 34650 . . . . . . . 8 (𝐾 ∈ HL → 𝐾 ∈ Lat)
1411, 13syl 17 . . . . . . 7 ((((𝐾 ∈ HL ∧ 𝑋𝐵𝑌𝐵) ∧ 𝑋𝐶𝑌) ∧ 𝑌𝑉) → 𝐾 ∈ Lat)
15 simpll3 1102 . . . . . . 7 ((((𝐾 ∈ HL ∧ 𝑋𝐵𝑌𝐵) ∧ 𝑋𝐶𝑌) ∧ 𝑌𝑉) → 𝑌𝐵)
16 eqid 2622 . . . . . . . 8 (le‘𝐾) = (le‘𝐾)
175, 16latref 17053 . . . . . . 7 ((𝐾 ∈ Lat ∧ 𝑌𝐵) → 𝑌(le‘𝐾)𝑌)
1814, 15, 17syl2anc 693 . . . . . 6 ((((𝐾 ∈ HL ∧ 𝑋𝐵𝑌𝐵) ∧ 𝑋𝐶𝑌) ∧ 𝑌𝑉) → 𝑌(le‘𝐾)𝑌)
1911adantr 481 . . . . . . . 8 (((((𝐾 ∈ HL ∧ 𝑋𝐵𝑌𝐵) ∧ 𝑋𝐶𝑌) ∧ 𝑌𝑉) ∧ 𝑌 ∈ (Atoms‘𝐾)) → 𝐾 ∈ HL)
20 simplr 792 . . . . . . . 8 (((((𝐾 ∈ HL ∧ 𝑋𝐵𝑌𝐵) ∧ 𝑋𝐶𝑌) ∧ 𝑌𝑉) ∧ 𝑌 ∈ (Atoms‘𝐾)) → 𝑌𝑉)
21 simpr 477 . . . . . . . 8 (((((𝐾 ∈ HL ∧ 𝑋𝐵𝑌𝐵) ∧ 𝑋𝐶𝑌) ∧ 𝑌𝑉) ∧ 𝑌 ∈ (Atoms‘𝐾)) → 𝑌 ∈ (Atoms‘𝐾))
22 eqid 2622 . . . . . . . . 9 (Atoms‘𝐾) = (Atoms‘𝐾)
2316, 22, 8lvolnleat 34869 . . . . . . . 8 ((𝐾 ∈ HL ∧ 𝑌𝑉𝑌 ∈ (Atoms‘𝐾)) → ¬ 𝑌(le‘𝐾)𝑌)
2419, 20, 21, 23syl3anc 1326 . . . . . . 7 (((((𝐾 ∈ HL ∧ 𝑋𝐵𝑌𝐵) ∧ 𝑋𝐶𝑌) ∧ 𝑌𝑉) ∧ 𝑌 ∈ (Atoms‘𝐾)) → ¬ 𝑌(le‘𝐾)𝑌)
2524ex 450 . . . . . 6 ((((𝐾 ∈ HL ∧ 𝑋𝐵𝑌𝐵) ∧ 𝑋𝐶𝑌) ∧ 𝑌𝑉) → (𝑌 ∈ (Atoms‘𝐾) → ¬ 𝑌(le‘𝐾)𝑌))
2618, 25mt2d 131 . . . . 5 ((((𝐾 ∈ HL ∧ 𝑋𝐵𝑌𝐵) ∧ 𝑋𝐶𝑌) ∧ 𝑌𝑉) → ¬ 𝑌 ∈ (Atoms‘𝐾))
27 simplr 792 . . . . . . . 8 ((((𝐾 ∈ HL ∧ 𝑋𝐵𝑌𝐵) ∧ 𝑋𝐶𝑌) ∧ 𝑌𝑉) → 𝑋𝐶𝑌)
28 breq1 4656 . . . . . . . 8 (𝑋 = (0.‘𝐾) → (𝑋𝐶𝑌 ↔ (0.‘𝐾)𝐶𝑌))
2927, 28syl5ibcom 235 . . . . . . 7 ((((𝐾 ∈ HL ∧ 𝑋𝐵𝑌𝐵) ∧ 𝑋𝐶𝑌) ∧ 𝑌𝑉) → (𝑋 = (0.‘𝐾) → (0.‘𝐾)𝐶𝑌))
30 eqid 2622 . . . . . . . . 9 (0.‘𝐾) = (0.‘𝐾)
315, 30, 6, 22isat2 34574 . . . . . . . 8 ((𝐾 ∈ HL ∧ 𝑌𝐵) → (𝑌 ∈ (Atoms‘𝐾) ↔ (0.‘𝐾)𝐶𝑌))
3211, 15, 31syl2anc 693 . . . . . . 7 ((((𝐾 ∈ HL ∧ 𝑋𝐵𝑌𝐵) ∧ 𝑋𝐶𝑌) ∧ 𝑌𝑉) → (𝑌 ∈ (Atoms‘𝐾) ↔ (0.‘𝐾)𝐶𝑌))
3329, 32sylibrd 249 . . . . . 6 ((((𝐾 ∈ HL ∧ 𝑋𝐵𝑌𝐵) ∧ 𝑋𝐶𝑌) ∧ 𝑌𝑉) → (𝑋 = (0.‘𝐾) → 𝑌 ∈ (Atoms‘𝐾)))
3433necon3bd 2808 . . . . 5 ((((𝐾 ∈ HL ∧ 𝑋𝐵𝑌𝐵) ∧ 𝑋𝐶𝑌) ∧ 𝑌𝑉) → (¬ 𝑌 ∈ (Atoms‘𝐾) → 𝑋 ≠ (0.‘𝐾)))
3526, 34mpd 15 . . . 4 ((((𝐾 ∈ HL ∧ 𝑋𝐵𝑌𝐵) ∧ 𝑋𝐶𝑌) ∧ 𝑌𝑉) → 𝑋 ≠ (0.‘𝐾))
36 eqid 2622 . . . . . . 7 (LLines‘𝐾) = (LLines‘𝐾)
3736, 8lvolnelln 34875 . . . . . 6 ((𝐾 ∈ HL ∧ 𝑌𝑉) → ¬ 𝑌 ∈ (LLines‘𝐾))
3811, 37sylancom 701 . . . . 5 ((((𝐾 ∈ HL ∧ 𝑋𝐵𝑌𝐵) ∧ 𝑋𝐶𝑌) ∧ 𝑌𝑉) → ¬ 𝑌 ∈ (LLines‘𝐾))
3911adantr 481 . . . . . 6 (((((𝐾 ∈ HL ∧ 𝑋𝐵𝑌𝐵) ∧ 𝑋𝐶𝑌) ∧ 𝑌𝑉) ∧ 𝑋 ∈ (Atoms‘𝐾)) → 𝐾 ∈ HL)
4015adantr 481 . . . . . 6 (((((𝐾 ∈ HL ∧ 𝑋𝐵𝑌𝐵) ∧ 𝑋𝐶𝑌) ∧ 𝑌𝑉) ∧ 𝑋 ∈ (Atoms‘𝐾)) → 𝑌𝐵)
41 simpr 477 . . . . . 6 (((((𝐾 ∈ HL ∧ 𝑋𝐵𝑌𝐵) ∧ 𝑋𝐶𝑌) ∧ 𝑌𝑉) ∧ 𝑋 ∈ (Atoms‘𝐾)) → 𝑋 ∈ (Atoms‘𝐾))
42 simpllr 799 . . . . . 6 (((((𝐾 ∈ HL ∧ 𝑋𝐵𝑌𝐵) ∧ 𝑋𝐶𝑌) ∧ 𝑌𝑉) ∧ 𝑋 ∈ (Atoms‘𝐾)) → 𝑋𝐶𝑌)
435, 6, 22, 36llni 34794 . . . . . 6 (((𝐾 ∈ HL ∧ 𝑌𝐵𝑋 ∈ (Atoms‘𝐾)) ∧ 𝑋𝐶𝑌) → 𝑌 ∈ (LLines‘𝐾))
4439, 40, 41, 42, 43syl31anc 1329 . . . . 5 (((((𝐾 ∈ HL ∧ 𝑋𝐵𝑌𝐵) ∧ 𝑋𝐶𝑌) ∧ 𝑌𝑉) ∧ 𝑋 ∈ (Atoms‘𝐾)) → 𝑌 ∈ (LLines‘𝐾))
4538, 44mtand 691 . . . 4 ((((𝐾 ∈ HL ∧ 𝑋𝐵𝑌𝐵) ∧ 𝑋𝐶𝑌) ∧ 𝑌𝑉) → ¬ 𝑋 ∈ (Atoms‘𝐾))
467, 8lvolnelpln 34876 . . . . . 6 ((𝐾 ∈ HL ∧ 𝑌𝑉) → ¬ 𝑌𝑃)
4711, 46sylancom 701 . . . . 5 ((((𝐾 ∈ HL ∧ 𝑋𝐵𝑌𝐵) ∧ 𝑋𝐶𝑌) ∧ 𝑌𝑉) → ¬ 𝑌𝑃)
485, 6, 36, 7llncvrlpln 34844 . . . . . 6 (((𝐾 ∈ HL ∧ 𝑋𝐵𝑌𝐵) ∧ 𝑋𝐶𝑌) → (𝑋 ∈ (LLines‘𝐾) ↔ 𝑌𝑃))
4948adantr 481 . . . . 5 ((((𝐾 ∈ HL ∧ 𝑋𝐵𝑌𝐵) ∧ 𝑋𝐶𝑌) ∧ 𝑌𝑉) → (𝑋 ∈ (LLines‘𝐾) ↔ 𝑌𝑃))
5047, 49mtbird 315 . . . 4 ((((𝐾 ∈ HL ∧ 𝑋𝐵𝑌𝐵) ∧ 𝑋𝐶𝑌) ∧ 𝑌𝑉) → ¬ 𝑋 ∈ (LLines‘𝐾))
515, 16, 30, 22, 36, 7lplnle 34826 . . . 4 (((𝐾 ∈ HL ∧ 𝑋𝐵) ∧ (𝑋 ≠ (0.‘𝐾) ∧ ¬ 𝑋 ∈ (Atoms‘𝐾) ∧ ¬ 𝑋 ∈ (LLines‘𝐾))) → ∃𝑧𝑃 𝑧(le‘𝐾)𝑋)
5211, 12, 35, 45, 50, 51syl23anc 1333 . . 3 ((((𝐾 ∈ HL ∧ 𝑋𝐵𝑌𝐵) ∧ 𝑋𝐶𝑌) ∧ 𝑌𝑉) → ∃𝑧𝑃 𝑧(le‘𝐾)𝑋)
53 simpr3 1069 . . . . . . . 8 ((((𝐾 ∈ HL ∧ 𝑋𝐵𝑌𝐵) ∧ 𝑋𝐶𝑌) ∧ (𝑌𝑉𝑧𝑃𝑧(le‘𝐾)𝑋)) → 𝑧(le‘𝐾)𝑋)
54 simpll1 1100 . . . . . . . . . 10 ((((𝐾 ∈ HL ∧ 𝑋𝐵𝑌𝐵) ∧ 𝑋𝐶𝑌) ∧ (𝑌𝑉𝑧𝑃𝑧(le‘𝐾)𝑋)) → 𝐾 ∈ HL)
55 hlop 34649 . . . . . . . . . 10 (𝐾 ∈ HL → 𝐾 ∈ OP)
5654, 55syl 17 . . . . . . . . 9 ((((𝐾 ∈ HL ∧ 𝑋𝐵𝑌𝐵) ∧ 𝑋𝐶𝑌) ∧ (𝑌𝑉𝑧𝑃𝑧(le‘𝐾)𝑋)) → 𝐾 ∈ OP)
57 simpr2 1068 . . . . . . . . . 10 ((((𝐾 ∈ HL ∧ 𝑋𝐵𝑌𝐵) ∧ 𝑋𝐶𝑌) ∧ (𝑌𝑉𝑧𝑃𝑧(le‘𝐾)𝑋)) → 𝑧𝑃)
585, 7lplnbase 34820 . . . . . . . . . 10 (𝑧𝑃𝑧𝐵)
5957, 58syl 17 . . . . . . . . 9 ((((𝐾 ∈ HL ∧ 𝑋𝐵𝑌𝐵) ∧ 𝑋𝐶𝑌) ∧ (𝑌𝑉𝑧𝑃𝑧(le‘𝐾)𝑋)) → 𝑧𝐵)
60 simpll2 1101 . . . . . . . . 9 ((((𝐾 ∈ HL ∧ 𝑋𝐵𝑌𝐵) ∧ 𝑋𝐶𝑌) ∧ (𝑌𝑉𝑧𝑃𝑧(le‘𝐾)𝑋)) → 𝑋𝐵)
61 simpll3 1102 . . . . . . . . 9 ((((𝐾 ∈ HL ∧ 𝑋𝐵𝑌𝐵) ∧ 𝑋𝐶𝑌) ∧ (𝑌𝑉𝑧𝑃𝑧(le‘𝐾)𝑋)) → 𝑌𝐵)
62 simpr1 1067 . . . . . . . . . 10 ((((𝐾 ∈ HL ∧ 𝑋𝐵𝑌𝐵) ∧ 𝑋𝐶𝑌) ∧ (𝑌𝑉𝑧𝑃𝑧(le‘𝐾)𝑋)) → 𝑌𝑉)
635, 16, 6cvrle 34565 . . . . . . . . . . . 12 (((𝐾 ∈ HL ∧ 𝑋𝐵𝑌𝐵) ∧ 𝑋𝐶𝑌) → 𝑋(le‘𝐾)𝑌)
6463adantr 481 . . . . . . . . . . 11 ((((𝐾 ∈ HL ∧ 𝑋𝐵𝑌𝐵) ∧ 𝑋𝐶𝑌) ∧ (𝑌𝑉𝑧𝑃𝑧(le‘𝐾)𝑋)) → 𝑋(le‘𝐾)𝑌)
65 hlpos 34652 . . . . . . . . . . . . 13 (𝐾 ∈ HL → 𝐾 ∈ Poset)
6654, 65syl 17 . . . . . . . . . . . 12 ((((𝐾 ∈ HL ∧ 𝑋𝐵𝑌𝐵) ∧ 𝑋𝐶𝑌) ∧ (𝑌𝑉𝑧𝑃𝑧(le‘𝐾)𝑋)) → 𝐾 ∈ Poset)
675, 16postr 16953 . . . . . . . . . . . 12 ((𝐾 ∈ Poset ∧ (𝑧𝐵𝑋𝐵𝑌𝐵)) → ((𝑧(le‘𝐾)𝑋𝑋(le‘𝐾)𝑌) → 𝑧(le‘𝐾)𝑌))
6866, 59, 60, 61, 67syl13anc 1328 . . . . . . . . . . 11 ((((𝐾 ∈ HL ∧ 𝑋𝐵𝑌𝐵) ∧ 𝑋𝐶𝑌) ∧ (𝑌𝑉𝑧𝑃𝑧(le‘𝐾)𝑋)) → ((𝑧(le‘𝐾)𝑋𝑋(le‘𝐾)𝑌) → 𝑧(le‘𝐾)𝑌))
6953, 64, 68mp2and 715 . . . . . . . . . 10 ((((𝐾 ∈ HL ∧ 𝑋𝐵𝑌𝐵) ∧ 𝑋𝐶𝑌) ∧ (𝑌𝑉𝑧𝑃𝑧(le‘𝐾)𝑋)) → 𝑧(le‘𝐾)𝑌)
7016, 6, 7, 8lplncvrlvol2 34901 . . . . . . . . . 10 (((𝐾 ∈ HL ∧ 𝑧𝑃𝑌𝑉) ∧ 𝑧(le‘𝐾)𝑌) → 𝑧𝐶𝑌)
7154, 57, 62, 69, 70syl31anc 1329 . . . . . . . . 9 ((((𝐾 ∈ HL ∧ 𝑋𝐵𝑌𝐵) ∧ 𝑋𝐶𝑌) ∧ (𝑌𝑉𝑧𝑃𝑧(le‘𝐾)𝑋)) → 𝑧𝐶𝑌)
72 simplr 792 . . . . . . . . 9 ((((𝐾 ∈ HL ∧ 𝑋𝐵𝑌𝐵) ∧ 𝑋𝐶𝑌) ∧ (𝑌𝑉𝑧𝑃𝑧(le‘𝐾)𝑋)) → 𝑋𝐶𝑌)
735, 16, 6cvrcmp2 34571 . . . . . . . . 9 ((𝐾 ∈ OP ∧ (𝑧𝐵𝑋𝐵𝑌𝐵) ∧ (𝑧𝐶𝑌𝑋𝐶𝑌)) → (𝑧(le‘𝐾)𝑋𝑧 = 𝑋))
7456, 59, 60, 61, 71, 72, 73syl132anc 1344 . . . . . . . 8 ((((𝐾 ∈ HL ∧ 𝑋𝐵𝑌𝐵) ∧ 𝑋𝐶𝑌) ∧ (𝑌𝑉𝑧𝑃𝑧(le‘𝐾)𝑋)) → (𝑧(le‘𝐾)𝑋𝑧 = 𝑋))
7553, 74mpbid 222 . . . . . . 7 ((((𝐾 ∈ HL ∧ 𝑋𝐵𝑌𝐵) ∧ 𝑋𝐶𝑌) ∧ (𝑌𝑉𝑧𝑃𝑧(le‘𝐾)𝑋)) → 𝑧 = 𝑋)
7675, 57eqeltrrd 2702 . . . . . 6 ((((𝐾 ∈ HL ∧ 𝑋𝐵𝑌𝐵) ∧ 𝑋𝐶𝑌) ∧ (𝑌𝑉𝑧𝑃𝑧(le‘𝐾)𝑋)) → 𝑋𝑃)
77763exp2 1285 . . . . 5 (((𝐾 ∈ HL ∧ 𝑋𝐵𝑌𝐵) ∧ 𝑋𝐶𝑌) → (𝑌𝑉 → (𝑧𝑃 → (𝑧(le‘𝐾)𝑋𝑋𝑃))))
7877imp 445 . . . 4 ((((𝐾 ∈ HL ∧ 𝑋𝐵𝑌𝐵) ∧ 𝑋𝐶𝑌) ∧ 𝑌𝑉) → (𝑧𝑃 → (𝑧(le‘𝐾)𝑋𝑋𝑃)))
7978rexlimdv 3030 . . 3 ((((𝐾 ∈ HL ∧ 𝑋𝐵𝑌𝐵) ∧ 𝑋𝐶𝑌) ∧ 𝑌𝑉) → (∃𝑧𝑃 𝑧(le‘𝐾)𝑋𝑋𝑃))
8052, 79mpd 15 . 2 ((((𝐾 ∈ HL ∧ 𝑋𝐵𝑌𝐵) ∧ 𝑋𝐶𝑌) ∧ 𝑌𝑉) → 𝑋𝑃)
8110, 80impbida 877 1 (((𝐾 ∈ HL ∧ 𝑋𝐵𝑌𝐵) ∧ 𝑋𝐶𝑌) → (𝑋𝑃𝑌𝑉))
Colors of variables: wff setvar class
Syntax hints:  ¬ wn 3  wi 4  wb 196  wa 384  w3a 1037   = wceq 1483  wcel 1990  wne 2794  wrex 2913   class class class wbr 4653  cfv 5888  Basecbs 15857  lecple 15948  Posetcpo 16940  0.cp0 17037  Latclat 17045  OPcops 34459  ccvr 34549  Atomscatm 34550  HLchlt 34637  LLinesclln 34777  LPlanesclpl 34778  LVolsclvol 34779
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
This theorem depends on definitions:  df-bi 197  df-or 385  df-an 386  df-3or 1038  df-3an 1039  df-tru 1486  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-ral 2917  df-rex 2918  df-reu 2919  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-nul 3916  df-if 4087  df-pw 4160  df-sn 4178  df-pr 4180  df-op 4184  df-uni 4437  df-iun 4522  df-br 4654  df-opab 4713  df-mpt 4730  df-id 5024  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-iota 5851  df-fun 5890  df-fn 5891  df-f 5892  df-f1 5893  df-fo 5894  df-f1o 5895  df-fv 5896  df-riota 6611  df-ov 6653  df-oprab 6654  df-preset 16928  df-poset 16946  df-plt 16958  df-lub 16974  df-glb 16975  df-join 16976  df-meet 16977  df-p0 17039  df-lat 17046  df-clat 17108  df-oposet 34463  df-ol 34465  df-oml 34466  df-covers 34553  df-ats 34554  df-atl 34585  df-cvlat 34609  df-hlat 34638  df-llines 34784  df-lplanes 34785  df-lvols 34786
This theorem is referenced by:  2lplnmj  34908
  Copyright terms: Public domain W3C validator