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 40365
Description: Part of proof of Lemma E in [Crawley] p. 113. cdleme26fALTN 40363 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 1204 . . 3 ((((𝐾 ∈ HL ∧ 𝑊𝐻) ∧ (𝑃𝑄𝑇 (𝑃 𝑄)) ∧ (𝑠𝐴 ∧ ¬ 𝑠 𝑊)) ∧ ((𝑃𝐴 ∧ ¬ 𝑃 𝑊) ∧ (𝑄𝐴 ∧ ¬ 𝑄 𝑊) ∧ (𝑇𝐴 ∧ ¬ 𝑇 𝑊)) ∧ ((¬ 𝑠 𝑊 ∧ ¬ 𝑠 (𝑃 𝑄)) ∧ (𝑠𝑇𝑠 (𝑇 𝑉)) ∧ (𝑉𝐴𝑉 𝑊))) → (𝐾 ∈ HL ∧ 𝑊𝐻))
2 simp23 1209 . . 3 ((((𝐾 ∈ HL ∧ 𝑊𝐻) ∧ (𝑃𝑄𝑇 (𝑃 𝑄)) ∧ (𝑠𝐴 ∧ ¬ 𝑠 𝑊)) ∧ ((𝑃𝐴 ∧ ¬ 𝑃 𝑊) ∧ (𝑄𝐴 ∧ ¬ 𝑄 𝑊) ∧ (𝑇𝐴 ∧ ¬ 𝑇 𝑊)) ∧ ((¬ 𝑠 𝑊 ∧ ¬ 𝑠 (𝑃 𝑄)) ∧ (𝑠𝑇𝑠 (𝑇 𝑉)) ∧ (𝑉𝐴𝑉 𝑊))) → (𝑇𝐴 ∧ ¬ 𝑇 𝑊))
3 simp31r 1298 . . . 4 ((((𝐾 ∈ HL ∧ 𝑊𝐻) ∧ (𝑃𝑄𝑇 (𝑃 𝑄)) ∧ (𝑠𝐴 ∧ ¬ 𝑠 𝑊)) ∧ ((𝑃𝐴 ∧ ¬ 𝑃 𝑊) ∧ (𝑄𝐴 ∧ ¬ 𝑄 𝑊) ∧ (𝑇𝐴 ∧ ¬ 𝑇 𝑊)) ∧ ((¬ 𝑠 𝑊 ∧ ¬ 𝑠 (𝑃 𝑄)) ∧ (𝑠𝑇𝑠 (𝑇 𝑉)) ∧ (𝑉𝐴𝑉 𝑊))) → ¬ 𝑠 (𝑃 𝑄))
4 simp12r 1288 . . . 4 ((((𝐾 ∈ HL ∧ 𝑊𝐻) ∧ (𝑃𝑄𝑇 (𝑃 𝑄)) ∧ (𝑠𝐴 ∧ ¬ 𝑠 𝑊)) ∧ ((𝑃𝐴 ∧ ¬ 𝑃 𝑊) ∧ (𝑄𝐴 ∧ ¬ 𝑄 𝑊) ∧ (𝑇𝐴 ∧ ¬ 𝑇 𝑊)) ∧ ((¬ 𝑠 𝑊 ∧ ¬ 𝑠 (𝑃 𝑄)) ∧ (𝑠𝑇𝑠 (𝑇 𝑉)) ∧ (𝑉𝐴𝑉 𝑊))) → 𝑇 (𝑃 𝑄))
5 simp12l 1287 . . . 4 ((((𝐾 ∈ HL ∧ 𝑊𝐻) ∧ (𝑃𝑄𝑇 (𝑃 𝑄)) ∧ (𝑠𝐴 ∧ ¬ 𝑠 𝑊)) ∧ ((𝑃𝐴 ∧ ¬ 𝑃 𝑊) ∧ (𝑄𝐴 ∧ ¬ 𝑄 𝑊) ∧ (𝑇𝐴 ∧ ¬ 𝑇 𝑊)) ∧ ((¬ 𝑠 𝑊 ∧ ¬ 𝑠 (𝑃 𝑄)) ∧ (𝑠𝑇𝑠 (𝑇 𝑉)) ∧ (𝑉𝐴𝑉 𝑊))) → 𝑃𝑄)
63, 4, 53jca 1128 . . 3 ((((𝐾 ∈ HL ∧ 𝑊𝐻) ∧ (𝑃𝑄𝑇 (𝑃 𝑄)) ∧ (𝑠𝐴 ∧ ¬ 𝑠 𝑊)) ∧ ((𝑃𝐴 ∧ ¬ 𝑃 𝑊) ∧ (𝑄𝐴 ∧ ¬ 𝑄 𝑊) ∧ (𝑇𝐴 ∧ ¬ 𝑇 𝑊)) ∧ ((¬ 𝑠 𝑊 ∧ ¬ 𝑠 (𝑃 𝑄)) ∧ (𝑠𝑇𝑠 (𝑇 𝑉)) ∧ (𝑉𝐴𝑉 𝑊))) → (¬ 𝑠 (𝑃 𝑄) ∧ 𝑇 (𝑃 𝑄) ∧ 𝑃𝑄))
7 simp21 1207 . . 3 ((((𝐾 ∈ HL ∧ 𝑊𝐻) ∧ (𝑃𝑄𝑇 (𝑃 𝑄)) ∧ (𝑠𝐴 ∧ ¬ 𝑠 𝑊)) ∧ ((𝑃𝐴 ∧ ¬ 𝑃 𝑊) ∧ (𝑄𝐴 ∧ ¬ 𝑄 𝑊) ∧ (𝑇𝐴 ∧ ¬ 𝑇 𝑊)) ∧ ((¬ 𝑠 𝑊 ∧ ¬ 𝑠 (𝑃 𝑄)) ∧ (𝑠𝑇𝑠 (𝑇 𝑉)) ∧ (𝑉𝐴𝑉 𝑊))) → (𝑃𝐴 ∧ ¬ 𝑃 𝑊))
8 simp22 1208 . . 3 ((((𝐾 ∈ HL ∧ 𝑊𝐻) ∧ (𝑃𝑄𝑇 (𝑃 𝑄)) ∧ (𝑠𝐴 ∧ ¬ 𝑠 𝑊)) ∧ ((𝑃𝐴 ∧ ¬ 𝑃 𝑊) ∧ (𝑄𝐴 ∧ ¬ 𝑄 𝑊) ∧ (𝑇𝐴 ∧ ¬ 𝑇 𝑊)) ∧ ((¬ 𝑠 𝑊 ∧ ¬ 𝑠 (𝑃 𝑄)) ∧ (𝑠𝑇𝑠 (𝑇 𝑉)) ∧ (𝑉𝐴𝑉 𝑊))) → (𝑄𝐴 ∧ ¬ 𝑄 𝑊))
9 simp13 1206 . . 3 ((((𝐾 ∈ HL ∧ 𝑊𝐻) ∧ (𝑃𝑄𝑇 (𝑃 𝑄)) ∧ (𝑠𝐴 ∧ ¬ 𝑠 𝑊)) ∧ ((𝑃𝐴 ∧ ¬ 𝑃 𝑊) ∧ (𝑄𝐴 ∧ ¬ 𝑄 𝑊) ∧ (𝑇𝐴 ∧ ¬ 𝑇 𝑊)) ∧ ((¬ 𝑠 𝑊 ∧ ¬ 𝑠 (𝑃 𝑄)) ∧ (𝑠𝑇𝑠 (𝑇 𝑉)) ∧ (𝑉𝐴𝑉 𝑊))) → (𝑠𝐴 ∧ ¬ 𝑠 𝑊))
10 simp32 1211 . . 3 ((((𝐾 ∈ HL ∧ 𝑊𝐻) ∧ (𝑃𝑄𝑇 (𝑃 𝑄)) ∧ (𝑠𝐴 ∧ ¬ 𝑠 𝑊)) ∧ ((𝑃𝐴 ∧ ¬ 𝑃 𝑊) ∧ (𝑄𝐴 ∧ ¬ 𝑄 𝑊) ∧ (𝑇𝐴 ∧ ¬ 𝑇 𝑊)) ∧ ((¬ 𝑠 𝑊 ∧ ¬ 𝑠 (𝑃 𝑄)) ∧ (𝑠𝑇𝑠 (𝑇 𝑉)) ∧ (𝑉𝐴𝑉 𝑊))) → (𝑠𝑇𝑠 (𝑇 𝑉)))
11 simp33 1212 . . 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 40348 . . 3 ((((𝐾 ∈ HL ∧ 𝑊𝐻) ∧ (𝑇𝐴 ∧ ¬ 𝑇 𝑊) ∧ (¬ 𝑠 (𝑃 𝑄) ∧ 𝑇 (𝑃 𝑄) ∧ 𝑃𝑄)) ∧ ((𝑃𝐴 ∧ ¬ 𝑃 𝑊) ∧ (𝑄𝐴 ∧ ¬ 𝑄 𝑊)) ∧ ((𝑠𝐴 ∧ ¬ 𝑠 𝑊) ∧ (𝑠𝑇𝑠 (𝑇 𝑉)) ∧ (𝑉𝐴𝑉 𝑊))) → 𝐺 (𝑂 𝑉))
211, 2, 6, 7, 8, 9, 10, 11, 20syl323anc 1402 . 2 ((((𝐾 ∈ HL ∧ 𝑊𝐻) ∧ (𝑃𝑄𝑇 (𝑃 𝑄)) ∧ (𝑠𝐴 ∧ ¬ 𝑠 𝑊)) ∧ ((𝑃𝐴 ∧ ¬ 𝑃 𝑊) ∧ (𝑄𝐴 ∧ ¬ 𝑄 𝑊) ∧ (𝑇𝐴 ∧ ¬ 𝑇 𝑊)) ∧ ((¬ 𝑠 𝑊 ∧ ¬ 𝑠 (𝑃 𝑄)) ∧ (𝑠𝑇𝑠 (𝑇 𝑉)) ∧ (𝑉𝐴𝑉 𝑊))) → 𝐺 (𝑂 𝑉))
22 simp23l 1295 . . . . 5 ((((𝐾 ∈ HL ∧ 𝑊𝐻) ∧ (𝑃𝑄𝑇 (𝑃 𝑄)) ∧ (𝑠𝐴 ∧ ¬ 𝑠 𝑊)) ∧ ((𝑃𝐴 ∧ ¬ 𝑃 𝑊) ∧ (𝑄𝐴 ∧ ¬ 𝑄 𝑊) ∧ (𝑇𝐴 ∧ ¬ 𝑇 𝑊)) ∧ ((¬ 𝑠 𝑊 ∧ ¬ 𝑠 (𝑃 𝑄)) ∧ (𝑠𝑇𝑠 (𝑇 𝑉)) ∧ (𝑉𝐴𝑉 𝑊))) → 𝑇𝐴)
23 simp23r 1296 . . . . 5 ((((𝐾 ∈ HL ∧ 𝑊𝐻) ∧ (𝑃𝑄𝑇 (𝑃 𝑄)) ∧ (𝑠𝐴 ∧ ¬ 𝑠 𝑊)) ∧ ((𝑃𝐴 ∧ ¬ 𝑃 𝑊) ∧ (𝑄𝐴 ∧ ¬ 𝑄 𝑊) ∧ (𝑇𝐴 ∧ ¬ 𝑇 𝑊)) ∧ ((¬ 𝑠 𝑊 ∧ ¬ 𝑠 (𝑃 𝑄)) ∧ (𝑠𝑇𝑠 (𝑇 𝑉)) ∧ (𝑉𝐴𝑉 𝑊))) → ¬ 𝑇 𝑊)
24 cdleme26.b . . . . . 6 𝐵 = (Base‘𝐾)
25 cdleme26f2.e . . . . . 6 𝐸 = (𝑢𝐵𝑠𝐴 ((¬ 𝑠 𝑊 ∧ ¬ 𝑠 (𝑃 𝑄)) → 𝑢 = 𝑂))
2624, 12, 13, 14, 15, 16, 17, 18, 19, 25cdleme25cl 40358 . . . . 5 ((((𝐾 ∈ HL ∧ 𝑊𝐻) ∧ (𝑃𝐴 ∧ ¬ 𝑃 𝑊) ∧ (𝑄𝐴 ∧ ¬ 𝑄 𝑊)) ∧ (𝑇𝐴 ∧ ¬ 𝑇 𝑊) ∧ (𝑃𝑄𝑇 (𝑃 𝑄))) → 𝐸𝐵)
271, 7, 8, 22, 23, 5, 4, 26syl322anc 1400 . . . 4 ((((𝐾 ∈ HL ∧ 𝑊𝐻) ∧ (𝑃𝑄𝑇 (𝑃 𝑄)) ∧ (𝑠𝐴 ∧ ¬ 𝑠 𝑊)) ∧ ((𝑃𝐴 ∧ ¬ 𝑃 𝑊) ∧ (𝑄𝐴 ∧ ¬ 𝑄 𝑊) ∧ (𝑇𝐴 ∧ ¬ 𝑇 𝑊)) ∧ ((¬ 𝑠 𝑊 ∧ ¬ 𝑠 (𝑃 𝑄)) ∧ (𝑠𝑇𝑠 (𝑇 𝑉)) ∧ (𝑉𝐴𝑉 𝑊))) → 𝐸𝐵)
28 simp13l 1289 . . . 4 ((((𝐾 ∈ HL ∧ 𝑊𝐻) ∧ (𝑃𝑄𝑇 (𝑃 𝑄)) ∧ (𝑠𝐴 ∧ ¬ 𝑠 𝑊)) ∧ ((𝑃𝐴 ∧ ¬ 𝑃 𝑊) ∧ (𝑄𝐴 ∧ ¬ 𝑄 𝑊) ∧ (𝑇𝐴 ∧ ¬ 𝑇 𝑊)) ∧ ((¬ 𝑠 𝑊 ∧ ¬ 𝑠 (𝑃 𝑄)) ∧ (𝑠𝑇𝑠 (𝑇 𝑉)) ∧ (𝑉𝐴𝑉 𝑊))) → 𝑠𝐴)
29 simp31 1210 . . . 4 ((((𝐾 ∈ HL ∧ 𝑊𝐻) ∧ (𝑃𝑄𝑇 (𝑃 𝑄)) ∧ (𝑠𝐴 ∧ ¬ 𝑠 𝑊)) ∧ ((𝑃𝐴 ∧ ¬ 𝑃 𝑊) ∧ (𝑄𝐴 ∧ ¬ 𝑄 𝑊) ∧ (𝑇𝐴 ∧ ¬ 𝑇 𝑊)) ∧ ((¬ 𝑠 𝑊 ∧ ¬ 𝑠 (𝑃 𝑄)) ∧ (𝑠𝑇𝑠 (𝑇 𝑉)) ∧ (𝑉𝐴𝑉 𝑊))) → (¬ 𝑠 𝑊 ∧ ¬ 𝑠 (𝑃 𝑄)))
3024fvexi 6875 . . . . 5 𝐵 ∈ V
3130, 25riotasv 38959 . . . 4 ((𝐸𝐵𝑠𝐴 ∧ (¬ 𝑠 𝑊 ∧ ¬ 𝑠 (𝑃 𝑄))) → 𝐸 = 𝑂)
3227, 28, 29, 31syl3anc 1373 . . 3 ((((𝐾 ∈ HL ∧ 𝑊𝐻) ∧ (𝑃𝑄𝑇 (𝑃 𝑄)) ∧ (𝑠𝐴 ∧ ¬ 𝑠 𝑊)) ∧ ((𝑃𝐴 ∧ ¬ 𝑃 𝑊) ∧ (𝑄𝐴 ∧ ¬ 𝑄 𝑊) ∧ (𝑇𝐴 ∧ ¬ 𝑇 𝑊)) ∧ ((¬ 𝑠 𝑊 ∧ ¬ 𝑠 (𝑃 𝑄)) ∧ (𝑠𝑇𝑠 (𝑇 𝑉)) ∧ (𝑉𝐴𝑉 𝑊))) → 𝐸 = 𝑂)
3332oveq1d 7405 . 2 ((((𝐾 ∈ HL ∧ 𝑊𝐻) ∧ (𝑃𝑄𝑇 (𝑃 𝑄)) ∧ (𝑠𝐴 ∧ ¬ 𝑠 𝑊)) ∧ ((𝑃𝐴 ∧ ¬ 𝑃 𝑊) ∧ (𝑄𝐴 ∧ ¬ 𝑄 𝑊) ∧ (𝑇𝐴 ∧ ¬ 𝑇 𝑊)) ∧ ((¬ 𝑠 𝑊 ∧ ¬ 𝑠 (𝑃 𝑄)) ∧ (𝑠𝑇𝑠 (𝑇 𝑉)) ∧ (𝑉𝐴𝑉 𝑊))) → (𝐸 𝑉) = (𝑂 𝑉))
3421, 33breqtrrd 5138 1 ((((𝐾 ∈ HL ∧ 𝑊𝐻) ∧ (𝑃𝑄𝑇 (𝑃 𝑄)) ∧ (𝑠𝐴 ∧ ¬ 𝑠 𝑊)) ∧ ((𝑃𝐴 ∧ ¬ 𝑃 𝑊) ∧ (𝑄𝐴 ∧ ¬ 𝑄 𝑊) ∧ (𝑇𝐴 ∧ ¬ 𝑇 𝑊)) ∧ ((¬ 𝑠 𝑊 ∧ ¬ 𝑠 (𝑃 𝑄)) ∧ (𝑠𝑇𝑠 (𝑇 𝑉)) ∧ (𝑉𝐴𝑉 𝑊))) → 𝐺 (𝐸 𝑉))
Colors of variables: wff setvar class
Syntax hints:  ¬ wn 3  wi 4  wa 395  w3a 1086   = wceq 1540  wcel 2109  wne 2926  wral 3045   class class class wbr 5110  cfv 6514  crio 7346  (class class class)co 7390  Basecbs 17186  lecple 17234  joincjn 18279  meetcmee 18280  Atomscatm 39263  HLchlt 39350  LHypclh 39985
This theorem was proved from axioms:  ax-mp 5  ax-1 6  ax-2 7  ax-3 8  ax-gen 1795  ax-4 1809  ax-5 1910  ax-6 1967  ax-7 2008  ax-8 2111  ax-9 2119  ax-10 2142  ax-11 2158  ax-12 2178  ax-ext 2702  ax-rep 5237  ax-sep 5254  ax-nul 5264  ax-pow 5323  ax-pr 5390  ax-un 7714  ax-riotaBAD 38953
This theorem depends on definitions:  df-bi 207  df-an 396  df-or 848  df-3or 1087  df-3an 1088  df-tru 1543  df-fal 1553  df-ex 1780  df-nf 1784  df-sb 2066  df-mo 2534  df-eu 2563  df-clab 2709  df-cleq 2722  df-clel 2804  df-nfc 2879  df-ne 2927  df-ral 3046  df-rex 3055  df-rmo 3356  df-reu 3357  df-rab 3409  df-v 3452  df-sbc 3757  df-csb 3866  df-dif 3920  df-un 3922  df-in 3924  df-ss 3934  df-nul 4300  df-if 4492  df-pw 4568  df-sn 4593  df-pr 4595  df-op 4599  df-uni 4875  df-iun 4960  df-iin 4961  df-br 5111  df-opab 5173  df-mpt 5192  df-id 5536  df-xp 5647  df-rel 5648  df-cnv 5649  df-co 5650  df-dm 5651  df-rn 5652  df-res 5653  df-ima 5654  df-iota 6467  df-fun 6516  df-fn 6517  df-f 6518  df-f1 6519  df-fo 6520  df-f1o 6521  df-fv 6522  df-riota 7347  df-ov 7393  df-oprab 7394  df-mpo 7395  df-1st 7971  df-2nd 7972  df-undef 8255  df-proset 18262  df-poset 18281  df-plt 18296  df-lub 18312  df-glb 18313  df-join 18314  df-meet 18315  df-p0 18391  df-p1 18392  df-lat 18398  df-clat 18465  df-oposet 39176  df-ol 39178  df-oml 39179  df-covers 39266  df-ats 39267  df-atl 39298  df-cvlat 39322  df-hlat 39351  df-llines 39499  df-lplanes 39500  df-lvols 39501  df-lines 39502  df-psubsp 39504  df-pmap 39505  df-padd 39797  df-lhyp 39989
This theorem is referenced by: (None)
  Copyright terms: Public domain W3C validator