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

Theorem cdleme26f2ALTN 39701
Description: Part of proof of Lemma E in [Crawley] p. 113. cdleme26fALTN 39699 with s and t swapped (this case is not mentioned by them). If s t v, then f(s) fs(t) v. TODO: FIX COMMENT. (Contributed by NM, 1-Feb-2013.) (New usage is discouraged.)
Hypotheses
Ref Expression
cdleme26.b 𝐵 = (Base‘𝐾)
cdleme26.l = (le‘𝐾)
cdleme26.j = (join‘𝐾)
cdleme26.m = (meet‘𝐾)
cdleme26.a 𝐴 = (Atoms‘𝐾)
cdleme26.h 𝐻 = (LHyp‘𝐾)
cdleme26f2.u 𝑈 = ((𝑃 𝑄) 𝑊)
cdleme26f2.f 𝐺 = ((𝑠 𝑈) (𝑄 ((𝑃 𝑠) 𝑊)))
cdleme26f2.n 𝑂 = ((𝑃 𝑄) (𝐺 ((𝑇 𝑠) 𝑊)))
cdleme26f2.e 𝐸 = (𝑢𝐵𝑠𝐴 ((¬ 𝑠 𝑊 ∧ ¬ 𝑠 (𝑃 𝑄)) → 𝑢 = 𝑂))
Assertion
Ref Expression
cdleme26f2ALTN ((((𝐾 ∈ HL ∧ 𝑊𝐻) ∧ (𝑃𝑄𝑇 (𝑃 𝑄)) ∧ (𝑠𝐴 ∧ ¬ 𝑠 𝑊)) ∧ ((𝑃𝐴 ∧ ¬ 𝑃 𝑊) ∧ (𝑄𝐴 ∧ ¬ 𝑄 𝑊) ∧ (𝑇𝐴 ∧ ¬ 𝑇 𝑊)) ∧ ((¬ 𝑠 𝑊 ∧ ¬ 𝑠 (𝑃 𝑄)) ∧ (𝑠𝑇𝑠 (𝑇 𝑉)) ∧ (𝑉𝐴𝑉 𝑊))) → 𝐺 (𝐸 𝑉))
Distinct variable groups:   𝑢,𝑠,𝐴   𝐵,𝑠,𝑢   𝐻,𝑠   ,𝑠,𝑢   𝐾,𝑠   ,𝑠,𝑢   ,𝑠,𝑢   𝑢,𝑂   𝑃,𝑠,𝑢   𝑄,𝑠,𝑢   𝑇,𝑠,𝑢   𝑈,𝑠,𝑢   𝑊,𝑠,𝑢
Allowed substitution hints:   𝐸(𝑢,𝑠)   𝐺(𝑢,𝑠)   𝐻(𝑢)   𝐾(𝑢)   𝑂(𝑠)   𝑉(𝑢,𝑠)

