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

Theorem cdleme3b 40248
Description: Part of proof of Lemma E in [Crawley] p. 113. Lemma leading to cdleme3fa 40255 and cdleme3 40256. (Contributed by NM, 6-Jun-2012.)
Hypotheses
Ref Expression
cdleme1.l = (le‘𝐾)
cdleme1.j = (join‘𝐾)
cdleme1.m = (meet‘𝐾)
cdleme1.a 𝐴 = (Atoms‘𝐾)
cdleme1.h 𝐻 = (LHyp‘𝐾)
cdleme1.u 𝑈 = ((𝑃 𝑄) 𝑊)
cdleme1.f 𝐹 = ((𝑅 𝑈) (𝑄 ((𝑃 𝑅) 𝑊)))
Assertion
Ref Expression
cdleme3b (((𝐾 ∈ HL ∧ 𝑊𝐻) ∧ ((𝑃𝐴 ∧ ¬ 𝑃 𝑊) ∧ (𝑄𝐴𝑃𝑄) ∧ (𝑅𝐴 ∧ ¬ 𝑅 𝑊))) → 𝐹𝑅)

Proof of Theorem cdleme3b
StepHypRef Expression
1 simpll 766 . . 3 (((𝐾 ∈ HL ∧ 𝑊𝐻) ∧ ((𝑃𝐴 ∧ ¬ 𝑃 𝑊) ∧ (𝑄𝐴𝑃𝑄) ∧ (𝑅𝐴 ∧ ¬ 𝑅 𝑊))) → 𝐾 ∈ HL)
2 simpr3l 1235 . . . 4 (((𝐾 ∈ HL ∧ 𝑊𝐻) ∧ ((𝑃𝐴 ∧ ¬ 𝑃 𝑊) ∧ (𝑄𝐴𝑃𝑄) ∧ (𝑅𝐴 ∧ ¬ 𝑅 𝑊))) → 𝑅𝐴)
3 eqid 2735 . . . . 5 (Base‘𝐾) = (Base‘𝐾)
4 cdleme1.a . . . . 5 𝐴 = (Atoms‘𝐾)
53, 4atbase 39307 . . . 4 (𝑅𝐴𝑅 ∈ (Base‘𝐾))
62, 5syl 17 . . 3 (((𝐾 ∈ HL ∧ 𝑊𝐻) ∧ ((𝑃𝐴 ∧ ¬ 𝑃 𝑊) ∧ (𝑄𝐴𝑃𝑄) ∧ (𝑅𝐴 ∧ ¬ 𝑅 𝑊))) → 𝑅 ∈ (Base‘𝐾))
7 hllat 39381 . . . . 5 (𝐾 ∈ HL → 𝐾 ∈ Lat)
87ad2antrr 726 . . . 4 (((𝐾 ∈ HL ∧ 𝑊𝐻) ∧ ((𝑃𝐴 ∧ ¬ 𝑃 𝑊) ∧ (𝑄𝐴𝑃𝑄) ∧ (𝑅𝐴 ∧ ¬ 𝑅 𝑊))) → 𝐾 ∈ Lat)
9 cdleme1.f . . . . 5 𝐹 = ((𝑅 𝑈) (𝑄 ((𝑃 𝑅) 𝑊)))
10 cdleme1.l . . . . . . . . . 10 = (le‘𝐾)
11 cdleme1.j . . . . . . . . . 10 = (join‘𝐾)
12 cdleme1.m . . . . . . . . . 10 = (meet‘𝐾)
13 cdleme1.h . . . . . . . . . 10 𝐻 = (LHyp‘𝐾)
14 cdleme1.u . . . . . . . . . 10 𝑈 = ((𝑃 𝑄) 𝑊)
1510, 11, 12, 4, 13, 14lhpat2 40064 . . . . . . . . 9 (((𝐾 ∈ HL ∧ 𝑊𝐻) ∧ (𝑃𝐴 ∧ ¬ 𝑃 𝑊) ∧ (𝑄𝐴𝑃𝑄)) → 𝑈𝐴)
16153adant3r3 1185 . . . . . . . 8 (((𝐾 ∈ HL ∧ 𝑊𝐻) ∧ ((𝑃𝐴 ∧ ¬ 𝑃 𝑊) ∧ (𝑄𝐴𝑃𝑄) ∧ (𝑅𝐴 ∧ ¬ 𝑅 𝑊))) → 𝑈𝐴)
173, 4atbase 39307 . . . . . . . 8 (𝑈𝐴𝑈 ∈ (Base‘𝐾))
1816, 17syl 17 . . . . . . 7 (((𝐾 ∈ HL ∧ 𝑊𝐻) ∧ ((𝑃𝐴 ∧ ¬ 𝑃 𝑊) ∧ (𝑄𝐴𝑃𝑄) ∧ (𝑅𝐴 ∧ ¬ 𝑅 𝑊))) → 𝑈 ∈ (Base‘𝐾))
193, 11latjcl 18449 . . . . . . 7 ((𝐾 ∈ Lat ∧ 𝑅 ∈ (Base‘𝐾) ∧ 𝑈 ∈ (Base‘𝐾)) → (𝑅 𝑈) ∈ (Base‘𝐾))
208, 6, 18, 19syl3anc 1373 . . . . . 6 (((𝐾 ∈ HL ∧ 𝑊𝐻) ∧ ((𝑃𝐴 ∧ ¬ 𝑃 𝑊) ∧ (𝑄𝐴𝑃𝑄) ∧ (𝑅𝐴 ∧ ¬ 𝑅 𝑊))) → (𝑅 𝑈) ∈ (Base‘𝐾))
21 simpr2l 1233 . . . . . . . 8 (((𝐾 ∈ HL ∧ 𝑊𝐻) ∧ ((𝑃𝐴 ∧ ¬ 𝑃 𝑊) ∧ (𝑄𝐴𝑃𝑄) ∧ (𝑅𝐴 ∧ ¬ 𝑅 𝑊))) → 𝑄𝐴)
223, 4atbase 39307 . . . . . . . 8 (𝑄𝐴𝑄 ∈ (Base‘𝐾))
2321, 22syl 17 . . . . . . 7 (((𝐾 ∈ HL ∧ 𝑊𝐻) ∧ ((𝑃𝐴 ∧ ¬ 𝑃 𝑊) ∧ (𝑄𝐴𝑃𝑄) ∧ (𝑅𝐴 ∧ ¬ 𝑅 𝑊))) → 𝑄 ∈ (Base‘𝐾))
24 simpr1l 1231 . . . . . . . . . 10 (((𝐾 ∈ HL ∧ 𝑊𝐻) ∧ ((𝑃𝐴 ∧ ¬ 𝑃 𝑊) ∧ (𝑄𝐴𝑃𝑄) ∧ (𝑅𝐴 ∧ ¬ 𝑅 𝑊))) → 𝑃𝐴)
253, 4atbase 39307 . . . . . . . . . 10 (𝑃𝐴𝑃 ∈ (Base‘𝐾))
2624, 25syl 17 . . . . . . . . 9 (((𝐾 ∈ HL ∧ 𝑊𝐻) ∧ ((𝑃𝐴 ∧ ¬ 𝑃 𝑊) ∧ (𝑄𝐴𝑃𝑄) ∧ (𝑅𝐴 ∧ ¬ 𝑅 𝑊))) → 𝑃 ∈ (Base‘𝐾))
273, 11latjcl 18449 . . . . . . . . 9 ((𝐾 ∈ Lat ∧ 𝑃 ∈ (Base‘𝐾) ∧ 𝑅 ∈ (Base‘𝐾)) → (𝑃 𝑅) ∈ (Base‘𝐾))
288, 26, 6, 27syl3anc 1373 . . . . . . . 8 (((𝐾 ∈ HL ∧ 𝑊𝐻) ∧ ((𝑃𝐴 ∧ ¬ 𝑃 𝑊) ∧ (𝑄𝐴𝑃𝑄) ∧ (𝑅𝐴 ∧ ¬ 𝑅 𝑊))) → (𝑃 𝑅) ∈ (Base‘𝐾))
293, 13lhpbase 40017 . . . . . . . . 9 (𝑊𝐻𝑊 ∈ (Base‘𝐾))
3029ad2antlr 727 . . . . . . . 8 (((𝐾 ∈ HL ∧ 𝑊𝐻) ∧ ((𝑃𝐴 ∧ ¬ 𝑃 𝑊) ∧ (𝑄𝐴𝑃𝑄) ∧ (𝑅𝐴 ∧ ¬ 𝑅 𝑊))) → 𝑊 ∈ (Base‘𝐾))
313, 12latmcl 18450 . . . . . . . 8 ((𝐾 ∈ Lat ∧ (𝑃 𝑅) ∈ (Base‘𝐾) ∧ 𝑊 ∈ (Base‘𝐾)) → ((𝑃 𝑅) 𝑊) ∈ (Base‘𝐾))
328, 28, 30, 31syl3anc 1373 . . . . . . 7 (((𝐾 ∈ HL ∧ 𝑊𝐻) ∧ ((𝑃𝐴 ∧ ¬ 𝑃 𝑊) ∧ (𝑄𝐴𝑃𝑄) ∧ (𝑅𝐴 ∧ ¬ 𝑅 𝑊))) → ((𝑃 𝑅) 𝑊) ∈ (Base‘𝐾))
333, 11latjcl 18449 . . . . . . 7 ((𝐾 ∈ Lat ∧ 𝑄 ∈ (Base‘𝐾) ∧ ((𝑃 𝑅) 𝑊) ∈ (Base‘𝐾)) → (𝑄 ((𝑃 𝑅) 𝑊)) ∈ (Base‘𝐾))
348, 23, 32, 33syl3anc 1373 . . . . . 6 (((𝐾 ∈ HL ∧ 𝑊𝐻) ∧ ((𝑃𝐴 ∧ ¬ 𝑃 𝑊) ∧ (𝑄𝐴𝑃𝑄) ∧ (𝑅𝐴 ∧ ¬ 𝑅 𝑊))) → (𝑄 ((𝑃 𝑅) 𝑊)) ∈ (Base‘𝐾))
353, 12latmcl 18450 . . . . . 6 ((𝐾 ∈ Lat ∧ (𝑅 𝑈) ∈ (Base‘𝐾) ∧ (𝑄 ((𝑃 𝑅) 𝑊)) ∈ (Base‘𝐾)) → ((𝑅 𝑈) (𝑄 ((𝑃 𝑅) 𝑊))) ∈ (Base‘𝐾))
368, 20, 34, 35syl3anc 1373 . . . . 5 (((𝐾 ∈ HL ∧ 𝑊𝐻) ∧ ((𝑃𝐴 ∧ ¬ 𝑃 𝑊) ∧ (𝑄𝐴𝑃𝑄) ∧ (𝑅𝐴 ∧ ¬ 𝑅 𝑊))) → ((𝑅 𝑈) (𝑄 ((𝑃 𝑅) 𝑊))) ∈ (Base‘𝐾))
379, 36eqeltrid 2838 . . . 4 (((𝐾 ∈ HL ∧ 𝑊𝐻) ∧ ((𝑃𝐴 ∧ ¬ 𝑃 𝑊) ∧ (𝑄𝐴𝑃𝑄) ∧ (𝑅𝐴 ∧ ¬ 𝑅 𝑊))) → 𝐹 ∈ (Base‘𝐾))
383, 11latjcl 18449 . . . 4 ((𝐾 ∈ Lat ∧ 𝑅 ∈ (Base‘𝐾) ∧ 𝐹 ∈ (Base‘𝐾)) → (𝑅 𝐹) ∈ (Base‘𝐾))
398, 6, 37, 38syl3anc 1373 . . 3 (((𝐾 ∈ HL ∧ 𝑊𝐻) ∧ ((𝑃𝐴 ∧ ¬ 𝑃 𝑊) ∧ (𝑄𝐴𝑃𝑄) ∧ (𝑅𝐴 ∧ ¬ 𝑅 𝑊))) → (𝑅 𝐹) ∈ (Base‘𝐾))
403, 11latjcl 18449 . . . . . . . . . 10 ((𝐾 ∈ Lat ∧ 𝑃 ∈ (Base‘𝐾) ∧ 𝑄 ∈ (Base‘𝐾)) → (𝑃 𝑄) ∈ (Base‘𝐾))
418, 26, 23, 40syl3anc 1373 . . . . . . . . 9 (((𝐾 ∈ HL ∧ 𝑊𝐻) ∧ ((𝑃𝐴 ∧ ¬ 𝑃 𝑊) ∧ (𝑄𝐴𝑃𝑄) ∧ (𝑅𝐴 ∧ ¬ 𝑅 𝑊))) → (𝑃 𝑄) ∈ (Base‘𝐾))
423, 10, 12latmle2 18475 . . . . . . . . 9 ((𝐾 ∈ Lat ∧ (𝑃 𝑄) ∈ (Base‘𝐾) ∧ 𝑊 ∈ (Base‘𝐾)) → ((𝑃 𝑄) 𝑊) 𝑊)
438, 41, 30, 42syl3anc 1373 . . . . . . . 8 (((𝐾 ∈ HL ∧ 𝑊𝐻) ∧ ((𝑃𝐴 ∧ ¬ 𝑃 𝑊) ∧ (𝑄𝐴𝑃𝑄) ∧ (𝑅𝐴 ∧ ¬ 𝑅 𝑊))) → ((𝑃 𝑄) 𝑊) 𝑊)
4414, 43eqbrtrid 5154 . . . . . . 7 (((𝐾 ∈ HL ∧ 𝑊𝐻) ∧ ((𝑃𝐴 ∧ ¬ 𝑃 𝑊) ∧ (𝑄𝐴𝑃𝑄) ∧ (𝑅𝐴 ∧ ¬ 𝑅 𝑊))) → 𝑈 𝑊)
45 simpr3r 1236 . . . . . . 7 (((𝐾 ∈ HL ∧ 𝑊𝐻) ∧ ((𝑃𝐴 ∧ ¬ 𝑃 𝑊) ∧ (𝑄𝐴𝑃𝑄) ∧ (𝑅𝐴 ∧ ¬ 𝑅 𝑊))) → ¬ 𝑅 𝑊)
46 nbrne2 5139 . . . . . . 7 ((𝑈 𝑊 ∧ ¬ 𝑅 𝑊) → 𝑈𝑅)
4744, 45, 46syl2anc 584 . . . . . 6 (((𝐾 ∈ HL ∧ 𝑊𝐻) ∧ ((𝑃𝐴 ∧ ¬ 𝑃 𝑊) ∧ (𝑄𝐴𝑃𝑄) ∧ (𝑅𝐴 ∧ ¬ 𝑅 𝑊))) → 𝑈𝑅)
4847necomd 2987 . . . . 5 (((𝐾 ∈ HL ∧ 𝑊𝐻) ∧ ((𝑃𝐴 ∧ ¬ 𝑃 𝑊) ∧ (𝑄𝐴𝑃𝑄) ∧ (𝑅𝐴 ∧ ¬ 𝑅 𝑊))) → 𝑅𝑈)
49 eqid 2735 . . . . . . 7 ( ⋖ ‘𝐾) = ( ⋖ ‘𝐾)
5011, 49, 4atcvr1 39436 . . . . . 6 ((𝐾 ∈ HL ∧ 𝑅𝐴𝑈𝐴) → (𝑅𝑈𝑅( ⋖ ‘𝐾)(𝑅 𝑈)))
511, 2, 16, 50syl3anc 1373 . . . . 5 (((𝐾 ∈ HL ∧ 𝑊𝐻) ∧ ((𝑃𝐴 ∧ ¬ 𝑃 𝑊) ∧ (𝑄𝐴𝑃𝑄) ∧ (𝑅𝐴 ∧ ¬ 𝑅 𝑊))) → (𝑅𝑈𝑅( ⋖ ‘𝐾)(𝑅 𝑈)))
5248, 51mpbid 232 . . . 4 (((𝐾 ∈ HL ∧ 𝑊𝐻) ∧ ((𝑃𝐴 ∧ ¬ 𝑃 𝑊) ∧ (𝑄𝐴𝑃𝑄) ∧ (𝑅𝐴 ∧ ¬ 𝑅 𝑊))) → 𝑅( ⋖ ‘𝐾)(𝑅 𝑈))
53 simpr3 1197 . . . . . 6 (((𝐾 ∈ HL ∧ 𝑊𝐻) ∧ ((𝑃𝐴 ∧ ¬ 𝑃 𝑊) ∧ (𝑄𝐴𝑃𝑄) ∧ (𝑅𝐴 ∧ ¬ 𝑅 𝑊))) → (𝑅𝐴 ∧ ¬ 𝑅 𝑊))
5424, 21, 533jca 1128 . . . . 5 (((𝐾 ∈ HL ∧ 𝑊𝐻) ∧ ((𝑃𝐴 ∧ ¬ 𝑃 𝑊) ∧ (𝑄𝐴𝑃𝑄) ∧ (𝑅𝐴 ∧ ¬ 𝑅 𝑊))) → (𝑃𝐴𝑄𝐴 ∧ (𝑅𝐴 ∧ ¬ 𝑅 𝑊)))
5510, 11, 12, 4, 13, 14, 9cdleme1 40246 . . . . 5 (((𝐾 ∈ HL ∧ 𝑊𝐻) ∧ (𝑃𝐴𝑄𝐴 ∧ (𝑅𝐴 ∧ ¬ 𝑅 𝑊))) → (𝑅 𝐹) = (𝑅 𝑈))
5654, 55syldan 591 . . . 4 (((𝐾 ∈ HL ∧ 𝑊𝐻) ∧ ((𝑃𝐴 ∧ ¬ 𝑃 𝑊) ∧ (𝑄𝐴𝑃𝑄) ∧ (𝑅𝐴 ∧ ¬ 𝑅 𝑊))) → (𝑅 𝐹) = (𝑅 𝑈))
5752, 56breqtrrd 5147 . . 3 (((𝐾 ∈ HL ∧ 𝑊𝐻) ∧ ((𝑃𝐴 ∧ ¬ 𝑃 𝑊) ∧ (𝑄𝐴𝑃𝑄) ∧ (𝑅𝐴 ∧ ¬ 𝑅 𝑊))) → 𝑅( ⋖ ‘𝐾)(𝑅 𝐹))
583, 49cvrne 39299 . . 3 (((𝐾 ∈ HL ∧ 𝑅 ∈ (Base‘𝐾) ∧ (𝑅 𝐹) ∈ (Base‘𝐾)) ∧ 𝑅( ⋖ ‘𝐾)(𝑅 𝐹)) → 𝑅 ≠ (𝑅 𝐹))
591, 6, 39, 57, 58syl31anc 1375 . 2 (((𝐾 ∈ HL ∧ 𝑊𝐻) ∧ ((𝑃𝐴 ∧ ¬ 𝑃 𝑊) ∧ (𝑄𝐴𝑃𝑄) ∧ (𝑅𝐴 ∧ ¬ 𝑅 𝑊))) → 𝑅 ≠ (𝑅 𝐹))
60 oveq2 7413 . . . . . 6 (𝐹 = 𝑅 → (𝑅 𝐹) = (𝑅 𝑅))
6160adantl 481 . . . . 5 ((((𝐾 ∈ HL ∧ 𝑊𝐻) ∧ ((𝑃𝐴 ∧ ¬ 𝑃 𝑊) ∧ (𝑄𝐴𝑃𝑄) ∧ (𝑅𝐴 ∧ ¬ 𝑅 𝑊))) ∧ 𝐹 = 𝑅) → (𝑅 𝐹) = (𝑅 𝑅))
6211, 4hlatjidm 39387 . . . . . . 7 ((𝐾 ∈ HL ∧ 𝑅𝐴) → (𝑅 𝑅) = 𝑅)
631, 2, 62syl2anc 584 . . . . . 6 (((𝐾 ∈ HL ∧ 𝑊𝐻) ∧ ((𝑃𝐴 ∧ ¬ 𝑃 𝑊) ∧ (𝑄𝐴𝑃𝑄) ∧ (𝑅𝐴 ∧ ¬ 𝑅 𝑊))) → (𝑅 𝑅) = 𝑅)
6463adantr 480 . . . . 5 ((((𝐾 ∈ HL ∧ 𝑊𝐻) ∧ ((𝑃𝐴 ∧ ¬ 𝑃 𝑊) ∧ (𝑄𝐴𝑃𝑄) ∧ (𝑅𝐴 ∧ ¬ 𝑅 𝑊))) ∧ 𝐹 = 𝑅) → (𝑅 𝑅) = 𝑅)
6561, 64eqtr2d 2771 . . . 4 ((((𝐾 ∈ HL ∧ 𝑊𝐻) ∧ ((𝑃𝐴 ∧ ¬ 𝑃 𝑊) ∧ (𝑄𝐴𝑃𝑄) ∧ (𝑅𝐴 ∧ ¬ 𝑅 𝑊))) ∧ 𝐹 = 𝑅) → 𝑅 = (𝑅 𝐹))
6665ex 412 . . 3 (((𝐾 ∈ HL ∧ 𝑊𝐻) ∧ ((𝑃𝐴 ∧ ¬ 𝑃 𝑊) ∧ (𝑄𝐴𝑃𝑄) ∧ (𝑅𝐴 ∧ ¬ 𝑅 𝑊))) → (𝐹 = 𝑅𝑅 = (𝑅 𝐹)))
6766necon3d 2953 . 2 (((𝐾 ∈ HL ∧ 𝑊𝐻) ∧ ((𝑃𝐴 ∧ ¬ 𝑃 𝑊) ∧ (𝑄𝐴𝑃𝑄) ∧ (𝑅𝐴 ∧ ¬ 𝑅 𝑊))) → (𝑅 ≠ (𝑅 𝐹) → 𝐹𝑅))
6859, 67mpd 15 1 (((𝐾 ∈ HL ∧ 𝑊𝐻) ∧ ((𝑃𝐴 ∧ ¬ 𝑃 𝑊) ∧ (𝑄𝐴𝑃𝑄) ∧ (𝑅𝐴 ∧ ¬ 𝑅 𝑊))) → 𝐹𝑅)
Colors of variables: wff setvar class
Syntax hints:  ¬ wn 3  wi 4  wb 206  wa 395  w3a 1086   = wceq 1540  wcel 2108  wne 2932   class class class wbr 5119  cfv 6531  (class class class)co 7405  Basecbs 17228  lecple 17278  joincjn 18323  meetcmee 18324  Latclat 18441  ccvr 39280  Atomscatm 39281  HLchlt 39368  LHypclh 40003
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 2007  ax-8 2110  ax-9 2118  ax-10 2141  ax-11 2157  ax-12 2177  ax-ext 2707  ax-rep 5249  ax-sep 5266  ax-nul 5276  ax-pow 5335  ax-pr 5402  ax-un 7729
This theorem depends on definitions:  df-bi 207  df-an 396  df-or 848  df-3an 1088  df-tru 1543  df-fal 1553  df-ex 1780  df-nf 1784  df-sb 2065  df-mo 2539  df-eu 2568  df-clab 2714  df-cleq 2727  df-clel 2809  df-nfc 2885  df-ne 2933  df-ral 3052  df-rex 3061  df-rmo 3359  df-reu 3360  df-rab 3416  df-v 3461  df-sbc 3766  df-csb 3875  df-dif 3929  df-un 3931  df-in 3933  df-ss 3943  df-nul 4309  df-if 4501  df-pw 4577  df-sn 4602  df-pr 4604  df-op 4608  df-uni 4884  df-iun 4969  df-iin 4970  df-br 5120  df-opab 5182  df-mpt 5202  df-id 5548  df-xp 5660  df-rel 5661  df-cnv 5662  df-co 5663  df-dm 5664  df-rn 5665  df-res 5666  df-ima 5667  df-iota 6484  df-fun 6533  df-fn 6534  df-f 6535  df-f1 6536  df-fo 6537  df-f1o 6538  df-fv 6539  df-riota 7362  df-ov 7408  df-oprab 7409  df-mpo 7410  df-1st 7988  df-2nd 7989  df-proset 18306  df-poset 18325  df-plt 18340  df-lub 18356  df-glb 18357  df-join 18358  df-meet 18359  df-p0 18435  df-p1 18436  df-lat 18442  df-clat 18509  df-oposet 39194  df-ol 39196  df-oml 39197  df-covers 39284  df-ats 39285  df-atl 39316  df-cvlat 39340  df-hlat 39369  df-psubsp 39522  df-pmap 39523  df-padd 39815  df-lhyp 40007
This theorem is referenced by:  cdleme36m  40480
  Copyright terms: Public domain W3C validator