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

Theorem eucalgval 12571
Description: Euclid's Algorithm eucalg 12576 computes the greatest common divisor of two nonnegative integers by repeatedly replacing the larger of them with its remainder modulo the smaller until the remainder is 0.

The value of the step function  E for Euclid's Algorithm. (Contributed by Paul Chapman, 31-Mar-2011.) (Revised by Mario Carneiro, 28-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
eucalgval  |-  ( X  e.  ( NN0  X.  NN0 )  ->  ( E `
 X )  =  if ( ( 2nd `  X )  =  0 ,  X ,  <. ( 2nd `  X ) ,  (  mod  `  X
) >. ) )
Distinct variable group:    x, y, X
Allowed substitution hints:    E( x, y)

Proof of Theorem eucalgval
StepHypRef Expression
1 df-ov 6003 . . 3  |-  ( ( 1st `  X ) E ( 2nd `  X
) )  =  ( E `  <. ( 1st `  X ) ,  ( 2nd `  X
) >. )
2 xp1st 6309 . . . 4  |-  ( X  e.  ( NN0  X.  NN0 )  ->  ( 1st `  X )  e.  NN0 )
3 xp2nd 6310 . . . 4  |-  ( X  e.  ( NN0  X.  NN0 )  ->  ( 2nd `  X )  e.  NN0 )
4 eucalgval.1 . . . . 5  |-  E  =  ( x  e.  NN0 ,  y  e.  NN0  |->  if ( y  =  0 , 
<. x ,  y >. ,  <. y ,  ( x  mod  y )
>. ) )
54eucalgval2 12570 . . . 4  |-  ( ( ( 1st `  X
)  e.  NN0  /\  ( 2nd `  X )  e.  NN0 )  -> 
( ( 1st `  X
) E ( 2nd `  X ) )  =  if ( ( 2nd `  X )  =  0 ,  <. ( 1st `  X
) ,  ( 2nd `  X ) >. ,  <. ( 2nd `  X ) ,  ( ( 1st `  X )  mod  ( 2nd `  X ) )
>. ) )
62, 3, 5syl2anc 411 . . 3  |-  ( X  e.  ( NN0  X.  NN0 )  ->  ( ( 1st `  X ) E ( 2nd `  X
) )  =  if ( ( 2nd `  X
)  =  0 , 
<. ( 1st `  X
) ,  ( 2nd `  X ) >. ,  <. ( 2nd `  X ) ,  ( ( 1st `  X )  mod  ( 2nd `  X ) )
>. ) )
71, 6eqtr3id 2276 . 2  |-  ( X  e.  ( NN0  X.  NN0 )  ->  ( E `
 <. ( 1st `  X
) ,  ( 2nd `  X ) >. )  =  if ( ( 2nd `  X )  =  0 ,  <. ( 1st `  X
) ,  ( 2nd `  X ) >. ,  <. ( 2nd `  X ) ,  ( ( 1st `  X )  mod  ( 2nd `  X ) )
>. ) )
8 1st2nd2 6319 . . 3  |-  ( X  e.  ( NN0  X.  NN0 )  ->  X  = 
<. ( 1st `  X
) ,  ( 2nd `  X ) >. )
98fveq2d 5630 . 2  |-  ( X  e.  ( NN0  X.  NN0 )  ->  ( E `
 X )  =  ( E `  <. ( 1st `  X ) ,  ( 2nd `  X
) >. ) )
108fveq2d 5630 . . . . 5  |-  ( X  e.  ( NN0  X.  NN0 )  ->  (  mod  `  X )  =  (  mod  `  <. ( 1st `  X ) ,  ( 2nd `  X )
>. ) )
11 df-ov 6003 . . . . 5  |-  ( ( 1st `  X )  mod  ( 2nd `  X
) )  =  (  mod  `  <. ( 1st `  X ) ,  ( 2nd `  X )
>. )
1210, 11eqtr4di 2280 . . . 4  |-  ( X  e.  ( NN0  X.  NN0 )  ->  (  mod  `  X )  =  ( ( 1st `  X
)  mod  ( 2nd `  X ) ) )
1312opeq2d 3863 . . 3  |-  ( X  e.  ( NN0  X.  NN0 )  ->  <. ( 2nd `  X ) ,  (  mod  `  X
) >.  =  <. ( 2nd `  X ) ,  ( ( 1st `  X
)  mod  ( 2nd `  X ) ) >.
)
148, 13ifeq12d 3622 . 2  |-  ( X  e.  ( NN0  X.  NN0 )  ->  if ( ( 2nd `  X
)  =  0 ,  X ,  <. ( 2nd `  X ) ,  (  mod  `  X
) >. )  =  if ( ( 2nd `  X
)  =  0 , 
<. ( 1st `  X
) ,  ( 2nd `  X ) >. ,  <. ( 2nd `  X ) ,  ( ( 1st `  X )  mod  ( 2nd `  X ) )
>. ) )
157, 9, 143eqtr4d 2272 1  |-  ( X  e.  ( NN0  X.  NN0 )  ->  ( E `
 X )  =  if ( ( 2nd `  X )  =  0 ,  X ,  <. ( 2nd `  X ) ,  (  mod  `  X
) >. ) )
Colors of variables: wff set class
Syntax hints:    -> wi 4    = wceq 1395    e. wcel 2200   ifcif 3602   <.cop 3669    X. cxp 4716   ` cfv 5317  (class class class)co 6000    e. cmpo 6002   1stc1st 6282   2ndc2nd 6283   0cc0 7995   NN0cn0 9365    mod cmo 10539
This theorem was proved from axioms:  ax-mp 5  ax-1 6  ax-2 7  ax-ia1 106  ax-ia2 107  ax-ia3 108  ax-in1 617  ax-in2 618  ax-io 714  ax-5 1493  ax-7 1494  ax-gen 1495  ax-ie1 1539  ax-ie2 1540  ax-8 1550  ax-10 1551  ax-11 1552  ax-i12 1553  ax-bndl 1555  ax-4 1556  ax-17 1572  ax-i9 1576  ax-ial 1580  ax-i5r 1581  ax-13 2202  ax-14 2203  ax-ext 2211  ax-sep 4201  ax-pow 4257  ax-pr 4292  ax-un 4523  ax-setind 4628  ax-cnex 8086  ax-resscn 8087  ax-1cn 8088  ax-1re 8089  ax-icn 8090  ax-addcl 8091  ax-addrcl 8092  ax-mulcl 8093  ax-mulrcl 8094  ax-addcom 8095  ax-mulcom 8096  ax-addass 8097  ax-mulass 8098  ax-distr 8099  ax-i2m1 8100  ax-0lt1 8101  ax-1rid 8102  ax-0id 8103  ax-rnegex 8104  ax-precex 8105  ax-cnre 8106  ax-pre-ltirr 8107  ax-pre-ltwlin 8108  ax-pre-lttrn 8109  ax-pre-apti 8110  ax-pre-ltadd 8111  ax-pre-mulgt0 8112  ax-pre-mulext 8113  ax-arch 8114
This theorem depends on definitions:  df-bi 117  df-dc 840  df-3or 1003  df-3an 1004  df-tru 1398  df-fal 1401  df-nf 1507  df-sb 1809  df-eu 2080  df-mo 2081  df-clab 2216  df-cleq 2222  df-clel 2225  df-nfc 2361  df-ne 2401  df-nel 2496  df-ral 2513  df-rex 2514  df-reu 2515  df-rmo 2516  df-rab 2517  df-v 2801  df-sbc 3029  df-csb 3125  df-dif 3199  df-un 3201  df-in 3203  df-ss 3210  df-nul 3492  df-if 3603  df-pw 3651  df-sn 3672  df-pr 3673  df-op 3675  df-uni 3888  df-int 3923  df-iun 3966  df-br 4083  df-opab 4145  df-mpt 4146  df-id 4383  df-po 4386  df-iso 4387  df-xp 4724  df-rel 4725  df-cnv 4726  df-co 4727  df-dm 4728  df-rn 4729  df-res 4730  df-ima 4731  df-iota 5277  df-fun 5319  df-fn 5320  df-f 5321  df-fv 5325  df-riota 5953  df-ov 6003  df-oprab 6004  df-mpo 6005  df-1st 6284  df-2nd 6285  df-pnf 8179  df-mnf 8180  df-xr 8181  df-ltxr 8182  df-le 8183  df-sub 8315  df-neg 8316  df-reap 8718  df-ap 8725  df-div 8816  df-inn 9107  df-n0 9366  df-z 9443  df-q 9811  df-rp 9846  df-fl 10485  df-mod 10540
This theorem is referenced by:  eucalginv  12573  eucalglt  12574
  Copyright terms: Public domain W3C validator