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

Theorem eucalgval 12008
Description: Euclid's Algorithm eucalg 12013 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 5856 . . 3  |-  ( ( 1st `  X ) E ( 2nd `  X
) )  =  ( E `  <. ( 1st `  X ) ,  ( 2nd `  X
) >. )
2 xp1st 6144 . . . 4  |-  ( X  e.  ( NN0  X.  NN0 )  ->  ( 1st `  X )  e.  NN0 )
3 xp2nd 6145 . . . 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 12007 . . . 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 409 . . 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 2217 . 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 6154 . . 3  |-  ( X  e.  ( NN0  X.  NN0 )  ->  X  = 
<. ( 1st `  X
) ,  ( 2nd `  X ) >. )
98fveq2d 5500 . 2  |-  ( X  e.  ( NN0  X.  NN0 )  ->  ( E `
 X )  =  ( E `  <. ( 1st `  X ) ,  ( 2nd `  X
) >. ) )
108fveq2d 5500 . . . . 5  |-  ( X  e.  ( NN0  X.  NN0 )  ->  (  mod  `  X )  =  (  mod  `  <. ( 1st `  X ) ,  ( 2nd `  X )
>. ) )
11 df-ov 5856 . . . . 5  |-  ( ( 1st `  X )  mod  ( 2nd `  X
) )  =  (  mod  `  <. ( 1st `  X ) ,  ( 2nd `  X )
>. )
1210, 11eqtr4di 2221 . . . 4  |-  ( X  e.  ( NN0  X.  NN0 )  ->  (  mod  `  X )  =  ( ( 1st `  X
)  mod  ( 2nd `  X ) ) )
1312opeq2d 3772 . . 3  |-  ( X  e.  ( NN0  X.  NN0 )  ->  <. ( 2nd `  X ) ,  (  mod  `  X
) >.  =  <. ( 2nd `  X ) ,  ( ( 1st `  X
)  mod  ( 2nd `  X ) ) >.
)
148, 13ifeq12d 3545 . 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 2213 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 1348    e. wcel 2141   ifcif 3526   <.cop 3586    X. cxp 4609   ` cfv 5198  (class class class)co 5853    e. cmpo 5855   1stc1st 6117   2ndc2nd 6118   0cc0 7774   NN0cn0 9135    mod cmo 10278
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 609  ax-in2 610  ax-io 704  ax-5 1440  ax-7 1441  ax-gen 1442  ax-ie1 1486  ax-ie2 1487  ax-8 1497  ax-10 1498  ax-11 1499  ax-i12 1500  ax-bndl 1502  ax-4 1503  ax-17 1519  ax-i9 1523  ax-ial 1527  ax-i5r 1528  ax-13 2143  ax-14 2144  ax-ext 2152  ax-sep 4107  ax-pow 4160  ax-pr 4194  ax-un 4418  ax-setind 4521  ax-cnex 7865  ax-resscn 7866  ax-1cn 7867  ax-1re 7868  ax-icn 7869  ax-addcl 7870  ax-addrcl 7871  ax-mulcl 7872  ax-mulrcl 7873  ax-addcom 7874  ax-mulcom 7875  ax-addass 7876  ax-mulass 7877  ax-distr 7878  ax-i2m1 7879  ax-0lt1 7880  ax-1rid 7881  ax-0id 7882  ax-rnegex 7883  ax-precex 7884  ax-cnre 7885  ax-pre-ltirr 7886  ax-pre-ltwlin 7887  ax-pre-lttrn 7888  ax-pre-apti 7889  ax-pre-ltadd 7890  ax-pre-mulgt0 7891  ax-pre-mulext 7892  ax-arch 7893
This theorem depends on definitions:  df-bi 116  df-dc 830  df-3or 974  df-3an 975  df-tru 1351  df-fal 1354  df-nf 1454  df-sb 1756  df-eu 2022  df-mo 2023  df-clab 2157  df-cleq 2163  df-clel 2166  df-nfc 2301  df-ne 2341  df-nel 2436  df-ral 2453  df-rex 2454  df-reu 2455  df-rmo 2456  df-rab 2457  df-v 2732  df-sbc 2956  df-csb 3050  df-dif 3123  df-un 3125  df-in 3127  df-ss 3134  df-nul 3415  df-if 3527  df-pw 3568  df-sn 3589  df-pr 3590  df-op 3592  df-uni 3797  df-int 3832  df-iun 3875  df-br 3990  df-opab 4051  df-mpt 4052  df-id 4278  df-po 4281  df-iso 4282  df-xp 4617  df-rel 4618  df-cnv 4619  df-co 4620  df-dm 4621  df-rn 4622  df-res 4623  df-ima 4624  df-iota 5160  df-fun 5200  df-fn 5201  df-f 5202  df-fv 5206  df-riota 5809  df-ov 5856  df-oprab 5857  df-mpo 5858  df-1st 6119  df-2nd 6120  df-pnf 7956  df-mnf 7957  df-xr 7958  df-ltxr 7959  df-le 7960  df-sub 8092  df-neg 8093  df-reap 8494  df-ap 8501  df-div 8590  df-inn 8879  df-n0 9136  df-z 9213  df-q 9579  df-rp 9611  df-fl 10226  df-mod 10279
This theorem is referenced by:  eucalginv  12010  eucalglt  12011
  Copyright terms: Public domain W3C validator