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

Theorem cdlemeg46gfre 36340
Description: TODO FIX COMMENT p. 116 penultimate line: g(f(r)) = r. (Contributed by NM, 4-Apr-2013.)
Hypotheses
Ref Expression
cdlemef46g.b 𝐵 = (Base‘𝐾)
cdlemef46g.l = (le‘𝐾)
cdlemef46g.j = (join‘𝐾)
cdlemef46g.m = (meet‘𝐾)
cdlemef46g.a 𝐴 = (Atoms‘𝐾)
cdlemef46g.h 𝐻 = (LHyp‘𝐾)
cdlemef46g.u 𝑈 = ((𝑃 𝑄) 𝑊)
cdlemef46g.d 𝐷 = ((𝑡 𝑈) (𝑄 ((𝑃 𝑡) 𝑊)))
cdlemefs46g.e 𝐸 = ((𝑃 𝑄) (𝐷 ((𝑠 𝑡) 𝑊)))
cdlemef46g.f 𝐹 = (𝑥𝐵 ↦ if((𝑃𝑄 ∧ ¬ 𝑥 𝑊), (𝑧𝐵𝑠𝐴 ((¬ 𝑠 𝑊 ∧ (𝑠 (𝑥 𝑊)) = 𝑥) → 𝑧 = (if(𝑠 (𝑃 𝑄), (𝑦𝐵𝑡𝐴 ((¬ 𝑡 𝑊 ∧ ¬ 𝑡 (𝑃 𝑄)) → 𝑦 = 𝐸)), 𝑠 / 𝑡𝐷) (𝑥 𝑊)))), 𝑥))
cdlemef46.v 𝑉 = ((𝑄 𝑃) 𝑊)
cdlemef46.n 𝑁 = ((𝑣 𝑉) (𝑃 ((𝑄 𝑣) 𝑊)))
cdlemefs46.o 𝑂 = ((𝑄 𝑃) (𝑁 ((𝑢 𝑣) 𝑊)))
cdlemef46.g 𝐺 = (𝑎𝐵 ↦ if((𝑄𝑃 ∧ ¬ 𝑎 𝑊), (𝑐𝐵𝑢𝐴 ((¬ 𝑢 𝑊 ∧ (𝑢 (𝑎 𝑊)) = 𝑎) → 𝑐 = (if(𝑢 (𝑄 𝑃), (𝑏𝐵𝑣𝐴 ((¬ 𝑣 𝑊 ∧ ¬ 𝑣 (𝑄 𝑃)) → 𝑏 = 𝑂)), 𝑢 / 𝑣𝑁) (𝑎 𝑊)))), 𝑎))
Assertion
Ref Expression
cdlemeg46gfre ((((𝐾 ∈ HL ∧ 𝑊𝐻) ∧ (𝑃𝐴 ∧ ¬ 𝑃 𝑊) ∧ (𝑄𝐴 ∧ ¬ 𝑄 𝑊)) ∧ (𝑃𝑄 ∧ (𝑅𝐴 ∧ ¬ 𝑅 𝑊)) ∧ 𝑅 (𝑃 𝑄)) → (𝐺‘(𝐹𝑅)) = 𝑅)
Distinct variable groups:   𝑡,𝑠,𝑥,𝑦,𝑧,𝐴   𝐵,𝑠,𝑡,𝑥,𝑦,𝑧   𝐷,𝑠,𝑥,𝑦,𝑧   𝑥,𝐸,𝑦,𝑧   𝐻,𝑠,𝑡,𝑥,𝑦,𝑧   ,𝑠,𝑡,𝑥,𝑦,𝑧   𝐾,𝑠,𝑡,𝑥,𝑦,𝑧   ,𝑠,𝑡,𝑥,𝑦,𝑧   ,𝑠,𝑡,𝑥,𝑦,𝑧   𝑃,𝑠,𝑡,𝑥,𝑦,𝑧   𝑄,𝑠,𝑡,𝑥,𝑦,𝑧   𝑅,𝑠,𝑡,𝑥,𝑦,𝑧   𝑈,𝑠,𝑡,𝑥,𝑦,𝑧   𝑊,𝑠,𝑡,𝑥,𝑦,𝑧   𝑎,𝑏,𝑐,𝑢,𝑣,𝐴   𝐵,𝑎,𝑏,𝑐,𝑢,𝑣   𝑣,𝐷   𝐺,𝑠,𝑡,𝑥,𝑦,𝑧   𝐻,𝑎,𝑏,𝑐,𝑢,𝑣   ,𝑎,𝑏,𝑐,𝑢,𝑣   𝐾,𝑎,𝑏,𝑐,𝑢,𝑣   ,𝑎,𝑏,𝑐,𝑢,𝑣   ,𝑎,𝑏,𝑐,𝑢,𝑣   𝑁,𝑎,𝑏,𝑐   𝑂,𝑎,𝑏,𝑐   𝑃,𝑎,𝑏,𝑐,𝑢,𝑣   𝑄,𝑎,𝑏,𝑐,𝑢,𝑣   𝑅,𝑎,𝑏,𝑐,𝑢,𝑣   𝑉,𝑎,𝑏,𝑐   𝑊,𝑎,𝑏,𝑐,𝑢,𝑣,𝑥,𝑦,𝑧   𝑢,𝑁,𝑥,𝑦,𝑧   𝑥,𝑂,𝑦,𝑧   𝑣,𝑡   𝑢,𝑉   𝑥,𝑣,𝑦,𝑧,𝑉   𝐷,𝑎,𝑏,𝑐   𝐸,𝑎,𝑏,𝑐   𝐹,𝑎,𝑏,𝑐,𝑢,𝑣   𝑡,𝑁   𝑈,𝑎,𝑏,𝑐,𝑣   𝑡,𝑉   𝑠,𝑎,𝑡,𝑏,𝑐,𝑥,𝑦,𝑧,𝑢,𝑣
Allowed substitution hints:   𝐷(𝑢,𝑡)   𝑈(𝑢)   𝐸(𝑣,𝑢,𝑡,𝑠)   𝐹(𝑥,𝑦,𝑧,𝑡,𝑠)   𝐺(𝑣,𝑢,𝑎,𝑏,𝑐)   𝑁(𝑣,𝑠)   𝑂(𝑣,𝑢,𝑡,𝑠)   𝑉(𝑠)

