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 33920
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 1093 . . 3 ((((𝐾 ∈ HL ∧ 𝑋𝐵𝑌𝐵) ∧ 𝑋𝐶𝑌) ∧ 𝑋𝑃) → 𝐾 ∈ HL)
2 simpll3 1095 . . 3 ((((𝐾 ∈ HL ∧ 𝑋𝐵𝑌𝐵) ∧ 𝑋𝐶𝑌) ∧ 𝑋𝑃) → 𝑌𝐵)
3 simpr 476 . . 3 ((((𝐾 ∈ HL ∧ 𝑋𝐵𝑌𝐵) ∧ 𝑋𝐶𝑌) ∧ 𝑋𝑃) → 𝑋𝑃)
4 simplr 788 . . 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 33879 . . 3 (((𝐾 ∈ HL ∧ 𝑌𝐵𝑋𝑃) ∧ 𝑋𝐶𝑌) → 𝑌𝑉)
101, 2, 3, 4, 9syl31anc 1321 . 2 ((((𝐾 ∈ HL ∧ 𝑋𝐵𝑌𝐵) ∧ 𝑋𝐶𝑌) ∧ 𝑋𝑃) → 𝑌𝑉)
11 simpll1 1093 . . . 4 ((((𝐾 ∈ HL ∧ 𝑋𝐵𝑌𝐵) ∧ 𝑋𝐶𝑌) ∧ 𝑌𝑉) → 𝐾 ∈ HL)
12 simpll2 1094 . . . 4 ((((𝐾 ∈ HL ∧ 𝑋𝐵𝑌𝐵) ∧ 𝑋𝐶𝑌) ∧ 𝑌𝑉) → 𝑋𝐵)
13 hllat 33668 . . . . . . . 8 (𝐾 ∈ HL → 𝐾 ∈ Lat)
1411, 13syl 17 . . . . . . 7 ((((𝐾 ∈ HL ∧ 𝑋𝐵𝑌𝐵) ∧ 𝑋𝐶𝑌) ∧ 𝑌𝑉) → 𝐾 ∈ Lat)
15 simpll3 1095 . . . . . . 7 ((((𝐾 ∈ HL ∧ 𝑋𝐵𝑌𝐵) ∧ 𝑋𝐶𝑌) ∧ 𝑌𝑉) → 𝑌𝐵)
16 eqid 2610 . . . . . . . 8 (le‘𝐾) = (le‘𝐾)
175, 16latref 16876 . . . . . . 7 ((𝐾 ∈ Lat ∧ 𝑌𝐵) → 𝑌(le‘𝐾)𝑌)
1814, 15, 17syl2anc 691 . . . . . 6 ((((𝐾 ∈ HL ∧ 𝑋𝐵𝑌𝐵) ∧ 𝑋𝐶𝑌) ∧ 𝑌𝑉) → 𝑌(le‘𝐾)𝑌)
1911adantr 480 . . . . . . . 8 (((((𝐾 ∈ HL ∧ 𝑋𝐵𝑌𝐵) ∧ 𝑋𝐶𝑌) ∧ 𝑌𝑉) ∧ 𝑌 ∈ (Atoms‘𝐾)) → 𝐾 ∈ HL)
20 simplr 788 . . . . . . . 8 (((((𝐾 ∈ HL ∧ 𝑋𝐵𝑌𝐵) ∧ 𝑋𝐶𝑌) ∧ 𝑌𝑉) ∧ 𝑌 ∈ (Atoms‘𝐾)) → 𝑌𝑉)
21 simpr 476 . . . . . . . 8 (((((𝐾 ∈ HL ∧ 𝑋𝐵𝑌𝐵) ∧ 𝑋𝐶𝑌) ∧ 𝑌𝑉) ∧ 𝑌 ∈ (Atoms‘𝐾)) → 𝑌 ∈ (Atoms‘𝐾))
22 eqid 2610 . . . . . . . . 9 (Atoms‘𝐾) = (Atoms‘𝐾)
2316, 22, 8lvolnleat 33887 . . . . . . . 8 ((𝐾 ∈ HL ∧ 𝑌𝑉𝑌 ∈ (Atoms‘𝐾)) → ¬ 𝑌(le‘𝐾)𝑌)
2419, 20, 21, 23syl3anc 1318 . . . . . . 7 (((((𝐾 ∈ HL ∧ 𝑋𝐵𝑌𝐵) ∧ 𝑋𝐶𝑌) ∧ 𝑌𝑉) ∧ 𝑌 ∈ (Atoms‘𝐾)) → ¬ 𝑌(le‘𝐾)𝑌)
2524ex 449 . . . . . 6 ((((𝐾 ∈ HL ∧ 𝑋𝐵𝑌𝐵) ∧ 𝑋𝐶𝑌) ∧ 𝑌𝑉) → (𝑌 ∈ (Atoms‘𝐾) → ¬ 𝑌(le‘𝐾)𝑌))
2618, 25mt2d 130 . . . . 5 ((((𝐾 ∈ HL ∧ 𝑋𝐵𝑌𝐵) ∧ 𝑋𝐶𝑌) ∧ 𝑌𝑉) → ¬ 𝑌 ∈ (Atoms‘𝐾))
27 simplr 788 . . . . . . . 8 ((((𝐾 ∈ HL ∧ 𝑋𝐵𝑌𝐵) ∧ 𝑋𝐶𝑌) ∧ 𝑌𝑉) → 𝑋𝐶𝑌)
28 breq1 4586 . . . . . . . 8 (𝑋 = (0.‘𝐾) → (𝑋𝐶𝑌 ↔ (0.‘𝐾)𝐶𝑌))
2927, 28syl5ibcom 234 . . . . . . 7 ((((𝐾 ∈ HL ∧ 𝑋𝐵𝑌𝐵) ∧ 𝑋𝐶𝑌) ∧ 𝑌𝑉) → (𝑋 = (0.‘𝐾) → (0.‘𝐾)𝐶𝑌))
30 eqid 2610 . . . . . . . . 9 (0.‘𝐾) = (0.‘𝐾)
315, 30, 6, 22isat2 33592 . . . . . . . 8 ((𝐾 ∈ HL ∧ 𝑌𝐵) → (𝑌 ∈ (Atoms‘𝐾) ↔ (0.‘𝐾)𝐶𝑌))
3211, 15, 31syl2anc 691 . . . . . . 7 ((((𝐾 ∈ HL ∧ 𝑋𝐵𝑌𝐵) ∧ 𝑋𝐶𝑌) ∧ 𝑌𝑉) → (𝑌 ∈ (Atoms‘𝐾) ↔ (0.‘𝐾)𝐶𝑌))
3329, 32sylibrd 248 . . . . . 6 ((((𝐾 ∈ HL ∧ 𝑋𝐵𝑌𝐵) ∧ 𝑋𝐶𝑌) ∧ 𝑌𝑉) → (𝑋 = (0.‘𝐾) → 𝑌 ∈ (Atoms‘𝐾)))
3433necon3bd 2796 . . . . 5 ((((𝐾 ∈ HL ∧ 𝑋𝐵𝑌𝐵) ∧ 𝑋𝐶𝑌) ∧ 𝑌𝑉) → (¬ 𝑌 ∈ (Atoms‘𝐾) → 𝑋 ≠ (0.‘𝐾)))
3526, 34mpd 15 . . . 4 ((((𝐾 ∈ HL ∧ 𝑋𝐵𝑌𝐵) ∧ 𝑋𝐶𝑌) ∧ 𝑌𝑉) → 𝑋 ≠ (0.‘𝐾))
36 eqid 2610 . . . . . . 7 (LLines‘𝐾) = (LLines‘𝐾)
3736, 8lvolnelln 33893 . . . . . 6 ((𝐾 ∈ HL ∧ 𝑌𝑉) → ¬ 𝑌 ∈ (LLines‘𝐾))
3811, 37sylancom 698 . . . . 5 ((((𝐾 ∈ HL ∧ 𝑋𝐵𝑌𝐵) ∧ 𝑋𝐶𝑌) ∧ 𝑌𝑉) → ¬ 𝑌 ∈ (LLines‘𝐾))
3911adantr 480 . . . . . 6 (((((𝐾 ∈ HL ∧ 𝑋𝐵𝑌𝐵) ∧ 𝑋𝐶𝑌) ∧ 𝑌𝑉) ∧ 𝑋 ∈ (Atoms‘𝐾)) → 𝐾 ∈ HL)
4015adantr 480 . . . . . 6 (((((𝐾 ∈ HL ∧ 𝑋𝐵𝑌𝐵) ∧ 𝑋𝐶𝑌) ∧ 𝑌𝑉) ∧ 𝑋 ∈ (Atoms‘𝐾)) → 𝑌𝐵)
41 simpr 476 . . . . . 6 (((((𝐾 ∈ HL ∧ 𝑋𝐵𝑌𝐵) ∧ 𝑋𝐶𝑌) ∧ 𝑌𝑉) ∧ 𝑋 ∈ (Atoms‘𝐾)) → 𝑋 ∈ (Atoms‘𝐾))
42 simpllr 795 . . . . . 6 (((((𝐾 ∈ HL ∧ 𝑋𝐵𝑌𝐵) ∧ 𝑋𝐶𝑌) ∧ 𝑌𝑉) ∧ 𝑋 ∈ (Atoms‘𝐾)) → 𝑋𝐶𝑌)
435, 6, 22, 36llni 33812 . . . . . 6 (((𝐾 ∈ HL ∧ 𝑌𝐵𝑋 ∈ (Atoms‘𝐾)) ∧ 𝑋𝐶𝑌) → 𝑌 ∈ (LLines‘𝐾))
4439, 40, 41, 42, 43syl31anc 1321 . . . . 5 (((((𝐾 ∈ HL ∧ 𝑋𝐵𝑌𝐵) ∧ 𝑋𝐶𝑌) ∧ 𝑌𝑉) ∧ 𝑋 ∈ (Atoms‘𝐾)) → 𝑌 ∈ (LLines‘𝐾))
4538, 44mtand 689 . . . 4 ((((𝐾 ∈ HL ∧ 𝑋𝐵𝑌𝐵) ∧ 𝑋𝐶𝑌) ∧ 𝑌𝑉) → ¬ 𝑋 ∈ (Atoms‘𝐾))
467, 8lvolnelpln 33894 . . . . . 6 ((𝐾 ∈ HL ∧ 𝑌𝑉) → ¬ 𝑌𝑃)
4711, 46sylancom 698 . . . . 5 ((((𝐾 ∈ HL ∧ 𝑋𝐵𝑌𝐵) ∧ 𝑋𝐶𝑌) ∧ 𝑌𝑉) → ¬ 𝑌𝑃)
485, 6, 36, 7llncvrlpln 33862 . . . . . 6 (((𝐾 ∈ HL ∧ 𝑋𝐵𝑌𝐵) ∧ 𝑋𝐶𝑌) → (𝑋 ∈ (LLines‘𝐾) ↔ 𝑌𝑃))
4948adantr 480 . . . . 5 ((((𝐾 ∈ HL ∧ 𝑋𝐵𝑌𝐵) ∧ 𝑋𝐶𝑌) ∧ 𝑌𝑉) → (𝑋 ∈ (LLines‘𝐾) ↔ 𝑌𝑃))
5047, 49mtbird 314 . . . 4 ((((𝐾 ∈ HL ∧ 𝑋𝐵𝑌𝐵) ∧ 𝑋𝐶𝑌) ∧ 𝑌𝑉) → ¬ 𝑋 ∈ (LLines‘𝐾))
515, 16, 30, 22, 36, 7lplnle 33844 . . . 4 (((𝐾 ∈ HL ∧ 𝑋𝐵) ∧ (𝑋 ≠ (0.‘𝐾) ∧ ¬ 𝑋 ∈ (Atoms‘𝐾) ∧ ¬ 𝑋 ∈ (LLines‘𝐾))) → ∃𝑧𝑃 𝑧(le‘𝐾)𝑋)
5211, 12, 35, 45, 50, 51syl23anc 1325 . . 3 ((((𝐾 ∈ HL ∧ 𝑋𝐵𝑌𝐵) ∧ 𝑋𝐶𝑌) ∧ 𝑌𝑉) → ∃𝑧𝑃 𝑧(le‘𝐾)𝑋)
53 simpr3 1062 . . . . . . . 8 ((((𝐾 ∈ HL ∧ 𝑋𝐵𝑌𝐵) ∧ 𝑋𝐶𝑌) ∧ (𝑌𝑉𝑧𝑃𝑧(le‘𝐾)𝑋)) → 𝑧(le‘𝐾)𝑋)
54 simpll1 1093 . . . . . . . . . 10 ((((𝐾 ∈ HL ∧ 𝑋𝐵𝑌𝐵) ∧ 𝑋𝐶𝑌) ∧ (𝑌𝑉𝑧𝑃𝑧(le‘𝐾)𝑋)) → 𝐾 ∈ HL)
55 hlop 33667 . . . . . . . . . 10 (𝐾 ∈ HL → 𝐾 ∈ OP)
5654, 55syl 17 . . . . . . . . 9 ((((𝐾 ∈ HL ∧ 𝑋𝐵𝑌𝐵) ∧ 𝑋𝐶𝑌) ∧ (𝑌𝑉𝑧𝑃𝑧(le‘𝐾)𝑋)) → 𝐾 ∈ OP)
57 simpr2 1061 . . . . . . . . . 10 ((((𝐾 ∈ HL ∧ 𝑋𝐵𝑌𝐵) ∧ 𝑋𝐶𝑌) ∧ (𝑌𝑉𝑧𝑃𝑧(le‘𝐾)𝑋)) → 𝑧𝑃)
585, 7lplnbase 33838 . . . . . . . . . 10 (𝑧𝑃𝑧𝐵)
5957, 58syl 17 . . . . . . . . 9 ((((𝐾 ∈ HL ∧ 𝑋𝐵𝑌𝐵) ∧ 𝑋𝐶𝑌) ∧ (𝑌𝑉𝑧𝑃𝑧(le‘𝐾)𝑋)) → 𝑧𝐵)
60 simpll2 1094 . . . . . . . . 9 ((((𝐾 ∈ HL ∧ 𝑋𝐵𝑌𝐵) ∧ 𝑋𝐶𝑌) ∧ (𝑌𝑉𝑧𝑃𝑧(le‘𝐾)𝑋)) → 𝑋𝐵)
61 simpll3 1095 . . . . . . . . 9 ((((𝐾 ∈ HL ∧ 𝑋𝐵𝑌𝐵) ∧ 𝑋𝐶𝑌) ∧ (𝑌𝑉𝑧𝑃𝑧(le‘𝐾)𝑋)) → 𝑌𝐵)
62 simpr1 1060 . . . . . . . . . 10 ((((𝐾 ∈ HL ∧ 𝑋𝐵𝑌𝐵) ∧ 𝑋𝐶𝑌) ∧ (𝑌𝑉𝑧𝑃𝑧(le‘𝐾)𝑋)) → 𝑌𝑉)
635, 16, 6cvrle 33583 . . . . . . . . . . . 12 (((𝐾 ∈ HL ∧ 𝑋𝐵𝑌𝐵) ∧ 𝑋𝐶𝑌) → 𝑋(le‘𝐾)𝑌)
6463adantr 480 . . . . . . . . . . 11 ((((𝐾 ∈ HL ∧ 𝑋𝐵𝑌𝐵) ∧ 𝑋𝐶𝑌) ∧ (𝑌𝑉𝑧𝑃𝑧(le‘𝐾)𝑋)) → 𝑋(le‘𝐾)𝑌)
65 hlpos 33670 . . . . . . . . . . . . 13 (𝐾 ∈ HL → 𝐾 ∈ Poset)
6654, 65syl 17 . . . . . . . . . . . 12 ((((𝐾 ∈ HL ∧ 𝑋𝐵𝑌𝐵) ∧ 𝑋𝐶𝑌) ∧ (𝑌𝑉𝑧𝑃𝑧(le‘𝐾)𝑋)) → 𝐾 ∈ Poset)
675, 16postr 16776 . . . . . . . . . . . 12 ((𝐾 ∈ Poset ∧ (𝑧𝐵𝑋𝐵𝑌𝐵)) → ((𝑧(le‘𝐾)𝑋𝑋(le‘𝐾)𝑌) → 𝑧(le‘𝐾)𝑌))
6866, 59, 60, 61, 67syl13anc 1320 . . . . . . . . . . 11 ((((𝐾 ∈ HL ∧ 𝑋𝐵𝑌𝐵) ∧ 𝑋𝐶𝑌) ∧ (𝑌𝑉𝑧𝑃𝑧(le‘𝐾)𝑋)) → ((𝑧(le‘𝐾)𝑋𝑋(le‘𝐾)𝑌) → 𝑧(le‘𝐾)𝑌))
6953, 64, 68mp2and 711 . . . . . . . . . 10 ((((𝐾 ∈ HL ∧ 𝑋𝐵𝑌𝐵) ∧ 𝑋𝐶𝑌) ∧ (𝑌𝑉𝑧𝑃𝑧(le‘𝐾)𝑋)) → 𝑧(le‘𝐾)𝑌)
7016, 6, 7, 8lplncvrlvol2 33919 . . . . . . . . . 10 (((𝐾 ∈ HL ∧ 𝑧𝑃𝑌𝑉) ∧ 𝑧(le‘𝐾)𝑌) → 𝑧𝐶𝑌)
7154, 57, 62, 69, 70syl31anc 1321 . . . . . . . . 9 ((((𝐾 ∈ HL ∧ 𝑋𝐵𝑌𝐵) ∧ 𝑋𝐶𝑌) ∧ (𝑌𝑉𝑧𝑃𝑧(le‘𝐾)𝑋)) → 𝑧𝐶𝑌)
72 simplr 788 . . . . . . . . 9 ((((𝐾 ∈ HL ∧ 𝑋𝐵𝑌𝐵) ∧ 𝑋𝐶𝑌) ∧ (𝑌𝑉𝑧𝑃𝑧(le‘𝐾)𝑋)) → 𝑋𝐶𝑌)
735, 16, 6cvrcmp2 33589 . . . . . . . . 9 ((𝐾 ∈ OP ∧ (𝑧𝐵𝑋𝐵𝑌𝐵) ∧ (𝑧𝐶𝑌𝑋𝐶𝑌)) → (𝑧(le‘𝐾)𝑋𝑧 = 𝑋))
7456, 59, 60, 61, 71, 72, 73syl132anc 1336 . . . . . . . 8 ((((𝐾 ∈ HL ∧ 𝑋𝐵𝑌𝐵) ∧ 𝑋𝐶𝑌) ∧ (𝑌𝑉𝑧𝑃𝑧(le‘𝐾)𝑋)) → (𝑧(le‘𝐾)𝑋𝑧 = 𝑋))
7553, 74mpbid 221 . . . . . . 7 ((((𝐾 ∈ HL ∧ 𝑋𝐵𝑌𝐵) ∧ 𝑋𝐶𝑌) ∧ (𝑌𝑉𝑧𝑃𝑧(le‘𝐾)𝑋)) → 𝑧 = 𝑋)
7675, 57eqeltrrd 2689 . . . . . 6 ((((𝐾 ∈ HL ∧ 𝑋𝐵𝑌𝐵) ∧ 𝑋𝐶𝑌) ∧ (𝑌𝑉𝑧𝑃𝑧(le‘𝐾)𝑋)) → 𝑋𝑃)
77763exp2 1277 . . . . 5 (((𝐾 ∈ HL ∧ 𝑋𝐵𝑌𝐵) ∧ 𝑋𝐶𝑌) → (𝑌𝑉 → (𝑧𝑃 → (𝑧(le‘𝐾)𝑋𝑋𝑃))))
7877imp 444 . . . 4 ((((𝐾 ∈ HL ∧ 𝑋𝐵𝑌𝐵) ∧ 𝑋𝐶𝑌) ∧ 𝑌𝑉) → (𝑧𝑃 → (𝑧(le‘𝐾)𝑋𝑋𝑃)))
7978rexlimdv 3012 . . 3 ((((𝐾 ∈ HL ∧ 𝑋𝐵𝑌𝐵) ∧ 𝑋𝐶𝑌) ∧ 𝑌𝑉) → (∃𝑧𝑃 𝑧(le‘𝐾)𝑋𝑋𝑃))
8052, 79mpd 15 . 2 ((((𝐾 ∈ HL ∧ 𝑋𝐵𝑌𝐵) ∧ 𝑋𝐶𝑌) ∧ 𝑌𝑉) → 𝑋𝑃)
8110, 80impbida 873 1 (((𝐾 ∈ HL ∧ 𝑋𝐵𝑌𝐵) ∧ 𝑋𝐶𝑌) → (𝑋𝑃𝑌𝑉))
Colors of variables: wff setvar class
Syntax hints:  ¬ wn 3  wi 4  wb 195  wa 383  w3a 1031   = wceq 1475  wcel 1977  wne 2780  wrex 2897   class class class wbr 4583  cfv 5804  Basecbs 15695  lecple 15775  Posetcpo 16763  0.cp0 16860  Latclat 16868  OPcops 33477  ccvr 33567  Atomscatm 33568  HLchlt 33655  LLinesclln 33795  LPlanesclpl 33796  LVolsclvol 33797
This theorem was proved from axioms:  ax-mp 5  ax-1 6  ax-2 7  ax-3 8  ax-gen 1713  ax-4 1728  ax-5 1827  ax-6 1875  ax-7 1922  ax-8 1979  ax-9 1986  ax-10 2006  ax-11 2021  ax-12 2034  ax-13 2234  ax-ext 2590  ax-rep 4699  ax-sep 4709  ax-nul 4717  ax-pow 4769  ax-pr 4833  ax-un 6847
This theorem depends on definitions:  df-bi 196  df-or 384  df-an 385  df-3or 1032  df-3an 1033  df-tru 1478  df-ex 1696  df-nf 1701  df-sb 1868  df-eu 2462  df-mo 2463  df-clab 2597  df-cleq 2603  df-clel 2606  df-nfc 2740  df-ne 2782  df-ral 2901  df-rex 2902  df-reu 2903  df-rab 2905  df-v 3175  df-sbc 3403  df-csb 3500  df-dif 3543  df-un 3545  df-in 3547  df-ss 3554  df-nul 3875  df-if 4037  df-pw 4110  df-sn 4126  df-pr 4128  df-op 4132  df-uni 4373  df-iun 4457  df-br 4584  df-opab 4644  df-mpt 4645  df-id 4953  df-xp 5044  df-rel 5045  df-cnv 5046  df-co 5047  df-dm 5048  df-rn 5049  df-res 5050  df-ima 5051  df-iota 5768  df-fun 5806  df-fn 5807  df-f 5808  df-f1 5809  df-fo 5810  df-f1o 5811  df-fv 5812  df-riota 6511  df-ov 6552  df-oprab 6553  df-preset 16751  df-poset 16769  df-plt 16781  df-lub 16797  df-glb 16798  df-join 16799  df-meet 16800  df-p0 16862  df-lat 16869  df-clat 16931  df-oposet 33481  df-ol 33483  df-oml 33484  df-covers 33571  df-ats 33572  df-atl 33603  df-cvlat 33627  df-hlat 33656  df-llines 33802  df-lplanes 33803  df-lvols 33804
This theorem is referenced by:  2lplnmj  33926
  Copyright terms: Public domain W3C validator