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

Theorem eucalgval 16549
Description: Euclid's Algorithm eucalg 16554 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 7366 . . 3 ((1st𝑋)𝐸(2nd𝑋)) = (𝐸‘⟨(1st𝑋), (2nd𝑋)⟩)
2 xp1st 7970 . . . 4 (𝑋 ∈ (ℕ0 × ℕ0) → (1st𝑋) ∈ ℕ0)
3 xp2nd 7971 . . . 4 (𝑋 ∈ (ℕ0 × ℕ0) → (2nd𝑋) ∈ ℕ0)
4 eucalgval.1 . . . . 5 𝐸 = (𝑥 ∈ ℕ0, 𝑦 ∈ ℕ0 ↦ if(𝑦 = 0, ⟨𝑥, 𝑦⟩, ⟨𝑦, (𝑥 mod 𝑦)⟩))
54eucalgval2 16548 . . . 4 (((1st𝑋) ∈ ℕ0 ∧ (2nd𝑋) ∈ ℕ0) → ((1st𝑋)𝐸(2nd𝑋)) = if((2nd𝑋) = 0, ⟨(1st𝑋), (2nd𝑋)⟩, ⟨(2nd𝑋), ((1st𝑋) mod (2nd𝑋))⟩))
62, 3, 5syl2anc 590 . . 3 (𝑋 ∈ (ℕ0 × ℕ0) → ((1st𝑋)𝐸(2nd𝑋)) = if((2nd𝑋) = 0, ⟨(1st𝑋), (2nd𝑋)⟩, ⟨(2nd𝑋), ((1st𝑋) mod (2nd𝑋))⟩))
71, 6eqtr3id 2789 . 2 (𝑋 ∈ (ℕ0 × ℕ0) → (𝐸‘⟨(1st𝑋), (2nd𝑋)⟩) = if((2nd𝑋) = 0, ⟨(1st𝑋), (2nd𝑋)⟩, ⟨(2nd𝑋), ((1st𝑋) mod (2nd𝑋))⟩))
8 1st2nd2 7977 . . 3 (𝑋 ∈ (ℕ0 × ℕ0) → 𝑋 = ⟨(1st𝑋), (2nd𝑋)⟩)
98fveq2d 6838 . 2 (𝑋 ∈ (ℕ0 × ℕ0) → (𝐸𝑋) = (𝐸‘⟨(1st𝑋), (2nd𝑋)⟩))
108fveq2d 6838 . . . . 5 (𝑋 ∈ (ℕ0 × ℕ0) → ( mod ‘𝑋) = ( mod ‘⟨(1st𝑋), (2nd𝑋)⟩))
11 df-ov 7366 . . . . 5 ((1st𝑋) mod (2nd𝑋)) = ( mod ‘⟨(1st𝑋), (2nd𝑋)⟩)
1210, 11eqtr4di 2793 . . . 4 (𝑋 ∈ (ℕ0 × ℕ0) → ( mod ‘𝑋) = ((1st𝑋) mod (2nd𝑋)))
1312opeq2d 4818 . . 3 (𝑋 ∈ (ℕ0 × ℕ0) → ⟨(2nd𝑋), ( mod ‘𝑋)⟩ = ⟨(2nd𝑋), ((1st𝑋) mod (2nd𝑋))⟩)
148, 13ifeq12d 4483 . 2 (𝑋 ∈ (ℕ0 × ℕ0) → if((2nd𝑋) = 0, 𝑋, ⟨(2nd𝑋), ( mod ‘𝑋)⟩) = if((2nd𝑋) = 0, ⟨(1st𝑋), (2nd𝑋)⟩, ⟨(2nd𝑋), ((1st𝑋) mod (2nd𝑋))⟩))
157, 9, 143eqtr4d 2785 1 (𝑋 ∈ (ℕ0 × ℕ0) → (𝐸𝑋) = if((2nd𝑋) = 0, 𝑋, ⟨(2nd𝑋), ( mod ‘𝑋)⟩))
Colors of variables: wff setvar class
Syntax hints:  wi 4   = wceq 1547  wcel 2119  ifcif 4461  cop 4568   × cxp 5623  cfv 6492  (class class class)co 7363  cmpo 7365  1st c1st 7936  2nd c2nd 7937  0cc0 11036  0cn0 12435   mod cmo 13826
This theorem was proved from axioms:  ax-mp 5  ax-1 6  ax-2 7  ax-3 8  ax-gen 1802  ax-4 1816  ax-5 1917  ax-6 1974  ax-7 2015  ax-8 2121  ax-9 2129  ax-10 2152  ax-11 2168  ax-12 2189  ax-ext 2712  ax-sep 5225  ax-nul 5235  ax-pr 5369  ax-un 7685
This theorem depends on definitions:  df-bi 208  df-an 397  df-or 854  df-3an 1094  df-tru 1550  df-fal 1560  df-ex 1787  df-nf 1791  df-sb 2074  df-mo 2543  df-eu 2573  df-clab 2719  df-cleq 2732  df-clel 2815  df-nfc 2889  df-ne 2936  df-ral 3055  df-rex 3065  df-rab 3393  df-v 3434  df-sbc 3731  df-dif 3893  df-un 3895  df-in 3897  df-ss 3907  df-nul 4269  df-if 4462  df-sn 4563  df-pr 4565  df-op 4569  df-uni 4846  df-br 5080  df-opab 5142  df-mpt 5161  df-id 5520  df-xp 5631  df-rel 5632  df-cnv 5633  df-co 5634  df-dm 5635  df-rn 5636  df-iota 6448  df-fun 6494  df-fv 6500  df-ov 7366  df-oprab 7367  df-mpo 7368  df-1st 7938  df-2nd 7939
This theorem is referenced by:  eucalginv  16551  eucalglt  16552
  Copyright terms: Public domain W3C validator