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

Theorem eucalg 12839
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 1st 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 9959 . . . . . . . 8 0 = (ℤ‘0)
2 eucalg.2 . . . . . . . 8 𝑅 = seq0((𝐸 ∘ 1st ), (ℕ0 × {𝐴}))
3 0zd 9658 . . . . . . . 8 ((𝑀 ∈ ℕ0𝑁 ∈ ℕ0) → 0 ∈ ℤ)
4 eucalg.3 . . . . . . . . 9 𝐴 = ⟨𝑀, 𝑁
5 opelxpi 4806 . . . . . . . . 9 ((𝑀 ∈ ℕ0𝑁 ∈ ℕ0) → ⟨𝑀, 𝑁⟩ ∈ (ℕ0 × ℕ0))
64, 5eqeltrid 2325 . . . . . . . 8 ((𝑀 ∈ ℕ0𝑁 ∈ ℕ0) → 𝐴 ∈ (ℕ0 × ℕ0))
7 eucalgval.1 . . . . . . . . . 10 𝐸 = (𝑥 ∈ ℕ0, 𝑦 ∈ ℕ0 ↦ if(𝑦 = 0, ⟨𝑥, 𝑦⟩, ⟨𝑦, (𝑥 mod 𝑦)⟩))
87eucalgf 12835 . . . . . . . . 9 𝐸:(ℕ0 × ℕ0)⟶(ℕ0 × ℕ0)
98a1i 9 . . . . . . . 8 ((𝑀 ∈ ℕ0𝑁 ∈ ℕ0) → 𝐸:(ℕ0 × ℕ0)⟶(ℕ0 × ℕ0))
101, 2, 3, 6, 9algrf 12825 . . . . . . 7 ((𝑀 ∈ ℕ0𝑁 ∈ ℕ0) → 𝑅:ℕ0⟶(ℕ0 × ℕ0))
11 ffvelcdm 5841 . . . . . . 7 ((𝑅:ℕ0⟶(ℕ0 × ℕ0) ∧ 𝑁 ∈ ℕ0) → (𝑅𝑁) ∈ (ℕ0 × ℕ0))
1210, 11sylancom 424 . . . . . 6 ((𝑀 ∈ ℕ0𝑁 ∈ ℕ0) → (𝑅𝑁) ∈ (ℕ0 × ℕ0))
13 1st2nd2 6409 . . . . . 6 ((𝑅𝑁) ∈ (ℕ0 × ℕ0) → (𝑅𝑁) = ⟨(1st ‘(𝑅𝑁)), (2nd ‘(𝑅𝑁))⟩)
1412, 13syl 14 . . . . 5 ((𝑀 ∈ ℕ0𝑁 ∈ ℕ0) → (𝑅𝑁) = ⟨(1st ‘(𝑅𝑁)), (2nd ‘(𝑅𝑁))⟩)
1514fveq2d 5699 . . . 4 ((𝑀 ∈ ℕ0𝑁 ∈ ℕ0) → ( gcd ‘(𝑅𝑁)) = ( gcd ‘⟨(1st ‘(𝑅𝑁)), (2nd ‘(𝑅𝑁))⟩))
16 df-ov 6088 . . . 4 ((1st ‘(𝑅𝑁)) gcd (2nd ‘(𝑅𝑁))) = ( gcd ‘⟨(1st ‘(𝑅𝑁)), (2nd ‘(𝑅𝑁))⟩)
1715, 16eqtr4di 2289 . . 3 ((𝑀 ∈ ℕ0𝑁 ∈ ℕ0) → ( gcd ‘(𝑅𝑁)) = ((1st ‘(𝑅𝑁)) gcd (2nd ‘(𝑅𝑁))))
184fveq2i 5698 . . . . . . . 8 (2nd𝐴) = (2nd ‘⟨𝑀, 𝑁⟩)
19 op2ndg 6385 . . . . . . . 8 ((𝑀 ∈ ℕ0𝑁 ∈ ℕ0) → (2nd ‘⟨𝑀, 𝑁⟩) = 𝑁)
2018, 19eqtrid 2283 . . . . . . 7 ((𝑀 ∈ ℕ0𝑁 ∈ ℕ0) → (2nd𝐴) = 𝑁)
2120fveq2d 5699 . . . . . 6 ((𝑀 ∈ ℕ0𝑁 ∈ ℕ0) → (𝑅‘(2nd𝐴)) = (𝑅𝑁))
2221fveq2d 5699 . . . . 5 ((𝑀 ∈ ℕ0𝑁 ∈ ℕ0) → (2nd ‘(𝑅‘(2nd𝐴))) = (2nd ‘(𝑅𝑁)))
23 xp2nd 6400 . . . . . . . . 9 (𝐴 ∈ (ℕ0 × ℕ0) → (2nd𝐴) ∈ ℕ0)
2423nn0zd 9768 . . . . . . . 8 (𝐴 ∈ (ℕ0 × ℕ0) → (2nd𝐴) ∈ ℤ)
25 uzid 9938 . . . . . . . 8 ((2nd𝐴) ∈ ℤ → (2nd𝐴) ∈ (ℤ‘(2nd𝐴)))
2624, 25syl 14 . . . . . . 7 (𝐴 ∈ (ℕ0 × ℕ0) → (2nd𝐴) ∈ (ℤ‘(2nd𝐴)))
27 eqid 2238 . . . . . . . 8 (2nd𝐴) = (2nd𝐴)
287, 2, 27eucalgcvga 12838 . . . . . . 7 (𝐴 ∈ (ℕ0 × ℕ0) → ((2nd𝐴) ∈ (ℤ‘(2nd𝐴)) → (2nd ‘(𝑅‘(2nd𝐴))) = 0))
2926, 28mpd 13 . . . . . 6 (𝐴 ∈ (ℕ0 × ℕ0) → (2nd ‘(𝑅‘(2nd𝐴))) = 0)
306, 29syl 14 . . . . 5 ((𝑀 ∈ ℕ0𝑁 ∈ ℕ0) → (2nd ‘(𝑅‘(2nd𝐴))) = 0)
3122, 30eqtr3d 2273 . . . 4 ((𝑀 ∈ ℕ0𝑁 ∈ ℕ0) → (2nd ‘(𝑅𝑁)) = 0)
3231oveq2d 6101 . . 3 ((𝑀 ∈ ℕ0𝑁 ∈ ℕ0) → ((1st ‘(𝑅𝑁)) gcd (2nd ‘(𝑅𝑁))) = ((1st ‘(𝑅𝑁)) gcd 0))
33 xp1st 6399 . . . 4 ((𝑅𝑁) ∈ (ℕ0 × ℕ0) → (1st ‘(𝑅𝑁)) ∈ ℕ0)
34 nn0gcdid0 12760 . . . 4 ((1st ‘(𝑅𝑁)) ∈ ℕ0 → ((1st ‘(𝑅𝑁)) gcd 0) = (1st ‘(𝑅𝑁)))
3512, 33, 343syl 17 . . 3 ((𝑀 ∈ ℕ0𝑁 ∈ ℕ0) → ((1st ‘(𝑅𝑁)) gcd 0) = (1st ‘(𝑅𝑁)))
3617, 32, 353eqtrrd 2276 . 2 ((𝑀 ∈ ℕ0𝑁 ∈ ℕ0) → (1st ‘(𝑅𝑁)) = ( gcd ‘(𝑅𝑁)))
377eucalginv 12836 . . . . . 6 (𝑧 ∈ (ℕ0 × ℕ0) → ( gcd ‘(𝐸𝑧)) = ( gcd ‘𝑧))
388ffvelcdmi 5842 . . . . . . 7 (𝑧 ∈ (ℕ0 × ℕ0) → (𝐸𝑧) ∈ (ℕ0 × ℕ0))
39 fvres 5719 . . . . . . 7 ((𝐸𝑧) ∈ (ℕ0 × ℕ0) → (( gcd ↾ (ℕ0 × ℕ0))‘(𝐸𝑧)) = ( gcd ‘(𝐸𝑧)))
4038, 39syl 14 . . . . . 6 (𝑧 ∈ (ℕ0 × ℕ0) → (( gcd ↾ (ℕ0 × ℕ0))‘(𝐸𝑧)) = ( gcd ‘(𝐸𝑧)))
41 fvres 5719 . . . . . 6 (𝑧 ∈ (ℕ0 × ℕ0) → (( gcd ↾ (ℕ0 × ℕ0))‘𝑧) = ( gcd ‘𝑧))
4237, 40, 413eqtr4d 2281 . . . . 5 (𝑧 ∈ (ℕ0 × ℕ0) → (( gcd ↾ (ℕ0 × ℕ0))‘(𝐸𝑧)) = (( gcd ↾ (ℕ0 × ℕ0))‘𝑧))
432, 8, 42alginv 12827 . . . 4 ((𝐴 ∈ (ℕ0 × ℕ0) ∧ 𝑁 ∈ ℕ0) → (( gcd ↾ (ℕ0 × ℕ0))‘(𝑅𝑁)) = (( gcd ↾ (ℕ0 × ℕ0))‘(𝑅‘0)))
446, 43sylancom 424 . . 3 ((𝑀 ∈ ℕ0𝑁 ∈ ℕ0) → (( gcd ↾ (ℕ0 × ℕ0))‘(𝑅𝑁)) = (( gcd ↾ (ℕ0 × ℕ0))‘(𝑅‘0)))
45 fvres 5719 . . . 4 ((𝑅𝑁) ∈ (ℕ0 × ℕ0) → (( gcd ↾ (ℕ0 × ℕ0))‘(𝑅𝑁)) = ( gcd ‘(𝑅𝑁)))
4612, 45syl 14 . . 3 ((𝑀 ∈ ℕ0𝑁 ∈ ℕ0) → (( gcd ↾ (ℕ0 × ℕ0))‘(𝑅𝑁)) = ( gcd ‘(𝑅𝑁)))
47 0nn0 9580 . . . . 5 0 ∈ ℕ0
48 ffvelcdm 5841 . . . . 5 ((𝑅:ℕ0⟶(ℕ0 × ℕ0) ∧ 0 ∈ ℕ0) → (𝑅‘0) ∈ (ℕ0 × ℕ0))
4910, 47, 48sylancl 417 . . . 4 ((𝑀 ∈ ℕ0𝑁 ∈ ℕ0) → (𝑅‘0) ∈ (ℕ0 × ℕ0))
50 fvres 5719 . . . 4 ((𝑅‘0) ∈ (ℕ0 × ℕ0) → (( gcd ↾ (ℕ0 × ℕ0))‘(𝑅‘0)) = ( gcd ‘(𝑅‘0)))
5149, 50syl 14 . . 3 ((𝑀 ∈ ℕ0𝑁 ∈ ℕ0) → (( gcd ↾ (ℕ0 × ℕ0))‘(𝑅‘0)) = ( gcd ‘(𝑅‘0)))
5244, 46, 513eqtr3d 2279 . 2 ((𝑀 ∈ ℕ0𝑁 ∈ ℕ0) → ( gcd ‘(𝑅𝑁)) = ( gcd ‘(𝑅‘0)))
531, 2, 3, 6, 9ialgr0 12824 . . . . 5 ((𝑀 ∈ ℕ0𝑁 ∈ ℕ0) → (𝑅‘0) = 𝐴)
5453, 4eqtrdi 2287 . . . 4 ((𝑀 ∈ ℕ0𝑁 ∈ ℕ0) → (𝑅‘0) = ⟨𝑀, 𝑁⟩)
5554fveq2d 5699 . . 3 ((𝑀 ∈ ℕ0𝑁 ∈ ℕ0) → ( gcd ‘(𝑅‘0)) = ( gcd ‘⟨𝑀, 𝑁⟩))
56 df-ov 6088 . . 3 (𝑀 gcd 𝑁) = ( gcd ‘⟨𝑀, 𝑁⟩)
5755, 56eqtr4di 2289 . 2 ((𝑀 ∈ ℕ0𝑁 ∈ ℕ0) → ( gcd ‘(𝑅‘0)) = (𝑀 gcd 𝑁))
5836, 52, 573eqtrd 2275 1 ((𝑀 ∈ ℕ0𝑁 ∈ ℕ0) → (1st ‘(𝑅𝑁)) = (𝑀 gcd 𝑁))
Colors of variables:    wff set class
This proof depends on syntax axioms:  wi 4  wa 104   = wceq 1402  wcel 2209  ifcif 3638  {csn 3709  cop 3712   × cxp 4772  cres 4776  ccom 4778  wf 5373  cfv 5377  (class class class)co 6085  cmpo 6087  1st c1st 6372  2nd c2nd 6373  0cc0 8179  0cn0 9565  cz 9646  cuz 9923   mod cmo 10761  seqcseq 10886   gcd cgcd 12732
This proof depends on axioms:  ax-mp 5  ax-1 6  ax-2 7  ax-ia1 106  ax-ia2 107  ax-ia3 108  ax-in1 623  ax-in2 624  ax-io 721  ax-5 1500  ax-7 1501  ax-gen 1502  ax-ie1 1546  ax-ie2 1547  ax-8 1557  ax-10 1558  ax-11 1559  ax-i12 1560  ax-bndl 1562  ax-4 1563  ax-17 1579  ax-i9 1583  ax-ial 1587  ax-i5r 1588  ax-14 2212  ax-ext 2220  ax-coll 4246  ax-sep 4249  ax-nul 4259  ax-pow 4311  ax-pr 4346  ax-un 4578  ax-setind 4684  ax-iinf 4735  ax-cnex 8270  ax-resscn 8271  ax-1cn 8272  ax-1re 8273  ax-icn 8274  ax-addcl 8275  ax-addrcl 8276  ax-mulcl 8277  ax-mulrcl 8278  ax-addcom 8279  ax-mulcom 8280  ax-addass 8281  ax-mulass 8282  ax-distr 8283  ax-i2m1 8284  ax-0lt1 8285  ax-1rid 8286  ax-0id 8287  ax-rnegex 8288  ax-precex 8289  ax-cnre 8290  ax-pre-ltirr 8291  ax-pre-ltwlin 8292  ax-pre-lttrn 8293  ax-pre-apti 8294  ax-pre-ltadd 8295  ax-pre-mulgt0 8296  ax-pre-mulext 8297  ax-arch 8298  ax-caucvg 8299
This proof depends on definitions:  df-bi 117  df-stab 843  df-dc 847  df-3or 1010  df-3an 1011  df-tru 1405  df-fal 1408  df-nf 1514  df-sb 1816  df-eu 2089  df-mo 2090  df-clab 2225  df-cleq 2231  df-clel 2234  df-nfc 2381  df-ne 2421  df-nel 2516  df-ral 2533  df-rex 2534  df-reu 2535  df-rmo 2536  df-rab 2537  df-v 2823  df-sbc 3052  df-csb 3148  df-dif 3222  df-un 3224  df-in 3226  df-ss 3233  df-nul 3521  df-if 3639  df-pw 3690  df-sn 3715  df-pr 3716  df-op 3718  df-uni 3936  df-int 3971  df-iun 4014  df-br 4131  df-opab 4193  df-mpt 4194  df-tr 4230  df-id 4438  df-po 4441  df-iso 4442  df-iord 4511  df-on 4513  df-ilim 4514  df-suc 4516  df-iom 4738  df-xp 4780  df-rel 4781  df-cnv 4782  df-co 4783  df-dm 4784  df-rn 4785  df-res 4786  df-ima 4787  df-iota 5337  df-fun 5379  df-fn 5380  df-f 5381  df-f1 5382  df-fo 5383  df-f1o 5384  df-fv 5385  df-riota 6038  df-ov 6088  df-oprab 6089  df-mpo 6090  df-1st 6374  df-2nd 6375  df-recs 6576  df-frec 6662  df-sup 7324  df-pnf 8362  df-mnf 8363  df-xr 8364  df-ltxr 8365  df-le 8366  df-sub 8499  df-neg 8500  df-reap 8904  df-ap 8911  df-div 9004  df-inn 9306  df-2 9364  df-3 9365  df-4 9366  df-n0 9566  df-z 9647  df-uz 9924  df-q 10022  df-rp 10057  df-fz 10414  df-fzo 10552  df-fl 10707  df-mod 10762  df-seqfrec 10887  df-exp 10978  df-cj 11609  df-re 11610  df-im 11611  df-rsqrt 11766  df-abs 11767  df-dvds 12557  df-gcd 12733
This theorem is used by: (None)
  Copyright terms: Public domain W3C validator