Table of ContentsTable of Contents Mathbox for Paul Chapman < Previous   Next >
Related theorems
Unicode version

Theorem eucalginv 13752
Description: The invariant of the step function E for Euclid's Algorithm is the gcd of the state. (Contributed by Paul Chapman, 31-Mar-2011.)
Hypothesis
Ref Expression
eucalgval.1 |- E = {<.x, y>. | (x e. (NN0 X. NN0) /\ y = if((2nd` x) = 0, x, <.(2nd` x), ( mod ` x)>.))}
Assertion
Ref Expression
eucalginv |- (X e. (NN0 X. NN0) -> ( gcd ` (E` X)) = ( gcd ` X))
Distinct variable group:   x,y

Proof of Theorem eucalginv
StepHypRef Expression
1 elxp2 4019 . 2 |- (X e. (NN0 X. NN0) <-> E.m e. NN0 E.n e. NN0 X = <.m, n>.)
2 fveq2 4681 . . . . . 6 |- (X = <.m, n>. -> (E` X) = (E` <.m, n>.))
32fveq2d 4685 . . . . 5 |- (X = <.m, n>. -> ( gcd ` (E` X)) = ( gcd ` (E` <.m, n>.)))
4 fveq2 4681 . . . . 5 |- (X = <.m, n>. -> ( gcd ` X) = ( gcd `
<.m, n>.))
53, 4eqeq12d 1899 . . . 4 |- (X = <.m, n>. -> (( gcd ` (E` X)) = ( gcd ` X) <-> ( gcd ` (E` <.m, n>.)) = ( gcd ` <.m, n>.)))
6 eucalgval.1 . . . . . . . 8 |- E = {<.x, y>. | (x e. (NN0 X. NN0) /\ y = if((2nd` x) = 0, x, <.(2nd` x), ( mod ` x)>.))}
76eucalgval2 13750 . . . . . . 7 |- ((m e. NN0 /\ n e. NN0) -> (E` <.m, n>.) = if(n = 0, <.m, n>., <.n, (m mod n)>.))
8 iftrue 2989 . . . . . . 7 |- (n = 0 -> if(n = 0, <.m, n>., <.n, (m mod n)>.) = <.m, n>.)
97, 8sylan9eq 1948 . . . . . 6 |- (((m e. NN0 /\ n e. NN0) /\ n = 0) -> (E` <.m, n>.) = <.m, n>.)
109fveq2d 4685 . . . . 5 |- (((m e. NN0 /\ n e. NN0) /\ n = 0) -> ( gcd ` (E` <.m, n>.)) = ( gcd ` <.m, n>.))
11 iffalse 2991 . . . . . . . 8 |- (-. n = 0 -> if(n = 0, <.m, n>., <.n, (m mod n)>.) = <.n, (m mod n)>.)
127, 11sylan9eq 1948 . . . . . . 7 |- (((m e. NN0 /\ n e. NN0) /\ -. n = 0) -> (E` <.m, n>.) = <.n, (m mod n)>.)
1312fveq2d 4685 . . . . . 6 |- (((m e. NN0 /\ n e. NN0) /\ -. n = 0) -> ( gcd ` (E` <.m, n>.)) = ( gcd ` <.n, (m mod n)>.))
14 zmodcl 7511 . . . . . . . . . . . . . 14 |- ((m e. ZZ /\ n e. NN) -> (m mod n) e. NN0)
15 nn0z 7363 . . . . . . . . . . . . . 14 |- ((m mod n) e. NN0 -> (m mod n) e. ZZ)
1614, 15syl 12 . . . . . . . . . . . . 13 |- ((m e. ZZ /\ n e. NN) -> (m mod n) e. ZZ)
17 simpr 350 . . . . . . . . . . . . . 14 |- ((m e. ZZ /\ n e. NN) -> n e. NN)
18 nnz 7362 . . . . . . . . . . . . . 14 |- (n e. NN -> n e. ZZ)
1917, 18syl 12 . . . . . . . . . . . . 13 |- ((m e. ZZ /\ n e. NN) -> n e. ZZ)
20 gcdcom 13726 . . . . . . . . . . . . 13 |- (((m mod n) e. ZZ /\ n e. ZZ) -> ((m mod n) gcd n) = (n gcd (m mod n)))
2116, 19, 20syl11anc 524 . . . . . . . . . . . 12 |- ((m e. ZZ /\ n e. NN) -> ((m mod n) gcd n) = (n gcd (m mod n)))
22 modgcd 13738 . . . . . . . . . . . 12 |- ((m e. ZZ /\ n e. NN) -> ((m mod n) gcd n) = (m gcd n))
2321, 22eqtr3d 1927 . . . . . . . . . . 11 |- ((m e. ZZ /\ n e. NN) -> (n gcd (m mod n)) = (m gcd n))
2423adantrr 431 . . . . . . . . . 10 |- ((m e. ZZ /\ (n e. NN /\ -. n = 0)) -> (n gcd (m mod n)) = (m gcd n))
25 elnn0 7310 . . . . . . . . . . . 12 |- (n e. NN0 <-> (n e. NN \/ n = 0))
2625anbi1i 539 . . . . . . . . . . 11 |- ((n e. NN0 /\ -. n = 0) <-> ((n e. NN \/ n = 0) /\ -. n = 0))
27 pm5.61 496 . . . . . . . . . . 11 |- (((n e. NN \/ n = 0) /\ -. n = 0) <-> (n e. NN /\ -. n = 0))
2826, 27bitri 190 . . . . . . . . . 10 |- ((n e. NN0 /\ -. n = 0) <-> (n e. NN /\ -. n = 0))
2924, 28sylan2b 501 . . . . . . . . 9 |- ((m e. ZZ /\ (n e. NN0 /\ -. n = 0)) -> (n gcd (m mod n)) = (m gcd n))
3029anassrs 489 . . . . . . . 8 |- (((m e. ZZ /\ n e. NN0) /\ -. n = 0) -> (n gcd (m mod n)) = (m gcd n))
31 nn0z 7363 . . . . . . . 8 |- (m e. NN0 -> m e. ZZ)
3230, 31sylanl1 509 . . . . . . 7 |- (((m e. NN0 /\ n e. NN0) /\ -. n = 0) -> (n gcd (m mod n)) = (m gcd n))
33 df-opr 4886 . . . . . . . 8 |- (n gcd (m mod n)) = ( gcd ` <.n, (m mod n)>.)
34 df-opr 4886 . . . . . . . 8 |- (m gcd n) = ( gcd ` <.m, n>.)
3533, 34eqeq12i 1897 . . . . . . 7 |- ((n gcd (m mod n)) = (m gcd n) <-> ( gcd ` <.n, (m mod n)>.) = ( gcd ` <.m, n>.))
3632, 35sylib 215 . . . . . 6 |- (((m e. NN0 /\ n e. NN0) /\ -. n = 0) -> ( gcd ` <.n, (m mod n)>.) = ( gcd `
<.m, n>.))
3713, 36eqtrd 1925 . . . . 5 |- (((m e. NN0 /\ n e. NN0) /\ -. n = 0) -> ( gcd ` (E` <.m, n>.)) = ( gcd ` <.m, n>.))
3810, 37pm2.61dan 535 . . . 4 |- ((m e. NN0 /\ n e. NN0) -> ( gcd ` (E` <.m, n>.)) = ( gcd ` <.m, n>.))
395, 38syl5cbir 228 . . 3 |- ((m e. NN0 /\ n e. NN0) -> (X = <.m, n>. -> ( gcd `
(E` X)) = ( gcd ` X)))
4039r19.23aivv 2217 . 2 |- (E.m e. NN0 E.n e. NN0 X = <.m, n>. -> ( gcd ` (E` X)) = ( gcd ` X))
411, 40sylbi 216 1 |- (X e. (NN0 X. NN0) -> ( gcd ` (E` X)) = ( gcd ` X))
Colors of variables: wff set class
Syntax hints:  -. wn 2   -> wi 3   \/ wo 239   /\ wa 240   = wceq 1298   e. wcel 1300  E.wrex 2106  ifcif 2982  <.cop 3046  {copab 3395   X. cxp 3984  ` cfv 3998  (class class class)co 4884  2ndc2nd 5019  0cc0 6386  NNcn 6449  NN0cn0 6450  ZZcz 6451   mod cmo 7499   gcd cgcd 13713
This theorem is referenced by:  eucalg 13755
This theorem was proved from axioms:  ax-1 4  ax-2 5  ax-3 6  ax-mp 7  ax-7 1304  ax-gen 1305  ax-8 1306  ax-9 1307  ax-10 1308  ax-11 1309  ax-12 1310  ax-13 1311  ax-14 1312  ax-17 1317  ax-4 1319  ax-5o 1321  ax-6o 1324  ax-9o 1481  ax-10o 1500  ax-16 1580  ax-11o 1588  ax-ext 1865  ax-rep 3428  ax-sep 3438  ax-nul 3445  ax-pow 3481  ax-pr 3524  ax-un 3790  ax-inf2 5731
This theorem depends on definitions:  df-bi 164  df-or 241  df-an 242  df-3or 859  df-3an 860  df-ex 1327  df-sb 1536  df-eu 1775  df-mo 1776  df-clab 1872  df-cleq 1877  df-clel 1880  df-ne 2019  df-nel 2020  df-ral 2109  df-rex 2110  df-reu 2111  df-rab 2112  df-v 2294  df-sbc 2454  df-csb 2541  df-dif 2597  df-un 2600  df-in 2603  df-ss 2605  df-pss 2607  df-nul 2876  df-if 2983  df-pw 3035  df-sn 3049  df-pr 3050  df-tp 3052  df-op 3053  df-uni 3178  df-int 3215  df-iun 3257  df-br 3339  df-opab 3396  df-tr 3412  df-eprel 3583  df-id 3586  df-po 3591  df-so 3604  df-fr 3625  df-we 3644  df-ord 3660  df-on 3661  df-lim 3662  df-suc 3663  df-om 3950  df-xp 4000  df-rel 4001  df-cnv 4002  df-co 4003  df-dm 4004  df-rn 4005  df-res 4006  df-ima 4007  df-fun 4008  df-fn 4009  df-f 4010  df-f1 4011  df-fo 4012  df-f1o 4013  df-fv 4014  df-opr 4886  df-oprab 4887  df-mpt 5006  df-1st 5020  df-2nd 5021  df-iota 5089  df-rdg 5140  df-1o 5177  df-oadd 5179  df-omul 5180  df-er 5318  df-ec 5320  df-qs 5323  df-en 5427  df-dom 5428  df-sdom 5429  df-undef 5556  df-riota 5560  df-sup 5664  df-ni 6152  df-pli 6153  df-mi 6154  df-lti 6155  df-plpq 6187  df-mpq 6188  df-enq 6189  df-nq 6190  df-plq 6191  df-mq 6192  df-rq 6193  df-ltq 6194  df-1q 6195  df-np 6238  df-1p 6239  df-plp 6240  df-mp 6241  df-ltp 6242  df-plpr 6316  df-mpr 6317  df-enr 6318  df-nr 6319  df-plr 6320  df-mr 6321  df-ltr 6322  df-0r 6323  df-1r 6324  df-m1r 6325  df-c 6392  df-0 6393  df-1 6394  df-i 6395  df-r 6396  df-plus 6397  df-mul 6398  df-lt 6399  df-sub 6511  df-neg 6513  df-pnf 6654  df-mnf 6655  df-xr 6656  df-ltxr 6657  df-le 6658  df-div 6892  df-n 7108  df-2 7154  df-rp 7232  df-n0 7309  df-z 7345  df-fl 7463  df-mod 7500  df-uz 7587  df-seq1 7721  df-exp 7812  df-sqr 7920  df-re 8001  df-im 8002  df-cj 8003  df-abs 8004  df-divides 13663  df-gcd 13714
Copyright terms: Public domain