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 35424
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 1254 . . 3 ((((𝐾 ∈ HL ∧ 𝑋𝐵𝑌𝐵) ∧ 𝑋𝐶𝑌) ∧ 𝑋𝑃) → 𝐾 ∈ HL)
2 simpll3 1258 . . 3 ((((𝐾 ∈ HL ∧ 𝑋𝐵𝑌𝐵) ∧ 𝑋𝐶𝑌) ∧ 𝑋𝑃) → 𝑌𝐵)
3 simpr 471 . . 3 ((((𝐾 ∈ HL ∧ 𝑋𝐵𝑌𝐵) ∧ 𝑋𝐶𝑌) ∧ 𝑋𝑃) → 𝑋𝑃)
4 simplr 752 . . 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 35383 . . 3 (((𝐾 ∈ HL ∧ 𝑌𝐵𝑋𝑃) ∧ 𝑋𝐶𝑌) → 𝑌𝑉)
101, 2, 3, 4, 9syl31anc 1479 . 2 ((((𝐾 ∈ HL ∧ 𝑋𝐵𝑌𝐵) ∧ 𝑋𝐶𝑌) ∧ 𝑋𝑃) → 𝑌𝑉)
11 simpll1 1254 . . . 4 ((((𝐾 ∈ HL ∧ 𝑋𝐵𝑌𝐵) ∧ 𝑋𝐶𝑌) ∧ 𝑌𝑉) → 𝐾 ∈ HL)
12 simpll2 1256 . . . 4 ((((𝐾 ∈ HL ∧ 𝑋𝐵𝑌𝐵) ∧ 𝑋𝐶𝑌) ∧ 𝑌𝑉) → 𝑋𝐵)
13 hllat 35172 . . . . . . . 8 (𝐾 ∈ HL → 𝐾 ∈ Lat)
1411, 13syl 17 . . . . . . 7 ((((𝐾 ∈ HL ∧ 𝑋𝐵𝑌𝐵) ∧ 𝑋𝐶𝑌) ∧ 𝑌𝑉) → 𝐾 ∈ Lat)
15 simpll3 1258 . . . . . . 7 ((((𝐾 ∈ HL ∧ 𝑋𝐵𝑌𝐵) ∧ 𝑋𝐶𝑌) ∧ 𝑌𝑉) → 𝑌𝐵)
16 eqid 2771 . . . . . . . 8 (le‘𝐾) = (le‘𝐾)
175, 16latref 17261 . . . . . . 7 ((𝐾 ∈ Lat ∧ 𝑌𝐵) → 𝑌(le‘𝐾)𝑌)
1814, 15, 17syl2anc 573 . . . . . 6 ((((𝐾 ∈ HL ∧ 𝑋𝐵𝑌𝐵) ∧ 𝑋𝐶𝑌) ∧ 𝑌𝑉) → 𝑌(le‘𝐾)𝑌)
1911adantr 466 . . . . . . . 8 (((((𝐾 ∈ HL ∧ 𝑋𝐵𝑌𝐵) ∧ 𝑋𝐶𝑌) ∧ 𝑌𝑉) ∧ 𝑌 ∈ (Atoms‘𝐾)) → 𝐾 ∈ HL)
20 simplr 752 . . . . . . . 8 (((((𝐾 ∈ HL ∧ 𝑋𝐵𝑌𝐵) ∧ 𝑋𝐶𝑌) ∧ 𝑌𝑉) ∧ 𝑌 ∈ (Atoms‘𝐾)) → 𝑌𝑉)
21 simpr 471 . . . . . . . 8 (((((𝐾 ∈ HL ∧ 𝑋𝐵𝑌𝐵) ∧ 𝑋𝐶𝑌) ∧ 𝑌𝑉) ∧ 𝑌 ∈ (Atoms‘𝐾)) → 𝑌 ∈ (Atoms‘𝐾))
22 eqid 2771 . . . . . . . . 9 (Atoms‘𝐾) = (Atoms‘𝐾)
2316, 22, 8lvolnleat 35391 . . . . . . . 8 ((𝐾 ∈ HL ∧ 𝑌𝑉𝑌 ∈ (Atoms‘𝐾)) → ¬ 𝑌(le‘𝐾)𝑌)
2419, 20, 21, 23syl3anc 1476 . . . . . . 7 (((((𝐾 ∈ HL ∧ 𝑋𝐵𝑌𝐵) ∧ 𝑋𝐶𝑌) ∧ 𝑌𝑉) ∧ 𝑌 ∈ (Atoms‘𝐾)) → ¬ 𝑌(le‘𝐾)𝑌)
2524ex 397 . . . . . 6 ((((𝐾 ∈ HL ∧ 𝑋𝐵𝑌𝐵) ∧ 𝑋𝐶𝑌) ∧ 𝑌𝑉) → (𝑌 ∈ (Atoms‘𝐾) → ¬ 𝑌(le‘𝐾)𝑌))
2618, 25mt2d 133 . . . . 5 ((((𝐾 ∈ HL ∧ 𝑋𝐵𝑌𝐵) ∧ 𝑋𝐶𝑌) ∧ 𝑌𝑉) → ¬ 𝑌 ∈ (Atoms‘𝐾))
27 simplr 752 . . . . . . . 8 ((((𝐾 ∈ HL ∧ 𝑋𝐵𝑌𝐵) ∧ 𝑋𝐶𝑌) ∧ 𝑌𝑉) → 𝑋𝐶𝑌)
28 breq1 4789 . . . . . . . 8 (𝑋 = (0.‘𝐾) → (𝑋𝐶𝑌 ↔ (0.‘𝐾)𝐶𝑌))
2927, 28syl5ibcom 235 . . . . . . 7 ((((𝐾 ∈ HL ∧ 𝑋𝐵𝑌𝐵) ∧ 𝑋𝐶𝑌) ∧ 𝑌𝑉) → (𝑋 = (0.‘𝐾) → (0.‘𝐾)𝐶𝑌))
30 eqid 2771 . . . . . . . . 9 (0.‘𝐾) = (0.‘𝐾)
315, 30, 6, 22isat2 35096 . . . . . . . 8 ((𝐾 ∈ HL ∧ 𝑌𝐵) → (𝑌 ∈ (Atoms‘𝐾) ↔ (0.‘𝐾)𝐶𝑌))
3211, 15, 31syl2anc 573 . . . . . . 7 ((((𝐾 ∈ HL ∧ 𝑋𝐵𝑌𝐵) ∧ 𝑋𝐶𝑌) ∧ 𝑌𝑉) → (𝑌 ∈ (Atoms‘𝐾) ↔ (0.‘𝐾)𝐶𝑌))
3329, 32sylibrd 249 . . . . . 6 ((((𝐾 ∈ HL ∧ 𝑋𝐵𝑌𝐵) ∧ 𝑋𝐶𝑌) ∧ 𝑌𝑉) → (𝑋 = (0.‘𝐾) → 𝑌 ∈ (Atoms‘𝐾)))
3433necon3bd 2957 . . . . 5 ((((𝐾 ∈ HL ∧ 𝑋𝐵𝑌𝐵) ∧ 𝑋𝐶𝑌) ∧ 𝑌𝑉) → (¬ 𝑌 ∈ (Atoms‘𝐾) → 𝑋 ≠ (0.‘𝐾)))
3526, 34mpd 15 . . . 4 ((((𝐾 ∈ HL ∧ 𝑋𝐵𝑌𝐵) ∧ 𝑋𝐶𝑌) ∧ 𝑌𝑉) → 𝑋 ≠ (0.‘𝐾))
36 eqid 2771 . . . . . . 7 (LLines‘𝐾) = (LLines‘𝐾)
3736, 8lvolnelln 35397 . . . . . 6 ((𝐾 ∈ HL ∧ 𝑌𝑉) → ¬ 𝑌 ∈ (LLines‘𝐾))
3811, 37sylancom 576 . . . . 5 ((((𝐾 ∈ HL ∧ 𝑋𝐵𝑌𝐵) ∧ 𝑋𝐶𝑌) ∧ 𝑌𝑉) → ¬ 𝑌 ∈ (LLines‘𝐾))
3911adantr 466 . . . . . 6 (((((𝐾 ∈ HL ∧ 𝑋𝐵𝑌𝐵) ∧ 𝑋𝐶𝑌) ∧ 𝑌𝑉) ∧ 𝑋 ∈ (Atoms‘𝐾)) → 𝐾 ∈ HL)
4015adantr 466 . . . . . 6 (((((𝐾 ∈ HL ∧ 𝑋𝐵𝑌𝐵) ∧ 𝑋𝐶𝑌) ∧ 𝑌𝑉) ∧ 𝑋 ∈ (Atoms‘𝐾)) → 𝑌𝐵)
41 simpr 471 . . . . . 6 (((((𝐾 ∈ HL ∧ 𝑋𝐵𝑌𝐵) ∧ 𝑋𝐶𝑌) ∧ 𝑌𝑉) ∧ 𝑋 ∈ (Atoms‘𝐾)) → 𝑋 ∈ (Atoms‘𝐾))
42 simpllr 760 . . . . . 6 (((((𝐾 ∈ HL ∧ 𝑋𝐵𝑌𝐵) ∧ 𝑋𝐶𝑌) ∧ 𝑌𝑉) ∧ 𝑋 ∈ (Atoms‘𝐾)) → 𝑋𝐶𝑌)
435, 6, 22, 36llni 35316 . . . . . 6 (((𝐾 ∈ HL ∧ 𝑌𝐵𝑋 ∈ (Atoms‘𝐾)) ∧ 𝑋𝐶𝑌) → 𝑌 ∈ (LLines‘𝐾))
4439, 40, 41, 42, 43syl31anc 1479 . . . . 5 (((((𝐾 ∈ HL ∧ 𝑋𝐵𝑌𝐵) ∧ 𝑋𝐶𝑌) ∧ 𝑌𝑉) ∧ 𝑋 ∈ (Atoms‘𝐾)) → 𝑌 ∈ (LLines‘𝐾))
4538, 44mtand 817 . . . 4 ((((𝐾 ∈ HL ∧ 𝑋𝐵𝑌𝐵) ∧ 𝑋𝐶𝑌) ∧ 𝑌𝑉) → ¬ 𝑋 ∈ (Atoms‘𝐾))
467, 8lvolnelpln 35398 . . . . . 6 ((𝐾 ∈ HL ∧ 𝑌𝑉) → ¬ 𝑌𝑃)
4711, 46sylancom 576 . . . . 5 ((((𝐾 ∈ HL ∧ 𝑋𝐵𝑌𝐵) ∧ 𝑋𝐶𝑌) ∧ 𝑌𝑉) → ¬ 𝑌𝑃)
485, 6, 36, 7llncvrlpln 35366 . . . . . 6 (((𝐾 ∈ HL ∧ 𝑋𝐵𝑌𝐵) ∧ 𝑋𝐶𝑌) → (𝑋 ∈ (LLines‘𝐾) ↔ 𝑌𝑃))
4948adantr 466 . . . . 5 ((((𝐾 ∈ HL ∧ 𝑋𝐵𝑌𝐵) ∧ 𝑋𝐶𝑌) ∧ 𝑌𝑉) → (𝑋 ∈ (LLines‘𝐾) ↔ 𝑌𝑃))
5047, 49mtbird 314 . . . 4 ((((𝐾 ∈ HL ∧ 𝑋𝐵𝑌𝐵) ∧ 𝑋𝐶𝑌) ∧ 𝑌𝑉) → ¬ 𝑋 ∈ (LLines‘𝐾))
515, 16, 30, 22, 36, 7lplnle 35348 . . . 4 (((𝐾 ∈ HL ∧ 𝑋𝐵) ∧ (𝑋 ≠ (0.‘𝐾) ∧ ¬ 𝑋 ∈ (Atoms‘𝐾) ∧ ¬ 𝑋 ∈ (LLines‘𝐾))) → ∃𝑧𝑃 𝑧(le‘𝐾)𝑋)
5211, 12, 35, 45, 50, 51syl23anc 1483 . . 3 ((((𝐾 ∈ HL ∧ 𝑋𝐵𝑌𝐵) ∧ 𝑋𝐶𝑌) ∧ 𝑌𝑉) → ∃𝑧𝑃 𝑧(le‘𝐾)𝑋)
53 simpr3 1237 . . . . . . . 8 ((((𝐾 ∈ HL ∧ 𝑋𝐵𝑌𝐵) ∧ 𝑋𝐶𝑌) ∧ (𝑌𝑉𝑧𝑃𝑧(le‘𝐾)𝑋)) → 𝑧(le‘𝐾)𝑋)
54 simpll1 1254 . . . . . . . . . 10 ((((𝐾 ∈ HL ∧ 𝑋𝐵𝑌𝐵) ∧ 𝑋𝐶𝑌) ∧ (𝑌𝑉𝑧𝑃𝑧(le‘𝐾)𝑋)) → 𝐾 ∈ HL)
55 hlop 35171 . . . . . . . . . 10 (𝐾 ∈ HL → 𝐾 ∈ OP)
5654, 55syl 17 . . . . . . . . 9 ((((𝐾 ∈ HL ∧ 𝑋𝐵𝑌𝐵) ∧ 𝑋𝐶𝑌) ∧ (𝑌𝑉𝑧𝑃𝑧(le‘𝐾)𝑋)) → 𝐾 ∈ OP)
57 simpr2 1235 . . . . . . . . . 10 ((((𝐾 ∈ HL ∧ 𝑋𝐵𝑌𝐵) ∧ 𝑋𝐶𝑌) ∧ (𝑌𝑉𝑧𝑃𝑧(le‘𝐾)𝑋)) → 𝑧𝑃)
585, 7lplnbase 35342 . . . . . . . . . 10 (𝑧𝑃𝑧𝐵)
5957, 58syl 17 . . . . . . . . 9 ((((𝐾 ∈ HL ∧ 𝑋𝐵𝑌𝐵) ∧ 𝑋𝐶𝑌) ∧ (𝑌𝑉𝑧𝑃𝑧(le‘𝐾)𝑋)) → 𝑧𝐵)
60 simpll2 1256 . . . . . . . . 9 ((((𝐾 ∈ HL ∧ 𝑋𝐵𝑌𝐵) ∧ 𝑋𝐶𝑌) ∧ (𝑌𝑉𝑧𝑃𝑧(le‘𝐾)𝑋)) → 𝑋𝐵)
61 simpll3 1258 . . . . . . . . 9 ((((𝐾 ∈ HL ∧ 𝑋𝐵𝑌𝐵) ∧ 𝑋𝐶𝑌) ∧ (𝑌𝑉𝑧𝑃𝑧(le‘𝐾)𝑋)) → 𝑌𝐵)
62 simpr1 1233 . . . . . . . . . 10 ((((𝐾 ∈ HL ∧ 𝑋𝐵𝑌𝐵) ∧ 𝑋𝐶𝑌) ∧ (𝑌𝑉𝑧𝑃𝑧(le‘𝐾)𝑋)) → 𝑌𝑉)
635, 16, 6cvrle 35087 . . . . . . . . . . . 12 (((𝐾 ∈ HL ∧ 𝑋𝐵𝑌𝐵) ∧ 𝑋𝐶𝑌) → 𝑋(le‘𝐾)𝑌)
6463adantr 466 . . . . . . . . . . 11 ((((𝐾 ∈ HL ∧ 𝑋𝐵𝑌𝐵) ∧ 𝑋𝐶𝑌) ∧ (𝑌𝑉𝑧𝑃𝑧(le‘𝐾)𝑋)) → 𝑋(le‘𝐾)𝑌)
65 hlpos 35174 . . . . . . . . . . . . 13 (𝐾 ∈ HL → 𝐾 ∈ Poset)
6654, 65syl 17 . . . . . . . . . . . 12 ((((𝐾 ∈ HL ∧ 𝑋𝐵𝑌𝐵) ∧ 𝑋𝐶𝑌) ∧ (𝑌𝑉𝑧𝑃𝑧(le‘𝐾)𝑋)) → 𝐾 ∈ Poset)
675, 16postr 17161 . . . . . . . . . . . 12 ((𝐾 ∈ Poset ∧ (𝑧𝐵𝑋𝐵𝑌𝐵)) → ((𝑧(le‘𝐾)𝑋𝑋(le‘𝐾)𝑌) → 𝑧(le‘𝐾)𝑌))
6866, 59, 60, 61, 67syl13anc 1478 . . . . . . . . . . 11 ((((𝐾 ∈ HL ∧ 𝑋𝐵𝑌𝐵) ∧ 𝑋𝐶𝑌) ∧ (𝑌𝑉𝑧𝑃𝑧(le‘𝐾)𝑋)) → ((𝑧(le‘𝐾)𝑋𝑋(le‘𝐾)𝑌) → 𝑧(le‘𝐾)𝑌))
6953, 64, 68mp2and 679 . . . . . . . . . 10 ((((𝐾 ∈ HL ∧ 𝑋𝐵𝑌𝐵) ∧ 𝑋𝐶𝑌) ∧ (𝑌𝑉𝑧𝑃𝑧(le‘𝐾)𝑋)) → 𝑧(le‘𝐾)𝑌)
7016, 6, 7, 8lplncvrlvol2 35423 . . . . . . . . . 10 (((𝐾 ∈ HL ∧ 𝑧𝑃𝑌𝑉) ∧ 𝑧(le‘𝐾)𝑌) → 𝑧𝐶𝑌)
7154, 57, 62, 69, 70syl31anc 1479 . . . . . . . . 9 ((((𝐾 ∈ HL ∧ 𝑋𝐵𝑌𝐵) ∧ 𝑋𝐶𝑌) ∧ (𝑌𝑉𝑧𝑃𝑧(le‘𝐾)𝑋)) → 𝑧𝐶𝑌)
72 simplr 752 . . . . . . . . 9 ((((𝐾 ∈ HL ∧ 𝑋𝐵𝑌𝐵) ∧ 𝑋𝐶𝑌) ∧ (𝑌𝑉𝑧𝑃𝑧(le‘𝐾)𝑋)) → 𝑋𝐶𝑌)
735, 16, 6cvrcmp2 35093 . . . . . . . . 9 ((𝐾 ∈ OP ∧ (𝑧𝐵𝑋𝐵𝑌𝐵) ∧ (𝑧𝐶𝑌𝑋𝐶𝑌)) → (𝑧(le‘𝐾)𝑋𝑧 = 𝑋))
7456, 59, 60, 61, 71, 72, 73syl132anc 1494 . . . . . . . 8 ((((𝐾 ∈ HL ∧ 𝑋𝐵𝑌𝐵) ∧ 𝑋𝐶𝑌) ∧ (𝑌𝑉𝑧𝑃𝑧(le‘𝐾)𝑋)) → (𝑧(le‘𝐾)𝑋𝑧 = 𝑋))
7553, 74mpbid 222 . . . . . . 7 ((((𝐾 ∈ HL ∧ 𝑋𝐵𝑌𝐵) ∧ 𝑋𝐶𝑌) ∧ (𝑌𝑉𝑧𝑃𝑧(le‘𝐾)𝑋)) → 𝑧 = 𝑋)
7675, 57eqeltrrd 2851 . . . . . 6 ((((𝐾 ∈ HL ∧ 𝑋𝐵𝑌𝐵) ∧ 𝑋𝐶𝑌) ∧ (𝑌𝑉𝑧𝑃𝑧(le‘𝐾)𝑋)) → 𝑋𝑃)
77763exp2 1447 . . . . 5 (((𝐾 ∈ HL ∧ 𝑋𝐵𝑌𝐵) ∧ 𝑋𝐶𝑌) → (𝑌𝑉 → (𝑧𝑃 → (𝑧(le‘𝐾)𝑋𝑋𝑃))))
7877imp 393 . . . 4 ((((𝐾 ∈ HL ∧ 𝑋𝐵𝑌𝐵) ∧ 𝑋𝐶𝑌) ∧ 𝑌𝑉) → (𝑧𝑃 → (𝑧(le‘𝐾)𝑋𝑋𝑃)))
7978rexlimdv 3178 . . 3 ((((𝐾 ∈ HL ∧ 𝑋𝐵𝑌𝐵) ∧ 𝑋𝐶𝑌) ∧ 𝑌𝑉) → (∃𝑧𝑃 𝑧(le‘𝐾)𝑋𝑋𝑃))
8052, 79mpd 15 . 2 ((((𝐾 ∈ HL ∧ 𝑋𝐵𝑌𝐵) ∧ 𝑋𝐶𝑌) ∧ 𝑌𝑉) → 𝑋𝑃)
8110, 80impbida 802 1 (((𝐾 ∈ HL ∧ 𝑋𝐵𝑌𝐵) ∧ 𝑋𝐶𝑌) → (𝑋𝑃𝑌𝑉))
Colors of variables: wff setvar class
Syntax hints:  ¬ wn 3  wi 4  wb 196  wa 382  w3a 1071   = wceq 1631  wcel 2145  wne 2943  wrex 3062   class class class wbr 4786  cfv 6031  Basecbs 16064  lecple 16156  Posetcpo 17148  0.cp0 17245  Latclat 17253  OPcops 34981  ccvr 35071  Atomscatm 35072  HLchlt 35159  LLinesclln 35299  LPlanesclpl 35300  LVolsclvol 35301
This theorem was proved from axioms:  ax-mp 5  ax-1 6  ax-2 7  ax-3 8  ax-gen 1870  ax-4 1885  ax-5 1991  ax-6 2057  ax-7 2093  ax-8 2147  ax-9 2154  ax-10 2174  ax-11 2190  ax-12 2203  ax-13 2408  ax-ext 2751  ax-rep 4904  ax-sep 4915  ax-nul 4923  ax-pow 4974  ax-pr 5034  ax-un 7096
This theorem depends on definitions:  df-bi 197  df-an 383  df-or 837  df-3or 1072  df-3an 1073  df-tru 1634  df-ex 1853  df-nf 1858  df-sb 2050  df-eu 2622  df-mo 2623  df-clab 2758  df-cleq 2764  df-clel 2767  df-nfc 2902  df-ne 2944  df-ral 3066  df-rex 3067  df-reu 3068  df-rab 3070  df-v 3353  df-sbc 3588  df-csb 3683  df-dif 3726  df-un 3728  df-in 3730  df-ss 3737  df-nul 4064  df-if 4226  df-pw 4299  df-sn 4317  df-pr 4319  df-op 4323  df-uni 4575  df-iun 4656  df-br 4787  df-opab 4847  df-mpt 4864  df-id 5157  df-xp 5255  df-rel 5256  df-cnv 5257  df-co 5258  df-dm 5259  df-rn 5260  df-res 5261  df-ima 5262  df-iota 5994  df-fun 6033  df-fn 6034  df-f 6035  df-f1 6036  df-fo 6037  df-f1o 6038  df-fv 6039  df-riota 6754  df-ov 6796  df-oprab 6797  df-preset 17136  df-poset 17154  df-plt 17166  df-lub 17182  df-glb 17183  df-join 17184  df-meet 17185  df-p0 17247  df-lat 17254  df-clat 17316  df-oposet 34985  df-ol 34987  df-oml 34988  df-covers 35075  df-ats 35076  df-atl 35107  df-cvlat 35131  df-hlat 35160  df-llines 35306  df-lplanes 35307  df-lvols 35308
This theorem is referenced by:  2lplnmj  35430
  Copyright terms: Public domain W3C validator