ILE Home Intuitionistic Logic Explorer < Previous   Next >
Nearby theorems
Mirrors  >  Home  >  ILE Home  >  Th. List  >  eucalginv Unicode version

Theorem eucalginv 11737
Description: The invariant of the step function  E for Euclid's Algorithm is the  gcd operator applied to the state. (Contributed by Paul Chapman, 31-Mar-2011.) (Revised by Mario Carneiro, 29-May-2014.)
Hypothesis
Ref Expression
eucalgval.1  |-  E  =  ( x  e.  NN0 ,  y  e.  NN0  |->  if ( y  =  0 , 
<. x ,  y >. ,  <. y ,  ( x  mod  y )
>. ) )
Assertion
Ref Expression
eucalginv  |-  ( X  e.  ( NN0  X.  NN0 )  ->  (  gcd  `  ( E `  X
) )  =  (  gcd  `  X )
)
Distinct variable group:    x, y, X
Allowed substitution hints:    E( x, y)

Proof of Theorem eucalginv
StepHypRef Expression
1 eucalgval.1 . . . 4  |-  E  =  ( x  e.  NN0 ,  y  e.  NN0  |->  if ( y  =  0 , 
<. x ,  y >. ,  <. y ,  ( x  mod  y )
>. ) )
21eucalgval 11735 . . 3  |-  ( X  e.  ( NN0  X.  NN0 )  ->  ( E `
 X )  =  if ( ( 2nd `  X )  =  0 ,  X ,  <. ( 2nd `  X ) ,  (  mod  `  X
) >. ) )
32fveq2d 5425 . 2  |-  ( X  e.  ( NN0  X.  NN0 )  ->  (  gcd  `  ( E `  X
) )  =  (  gcd  `  if (
( 2nd `  X
)  =  0 ,  X ,  <. ( 2nd `  X ) ,  (  mod  `  X
) >. ) ) )
4 1st2nd2 6073 . . . . . . . . 9  |-  ( X  e.  ( NN0  X.  NN0 )  ->  X  = 
<. ( 1st `  X
) ,  ( 2nd `  X ) >. )
54adantr 274 . . . . . . . 8  |-  ( ( X  e.  ( NN0 
X.  NN0 )  /\  ( 2nd `  X )  e.  NN )  ->  X  =  <. ( 1st `  X
) ,  ( 2nd `  X ) >. )
65fveq2d 5425 . . . . . . 7  |-  ( ( X  e.  ( NN0 
X.  NN0 )  /\  ( 2nd `  X )  e.  NN )  ->  (  mod  `  X )  =  (  mod  `  <. ( 1st `  X ) ,  ( 2nd `  X
) >. ) )
7 df-ov 5777 . . . . . . 7  |-  ( ( 1st `  X )  mod  ( 2nd `  X
) )  =  (  mod  `  <. ( 1st `  X ) ,  ( 2nd `  X )
>. )
86, 7syl6eqr 2190 . . . . . 6  |-  ( ( X  e.  ( NN0 
X.  NN0 )  /\  ( 2nd `  X )  e.  NN )  ->  (  mod  `  X )  =  ( ( 1st `  X
)  mod  ( 2nd `  X ) ) )
98oveq2d 5790 . . . . 5  |-  ( ( X  e.  ( NN0 
X.  NN0 )  /\  ( 2nd `  X )  e.  NN )  ->  (
( 2nd `  X
)  gcd  (  mod  `  X ) )  =  ( ( 2nd `  X
)  gcd  ( ( 1st `  X )  mod  ( 2nd `  X
) ) ) )
10 nnz 9073 . . . . . . 7  |-  ( ( 2nd `  X )  e.  NN  ->  ( 2nd `  X )  e.  ZZ )
1110adantl 275 . . . . . 6  |-  ( ( X  e.  ( NN0 
X.  NN0 )  /\  ( 2nd `  X )  e.  NN )  ->  ( 2nd `  X )  e.  ZZ )
12 xp1st 6063 . . . . . . . . . 10  |-  ( X  e.  ( NN0  X.  NN0 )  ->  ( 1st `  X )  e.  NN0 )
1312adantr 274 . . . . . . . . 9  |-  ( ( X  e.  ( NN0 
X.  NN0 )  /\  ( 2nd `  X )  e.  NN )  ->  ( 1st `  X )  e. 
NN0 )
1413nn0zd 9171 . . . . . . . 8  |-  ( ( X  e.  ( NN0 
X.  NN0 )  /\  ( 2nd `  X )  e.  NN )  ->  ( 1st `  X )  e.  ZZ )
15 zmodcl 10117 . . . . . . . 8  |-  ( ( ( 1st `  X
)  e.  ZZ  /\  ( 2nd `  X )  e.  NN )  -> 
( ( 1st `  X
)  mod  ( 2nd `  X ) )  e. 
NN0 )
1614, 15sylancom 416 . . . . . . 7  |-  ( ( X  e.  ( NN0 
X.  NN0 )  /\  ( 2nd `  X )  e.  NN )  ->  (
( 1st `  X
)  mod  ( 2nd `  X ) )  e. 
NN0 )
1716nn0zd 9171 . . . . . 6  |-  ( ( X  e.  ( NN0 
X.  NN0 )  /\  ( 2nd `  X )  e.  NN )  ->  (
( 1st `  X
)  mod  ( 2nd `  X ) )  e.  ZZ )
18 gcdcom 11662 . . . . . 6  |-  ( ( ( 2nd `  X
)  e.  ZZ  /\  ( ( 1st `  X
)  mod  ( 2nd `  X ) )  e.  ZZ )  ->  (
( 2nd `  X
)  gcd  ( ( 1st `  X )  mod  ( 2nd `  X
) ) )  =  ( ( ( 1st `  X )  mod  ( 2nd `  X ) )  gcd  ( 2nd `  X
) ) )
1911, 17, 18syl2anc 408 . . . . 5  |-  ( ( X  e.  ( NN0 
X.  NN0 )  /\  ( 2nd `  X )  e.  NN )  ->  (
( 2nd `  X
)  gcd  ( ( 1st `  X )  mod  ( 2nd `  X
) ) )  =  ( ( ( 1st `  X )  mod  ( 2nd `  X ) )  gcd  ( 2nd `  X
) ) )
20 modgcd 11679 . . . . . 6  |-  ( ( ( 1st `  X
)  e.  ZZ  /\  ( 2nd `  X )  e.  NN )  -> 
( ( ( 1st `  X )  mod  ( 2nd `  X ) )  gcd  ( 2nd `  X
) )  =  ( ( 1st `  X
)  gcd  ( 2nd `  X ) ) )
2114, 20sylancom 416 . . . . 5  |-  ( ( X  e.  ( NN0 
X.  NN0 )  /\  ( 2nd `  X )  e.  NN )  ->  (
( ( 1st `  X
)  mod  ( 2nd `  X ) )  gcd  ( 2nd `  X
) )  =  ( ( 1st `  X
)  gcd  ( 2nd `  X ) ) )
229, 19, 213eqtrd 2176 . . . 4  |-  ( ( X  e.  ( NN0 
X.  NN0 )  /\  ( 2nd `  X )  e.  NN )  ->  (
( 2nd `  X
)  gcd  (  mod  `  X ) )  =  ( ( 1st `  X
)  gcd  ( 2nd `  X ) ) )
23 nnne0 8748 . . . . . . . . 9  |-  ( ( 2nd `  X )  e.  NN  ->  ( 2nd `  X )  =/=  0 )
2423adantl 275 . . . . . . . 8  |-  ( ( X  e.  ( NN0 
X.  NN0 )  /\  ( 2nd `  X )  e.  NN )  ->  ( 2nd `  X )  =/=  0 )
2524neneqd 2329 . . . . . . 7  |-  ( ( X  e.  ( NN0 
X.  NN0 )  /\  ( 2nd `  X )  e.  NN )  ->  -.  ( 2nd `  X )  =  0 )
2625iffalsed 3484 . . . . . 6  |-  ( ( X  e.  ( NN0 
X.  NN0 )  /\  ( 2nd `  X )  e.  NN )  ->  if ( ( 2nd `  X
)  =  0 ,  X ,  <. ( 2nd `  X ) ,  (  mod  `  X
) >. )  =  <. ( 2nd `  X ) ,  (  mod  `  X
) >. )
2726fveq2d 5425 . . . . 5  |-  ( ( X  e.  ( NN0 
X.  NN0 )  /\  ( 2nd `  X )  e.  NN )  ->  (  gcd  `  if ( ( 2nd `  X )  =  0 ,  X ,  <. ( 2nd `  X
) ,  (  mod  `  X ) >. )
)  =  (  gcd  `  <. ( 2nd `  X
) ,  (  mod  `  X ) >. )
)
28 df-ov 5777 . . . . 5  |-  ( ( 2nd `  X )  gcd  (  mod  `  X
) )  =  (  gcd  `  <. ( 2nd `  X ) ,  (  mod  `  X ) >. )
2927, 28syl6eqr 2190 . . . 4  |-  ( ( X  e.  ( NN0 
X.  NN0 )  /\  ( 2nd `  X )  e.  NN )  ->  (  gcd  `  if ( ( 2nd `  X )  =  0 ,  X ,  <. ( 2nd `  X
) ,  (  mod  `  X ) >. )
)  =  ( ( 2nd `  X )  gcd  (  mod  `  X
) ) )
305fveq2d 5425 . . . . 5  |-  ( ( X  e.  ( NN0 
X.  NN0 )  /\  ( 2nd `  X )  e.  NN )  ->  (  gcd  `  X )  =  (  gcd  `  <. ( 1st `  X ) ,  ( 2nd `  X
) >. ) )
31 df-ov 5777 . . . . 5  |-  ( ( 1st `  X )  gcd  ( 2nd `  X
) )  =  (  gcd  `  <. ( 1st `  X ) ,  ( 2nd `  X )
>. )
3230, 31syl6eqr 2190 . . . 4  |-  ( ( X  e.  ( NN0 
X.  NN0 )  /\  ( 2nd `  X )  e.  NN )  ->  (  gcd  `  X )  =  ( ( 1st `  X
)  gcd  ( 2nd `  X ) ) )
3322, 29, 323eqtr4d 2182 . . 3  |-  ( ( X  e.  ( NN0 
X.  NN0 )  /\  ( 2nd `  X )  e.  NN )  ->  (  gcd  `  if ( ( 2nd `  X )  =  0 ,  X ,  <. ( 2nd `  X
) ,  (  mod  `  X ) >. )
)  =  (  gcd  `  X ) )
34 iftrue 3479 . . . . 5  |-  ( ( 2nd `  X )  =  0  ->  if ( ( 2nd `  X
)  =  0 ,  X ,  <. ( 2nd `  X ) ,  (  mod  `  X
) >. )  =  X )
3534fveq2d 5425 . . . 4  |-  ( ( 2nd `  X )  =  0  ->  (  gcd  `  if ( ( 2nd `  X )  =  0 ,  X ,  <. ( 2nd `  X
) ,  (  mod  `  X ) >. )
)  =  (  gcd  `  X ) )
3635adantl 275 . . 3  |-  ( ( X  e.  ( NN0 
X.  NN0 )  /\  ( 2nd `  X )  =  0 )  ->  (  gcd  `  if ( ( 2nd `  X )  =  0 ,  X ,  <. ( 2nd `  X
) ,  (  mod  `  X ) >. )
)  =  (  gcd  `  X ) )
37 xp2nd 6064 . . . 4  |-  ( X  e.  ( NN0  X.  NN0 )  ->  ( 2nd `  X )  e.  NN0 )
38 elnn0 8979 . . . 4  |-  ( ( 2nd `  X )  e.  NN0  <->  ( ( 2nd `  X )  e.  NN  \/  ( 2nd `  X
)  =  0 ) )
3937, 38sylib 121 . . 3  |-  ( X  e.  ( NN0  X.  NN0 )  ->  ( ( 2nd `  X )  e.  NN  \/  ( 2nd `  X )  =  0 ) )
4033, 36, 39mpjaodan 787 . 2  |-  ( X  e.  ( NN0  X.  NN0 )  ->  (  gcd  `  if ( ( 2nd `  X )  =  0 ,  X ,  <. ( 2nd `  X ) ,  (  mod  `  X
) >. ) )  =  (  gcd  `  X
) )
413, 40eqtrd 2172 1  |-  ( X  e.  ( NN0  X.  NN0 )  ->  (  gcd  `  ( E `  X
) )  =  (  gcd  `  X )
)
Colors of variables: wff set class
Syntax hints:    -> wi 4    /\ wa 103    \/ wo 697    = wceq 1331    e. wcel 1480    =/= wne 2308   ifcif 3474   <.cop 3530    X. cxp 4537   ` cfv 5123  (class class class)co 5774    e. cmpo 5776   1stc1st 6036   2ndc2nd 6037   0cc0 7620   NNcn 8720   NN0cn0 8977   ZZcz 9054    mod cmo 10095    gcd cgcd 11635
This theorem was proved from axioms:  ax-mp 5  ax-1 6  ax-2 7  ax-ia1 105  ax-ia2 106  ax-ia3 107  ax-in1 603  ax-in2 604  ax-io 698  ax-5 1423  ax-7 1424  ax-gen 1425  ax-ie1 1469  ax-ie2 1470  ax-8 1482  ax-10 1483  ax-11 1484  ax-i12 1485  ax-bndl 1486  ax-4 1487  ax-13 1491  ax-14 1492  ax-17 1506  ax-i9 1510  ax-ial 1514  ax-i5r 1515  ax-ext 2121  ax-coll 4043  ax-sep 4046  ax-nul 4054  ax-pow 4098  ax-pr 4131  ax-un 4355  ax-setind 4452  ax-iinf 4502  ax-cnex 7711  ax-resscn 7712  ax-1cn 7713  ax-1re 7714  ax-icn 7715  ax-addcl 7716  ax-addrcl 7717  ax-mulcl 7718  ax-mulrcl 7719  ax-addcom 7720  ax-mulcom 7721  ax-addass 7722  ax-mulass 7723  ax-distr 7724  ax-i2m1 7725  ax-0lt1 7726  ax-1rid 7727  ax-0id 7728  ax-rnegex 7729  ax-precex 7730  ax-cnre 7731  ax-pre-ltirr 7732  ax-pre-ltwlin 7733  ax-pre-lttrn 7734  ax-pre-apti 7735  ax-pre-ltadd 7736  ax-pre-mulgt0 7737  ax-pre-mulext 7738  ax-arch 7739  ax-caucvg 7740
This theorem depends on definitions:  df-bi 116  df-stab 816  df-dc 820  df-3or 963  df-3an 964  df-tru 1334  df-fal 1337  df-nf 1437  df-sb 1736  df-eu 2002  df-mo 2003  df-clab 2126  df-cleq 2132  df-clel 2135  df-nfc 2270  df-ne 2309  df-nel 2404  df-ral 2421  df-rex 2422  df-reu 2423  df-rmo 2424  df-rab 2425  df-v 2688  df-sbc 2910  df-csb 3004  df-dif 3073  df-un 3075  df-in 3077  df-ss 3084  df-nul 3364  df-if 3475  df-pw 3512  df-sn 3533  df-pr 3534  df-op 3536  df-uni 3737  df-int 3772  df-iun 3815  df-br 3930  df-opab 3990  df-mpt 3991  df-tr 4027  df-id 4215  df-po 4218  df-iso 4219  df-iord 4288  df-on 4290  df-ilim 4291  df-suc 4293  df-iom 4505  df-xp 4545  df-rel 4546  df-cnv 4547  df-co 4548  df-dm 4549  df-rn 4550  df-res 4551  df-ima 4552  df-iota 5088  df-fun 5125  df-fn 5126  df-f 5127  df-f1 5128  df-fo 5129  df-f1o 5130  df-fv 5131  df-riota 5730  df-ov 5777  df-oprab 5778  df-mpo 5779  df-1st 6038  df-2nd 6039  df-recs 6202  df-frec 6288  df-sup 6871  df-pnf 7802  df-mnf 7803  df-xr 7804  df-ltxr 7805  df-le 7806  df-sub 7935  df-neg 7936  df-reap 8337  df-ap 8344  df-div 8433  df-inn 8721  df-2 8779  df-3 8780  df-4 8781  df-n0 8978  df-z 9055  df-uz 9327  df-q 9412  df-rp 9442  df-fz 9791  df-fzo 9920  df-fl 10043  df-mod 10096  df-seqfrec 10219  df-exp 10293  df-cj 10614  df-re 10615  df-im 10616  df-rsqrt 10770  df-abs 10771  df-dvds 11494  df-gcd 11636
This theorem is referenced by:  eucalg  11740
  Copyright terms: Public domain W3C validator