Users' Mathboxes Mathbox for Alan Sare < Previous   Next >
Nearby theorems
Mirrors  >  Home  >  MPE Home  >  Th. List  >   Mathboxes  >  sineq0ALT Structured version   Unicode version

Theorem sineq0ALT 32835
Description: A complex number whose sine is zero is an integer multiple of  pi. The Virtual Deduction form of the proof is http://us.metamath.org/other/completeusersproof/sineq0altvd.html. The Metamath form of the proof is sineq0ALT 32835. The Virtual Deduction proof is based on Mario Carneiro's revision of Norm Megill's proof of sineq0 22675. The Virtual Deduction proof is verified by automatically transforming it into the Metamath form of the proof using completeusersproof, which is verified by the Metamath program. The proof of http://us.metamath.org/other/completeusersproof/sineq0altro.html is a form of the completed proof which preserves the Virtual Deduction proof's step numbers and their ordering. (Contributed by Alan Sare, 13-Jun-2018.) (Proof modification is discouraged.) (New usage is discouraged.)
Assertion
Ref Expression
sineq0ALT  |-  ( A  e.  CC  ->  (
( sin `  A
)  =  0  <->  ( A  /  pi )  e.  ZZ ) )

Proof of Theorem sineq0ALT
StepHypRef Expression
1 pire 22613 . . . . 5  |-  pi  e.  RR
2 pipos 22615 . . . . 5  |-  0  <  pi
31, 2elrpii 11223 . . . 4  |-  pi  e.  RR+
4 2ne0 10628 . . . . . 6  |-  2  =/=  0
54a1i 11 . . . . 5  |-  ( ( A  e.  CC  /\  ( sin `  A )  =  0 )  -> 
2  =/=  0 )
6 2cn 10606 . . . . . . 7  |-  2  e.  CC
7 2re 10605 . . . . . . . 8  |-  2  e.  RR
87a1i 11 . . . . . . 7  |-  ( 2  e.  CC  ->  2  e.  RR )
96, 8ax-mp 5 . . . . . 6  |-  2  e.  RR
109a1i 11 . . . . 5  |-  ( ( A  e.  CC  /\  ( sin `  A )  =  0 )  -> 
2  e.  RR )
11 id 22 . . . . . 6  |-  ( A  e.  CC  ->  A  e.  CC )
1211adantr 465 . . . . 5  |-  ( ( A  e.  CC  /\  ( sin `  A )  =  0 )  ->  A  e.  CC )
136a1i 11 . . . . . . 7  |-  ( A  e.  CC  ->  2  e.  CC )
1413, 11mulcld 9616 . . . . . 6  |-  ( A  e.  CC  ->  (
2  x.  A )  e.  CC )
15 axicn 9527 . . . . . . . . . . . . . . 15  |-  _i  e.  CC
1615a1i 11 . . . . . . . . . . . . . 14  |-  ( A  e.  CC  ->  _i  e.  CC )
1713, 16, 11mul12d 9788 . . . . . . . . . . . . 13  |-  ( A  e.  CC  ->  (
2  x.  ( _i  x.  A ) )  =  ( _i  x.  ( 2  x.  A
) ) )
1816, 11mulcld 9616 . . . . . . . . . . . . . 14  |-  ( A  e.  CC  ->  (
_i  x.  A )  e.  CC )
19182timesd 10781 . . . . . . . . . . . . 13  |-  ( A  e.  CC  ->  (
2  x.  ( _i  x.  A ) )  =  ( ( _i  x.  A )  +  ( _i  x.  A
) ) )
2017, 19eqtr3d 2510 . . . . . . . . . . . 12  |-  ( A  e.  CC  ->  (
_i  x.  ( 2  x.  A ) )  =  ( ( _i  x.  A )  +  ( _i  x.  A
) ) )
2120fveq2d 5870 . . . . . . . . . . 11  |-  ( A  e.  CC  ->  ( exp `  ( _i  x.  ( 2  x.  A
) ) )  =  ( exp `  (
( _i  x.  A
)  +  ( _i  x.  A ) ) ) )
22 efadd 13691 . . . . . . . . . . . 12  |-  ( ( ( _i  x.  A
)  e.  CC  /\  ( _i  x.  A
)  e.  CC )  ->  ( exp `  (
( _i  x.  A
)  +  ( _i  x.  A ) ) )  =  ( ( exp `  ( _i  x.  A ) )  x.  ( exp `  (
_i  x.  A )
) ) )
2318, 18, 22syl2anc 661 . . . . . . . . . . 11  |-  ( A  e.  CC  ->  ( exp `  ( ( _i  x.  A )  +  ( _i  x.  A
) ) )  =  ( ( exp `  (
_i  x.  A )
)  x.  ( exp `  ( _i  x.  A
) ) ) )
2421, 23eqtrd 2508 . . . . . . . . . 10  |-  ( A  e.  CC  ->  ( exp `  ( _i  x.  ( 2  x.  A
) ) )  =  ( ( exp `  (
_i  x.  A )
)  x.  ( exp `  ( _i  x.  A
) ) ) )
2524adantr 465 . . . . . . . . 9  |-  ( ( A  e.  CC  /\  ( sin `  A )  =  0 )  -> 
( exp `  (
_i  x.  ( 2  x.  A ) ) )  =  ( ( exp `  ( _i  x.  A ) )  x.  ( exp `  (
_i  x.  A )
) ) )
26 sinval 13718 . . . . . . . . . . . . . . 15  |-  ( A  e.  CC  ->  ( sin `  A )  =  ( ( ( exp `  ( _i  x.  A
) )  -  ( exp `  ( -u _i  x.  A ) ) )  /  ( 2  x.  _i ) ) )
27 id 22 . . . . . . . . . . . . . . 15  |-  ( ( sin `  A )  =  0  ->  ( sin `  A )  =  0 )
2826, 27sylan9req 2529 . . . . . . . . . . . . . 14  |-  ( ( A  e.  CC  /\  ( sin `  A )  =  0 )  -> 
( ( ( exp `  ( _i  x.  A
) )  -  ( exp `  ( -u _i  x.  A ) ) )  /  ( 2  x.  _i ) )  =  0 )
29 efcl 13680 . . . . . . . . . . . . . . . . . 18  |-  ( ( _i  x.  A )  e.  CC  ->  ( exp `  ( _i  x.  A ) )  e.  CC )
3018, 29syl 16 . . . . . . . . . . . . . . . . 17  |-  ( A  e.  CC  ->  ( exp `  ( _i  x.  A ) )  e.  CC )
31 negicn 9821 . . . . . . . . . . . . . . . . . . . 20  |-  -u _i  e.  CC
3231a1i 11 . . . . . . . . . . . . . . . . . . 19  |-  ( A  e.  CC  ->  -u _i  e.  CC )
3332, 11mulcld 9616 . . . . . . . . . . . . . . . . . 18  |-  ( A  e.  CC  ->  ( -u _i  x.  A )  e.  CC )
34 efcl 13680 . . . . . . . . . . . . . . . . . 18  |-  ( (
-u _i  x.  A
)  e.  CC  ->  ( exp `  ( -u _i  x.  A ) )  e.  CC )
3533, 34syl 16 . . . . . . . . . . . . . . . . 17  |-  ( A  e.  CC  ->  ( exp `  ( -u _i  x.  A ) )  e.  CC )
3630, 35subcld 9930 . . . . . . . . . . . . . . . 16  |-  ( A  e.  CC  ->  (
( exp `  (
_i  x.  A )
)  -  ( exp `  ( -u _i  x.  A ) ) )  e.  CC )
37 2mulicn 10762 . . . . . . . . . . . . . . . . 17  |-  ( 2  x.  _i )  e.  CC
3837a1i 11 . . . . . . . . . . . . . . . 16  |-  ( A  e.  CC  ->  (
2  x.  _i )  e.  CC )
39 2muline0 10763 . . . . . . . . . . . . . . . . 17  |-  ( 2  x.  _i )  =/=  0
4039a1i 11 . . . . . . . . . . . . . . . 16  |-  ( A  e.  CC  ->  (
2  x.  _i )  =/=  0 )
4136, 38, 40diveq0ad 10330 . . . . . . . . . . . . . . 15  |-  ( A  e.  CC  ->  (
( ( ( exp `  ( _i  x.  A
) )  -  ( exp `  ( -u _i  x.  A ) ) )  /  ( 2  x.  _i ) )  =  0  <->  ( ( exp `  ( _i  x.  A
) )  -  ( exp `  ( -u _i  x.  A ) ) )  =  0 ) )
4241adantr 465 . . . . . . . . . . . . . 14  |-  ( ( A  e.  CC  /\  ( sin `  A )  =  0 )  -> 
( ( ( ( exp `  ( _i  x.  A ) )  -  ( exp `  ( -u _i  x.  A ) ) )  /  (
2  x.  _i ) )  =  0  <->  (
( exp `  (
_i  x.  A )
)  -  ( exp `  ( -u _i  x.  A ) ) )  =  0 ) )
4328, 42mpbid 210 . . . . . . . . . . . . 13  |-  ( ( A  e.  CC  /\  ( sin `  A )  =  0 )  -> 
( ( exp `  (
_i  x.  A )
)  -  ( exp `  ( -u _i  x.  A ) ) )  =  0 )
4430, 35subeq0ad 9940 . . . . . . . . . . . . . 14  |-  ( A  e.  CC  ->  (
( ( exp `  (
_i  x.  A )
)  -  ( exp `  ( -u _i  x.  A ) ) )  =  0  <->  ( exp `  ( _i  x.  A
) )  =  ( exp `  ( -u _i  x.  A ) ) ) )
4544adantr 465 . . . . . . . . . . . . 13  |-  ( ( A  e.  CC  /\  ( sin `  A )  =  0 )  -> 
( ( ( exp `  ( _i  x.  A
) )  -  ( exp `  ( -u _i  x.  A ) ) )  =  0  <->  ( exp `  ( _i  x.  A
) )  =  ( exp `  ( -u _i  x.  A ) ) ) )
4643, 45mpbid 210 . . . . . . . . . . . 12  |-  ( ( A  e.  CC  /\  ( sin `  A )  =  0 )  -> 
( exp `  (
_i  x.  A )
)  =  ( exp `  ( -u _i  x.  A ) ) )
4746oveq2d 6300 . . . . . . . . . . 11  |-  ( ( A  e.  CC  /\  ( sin `  A )  =  0 )  -> 
( ( exp `  (
_i  x.  A )
)  x.  ( exp `  ( _i  x.  A
) ) )  =  ( ( exp `  (
_i  x.  A )
)  x.  ( exp `  ( -u _i  x.  A ) ) ) )
48 efadd 13691 . . . . . . . . . . . . 13  |-  ( ( ( _i  x.  A
)  e.  CC  /\  ( -u _i  x.  A
)  e.  CC )  ->  ( exp `  (
( _i  x.  A
)  +  ( -u _i  x.  A ) ) )  =  ( ( exp `  ( _i  x.  A ) )  x.  ( exp `  ( -u _i  x.  A ) ) ) )
4918, 33, 48syl2anc 661 . . . . . . . . . . . 12  |-  ( A  e.  CC  ->  ( exp `  ( ( _i  x.  A )  +  ( -u _i  x.  A ) ) )  =  ( ( exp `  ( _i  x.  A
) )  x.  ( exp `  ( -u _i  x.  A ) ) ) )
5049adantr 465 . . . . . . . . . . 11  |-  ( ( A  e.  CC  /\  ( sin `  A )  =  0 )  -> 
( exp `  (
( _i  x.  A
)  +  ( -u _i  x.  A ) ) )  =  ( ( exp `  ( _i  x.  A ) )  x.  ( exp `  ( -u _i  x.  A ) ) ) )
5147, 50eqtr4d 2511 . . . . . . . . . 10  |-  ( ( A  e.  CC  /\  ( sin `  A )  =  0 )  -> 
( ( exp `  (
_i  x.  A )
)  x.  ( exp `  ( _i  x.  A
) ) )  =  ( exp `  (
( _i  x.  A
)  +  ( -u _i  x.  A ) ) ) )
5215negidi 9888 . . . . . . . . . . . . . . 15  |-  ( _i  +  -u _i )  =  0
5352oveq1i 6294 . . . . . . . . . . . . . 14  |-  ( ( _i  +  -u _i )  x.  A )  =  ( 0  x.  A )
5416, 32, 11adddird 9621 . . . . . . . . . . . . . 14  |-  ( A  e.  CC  ->  (
( _i  +  -u _i )  x.  A
)  =  ( ( _i  x.  A )  +  ( -u _i  x.  A ) ) )
5553, 54syl5reqr 2523 . . . . . . . . . . . . 13  |-  ( A  e.  CC  ->  (
( _i  x.  A
)  +  ( -u _i  x.  A ) )  =  ( 0  x.  A ) )
5611mul02d 9777 . . . . . . . . . . . . 13  |-  ( A  e.  CC  ->  (
0  x.  A )  =  0 )
5755, 56eqtrd 2508 . . . . . . . . . . . 12  |-  ( A  e.  CC  ->  (
( _i  x.  A
)  +  ( -u _i  x.  A ) )  =  0 )
5857fveq2d 5870 . . . . . . . . . . 11  |-  ( A  e.  CC  ->  ( exp `  ( ( _i  x.  A )  +  ( -u _i  x.  A ) ) )  =  ( exp `  0
) )
5958adantr 465 . . . . . . . . . 10  |-  ( ( A  e.  CC  /\  ( sin `  A )  =  0 )  -> 
( exp `  (
( _i  x.  A
)  +  ( -u _i  x.  A ) ) )  =  ( exp `  0 ) )
60 ef0 13688 . . . . . . . . . . 11  |-  ( exp `  0 )  =  1
6160a1i 11 . . . . . . . . . 10  |-  ( ( A  e.  CC  /\  ( sin `  A )  =  0 )  -> 
( exp `  0
)  =  1 )
6251, 59, 613eqtrd 2512 . . . . . . . . 9  |-  ( ( A  e.  CC  /\  ( sin `  A )  =  0 )  -> 
( ( exp `  (
_i  x.  A )
)  x.  ( exp `  ( _i  x.  A
) ) )  =  1 )
6325, 62eqtrd 2508 . . . . . . . 8  |-  ( ( A  e.  CC  /\  ( sin `  A )  =  0 )  -> 
( exp `  (
_i  x.  ( 2  x.  A ) ) )  =  1 )
6463fveq2d 5870 . . . . . . 7  |-  ( ( A  e.  CC  /\  ( sin `  A )  =  0 )  -> 
( abs `  ( exp `  ( _i  x.  ( 2  x.  A
) ) ) )  =  ( abs `  1
) )
65 abs1 13093 . . . . . . 7  |-  ( abs `  1 )  =  1
6664, 65syl6eq 2524 . . . . . 6  |-  ( ( A  e.  CC  /\  ( sin `  A )  =  0 )  -> 
( abs `  ( exp `  ( _i  x.  ( 2  x.  A
) ) ) )  =  1 )
67 absefib 13794 . . . . . . . 8  |-  ( ( 2  x.  A )  e.  CC  ->  (
( 2  x.  A
)  e.  RR  <->  ( abs `  ( exp `  (
_i  x.  ( 2  x.  A ) ) ) )  =  1 ) )
6867biimparc 487 . . . . . . 7  |-  ( ( ( abs `  ( exp `  ( _i  x.  ( 2  x.  A
) ) ) )  =  1  /\  (
2  x.  A )  e.  CC )  -> 
( 2  x.  A
)  e.  RR )
6968ancoms 453 . . . . . 6  |-  ( ( ( 2  x.  A
)  e.  CC  /\  ( abs `  ( exp `  ( _i  x.  (
2  x.  A ) ) ) )  =  1 )  ->  (
2  x.  A )  e.  RR )
7014, 66, 69eel121 32603 . . . . 5  |-  ( ( A  e.  CC  /\  ( sin `  A )  =  0 )  -> 
( 2  x.  A
)  e.  RR )
71 mulre 12917 . . . . . . 7  |-  ( ( A  e.  CC  /\  2  e.  RR  /\  2  =/=  0 )  ->  ( A  e.  RR  <->  ( 2  x.  A )  e.  RR ) )
72714animp1 32363 . . . . . 6  |-  ( ( ( ( A  e.  CC  /\  2  e.  RR )  /\  2  =/=  0 )  /\  (
2  x.  A )  e.  RR )  ->  A  e.  RR )
73724an31 32364 . . . . 5  |-  ( ( ( ( 2  =/=  0  /\  2  e.  RR )  /\  A  e.  CC )  /\  (
2  x.  A )  e.  RR )  ->  A  e.  RR )
745, 10, 12, 70, 73eel1111 32615 . . . 4  |-  ( ( A  e.  CC  /\  ( sin `  A )  =  0 )  ->  A  e.  RR )
753a1i 11 . . . . . . . . . . . . . . 15  |-  ( ( A  e.  CC  /\  ( sin `  A )  =  0 )  ->  pi  e.  RR+ )
7674, 75modcld 11970 . . . . . . . . . . . . . 14  |-  ( ( A  e.  CC  /\  ( sin `  A )  =  0 )  -> 
( A  mod  pi )  e.  RR )
7776recnd 9622 . . . . . . . . . . . . 13  |-  ( ( A  e.  CC  /\  ( sin `  A )  =  0 )  -> 
( A  mod  pi )  e.  CC )
7877sincld 13726 . . . . . . . . . . . 12  |-  ( ( A  e.  CC  /\  ( sin `  A )  =  0 )  -> 
( sin `  ( A  mod  pi ) )  e.  CC )
791a1i 11 . . . . . . . . . . . . . . . . . . 19  |-  ( ( A  e.  CC  /\  ( sin `  A )  =  0 )  ->  pi  e.  RR )
80 0re 9596 . . . . . . . . . . . . . . . . . . . . . 22  |-  0  e.  RR
8180, 1, 2ltleii 9707 . . . . . . . . . . . . . . . . . . . . 21  |-  0  <_  pi
82 gt0ne0 10017 . . . . . . . . . . . . . . . . . . . . . . 23  |-  ( ( pi  e.  RR  /\  0  <  pi )  ->  pi  =/=  0 )
83823adant3 1016 . . . . . . . . . . . . . . . . . . . . . 22  |-  ( ( pi  e.  RR  /\  0  <  pi  /\  0  <_  pi )  ->  pi  =/=  0 )
84833com23 1202 . . . . . . . . . . . . . . . . . . . . 21  |-  ( ( pi  e.  RR  /\  0  <_  pi  /\  0  <  pi )  ->  pi  =/=  0 )
851, 81, 2, 84mp3an 1324 . . . . . . . . . . . . . . . . . . . 20  |-  pi  =/=  0
8685a1i 11 . . . . . . . . . . . . . . . . . . 19  |-  ( ( A  e.  CC  /\  ( sin `  A )  =  0 )  ->  pi  =/=  0 )
8774, 79, 86redivcld 10372 . . . . . . . . . . . . . . . . . 18  |-  ( ( A  e.  CC  /\  ( sin `  A )  =  0 )  -> 
( A  /  pi )  e.  RR )
8887flcld 11903 . . . . . . . . . . . . . . . . 17  |-  ( ( A  e.  CC  /\  ( sin `  A )  =  0 )  -> 
( |_ `  ( A  /  pi ) )  e.  ZZ )
8988znegcld 10968 . . . . . . . . . . . . . . . 16  |-  ( ( A  e.  CC  /\  ( sin `  A )  =  0 )  ->  -u ( |_ `  ( A  /  pi ) )  e.  ZZ )
90 abssinper 22672 . . . . . . . . . . . . . . . . . . 19  |-  ( ( A  e.  CC  /\  -u ( |_ `  ( A  /  pi ) )  e.  ZZ )  -> 
( abs `  ( sin `  ( A  +  ( -u ( |_ `  ( A  /  pi ) )  x.  pi ) ) ) )  =  ( abs `  ( sin `  A ) ) )
9190eqcomd 2475 . . . . . . . . . . . . . . . . . 18  |-  ( ( A  e.  CC  /\  -u ( |_ `  ( A  /  pi ) )  e.  ZZ )  -> 
( abs `  ( sin `  A ) )  =  ( abs `  ( sin `  ( A  +  ( -u ( |_ `  ( A  /  pi ) )  x.  pi ) ) ) ) )
9291ex 434 . . . . . . . . . . . . . . . . 17  |-  ( A  e.  CC  ->  ( -u ( |_ `  ( A  /  pi ) )  e.  ZZ  ->  ( abs `  ( sin `  A
) )  =  ( abs `  ( sin `  ( A  +  (
-u ( |_ `  ( A  /  pi ) )  x.  pi ) ) ) ) ) )
9392adantr 465 . . . . . . . . . . . . . . . 16  |-  ( ( A  e.  CC  /\  ( sin `  A )  =  0 )  -> 
( -u ( |_ `  ( A  /  pi ) )  e.  ZZ  ->  ( abs `  ( sin `  A ) )  =  ( abs `  ( sin `  ( A  +  ( -u ( |_ `  ( A  /  pi ) )  x.  pi ) ) ) ) ) )
9489, 93mpd 15 . . . . . . . . . . . . . . 15  |-  ( ( A  e.  CC  /\  ( sin `  A )  =  0 )  -> 
( abs `  ( sin `  A ) )  =  ( abs `  ( sin `  ( A  +  ( -u ( |_ `  ( A  /  pi ) )  x.  pi ) ) ) ) )
9588zcnd 10967 . . . . . . . . . . . . . . . . . . . . 21  |-  ( ( A  e.  CC  /\  ( sin `  A )  =  0 )  -> 
( |_ `  ( A  /  pi ) )  e.  CC )
9695negcld 9917 . . . . . . . . . . . . . . . . . . . 20  |-  ( ( A  e.  CC  /\  ( sin `  A )  =  0 )  ->  -u ( |_ `  ( A  /  pi ) )  e.  CC )
971recni 9608 . . . . . . . . . . . . . . . . . . . . 21  |-  pi  e.  CC
9897a1i 11 . . . . . . . . . . . . . . . . . . . 20  |-  ( ( A  e.  CC  /\  ( sin `  A )  =  0 )  ->  pi  e.  CC )
9996, 98mulcld 9616 . . . . . . . . . . . . . . . . . . 19  |-  ( ( A  e.  CC  /\  ( sin `  A )  =  0 )  -> 
( -u ( |_ `  ( A  /  pi ) )  x.  pi )  e.  CC )
10098, 95mulcld 9616 . . . . . . . . . . . . . . . . . . . 20  |-  ( ( A  e.  CC  /\  ( sin `  A )  =  0 )  -> 
( pi  x.  ( |_ `  ( A  /  pi ) ) )  e.  CC )
101100negcld 9917 . . . . . . . . . . . . . . . . . . 19  |-  ( ( A  e.  CC  /\  ( sin `  A )  =  0 )  ->  -u ( pi  x.  ( |_ `  ( A  /  pi ) ) )  e.  CC )
10295, 98mulneg1d 10009 . . . . . . . . . . . . . . . . . . . 20  |-  ( ( A  e.  CC  /\  ( sin `  A )  =  0 )  -> 
( -u ( |_ `  ( A  /  pi ) )  x.  pi )  =  -u ( ( |_ `  ( A  /  pi ) )  x.  pi ) )
10395, 98mulcomd 9617 . . . . . . . . . . . . . . . . . . . . 21  |-  ( ( A  e.  CC  /\  ( sin `  A )  =  0 )  -> 
( ( |_ `  ( A  /  pi ) )  x.  pi )  =  ( pi  x.  ( |_ `  ( A  /  pi ) ) ) )
104103negeqd 9814 . . . . . . . . . . . . . . . . . . . 20  |-  ( ( A  e.  CC  /\  ( sin `  A )  =  0 )  ->  -u ( ( |_ `  ( A  /  pi ) )  x.  pi )  =  -u ( pi  x.  ( |_ `  ( A  /  pi ) ) ) )
105102, 104eqtrd 2508 . . . . . . . . . . . . . . . . . . 19  |-  ( ( A  e.  CC  /\  ( sin `  A )  =  0 )  -> 
( -u ( |_ `  ( A  /  pi ) )  x.  pi )  =  -u ( pi  x.  ( |_ `  ( A  /  pi ) ) ) )
106 oveq2 6292 . . . . . . . . . . . . . . . . . . . . 21  |-  ( (
-u ( |_ `  ( A  /  pi ) )  x.  pi )  =  -u ( pi  x.  ( |_ `  ( A  /  pi ) ) )  -> 
( A  +  (
-u ( |_ `  ( A  /  pi ) )  x.  pi ) )  =  ( A  +  -u (
pi  x.  ( |_ `  ( A  /  pi ) ) ) ) )
107106ad3antrrr 729 . . . . . . . . . . . . . . . . . . . 20  |-  ( ( ( ( ( -u ( |_ `  ( A  /  pi ) )  x.  pi )  = 
-u ( pi  x.  ( |_ `  ( A  /  pi ) ) )  /\  -u (
pi  x.  ( |_ `  ( A  /  pi ) ) )  e.  CC )  /\  ( -u ( |_ `  ( A  /  pi ) )  x.  pi )  e.  CC )  /\  A  e.  CC )  ->  ( A  +  ( -u ( |_ `  ( A  /  pi ) )  x.  pi ) )  =  ( A  +  -u (
pi  x.  ( |_ `  ( A  /  pi ) ) ) ) )
1081074an4132 32365 . . . . . . . . . . . . . . . . . . 19  |-  ( ( ( ( A  e.  CC  /\  ( -u ( |_ `  ( A  /  pi ) )  x.  pi )  e.  CC )  /\  -u (
pi  x.  ( |_ `  ( A  /  pi ) ) )  e.  CC )  /\  ( -u ( |_ `  ( A  /  pi ) )  x.  pi )  = 
-u ( pi  x.  ( |_ `  ( A  /  pi ) ) ) )  ->  ( A  +  ( -u ( |_ `  ( A  /  pi ) )  x.  pi ) )  =  ( A  +  -u (
pi  x.  ( |_ `  ( A  /  pi ) ) ) ) )
10912, 99, 101, 105, 108eel1111 32615 . . . . . . . . . . . . . . . . . 18  |-  ( ( A  e.  CC  /\  ( sin `  A )  =  0 )  -> 
( A  +  (
-u ( |_ `  ( A  /  pi ) )  x.  pi ) )  =  ( A  +  -u (
pi  x.  ( |_ `  ( A  /  pi ) ) ) ) )
11012, 100negsubd 9936 . . . . . . . . . . . . . . . . . 18  |-  ( ( A  e.  CC  /\  ( sin `  A )  =  0 )  -> 
( A  +  -u ( pi  x.  ( |_ `  ( A  /  pi ) ) ) )  =  ( A  -  ( pi  x.  ( |_ `  ( A  /  pi ) ) ) ) )
111109, 110eqtrd 2508 . . . . . . . . . . . . . . . . 17  |-  ( ( A  e.  CC  /\  ( sin `  A )  =  0 )  -> 
( A  +  (
-u ( |_ `  ( A  /  pi ) )  x.  pi ) )  =  ( A  -  ( pi  x.  ( |_ `  ( A  /  pi ) ) ) ) )
112111fveq2d 5870 . . . . . . . . . . . . . . . 16  |-  ( ( A  e.  CC  /\  ( sin `  A )  =  0 )  -> 
( sin `  ( A  +  ( -u ( |_ `  ( A  /  pi ) )  x.  pi ) ) )  =  ( sin `  ( A  -  ( pi  x.  ( |_ `  ( A  /  pi ) ) ) ) ) )
113112fveq2d 5870 . . . . . . . . . . . . . . 15  |-  ( ( A  e.  CC  /\  ( sin `  A )  =  0 )  -> 
( abs `  ( sin `  ( A  +  ( -u ( |_ `  ( A  /  pi ) )  x.  pi ) ) ) )  =  ( abs `  ( sin `  ( A  -  ( pi  x.  ( |_ `  ( A  /  pi ) ) ) ) ) ) )
11494, 113eqtrd 2508 . . . . . . . . . . . . . 14  |-  ( ( A  e.  CC  /\  ( sin `  A )  =  0 )  -> 
( abs `  ( sin `  A ) )  =  ( abs `  ( sin `  ( A  -  ( pi  x.  ( |_ `  ( A  /  pi ) ) ) ) ) ) )
115 modval 11966 . . . . . . . . . . . . . . . . . 18  |-  ( ( A  e.  RR  /\  pi  e.  RR+ )  ->  ( A  mod  pi )  =  ( A  -  (
pi  x.  ( |_ `  ( A  /  pi ) ) ) ) )
116115fveq2d 5870 . . . . . . . . . . . . . . . . 17  |-  ( ( A  e.  RR  /\  pi  e.  RR+ )  ->  ( sin `  ( A  mod  pi ) )  =  ( sin `  ( A  -  ( pi  x.  ( |_ `  ( A  /  pi ) ) ) ) ) )
117116fveq2d 5870 . . . . . . . . . . . . . . . 16  |-  ( ( A  e.  RR  /\  pi  e.  RR+ )  ->  ( abs `  ( sin `  ( A  mod  pi ) ) )  =  ( abs `  ( sin `  ( A  -  ( pi  x.  ( |_ `  ( A  /  pi ) ) ) ) ) ) )
1183, 117mpan2 671 . . . . . . . . . . . . . . 15  |-  ( A  e.  RR  ->  ( abs `  ( sin `  ( A  mod  pi ) ) )  =  ( abs `  ( sin `  ( A  -  ( pi  x.  ( |_ `  ( A  /  pi ) ) ) ) ) ) )
11974, 118syl 16 . . . . . . . . . . . . . 14  |-  ( ( A  e.  CC  /\  ( sin `  A )  =  0 )  -> 
( abs `  ( sin `  ( A  mod  pi ) ) )  =  ( abs `  ( sin `  ( A  -  ( pi  x.  ( |_ `  ( A  /  pi ) ) ) ) ) ) )
120114, 119eqtr4d 2511 . . . . . . . . . . . . 13  |-  ( ( A  e.  CC  /\  ( sin `  A )  =  0 )  -> 
( abs `  ( sin `  A ) )  =  ( abs `  ( sin `  ( A  mod  pi ) ) ) )
12127fveq2d 5870 . . . . . . . . . . . . . . 15  |-  ( ( sin `  A )  =  0  ->  ( abs `  ( sin `  A
) )  =  ( abs `  0 ) )
122 abs0 13081 . . . . . . . . . . . . . . 15  |-  ( abs `  0 )  =  0
123121, 122syl6eq 2524 . . . . . . . . . . . . . 14  |-  ( ( sin `  A )  =  0  ->  ( abs `  ( sin `  A
) )  =  0 )
124123adantl 466 . . . . . . . . . . . . 13  |-  ( ( A  e.  CC  /\  ( sin `  A )  =  0 )  -> 
( abs `  ( sin `  A ) )  =  0 )
125120, 124eqtr3d 2510 . . . . . . . . . . . 12  |-  ( ( A  e.  CC  /\  ( sin `  A )  =  0 )  -> 
( abs `  ( sin `  ( A  mod  pi ) ) )  =  0 )
12678, 125abs00d 13240 . . . . . . . . . . 11  |-  ( ( A  e.  CC  /\  ( sin `  A )  =  0 )  -> 
( sin `  ( A  mod  pi ) )  =  0 )
127 notnot 291 . . . . . . . . . . . . 13  |-  ( ( sin `  ( A  mod  pi ) )  =  0  <->  -.  -.  ( sin `  ( A  mod  pi ) )  =  0 )
128127bicomi 202 . . . . . . . . . . . 12  |-  ( -. 
-.  ( sin `  ( A  mod  pi ) )  =  0  <->  ( sin `  ( A  mod  pi ) )  =  0 )
129 ltne 9681 . . . . . . . . . . . . . . . 16  |-  ( ( 0  e.  RR  /\  0  <  ( sin `  ( A  mod  pi ) ) )  ->  ( sin `  ( A  mod  pi ) )  =/=  0
)
130129neneqd 2669 . . . . . . . . . . . . . . 15  |-  ( ( 0  e.  RR  /\  0  <  ( sin `  ( A  mod  pi ) ) )  ->  -.  ( sin `  ( A  mod  pi ) )  =  0 )
131130expcom 435 . . . . . . . . . . . . . 14  |-  ( 0  <  ( sin `  ( A  mod  pi ) )  ->  ( 0  e.  RR  ->  -.  ( sin `  ( A  mod  pi ) )  =  0 ) )
13280, 131mpi 17 . . . . . . . . . . . . 13  |-  ( 0  <  ( sin `  ( A  mod  pi ) )  ->  -.  ( sin `  ( A  mod  pi ) )  =  0 )
133132con3i 135 . . . . . . . . . . . 12  |-  ( -. 
-.  ( sin `  ( A  mod  pi ) )  =  0  ->  -.  0  <  ( sin `  ( A  mod  pi ) ) )
134128, 133sylbir 213 . . . . . . . . . . 11  |-  ( ( sin `  ( A  mod  pi ) )  =  0  ->  -.  0  <  ( sin `  ( A  mod  pi ) ) )
135126, 134syl 16 . . . . . . . . . 10  |-  ( ( A  e.  CC  /\  ( sin `  A )  =  0 )  ->  -.  0  <  ( sin `  ( A  mod  pi ) ) )
136 sinq12gt0 22661 . . . . . . . . . 10  |-  ( ( A  mod  pi )  e.  ( 0 (,) pi )  ->  0  <  ( sin `  ( A  mod  pi ) ) )
137135, 136nsyl 121 . . . . . . . . 9  |-  ( ( A  e.  CC  /\  ( sin `  A )  =  0 )  ->  -.  ( A  mod  pi )  e.  ( 0 (,) pi ) )
13880rexri 9646 . . . . . . . . . . 11  |-  0  e.  RR*
1391rexri 9646 . . . . . . . . . . 11  |-  pi  e.  RR*
140 elioo2 11570 . . . . . . . . . . 11  |-  ( ( 0  e.  RR*  /\  pi  e.  RR* )  ->  (
( A  mod  pi )  e.  ( 0 (,) pi )  <->  ( ( A  mod  pi )  e.  RR  /\  0  < 
( A  mod  pi )  /\  ( A  mod  pi )  <  pi ) ) )
141138, 139, 140mp2an 672 . . . . . . . . . 10  |-  ( ( A  mod  pi )  e.  ( 0 (,) pi )  <->  ( ( A  mod  pi )  e.  RR  /\  0  < 
( A  mod  pi )  /\  ( A  mod  pi )  <  pi ) )
142141notbii 296 . . . . . . . . 9  |-  ( -.  ( A  mod  pi )  e.  ( 0 (,) pi )  <->  -.  (
( A  mod  pi )  e.  RR  /\  0  <  ( A  mod  pi )  /\  ( A  mod  pi )  <  pi ) )
143137, 142sylib 196 . . . . . . . 8  |-  ( ( A  e.  CC  /\  ( sin `  A )  =  0 )  ->  -.  ( ( A  mod  pi )  e.  RR  /\  0  <  ( A  mod  pi )  /\  ( A  mod  pi )  <  pi ) )
144 3anan12 986 . . . . . . . . 9  |-  ( ( ( A  mod  pi )  e.  RR  /\  0  <  ( A  mod  pi )  /\  ( A  mod  pi )  <  pi )  <-> 
( 0  <  ( A  mod  pi )  /\  ( ( A  mod  pi )  e.  RR  /\  ( A  mod  pi )  <  pi ) ) )
145144notbii 296 . . . . . . . 8  |-  ( -.  ( ( A  mod  pi )  e.  RR  /\  0  <  ( A  mod  pi )  /\  ( A  mod  pi )  <  pi )  <->  -.  (
0  <  ( A  mod  pi )  /\  (
( A  mod  pi )  e.  RR  /\  ( A  mod  pi )  < 
pi ) ) )
146143, 145sylib 196 . . . . . . 7  |-  ( ( A  e.  CC  /\  ( sin `  A )  =  0 )  ->  -.  ( 0  <  ( A  mod  pi )  /\  ( ( A  mod  pi )  e.  RR  /\  ( A  mod  pi )  <  pi ) ) )
147 modlt 11974 . . . . . . . . . 10  |-  ( ( A  e.  RR  /\  pi  e.  RR+ )  ->  ( A  mod  pi )  < 
pi )
148147ancoms 453 . . . . . . . . 9  |-  ( ( pi  e.  RR+  /\  A  e.  RR )  ->  ( A  mod  pi )  < 
pi )
1493, 74, 148sylancr 663 . . . . . . . 8  |-  ( ( A  e.  CC  /\  ( sin `  A )  =  0 )  -> 
( A  mod  pi )  <  pi )
15076, 149jca 532 . . . . . . 7  |-  ( ( A  e.  CC  /\  ( sin `  A )  =  0 )  -> 
( ( A  mod  pi )  e.  RR  /\  ( A  mod  pi )  <  pi ) )
151 not12an2impnot1 32443 . . . . . . 7  |-  ( ( -.  ( 0  < 
( A  mod  pi )  /\  ( ( A  mod  pi )  e.  RR  /\  ( A  mod  pi )  < 
pi ) )  /\  ( ( A  mod  pi )  e.  RR  /\  ( A  mod  pi )  <  pi ) )  ->  -.  0  <  ( A  mod  pi ) )
152146, 150, 151syl2anc 661 . . . . . 6  |-  ( ( A  e.  CC  /\  ( sin `  A )  =  0 )  ->  -.  0  <  ( A  mod  pi ) )
153 modge0 11973 . . . . . . . . 9  |-  ( ( A  e.  RR  /\  pi  e.  RR+ )  ->  0  <_  ( A  mod  pi ) )
154153ancoms 453 . . . . . . . 8  |-  ( ( pi  e.  RR+  /\  A  e.  RR )  ->  0  <_  ( A  mod  pi ) )
1553, 74, 154sylancr 663 . . . . . . 7  |-  ( ( A  e.  CC  /\  ( sin `  A )  =  0 )  -> 
0  <_  ( A  mod  pi ) )
156 leloe 9671 . . . . . . . . 9  |-  ( ( 0  e.  RR  /\  ( A  mod  pi )  e.  RR )  -> 
( 0  <_  ( A  mod  pi )  <->  ( 0  <  ( A  mod  pi )  \/  0  =  ( A  mod  pi ) ) ) )
157156biimp3a 1328 . . . . . . . 8  |-  ( ( 0  e.  RR  /\  ( A  mod  pi )  e.  RR  /\  0  <_  ( A  mod  pi ) )  ->  (
0  <  ( A  mod  pi )  \/  0  =  ( A  mod  pi ) ) )
158157idiALT 32315 . . . . . . 7  |-  ( ( 0  e.  RR  /\  ( A  mod  pi )  e.  RR  /\  0  <_  ( A  mod  pi ) )  ->  (
0  <  ( A  mod  pi )  \/  0  =  ( A  mod  pi ) ) )
15980, 76, 155, 158eel011 32593 . . . . . 6  |-  ( ( A  e.  CC  /\  ( sin `  A )  =  0 )  -> 
( 0  <  ( A  mod  pi )  \/  0  =  ( A  mod  pi ) ) )
160 pm2.53 373 . . . . . . . 8  |-  ( ( 0  <  ( A  mod  pi )  \/  0  =  ( A  mod  pi ) )  ->  ( -.  0  <  ( A  mod  pi )  ->  0  =  ( A  mod  pi ) ) )
161160imp 429 . . . . . . 7  |-  ( ( ( 0  <  ( A  mod  pi )  \/  0  =  ( A  mod  pi ) )  /\  -.  0  < 
( A  mod  pi ) )  ->  0  =  ( A  mod  pi ) )
162161ancoms 453 . . . . . 6  |-  ( ( -.  0  <  ( A  mod  pi )  /\  ( 0  <  ( A  mod  pi )  \/  0  =  ( A  mod  pi ) ) )  ->  0  =  ( A  mod  pi ) )
163152, 159, 162syl2anc 661 . . . . 5  |-  ( ( A  e.  CC  /\  ( sin `  A )  =  0 )  -> 
0  =  ( A  mod  pi ) )
164163eqcomd 2475 . . . 4  |-  ( ( A  e.  CC  /\  ( sin `  A )  =  0 )  -> 
( A  mod  pi )  =  0 )
165 mod0 11971 . . . . . 6  |-  ( ( A  e.  RR  /\  pi  e.  RR+ )  ->  (
( A  mod  pi )  =  0  <->  ( A  /  pi )  e.  ZZ ) )
166165biimp3a 1328 . . . . 5  |-  ( ( A  e.  RR  /\  pi  e.  RR+  /\  ( A  mod  pi )  =  0 )  ->  ( A  /  pi )  e.  ZZ )
1671663com12 1200 . . . 4  |-  ( ( pi  e.  RR+  /\  A  e.  RR  /\  ( A  mod  pi )  =  0 )  ->  ( A  /  pi )  e.  ZZ )
1683, 74, 164, 167eel011 32593 . . 3  |-  ( ( A  e.  CC  /\  ( sin `  A )  =  0 )  -> 
( A  /  pi )  e.  ZZ )
169168ex 434 . 2  |-  ( A  e.  CC  ->  (
( sin `  A
)  =  0  -> 
( A  /  pi )  e.  ZZ )
)
17097a1i 11 . . . . . 6  |-  ( A  e.  CC  ->  pi  e.  CC )
17185a1i 11 . . . . . 6  |-  ( A  e.  CC  ->  pi  =/=  0 )
17211, 170, 171divcan1d 10321 . . . . 5  |-  ( A  e.  CC  ->  (
( A  /  pi )  x.  pi )  =  A )
173172fveq2d 5870 . . . 4  |-  ( A  e.  CC  ->  ( sin `  ( ( A  /  pi )  x.  pi ) )  =  ( sin `  A
) )
174 id 22 . . . . 5  |-  ( ( A  /  pi )  e.  ZZ  ->  ( A  /  pi )  e.  ZZ )
175 sinkpi 22673 . . . . 5  |-  ( ( A  /  pi )  e.  ZZ  ->  ( sin `  ( ( A  /  pi )  x.  pi ) )  =  0 )
176174, 175syl 16 . . . 4  |-  ( ( A  /  pi )  e.  ZZ  ->  ( sin `  ( ( A  /  pi )  x.  pi ) )  =  0 )
177173, 176sylan9req 2529 . . 3  |-  ( ( A  e.  CC  /\  ( A  /  pi )  e.  ZZ )  ->  ( sin `  A
)  =  0 )
178177ex 434 . 2  |-  ( A  e.  CC  ->  (
( A  /  pi )  e.  ZZ  ->  ( sin `  A )  =  0 ) )
179169, 178impbid 191 1  |-  ( A  e.  CC  ->  (
( sin `  A
)  =  0  <->  ( A  /  pi )  e.  ZZ ) )
Colors of variables: wff setvar class
Syntax hints:   -. wn 3    -> wi 4    <-> wb 184    \/ wo 368    /\ wa 369    /\ w3a 973    = wceq 1379    e. wcel 1767    =/= wne 2662   class class class wbr 4447   ` cfv 5588  (class class class)co 6284   CCcc 9490   RRcr 9491   0cc0 9492   1c1 9493   _ici 9494    + caddc 9495    x. cmul 9497   RR*cxr 9627    < clt 9628    <_ cle 9629    - cmin 9805   -ucneg 9806    / cdiv 10206   2c2 10585   ZZcz 10864   RR+crp 11220   (,)cioo 11529   |_cfl 11895    mod cmo 11964   abscabs 13030   expce 13659   sincsin 13661   picpi 13664
This theorem was proved from axioms:  ax-mp 5  ax-1 6  ax-2 7  ax-3 8  ax-gen 1601  ax-4 1612  ax-5 1680  ax-6 1719  ax-7 1739  ax-8 1769  ax-9 1771  ax-10 1786  ax-11 1791  ax-12 1803  ax-13 1968  ax-ext 2445  ax-rep 4558  ax-sep 4568  ax-nul 4576  ax-pow 4625  ax-pr 4686  ax-un 6576  ax-inf2 8058  ax-cnex 9548  ax-resscn 9549  ax-1cn 9550  ax-icn 9551  ax-addcl 9552  ax-addrcl 9553  ax-mulcl 9554  ax-mulrcl 9555  ax-mulcom 9556  ax-addass 9557  ax-mulass 9558  ax-distr 9559  ax-i2m1 9560  ax-1ne0 9561  ax-1rid 9562  ax-rnegex 9563  ax-rrecex 9564  ax-cnre 9565  ax-pre-lttri 9566  ax-pre-lttrn 9567  ax-pre-ltadd 9568  ax-pre-mulgt0 9569  ax-pre-sup 9570  ax-addf 9571  ax-mulf 9572
This theorem depends on definitions:  df-bi 185  df-or 370  df-an 371  df-3or 974  df-3an 975  df-tru 1382  df-fal 1385  df-ex 1597  df-nf 1600  df-sb 1712  df-eu 2279  df-mo 2280  df-clab 2453  df-cleq 2459  df-clel 2462  df-nfc 2617  df-ne 2664  df-nel 2665  df-ral 2819  df-rex 2820  df-reu 2821  df-rmo 2822  df-rab 2823  df-v 3115  df-sbc 3332  df-csb 3436  df-dif 3479  df-un 3481  df-in 3483  df-ss 3490  df-pss 3492  df-nul 3786  df-if 3940  df-pw 4012  df-sn 4028  df-pr 4030  df-tp 4032  df-op 4034  df-uni 4246  df-int 4283  df-iun 4327  df-iin 4328  df-br 4448  df-opab 4506  df-mpt 4507  df-tr 4541  df-eprel 4791  df-id 4795  df-po 4800  df-so 4801  df-fr 4838  df-se 4839  df-we 4840  df-ord 4881  df-on 4882  df-lim 4883  df-suc 4884  df-xp 5005  df-rel 5006  df-cnv 5007  df-co 5008  df-dm 5009  df-rn 5010  df-res 5011  df-ima 5012  df-iota 5551  df-fun 5590  df-fn 5591  df-f 5592  df-f1 5593  df-fo 5594  df-f1o 5595  df-fv 5596  df-isom 5597  df-riota 6245  df-ov 6287  df-oprab 6288  df-mpt2 6289  df-of 6524  df-om 6685  df-1st 6784  df-2nd 6785  df-supp 6902  df-recs 7042  df-rdg 7076  df-1o 7130  df-2o 7131  df-oadd 7134  df-omul 7135  df-er 7311  df-ec 7313  df-qs 7317  df-map 7422  df-pm 7423  df-ixp 7470  df-en 7517  df-dom 7518  df-sdom 7519  df-fin 7520  df-fsupp 7830  df-fi 7871  df-sup 7901  df-oi 7935  df-card 8320  df-cda 8548  df-ni 9250  df-pli 9251  df-mi 9252  df-lti 9253  df-plpq 9286  df-mpq 9287  df-ltpq 9288  df-enq 9289  df-nq 9290  df-erq 9291  df-plq 9292  df-mq 9293  df-1nq 9294  df-rq 9295  df-ltnq 9296  df-np 9359  df-1p 9360  df-plp 9361  df-enr 9433  df-nr 9434  df-0r 9438  df-1r 9439  df-c 9498  df-i 9501  df-pnf 9630  df-mnf 9631  df-xr 9632  df-ltxr 9633  df-le 9634  df-sub 9807  df-neg 9808  df-div 10207  df-nn 10537  df-2 10594  df-3 10595  df-4 10596  df-5 10597  df-6 10598  df-7 10599  df-8 10600  df-9 10601  df-10 10602  df-n0 10796  df-z 10865  df-dec 10977  df-uz 11083  df-q 11183  df-rp 11221  df-xneg 11318  df-xadd 11319  df-xmul 11320  df-ioo 11533  df-ioc 11534  df-ico 11535  df-icc 11536  df-fz 11673  df-fzo 11793  df-fl 11897  df-mod 11965  df-seq 12076  df-exp 12135  df-fac 12322  df-bc 12349  df-hash 12374  df-shft 12863  df-cj 12895  df-re 12896  df-im 12897  df-sqrt 13031  df-abs 13032  df-limsup 13257  df-clim 13274  df-rlim 13275  df-sum 13472  df-ef 13665  df-sin 13667  df-cos 13668  df-pi 13670  df-struct 14492  df-ndx 14493  df-slot 14494  df-base 14495  df-sets 14496  df-ress 14497  df-plusg 14568  df-mulr 14569  df-starv 14570  df-sca 14571  df-vsca 14572  df-ip 14573  df-tset 14574  df-ple 14575  df-ds 14577  df-unif 14578  df-hom 14579  df-cco 14580  df-rest 14678  df-topn 14679  df-0g 14697  df-gsum 14698  df-topgen 14699  df-pt 14700  df-prds 14703  df-xrs 14757  df-qtop 14762  df-imas 14763  df-xps 14765  df-mre 14841  df-mrc 14842  df-acs 14844  df-mnd 15732  df-submnd 15787  df-mulg 15870  df-cntz 16160  df-cmn 16606  df-psmet 18210  df-xmet 18211  df-met 18212  df-bl 18213  df-mopn 18214  df-fbas 18215  df-fg 18216  df-cnfld 18220  df-top 19194  df-bases 19196  df-topon 19197  df-topsp 19198  df-cld 19314  df-ntr 19315  df-cls 19316  df-nei 19393  df-lp 19431  df-perf 19432  df-cn 19522  df-cnp 19523  df-haus 19610  df-tx 19826  df-hmeo 20019  df-fil 20110  df-fm 20202  df-flim 20203  df-flf 20204  df-xms 20586  df-ms 20587  df-tms 20588  df-cncf 21145  df-limc 22033  df-dv 22034
This theorem is referenced by: (None)
  Copyright terms: Public domain W3C validator