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 40228
Description: Part of proof of Lemma E in [Crawley] p. 113. Lemma leading to cdleme3fa 40235 and cdleme3 40236. (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 2729 . . . . 5 (Base‘𝐾) = (Base‘𝐾)
4 cdleme1.a . . . . 5 𝐴 = (Atoms‘𝐾)
53, 4atbase 39287 . . . 4 (𝑅𝐴𝑅 ∈ (Base‘𝐾))
62, 5syl 17 . . 3 (((𝐾 ∈ HL ∧ 𝑊𝐻) ∧ ((𝑃𝐴 ∧ ¬ 𝑃 𝑊) ∧ (𝑄𝐴𝑃𝑄) ∧ (𝑅𝐴 ∧ ¬ 𝑅 𝑊))) → 𝑅 ∈ (Base‘𝐾))
7 hllat 39361 . . . . 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 40044 . . . . . . . . 9 (((𝐾 ∈ HL ∧ 𝑊𝐻) ∧ (𝑃𝐴 ∧ ¬ 𝑃 𝑊) ∧ (𝑄𝐴𝑃𝑄)) → 𝑈𝐴)
16153adant3r3 1185 . . . . . . . 8 (((𝐾 ∈ HL ∧ 𝑊𝐻) ∧ ((𝑃𝐴 ∧ ¬ 𝑃 𝑊) ∧ (𝑄𝐴𝑃𝑄) ∧ (𝑅𝐴 ∧ ¬ 𝑅 𝑊))) → 𝑈𝐴)
173, 4atbase 39287 . . . . . . . 8 (𝑈𝐴𝑈 ∈ (Base‘𝐾))
1816, 17syl 17 . . . . . . 7 (((𝐾 ∈ HL ∧ 𝑊𝐻) ∧ ((𝑃𝐴 ∧ ¬ 𝑃 𝑊) ∧ (𝑄𝐴𝑃𝑄) ∧ (𝑅𝐴 ∧ ¬ 𝑅 𝑊))) → 𝑈 ∈ (Base‘𝐾))
193, 11latjcl 18364 . . . . . . 7 ((𝐾 ∈ Lat ∧ 𝑅 ∈ (Base‘𝐾) ∧ 𝑈 ∈ (Base‘𝐾)) → (𝑅 𝑈) ∈ (Base‘𝐾))
208, 6, 18, 19syl3anc 1373 . . . . . 6 (((𝐾 ∈ HL ∧ 𝑊𝐻) ∧ ((𝑃𝐴 ∧ ¬ 𝑃 𝑊) ∧ (𝑄𝐴𝑃𝑄) ∧ (𝑅𝐴 ∧ ¬ 𝑅 𝑊))) → (𝑅 𝑈) ∈ (Base‘𝐾))
21 simpr2l 1233 . . . . . . . 8 (((𝐾 ∈ HL ∧ 𝑊𝐻) ∧ ((𝑃𝐴 ∧ ¬ 𝑃 𝑊) ∧ (𝑄𝐴𝑃𝑄) ∧ (𝑅𝐴 ∧ ¬ 𝑅 𝑊))) → 𝑄𝐴)
223, 4atbase 39287 . . . . . . . 8 (𝑄𝐴𝑄 ∈ (Base‘𝐾))
2321, 22syl 17 . . . . . . 7 (((𝐾 ∈ HL ∧ 𝑊𝐻) ∧ ((𝑃𝐴 ∧ ¬ 𝑃 𝑊) ∧ (𝑄𝐴𝑃𝑄) ∧ (𝑅𝐴 ∧ ¬ 𝑅 𝑊))) → 𝑄 ∈ (Base‘𝐾))
24 simpr1l 1231 . . . . . . . . . 10 (((𝐾 ∈ HL ∧ 𝑊𝐻) ∧ ((𝑃𝐴 ∧ ¬ 𝑃 𝑊) ∧ (𝑄𝐴𝑃𝑄) ∧ (𝑅𝐴 ∧ ¬ 𝑅 𝑊))) → 𝑃𝐴)
253, 4atbase 39287 . . . . . . . . . 10 (𝑃𝐴𝑃 ∈ (Base‘𝐾))
2624, 25syl 17 . . . . . . . . 9 (((𝐾 ∈ HL ∧ 𝑊𝐻) ∧ ((𝑃𝐴 ∧ ¬ 𝑃 𝑊) ∧ (𝑄𝐴𝑃𝑄) ∧ (𝑅𝐴 ∧ ¬ 𝑅 𝑊))) → 𝑃 ∈ (Base‘𝐾))
273, 11latjcl 18364 . . . . . . . . 9 ((𝐾 ∈ Lat ∧ 𝑃 ∈ (Base‘𝐾) ∧ 𝑅 ∈ (Base‘𝐾)) → (𝑃 𝑅) ∈ (Base‘𝐾))
288, 26, 6, 27syl3anc 1373 . . . . . . . 8 (((𝐾 ∈ HL ∧ 𝑊𝐻) ∧ ((𝑃𝐴 ∧ ¬ 𝑃 𝑊) ∧ (𝑄𝐴𝑃𝑄) ∧ (𝑅𝐴 ∧ ¬ 𝑅 𝑊))) → (𝑃 𝑅) ∈ (Base‘𝐾))
293, 13lhpbase 39997 . . . . . . . . 9 (𝑊𝐻𝑊 ∈ (Base‘𝐾))
3029ad2antlr 727 . . . . . . . 8 (((𝐾 ∈ HL ∧ 𝑊𝐻) ∧ ((𝑃𝐴 ∧ ¬ 𝑃 𝑊) ∧ (𝑄𝐴𝑃𝑄) ∧ (𝑅𝐴 ∧ ¬ 𝑅 𝑊))) → 𝑊 ∈ (Base‘𝐾))
313, 12latmcl 18365 . . . . . . . 8 ((𝐾 ∈ Lat ∧ (𝑃 𝑅) ∈ (Base‘𝐾) ∧ 𝑊 ∈ (Base‘𝐾)) → ((𝑃 𝑅) 𝑊) ∈ (Base‘𝐾))
328, 28, 30, 31syl3anc 1373 . . . . . . 7 (((𝐾 ∈ HL ∧ 𝑊𝐻) ∧ ((𝑃𝐴 ∧ ¬ 𝑃 𝑊) ∧ (𝑄𝐴𝑃𝑄) ∧ (𝑅𝐴 ∧ ¬ 𝑅 𝑊))) → ((𝑃 𝑅) 𝑊) ∈ (Base‘𝐾))
333, 11latjcl 18364 . . . . . . 7 ((𝐾 ∈ Lat ∧ 𝑄 ∈ (Base‘𝐾) ∧ ((𝑃 𝑅) 𝑊) ∈ (Base‘𝐾)) → (𝑄 ((𝑃 𝑅) 𝑊)) ∈ (Base‘𝐾))
348, 23, 32, 33syl3anc 1373 . . . . . 6 (((𝐾 ∈ HL ∧ 𝑊𝐻) ∧ ((𝑃𝐴 ∧ ¬ 𝑃 𝑊) ∧ (𝑄𝐴𝑃𝑄) ∧ (𝑅𝐴 ∧ ¬ 𝑅 𝑊))) → (𝑄 ((𝑃 𝑅) 𝑊)) ∈ (Base‘𝐾))
353, 12latmcl 18365 . . . . . 6 ((𝐾 ∈ Lat ∧ (𝑅 𝑈) ∈ (Base‘𝐾) ∧ (𝑄 ((𝑃 𝑅) 𝑊)) ∈ (Base‘𝐾)) → ((𝑅 𝑈) (𝑄 ((𝑃 𝑅) 𝑊))) ∈ (Base‘𝐾))
368, 20, 34, 35syl3anc 1373 . . . . 5 (((𝐾 ∈ HL ∧ 𝑊𝐻) ∧ ((𝑃𝐴 ∧ ¬ 𝑃 𝑊) ∧ (𝑄𝐴𝑃𝑄) ∧ (𝑅𝐴 ∧ ¬ 𝑅 𝑊))) → ((𝑅 𝑈) (𝑄 ((𝑃 𝑅) 𝑊))) ∈ (Base‘𝐾))
379, 36eqeltrid 2832 . . . 4 (((𝐾 ∈ HL ∧ 𝑊𝐻) ∧ ((𝑃𝐴 ∧ ¬ 𝑃 𝑊) ∧ (𝑄𝐴𝑃𝑄) ∧ (𝑅𝐴 ∧ ¬ 𝑅 𝑊))) → 𝐹 ∈ (Base‘𝐾))
383, 11latjcl 18364 . . . 4 ((𝐾 ∈ Lat ∧ 𝑅 ∈ (Base‘𝐾) ∧ 𝐹 ∈ (Base‘𝐾)) → (𝑅 𝐹) ∈ (Base‘𝐾))
398, 6, 37, 38syl3anc 1373 . . 3 (((𝐾 ∈ HL ∧ 𝑊𝐻) ∧ ((𝑃𝐴 ∧ ¬ 𝑃 𝑊) ∧ (𝑄𝐴𝑃𝑄) ∧ (𝑅𝐴 ∧ ¬ 𝑅 𝑊))) → (𝑅 𝐹) ∈ (Base‘𝐾))
403, 11latjcl 18364 . . . . . . . . . 10 ((𝐾 ∈ Lat ∧ 𝑃 ∈ (Base‘𝐾) ∧ 𝑄 ∈ (Base‘𝐾)) → (𝑃 𝑄) ∈ (Base‘𝐾))
418, 26, 23, 40syl3anc 1373 . . . . . . . . 9 (((𝐾 ∈ HL ∧ 𝑊𝐻) ∧ ((𝑃𝐴 ∧ ¬ 𝑃 𝑊) ∧ (𝑄𝐴𝑃𝑄) ∧ (𝑅𝐴 ∧ ¬ 𝑅 𝑊))) → (𝑃 𝑄) ∈ (Base‘𝐾))
423, 10, 12latmle2 18390 . . . . . . . . 9 ((𝐾 ∈ Lat ∧ (𝑃 𝑄) ∈ (Base‘𝐾) ∧ 𝑊 ∈ (Base‘𝐾)) → ((𝑃 𝑄) 𝑊) 𝑊)
438, 41, 30, 42syl3anc 1373 . . . . . . . 8 (((𝐾 ∈ HL ∧ 𝑊𝐻) ∧ ((𝑃𝐴 ∧ ¬ 𝑃 𝑊) ∧ (𝑄𝐴𝑃𝑄) ∧ (𝑅𝐴 ∧ ¬ 𝑅 𝑊))) → ((𝑃 𝑄) 𝑊) 𝑊)
4414, 43eqbrtrid 5130 . . . . . . 7 (((𝐾 ∈ HL ∧ 𝑊𝐻) ∧ ((𝑃𝐴 ∧ ¬ 𝑃 𝑊) ∧ (𝑄𝐴𝑃𝑄) ∧ (𝑅𝐴 ∧ ¬ 𝑅 𝑊))) → 𝑈 𝑊)
45 simpr3r 1236 . . . . . . 7 (((𝐾 ∈ HL ∧ 𝑊𝐻) ∧ ((𝑃𝐴 ∧ ¬ 𝑃 𝑊) ∧ (𝑄𝐴𝑃𝑄) ∧ (𝑅𝐴 ∧ ¬ 𝑅 𝑊))) → ¬ 𝑅 𝑊)
46 nbrne2 5115 . . . . . . 7 ((𝑈 𝑊 ∧ ¬ 𝑅 𝑊) → 𝑈𝑅)
4744, 45, 46syl2anc 584 . . . . . 6 (((𝐾 ∈ HL ∧ 𝑊𝐻) ∧ ((𝑃𝐴 ∧ ¬ 𝑃 𝑊) ∧ (𝑄𝐴𝑃𝑄) ∧ (𝑅𝐴 ∧ ¬ 𝑅 𝑊))) → 𝑈𝑅)
4847necomd 2980 . . . . 5 (((𝐾 ∈ HL ∧ 𝑊𝐻) ∧ ((𝑃𝐴 ∧ ¬ 𝑃 𝑊) ∧ (𝑄𝐴𝑃𝑄) ∧ (𝑅𝐴 ∧ ¬ 𝑅 𝑊))) → 𝑅𝑈)
49 eqid 2729 . . . . . . 7 ( ⋖ ‘𝐾) = ( ⋖ ‘𝐾)
5011, 49, 4atcvr1 39416 . . . . . 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 40226 . . . . 5 (((𝐾 ∈ HL ∧ 𝑊𝐻) ∧ (𝑃𝐴𝑄𝐴 ∧ (𝑅𝐴 ∧ ¬ 𝑅 𝑊))) → (𝑅 𝐹) = (𝑅 𝑈))
5654, 55syldan 591 . . . 4 (((𝐾 ∈ HL ∧ 𝑊𝐻) ∧ ((𝑃𝐴 ∧ ¬ 𝑃 𝑊) ∧ (𝑄𝐴𝑃𝑄) ∧ (𝑅𝐴 ∧ ¬ 𝑅 𝑊))) → (𝑅 𝐹) = (𝑅 𝑈))
5752, 56breqtrrd 5123 . . 3 (((𝐾 ∈ HL ∧ 𝑊𝐻) ∧ ((𝑃𝐴 ∧ ¬ 𝑃 𝑊) ∧ (𝑄𝐴𝑃𝑄) ∧ (𝑅𝐴 ∧ ¬ 𝑅 𝑊))) → 𝑅( ⋖ ‘𝐾)(𝑅 𝐹))
583, 49cvrne 39279 . . 3 (((𝐾 ∈ HL ∧ 𝑅 ∈ (Base‘𝐾) ∧ (𝑅 𝐹) ∈ (Base‘𝐾)) ∧ 𝑅( ⋖ ‘𝐾)(𝑅 𝐹)) → 𝑅 ≠ (𝑅 𝐹))
591, 6, 39, 57, 58syl31anc 1375 . 2 (((𝐾 ∈ HL ∧ 𝑊𝐻) ∧ ((𝑃𝐴 ∧ ¬ 𝑃 𝑊) ∧ (𝑄𝐴𝑃𝑄) ∧ (𝑅𝐴 ∧ ¬ 𝑅 𝑊))) → 𝑅 ≠ (𝑅 𝐹))
60 oveq2 7361 . . . . . 6 (𝐹 = 𝑅 → (𝑅 𝐹) = (𝑅 𝑅))
6160adantl 481 . . . . 5 ((((𝐾 ∈ HL ∧ 𝑊𝐻) ∧ ((𝑃𝐴 ∧ ¬ 𝑃 𝑊) ∧ (𝑄𝐴𝑃𝑄) ∧ (𝑅𝐴 ∧ ¬ 𝑅 𝑊))) ∧ 𝐹 = 𝑅) → (𝑅 𝐹) = (𝑅 𝑅))
6211, 4hlatjidm 39367 . . . . . . 7 ((𝐾 ∈ HL ∧ 𝑅𝐴) → (𝑅 𝑅) = 𝑅)
631, 2, 62syl2anc 584 . . . . . 6 (((𝐾 ∈ HL ∧ 𝑊𝐻) ∧ ((𝑃𝐴 ∧ ¬ 𝑃 𝑊) ∧ (𝑄𝐴𝑃𝑄) ∧ (𝑅𝐴 ∧ ¬ 𝑅 𝑊))) → (𝑅 𝑅) = 𝑅)
6463adantr 480 . . . . 5 ((((𝐾 ∈ HL ∧ 𝑊𝐻) ∧ ((𝑃𝐴 ∧ ¬ 𝑃 𝑊) ∧ (𝑄𝐴𝑃𝑄) ∧ (𝑅𝐴 ∧ ¬ 𝑅 𝑊))) ∧ 𝐹 = 𝑅) → (𝑅 𝑅) = 𝑅)
6561, 64eqtr2d 2765 . . . 4 ((((𝐾 ∈ HL ∧ 𝑊𝐻) ∧ ((𝑃𝐴 ∧ ¬ 𝑃 𝑊) ∧ (𝑄𝐴𝑃𝑄) ∧ (𝑅𝐴 ∧ ¬ 𝑅 𝑊))) ∧ 𝐹 = 𝑅) → 𝑅 = (𝑅 𝐹))
6665ex 412 . . 3 (((𝐾 ∈ HL ∧ 𝑊𝐻) ∧ ((𝑃𝐴 ∧ ¬ 𝑃 𝑊) ∧ (𝑄𝐴𝑃𝑄) ∧ (𝑅𝐴 ∧ ¬ 𝑅 𝑊))) → (𝐹 = 𝑅𝑅 = (𝑅 𝐹)))
6766necon3d 2946 . 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 2109  wne 2925   class class class wbr 5095  cfv 6486  (class class class)co 7353  Basecbs 17139  lecple 17187  joincjn 18236  meetcmee 18237  Latclat 18356  ccvr 39260  Atomscatm 39261  HLchlt 39348  LHypclh 39983
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 2701  ax-rep 5221  ax-sep 5238  ax-nul 5248  ax-pow 5307  ax-pr 5374  ax-un 7675
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 2066  df-mo 2533  df-eu 2562  df-clab 2708  df-cleq 2721  df-clel 2803  df-nfc 2878  df-ne 2926  df-ral 3045  df-rex 3054  df-rmo 3345  df-reu 3346  df-rab 3397  df-v 3440  df-sbc 3745  df-csb 3854  df-dif 3908  df-un 3910  df-in 3912  df-ss 3922  df-nul 4287  df-if 4479  df-pw 4555  df-sn 4580  df-pr 4582  df-op 4586  df-uni 4862  df-iun 4946  df-iin 4947  df-br 5096  df-opab 5158  df-mpt 5177  df-id 5518  df-xp 5629  df-rel 5630  df-cnv 5631  df-co 5632  df-dm 5633  df-rn 5634  df-res 5635  df-ima 5636  df-iota 6442  df-fun 6488  df-fn 6489  df-f 6490  df-f1 6491  df-fo 6492  df-f1o 6493  df-fv 6494  df-riota 7310  df-ov 7356  df-oprab 7357  df-mpo 7358  df-1st 7931  df-2nd 7932  df-proset 18219  df-poset 18238  df-plt 18253  df-lub 18269  df-glb 18270  df-join 18271  df-meet 18272  df-p0 18348  df-p1 18349  df-lat 18357  df-clat 18424  df-oposet 39174  df-ol 39176  df-oml 39177  df-covers 39264  df-ats 39265  df-atl 39296  df-cvlat 39320  df-hlat 39349  df-psubsp 39502  df-pmap 39503  df-padd 39795  df-lhyp 39987
This theorem is referenced by:  cdleme36m  40460
  Copyright terms: Public domain W3C validator