MPE Home Metamath Proof Explorer < Previous   Next >
Nearby theorems
Mirrors  >  Home  >  MPE Home  >  Th. List  >  eucalg Structured version   Visualization version   GIF version

Theorem eucalg 16520
Description: Euclid's Algorithm 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. Theorem 1.15 in [ApostolNT] p. 20.

Upon halting, the first member of the final state (𝑅𝑁) is equal to the gcd of the values comprising the input state 𝑀, 𝑁. This is Metamath 100 proof #69 (greatest common divisor algorithm). (Contributed by Paul Chapman, 31-Mar-2011.) (Proof shortened by Mario Carneiro, 29-May-2014.)

Hypotheses
Ref Expression
eucalgval.1 𝐸 = (𝑥 ∈ ℕ0, 𝑦 ∈ ℕ0 ↦ if(𝑦 = 0, ⟨𝑥, 𝑦⟩, ⟨𝑦, (𝑥 mod 𝑦)⟩))
eucalg.2 𝑅 = seq0((𝐸 ∘ 1st ), (ℕ0 × {𝐴}))
eucalg.3 𝐴 = ⟨𝑀, 𝑁
Assertion
Ref Expression
eucalg ((𝑀 ∈ ℕ0𝑁 ∈ ℕ0) → (1st ‘(𝑅𝑁)) = (𝑀 gcd 𝑁))
Distinct variable groups:   𝑥,𝑦,𝑀   𝑥,𝑁,𝑦   𝑥,𝐴,𝑦   𝑥,𝑅
Allowed substitution hints:   𝑅(𝑦)   𝐸(𝑥,𝑦)

