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 40853
Description: Part of proof of Lemma E in [Crawley] p. 113. Lemma leading to cdleme3fa 40860 and cdleme3 40861. (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 776 . . 3 (((𝐾 ∈ HL ∧ 𝑊𝐻) ∧ ((𝑃𝐴 ∧ ¬ 𝑃 𝑊) ∧ (𝑄𝐴𝑃𝑄) ∧ (𝑅𝐴 ∧ ¬ 𝑅 𝑊))) → 𝐾 ∈ HL)
2 simpr3l 1248 . . . 4 (((𝐾 ∈ HL ∧ 𝑊𝐻) ∧ ((𝑃𝐴 ∧ ¬ 𝑃 𝑊) ∧ (𝑄𝐴𝑃𝑄) ∧ (𝑅𝐴 ∧ ¬ 𝑅 𝑊))) → 𝑅𝐴)
3 eqid 2762 . . . . 5 (Base‘𝐾) = (Base‘𝐾)
4 cdleme1.a . . . . 5 𝐴 = (Atoms‘𝐾)
53, 4atbase 39913 . . . 4 (𝑅𝐴𝑅 ∈ (Base‘𝐾))
62, 5syl 17 . . 3 (((𝐾 ∈ HL ∧ 𝑊𝐻) ∧ ((𝑃𝐴 ∧ ¬ 𝑃 𝑊) ∧ (𝑄𝐴𝑃𝑄) ∧ (𝑅𝐴 ∧ ¬ 𝑅 𝑊))) → 𝑅 ∈ (Base‘𝐾))
7 hllat 39987 . . . . 5 (𝐾 ∈ HL → 𝐾 ∈ Lat)
87ad2antrr 736 . . . 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 40669 . . . . . . . . 9 (((𝐾 ∈ HL ∧ 𝑊𝐻) ∧ (𝑃𝐴 ∧ ¬ 𝑃 𝑊) ∧ (𝑄𝐴𝑃𝑄)) → 𝑈𝐴)
16153adant3r3 1198 . . . . . . . 8 (((𝐾 ∈ HL ∧ 𝑊𝐻) ∧ ((𝑃𝐴 ∧ ¬ 𝑃 𝑊) ∧ (𝑄𝐴𝑃𝑄) ∧ (𝑅𝐴 ∧ ¬ 𝑅 𝑊))) → 𝑈𝐴)
173, 4atbase 39913 . . . . . . . 8 (𝑈𝐴𝑈 ∈ (Base‘𝐾))
1816, 17syl 17 . . . . . . 7 (((𝐾 ∈ HL ∧ 𝑊𝐻) ∧ ((𝑃𝐴 ∧ ¬ 𝑃 𝑊) ∧ (𝑄𝐴𝑃𝑄) ∧ (𝑅𝐴 ∧ ¬ 𝑅 𝑊))) → 𝑈 ∈ (Base‘𝐾))
193, 11latjcl 18471 . . . . . . 7 ((𝐾 ∈ Lat ∧ 𝑅 ∈ (Base‘𝐾) ∧ 𝑈 ∈ (Base‘𝐾)) → (𝑅 𝑈) ∈ (Base‘𝐾))
208, 6, 18, 19syl3anc 1390 . . . . . 6 (((𝐾 ∈ HL ∧ 𝑊𝐻) ∧ ((𝑃𝐴 ∧ ¬ 𝑃 𝑊) ∧ (𝑄𝐴𝑃𝑄) ∧ (𝑅𝐴 ∧ ¬ 𝑅 𝑊))) → (𝑅 𝑈) ∈ (Base‘𝐾))
21 simpr2l 1246 . . . . . . . 8 (((𝐾 ∈ HL ∧ 𝑊𝐻) ∧ ((𝑃𝐴 ∧ ¬ 𝑃 𝑊) ∧ (𝑄𝐴𝑃𝑄) ∧ (𝑅𝐴 ∧ ¬ 𝑅 𝑊))) → 𝑄𝐴)
223, 4atbase 39913 . . . . . . . 8 (𝑄𝐴𝑄 ∈ (Base‘𝐾))
2321, 22syl 17 . . . . . . 7 (((𝐾 ∈ HL ∧ 𝑊𝐻) ∧ ((𝑃𝐴 ∧ ¬ 𝑃 𝑊) ∧ (𝑄𝐴𝑃𝑄) ∧ (𝑅𝐴 ∧ ¬ 𝑅 𝑊))) → 𝑄 ∈ (Base‘𝐾))
24 simpr1l 1244 . . . . . . . . . 10 (((𝐾 ∈ HL ∧ 𝑊𝐻) ∧ ((𝑃𝐴 ∧ ¬ 𝑃 𝑊) ∧ (𝑄𝐴𝑃𝑄) ∧ (𝑅𝐴 ∧ ¬ 𝑅 𝑊))) → 𝑃𝐴)
253, 4atbase 39913 . . . . . . . . . 10 (𝑃𝐴𝑃 ∈ (Base‘𝐾))
2624, 25syl 17 . . . . . . . . 9 (((𝐾 ∈ HL ∧ 𝑊𝐻) ∧ ((𝑃𝐴 ∧ ¬ 𝑃 𝑊) ∧ (𝑄𝐴𝑃𝑄) ∧ (𝑅𝐴 ∧ ¬ 𝑅 𝑊))) → 𝑃 ∈ (Base‘𝐾))
273, 11latjcl 18471 . . . . . . . . 9 ((𝐾 ∈ Lat ∧ 𝑃 ∈ (Base‘𝐾) ∧ 𝑅 ∈ (Base‘𝐾)) → (𝑃 𝑅) ∈ (Base‘𝐾))
288, 26, 6, 27syl3anc 1390 . . . . . . . 8 (((𝐾 ∈ HL ∧ 𝑊𝐻) ∧ ((𝑃𝐴 ∧ ¬ 𝑃 𝑊) ∧ (𝑄𝐴𝑃𝑄) ∧ (𝑅𝐴 ∧ ¬ 𝑅 𝑊))) → (𝑃 𝑅) ∈ (Base‘𝐾))
293, 13lhpbase 40622 . . . . . . . . 9 (𝑊𝐻𝑊 ∈ (Base‘𝐾))
3029ad2antlr 737 . . . . . . . 8 (((𝐾 ∈ HL ∧ 𝑊𝐻) ∧ ((𝑃𝐴 ∧ ¬ 𝑃 𝑊) ∧ (𝑄𝐴𝑃𝑄) ∧ (𝑅𝐴 ∧ ¬ 𝑅 𝑊))) → 𝑊 ∈ (Base‘𝐾))
313, 12latmcl 18472 . . . . . . . 8 ((𝐾 ∈ Lat ∧ (𝑃 𝑅) ∈ (Base‘𝐾) ∧ 𝑊 ∈ (Base‘𝐾)) → ((𝑃 𝑅) 𝑊) ∈ (Base‘𝐾))
328, 28, 30, 31syl3anc 1390 . . . . . . 7 (((𝐾 ∈ HL ∧ 𝑊𝐻) ∧ ((𝑃𝐴 ∧ ¬ 𝑃 𝑊) ∧ (𝑄𝐴𝑃𝑄) ∧ (𝑅𝐴 ∧ ¬ 𝑅 𝑊))) → ((𝑃 𝑅) 𝑊) ∈ (Base‘𝐾))
333, 11latjcl 18471 . . . . . . 7 ((𝐾 ∈ Lat ∧ 𝑄 ∈ (Base‘𝐾) ∧ ((𝑃 𝑅) 𝑊) ∈ (Base‘𝐾)) → (𝑄 ((𝑃 𝑅) 𝑊)) ∈ (Base‘𝐾))
348, 23, 32, 33syl3anc 1390 . . . . . 6 (((𝐾 ∈ HL ∧ 𝑊𝐻) ∧ ((𝑃𝐴 ∧ ¬ 𝑃 𝑊) ∧ (𝑄𝐴𝑃𝑄) ∧ (𝑅𝐴 ∧ ¬ 𝑅 𝑊))) → (𝑄 ((𝑃 𝑅) 𝑊)) ∈ (Base‘𝐾))
353, 12latmcl 18472 . . . . . 6 ((𝐾 ∈ Lat ∧ (𝑅 𝑈) ∈ (Base‘𝐾) ∧ (𝑄 ((𝑃 𝑅) 𝑊)) ∈ (Base‘𝐾)) → ((𝑅 𝑈) (𝑄 ((𝑃 𝑅) 𝑊))) ∈ (Base‘𝐾))
368, 20, 34, 35syl3anc 1390 . . . . 5 (((𝐾 ∈ HL ∧ 𝑊𝐻) ∧ ((𝑃𝐴 ∧ ¬ 𝑃 𝑊) ∧ (𝑄𝐴𝑃𝑄) ∧ (𝑅𝐴 ∧ ¬ 𝑅 𝑊))) → ((𝑅 𝑈) (𝑄 ((𝑃 𝑅) 𝑊))) ∈ (Base‘𝐾))
379, 36eqeltrid 2866 . . . 4 (((𝐾 ∈ HL ∧ 𝑊𝐻) ∧ ((𝑃𝐴 ∧ ¬ 𝑃 𝑊) ∧ (𝑄𝐴𝑃𝑄) ∧ (𝑅𝐴 ∧ ¬ 𝑅 𝑊))) → 𝐹 ∈ (Base‘𝐾))
383, 11latjcl 18471 . . . 4 ((𝐾 ∈ Lat ∧ 𝑅 ∈ (Base‘𝐾) ∧ 𝐹 ∈ (Base‘𝐾)) → (𝑅 𝐹) ∈ (Base‘𝐾))
398, 6, 37, 38syl3anc 1390 . . 3 (((𝐾 ∈ HL ∧ 𝑊𝐻) ∧ ((𝑃𝐴 ∧ ¬ 𝑃 𝑊) ∧ (𝑄𝐴𝑃𝑄) ∧ (𝑅𝐴 ∧ ¬ 𝑅 𝑊))) → (𝑅 𝐹) ∈ (Base‘𝐾))
403, 11latjcl 18471 . . . . . . . . . 10 ((𝐾 ∈ Lat ∧ 𝑃 ∈ (Base‘𝐾) ∧ 𝑄 ∈ (Base‘𝐾)) → (𝑃 𝑄) ∈ (Base‘𝐾))
418, 26, 23, 40syl3anc 1390 . . . . . . . . 9 (((𝐾 ∈ HL ∧ 𝑊𝐻) ∧ ((𝑃𝐴 ∧ ¬ 𝑃 𝑊) ∧ (𝑄𝐴𝑃𝑄) ∧ (𝑅𝐴 ∧ ¬ 𝑅 𝑊))) → (𝑃 𝑄) ∈ (Base‘𝐾))
423, 10, 12latmle2 18497 . . . . . . . . 9 ((𝐾 ∈ Lat ∧ (𝑃 𝑄) ∈ (Base‘𝐾) ∧ 𝑊 ∈ (Base‘𝐾)) → ((𝑃 𝑄) 𝑊) 𝑊)
438, 41, 30, 42syl3anc 1390 . . . . . . . 8 (((𝐾 ∈ HL ∧ 𝑊𝐻) ∧ ((𝑃𝐴 ∧ ¬ 𝑃 𝑊) ∧ (𝑄𝐴𝑃𝑄) ∧ (𝑅𝐴 ∧ ¬ 𝑅 𝑊))) → ((𝑃 𝑄) 𝑊) 𝑊)
4414, 43eqbrtrid 5135 . . . . . . 7 (((𝐾 ∈ HL ∧ 𝑊𝐻) ∧ ((𝑃𝐴 ∧ ¬ 𝑃 𝑊) ∧ (𝑄𝐴𝑃𝑄) ∧ (𝑅𝐴 ∧ ¬ 𝑅 𝑊))) → 𝑈 𝑊)
45 simpr3r 1249 . . . . . . 7 (((𝐾 ∈ HL ∧ 𝑊𝐻) ∧ ((𝑃𝐴 ∧ ¬ 𝑃 𝑊) ∧ (𝑄𝐴𝑃𝑄) ∧ (𝑅𝐴 ∧ ¬ 𝑅 𝑊))) → ¬ 𝑅 𝑊)
46 nbrne2 5120 . . . . . . 7 ((𝑈 𝑊 ∧ ¬ 𝑅 𝑊) → 𝑈𝑅)
4744, 45, 46syl2anc 593 . . . . . 6 (((𝐾 ∈ HL ∧ 𝑊𝐻) ∧ ((𝑃𝐴 ∧ ¬ 𝑃 𝑊) ∧ (𝑄𝐴𝑃𝑄) ∧ (𝑅𝐴 ∧ ¬ 𝑅 𝑊))) → 𝑈𝑅)
4847necomd 3012 . . . . 5 (((𝐾 ∈ HL ∧ 𝑊𝐻) ∧ ((𝑃𝐴 ∧ ¬ 𝑃 𝑊) ∧ (𝑄𝐴𝑃𝑄) ∧ (𝑅𝐴 ∧ ¬ 𝑅 𝑊))) → 𝑅𝑈)
49 eqid 2762 . . . . . . 7 ( ⋖ ‘𝐾) = ( ⋖ ‘𝐾)
5011, 49, 4atcvr1 40041 . . . . . 6 ((𝐾 ∈ HL ∧ 𝑅𝐴𝑈𝐴) → (𝑅𝑈𝑅( ⋖ ‘𝐾)(𝑅 𝑈)))
511, 2, 16, 50syl3anc 1390 . . . . 5 (((𝐾 ∈ HL ∧ 𝑊𝐻) ∧ ((𝑃𝐴 ∧ ¬ 𝑃 𝑊) ∧ (𝑄𝐴𝑃𝑄) ∧ (𝑅𝐴 ∧ ¬ 𝑅 𝑊))) → (𝑅𝑈𝑅( ⋖ ‘𝐾)(𝑅 𝑈)))
5248, 51mpbid 234 . . . 4 (((𝐾 ∈ HL ∧ 𝑊𝐻) ∧ ((𝑃𝐴 ∧ ¬ 𝑃 𝑊) ∧ (𝑄𝐴𝑃𝑄) ∧ (𝑅𝐴 ∧ ¬ 𝑅 𝑊))) → 𝑅( ⋖ ‘𝐾)(𝑅 𝑈))
53 simpr3 1210 . . . . . 6 (((𝐾 ∈ HL ∧ 𝑊𝐻) ∧ ((𝑃𝐴 ∧ ¬ 𝑃 𝑊) ∧ (𝑄𝐴𝑃𝑄) ∧ (𝑅𝐴 ∧ ¬ 𝑅 𝑊))) → (𝑅𝐴 ∧ ¬ 𝑅 𝑊))
5424, 21, 533jca 1141 . . . . 5 (((𝐾 ∈ HL ∧ 𝑊𝐻) ∧ ((𝑃𝐴 ∧ ¬ 𝑃 𝑊) ∧ (𝑄𝐴𝑃𝑄) ∧ (𝑅𝐴 ∧ ¬ 𝑅 𝑊))) → (𝑃𝐴𝑄𝐴 ∧ (𝑅𝐴 ∧ ¬ 𝑅 𝑊)))
5510, 11, 12, 4, 13, 14, 9cdleme1 40851 . . . . 5 (((𝐾 ∈ HL ∧ 𝑊𝐻) ∧ (𝑃𝐴𝑄𝐴 ∧ (𝑅𝐴 ∧ ¬ 𝑅 𝑊))) → (𝑅 𝐹) = (𝑅 𝑈))
5654, 55syldan 600 . . . 4 (((𝐾 ∈ HL ∧ 𝑊𝐻) ∧ ((𝑃𝐴 ∧ ¬ 𝑃 𝑊) ∧ (𝑄𝐴𝑃𝑄) ∧ (𝑅𝐴 ∧ ¬ 𝑅 𝑊))) → (𝑅 𝐹) = (𝑅 𝑈))
5752, 56breqtrrd 5128 . . 3 (((𝐾 ∈ HL ∧ 𝑊𝐻) ∧ ((𝑃𝐴 ∧ ¬ 𝑃 𝑊) ∧ (𝑄𝐴𝑃𝑄) ∧ (𝑅𝐴 ∧ ¬ 𝑅 𝑊))) → 𝑅( ⋖ ‘𝐾)(𝑅 𝐹))
583, 49cvrne 39905 . . 3 (((𝐾 ∈ HL ∧ 𝑅 ∈ (Base‘𝐾) ∧ (𝑅 𝐹) ∈ (Base‘𝐾)) ∧ 𝑅( ⋖ ‘𝐾)(𝑅 𝐹)) → 𝑅 ≠ (𝑅 𝐹))
591, 6, 39, 57, 58syl31anc 1392 . 2 (((𝐾 ∈ HL ∧ 𝑊𝐻) ∧ ((𝑃𝐴 ∧ ¬ 𝑃 𝑊) ∧ (𝑄𝐴𝑃𝑄) ∧ (𝑅𝐴 ∧ ¬ 𝑅 𝑊))) → 𝑅 ≠ (𝑅 𝐹))
60 oveq2 7404 . . . . . 6 (𝐹 = 𝑅 → (𝑅 𝐹) = (𝑅 𝑅))
6160adantl 485 . . . . 5 ((((𝐾 ∈ HL ∧ 𝑊𝐻) ∧ ((𝑃𝐴 ∧ ¬ 𝑃 𝑊) ∧ (𝑄𝐴𝑃𝑄) ∧ (𝑅𝐴 ∧ ¬ 𝑅 𝑊))) ∧ 𝐹 = 𝑅) → (𝑅 𝐹) = (𝑅 𝑅))
6211, 4hlatjidm 39993 . . . . . . 7 ((𝐾 ∈ HL ∧ 𝑅𝐴) → (𝑅 𝑅) = 𝑅)
631, 2, 62syl2anc 593 . . . . . 6 (((𝐾 ∈ HL ∧ 𝑊𝐻) ∧ ((𝑃𝐴 ∧ ¬ 𝑃 𝑊) ∧ (𝑄𝐴𝑃𝑄) ∧ (𝑅𝐴 ∧ ¬ 𝑅 𝑊))) → (𝑅 𝑅) = 𝑅)
6463adantr 484 . . . . 5 ((((𝐾 ∈ HL ∧ 𝑊𝐻) ∧ ((𝑃𝐴 ∧ ¬ 𝑃 𝑊) ∧ (𝑄𝐴𝑃𝑄) ∧ (𝑅𝐴 ∧ ¬ 𝑅 𝑊))) ∧ 𝐹 = 𝑅) → (𝑅 𝑅) = 𝑅)
6561, 64eqtr2d 2798 . . . 4 ((((𝐾 ∈ HL ∧ 𝑊𝐻) ∧ ((𝑃𝐴 ∧ ¬ 𝑃 𝑊) ∧ (𝑄𝐴𝑃𝑄) ∧ (𝑅𝐴 ∧ ¬ 𝑅 𝑊))) ∧ 𝐹 = 𝑅) → 𝑅 = (𝑅 𝐹))
6665ex 416 . . 3 (((𝐾 ∈ HL ∧ 𝑊𝐻) ∧ ((𝑃𝐴 ∧ ¬ 𝑃 𝑊) ∧ (𝑄𝐴𝑃𝑄) ∧ (𝑅𝐴 ∧ ¬ 𝑅 𝑊))) → (𝐹 = 𝑅𝑅 = (𝑅 𝐹)))
6766necon3d 2978 . 2 (((𝐾 ∈ HL ∧ 𝑊𝐻) ∧ ((𝑃𝐴 ∧ ¬ 𝑃 𝑊) ∧ (𝑄𝐴𝑃𝑄) ∧ (𝑅𝐴 ∧ ¬ 𝑅 𝑊))) → (𝑅 ≠ (𝑅 𝐹) → 𝐹𝑅))
6859, 67mpd 15 1 (((𝐾 ∈ HL ∧ 𝑊𝐻) ∧ ((𝑃𝐴 ∧ ¬ 𝑃 𝑊) ∧ (𝑄𝐴𝑃𝑄) ∧ (𝑅𝐴 ∧ ¬ 𝑅 𝑊))) → 𝐹𝑅)
Colors of variables: wff setvar class
Syntax hints:  ¬ wn 3  wi 4  wb 208  wa 399  w3a 1098   = wceq 1560  wcel 2142  wne 2957   class class class wbr 5100  cfv 6521  (class class class)co 7396  Basecbs 17245  lecple 17293  joincjn 18343  meetcmee 18344  Latclat 18463  ccvr 39886  Atomscatm 39887  HLchlt 39974  LHypclh 40608
This theorem was proved from axioms:  ax-mp 5  ax-1 6  ax-2 7  ax-3 8  ax-gen 1815  ax-4 1829  ax-5 1930  ax-6 1987  ax-7 2028  ax-8 2144  ax-9 2152  ax-10 2175  ax-11 2191  ax-12 2212  ax-ext 2734  ax-rep 5227  ax-sep 5246  ax-nul 5256  ax-pow 5322  ax-pr 5390  ax-un 7718
This theorem depends on definitions:  df-bi 209  df-an 400  df-or 859  df-3an 1100  df-tru 1563  df-fal 1573  df-ex 1800  df-nf 1804  df-sb 2091  df-mo 2566  df-eu 2596  df-clab 2741  df-cleq 2754  df-clel 2837  df-nfc 2911  df-ne 2958  df-ral 3077  df-rex 3087  df-rmo 3367  df-reu 3368  df-rab 3415  df-v 3456  df-sbc 3745  df-csb 3853  df-dif 3907  df-un 3909  df-in 3911  df-ss 3921  df-nul 4286  df-if 4481  df-pw 4557  df-sn 4583  df-pr 4585  df-op 4589  df-uni 4866  df-iun 4951  df-iin 4952  df-br 5101  df-opab 5163  df-mpt 5182  df-id 5542  df-xp 5653  df-rel 5654  df-cnv 5655  df-co 5656  df-dm 5657  df-rn 5658  df-res 5659  df-ima 5660  df-iota 6477  df-fun 6523  df-fn 6524  df-f 6525  df-f1 6526  df-fo 6527  df-f1o 6528  df-fv 6529  df-riota 7353  df-ov 7399  df-oprab 7400  df-mpo 7401  df-1st 7970  df-2nd 7971  df-proset 18326  df-poset 18345  df-plt 18360  df-lub 18376  df-glb 18377  df-join 18378  df-meet 18379  df-p0 18455  df-p1 18456  df-lat 18464  df-clat 18531  df-oposet 39800  df-ol 39802  df-oml 39803  df-covers 39890  df-ats 39891  df-atl 39922  df-cvlat 39946  df-hlat 39975  df-psubsp 40127  df-pmap 40128  df-padd 40420  df-lhyp 40612
This theorem is referenced by:  cdleme36m  41085
  Copyright terms: Public domain W3C validator