Proof of Theorem cdleme26f2ALTN
StepHypRef Expression
1 simp11 1202 . . 3 ((((𝐾 ∈ HL ∧ 𝑊𝐻) ∧ (𝑃𝑄𝑇 (𝑃 𝑄)) ∧ (𝑠𝐴 ∧ ¬ 𝑠 𝑊)) ∧ ((𝑃𝐴 ∧ ¬ 𝑃 𝑊) ∧ (𝑄𝐴 ∧ ¬ 𝑄 𝑊) ∧ (𝑇𝐴 ∧ ¬ 𝑇 𝑊)) ∧ ((¬ 𝑠 𝑊 ∧ ¬ 𝑠 (𝑃 𝑄)) ∧ (𝑠𝑇𝑠 (𝑇 𝑉)) ∧ (𝑉𝐴𝑉 𝑊))) → (𝐾 ∈ HL ∧ 𝑊𝐻))
2 simp23 1207 . . 3 ((((𝐾 ∈ HL ∧ 𝑊𝐻) ∧ (𝑃𝑄𝑇 (𝑃 𝑄)) ∧ (𝑠𝐴 ∧ ¬ 𝑠 𝑊)) ∧ ((𝑃𝐴 ∧ ¬ 𝑃 𝑊) ∧ (𝑄𝐴 ∧ ¬ 𝑄 𝑊) ∧ (𝑇𝐴 ∧ ¬ 𝑇 𝑊)) ∧ ((¬ 𝑠 𝑊 ∧ ¬ 𝑠 (𝑃 𝑄)) ∧ (𝑠𝑇𝑠 (𝑇 𝑉)) ∧ (𝑉𝐴𝑉 𝑊))) → (𝑇𝐴 ∧ ¬ 𝑇 𝑊))
3 simp31r 1296 . . . 4 ((((𝐾 ∈ HL ∧ 𝑊𝐻) ∧ (𝑃𝑄𝑇 (𝑃 𝑄)) ∧ (𝑠𝐴 ∧ ¬ 𝑠 𝑊)) ∧ ((𝑃𝐴 ∧ ¬ 𝑃 𝑊) ∧ (𝑄𝐴 ∧ ¬ 𝑄 𝑊) ∧ (𝑇𝐴 ∧ ¬ 𝑇 𝑊)) ∧ ((¬ 𝑠 𝑊 ∧ ¬ 𝑠 (𝑃 𝑄)) ∧ (𝑠𝑇𝑠 (𝑇 𝑉)) ∧ (𝑉𝐴𝑉 𝑊))) → ¬ 𝑠 (𝑃 𝑄))
4 simp12r 1286 . . . 4 ((((𝐾 ∈ HL ∧ 𝑊𝐻) ∧ (𝑃𝑄𝑇 (𝑃 𝑄)) ∧ (𝑠𝐴 ∧ ¬ 𝑠 𝑊)) ∧ ((𝑃𝐴 ∧ ¬ 𝑃 𝑊) ∧ (𝑄𝐴 ∧ ¬ 𝑄 𝑊) ∧ (𝑇𝐴 ∧ ¬ 𝑇 𝑊)) ∧ ((¬ 𝑠 𝑊 ∧ ¬ 𝑠 (𝑃 𝑄)) ∧ (𝑠𝑇𝑠 (𝑇 𝑉)) ∧ (𝑉𝐴𝑉 𝑊))) → 𝑇 (𝑃 𝑄))
5 simp12l 1285 . . . 4 ((((𝐾 ∈ HL ∧ 𝑊𝐻) ∧ (𝑃𝑄𝑇 (𝑃 𝑄)) ∧ (𝑠𝐴 ∧ ¬ 𝑠 𝑊)) ∧ ((𝑃𝐴 ∧ ¬ 𝑃 𝑊) ∧ (𝑄𝐴 ∧ ¬ 𝑄 𝑊) ∧ (𝑇𝐴 ∧ ¬ 𝑇 𝑊)) ∧ ((¬ 𝑠 𝑊 ∧ ¬ 𝑠 (𝑃 𝑄)) ∧ (𝑠𝑇𝑠 (𝑇 𝑉)) ∧ (𝑉𝐴𝑉 𝑊))) → 𝑃𝑄)
63, 4, 53jca 1127 . . 3 ((((𝐾 ∈ HL ∧ 𝑊𝐻) ∧ (𝑃𝑄𝑇 (𝑃 𝑄)) ∧ (𝑠𝐴 ∧ ¬ 𝑠 𝑊)) ∧ ((𝑃𝐴 ∧ ¬ 𝑃 𝑊) ∧ (𝑄𝐴 ∧ ¬ 𝑄 𝑊) ∧ (𝑇𝐴 ∧ ¬ 𝑇 𝑊)) ∧ ((¬ 𝑠 𝑊 ∧ ¬ 𝑠 (𝑃 𝑄)) ∧ (𝑠𝑇𝑠 (𝑇 𝑉)) ∧ (𝑉𝐴𝑉 𝑊))) → (¬ 𝑠 (𝑃 𝑄) ∧ 𝑇 (𝑃 𝑄) ∧ 𝑃𝑄))
7 simp21 1205 . . 3 ((((𝐾 ∈ HL ∧ 𝑊𝐻) ∧ (𝑃𝑄𝑇 (𝑃 𝑄)) ∧ (𝑠𝐴 ∧ ¬ 𝑠 𝑊)) ∧ ((𝑃𝐴 ∧ ¬ 𝑃 𝑊) ∧ (𝑄𝐴 ∧ ¬ 𝑄 𝑊) ∧ (𝑇𝐴 ∧ ¬ 𝑇 𝑊)) ∧ ((¬ 𝑠 𝑊 ∧ ¬ 𝑠 (𝑃 𝑄)) ∧ (𝑠𝑇𝑠 (𝑇 𝑉)) ∧ (𝑉𝐴𝑉 𝑊))) → (𝑃𝐴 ∧ ¬ 𝑃 𝑊))
8 simp22 1206 . . 3 ((((𝐾 ∈ HL ∧ 𝑊𝐻) ∧ (𝑃𝑄𝑇 (𝑃 𝑄)) ∧ (𝑠𝐴 ∧ ¬ 𝑠 𝑊)) ∧ ((𝑃𝐴 ∧ ¬ 𝑃 𝑊) ∧ (𝑄𝐴 ∧ ¬ 𝑄 𝑊) ∧ (𝑇𝐴 ∧ ¬ 𝑇 𝑊)) ∧ ((¬ 𝑠 𝑊 ∧ ¬ 𝑠 (𝑃 𝑄)) ∧ (𝑠𝑇𝑠 (𝑇 𝑉)) ∧ (𝑉𝐴𝑉 𝑊))) → (𝑄𝐴 ∧ ¬ 𝑄 𝑊))
9 simp13 1204 . . 3 ((((𝐾 ∈ HL ∧ 𝑊𝐻) ∧ (𝑃𝑄𝑇 (𝑃 𝑄)) ∧ (𝑠𝐴 ∧ ¬ 𝑠 𝑊)) ∧ ((𝑃𝐴 ∧ ¬ 𝑃 𝑊) ∧ (𝑄𝐴 ∧ ¬ 𝑄 𝑊) ∧ (𝑇𝐴 ∧ ¬ 𝑇 𝑊)) ∧ ((¬ 𝑠 𝑊 ∧ ¬ 𝑠 (𝑃 𝑄)) ∧ (𝑠𝑇𝑠 (𝑇 𝑉)) ∧ (𝑉𝐴𝑉 𝑊))) → (𝑠𝐴 ∧ ¬ 𝑠 𝑊))
10 simp32 1209 . . 3 ((((𝐾 ∈ HL ∧ 𝑊𝐻) ∧ (𝑃𝑄𝑇 (𝑃 𝑄)) ∧ (𝑠𝐴 ∧ ¬ 𝑠 𝑊)) ∧ ((𝑃𝐴 ∧ ¬ 𝑃 𝑊) ∧ (𝑄𝐴 ∧ ¬ 𝑄 𝑊) ∧ (𝑇𝐴 ∧ ¬ 𝑇 𝑊)) ∧ ((¬ 𝑠 𝑊 ∧ ¬ 𝑠 (𝑃 𝑄)) ∧ (𝑠𝑇𝑠 (𝑇 𝑉)) ∧ (𝑉𝐴𝑉 𝑊))) → (𝑠𝑇𝑠 (𝑇 𝑉)))
11 simp33 1210 . . 3 ((((𝐾 ∈ HL ∧ 𝑊𝐻) ∧ (𝑃𝑄𝑇 (𝑃 𝑄)) ∧ (𝑠𝐴 ∧ ¬ 𝑠 𝑊)) ∧ ((𝑃𝐴 ∧ ¬ 𝑃 𝑊) ∧ (𝑄𝐴 ∧ ¬ 𝑄 𝑊) ∧ (𝑇𝐴 ∧ ¬ 𝑇 𝑊)) ∧ ((¬ 𝑠 𝑊 ∧ ¬ 𝑠 (𝑃 𝑄)) ∧ (𝑠𝑇𝑠 (𝑇 𝑉)) ∧ (𝑉𝐴𝑉 𝑊))) → (𝑉𝐴𝑉 𝑊))
12 cdleme26.l . . . 4 = (le‘𝐾)
13 cdleme26.j . . . 4 = (join‘𝐾)
14 cdleme26.m . . . 4 = (meet‘𝐾)
15 cdleme26.a . . . 4 𝐴 = (Atoms‘𝐾)
16 cdleme26.h . . . 4 𝐻 = (LHyp‘𝐾)
17 cdleme26f2.u . . . 4 𝑈 = ((𝑃 𝑄) 𝑊)
18 cdleme26f2.f . . . 4 𝐺 = ((𝑠 𝑈) (𝑄 ((𝑃 𝑠) 𝑊)))
19 cdleme26f2.n . . . 4 𝑂 = ((𝑃 𝑄) (𝐺 ((𝑇 𝑠) 𝑊)))
2012, 13, 14, 15, 16, 17, 18, 19cdleme22f2 39684 . . 3 ((((𝐾 ∈ HL ∧ 𝑊𝐻) ∧ (𝑇𝐴 ∧ ¬ 𝑇 𝑊) ∧ (¬ 𝑠 (𝑃 𝑄) ∧ 𝑇 (𝑃 𝑄) ∧ 𝑃𝑄)) ∧ ((𝑃𝐴 ∧ ¬ 𝑃 𝑊) ∧ (𝑄𝐴 ∧ ¬ 𝑄 𝑊)) ∧ ((𝑠𝐴 ∧ ¬ 𝑠 𝑊) ∧ (𝑠𝑇𝑠 (𝑇 𝑉)) ∧ (𝑉𝐴𝑉 𝑊))) → 𝐺 (𝑂 𝑉))
211, 2, 6, 7, 8, 9, 10, 11, 20syl323anc 1399 . 2 ((((𝐾 ∈ HL ∧ 𝑊𝐻) ∧ (𝑃𝑄𝑇 (𝑃 𝑄)) ∧ (𝑠𝐴 ∧ ¬ 𝑠 𝑊)) ∧ ((𝑃𝐴 ∧ ¬ 𝑃 𝑊) ∧ (𝑄𝐴 ∧ ¬ 𝑄 𝑊) ∧ (𝑇𝐴 ∧ ¬ 𝑇 𝑊)) ∧ ((¬ 𝑠 𝑊 ∧ ¬ 𝑠 (𝑃 𝑄)) ∧ (𝑠𝑇𝑠 (𝑇 𝑉)) ∧ (𝑉𝐴𝑉 𝑊))) → 𝐺 (𝑂 𝑉))
22 simp23l 1293 . . . . 5 ((((𝐾 ∈ HL ∧ 𝑊𝐻) ∧ (𝑃𝑄𝑇 (𝑃 𝑄)) ∧ (𝑠𝐴 ∧ ¬ 𝑠 𝑊)) ∧ ((𝑃𝐴 ∧ ¬ 𝑃 𝑊) ∧ (𝑄𝐴 ∧ ¬ 𝑄 𝑊) ∧ (𝑇𝐴 ∧ ¬ 𝑇 𝑊)) ∧ ((¬ 𝑠 𝑊 ∧ ¬ 𝑠 (𝑃 𝑄)) ∧ (𝑠𝑇𝑠 (𝑇 𝑉)) ∧ (𝑉𝐴𝑉 𝑊))) → 𝑇𝐴)
23 simp23r 1294 . . . . 5 ((((𝐾 ∈ HL ∧ 𝑊𝐻) ∧ (𝑃𝑄𝑇 (𝑃 𝑄)) ∧ (𝑠𝐴 ∧ ¬ 𝑠 𝑊)) ∧ ((𝑃𝐴 ∧ ¬ 𝑃 𝑊) ∧ (𝑄𝐴 ∧ ¬ 𝑄 𝑊) ∧ (𝑇𝐴 ∧ ¬ 𝑇 𝑊)) ∧ ((¬ 𝑠 𝑊 ∧ ¬ 𝑠 (𝑃 𝑄)) ∧ (𝑠𝑇𝑠 (𝑇 𝑉)) ∧ (𝑉𝐴𝑉 𝑊))) → ¬ 𝑇 𝑊)
24 cdleme26.b . . . . . 6 𝐵 = (Base‘𝐾)
25 cdleme26f2.e . . . . . 6 𝐸 = (𝑢𝐵𝑠𝐴 ((¬ 𝑠 𝑊 ∧ ¬ 𝑠 (𝑃 𝑄)) → 𝑢 = 𝑂))
2624, 12, 13, 14, 15, 16, 17, 18, 19, 25cdleme25cl 39694 . . . . 5 ((((𝐾 ∈ HL ∧ 𝑊𝐻) ∧ (𝑃𝐴 ∧ ¬ 𝑃 𝑊) ∧ (𝑄𝐴 ∧ ¬ 𝑄 𝑊)) ∧ (𝑇𝐴 ∧ ¬ 𝑇 𝑊) ∧ (𝑃𝑄𝑇 (𝑃 𝑄))) → 𝐸𝐵)
271, 7, 8, 22, 23, 5, 4, 26syl322anc 1397 . . . 4 ((((𝐾 ∈ HL ∧ 𝑊𝐻) ∧ (𝑃𝑄𝑇 (𝑃 𝑄)) ∧ (𝑠𝐴 ∧ ¬ 𝑠 𝑊)) ∧ ((𝑃𝐴 ∧ ¬ 𝑃 𝑊) ∧ (𝑄𝐴 ∧ ¬ 𝑄 𝑊) ∧ (𝑇𝐴 ∧ ¬ 𝑇 𝑊)) ∧ ((¬ 𝑠 𝑊 ∧ ¬ 𝑠 (𝑃 𝑄)) ∧ (𝑠𝑇𝑠 (𝑇 𝑉)) ∧ (𝑉𝐴𝑉 𝑊))) → 𝐸𝐵)
28 simp13l 1287 . . . 4 ((((𝐾 ∈ HL ∧ 𝑊𝐻) ∧ (𝑃𝑄𝑇 (𝑃 𝑄)) ∧ (𝑠𝐴 ∧ ¬ 𝑠 𝑊)) ∧ ((𝑃𝐴 ∧ ¬ 𝑃 𝑊) ∧ (𝑄𝐴 ∧ ¬ 𝑄 𝑊) ∧ (𝑇𝐴 ∧ ¬ 𝑇 𝑊)) ∧ ((¬ 𝑠 𝑊 ∧ ¬ 𝑠 (𝑃 𝑄)) ∧ (𝑠𝑇𝑠 (𝑇 𝑉)) ∧ (𝑉𝐴𝑉 𝑊))) → 𝑠𝐴)
29 simp31 1208 . . . 4 ((((𝐾 ∈ HL ∧ 𝑊𝐻) ∧ (𝑃𝑄𝑇 (𝑃 𝑄)) ∧ (𝑠𝐴 ∧ ¬ 𝑠 𝑊)) ∧ ((𝑃𝐴 ∧ ¬ 𝑃 𝑊) ∧ (𝑄𝐴 ∧ ¬ 𝑄 𝑊) ∧ (𝑇𝐴 ∧ ¬ 𝑇 𝑊)) ∧ ((¬ 𝑠 𝑊 ∧ ¬ 𝑠 (𝑃 𝑄)) ∧ (𝑠𝑇𝑠 (𝑇 𝑉)) ∧ (𝑉𝐴𝑉 𝑊))) → (¬ 𝑠 𝑊 ∧ ¬ 𝑠 (𝑃 𝑄)))
3024fvexi 6905 . . . . 5 𝐵 ∈ V
3130, 25riotasv 38295 . . . 4 ((𝐸𝐵𝑠𝐴 ∧ (¬ 𝑠 𝑊 ∧ ¬ 𝑠 (𝑃 𝑄))) → 𝐸 = 𝑂)
3227, 28, 29, 31syl3anc 1370 . . 3 ((((𝐾 ∈ HL ∧ 𝑊𝐻) ∧ (𝑃𝑄𝑇 (𝑃 𝑄)) ∧ (𝑠𝐴 ∧ ¬ 𝑠 𝑊)) ∧ ((𝑃𝐴 ∧ ¬ 𝑃 𝑊) ∧ (𝑄𝐴 ∧ ¬ 𝑄 𝑊) ∧ (𝑇𝐴 ∧ ¬ 𝑇 𝑊)) ∧ ((¬ 𝑠 𝑊 ∧ ¬ 𝑠 (𝑃 𝑄)) ∧ (𝑠𝑇𝑠 (𝑇 𝑉)) ∧ (𝑉𝐴𝑉 𝑊))) → 𝐸 = 𝑂)
3332oveq1d 7427 . 2 ((((𝐾 ∈ HL ∧ 𝑊𝐻) ∧ (𝑃𝑄𝑇 (𝑃 𝑄)) ∧ (𝑠𝐴 ∧ ¬ 𝑠 𝑊)) ∧ ((𝑃𝐴 ∧ ¬ 𝑃 𝑊) ∧ (𝑄𝐴 ∧ ¬ 𝑄 𝑊) ∧ (𝑇𝐴 ∧ ¬ 𝑇 𝑊)) ∧ ((¬ 𝑠 𝑊 ∧ ¬ 𝑠 (𝑃 𝑄)) ∧ (𝑠𝑇𝑠 (𝑇 𝑉)) ∧ (𝑉𝐴𝑉 𝑊))) → (𝐸 𝑉) = (𝑂 𝑉))
3421, 33breqtrrd 5176 1 ((((𝐾 ∈ HL ∧ 𝑊𝐻) ∧ (𝑃𝑄𝑇 (𝑃 𝑄)) ∧ (𝑠𝐴 ∧ ¬ 𝑠 𝑊)) ∧ ((𝑃𝐴 ∧ ¬ 𝑃 𝑊) ∧ (𝑄𝐴 ∧ ¬ 𝑄 𝑊) ∧ (𝑇𝐴 ∧ ¬ 𝑇 𝑊)) ∧ ((¬ 𝑠 𝑊 ∧ ¬ 𝑠 (𝑃 𝑄)) ∧ (𝑠𝑇𝑠 (𝑇 𝑉)) ∧ (𝑉𝐴𝑉 𝑊))) → 𝐺 (𝐸 𝑉))
Colors of variables: wff setvar class
Syntax hints:  ¬ wn 3  wi 4  wa 395  w3a 1086   = wceq 1540  wcel 2105  wne 2939  wral 3060   class class class wbr 5148  cfv 6543  crio 7367  (class class class)co 7412  Basecbs 17151  lecple 17211  joincjn 18274  meetcmee 18275  Atomscatm 38599  HLchlt 38686  LHypclh 39321
This theorem was proved from axioms:  ax-mp 5  ax-1 6  ax-2 7  ax-3 8  ax-gen 1796  ax-4 1810  ax-5 1912  ax-6 1970  ax-7 2010  ax-8 2107  ax-9 2115  ax-10 2136  ax-11 2153  ax-12 2170  ax-ext 2702  ax-rep 5285  ax-sep 5299  ax-nul 5306  ax-pow 5363  ax-pr 5427  ax-un 7729  ax-riotaBAD 38289
This theorem depends on definitions:  df-bi 206  df-an 396  df-or 845  df-3or 1087  df-3an 1088  df-tru 1543  df-fal 1553  df-ex 1781  df-nf 1785  df-sb 2067  df-mo 2533  df-eu 2562  df-clab 2709  df-cleq 2723  df-clel 2809  df-nfc 2884  df-ne 2940  df-ral 3061  df-rex 3070  df-rmo 3375  df-reu 3376  df-rab 3432  df-v 3475  df-sbc 3778  df-csb 3894  df-dif 3951  df-un 3953  df-in 3955  df-ss 3965  df-nul 4323  df-if 4529  df-pw 4604  df-sn 4629  df-pr 4631  df-op 4635  df-uni 4909  df-iun 4999  df-iin 5000  df-br 5149  df-opab 5211  df-mpt 5232  df-id 5574  df-xp 5682  df-rel 5683  df-cnv 5684  df-co 5685  df-dm 5686  df-rn 5687  df-res 5688  df-ima 5689  df-iota 6495  df-fun 6545  df-fn 6546  df-f 6547  df-f1 6548  df-fo 6549  df-f1o 6550  df-fv 6551  df-riota 7368  df-ov 7415  df-oprab 7416  df-mpo 7417  df-1st 7979  df-2nd 7980  df-undef 8264  df-proset 18258  df-poset 18276  df-plt 18293  df-lub 18309  df-glb 18310  df-join 18311  df-meet 18312  df-p0 18388  df-p1 18389  df-lat 18395  df-clat 18462  df-oposet 38512  df-ol 38514  df-oml 38515  df-covers 38602  df-ats 38603  df-atl 38634  df-cvlat 38658  df-hlat 38687  df-llines 38835  df-lplanes 38836  df-lvols 38837  df-lines 38838  df-psubsp 38840  df-pmap 38841  df-padd 39133  df-lhyp 39325
This theorem is referenced by: (None)
  Copyright terms: Public domain W3C validator