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 33719
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 1092 . . 3 ((((𝐾 ∈ HL ∧ 𝑋𝐵𝑌𝐵) ∧ 𝑋𝐶𝑌) ∧ 𝑋𝑃) → 𝐾 ∈ HL)
2 simpll3 1094 . . 3 ((((𝐾 ∈ HL ∧ 𝑋𝐵𝑌𝐵) ∧ 𝑋𝐶𝑌) ∧ 𝑋𝑃) → 𝑌𝐵)
3 simpr 475 . . 3 ((((𝐾 ∈ HL ∧ 𝑋𝐵𝑌𝐵) ∧ 𝑋𝐶𝑌) ∧ 𝑋𝑃) → 𝑋𝑃)
4 simplr 787 . . 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 33678 . . 3 (((𝐾 ∈ HL ∧ 𝑌𝐵𝑋𝑃) ∧ 𝑋𝐶𝑌) → 𝑌𝑉)
101, 2, 3, 4, 9syl31anc 1320 . 2 ((((𝐾 ∈ HL ∧ 𝑋𝐵𝑌𝐵) ∧ 𝑋𝐶𝑌) ∧ 𝑋𝑃) → 𝑌𝑉)
11 simpll1 1092 . . . 4 ((((𝐾 ∈ HL ∧ 𝑋𝐵𝑌𝐵) ∧ 𝑋𝐶𝑌) ∧ 𝑌𝑉) → 𝐾 ∈ HL)
12 simpll2 1093 . . . 4 ((((𝐾 ∈ HL ∧ 𝑋𝐵𝑌𝐵) ∧ 𝑋𝐶𝑌) ∧ 𝑌𝑉) → 𝑋𝐵)
13 hllat 33467 . . . . . . . 8 (𝐾 ∈ HL → 𝐾 ∈ Lat)
1411, 13syl 17 . . . . . . 7 ((((𝐾 ∈ HL ∧ 𝑋𝐵𝑌𝐵) ∧ 𝑋𝐶𝑌) ∧ 𝑌𝑉) → 𝐾 ∈ Lat)
15 simpll3 1094 . . . . . . 7 ((((𝐾 ∈ HL ∧ 𝑋𝐵𝑌𝐵) ∧ 𝑋𝐶𝑌) ∧ 𝑌𝑉) → 𝑌𝐵)
16 eqid 2605 . . . . . . . 8 (le‘𝐾) = (le‘𝐾)
175, 16latref 16818 . . . . . . 7 ((𝐾 ∈ Lat ∧ 𝑌𝐵) → 𝑌(le‘𝐾)𝑌)
1814, 15, 17syl2anc 690 . . . . . 6 ((((𝐾 ∈ HL ∧ 𝑋𝐵𝑌𝐵) ∧ 𝑋𝐶𝑌) ∧ 𝑌𝑉) → 𝑌(le‘𝐾)𝑌)
1911adantr 479 . . . . . . . 8 (((((𝐾 ∈ HL ∧ 𝑋𝐵𝑌𝐵) ∧ 𝑋𝐶𝑌) ∧ 𝑌𝑉) ∧ 𝑌 ∈ (Atoms‘𝐾)) → 𝐾 ∈ HL)
20 simplr 787 . . . . . . . 8 (((((𝐾 ∈ HL ∧ 𝑋𝐵𝑌𝐵) ∧ 𝑋𝐶𝑌) ∧ 𝑌𝑉) ∧ 𝑌 ∈ (Atoms‘𝐾)) → 𝑌𝑉)
21 simpr 475 . . . . . . . 8 (((((𝐾 ∈ HL ∧ 𝑋𝐵𝑌𝐵) ∧ 𝑋𝐶𝑌) ∧ 𝑌𝑉) ∧ 𝑌 ∈ (Atoms‘𝐾)) → 𝑌 ∈ (Atoms‘𝐾))
22 eqid 2605 . . . . . . . . 9 (Atoms‘𝐾) = (Atoms‘𝐾)
2316, 22, 8lvolnleat 33686 . . . . . . . 8 ((𝐾 ∈ HL ∧ 𝑌𝑉𝑌 ∈ (Atoms‘𝐾)) → ¬ 𝑌(le‘𝐾)𝑌)
2419, 20, 21, 23syl3anc 1317 . . . . . . 7 (((((𝐾 ∈ HL ∧ 𝑋𝐵𝑌𝐵) ∧ 𝑋𝐶𝑌) ∧ 𝑌𝑉) ∧ 𝑌 ∈ (Atoms‘𝐾)) → ¬ 𝑌(le‘𝐾)𝑌)
2524ex 448 . . . . . 6 ((((𝐾 ∈ HL ∧ 𝑋𝐵𝑌𝐵) ∧ 𝑋𝐶𝑌) ∧ 𝑌𝑉) → (𝑌 ∈ (Atoms‘𝐾) → ¬ 𝑌(le‘𝐾)𝑌))
2618, 25mt2d 129 . . . . 5 ((((𝐾 ∈ HL ∧ 𝑋𝐵𝑌𝐵) ∧ 𝑋𝐶𝑌) ∧ 𝑌𝑉) → ¬ 𝑌 ∈ (Atoms‘𝐾))
27 simplr 787 . . . . . . . 8 ((((𝐾 ∈ HL ∧ 𝑋𝐵𝑌𝐵) ∧ 𝑋𝐶𝑌) ∧ 𝑌𝑉) → 𝑋𝐶𝑌)
28 breq1 4576 . . . . . . . 8 (𝑋 = (0.‘𝐾) → (𝑋𝐶𝑌 ↔ (0.‘𝐾)𝐶𝑌))
2927, 28syl5ibcom 233 . . . . . . 7 ((((𝐾 ∈ HL ∧ 𝑋𝐵𝑌𝐵) ∧ 𝑋𝐶𝑌) ∧ 𝑌𝑉) → (𝑋 = (0.‘𝐾) → (0.‘𝐾)𝐶𝑌))
30 eqid 2605 . . . . . . . . 9 (0.‘𝐾) = (0.‘𝐾)
315, 30, 6, 22isat2 33391 . . . . . . . 8 ((𝐾 ∈ HL ∧ 𝑌𝐵) → (𝑌 ∈ (Atoms‘𝐾) ↔ (0.‘𝐾)𝐶𝑌))
3211, 15, 31syl2anc 690 . . . . . . 7 ((((𝐾 ∈ HL ∧ 𝑋𝐵𝑌𝐵) ∧ 𝑋𝐶𝑌) ∧ 𝑌𝑉) → (𝑌 ∈ (Atoms‘𝐾) ↔ (0.‘𝐾)𝐶𝑌))
3329, 32sylibrd 247 . . . . . 6 ((((𝐾 ∈ HL ∧ 𝑋𝐵𝑌𝐵) ∧ 𝑋𝐶𝑌) ∧ 𝑌𝑉) → (𝑋 = (0.‘𝐾) → 𝑌 ∈ (Atoms‘𝐾)))
3433necon3bd 2791 . . . . 5 ((((𝐾 ∈ HL ∧ 𝑋𝐵𝑌𝐵) ∧ 𝑋𝐶𝑌) ∧ 𝑌𝑉) → (¬ 𝑌 ∈ (Atoms‘𝐾) → 𝑋 ≠ (0.‘𝐾)))
3526, 34mpd 15 . . . 4 ((((𝐾 ∈ HL ∧ 𝑋𝐵𝑌𝐵) ∧ 𝑋𝐶𝑌) ∧ 𝑌𝑉) → 𝑋 ≠ (0.‘𝐾))
36 eqid 2605 . . . . . . 7 (LLines‘𝐾) = (LLines‘𝐾)
3736, 8lvolnelln 33692 . . . . . 6 ((𝐾 ∈ HL ∧ 𝑌𝑉) → ¬ 𝑌 ∈ (LLines‘𝐾))
3811, 37sylancom 697 . . . . 5 ((((𝐾 ∈ HL ∧ 𝑋𝐵𝑌𝐵) ∧ 𝑋𝐶𝑌) ∧ 𝑌𝑉) → ¬ 𝑌 ∈ (LLines‘𝐾))
3911adantr 479 . . . . . 6 (((((𝐾 ∈ HL ∧ 𝑋𝐵𝑌𝐵) ∧ 𝑋𝐶𝑌) ∧ 𝑌𝑉) ∧ 𝑋 ∈ (Atoms‘𝐾)) → 𝐾 ∈ HL)
4015adantr 479 . . . . . 6 (((((𝐾 ∈ HL ∧ 𝑋𝐵𝑌𝐵) ∧ 𝑋𝐶𝑌) ∧ 𝑌𝑉) ∧ 𝑋 ∈ (Atoms‘𝐾)) → 𝑌𝐵)
41 simpr 475 . . . . . 6 (((((𝐾 ∈ HL ∧ 𝑋𝐵𝑌𝐵) ∧ 𝑋𝐶𝑌) ∧ 𝑌𝑉) ∧ 𝑋 ∈ (Atoms‘𝐾)) → 𝑋 ∈ (Atoms‘𝐾))
42 simpllr 794 . . . . . 6 (((((𝐾 ∈ HL ∧ 𝑋𝐵𝑌𝐵) ∧ 𝑋𝐶𝑌) ∧ 𝑌𝑉) ∧ 𝑋 ∈ (Atoms‘𝐾)) → 𝑋𝐶𝑌)
435, 6, 22, 36llni 33611 . . . . . 6 (((𝐾 ∈ HL ∧ 𝑌𝐵𝑋 ∈ (Atoms‘𝐾)) ∧ 𝑋𝐶𝑌) → 𝑌 ∈ (LLines‘𝐾))
4439, 40, 41, 42, 43syl31anc 1320 . . . . 5 (((((𝐾 ∈ HL ∧ 𝑋𝐵𝑌𝐵) ∧ 𝑋𝐶𝑌) ∧ 𝑌𝑉) ∧ 𝑋 ∈ (Atoms‘𝐾)) → 𝑌 ∈ (LLines‘𝐾))
4538, 44mtand 688 . . . 4 ((((𝐾 ∈ HL ∧ 𝑋𝐵𝑌𝐵) ∧ 𝑋𝐶𝑌) ∧ 𝑌𝑉) → ¬ 𝑋 ∈ (Atoms‘𝐾))
467, 8lvolnelpln 33693 . . . . . 6 ((𝐾 ∈ HL ∧ 𝑌𝑉) → ¬ 𝑌𝑃)
4711, 46sylancom 697 . . . . 5 ((((𝐾 ∈ HL ∧ 𝑋𝐵𝑌𝐵) ∧ 𝑋𝐶𝑌) ∧ 𝑌𝑉) → ¬ 𝑌𝑃)
485, 6, 36, 7llncvrlpln 33661 . . . . . 6 (((𝐾 ∈ HL ∧ 𝑋𝐵𝑌𝐵) ∧ 𝑋𝐶𝑌) → (𝑋 ∈ (LLines‘𝐾) ↔ 𝑌𝑃))
4948adantr 479 . . . . 5 ((((𝐾 ∈ HL ∧ 𝑋𝐵𝑌𝐵) ∧ 𝑋𝐶𝑌) ∧ 𝑌𝑉) → (𝑋 ∈ (LLines‘𝐾) ↔ 𝑌𝑃))
5047, 49mtbird 313 . . . 4 ((((𝐾 ∈ HL ∧ 𝑋𝐵𝑌𝐵) ∧ 𝑋𝐶𝑌) ∧ 𝑌𝑉) → ¬ 𝑋 ∈ (LLines‘𝐾))
515, 16, 30, 22, 36, 7lplnle 33643 . . . 4 (((𝐾 ∈ HL ∧ 𝑋𝐵) ∧ (𝑋 ≠ (0.‘𝐾) ∧ ¬ 𝑋 ∈ (Atoms‘𝐾) ∧ ¬ 𝑋 ∈ (LLines‘𝐾))) → ∃𝑧𝑃 𝑧(le‘𝐾)𝑋)
5211, 12, 35, 45, 50, 51syl23anc 1324 . . 3 ((((𝐾 ∈ HL ∧ 𝑋𝐵𝑌𝐵) ∧ 𝑋𝐶𝑌) ∧ 𝑌𝑉) → ∃𝑧𝑃 𝑧(le‘𝐾)𝑋)
53 simpr3 1061 . . . . . . . 8 ((((𝐾 ∈ HL ∧ 𝑋𝐵𝑌𝐵) ∧ 𝑋𝐶𝑌) ∧ (𝑌𝑉𝑧𝑃𝑧(le‘𝐾)𝑋)) → 𝑧(le‘𝐾)𝑋)
54 simpll1 1092 . . . . . . . . . 10 ((((𝐾 ∈ HL ∧ 𝑋𝐵𝑌𝐵) ∧ 𝑋𝐶𝑌) ∧ (𝑌𝑉𝑧𝑃𝑧(le‘𝐾)𝑋)) → 𝐾 ∈ HL)
55 hlop 33466 . . . . . . . . . 10 (𝐾 ∈ HL → 𝐾 ∈ OP)
5654, 55syl 17 . . . . . . . . 9 ((((𝐾 ∈ HL ∧ 𝑋𝐵𝑌𝐵) ∧ 𝑋𝐶𝑌) ∧ (𝑌𝑉𝑧𝑃𝑧(le‘𝐾)𝑋)) → 𝐾 ∈ OP)
57 simpr2 1060 . . . . . . . . . 10 ((((𝐾 ∈ HL ∧ 𝑋𝐵𝑌𝐵) ∧ 𝑋𝐶𝑌) ∧ (𝑌𝑉𝑧𝑃𝑧(le‘𝐾)𝑋)) → 𝑧𝑃)
585, 7lplnbase 33637 . . . . . . . . . 10 (𝑧𝑃𝑧𝐵)
5957, 58syl 17 . . . . . . . . 9 ((((𝐾 ∈ HL ∧ 𝑋𝐵𝑌𝐵) ∧ 𝑋𝐶𝑌) ∧ (𝑌𝑉𝑧𝑃𝑧(le‘𝐾)𝑋)) → 𝑧𝐵)
60 simpll2 1093 . . . . . . . . 9 ((((𝐾 ∈ HL ∧ 𝑋𝐵𝑌𝐵) ∧ 𝑋𝐶𝑌) ∧ (𝑌𝑉𝑧𝑃𝑧(le‘𝐾)𝑋)) → 𝑋𝐵)
61 simpll3 1094 . . . . . . . . 9 ((((𝐾 ∈ HL ∧ 𝑋𝐵𝑌𝐵) ∧ 𝑋𝐶𝑌) ∧ (𝑌𝑉𝑧𝑃𝑧(le‘𝐾)𝑋)) → 𝑌𝐵)
62 simpr1 1059 . . . . . . . . . 10 ((((𝐾 ∈ HL ∧ 𝑋𝐵𝑌𝐵) ∧ 𝑋𝐶𝑌) ∧ (𝑌𝑉𝑧𝑃𝑧(le‘𝐾)𝑋)) → 𝑌𝑉)
635, 16, 6cvrle 33382 . . . . . . . . . . . 12 (((𝐾 ∈ HL ∧ 𝑋𝐵𝑌𝐵) ∧ 𝑋𝐶𝑌) → 𝑋(le‘𝐾)𝑌)
6463adantr 479 . . . . . . . . . . 11 ((((𝐾 ∈ HL ∧ 𝑋𝐵𝑌𝐵) ∧ 𝑋𝐶𝑌) ∧ (𝑌𝑉𝑧𝑃𝑧(le‘𝐾)𝑋)) → 𝑋(le‘𝐾)𝑌)
65 hlpos 33469 . . . . . . . . . . . . 13 (𝐾 ∈ HL → 𝐾 ∈ Poset)
6654, 65syl 17 . . . . . . . . . . . 12 ((((𝐾 ∈ HL ∧ 𝑋𝐵𝑌𝐵) ∧ 𝑋𝐶𝑌) ∧ (𝑌𝑉𝑧𝑃𝑧(le‘𝐾)𝑋)) → 𝐾 ∈ Poset)
675, 16postr 16718 . . . . . . . . . . . 12 ((𝐾 ∈ Poset ∧ (𝑧𝐵𝑋𝐵𝑌𝐵)) → ((𝑧(le‘𝐾)𝑋𝑋(le‘𝐾)𝑌) → 𝑧(le‘𝐾)𝑌))
6866, 59, 60, 61, 67syl13anc 1319 . . . . . . . . . . 11 ((((𝐾 ∈ HL ∧ 𝑋𝐵𝑌𝐵) ∧ 𝑋𝐶𝑌) ∧ (𝑌𝑉𝑧𝑃𝑧(le‘𝐾)𝑋)) → ((𝑧(le‘𝐾)𝑋𝑋(le‘𝐾)𝑌) → 𝑧(le‘𝐾)𝑌))
6953, 64, 68mp2and 710 . . . . . . . . . 10 ((((𝐾 ∈ HL ∧ 𝑋𝐵𝑌𝐵) ∧ 𝑋𝐶𝑌) ∧ (𝑌𝑉𝑧𝑃𝑧(le‘𝐾)𝑋)) → 𝑧(le‘𝐾)𝑌)
7016, 6, 7, 8lplncvrlvol2 33718 . . . . . . . . . 10 (((𝐾 ∈ HL ∧ 𝑧𝑃𝑌𝑉) ∧ 𝑧(le‘𝐾)𝑌) → 𝑧𝐶𝑌)
7154, 57, 62, 69, 70syl31anc 1320 . . . . . . . . 9 ((((𝐾 ∈ HL ∧ 𝑋𝐵𝑌𝐵) ∧ 𝑋𝐶𝑌) ∧ (𝑌𝑉𝑧𝑃𝑧(le‘𝐾)𝑋)) → 𝑧𝐶𝑌)
72 simplr 787 . . . . . . . . 9 ((((𝐾 ∈ HL ∧ 𝑋𝐵𝑌𝐵) ∧ 𝑋𝐶𝑌) ∧ (𝑌𝑉𝑧𝑃𝑧(le‘𝐾)𝑋)) → 𝑋𝐶𝑌)
735, 16, 6cvrcmp2 33388 . . . . . . . . 9 ((𝐾 ∈ OP ∧ (𝑧𝐵𝑋𝐵𝑌𝐵) ∧ (𝑧𝐶𝑌𝑋𝐶𝑌)) → (𝑧(le‘𝐾)𝑋𝑧 = 𝑋))
7456, 59, 60, 61, 71, 72, 73syl132anc 1335 . . . . . . . 8 ((((𝐾 ∈ HL ∧ 𝑋𝐵𝑌𝐵) ∧ 𝑋𝐶𝑌) ∧ (𝑌𝑉𝑧𝑃𝑧(le‘𝐾)𝑋)) → (𝑧(le‘𝐾)𝑋𝑧 = 𝑋))
7553, 74mpbid 220 . . . . . . 7 ((((𝐾 ∈ HL ∧ 𝑋𝐵𝑌𝐵) ∧ 𝑋𝐶𝑌) ∧ (𝑌𝑉𝑧𝑃𝑧(le‘𝐾)𝑋)) → 𝑧 = 𝑋)
7675, 57eqeltrrd 2684 . . . . . 6 ((((𝐾 ∈ HL ∧ 𝑋𝐵𝑌𝐵) ∧ 𝑋𝐶𝑌) ∧ (𝑌𝑉𝑧𝑃𝑧(le‘𝐾)𝑋)) → 𝑋𝑃)
77763exp2 1276 . . . . 5 (((𝐾 ∈ HL ∧ 𝑋𝐵𝑌𝐵) ∧ 𝑋𝐶𝑌) → (𝑌𝑉 → (𝑧𝑃 → (𝑧(le‘𝐾)𝑋𝑋𝑃))))
7877imp 443 . . . 4 ((((𝐾 ∈ HL ∧ 𝑋𝐵𝑌𝐵) ∧ 𝑋𝐶𝑌) ∧ 𝑌𝑉) → (𝑧𝑃 → (𝑧(le‘𝐾)𝑋𝑋𝑃)))
7978rexlimdv 3007 . . 3 ((((𝐾 ∈ HL ∧ 𝑋𝐵𝑌𝐵) ∧ 𝑋𝐶𝑌) ∧ 𝑌𝑉) → (∃𝑧𝑃 𝑧(le‘𝐾)𝑋𝑋𝑃))
8052, 79mpd 15 . 2 ((((𝐾 ∈ HL ∧ 𝑋𝐵𝑌𝐵) ∧ 𝑋𝐶𝑌) ∧ 𝑌𝑉) → 𝑋𝑃)
8110, 80impbida 872 1 (((𝐾 ∈ HL ∧ 𝑋𝐵𝑌𝐵) ∧ 𝑋𝐶𝑌) → (𝑋𝑃𝑌𝑉))
Colors of variables: wff setvar class
Syntax hints:  ¬ wn 3  wi 4  wb 194  wa 382  w3a 1030   = wceq 1474  wcel 1975  wne 2775  wrex 2892   class class class wbr 4573  cfv 5786  Basecbs 15637  lecple 15717  Posetcpo 16705  0.cp0 16802  Latclat 16810  OPcops 33276  ccvr 33366  Atomscatm 33367  HLchlt 33454  LLinesclln 33594  LPlanesclpl 33595  LVolsclvol 33596
This theorem was proved from axioms:  ax-mp 5  ax-1 6  ax-2 7  ax-3 8  ax-gen 1711  ax-4 1726  ax-5 1825  ax-6 1873  ax-7 1920  ax-8 1977  ax-9 1984  ax-10 2004  ax-11 2019  ax-12 2031  ax-13 2228  ax-ext 2585  ax-rep 4689  ax-sep 4699  ax-nul 4708  ax-pow 4760  ax-pr 4824  ax-un 6820
This theorem depends on definitions:  df-bi 195  df-or 383  df-an 384  df-3or 1031  df-3an 1032  df-tru 1477  df-ex 1695  df-nf 1700  df-sb 1866  df-eu 2457  df-mo 2458  df-clab 2592  df-cleq 2598  df-clel 2601  df-nfc 2735  df-ne 2777  df-ral 2896  df-rex 2897  df-reu 2898  df-rab 2900  df-v 3170  df-sbc 3398  df-csb 3495  df-dif 3538  df-un 3540  df-in 3542  df-ss 3549  df-nul 3870  df-if 4032  df-pw 4105  df-sn 4121  df-pr 4123  df-op 4127  df-uni 4363  df-iun 4447  df-br 4574  df-opab 4634  df-mpt 4635  df-id 4939  df-xp 5030  df-rel 5031  df-cnv 5032  df-co 5033  df-dm 5034  df-rn 5035  df-res 5036  df-ima 5037  df-iota 5750  df-fun 5788  df-fn 5789  df-f 5790  df-f1 5791  df-fo 5792  df-f1o 5793  df-fv 5794  df-riota 6485  df-ov 6526  df-oprab 6527  df-preset 16693  df-poset 16711  df-plt 16723  df-lub 16739  df-glb 16740  df-join 16741  df-meet 16742  df-p0 16804  df-lat 16811  df-clat 16873  df-oposet 33280  df-ol 33282  df-oml 33283  df-covers 33370  df-ats 33371  df-atl 33402  df-cvlat 33426  df-hlat 33455  df-llines 33601  df-lplanes 33602  df-lvols 33603
This theorem is referenced by:  2lplnmj  33725
  Copyright terms: Public domain W3C validator