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

Theorem eucalg 12863
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 9974 . . . . . . . 8 ℕ0 = (ℤ≥‘0)
2 eucalg.2 . . . . . . . 8 𝑅 = seq0((𝐸 ∘ 1st ), (ℕ0 × {𝐴}))
3 0zd 9668 . . . . . . . 8 ((𝑀 ∈ ℕ0 ∧ 𝑁 ∈ ℕ0) → 0 ∈ ℤ)
4 eucalg.3 . . . . . . . . 9 𝐴 = ⟨𝑀, 𝑁⟩
5 opelxpi 4808 . . . . . . . . 9 ((𝑀 ∈ ℕ0 ∧ 𝑁 ∈ ℕ0) → ⟨𝑀, 𝑁⟩ ∈ (ℕ0 × ℕ0))
64, 5eqeltrid 2325 . . . . . . . 8 ((𝑀 ∈ ℕ0 ∧ 𝑁 ∈ ℕ0) → 𝐴 ∈ (ℕ0 × ℕ0))
7 eucalgval.1 . . . . . . . . . 10 𝐸 = (𝑥 ∈ ℕ0, 𝑦 ∈ ℕ0 ↦ if(𝑦 = 0, ⟨𝑥, 𝑦⟩, ⟨𝑦, (𝑥 mod 𝑦)⟩))
87eucalgf 12859 . . . . . . . . 9 𝐸:(ℕ0 × ℕ0)⟶(ℕ0 × ℕ0)
98a1i 9 . . . . . . . 8 ((𝑀 ∈ ℕ0 ∧ 𝑁 ∈ ℕ0) → 𝐸:(ℕ0 × ℕ0)⟶(ℕ0 × ℕ0))
101, 2, 3, 6, 9algrf 12849 . . . . . . 7 ((𝑀 ∈ ℕ0 ∧ 𝑁 ∈ ℕ0) → 𝑅:ℕ0⟶(ℕ0 × ℕ0))
11 ffvelcdm 5844 . . . . . . 7 ((𝑅:ℕ0⟶(ℕ0 × ℕ0) ∧ 𝑁 ∈ ℕ0) → (𝑅‘𝑁) ∈ (ℕ0 × ℕ0))
1210, 11sylancom 424 . . . . . 6 ((𝑀 ∈ ℕ0 ∧ 𝑁 ∈ ℕ0) → (𝑅‘𝑁) ∈ (ℕ0 × ℕ0))
13 1st2nd2 6413 . . . . . 6 ((𝑅‘𝑁) ∈ (ℕ0 × ℕ0) → (𝑅‘𝑁) = ⟨(1st ‘(𝑅‘𝑁)), (2nd ‘(𝑅‘𝑁))⟩)
1412, 13syl 14 . . . . 5 ((𝑀 ∈ ℕ0 ∧ 𝑁 ∈ ℕ0) → (𝑅‘𝑁) = ⟨(1st ‘(𝑅‘𝑁)), (2nd ‘(𝑅‘𝑁))⟩)
1514fveq2d 5702 . . . 4 ((𝑀 ∈ ℕ0 ∧ 𝑁 ∈ ℕ0) → ( gcd ‘(𝑅‘𝑁)) = ( gcd ‘⟨(1st ‘(𝑅‘𝑁)), (2nd ‘(𝑅‘𝑁))⟩))
16 df-ov 6091 . . . 4 ((1st ‘(𝑅‘𝑁)) gcd (2nd ‘(𝑅‘𝑁))) = ( gcd ‘⟨(1st ‘(𝑅‘𝑁)), (2nd ‘(𝑅‘𝑁))⟩)
1715, 16eqtr4di 2289 . . 3 ((𝑀 ∈ ℕ0 ∧ 𝑁 ∈ ℕ0) → ( gcd ‘(𝑅‘𝑁)) = ((1st ‘(𝑅‘𝑁)) gcd (2nd ‘(𝑅‘𝑁))))
184fveq2i 5701 . . . . . . . 8 (2nd ‘𝐴) = (2nd ‘⟨𝑀, 𝑁⟩)
19 op2ndg 6389 . . . . . . . 8 ((𝑀 ∈ ℕ0 ∧ 𝑁 ∈ ℕ0) → (2nd ‘⟨𝑀, 𝑁⟩) = 𝑁)
2018, 19eqtrid 2283 . . . . . . 7 ((𝑀 ∈ ℕ0 ∧ 𝑁 ∈ ℕ0) → (2nd ‘𝐴) = 𝑁)
2120fveq2d 5702 . . . . . 6 ((𝑀 ∈ ℕ0 ∧ 𝑁 ∈ ℕ0) → (𝑅‘(2nd ‘𝐴)) = (𝑅‘𝑁))
2221fveq2d 5702 . . . . 5 ((𝑀 ∈ ℕ0 ∧ 𝑁 ∈ ℕ0) → (2nd ‘(𝑅‘(2nd ‘𝐴))) = (2nd ‘(𝑅‘𝑁)))
23 xp2nd 6404 . . . . . . . . 9 (𝐴 ∈ (ℕ0 × ℕ0) → (2nd ‘𝐴) ∈ ℕ0)
2423nn0zd 9778 . . . . . . . 8 (𝐴 ∈ (ℕ0 × ℕ0) → (2nd ‘𝐴) ∈ ℤ)
25 uzid 9953 . . . . . . . 8 ((2nd ‘𝐴) ∈ ℤ → (2nd ‘𝐴) ∈ (ℤ≥‘(2nd ‘𝐴)))
2624, 25syl 14 . . . . . . 7 (𝐴 ∈ (ℕ0 × ℕ0) → (2nd ‘𝐴) ∈ (ℤ≥‘(2nd ‘𝐴)))
27 eqid 2238 . . . . . . . 8 (2nd ‘𝐴) = (2nd ‘𝐴)
287, 2, 27eucalgcvga 12862 . . . . . . 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 6104 . . 3 ((𝑀 ∈ ℕ0 ∧ 𝑁 ∈ ℕ0) → ((1st ‘(𝑅‘𝑁)) gcd (2nd ‘(𝑅‘𝑁))) = ((1st ‘(𝑅‘𝑁)) gcd 0))
33 xp1st 6403 . . . 4 ((𝑅‘𝑁) ∈ (ℕ0 × ℕ0) → (1st ‘(𝑅‘𝑁)) ∈ ℕ0)
34 nn0gcdid0 12784 . . . 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 12860 . . . . . 6 (𝑧 ∈ (ℕ0 × ℕ0) → ( gcd ‘(𝐸‘𝑧)) = ( gcd ‘𝑧))
388ffvelcdmi 5845 . . . . . . 7 (𝑧 ∈ (ℕ0 × ℕ0) → (𝐸‘𝑧) ∈ (ℕ0 × ℕ0))
39 fvres 5722 . . . . . . 7 ((𝐸‘𝑧) ∈ (ℕ0 × ℕ0) → (( gcd ↾ (ℕ0 × ℕ0))‘(𝐸‘𝑧)) = ( gcd ‘(𝐸‘𝑧)))
4038, 39syl 14 . . . . . 6 (𝑧 ∈ (ℕ0 × ℕ0) → (( gcd ↾ (ℕ0 × ℕ0))‘(𝐸‘𝑧)) = ( gcd ‘(𝐸‘𝑧)))
41 fvres 5722 . . . . . 6 (𝑧 ∈ (ℕ0 × ℕ0) → (( gcd ↾ (ℕ0 × ℕ0))‘𝑧) = ( gcd ‘𝑧))
4237, 40, 413eqtr4d 2281 . . . . 5 (𝑧 ∈ (ℕ0 × ℕ0) → (( gcd ↾ (ℕ0 × ℕ0))‘(𝐸‘𝑧)) = (( gcd ↾ (ℕ0 × ℕ0))‘𝑧))
432, 8, 42alginv 12851 . . . 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 5722 . . . 4 ((𝑅‘𝑁) ∈ (ℕ0 × ℕ0) → (( gcd ↾ (ℕ0 × ℕ0))‘(𝑅‘𝑁)) = ( gcd ‘(𝑅‘𝑁)))
4612, 45syl 14 . . 3 ((𝑀 ∈ ℕ0 ∧ 𝑁 ∈ ℕ0) → (( gcd ↾ (ℕ0 × ℕ0))‘(𝑅‘𝑁)) = ( gcd ‘(𝑅‘𝑁)))
47 0nn0 9590 . . . . 5 0 ∈ ℕ0
48 ffvelcdm 5844 . . . . 5 ((𝑅:ℕ0⟶(ℕ0 × ℕ0) ∧ 0 ∈ ℕ0) → (𝑅‘0) ∈ (ℕ0 × ℕ0))
4910, 47, 48sylancl 417 . . . 4 ((𝑀 ∈ ℕ0 ∧ 𝑁 ∈ ℕ0) → (𝑅‘0) ∈ (ℕ0 × ℕ0))
50 fvres 5722 . . . 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 12848 . . . . 5 ((𝑀 ∈ ℕ0 ∧ 𝑁 ∈ ℕ0) → (𝑅‘0) = 𝐴)
5453, 4eqtrdi 2287 . . . 4 ((𝑀 ∈ ℕ0 ∧ 𝑁 ∈ ℕ0) → (𝑅‘0) = ⟨𝑀, 𝑁⟩)
5554fveq2d 5702 . . 3 ((𝑀 ∈ ℕ0 ∧ 𝑁 ∈ ℕ0) → ( gcd ‘(𝑅‘0)) = ( gcd ‘⟨𝑀, 𝑁⟩))
56 df-ov 6091 . . 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 4774   ↾ cres 4778   ∘ ccom 4780  ⟶wf 5376  ‘cfv 5380  (class class class)co 6088   ∈ cmpo 6090  1st c1st 6376  2nd c2nd 6377  0cc0 8186  ℕ0cn0 9575  ℤcz 9656  ℤ≥cuz 9938   mod cmo 10781  seqcseq 10906   gcd cgcd 12756
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 4248  ax-sep 4251  ax-nul 4261  ax-pow 4313  ax-pr 4348  ax-un 4580  ax-setind 4686  ax-iinf 4737  ax-cnex 8277  ax-resscn 8278  ax-1cn 8279  ax-1re 8280  ax-icn 8281  ax-addcl 8282  ax-addrcl 8283  ax-mulcl 8284  ax-mulrcl 8285  ax-addcom 8286  ax-mulcom 8287  ax-addass 8288  ax-mulass 8289  ax-distr 8290  ax-i2m1 8291  ax-0lt1 8292  ax-1rid 8293  ax-0id 8294  ax-rnegex 8295  ax-precex 8296  ax-cnre 8297  ax-pre-ltirr 8298  ax-pre-ltwlin 8299  ax-pre-lttrn 8300  ax-pre-apti 8301  ax-pre-ltadd 8302  ax-pre-mulgt0 8303  ax-pre-mulext 8304  ax-arch 8305  ax-caucvg 8306
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 4132  df-opab 4194  df-mpt 4195  df-tr 4232  df-id 4440  df-po 4443  df-iso 4444  df-iord 4513  df-on 4515  df-ilim 4516  df-suc 4518  df-iom 4740  df-xp 4782  df-rel 4783  df-cnv 4784  df-co 4785  df-dm 4786  df-rn 4787  df-res 4788  df-ima 4789  df-iota 5340  df-fun 5382  df-fn 5383  df-f 5384  df-f1 5385  df-fo 5386  df-f1o 5387  df-fv 5388  df-riota 6041  df-ov 6091  df-oprab 6092  df-mpo 6093  df-1st 6378  df-2nd 6379  df-recs 6580  df-frec 6666  df-sup 7331  df-pnf 8369  df-mnf 8370  df-xr 8371  df-ltxr 8372  df-le 8373  df-sub 8507  df-neg 8508  df-reap 8912  df-ap 8919  df-div 9012  df-inn 9315  df-2 9373  df-3 9374  df-4 9375  df-n0 9576  df-z 9657  df-uz 9939  df-q 10037  df-rp 10073  df-fz 10430  df-fzo 10568  df-fl 10723  df-mod 10782  df-seqfrec 10907  df-exp 10998  df-cj 11630  df-re 11631  df-im 11632  df-rsqrt 11787  df-abs 11788  df-dvds 12581  df-gcd 12757
This theorem is used by: (None)
  Copyright terms: Public domain W3C validator