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 34721
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 1098 . . 3 ((((𝐾 ∈ HL ∧ 𝑋𝐵𝑌𝐵) ∧ 𝑋𝐶𝑌) ∧ 𝑋𝑃) → 𝐾 ∈ HL)
2 simpll3 1100 . . 3 ((((𝐾 ∈ HL ∧ 𝑋𝐵𝑌𝐵) ∧ 𝑋𝐶𝑌) ∧ 𝑋𝑃) → 𝑌𝐵)
3 simpr 477 . . 3 ((((𝐾 ∈ HL ∧ 𝑋𝐵𝑌𝐵) ∧ 𝑋𝐶𝑌) ∧ 𝑋𝑃) → 𝑋𝑃)
4 simplr 791 . . 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 34680 . . 3 (((𝐾 ∈ HL ∧ 𝑌𝐵𝑋𝑃) ∧ 𝑋𝐶𝑌) → 𝑌𝑉)
101, 2, 3, 4, 9syl31anc 1327 . 2 ((((𝐾 ∈ HL ∧ 𝑋𝐵𝑌𝐵) ∧ 𝑋𝐶𝑌) ∧ 𝑋𝑃) → 𝑌𝑉)
11 simpll1 1098 . . . 4 ((((𝐾 ∈ HL ∧ 𝑋𝐵𝑌𝐵) ∧ 𝑋𝐶𝑌) ∧ 𝑌𝑉) → 𝐾 ∈ HL)
12 simpll2 1099 . . . 4 ((((𝐾 ∈ HL ∧ 𝑋𝐵𝑌𝐵) ∧ 𝑋𝐶𝑌) ∧ 𝑌𝑉) → 𝑋𝐵)
13 hllat 34469 . . . . . . . 8 (𝐾 ∈ HL → 𝐾 ∈ Lat)
1411, 13syl 17 . . . . . . 7 ((((𝐾 ∈ HL ∧ 𝑋𝐵𝑌𝐵) ∧ 𝑋𝐶𝑌) ∧ 𝑌𝑉) → 𝐾 ∈ Lat)
15 simpll3 1100 . . . . . . 7 ((((𝐾 ∈ HL ∧ 𝑋𝐵𝑌𝐵) ∧ 𝑋𝐶𝑌) ∧ 𝑌𝑉) → 𝑌𝐵)
16 eqid 2620 . . . . . . . 8 (le‘𝐾) = (le‘𝐾)
175, 16latref 17034 . . . . . . 7 ((𝐾 ∈ Lat ∧ 𝑌𝐵) → 𝑌(le‘𝐾)𝑌)
1814, 15, 17syl2anc 692 . . . . . 6 ((((𝐾 ∈ HL ∧ 𝑋𝐵𝑌𝐵) ∧ 𝑋𝐶𝑌) ∧ 𝑌𝑉) → 𝑌(le‘𝐾)𝑌)
1911adantr 481 . . . . . . . 8 (((((𝐾 ∈ HL ∧ 𝑋𝐵𝑌𝐵) ∧ 𝑋𝐶𝑌) ∧ 𝑌𝑉) ∧ 𝑌 ∈ (Atoms‘𝐾)) → 𝐾 ∈ HL)
20 simplr 791 . . . . . . . 8 (((((𝐾 ∈ HL ∧ 𝑋𝐵𝑌𝐵) ∧ 𝑋𝐶𝑌) ∧ 𝑌𝑉) ∧ 𝑌 ∈ (Atoms‘𝐾)) → 𝑌𝑉)
21 simpr 477 . . . . . . . 8 (((((𝐾 ∈ HL ∧ 𝑋𝐵𝑌𝐵) ∧ 𝑋𝐶𝑌) ∧ 𝑌𝑉) ∧ 𝑌 ∈ (Atoms‘𝐾)) → 𝑌 ∈ (Atoms‘𝐾))
22 eqid 2620 . . . . . . . . 9 (Atoms‘𝐾) = (Atoms‘𝐾)
2316, 22, 8lvolnleat 34688 . . . . . . . 8 ((𝐾 ∈ HL ∧ 𝑌𝑉𝑌 ∈ (Atoms‘𝐾)) → ¬ 𝑌(le‘𝐾)𝑌)
2419, 20, 21, 23syl3anc 1324 . . . . . . 7 (((((𝐾 ∈ HL ∧ 𝑋𝐵𝑌𝐵) ∧ 𝑋𝐶𝑌) ∧ 𝑌𝑉) ∧ 𝑌 ∈ (Atoms‘𝐾)) → ¬ 𝑌(le‘𝐾)𝑌)
2524ex 450 . . . . . 6 ((((𝐾 ∈ HL ∧ 𝑋𝐵𝑌𝐵) ∧ 𝑋𝐶𝑌) ∧ 𝑌𝑉) → (𝑌 ∈ (Atoms‘𝐾) → ¬ 𝑌(le‘𝐾)𝑌))
2618, 25mt2d 131 . . . . 5 ((((𝐾 ∈ HL ∧ 𝑋𝐵𝑌𝐵) ∧ 𝑋𝐶𝑌) ∧ 𝑌𝑉) → ¬ 𝑌 ∈ (Atoms‘𝐾))
27 simplr 791 . . . . . . . 8 ((((𝐾 ∈ HL ∧ 𝑋𝐵𝑌𝐵) ∧ 𝑋𝐶𝑌) ∧ 𝑌𝑉) → 𝑋𝐶𝑌)
28 breq1 4647 . . . . . . . 8 (𝑋 = (0.‘𝐾) → (𝑋𝐶𝑌 ↔ (0.‘𝐾)𝐶𝑌))
2927, 28syl5ibcom 235 . . . . . . 7 ((((𝐾 ∈ HL ∧ 𝑋𝐵𝑌𝐵) ∧ 𝑋𝐶𝑌) ∧ 𝑌𝑉) → (𝑋 = (0.‘𝐾) → (0.‘𝐾)𝐶𝑌))
30 eqid 2620 . . . . . . . . 9 (0.‘𝐾) = (0.‘𝐾)
315, 30, 6, 22isat2 34393 . . . . . . . 8 ((𝐾 ∈ HL ∧ 𝑌𝐵) → (𝑌 ∈ (Atoms‘𝐾) ↔ (0.‘𝐾)𝐶𝑌))
3211, 15, 31syl2anc 692 . . . . . . 7 ((((𝐾 ∈ HL ∧ 𝑋𝐵𝑌𝐵) ∧ 𝑋𝐶𝑌) ∧ 𝑌𝑉) → (𝑌 ∈ (Atoms‘𝐾) ↔ (0.‘𝐾)𝐶𝑌))
3329, 32sylibrd 249 . . . . . 6 ((((𝐾 ∈ HL ∧ 𝑋𝐵𝑌𝐵) ∧ 𝑋𝐶𝑌) ∧ 𝑌𝑉) → (𝑋 = (0.‘𝐾) → 𝑌 ∈ (Atoms‘𝐾)))
3433necon3bd 2805 . . . . 5 ((((𝐾 ∈ HL ∧ 𝑋𝐵𝑌𝐵) ∧ 𝑋𝐶𝑌) ∧ 𝑌𝑉) → (¬ 𝑌 ∈ (Atoms‘𝐾) → 𝑋 ≠ (0.‘𝐾)))
3526, 34mpd 15 . . . 4 ((((𝐾 ∈ HL ∧ 𝑋𝐵𝑌𝐵) ∧ 𝑋𝐶𝑌) ∧ 𝑌𝑉) → 𝑋 ≠ (0.‘𝐾))
36 eqid 2620 . . . . . . 7 (LLines‘𝐾) = (LLines‘𝐾)
3736, 8lvolnelln 34694 . . . . . 6 ((𝐾 ∈ HL ∧ 𝑌𝑉) → ¬ 𝑌 ∈ (LLines‘𝐾))
3811, 37sylancom 700 . . . . 5 ((((𝐾 ∈ HL ∧ 𝑋𝐵𝑌𝐵) ∧ 𝑋𝐶𝑌) ∧ 𝑌𝑉) → ¬ 𝑌 ∈ (LLines‘𝐾))
3911adantr 481 . . . . . 6 (((((𝐾 ∈ HL ∧ 𝑋𝐵𝑌𝐵) ∧ 𝑋𝐶𝑌) ∧ 𝑌𝑉) ∧ 𝑋 ∈ (Atoms‘𝐾)) → 𝐾 ∈ HL)
4015adantr 481 . . . . . 6 (((((𝐾 ∈ HL ∧ 𝑋𝐵𝑌𝐵) ∧ 𝑋𝐶𝑌) ∧ 𝑌𝑉) ∧ 𝑋 ∈ (Atoms‘𝐾)) → 𝑌𝐵)
41 simpr 477 . . . . . 6 (((((𝐾 ∈ HL ∧ 𝑋𝐵𝑌𝐵) ∧ 𝑋𝐶𝑌) ∧ 𝑌𝑉) ∧ 𝑋 ∈ (Atoms‘𝐾)) → 𝑋 ∈ (Atoms‘𝐾))
42 simpllr 798 . . . . . 6 (((((𝐾 ∈ HL ∧ 𝑋𝐵𝑌𝐵) ∧ 𝑋𝐶𝑌) ∧ 𝑌𝑉) ∧ 𝑋 ∈ (Atoms‘𝐾)) → 𝑋𝐶𝑌)
435, 6, 22, 36llni 34613 . . . . . 6 (((𝐾 ∈ HL ∧ 𝑌𝐵𝑋 ∈ (Atoms‘𝐾)) ∧ 𝑋𝐶𝑌) → 𝑌 ∈ (LLines‘𝐾))
4439, 40, 41, 42, 43syl31anc 1327 . . . . 5 (((((𝐾 ∈ HL ∧ 𝑋𝐵𝑌𝐵) ∧ 𝑋𝐶𝑌) ∧ 𝑌𝑉) ∧ 𝑋 ∈ (Atoms‘𝐾)) → 𝑌 ∈ (LLines‘𝐾))
4538, 44mtand 690 . . . 4 ((((𝐾 ∈ HL ∧ 𝑋𝐵𝑌𝐵) ∧ 𝑋𝐶𝑌) ∧ 𝑌𝑉) → ¬ 𝑋 ∈ (Atoms‘𝐾))
467, 8lvolnelpln 34695 . . . . . 6 ((𝐾 ∈ HL ∧ 𝑌𝑉) → ¬ 𝑌𝑃)
4711, 46sylancom 700 . . . . 5 ((((𝐾 ∈ HL ∧ 𝑋𝐵𝑌𝐵) ∧ 𝑋𝐶𝑌) ∧ 𝑌𝑉) → ¬ 𝑌𝑃)
485, 6, 36, 7llncvrlpln 34663 . . . . . 6 (((𝐾 ∈ HL ∧ 𝑋𝐵𝑌𝐵) ∧ 𝑋𝐶𝑌) → (𝑋 ∈ (LLines‘𝐾) ↔ 𝑌𝑃))
4948adantr 481 . . . . 5 ((((𝐾 ∈ HL ∧ 𝑋𝐵𝑌𝐵) ∧ 𝑋𝐶𝑌) ∧ 𝑌𝑉) → (𝑋 ∈ (LLines‘𝐾) ↔ 𝑌𝑃))
5047, 49mtbird 315 . . . 4 ((((𝐾 ∈ HL ∧ 𝑋𝐵𝑌𝐵) ∧ 𝑋𝐶𝑌) ∧ 𝑌𝑉) → ¬ 𝑋 ∈ (LLines‘𝐾))
515, 16, 30, 22, 36, 7lplnle 34645 . . . 4 (((𝐾 ∈ HL ∧ 𝑋𝐵) ∧ (𝑋 ≠ (0.‘𝐾) ∧ ¬ 𝑋 ∈ (Atoms‘𝐾) ∧ ¬ 𝑋 ∈ (LLines‘𝐾))) → ∃𝑧𝑃 𝑧(le‘𝐾)𝑋)
5211, 12, 35, 45, 50, 51syl23anc 1331 . . 3 ((((𝐾 ∈ HL ∧ 𝑋𝐵𝑌𝐵) ∧ 𝑋𝐶𝑌) ∧ 𝑌𝑉) → ∃𝑧𝑃 𝑧(le‘𝐾)𝑋)
53 simpr3 1067 . . . . . . . 8 ((((𝐾 ∈ HL ∧ 𝑋𝐵𝑌𝐵) ∧ 𝑋𝐶𝑌) ∧ (𝑌𝑉𝑧𝑃𝑧(le‘𝐾)𝑋)) → 𝑧(le‘𝐾)𝑋)
54 simpll1 1098 . . . . . . . . . 10 ((((𝐾 ∈ HL ∧ 𝑋𝐵𝑌𝐵) ∧ 𝑋𝐶𝑌) ∧ (𝑌𝑉𝑧𝑃𝑧(le‘𝐾)𝑋)) → 𝐾 ∈ HL)
55 hlop 34468 . . . . . . . . . 10 (𝐾 ∈ HL → 𝐾 ∈ OP)
5654, 55syl 17 . . . . . . . . 9 ((((𝐾 ∈ HL ∧ 𝑋𝐵𝑌𝐵) ∧ 𝑋𝐶𝑌) ∧ (𝑌𝑉𝑧𝑃𝑧(le‘𝐾)𝑋)) → 𝐾 ∈ OP)
57 simpr2 1066 . . . . . . . . . 10 ((((𝐾 ∈ HL ∧ 𝑋𝐵𝑌𝐵) ∧ 𝑋𝐶𝑌) ∧ (𝑌𝑉𝑧𝑃𝑧(le‘𝐾)𝑋)) → 𝑧𝑃)
585, 7lplnbase 34639 . . . . . . . . . 10 (𝑧𝑃𝑧𝐵)
5957, 58syl 17 . . . . . . . . 9 ((((𝐾 ∈ HL ∧ 𝑋𝐵𝑌𝐵) ∧ 𝑋𝐶𝑌) ∧ (𝑌𝑉𝑧𝑃𝑧(le‘𝐾)𝑋)) → 𝑧𝐵)
60 simpll2 1099 . . . . . . . . 9 ((((𝐾 ∈ HL ∧ 𝑋𝐵𝑌𝐵) ∧ 𝑋𝐶𝑌) ∧ (𝑌𝑉𝑧𝑃𝑧(le‘𝐾)𝑋)) → 𝑋𝐵)
61 simpll3 1100 . . . . . . . . 9 ((((𝐾 ∈ HL ∧ 𝑋𝐵𝑌𝐵) ∧ 𝑋𝐶𝑌) ∧ (𝑌𝑉𝑧𝑃𝑧(le‘𝐾)𝑋)) → 𝑌𝐵)
62 simpr1 1065 . . . . . . . . . 10 ((((𝐾 ∈ HL ∧ 𝑋𝐵𝑌𝐵) ∧ 𝑋𝐶𝑌) ∧ (𝑌𝑉𝑧𝑃𝑧(le‘𝐾)𝑋)) → 𝑌𝑉)
635, 16, 6cvrle 34384 . . . . . . . . . . . 12 (((𝐾 ∈ HL ∧ 𝑋𝐵𝑌𝐵) ∧ 𝑋𝐶𝑌) → 𝑋(le‘𝐾)𝑌)
6463adantr 481 . . . . . . . . . . 11 ((((𝐾 ∈ HL ∧ 𝑋𝐵𝑌𝐵) ∧ 𝑋𝐶𝑌) ∧ (𝑌𝑉𝑧𝑃𝑧(le‘𝐾)𝑋)) → 𝑋(le‘𝐾)𝑌)
65 hlpos 34471 . . . . . . . . . . . . 13 (𝐾 ∈ HL → 𝐾 ∈ Poset)
6654, 65syl 17 . . . . . . . . . . . 12 ((((𝐾 ∈ HL ∧ 𝑋𝐵𝑌𝐵) ∧ 𝑋𝐶𝑌) ∧ (𝑌𝑉𝑧𝑃𝑧(le‘𝐾)𝑋)) → 𝐾 ∈ Poset)
675, 16postr 16934 . . . . . . . . . . . 12 ((𝐾 ∈ Poset ∧ (𝑧𝐵𝑋𝐵𝑌𝐵)) → ((𝑧(le‘𝐾)𝑋𝑋(le‘𝐾)𝑌) → 𝑧(le‘𝐾)𝑌))
6866, 59, 60, 61, 67syl13anc 1326 . . . . . . . . . . 11 ((((𝐾 ∈ HL ∧ 𝑋𝐵𝑌𝐵) ∧ 𝑋𝐶𝑌) ∧ (𝑌𝑉𝑧𝑃𝑧(le‘𝐾)𝑋)) → ((𝑧(le‘𝐾)𝑋𝑋(le‘𝐾)𝑌) → 𝑧(le‘𝐾)𝑌))
6953, 64, 68mp2and 714 . . . . . . . . . 10 ((((𝐾 ∈ HL ∧ 𝑋𝐵𝑌𝐵) ∧ 𝑋𝐶𝑌) ∧ (𝑌𝑉𝑧𝑃𝑧(le‘𝐾)𝑋)) → 𝑧(le‘𝐾)𝑌)
7016, 6, 7, 8lplncvrlvol2 34720 . . . . . . . . . 10 (((𝐾 ∈ HL ∧ 𝑧𝑃𝑌𝑉) ∧ 𝑧(le‘𝐾)𝑌) → 𝑧𝐶𝑌)
7154, 57, 62, 69, 70syl31anc 1327 . . . . . . . . 9 ((((𝐾 ∈ HL ∧ 𝑋𝐵𝑌𝐵) ∧ 𝑋𝐶𝑌) ∧ (𝑌𝑉𝑧𝑃𝑧(le‘𝐾)𝑋)) → 𝑧𝐶𝑌)
72 simplr 791 . . . . . . . . 9 ((((𝐾 ∈ HL ∧ 𝑋𝐵𝑌𝐵) ∧ 𝑋𝐶𝑌) ∧ (𝑌𝑉𝑧𝑃𝑧(le‘𝐾)𝑋)) → 𝑋𝐶𝑌)
735, 16, 6cvrcmp2 34390 . . . . . . . . 9 ((𝐾 ∈ OP ∧ (𝑧𝐵𝑋𝐵𝑌𝐵) ∧ (𝑧𝐶𝑌𝑋𝐶𝑌)) → (𝑧(le‘𝐾)𝑋𝑧 = 𝑋))
7456, 59, 60, 61, 71, 72, 73syl132anc 1342 . . . . . . . 8 ((((𝐾 ∈ HL ∧ 𝑋𝐵𝑌𝐵) ∧ 𝑋𝐶𝑌) ∧ (𝑌𝑉𝑧𝑃𝑧(le‘𝐾)𝑋)) → (𝑧(le‘𝐾)𝑋𝑧 = 𝑋))
7553, 74mpbid 222 . . . . . . 7 ((((𝐾 ∈ HL ∧ 𝑋𝐵𝑌𝐵) ∧ 𝑋𝐶𝑌) ∧ (𝑌𝑉𝑧𝑃𝑧(le‘𝐾)𝑋)) → 𝑧 = 𝑋)
7675, 57eqeltrrd 2700 . . . . . 6 ((((𝐾 ∈ HL ∧ 𝑋𝐵𝑌𝐵) ∧ 𝑋𝐶𝑌) ∧ (𝑌𝑉𝑧𝑃𝑧(le‘𝐾)𝑋)) → 𝑋𝑃)
77763exp2 1283 . . . . 5 (((𝐾 ∈ HL ∧ 𝑋𝐵𝑌𝐵) ∧ 𝑋𝐶𝑌) → (𝑌𝑉 → (𝑧𝑃 → (𝑧(le‘𝐾)𝑋𝑋𝑃))))
7877imp 445 . . . 4 ((((𝐾 ∈ HL ∧ 𝑋𝐵𝑌𝐵) ∧ 𝑋𝐶𝑌) ∧ 𝑌𝑉) → (𝑧𝑃 → (𝑧(le‘𝐾)𝑋𝑋𝑃)))
7978rexlimdv 3026 . . 3 ((((𝐾 ∈ HL ∧ 𝑋𝐵𝑌𝐵) ∧ 𝑋𝐶𝑌) ∧ 𝑌𝑉) → (∃𝑧𝑃 𝑧(le‘𝐾)𝑋𝑋𝑃))
8052, 79mpd 15 . 2 ((((𝐾 ∈ HL ∧ 𝑋𝐵𝑌𝐵) ∧ 𝑋𝐶𝑌) ∧ 𝑌𝑉) → 𝑋𝑃)
8110, 80impbida 876 1 (((𝐾 ∈ HL ∧ 𝑋𝐵𝑌𝐵) ∧ 𝑋𝐶𝑌) → (𝑋𝑃𝑌𝑉))
Colors of variables: wff setvar class
Syntax hints:  ¬ wn 3  wi 4  wb 196  wa 384  w3a 1036   = wceq 1481  wcel 1988  wne 2791  wrex 2910   class class class wbr 4644  cfv 5876  Basecbs 15838  lecple 15929  Posetcpo 16921  0.cp0 17018  Latclat 17026  OPcops 34278  ccvr 34368  Atomscatm 34369  HLchlt 34456  LLinesclln 34596  LPlanesclpl 34597  LVolsclvol 34598
This theorem was proved from axioms:  ax-mp 5  ax-1 6  ax-2 7  ax-3 8  ax-gen 1720  ax-4 1735  ax-5 1837  ax-6 1886  ax-7 1933  ax-8 1990  ax-9 1997  ax-10 2017  ax-11 2032  ax-12 2045  ax-13 2244  ax-ext 2600  ax-rep 4762  ax-sep 4772  ax-nul 4780  ax-pow 4834  ax-pr 4897  ax-un 6934
This theorem depends on definitions:  df-bi 197  df-or 385  df-an 386  df-3or 1037  df-3an 1038  df-tru 1484  df-ex 1703  df-nf 1708  df-sb 1879  df-eu 2472  df-mo 2473  df-clab 2607  df-cleq 2613  df-clel 2616  df-nfc 2751  df-ne 2792  df-ral 2914  df-rex 2915  df-reu 2916  df-rab 2918  df-v 3197  df-sbc 3430  df-csb 3527  df-dif 3570  df-un 3572  df-in 3574  df-ss 3581  df-nul 3908  df-if 4078  df-pw 4151  df-sn 4169  df-pr 4171  df-op 4175  df-uni 4428  df-iun 4513  df-br 4645  df-opab 4704  df-mpt 4721  df-id 5014  df-xp 5110  df-rel 5111  df-cnv 5112  df-co 5113  df-dm 5114  df-rn 5115  df-res 5116  df-ima 5117  df-iota 5839  df-fun 5878  df-fn 5879  df-f 5880  df-f1 5881  df-fo 5882  df-f1o 5883  df-fv 5884  df-riota 6596  df-ov 6638  df-oprab 6639  df-preset 16909  df-poset 16927  df-plt 16939  df-lub 16955  df-glb 16956  df-join 16957  df-meet 16958  df-p0 17020  df-lat 17027  df-clat 17089  df-oposet 34282  df-ol 34284  df-oml 34285  df-covers 34372  df-ats 34373  df-atl 34404  df-cvlat 34428  df-hlat 34457  df-llines 34603  df-lplanes 34604  df-lvols 34605
This theorem is referenced by:  2lplnmj  34727
  Copyright terms: Public domain W3C validator