Proof of Theorem eucalg
Dummy variable 𝑧 is distinct from all other variables.
StepHypRef Expression
1 nn0uz 12860 . . . . . . . 8 0 = (ℤ‘0)
2 eucalg.2 . . . . . . . 8 𝑅 = seq0((𝐸 ∘ 1st ), (ℕ0 × {𝐴}))
3 0zd 12566 . . . . . . . 8 ((𝑀 ∈ ℕ0𝑁 ∈ ℕ0) → 0 ∈ ℤ)
4 eucalg.3 . . . . . . . . 9 𝐴 = ⟨𝑀, 𝑁
5 opelxpi 5712 . . . . . . . . 9 ((𝑀 ∈ ℕ0𝑁 ∈ ℕ0) → ⟨𝑀, 𝑁⟩ ∈ (ℕ0 × ℕ0))
64, 5eqeltrid 2838 . . . . . . . 8 ((𝑀 ∈ ℕ0𝑁 ∈ ℕ0) → 𝐴 ∈ (ℕ0 × ℕ0))
7 eucalgval.1 . . . . . . . . . 10 𝐸 = (𝑥 ∈ ℕ0, 𝑦 ∈ ℕ0 ↦ if(𝑦 = 0, ⟨𝑥, 𝑦⟩, ⟨𝑦, (𝑥 mod 𝑦)⟩))
87eucalgf 16516 . . . . . . . . 9 𝐸:(ℕ0 × ℕ0)⟶(ℕ0 × ℕ0)
98a1i 11 . . . . . . . 8 ((𝑀 ∈ ℕ0𝑁 ∈ ℕ0) → 𝐸:(ℕ0 × ℕ0)⟶(ℕ0 × ℕ0))
101, 2, 3, 6, 9algrf 16506 . . . . . . 7 ((𝑀 ∈ ℕ0𝑁 ∈ ℕ0) → 𝑅:ℕ0⟶(ℕ0 × ℕ0))
11 ffvelcdm 7079 . . . . . . 7 ((𝑅:ℕ0⟶(ℕ0 × ℕ0) ∧ 𝑁 ∈ ℕ0) → (𝑅𝑁) ∈ (ℕ0 × ℕ0))
1210, 11sylancom 589 . . . . . 6 ((𝑀 ∈ ℕ0𝑁 ∈ ℕ0) → (𝑅𝑁) ∈ (ℕ0 × ℕ0))
13 1st2nd2 8009 . . . . . 6 ((𝑅𝑁) ∈ (ℕ0 × ℕ0) → (𝑅𝑁) = ⟨(1st ‘(𝑅𝑁)), (2nd ‘(𝑅𝑁))⟩)
1412, 13syl 17 . . . . 5 ((𝑀 ∈ ℕ0𝑁 ∈ ℕ0) → (𝑅𝑁) = ⟨(1st ‘(𝑅𝑁)), (2nd ‘(𝑅𝑁))⟩)
1514fveq2d 6892 . . . 4 ((𝑀 ∈ ℕ0𝑁 ∈ ℕ0) → ( gcd ‘(𝑅𝑁)) = ( gcd ‘⟨(1st ‘(𝑅𝑁)), (2nd ‘(𝑅𝑁))⟩))
16 df-ov 7407 . . . 4 ((1st ‘(𝑅𝑁)) gcd (2nd ‘(𝑅𝑁))) = ( gcd ‘⟨(1st ‘(𝑅𝑁)), (2nd ‘(𝑅𝑁))⟩)
1715, 16eqtr4di 2791 . . 3 ((𝑀 ∈ ℕ0𝑁 ∈ ℕ0) → ( gcd ‘(𝑅𝑁)) = ((1st ‘(𝑅𝑁)) gcd (2nd ‘(𝑅𝑁))))
184fveq2i 6891 . . . . . . . 8 (2nd𝐴) = (2nd ‘⟨𝑀, 𝑁⟩)
19 op2ndg 7983 . . . . . . . 8 ((𝑀 ∈ ℕ0𝑁 ∈ ℕ0) → (2nd ‘⟨𝑀, 𝑁⟩) = 𝑁)
2018, 19eqtrid 2785 . . . . . . 7 ((𝑀 ∈ ℕ0𝑁 ∈ ℕ0) → (2nd𝐴) = 𝑁)
2120fveq2d 6892 . . . . . 6 ((𝑀 ∈ ℕ0𝑁 ∈ ℕ0) → (𝑅‘(2nd𝐴)) = (𝑅𝑁))
2221fveq2d 6892 . . . . 5 ((𝑀 ∈ ℕ0𝑁 ∈ ℕ0) → (2nd ‘(𝑅‘(2nd𝐴))) = (2nd ‘(𝑅𝑁)))
23 xp2nd 8003 . . . . . . . . 9 (𝐴 ∈ (ℕ0 × ℕ0) → (2nd𝐴) ∈ ℕ0)
2423nn0zd 12580 . . . . . . . 8 (𝐴 ∈ (ℕ0 × ℕ0) → (2nd𝐴) ∈ ℤ)
25 uzid 12833 . . . . . . . 8 ((2nd𝐴) ∈ ℤ → (2nd𝐴) ∈ (ℤ‘(2nd𝐴)))
2624, 25syl 17 . . . . . . 7 (𝐴 ∈ (ℕ0 × ℕ0) → (2nd𝐴) ∈ (ℤ‘(2nd𝐴)))
27 eqid 2733 . . . . . . . 8 (2nd𝐴) = (2nd𝐴)
287, 2, 27eucalgcvga 16519 . . . . . . 7 (𝐴 ∈ (ℕ0 × ℕ0) → ((2nd𝐴) ∈ (ℤ‘(2nd𝐴)) → (2nd ‘(𝑅‘(2nd𝐴))) = 0))
2926, 28mpd 15 . . . . . 6 (𝐴 ∈ (ℕ0 × ℕ0) → (2nd ‘(𝑅‘(2nd𝐴))) = 0)
306, 29syl 17 . . . . 5 ((𝑀 ∈ ℕ0𝑁 ∈ ℕ0) → (2nd ‘(𝑅‘(2nd𝐴))) = 0)
3122, 30eqtr3d 2775 . . . 4 ((𝑀 ∈ ℕ0𝑁 ∈ ℕ0) → (2nd ‘(𝑅𝑁)) = 0)
3231oveq2d 7420 . . 3 ((𝑀 ∈ ℕ0𝑁 ∈ ℕ0) → ((1st ‘(𝑅𝑁)) gcd (2nd ‘(𝑅𝑁))) = ((1st ‘(𝑅𝑁)) gcd 0))
33 xp1st 8002 . . . 4 ((𝑅𝑁) ∈ (ℕ0 × ℕ0) → (1st ‘(𝑅𝑁)) ∈ ℕ0)
34 nn0gcdid0 16458 . . . 4 ((1st ‘(𝑅𝑁)) ∈ ℕ0 → ((1st ‘(𝑅𝑁)) gcd 0) = (1st ‘(𝑅𝑁)))
3512, 33, 343syl 18 . . 3 ((𝑀 ∈ ℕ0𝑁 ∈ ℕ0) → ((1st ‘(𝑅𝑁)) gcd 0) = (1st ‘(𝑅𝑁)))
3617, 32, 353eqtrrd 2778 . 2 ((𝑀 ∈ ℕ0𝑁 ∈ ℕ0) → (1st ‘(𝑅𝑁)) = ( gcd ‘(𝑅𝑁)))
377eucalginv 16517 . . . . . 6 (𝑧 ∈ (ℕ0 × ℕ0) → ( gcd ‘(𝐸𝑧)) = ( gcd ‘𝑧))
388ffvelcdmi 7081 . . . . . . 7 (𝑧 ∈ (ℕ0 × ℕ0) → (𝐸𝑧) ∈ (ℕ0 × ℕ0))
3938fvresd 6908 . . . . . 6 (𝑧 ∈ (ℕ0 × ℕ0) → (( gcd ↾ (ℕ0 × ℕ0))‘(𝐸𝑧)) = ( gcd ‘(𝐸𝑧)))
40 fvres 6907 . . . . . 6 (𝑧 ∈ (ℕ0 × ℕ0) → (( gcd ↾ (ℕ0 × ℕ0))‘𝑧) = ( gcd ‘𝑧))
4137, 39, 403eqtr4d 2783 . . . . 5 (𝑧 ∈ (ℕ0 × ℕ0) → (( gcd ↾ (ℕ0 × ℕ0))‘(𝐸𝑧)) = (( gcd ↾ (ℕ0 × ℕ0))‘𝑧))
422, 8, 41alginv 16508 . . . 4 ((𝐴 ∈ (ℕ0 × ℕ0) ∧ 𝑁 ∈ ℕ0) → (( gcd ↾ (ℕ0 × ℕ0))‘(𝑅𝑁)) = (( gcd ↾ (ℕ0 × ℕ0))‘(𝑅‘0)))
436, 42sylancom 589 . . 3 ((𝑀 ∈ ℕ0𝑁 ∈ ℕ0) → (( gcd ↾ (ℕ0 × ℕ0))‘(𝑅𝑁)) = (( gcd ↾ (ℕ0 × ℕ0))‘(𝑅‘0)))
4412fvresd 6908 . . 3 ((𝑀 ∈ ℕ0𝑁 ∈ ℕ0) → (( gcd ↾ (ℕ0 × ℕ0))‘(𝑅𝑁)) = ( gcd ‘(𝑅𝑁)))
45 0nn0 12483 . . . . 5 0 ∈ ℕ0
46 ffvelcdm 7079 . . . . 5 ((𝑅:ℕ0⟶(ℕ0 × ℕ0) ∧ 0 ∈ ℕ0) → (𝑅‘0) ∈ (ℕ0 × ℕ0))
4710, 45, 46sylancl 587 . . . 4 ((𝑀 ∈ ℕ0𝑁 ∈ ℕ0) → (𝑅‘0) ∈ (ℕ0 × ℕ0))
4847fvresd 6908 . . 3 ((𝑀 ∈ ℕ0𝑁 ∈ ℕ0) → (( gcd ↾ (ℕ0 × ℕ0))‘(𝑅‘0)) = ( gcd ‘(𝑅‘0)))
4943, 44, 483eqtr3d 2781 . 2 ((𝑀 ∈ ℕ0𝑁 ∈ ℕ0) → ( gcd ‘(𝑅𝑁)) = ( gcd ‘(𝑅‘0)))
501, 2, 3, 6algr0 16505 . . . . 5 ((𝑀 ∈ ℕ0𝑁 ∈ ℕ0) → (𝑅‘0) = 𝐴)
5150, 4eqtrdi 2789 . . . 4 ((𝑀 ∈ ℕ0𝑁 ∈ ℕ0) → (𝑅‘0) = ⟨𝑀, 𝑁⟩)
5251fveq2d 6892 . . 3 ((𝑀 ∈ ℕ0𝑁 ∈ ℕ0) → ( gcd ‘(𝑅‘0)) = ( gcd ‘⟨𝑀, 𝑁⟩))
53 df-ov 7407 . . 3 (𝑀 gcd 𝑁) = ( gcd ‘⟨𝑀, 𝑁⟩)
5452, 53eqtr4di 2791 . 2 ((𝑀 ∈ ℕ0𝑁 ∈ ℕ0) → ( gcd ‘(𝑅‘0)) = (𝑀 gcd 𝑁))
5536, 49, 543eqtrd 2777 1 ((𝑀 ∈ ℕ0𝑁 ∈ ℕ0) → (1st ‘(𝑅𝑁)) = (𝑀 gcd 𝑁))
Colors of variables: wff setvar class
Syntax hints:  wi 4  wa 397   = wceq 1542  wcel 2107  ifcif 4527  {csn 4627  cop 4633   × cxp 5673  cres 5677  ccom 5679  wf 6536  cfv 6540  (class class class)co 7404  cmpo 7406  1st c1st 7968  2nd c2nd 7969  0cc0 11106  0cn0 12468  cz 12554  cuz 12818   mod cmo 13830  seqcseq 13962   gcd cgcd 16431
This theorem was proved from axioms:  ax-mp 5  ax-1 6  ax-2 7  ax-3 8  ax-gen 1798  ax-4 1812  ax-5 1914  ax-6 1972  ax-7 2012  ax-8 2109  ax-9 2117  ax-10 2138  ax-11 2155  ax-12 2172  ax-ext 2704  ax-sep 5298  ax-nul 5305  ax-pow 5362  ax-pr 5426  ax-un 7720  ax-cnex 11162  ax-resscn 11163  ax-1cn 11164  ax-icn 11165  ax-addcl 11166  ax-addrcl 11167  ax-mulcl 11168  ax-mulrcl 11169  ax-mulcom 11170  ax-addass 11171  ax-mulass 11172  ax-distr 11173  ax-i2m1 11174  ax-1ne0 11175  ax-1rid 11176  ax-rnegex 11177  ax-rrecex 11178  ax-cnre 11179  ax-pre-lttri 11180  ax-pre-lttrn 11181  ax-pre-ltadd 11182  ax-pre-mulgt0 11183  ax-pre-sup 11184
This theorem depends on definitions:  df-bi 206  df-an 398  df-or 847  df-3or 1089  df-3an 1090  df-tru 1545  df-fal 1555  df-ex 1783  df-nf 1787  df-sb 2069  df-mo 2535  df-eu 2564  df-clab 2711  df-cleq 2725  df-clel 2811  df-nfc 2886  df-ne 2942  df-nel 3048  df-ral 3063  df-rex 3072  df-rmo 3377  df-reu 3378  df-rab 3434  df-v 3477  df-sbc 3777  df-csb 3893  df-dif 3950  df-un 3952  df-in 3954  df-ss 3964  df-pss 3966  df-nul 4322  df-if 4528  df-pw 4603  df-sn 4628  df-pr 4630  df-op 4634  df-uni 4908  df-iun 4998  df-br 5148  df-opab 5210  df-mpt 5231  df-tr 5265  df-id 5573  df-eprel 5579  df-po 5587  df-so 5588  df-fr 5630  df-we 5632  df-xp 5681  df-rel 5682  df-cnv 5683  df-co 5684  df-dm 5685  df-rn 5686  df-res 5687  df-ima 5688  df-pred 6297  df-ord 6364  df-on 6365  df-lim 6366  df-suc 6367  df-iota 6492  df-fun 6542  df-fn 6543  df-f 6544  df-f1 6545  df-fo 6546  df-f1o 6547  df-fv 6548  df-riota 7360  df-ov 7407  df-oprab 7408  df-mpo 7409  df-om 7851  df-1st 7970  df-2nd 7971  df-frecs 8261  df-wrecs 8292  df-recs 8366  df-rdg 8405  df-er 8699  df-en 8936  df-dom 8937  df-sdom 8938  df-sup 9433  df-inf 9434  df-pnf 11246  df-mnf 11247  df-xr 11248  df-ltxr 11249  df-le 11250  df-sub 11442  df-neg 11443  df-div 11868  df-nn 12209  df-2 12271  df-3 12272  df-n0 12469  df-z 12555  df-uz 12819  df-rp 12971  df-fz 13481  df-fl 13753  df-mod 13831  df-seq 13963  df-exp 14024  df-cj 15042  df-re 15043  df-im 15044  df-sqrt 15178  df-abs 15179  df-dvds 16194  df-gcd 16432
This theorem is referenced by: (None)
  Copyright terms: Public domain W3C validator