Proof of Theorem cdlemeg46gfre
Dummy variable 𝑒 is distinct from all other variables.
StepHypRef Expression
1 simp11 1246 . . 3 ((((𝐾 ∈ HL ∧ 𝑊𝐻) ∧ (𝑃𝐴 ∧ ¬ 𝑃 𝑊) ∧ (𝑄𝐴 ∧ ¬ 𝑄 𝑊)) ∧ (𝑃𝑄 ∧ (𝑅𝐴 ∧ ¬ 𝑅 𝑊)) ∧ 𝑅 (𝑃 𝑄)) → (𝐾 ∈ HL ∧ 𝑊𝐻))
2 simp12 1247 . . 3 ((((𝐾 ∈ HL ∧ 𝑊𝐻) ∧ (𝑃𝐴 ∧ ¬ 𝑃 𝑊) ∧ (𝑄𝐴 ∧ ¬ 𝑄 𝑊)) ∧ (𝑃𝑄 ∧ (𝑅𝐴 ∧ ¬ 𝑅 𝑊)) ∧ 𝑅 (𝑃 𝑄)) → (𝑃𝐴 ∧ ¬ 𝑃 𝑊))
3 simp13 1248 . . 3 ((((𝐾 ∈ HL ∧ 𝑊𝐻) ∧ (𝑃𝐴 ∧ ¬ 𝑃 𝑊) ∧ (𝑄𝐴 ∧ ¬ 𝑄 𝑊)) ∧ (𝑃𝑄 ∧ (𝑅𝐴 ∧ ¬ 𝑅 𝑊)) ∧ 𝑅 (𝑃 𝑄)) → (𝑄𝐴 ∧ ¬ 𝑄 𝑊))
4 simp2l 1242 . . 3 ((((𝐾 ∈ HL ∧ 𝑊𝐻) ∧ (𝑃𝐴 ∧ ¬ 𝑃 𝑊) ∧ (𝑄𝐴 ∧ ¬ 𝑄 𝑊)) ∧ (𝑃𝑄 ∧ (𝑅𝐴 ∧ ¬ 𝑅 𝑊)) ∧ 𝑅 (𝑃 𝑄)) → 𝑃𝑄)
5 cdlemef46g.l . . . 4 = (le‘𝐾)
6 cdlemef46g.j . . . 4 = (join‘𝐾)
7 cdlemef46g.a . . . 4 𝐴 = (Atoms‘𝐾)
8 cdlemef46g.h . . . 4 𝐻 = (LHyp‘𝐾)
95, 6, 7, 8cdlemb2 35848 . . 3 (((𝐾 ∈ HL ∧ 𝑊𝐻) ∧ ((𝑃𝐴 ∧ ¬ 𝑃 𝑊) ∧ (𝑄𝐴 ∧ ¬ 𝑄 𝑊)) ∧ 𝑃𝑄) → ∃𝑒𝐴𝑒 𝑊 ∧ ¬ 𝑒 (𝑃 𝑄)))
101, 2, 3, 4, 9syl121anc 1482 . 2 ((((𝐾 ∈ HL ∧ 𝑊𝐻) ∧ (𝑃𝐴 ∧ ¬ 𝑃 𝑊) ∧ (𝑄𝐴 ∧ ¬ 𝑄 𝑊)) ∧ (𝑃𝑄 ∧ (𝑅𝐴 ∧ ¬ 𝑅 𝑊)) ∧ 𝑅 (𝑃 𝑄)) → ∃𝑒𝐴𝑒 𝑊 ∧ ¬ 𝑒 (𝑃 𝑄)))
11 simp1 1131 . . . . . . 7 ((((𝐾 ∈ HL ∧ 𝑊𝐻) ∧ (𝑃𝐴 ∧ ¬ 𝑃 𝑊) ∧ (𝑄𝐴 ∧ ¬ 𝑄 𝑊)) ∧ (𝑃𝑄 ∧ (𝑅𝐴 ∧ ¬ 𝑅 𝑊)) ∧ (𝑅 (𝑃 𝑄) ∧ 𝑒𝐴 ∧ (¬ 𝑒 𝑊 ∧ ¬ 𝑒 (𝑃 𝑄)))) → ((𝐾 ∈ HL ∧ 𝑊𝐻) ∧ (𝑃𝐴 ∧ ¬ 𝑃 𝑊) ∧ (𝑄𝐴 ∧ ¬ 𝑄 𝑊)))
12 simp2l 1242 . . . . . . 7 ((((𝐾 ∈ HL ∧ 𝑊𝐻) ∧ (𝑃𝐴 ∧ ¬ 𝑃 𝑊) ∧ (𝑄𝐴 ∧ ¬ 𝑄 𝑊)) ∧ (𝑃𝑄 ∧ (𝑅𝐴 ∧ ¬ 𝑅 𝑊)) ∧ (𝑅 (𝑃 𝑄) ∧ 𝑒𝐴 ∧ (¬ 𝑒 𝑊 ∧ ¬ 𝑒 (𝑃 𝑄)))) → 𝑃𝑄)
13 simp2r 1243 . . . . . . 7 ((((𝐾 ∈ HL ∧ 𝑊𝐻) ∧ (𝑃𝐴 ∧ ¬ 𝑃 𝑊) ∧ (𝑄𝐴 ∧ ¬ 𝑄 𝑊)) ∧ (𝑃𝑄 ∧ (𝑅𝐴 ∧ ¬ 𝑅 𝑊)) ∧ (𝑅 (𝑃 𝑄) ∧ 𝑒𝐴 ∧ (¬ 𝑒 𝑊 ∧ ¬ 𝑒 (𝑃 𝑄)))) → (𝑅𝐴 ∧ ¬ 𝑅 𝑊))
14 simp32 1253 . . . . . . . 8 ((((𝐾 ∈ HL ∧ 𝑊𝐻) ∧ (𝑃𝐴 ∧ ¬ 𝑃 𝑊) ∧ (𝑄𝐴 ∧ ¬ 𝑄 𝑊)) ∧ (𝑃𝑄 ∧ (𝑅𝐴 ∧ ¬ 𝑅 𝑊)) ∧ (𝑅 (𝑃 𝑄) ∧ 𝑒𝐴 ∧ (¬ 𝑒 𝑊 ∧ ¬ 𝑒 (𝑃 𝑄)))) → 𝑒𝐴)
15 simp33l 1385 . . . . . . . 8 ((((𝐾 ∈ HL ∧ 𝑊𝐻) ∧ (𝑃𝐴 ∧ ¬ 𝑃 𝑊) ∧ (𝑄𝐴 ∧ ¬ 𝑄 𝑊)) ∧ (𝑃𝑄 ∧ (𝑅𝐴 ∧ ¬ 𝑅 𝑊)) ∧ (𝑅 (𝑃 𝑄) ∧ 𝑒𝐴 ∧ (¬ 𝑒 𝑊 ∧ ¬ 𝑒 (𝑃 𝑄)))) → ¬ 𝑒 𝑊)
1614, 15jca 555 . . . . . . 7 ((((𝐾 ∈ HL ∧ 𝑊𝐻) ∧ (𝑃𝐴 ∧ ¬ 𝑃 𝑊) ∧ (𝑄𝐴 ∧ ¬ 𝑄 𝑊)) ∧ (𝑃𝑄 ∧ (𝑅𝐴 ∧ ¬ 𝑅 𝑊)) ∧ (𝑅 (𝑃 𝑄) ∧ 𝑒𝐴 ∧ (¬ 𝑒 𝑊 ∧ ¬ 𝑒 (𝑃 𝑄)))) → (𝑒𝐴 ∧ ¬ 𝑒 𝑊))
17 simp31 1252 . . . . . . 7 ((((𝐾 ∈ HL ∧ 𝑊𝐻) ∧ (𝑃𝐴 ∧ ¬ 𝑃 𝑊) ∧ (𝑄𝐴 ∧ ¬ 𝑄 𝑊)) ∧ (𝑃𝑄 ∧ (𝑅𝐴 ∧ ¬ 𝑅 𝑊)) ∧ (𝑅 (𝑃 𝑄) ∧ 𝑒𝐴 ∧ (¬ 𝑒 𝑊 ∧ ¬ 𝑒 (𝑃 𝑄)))) → 𝑅 (𝑃 𝑄))
18 simp33r 1386 . . . . . . 7 ((((𝐾 ∈ HL ∧ 𝑊𝐻) ∧ (𝑃𝐴 ∧ ¬ 𝑃 𝑊) ∧ (𝑄𝐴 ∧ ¬ 𝑄 𝑊)) ∧ (𝑃𝑄 ∧ (𝑅𝐴 ∧ ¬ 𝑅 𝑊)) ∧ (𝑅 (𝑃 𝑄) ∧ 𝑒𝐴 ∧ (¬ 𝑒 𝑊 ∧ ¬ 𝑒 (𝑃 𝑄)))) → ¬ 𝑒 (𝑃 𝑄))
19 cdlemef46g.b . . . . . . . 8 𝐵 = (Base‘𝐾)
20 cdlemef46g.m . . . . . . . 8 = (meet‘𝐾)
21 cdlemef46g.u . . . . . . . 8 𝑈 = ((𝑃 𝑄) 𝑊)
22 cdlemef46g.d . . . . . . . 8 𝐷 = ((𝑡 𝑈) (𝑄 ((𝑃 𝑡) 𝑊)))
23 cdlemefs46g.e . . . . . . . 8 𝐸 = ((𝑃 𝑄) (𝐷 ((𝑠 𝑡) 𝑊)))
24 cdlemef46g.f . . . . . . . 8 𝐹 = (𝑥𝐵 ↦ if((𝑃𝑄 ∧ ¬ 𝑥 𝑊), (𝑧𝐵𝑠𝐴 ((¬ 𝑠 𝑊 ∧ (𝑠 (𝑥 𝑊)) = 𝑥) → 𝑧 = (if(𝑠 (𝑃 𝑄), (𝑦𝐵𝑡𝐴 ((¬ 𝑡 𝑊 ∧ ¬ 𝑡 (𝑃 𝑄)) → 𝑦 = 𝐸)), 𝑠 / 𝑡𝐷) (𝑥 𝑊)))), 𝑥))
25 cdlemef46.v . . . . . . . 8 𝑉 = ((𝑄 𝑃) 𝑊)
26 cdlemef46.n . . . . . . . 8 𝑁 = ((𝑣 𝑉) (𝑃 ((𝑄 𝑣) 𝑊)))
27 cdlemefs46.o . . . . . . . 8 𝑂 = ((𝑄 𝑃) (𝑁 ((𝑢 𝑣) 𝑊)))
28 cdlemef46.g . . . . . . . 8 𝐺 = (𝑎𝐵 ↦ if((𝑄𝑃 ∧ ¬ 𝑎 𝑊), (𝑐𝐵𝑢𝐴 ((¬ 𝑢 𝑊 ∧ (𝑢 (𝑎 𝑊)) = 𝑎) → 𝑐 = (if(𝑢 (𝑄 𝑃), (𝑏𝐵𝑣𝐴 ((¬ 𝑣 𝑊 ∧ ¬ 𝑣 (𝑄 𝑃)) → 𝑏 = 𝑂)), 𝑢 / 𝑣𝑁) (𝑎 𝑊)))), 𝑎))
2919, 5, 6, 20, 7, 8, 21, 22, 23, 24, 25, 26, 27, 28cdlemeg46gfr 36339 . . . . . . 7 ((((𝐾 ∈ HL ∧ 𝑊𝐻) ∧ (𝑃𝐴 ∧ ¬ 𝑃 𝑊) ∧ (𝑄𝐴 ∧ ¬ 𝑄 𝑊)) ∧ (𝑃𝑄 ∧ (𝑅𝐴 ∧ ¬ 𝑅 𝑊) ∧ (𝑒𝐴 ∧ ¬ 𝑒 𝑊)) ∧ (𝑅 (𝑃 𝑄) ∧ ¬ 𝑒 (𝑃 𝑄))) → (𝐺‘(𝐹𝑅)) = 𝑅)
3011, 12, 13, 16, 17, 18, 29syl132anc 1495 . . . . . 6 ((((𝐾 ∈ HL ∧ 𝑊𝐻) ∧ (𝑃𝐴 ∧ ¬ 𝑃 𝑊) ∧ (𝑄𝐴 ∧ ¬ 𝑄 𝑊)) ∧ (𝑃𝑄 ∧ (𝑅𝐴 ∧ ¬ 𝑅 𝑊)) ∧ (𝑅 (𝑃 𝑄) ∧ 𝑒𝐴 ∧ (¬ 𝑒 𝑊 ∧ ¬ 𝑒 (𝑃 𝑄)))) → (𝐺‘(𝐹𝑅)) = 𝑅)
31303expia 1115 . . . . 5 ((((𝐾 ∈ HL ∧ 𝑊𝐻) ∧ (𝑃𝐴 ∧ ¬ 𝑃 𝑊) ∧ (𝑄𝐴 ∧ ¬ 𝑄 𝑊)) ∧ (𝑃𝑄 ∧ (𝑅𝐴 ∧ ¬ 𝑅 𝑊))) → ((𝑅 (𝑃 𝑄) ∧ 𝑒𝐴 ∧ (¬ 𝑒 𝑊 ∧ ¬ 𝑒 (𝑃 𝑄))) → (𝐺‘(𝐹𝑅)) = 𝑅))
32313expd 1447 . . . 4 ((((𝐾 ∈ HL ∧ 𝑊𝐻) ∧ (𝑃𝐴 ∧ ¬ 𝑃 𝑊) ∧ (𝑄𝐴 ∧ ¬ 𝑄 𝑊)) ∧ (𝑃𝑄 ∧ (𝑅𝐴 ∧ ¬ 𝑅 𝑊))) → (𝑅 (𝑃 𝑄) → (𝑒𝐴 → ((¬ 𝑒 𝑊 ∧ ¬ 𝑒 (𝑃 𝑄)) → (𝐺‘(𝐹𝑅)) = 𝑅))))
33323impia 1110 . . 3 ((((𝐾 ∈ HL ∧ 𝑊𝐻) ∧ (𝑃𝐴 ∧ ¬ 𝑃 𝑊) ∧ (𝑄𝐴 ∧ ¬ 𝑄 𝑊)) ∧ (𝑃𝑄 ∧ (𝑅𝐴 ∧ ¬ 𝑅 𝑊)) ∧ 𝑅 (𝑃 𝑄)) → (𝑒𝐴 → ((¬ 𝑒 𝑊 ∧ ¬ 𝑒 (𝑃 𝑄)) → (𝐺‘(𝐹𝑅)) = 𝑅)))
3433rexlimdv 3168 . 2 ((((𝐾 ∈ HL ∧ 𝑊𝐻) ∧ (𝑃𝐴 ∧ ¬ 𝑃 𝑊) ∧ (𝑄𝐴 ∧ ¬ 𝑄 𝑊)) ∧ (𝑃𝑄 ∧ (𝑅𝐴 ∧ ¬ 𝑅 𝑊)) ∧ 𝑅 (𝑃 𝑄)) → (∃𝑒𝐴𝑒 𝑊 ∧ ¬ 𝑒 (𝑃 𝑄)) → (𝐺‘(𝐹𝑅)) = 𝑅))
3510, 34mpd 15 1 ((((𝐾 ∈ HL ∧ 𝑊𝐻) ∧ (𝑃𝐴 ∧ ¬ 𝑃 𝑊) ∧ (𝑄𝐴 ∧ ¬ 𝑄 𝑊)) ∧ (𝑃𝑄 ∧ (𝑅𝐴 ∧ ¬ 𝑅 𝑊)) ∧ 𝑅 (𝑃 𝑄)) → (𝐺‘(𝐹𝑅)) = 𝑅)
Colors of variables: wff setvar class
Syntax hints:  ¬ wn 3  wi 4  wa 383  w3a 1072   = wceq 1632  wcel 2139  wne 2932  wral 3050  wrex 3051  csb 3674  ifcif 4230   class class class wbr 4804  cmpt 4881  cfv 6049  crio 6774  (class class class)co 6814  Basecbs 16079  lecple 16170  joincjn 17165  meetcmee 17166  Atomscatm 35071  HLchlt 35158  LHypclh 35791
This theorem was proved from axioms:  ax-mp 5  ax-1 6  ax-2 7  ax-3 8  ax-gen 1871  ax-4 1886  ax-5 1988  ax-6 2054  ax-7 2090  ax-8 2141  ax-9 2148  ax-10 2168  ax-11 2183  ax-12 2196  ax-13 2391  ax-ext 2740  ax-rep 4923  ax-sep 4933  ax-nul 4941  ax-pow 4992  ax-pr 5055  ax-un 7115  ax-riotaBAD 34760
This theorem depends on definitions:  df-bi 197  df-or 384  df-an 385  df-3or 1073  df-3an 1074  df-tru 1635  df-ex 1854  df-nf 1859  df-sb 2047  df-eu 2611  df-mo 2612  df-clab 2747  df-cleq 2753  df-clel 2756  df-nfc 2891  df-ne 2933  df-nel 3036  df-ral 3055  df-rex 3056  df-reu 3057  df-rmo 3058  df-rab 3059  df-v 3342  df-sbc 3577  df-csb 3675  df-dif 3718  df-un 3720  df-in 3722  df-ss 3729  df-nul 4059  df-if 4231  df-pw 4304  df-sn 4322  df-pr 4324  df-op 4328  df-uni 4589  df-iun 4674  df-iin 4675  df-br 4805  df-opab 4865  df-mpt 4882  df-id 5174  df-xp 5272  df-rel 5273  df-cnv 5274  df-co 5275  df-dm 5276  df-rn 5277  df-res 5278  df-ima 5279  df-iota 6012  df-fun 6051  df-fn 6052  df-f 6053  df-f1 6054  df-fo 6055  df-f1o 6056  df-fv 6057  df-riota 6775  df-ov 6817  df-oprab 6818  df-mpt2 6819  df-1st 7334  df-2nd 7335  df-undef 7569  df-preset 17149  df-poset 17167  df-plt 17179  df-lub 17195  df-glb 17196  df-join 17197  df-meet 17198  df-p0 17260  df-p1 17261  df-lat 17267  df-clat 17329  df-oposet 34984  df-ol 34986  df-oml 34987  df-covers 35074  df-ats 35075  df-atl 35106  df-cvlat 35130  df-hlat 35159  df-llines 35305  df-lplanes 35306  df-lvols 35307  df-lines 35308  df-psubsp 35310  df-pmap 35311  df-padd 35603  df-lhyp 35795
This theorem is referenced by:  cdlemeg46gf  36341
  Copyright terms: Public domain W3C validator