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

Theorem sineq0ALT 31673
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 31673. The Virtual Deduction proof is based on Mario Carneiro's revision of Norm Megill's proof of sineq0 21983. 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 21921 . . . . 5  |-  pi  e.  RR
2 pipos 21923 . . . . 5  |-  0  <  pi
31, 2elrpii 10994 . . . 4  |-  pi  e.  RR+
4 2ne0 10414 . . . . . 6  |-  2  =/=  0
54a1i 11 . . . . 5  |-  ( ( A  e.  CC  /\  ( sin `  A )  =  0 )  -> 
2  =/=  0 )
6 2cn 10392 . . . . . . 7  |-  2  e.  CC
7 2re 10391 . . . . . . . 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 9406 . . . . . 6  |-  ( A  e.  CC  ->  (
2  x.  A )  e.  CC )
15 axicn 9317 . . . . . . . . . . . . . . 15  |-  _i  e.  CC
1615a1i 11 . . . . . . . . . . . . . 14  |-  ( A  e.  CC  ->  _i  e.  CC )
1713, 16, 11mul12d 9578 . . . . . . . . . . . . 13  |-  ( A  e.  CC  ->  (
2  x.  ( _i  x.  A ) )  =  ( _i  x.  ( 2  x.  A
) ) )
1816, 11mulcld 9406 . . . . . . . . . . . . . 14  |-  ( A  e.  CC  ->  (
_i  x.  A )  e.  CC )
19182timesd 10567 . . . . . . . . . . . . 13  |-  ( A  e.  CC  ->  (
2  x.  ( _i  x.  A ) )  =  ( ( _i  x.  A )  +  ( _i  x.  A
) ) )
2017, 19eqtr3d 2477 . . . . . . . . . . . 12  |-  ( A  e.  CC  ->  (
_i  x.  ( 2  x.  A ) )  =  ( ( _i  x.  A )  +  ( _i  x.  A
) ) )
2120fveq2d 5695 . . . . . . . . . . 11  |-  ( A  e.  CC  ->  ( exp `  ( _i  x.  ( 2  x.  A
) ) )  =  ( exp `  (
( _i  x.  A
)  +  ( _i  x.  A ) ) ) )
22 efadd 13379 . . . . . . . . . . . 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 2475 . . . . . . . . . 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 13406 . . . . . . . . . . . . . . 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 2496 . . . . . . . . . . . . . 14  |-  ( ( A  e.  CC  /\  ( sin `  A )  =  0 )  -> 
( ( ( exp `  ( _i  x.  A
) )  -  ( exp `  ( -u _i  x.  A ) ) )  /  ( 2  x.  _i ) )  =  0 )
29 efcl 13368 . . . . . . . . . . . . . . . . . 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 9611 . . . . . . . . . . . . . . . . . . . 20  |-  -u _i  e.  CC
3231a1i 11 . . . . . . . . . . . . . . . . . . 19  |-  ( A  e.  CC  ->  -u _i  e.  CC )
3332, 11mulcld 9406 . . . . . . . . . . . . . . . . . 18  |-  ( A  e.  CC  ->  ( -u _i  x.  A )  e.  CC )
34 efcl 13368 . . . . . . . . . . . . . . . . . 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 9719 . . . . . . . . . . . . . . . 16  |-  ( A  e.  CC  ->  (
( exp `  (
_i  x.  A )
)  -  ( exp `  ( -u _i  x.  A ) ) )  e.  CC )
37 2mulicn 10548 . . . . . . . . . . . . . . . . 17  |-  ( 2  x.  _i )  e.  CC
3837a1i 11 . . . . . . . . . . . . . . . 16  |-  ( A  e.  CC  ->  (
2  x.  _i )  e.  CC )
39 2muline0 10549 . . . . . . . . . . . . . . . . 17  |-  ( 2  x.  _i )  =/=  0
4039a1i 11 . . . . . . . . . . . . . . . 16  |-  ( A  e.  CC  ->  (
2  x.  _i )  =/=  0 )
4136, 38, 40diveq0ad 10117 . . . . . . . . . . . . . . 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 9729 . . . . . . . . . . . . . 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 6107 . . . . . . . . . . 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 13379 . . . . . . . . . . . . 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 2478 . . . . . . . . . 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 9677 . . . . . . . . . . . . . . 15  |-  ( _i  +  -u _i )  =  0
5352oveq1i 6101 . . . . . . . . . . . . . 14  |-  ( ( _i  +  -u _i )  x.  A )  =  ( 0  x.  A )
5416, 32, 11adddird 9411 . . . . . . . . . . . . . 14  |-  ( A  e.  CC  ->  (
( _i  +  -u _i )  x.  A
)  =  ( ( _i  x.  A )  +  ( -u _i  x.  A ) ) )
5553, 54syl5reqr 2490 . . . . . . . . . . . . 13  |-  ( A  e.  CC  ->  (
( _i  x.  A
)  +  ( -u _i  x.  A ) )  =  ( 0  x.  A ) )
5611mul02d 9567 . . . . . . . . . . . . 13  |-  ( A  e.  CC  ->  (
0  x.  A )  =  0 )
5755, 56eqtrd 2475 . . . . . . . . . . . 12  |-  ( A  e.  CC  ->  (
( _i  x.  A
)  +  ( -u _i  x.  A ) )  =  0 )
5857fveq2d 5695 . . . . . . . . . . 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 13376 . . . . . . . . . . 11  |-  ( exp `  0 )  =  1
6160a1i 11 . . . . . . . . . 10  |-  ( ( A  e.  CC  /\  ( sin `  A )  =  0 )  -> 
( exp `  0
)  =  1 )
6251, 59, 613eqtrd 2479 . . . . . . . . 9  |-  ( ( A  e.  CC  /\  ( sin `  A )  =  0 )  -> 
( ( exp `  (
_i  x.  A )
)  x.  ( exp `  ( _i  x.  A
) ) )  =  1 )
6325, 62eqtrd 2475 . . . . . . . 8  |-  ( ( A  e.  CC  /\  ( sin `  A )  =  0 )  -> 
( exp `  (
_i  x.  ( 2  x.  A ) ) )  =  1 )
6463fveq2d 5695 . . . . . . 7  |-  ( ( A  e.  CC  /\  ( sin `  A )  =  0 )  -> 
( abs `  ( exp `  ( _i  x.  ( 2  x.  A
) ) ) )  =  ( abs `  1
) )
65 abs1 12786 . . . . . . 7  |-  ( abs `  1 )  =  1
6664, 65syl6eq 2491 . . . . . 6  |-  ( ( A  e.  CC  /\  ( sin `  A )  =  0 )  -> 
( abs `  ( exp `  ( _i  x.  ( 2  x.  A
) ) ) )  =  1 )
67 absefib 13482 . . . . . . . 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 31441 . . . . 5  |-  ( ( A  e.  CC  /\  ( sin `  A )  =  0 )  -> 
( 2  x.  A
)  e.  RR )
71 mulre 12610 . . . . . . 7  |-  ( ( A  e.  CC  /\  2  e.  RR  /\  2  =/=  0 )  ->  ( A  e.  RR  <->  ( 2  x.  A )  e.  RR ) )
72714animp1 31201 . . . . . 6  |-  ( ( ( ( A  e.  CC  /\  2  e.  RR )  /\  2  =/=  0 )  /\  (
2  x.  A )  e.  RR )  ->  A  e.  RR )
73724an31 31202 . . . . 5  |-  ( ( ( ( 2  =/=  0  /\  2  e.  RR )  /\  A  e.  CC )  /\  (
2  x.  A )  e.  RR )  ->  A  e.  RR )
745, 10, 12, 70, 73eel1111 31453 . . . 4  |-  ( ( A  e.  CC  /\  ( sin `  A )  =  0 )  ->  A  e.  RR )
753a1i 11 . . . . . . . . . . . . . . 15  |-  ( ( A  e.  CC  /\  ( sin `  A )  =  0 )  ->  pi  e.  RR+ )
7674, 75modcld 11714 . . . . . . . . . . . . . 14  |-  ( ( A  e.  CC  /\  ( sin `  A )  =  0 )  -> 
( A  mod  pi )  e.  RR )
7776recnd 9412 . . . . . . . . . . . . 13  |-  ( ( A  e.  CC  /\  ( sin `  A )  =  0 )  -> 
( A  mod  pi )  e.  CC )
7877sincld 13414 . . . . . . . . . . . 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 9386 . . . . . . . . . . . . . . . . . . . . . 22  |-  0  e.  RR
8180, 1, 2ltleii 9497 . . . . . . . . . . . . . . . . . . . . 21  |-  0  <_  pi
82 gt0ne0 9804 . . . . . . . . . . . . . . . . . . . . . . 23  |-  ( ( pi  e.  RR  /\  0  <  pi )  ->  pi  =/=  0 )
83823adant3 1008 . . . . . . . . . . . . . . . . . . . . . 22  |-  ( ( pi  e.  RR  /\  0  <  pi  /\  0  <_  pi )  ->  pi  =/=  0 )
84833com23 1193 . . . . . . . . . . . . . . . . . . . . 21  |-  ( ( pi  e.  RR  /\  0  <_  pi  /\  0  <  pi )  ->  pi  =/=  0 )
851, 81, 2, 84mp3an 1314 . . . . . . . . . . . . . . . . . . . 20  |-  pi  =/=  0
8685a1i 11 . . . . . . . . . . . . . . . . . . 19  |-  ( ( A  e.  CC  /\  ( sin `  A )  =  0 )  ->  pi  =/=  0 )
8774, 79, 86redivcld 10159 . . . . . . . . . . . . . . . . . 18  |-  ( ( A  e.  CC  /\  ( sin `  A )  =  0 )  -> 
( A  /  pi )  e.  RR )
8887flcld 11648 . . . . . . . . . . . . . . . . 17  |-  ( ( A  e.  CC  /\  ( sin `  A )  =  0 )  -> 
( |_ `  ( A  /  pi ) )  e.  ZZ )
8988znegcld 10749 . . . . . . . . . . . . . . . 16  |-  ( ( A  e.  CC  /\  ( sin `  A )  =  0 )  ->  -u ( |_ `  ( A  /  pi ) )  e.  ZZ )
90 abssinper 21980 . . . . . . . . . . . . . . . . . . 19  |-  ( ( A  e.  CC  /\  -u ( |_ `  ( A  /  pi ) )  e.  ZZ )  -> 
( abs `  ( sin `  ( A  +  ( -u ( |_ `  ( A  /  pi ) )  x.  pi ) ) ) )  =  ( abs `  ( sin `  A ) ) )
9190eqcomd 2448 . . . . . . . . . . . . . . . . . 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 10748 . . . . . . . . . . . . . . . . . . . . 21  |-  ( ( A  e.  CC  /\  ( sin `  A )  =  0 )  -> 
( |_ `  ( A  /  pi ) )  e.  CC )
9695negcld 9706 . . . . . . . . . . . . . . . . . . . 20  |-  ( ( A  e.  CC  /\  ( sin `  A )  =  0 )  ->  -u ( |_ `  ( A  /  pi ) )  e.  CC )
971recni 9398 . . . . . . . . . . . . . . . . . . . . 21  |-  pi  e.  CC
9897a1i 11 . . . . . . . . . . . . . . . . . . . 20  |-  ( ( A  e.  CC  /\  ( sin `  A )  =  0 )  ->  pi  e.  CC )
9996, 98mulcld 9406 . . . . . . . . . . . . . . . . . . 19  |-  ( ( A  e.  CC  /\  ( sin `  A )  =  0 )  -> 
( -u ( |_ `  ( A  /  pi ) )  x.  pi )  e.  CC )
10098, 95mulcld 9406 . . . . . . . . . . . . . . . . . . . 20  |-  ( ( A  e.  CC  /\  ( sin `  A )  =  0 )  -> 
( pi  x.  ( |_ `  ( A  /  pi ) ) )  e.  CC )
101100negcld 9706 . . . . . . . . . . . . . . . . . . 19  |-  ( ( A  e.  CC  /\  ( sin `  A )  =  0 )  ->  -u ( pi  x.  ( |_ `  ( A  /  pi ) ) )  e.  CC )
10295, 98mulneg1d 9797 . . . . . . . . . . . . . . . . . . . 20  |-  ( ( A  e.  CC  /\  ( sin `  A )  =  0 )  -> 
( -u ( |_ `  ( A  /  pi ) )  x.  pi )  =  -u ( ( |_ `  ( A  /  pi ) )  x.  pi ) )
10395, 98mulcomd 9407 . . . . . . . . . . . . . . . . . . . . 21  |-  ( ( A  e.  CC  /\  ( sin `  A )  =  0 )  -> 
( ( |_ `  ( A  /  pi ) )  x.  pi )  =  ( pi  x.  ( |_ `  ( A  /  pi ) ) ) )
104103negeqd 9604 . . . . . . . . . . . . . . . . . . . 20  |-  ( ( A  e.  CC  /\  ( sin `  A )  =  0 )  ->  -u ( ( |_ `  ( A  /  pi ) )  x.  pi )  =  -u ( pi  x.  ( |_ `  ( A  /  pi ) ) ) )
105102, 104eqtrd 2475 . . . . . . . . . . . . . . . . . . 19  |-  ( ( A  e.  CC  /\  ( sin `  A )  =  0 )  -> 
( -u ( |_ `  ( A  /  pi ) )  x.  pi )  =  -u ( pi  x.  ( |_ `  ( A  /  pi ) ) ) )
106 oveq2 6099 . . . . . . . . . . . . . . . . . . . . 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 31203 . . . . . . . . . . . . . . . . . . 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 31453 . . . . . . . . . . . . . . . . . 18  |-  ( ( A  e.  CC  /\  ( sin `  A )  =  0 )  -> 
( A  +  (
-u ( |_ `  ( A  /  pi ) )  x.  pi ) )  =  ( A  +  -u (
pi  x.  ( |_ `  ( A  /  pi ) ) ) ) )
11012, 100negsubd 9725 . . . . . . . . . . . . . . . . . 18  |-  ( ( A  e.  CC  /\  ( sin `  A )  =  0 )  -> 
( A  +  -u ( pi  x.  ( |_ `  ( A  /  pi ) ) ) )  =  ( A  -  ( pi  x.  ( |_ `  ( A  /  pi ) ) ) ) )
111109, 110eqtrd 2475 . . . . . . . . . . . . . . . . 17  |-  ( ( A  e.  CC  /\  ( sin `  A )  =  0 )  -> 
( A  +  (
-u ( |_ `  ( A  /  pi ) )  x.  pi ) )  =  ( A  -  ( pi  x.  ( |_ `  ( A  /  pi ) ) ) ) )
112111fveq2d 5695 . . . . . . . . . . . . . . . 16  |-  ( ( A  e.  CC  /\  ( sin `  A )  =  0 )  -> 
( sin `  ( A  +  ( -u ( |_ `  ( A  /  pi ) )  x.  pi ) ) )  =  ( sin `  ( A  -  ( pi  x.  ( |_ `  ( A  /  pi ) ) ) ) ) )
113112fveq2d 5695 . . . . . . . . . . . . . . 15  |-  ( ( A  e.  CC  /\  ( sin `  A )  =  0 )  -> 
( abs `  ( sin `  ( A  +  ( -u ( |_ `  ( A  /  pi ) )  x.  pi ) ) ) )  =  ( abs `  ( sin `  ( A  -  ( pi  x.  ( |_ `  ( A  /  pi ) ) ) ) ) ) )
11494, 113eqtrd 2475 . . . . . . . . . . . . . 14  |-  ( ( A  e.  CC  /\  ( sin `  A )  =  0 )  -> 
( abs `  ( sin `  A ) )  =  ( abs `  ( sin `  ( A  -  ( pi  x.  ( |_ `  ( A  /  pi ) ) ) ) ) ) )
115 modval 11710 . . . . . . . . . . . . . . . . . 18  |-  ( ( A  e.  RR  /\  pi  e.  RR+ )  ->  ( A  mod  pi )  =  ( A  -  (
pi  x.  ( |_ `  ( A  /  pi ) ) ) ) )
116115fveq2d 5695 . . . . . . . . . . . . . . . . 17  |-  ( ( A  e.  RR  /\  pi  e.  RR+ )  ->  ( sin `  ( A  mod  pi ) )  =  ( sin `  ( A  -  ( pi  x.  ( |_ `  ( A  /  pi ) ) ) ) ) )
117116fveq2d 5695 . . . . . . . . . . . . . . . 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 2478 . . . . . . . . . . . . 13  |-  ( ( A  e.  CC  /\  ( sin `  A )  =  0 )  -> 
( abs `  ( sin `  A ) )  =  ( abs `  ( sin `  ( A  mod  pi ) ) ) )
12127fveq2d 5695 . . . . . . . . . . . . . . 15  |-  ( ( sin `  A )  =  0  ->  ( abs `  ( sin `  A
) )  =  ( abs `  0 ) )
122 abs0 12774 . . . . . . . . . . . . . . 15  |-  ( abs `  0 )  =  0
123121, 122syl6eq 2491 . . . . . . . . . . . . . 14  |-  ( ( sin `  A )  =  0  ->  ( abs `  ( sin `  A
) )  =  0 )
124123adantl 466 . . . . . . . . . . . . 13  |-  ( ( A  e.  CC  /\  ( sin `  A )  =  0 )  -> 
( abs `  ( sin `  A ) )  =  0 )
125120, 124eqtr3d 2477 . . . . . . . . . . . 12  |-  ( ( A  e.  CC  /\  ( sin `  A )  =  0 )  -> 
( abs `  ( sin `  ( A  mod  pi ) ) )  =  0 )
12678, 125abs00d 12932 . . . . . . . . . . 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 9471 . . . . . . . . . . . . . . . 16  |-  ( ( 0  e.  RR  /\  0  <  ( sin `  ( A  mod  pi ) ) )  ->  ( sin `  ( A  mod  pi ) )  =/=  0
)
130129neneqd 2624 . . . . . . . . . . . . . . 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 21969 . . . . . . . . . 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 9436 . . . . . . . . . . 11  |-  0  e.  RR*
1391rexri 9436 . . . . . . . . . . 11  |-  pi  e.  RR*
140 elioo2 11341 . . . . . . . . . . 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 978 . . . . . . . . 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 11718 . . . . . . . . . 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 31281 . . . . . . 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 11717 . . . . . . . . 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 9461 . . . . . . . . 9  |-  ( ( 0  e.  RR  /\  ( A  mod  pi )  e.  RR )  -> 
( 0  <_  ( A  mod  pi )  <->  ( 0  <  ( A  mod  pi )  \/  0  =  ( A  mod  pi ) ) ) )
157156biimp3a 1318 . . . . . . . 8  |-  ( ( 0  e.  RR  /\  ( A  mod  pi )  e.  RR  /\  0  <_  ( A  mod  pi ) )  ->  (
0  <  ( A  mod  pi )  \/  0  =  ( A  mod  pi ) ) )
158157idiALT 31153 . . . . . . 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 31431 . . . . . 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 2448 . . . 4  |-  ( ( A  e.  CC  /\  ( sin `  A )  =  0 )  -> 
( A  mod  pi )  =  0 )
165 mod0 11715 . . . . . 6  |-  ( ( A  e.  RR  /\  pi  e.  RR+ )  ->  (
( A  mod  pi )  =  0  <->  ( A  /  pi )  e.  ZZ ) )
166165biimp3a 1318 . . . . 5  |-  ( ( A  e.  RR  /\  pi  e.  RR+  /\  ( A  mod  pi )  =  0 )  ->  ( A  /  pi )  e.  ZZ )
1671663com12 1191 . . . 4  |-  ( ( pi  e.  RR+  /\  A  e.  RR  /\  ( A  mod  pi )  =  0 )  ->  ( A  /  pi )  e.  ZZ )
1683, 74, 164, 167eel011 31431 . . 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 10108 . . . . 5  |-  ( A  e.  CC  ->  (
( A  /  pi )  x.  pi )  =  A )
173172fveq2d 5695 . . . 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 21981 . . . . 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 2496 . . 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 965    = wceq 1369    e. wcel 1756    =/= wne 2606   class class class wbr 4292   ` cfv 5418  (class class class)co 6091   CCcc 9280   RRcr 9281   0cc0 9282   1c1 9283   _ici 9284    + caddc 9285    x. cmul 9287   RR*cxr 9417    < clt 9418    <_ cle 9419    - cmin 9595   -ucneg 9596    / cdiv 9993   2c2 10371   ZZcz 10646   RR+crp 10991   (,)cioo 11300   |_cfl 11640    mod cmo 11708   abscabs 12723   expce 13347   sincsin 13349   picpi 13352
This theorem was proved from axioms:  ax-mp 5  ax-1 6  ax-2 7  ax-3 8  ax-gen 1591  ax-4 1602  ax-5 1670  ax-6 1708  ax-7 1728  ax-8 1758  ax-9 1760  ax-10 1775  ax-11 1780  ax-12 1792  ax-13 1943  ax-ext 2423  ax-rep 4403  ax-sep 4413  ax-nul 4421  ax-pow 4470  ax-pr 4531  ax-un 6372  ax-inf2 7847  ax-cnex 9338  ax-resscn 9339  ax-1cn 9340  ax-icn 9341  ax-addcl 9342  ax-addrcl 9343  ax-mulcl 9344  ax-mulrcl 9345  ax-mulcom 9346  ax-addass 9347  ax-mulass 9348  ax-distr 9349  ax-i2m1 9350  ax-1ne0 9351  ax-1rid 9352  ax-rnegex 9353  ax-rrecex 9354  ax-cnre 9355  ax-pre-lttri 9356  ax-pre-lttrn 9357  ax-pre-ltadd 9358  ax-pre-mulgt0 9359  ax-pre-sup 9360  ax-addf 9361  ax-mulf 9362
This theorem depends on definitions:  df-bi 185  df-or 370  df-an 371  df-3or 966  df-3an 967  df-tru 1372  df-fal 1375  df-ex 1587  df-nf 1590  df-sb 1701  df-eu 2257  df-mo 2258  df-clab 2430  df-cleq 2436  df-clel 2439  df-nfc 2568  df-ne 2608  df-nel 2609  df-ral 2720  df-rex 2721  df-reu 2722  df-rmo 2723  df-rab 2724  df-v 2974  df-sbc 3187  df-csb 3289  df-dif 3331  df-un 3333  df-in 3335  df-ss 3342  df-pss 3344  df-nul 3638  df-if 3792  df-pw 3862  df-sn 3878  df-pr 3880  df-tp 3882  df-op 3884  df-uni 4092  df-int 4129  df-iun 4173  df-iin 4174  df-br 4293  df-opab 4351  df-mpt 4352  df-tr 4386  df-eprel 4632  df-id 4636  df-po 4641  df-so 4642  df-fr 4679  df-se 4680  df-we 4681  df-ord 4722  df-on 4723  df-lim 4724  df-suc 4725  df-xp 4846  df-rel 4847  df-cnv 4848  df-co 4849  df-dm 4850  df-rn 4851  df-res 4852  df-ima 4853  df-iota 5381  df-fun 5420  df-fn 5421  df-f 5422  df-f1 5423  df-fo 5424  df-f1o 5425  df-fv 5426  df-isom 5427  df-riota 6052  df-ov 6094  df-oprab 6095  df-mpt2 6096  df-of 6320  df-om 6477  df-1st 6577  df-2nd 6578  df-supp 6691  df-recs 6832  df-rdg 6866  df-1o 6920  df-2o 6921  df-oadd 6924  df-omul 6925  df-er 7101  df-ec 7103  df-qs 7107  df-map 7216  df-pm 7217  df-ixp 7264  df-en 7311  df-dom 7312  df-sdom 7313  df-fin 7314  df-fsupp 7621  df-fi 7661  df-sup 7691  df-oi 7724  df-card 8109  df-cda 8337  df-ni 9041  df-pli 9042  df-mi 9043  df-lti 9044  df-plpq 9077  df-mpq 9078  df-ltpq 9079  df-enq 9080  df-nq 9081  df-erq 9082  df-plq 9083  df-mq 9084  df-1nq 9085  df-rq 9086  df-ltnq 9087  df-np 9150  df-1p 9151  df-plp 9152  df-enr 9226  df-nr 9227  df-0r 9231  df-1r 9232  df-c 9288  df-i 9291  df-pnf 9420  df-mnf 9421  df-xr 9422  df-ltxr 9423  df-le 9424  df-sub 9597  df-neg 9598  df-div 9994  df-nn 10323  df-2 10380  df-3 10381  df-4 10382  df-5 10383  df-6 10384  df-7 10385  df-8 10386  df-9 10387  df-10 10388  df-n0 10580  df-z 10647  df-dec 10756  df-uz 10862  df-q 10954  df-rp 10992  df-xneg 11089  df-xadd 11090  df-xmul 11091  df-ioo 11304  df-ioc 11305  df-ico 11306  df-icc 11307  df-fz 11438  df-fzo 11549  df-fl 11642  df-mod 11709  df-seq 11807  df-exp 11866  df-fac 12052  df-bc 12079  df-hash 12104  df-shft 12556  df-cj 12588  df-re 12589  df-im 12590  df-sqr 12724  df-abs 12725  df-limsup 12949  df-clim 12966  df-rlim 12967  df-sum 13164  df-ef 13353  df-sin 13355  df-cos 13356  df-pi 13358  df-struct 14176  df-ndx 14177  df-slot 14178  df-base 14179  df-sets 14180  df-ress 14181  df-plusg 14251  df-mulr 14252  df-starv 14253  df-sca 14254  df-vsca 14255  df-ip 14256  df-tset 14257  df-ple 14258  df-ds 14260  df-unif 14261  df-hom 14262  df-cco 14263  df-rest 14361  df-topn 14362  df-0g 14380  df-gsum 14381  df-topgen 14382  df-pt 14383  df-prds 14386  df-xrs 14440  df-qtop 14445  df-imas 14446  df-xps 14448  df-mre 14524  df-mrc 14525  df-acs 14527  df-mnd 15415  df-submnd 15465  df-mulg 15548  df-cntz 15835  df-cmn 16279  df-psmet 17809  df-xmet 17810  df-met 17811  df-bl 17812  df-mopn 17813  df-fbas 17814  df-fg 17815  df-cnfld 17819  df-top 18503  df-bases 18505  df-topon 18506  df-topsp 18507  df-cld 18623  df-ntr 18624  df-cls 18625  df-nei 18702  df-lp 18740  df-perf 18741  df-cn 18831  df-cnp 18832  df-haus 18919  df-tx 19135  df-hmeo 19328  df-fil 19419  df-fm 19511  df-flim 19512  df-flf 19513  df-xms 19895  df-ms 19896  df-tms 19897  df-cncf 20454  df-limc 21341  df-dv 21342
This theorem is referenced by: (None)
  Copyright terms: Public domain W3C validator