MPE Home Metamath Proof Explorer < Previous   Next >
Nearby theorems
Mirrors  >  Home  >  MPE Home  >  Th. List  >  eucalglt Structured version   Unicode version

Theorem eucalglt 14482
Description: The second member of the state decreases with each iteration of the step function  E for Euclid's Algorithm. (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
eucalglt  |-  ( X  e.  ( NN0  X.  NN0 )  ->  ( ( 2nd `  ( E `
 X ) )  =/=  0  ->  ( 2nd `  ( E `  X ) )  < 
( 2nd `  X
) ) )
Distinct variable group:    x, y, X
Allowed substitution hints:    E( x, y)

Proof of Theorem eucalglt
StepHypRef Expression
1 eucalgval.1 . . . . . . . . 9  |-  E  =  ( x  e.  NN0 ,  y  e.  NN0  |->  if ( y  =  0 , 
<. x ,  y >. ,  <. y ,  ( x  mod  y )
>. ) )
21eucalgval 14479 . . . . . . . 8  |-  ( X  e.  ( NN0  X.  NN0 )  ->  ( E `
 X )  =  if ( ( 2nd `  X )  =  0 ,  X ,  <. ( 2nd `  X ) ,  (  mod  `  X
) >. ) )
32adantr 466 . . . . . . 7  |-  ( ( X  e.  ( NN0 
X.  NN0 )  /\  ( 2nd `  ( E `  X ) )  =/=  0 )  ->  ( E `  X )  =  if ( ( 2nd `  X )  =  0 ,  X ,  <. ( 2nd `  X ) ,  (  mod  `  X
) >. ) )
4 simpr 462 . . . . . . . . 9  |-  ( ( X  e.  ( NN0 
X.  NN0 )  /\  ( 2nd `  ( E `  X ) )  =/=  0 )  ->  ( 2nd `  ( E `  X ) )  =/=  0 )
5 iftrue 3855 . . . . . . . . . . . . . 14  |-  ( ( 2nd `  X )  =  0  ->  if ( ( 2nd `  X
)  =  0 ,  X ,  <. ( 2nd `  X ) ,  (  mod  `  X
) >. )  =  X )
65eqeq2d 2433 . . . . . . . . . . . . 13  |-  ( ( 2nd `  X )  =  0  ->  (
( E `  X
)  =  if ( ( 2nd `  X
)  =  0 ,  X ,  <. ( 2nd `  X ) ,  (  mod  `  X
) >. )  <->  ( E `  X )  =  X ) )
7 fveq2 5820 . . . . . . . . . . . . 13  |-  ( ( E `  X )  =  X  ->  ( 2nd `  ( E `  X ) )  =  ( 2nd `  X
) )
86, 7syl6bi 231 . . . . . . . . . . . 12  |-  ( ( 2nd `  X )  =  0  ->  (
( E `  X
)  =  if ( ( 2nd `  X
)  =  0 ,  X ,  <. ( 2nd `  X ) ,  (  mod  `  X
) >. )  ->  ( 2nd `  ( E `  X ) )  =  ( 2nd `  X
) ) )
9 eqeq2 2434 . . . . . . . . . . . 12  |-  ( ( 2nd `  X )  =  0  ->  (
( 2nd `  ( E `  X )
)  =  ( 2nd `  X )  <->  ( 2nd `  ( E `  X
) )  =  0 ) )
108, 9sylibd 217 . . . . . . . . . . 11  |-  ( ( 2nd `  X )  =  0  ->  (
( E `  X
)  =  if ( ( 2nd `  X
)  =  0 ,  X ,  <. ( 2nd `  X ) ,  (  mod  `  X
) >. )  ->  ( 2nd `  ( E `  X ) )  =  0 ) )
113, 10syl5com 31 . . . . . . . . . 10  |-  ( ( X  e.  ( NN0 
X.  NN0 )  /\  ( 2nd `  ( E `  X ) )  =/=  0 )  ->  (
( 2nd `  X
)  =  0  -> 
( 2nd `  ( E `  X )
)  =  0 ) )
1211necon3ad 2609 . . . . . . . . 9  |-  ( ( X  e.  ( NN0 
X.  NN0 )  /\  ( 2nd `  ( E `  X ) )  =/=  0 )  ->  (
( 2nd `  ( E `  X )
)  =/=  0  ->  -.  ( 2nd `  X
)  =  0 ) )
134, 12mpd 15 . . . . . . . 8  |-  ( ( X  e.  ( NN0 
X.  NN0 )  /\  ( 2nd `  ( E `  X ) )  =/=  0 )  ->  -.  ( 2nd `  X )  =  0 )
1413iffalsed 3860 . . . . . . 7  |-  ( ( X  e.  ( NN0 
X.  NN0 )  /\  ( 2nd `  ( E `  X ) )  =/=  0 )  ->  if ( ( 2nd `  X
)  =  0 ,  X ,  <. ( 2nd `  X ) ,  (  mod  `  X
) >. )  =  <. ( 2nd `  X ) ,  (  mod  `  X
) >. )
153, 14eqtrd 2457 . . . . . 6  |-  ( ( X  e.  ( NN0 
X.  NN0 )  /\  ( 2nd `  ( E `  X ) )  =/=  0 )  ->  ( E `  X )  =  <. ( 2nd `  X
) ,  (  mod  `  X ) >. )
1615fveq2d 5824 . . . . 5  |-  ( ( X  e.  ( NN0 
X.  NN0 )  /\  ( 2nd `  ( E `  X ) )  =/=  0 )  ->  ( 2nd `  ( E `  X ) )  =  ( 2nd `  <. ( 2nd `  X ) ,  (  mod  `  X
) >. ) )
17 fvex 5830 . . . . . 6  |-  ( 2nd `  X )  e.  _V
18 fvex 5830 . . . . . 6  |-  (  mod  `  X )  e.  _V
1917, 18op2nd 6755 . . . . 5  |-  ( 2nd `  <. ( 2nd `  X
) ,  (  mod  `  X ) >. )  =  (  mod  `  X
)
2016, 19syl6eq 2473 . . . 4  |-  ( ( X  e.  ( NN0 
X.  NN0 )  /\  ( 2nd `  ( E `  X ) )  =/=  0 )  ->  ( 2nd `  ( E `  X ) )  =  (  mod  `  X
) )
21 1st2nd2 6783 . . . . . . 7  |-  ( X  e.  ( NN0  X.  NN0 )  ->  X  = 
<. ( 1st `  X
) ,  ( 2nd `  X ) >. )
2221adantr 466 . . . . . 6  |-  ( ( X  e.  ( NN0 
X.  NN0 )  /\  ( 2nd `  ( E `  X ) )  =/=  0 )  ->  X  =  <. ( 1st `  X
) ,  ( 2nd `  X ) >. )
2322fveq2d 5824 . . . . 5  |-  ( ( X  e.  ( NN0 
X.  NN0 )  /\  ( 2nd `  ( E `  X ) )  =/=  0 )  ->  (  mod  `  X )  =  (  mod  `  <. ( 1st `  X ) ,  ( 2nd `  X
) >. ) )
24 df-ov 6247 . . . . 5  |-  ( ( 1st `  X )  mod  ( 2nd `  X
) )  =  (  mod  `  <. ( 1st `  X ) ,  ( 2nd `  X )
>. )
2523, 24syl6eqr 2475 . . . 4  |-  ( ( X  e.  ( NN0 
X.  NN0 )  /\  ( 2nd `  ( E `  X ) )  =/=  0 )  ->  (  mod  `  X )  =  ( ( 1st `  X
)  mod  ( 2nd `  X ) ) )
2620, 25eqtrd 2457 . . 3  |-  ( ( X  e.  ( NN0 
X.  NN0 )  /\  ( 2nd `  ( E `  X ) )  =/=  0 )  ->  ( 2nd `  ( E `  X ) )  =  ( ( 1st `  X
)  mod  ( 2nd `  X ) ) )
27 xp1st 6776 . . . . . 6  |-  ( X  e.  ( NN0  X.  NN0 )  ->  ( 1st `  X )  e.  NN0 )
2827adantr 466 . . . . 5  |-  ( ( X  e.  ( NN0 
X.  NN0 )  /\  ( 2nd `  ( E `  X ) )  =/=  0 )  ->  ( 1st `  X )  e. 
NN0 )
2928nn0red 10872 . . . 4  |-  ( ( X  e.  ( NN0 
X.  NN0 )  /\  ( 2nd `  ( E `  X ) )  =/=  0 )  ->  ( 1st `  X )  e.  RR )
30 xp2nd 6777 . . . . . . . . 9  |-  ( X  e.  ( NN0  X.  NN0 )  ->  ( 2nd `  X )  e.  NN0 )
3130adantr 466 . . . . . . . 8  |-  ( ( X  e.  ( NN0 
X.  NN0 )  /\  ( 2nd `  ( E `  X ) )  =/=  0 )  ->  ( 2nd `  X )  e. 
NN0 )
32 elnn0 10817 . . . . . . . 8  |-  ( ( 2nd `  X )  e.  NN0  <->  ( ( 2nd `  X )  e.  NN  \/  ( 2nd `  X
)  =  0 ) )
3331, 32sylib 199 . . . . . . 7  |-  ( ( X  e.  ( NN0 
X.  NN0 )  /\  ( 2nd `  ( E `  X ) )  =/=  0 )  ->  (
( 2nd `  X
)  e.  NN  \/  ( 2nd `  X )  =  0 ) )
3433ord 378 . . . . . 6  |-  ( ( X  e.  ( NN0 
X.  NN0 )  /\  ( 2nd `  ( E `  X ) )  =/=  0 )  ->  ( -.  ( 2nd `  X
)  e.  NN  ->  ( 2nd `  X )  =  0 ) )
3513, 34mt3d 128 . . . . 5  |-  ( ( X  e.  ( NN0 
X.  NN0 )  /\  ( 2nd `  ( E `  X ) )  =/=  0 )  ->  ( 2nd `  X )  e.  NN )
3635nnrpd 11285 . . . 4  |-  ( ( X  e.  ( NN0 
X.  NN0 )  /\  ( 2nd `  ( E `  X ) )  =/=  0 )  ->  ( 2nd `  X )  e.  RR+ )
37 modlt 12052 . . . 4  |-  ( ( ( 1st `  X
)  e.  RR  /\  ( 2nd `  X )  e.  RR+ )  ->  (
( 1st `  X
)  mod  ( 2nd `  X ) )  < 
( 2nd `  X
) )
3829, 36, 37syl2anc 665 . . 3  |-  ( ( X  e.  ( NN0 
X.  NN0 )  /\  ( 2nd `  ( E `  X ) )  =/=  0 )  ->  (
( 1st `  X
)  mod  ( 2nd `  X ) )  < 
( 2nd `  X
) )
3926, 38eqbrtrd 4382 . 2  |-  ( ( X  e.  ( NN0 
X.  NN0 )  /\  ( 2nd `  ( E `  X ) )  =/=  0 )  ->  ( 2nd `  ( E `  X ) )  < 
( 2nd `  X
) )
4039ex 435 1  |-  ( X  e.  ( NN0  X.  NN0 )  ->  ( ( 2nd `  ( E `
 X ) )  =/=  0  ->  ( 2nd `  ( E `  X ) )  < 
( 2nd `  X
) ) )
Colors of variables: wff setvar class
Syntax hints:   -. wn 3    -> wi 4    \/ wo 369    /\ wa 370    = wceq 1437    e. wcel 1872    =/= wne 2594   ifcif 3849   <.cop 3942   class class class wbr 4361    X. cxp 4789   ` cfv 5539  (class class class)co 6244    |-> cmpt2 6246   1stc1st 6744   2ndc2nd 6745   RRcr 9484   0cc0 9485    < clt 9621   NNcn 10555   NN0cn0 10815   RR+crp 11248    mod cmo 12041
This theorem was proved from axioms:  ax-mp 5  ax-1 6  ax-2 7  ax-3 8  ax-gen 1663  ax-4 1676  ax-5 1752  ax-6 1798  ax-7 1843  ax-8 1874  ax-9 1876  ax-10 1891  ax-11 1896  ax-12 1909  ax-13 2058  ax-ext 2403  ax-sep 4484  ax-nul 4493  ax-pow 4540  ax-pr 4598  ax-un 6536  ax-cnex 9541  ax-resscn 9542  ax-1cn 9543  ax-icn 9544  ax-addcl 9545  ax-addrcl 9546  ax-mulcl 9547  ax-mulrcl 9548  ax-mulcom 9549  ax-addass 9550  ax-mulass 9551  ax-distr 9552  ax-i2m1 9553  ax-1ne0 9554  ax-1rid 9555  ax-rnegex 9556  ax-rrecex 9557  ax-cnre 9558  ax-pre-lttri 9559  ax-pre-lttrn 9560  ax-pre-ltadd 9561  ax-pre-mulgt0 9562  ax-pre-sup 9563
This theorem depends on definitions:  df-bi 188  df-or 371  df-an 372  df-3or 983  df-3an 984  df-tru 1440  df-ex 1658  df-nf 1662  df-sb 1791  df-eu 2275  df-mo 2276  df-clab 2410  df-cleq 2416  df-clel 2419  df-nfc 2553  df-ne 2596  df-nel 2597  df-ral 2714  df-rex 2715  df-reu 2716  df-rmo 2717  df-rab 2718  df-v 3019  df-sbc 3238  df-csb 3334  df-dif 3377  df-un 3379  df-in 3381  df-ss 3388  df-pss 3390  df-nul 3700  df-if 3850  df-pw 3921  df-sn 3937  df-pr 3939  df-tp 3941  df-op 3943  df-uni 4158  df-iun 4239  df-br 4362  df-opab 4421  df-mpt 4422  df-tr 4457  df-eprel 4702  df-id 4706  df-po 4712  df-so 4713  df-fr 4750  df-we 4752  df-xp 4797  df-rel 4798  df-cnv 4799  df-co 4800  df-dm 4801  df-rn 4802  df-res 4803  df-ima 4804  df-pred 5337  df-ord 5383  df-on 5384  df-lim 5385  df-suc 5386  df-iota 5503  df-fun 5541  df-fn 5542  df-f 5543  df-f1 5544  df-fo 5545  df-f1o 5546  df-fv 5547  df-riota 6206  df-ov 6247  df-oprab 6248  df-mpt2 6249  df-om 6646  df-1st 6746  df-2nd 6747  df-wrecs 6978  df-recs 7040  df-rdg 7078  df-er 7313  df-en 7520  df-dom 7521  df-sdom 7522  df-sup 7904  df-inf 7905  df-pnf 9623  df-mnf 9624  df-xr 9625  df-ltxr 9626  df-le 9627  df-sub 9808  df-neg 9809  df-div 10216  df-nn 10556  df-n0 10816  df-z 10884  df-uz 11106  df-rp 11249  df-fl 11973  df-mod 12042
This theorem is referenced by:  eucalgcvga  14483
  Copyright terms: Public domain W3C validator