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

Theorem eucalgval 12858
Description: Euclid's Algorithm eucalg 12863 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.

The value of the step function 𝐸 for Euclid's Algorithm. (Contributed by Paul Chapman, 31-Mar-2011.) (Revised by Mario Carneiro, 28-May-2014.)

Hypothesis
Ref Expression
eucalgval.1 𝐸 = (𝑥 ∈ ℕ0, 𝑦 ∈ ℕ0 ↦ if(𝑦 = 0, ⟨𝑥, 𝑦⟩, ⟨𝑦, (𝑥 mod 𝑦)⟩))
Assertion
Ref Expression
eucalgval (𝑋 ∈ (ℕ0 × ℕ0) → (𝐸‘𝑋) = if((2nd ‘𝑋) = 0, 𝑋, ⟨(2nd ‘𝑋), ( mod ‘𝑋)⟩))
Distinct variable group:   𝑥,𝑦,𝑋
Allowed substitution hints:   𝐸(𝑥, 𝑦)

Proof of Theorem eucalgval
StepHypRef Expression
1 df-ov 6091 . . 3 ((1st ‘𝑋)𝐸(2nd ‘𝑋)) = (𝐸‘⟨(1st ‘𝑋), (2nd ‘𝑋)⟩)
2 xp1st 6403 . . . 4 (𝑋 ∈ (ℕ0 × ℕ0) → (1st ‘𝑋) ∈ ℕ0)
3 xp2nd 6404 . . . 4 (𝑋 ∈ (ℕ0 × ℕ0) → (2nd ‘𝑋) ∈ ℕ0)
4 eucalgval.1 . . . . 5 𝐸 = (𝑥 ∈ ℕ0, 𝑦 ∈ ℕ0 ↦ if(𝑦 = 0, ⟨𝑥, 𝑦⟩, ⟨𝑦, (𝑥 mod 𝑦)⟩))
54eucalgval2 12857 . . . 4 (((1st ‘𝑋) ∈ ℕ0 ∧ (2nd ‘𝑋) ∈ ℕ0) → ((1st ‘𝑋)𝐸(2nd ‘𝑋)) = if((2nd ‘𝑋) = 0, ⟨(1st ‘𝑋), (2nd ‘𝑋)⟩, ⟨(2nd ‘𝑋), ((1st ‘𝑋) mod (2nd ‘𝑋))⟩))
62, 3, 5syl2anc 415 . . 3 (𝑋 ∈ (ℕ0 × ℕ0) → ((1st ‘𝑋)𝐸(2nd ‘𝑋)) = if((2nd ‘𝑋) = 0, ⟨(1st ‘𝑋), (2nd ‘𝑋)⟩, ⟨(2nd ‘𝑋), ((1st ‘𝑋) mod (2nd ‘𝑋))⟩))
71, 6eqtr3id 2285 . 2 (𝑋 ∈ (ℕ0 × ℕ0) → (𝐸‘⟨(1st ‘𝑋), (2nd ‘𝑋)⟩) = if((2nd ‘𝑋) = 0, ⟨(1st ‘𝑋), (2nd ‘𝑋)⟩, ⟨(2nd ‘𝑋), ((1st ‘𝑋) mod (2nd ‘𝑋))⟩))
8 1st2nd2 6413 . . 3 (𝑋 ∈ (ℕ0 × ℕ0) → 𝑋 = ⟨(1st ‘𝑋), (2nd ‘𝑋)⟩)
98fveq2d 5702 . 2 (𝑋 ∈ (ℕ0 × ℕ0) → (𝐸‘𝑋) = (𝐸‘⟨(1st ‘𝑋), (2nd ‘𝑋)⟩))
108fveq2d 5702 . . . . 5 (𝑋 ∈ (ℕ0 × ℕ0) → ( mod ‘𝑋) = ( mod ‘⟨(1st ‘𝑋), (2nd ‘𝑋)⟩))
11 df-ov 6091 . . . . 5 ((1st ‘𝑋) mod (2nd ‘𝑋)) = ( mod ‘⟨(1st ‘𝑋), (2nd ‘𝑋)⟩)
1210, 11eqtr4di 2289 . . . 4 (𝑋 ∈ (ℕ0 × ℕ0) → ( mod ‘𝑋) = ((1st ‘𝑋) mod (2nd ‘𝑋)))
1312opeq2d 3911 . . 3 (𝑋 ∈ (ℕ0 × ℕ0) → ⟨(2nd ‘𝑋), ( mod ‘𝑋)⟩ = ⟨(2nd ‘𝑋), ((1st ‘𝑋) mod (2nd ‘𝑋))⟩)
148, 13ifeq12d 3660 . 2 (𝑋 ∈ (ℕ0 × ℕ0) → if((2nd ‘𝑋) = 0, 𝑋, ⟨(2nd ‘𝑋), ( mod ‘𝑋)⟩) = if((2nd ‘𝑋) = 0, ⟨(1st ‘𝑋), (2nd ‘𝑋)⟩, ⟨(2nd ‘𝑋), ((1st ‘𝑋) mod (2nd ‘𝑋))⟩))
157, 9, 143eqtr4d 2281 1 (𝑋 ∈ (ℕ0 × ℕ0) → (𝐸‘𝑋) = if((2nd ‘𝑋) = 0, 𝑋, ⟨(2nd ‘𝑋), ( mod ‘𝑋)⟩))
Colors of variables:    wff set class
This proof depends on syntax axioms:   → wi 4   = wceq 1402   ∈ wcel 2209  ifcif 3638  ⟨cop 3712   × cxp 4774  ‘cfv 5380  (class class class)co 6088   ∈ cmpo 6090  1st c1st 6376  2nd c2nd 6377  0cc0 8186  ℕ0cn0 9575   mod cmo 10781
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-sep 4251  ax-pow 4313  ax-pr 4348  ax-un 4580  ax-setind 4686  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
This proof depends on definitions:  df-bi 117  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-id 4440  df-po 4443  df-iso 4444  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-fv 5388  df-riota 6041  df-ov 6091  df-oprab 6092  df-mpo 6093  df-1st 6378  df-2nd 6379  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-n0 9576  df-z 9657  df-q 10037  df-rp 10073  df-fl 10723  df-mod 10782
This theorem is used by:  eucalginv  12860  eucalglt  12861
  Copyright terms: Public domain W3C validator