| Metamath Proof Explorer |
< Previous
Next >
Nearby theorems |
||
| Mirrors > Home > MPE Home > Th. List > eucalgval | Structured version Visualization version GIF version | ||
| Description: Euclid's Algorithm eucalg 16651 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.) |
| Ref | Expression |
|---|---|
| eucalgval.1 | ⊢ 𝐸 = (𝑥 ∈ ℕ0, 𝑦 ∈ ℕ0 ↦ if(𝑦 = 0, 〈𝑥, 𝑦〉, 〈𝑦, (𝑥 mod 𝑦)〉)) |
| Ref | Expression |
|---|---|
| eucalgval | ⊢ (𝑋 ∈ (ℕ0 × ℕ0) → (𝐸‘𝑋) = if((2nd ‘𝑋) = 0, 𝑋, 〈(2nd ‘𝑋), ( mod ‘𝑋)〉)) |
| Step | Hyp | Ref | Expression |
|---|---|---|---|
| 1 | df-ov 7415 | . . 3 ⊢ ((1st ‘𝑋)𝐸(2nd ‘𝑋)) = (𝐸‘〈(1st ‘𝑋), (2nd ‘𝑋)〉) | |
| 2 | xp1st 8016 | . . . 4 ⊢ (𝑋 ∈ (ℕ0 × ℕ0) → (1st ‘𝑋) ∈ ℕ0) | |
| 3 | xp2nd 8017 | . . . 4 ⊢ (𝑋 ∈ (ℕ0 × ℕ0) → (2nd ‘𝑋) ∈ ℕ0) | |
| 4 | eucalgval.1 | . . . . 5 ⊢ 𝐸 = (𝑥 ∈ ℕ0, 𝑦 ∈ ℕ0 ↦ if(𝑦 = 0, 〈𝑥, 𝑦〉, 〈𝑦, (𝑥 mod 𝑦)〉)) | |
| 5 | 4 | eucalgval2 16645 | . . . 4 ⊢ (((1st ‘𝑋) ∈ ℕ0 ∧ (2nd ‘𝑋) ∈ ℕ0) → ((1st ‘𝑋)𝐸(2nd ‘𝑋)) = if((2nd ‘𝑋) = 0, 〈(1st ‘𝑋), (2nd ‘𝑋)〉, 〈(2nd ‘𝑋), ((1st ‘𝑋) mod (2nd ‘𝑋))〉)) |
| 6 | 2, 3, 5 | syl2anc 595 | . . 3 ⊢ (𝑋 ∈ (ℕ0 × ℕ0) → ((1st ‘𝑋)𝐸(2nd ‘𝑋)) = if((2nd ‘𝑋) = 0, 〈(1st ‘𝑋), (2nd ‘𝑋)〉, 〈(2nd ‘𝑋), ((1st ‘𝑋) mod (2nd ‘𝑋))〉)) |
| 7 | 1, 6 | eqtr3id 2811 | . 2 ⊢ (𝑋 ∈ (ℕ0 × ℕ0) → (𝐸‘〈(1st ‘𝑋), (2nd ‘𝑋)〉) = if((2nd ‘𝑋) = 0, 〈(1st ‘𝑋), (2nd ‘𝑋)〉, 〈(2nd ‘𝑋), ((1st ‘𝑋) mod (2nd ‘𝑋))〉)) |
| 8 | 1st2nd2 8023 | . . 3 ⊢ (𝑋 ∈ (ℕ0 × ℕ0) → 𝑋 = 〈(1st ‘𝑋), (2nd ‘𝑋)〉) | |
| 9 | 8 | fveq2d 6885 | . 2 ⊢ (𝑋 ∈ (ℕ0 × ℕ0) → (𝐸‘𝑋) = (𝐸‘〈(1st ‘𝑋), (2nd ‘𝑋)〉)) |
| 10 | 8 | fveq2d 6885 | . . . . 5 ⊢ (𝑋 ∈ (ℕ0 × ℕ0) → ( mod ‘𝑋) = ( mod ‘〈(1st ‘𝑋), (2nd ‘𝑋)〉)) |
| 11 | df-ov 7415 | . . . . 5 ⊢ ((1st ‘𝑋) mod (2nd ‘𝑋)) = ( mod ‘〈(1st ‘𝑋), (2nd ‘𝑋)〉) | |
| 12 | 10, 11 | eqtr4di 2815 | . . . 4 ⊢ (𝑋 ∈ (ℕ0 × ℕ0) → ( mod ‘𝑋) = ((1st ‘𝑋) mod (2nd ‘𝑋))) |
| 13 | 12 | opeq2d 4844 | . . 3 ⊢ (𝑋 ∈ (ℕ0 × ℕ0) → 〈(2nd ‘𝑋), ( mod ‘𝑋)〉 = 〈(2nd ‘𝑋), ((1st ‘𝑋) mod (2nd ‘𝑋))〉) |
| 14 | 8, 13 | ifeq12d 4508 | . 2 ⊢ (𝑋 ∈ (ℕ0 × ℕ0) → if((2nd ‘𝑋) = 0, 𝑋, 〈(2nd ‘𝑋), ( mod ‘𝑋)〉) = if((2nd ‘𝑋) = 0, 〈(1st ‘𝑋), (2nd ‘𝑋)〉, 〈(2nd ‘𝑋), ((1st ‘𝑋) mod (2nd ‘𝑋))〉)) |
| 15 | 7, 9, 14 | 3eqtr4d 2807 | 1 ⊢ (𝑋 ∈ (ℕ0 × ℕ0) → (𝐸‘𝑋) = if((2nd ‘𝑋) = 0, 𝑋, 〈(2nd ‘𝑋), ( mod ‘𝑋)〉)) |
| Colors of variables: wff setvar class |
| This proof depends on syntax axioms: → wi 4 = wceq 1569 ∈ wcel 2142 ifcif 4486 〈cop 4594 × cxp 5658 ‘cfv 6536 (class class class)co 7412 ∈ cmpo 7414 1st c1st 7982 2nd c2nd 7983 0cc0 11106 ℕ0cn0 12510 mod cmo 13909 |
| This proof depends on axioms: ax-mp 5 ax-1 6 ax-2 7 ax-3 8 ax-gen 1824 ax-4 1838 ax-5 1939 ax-6 1996 ax-7 2037 ax-8 2144 ax-9 2152 ax-10 2175 ax-11 2191 ax-12 2212 ax-ext 2734 ax-sep 5256 ax-nul 5268 ax-pr 5403 ax-un 7734 |
| This proof depends on definitions: df-bi 210 df-an 401 df-or 861 df-3an 1104 df-tru 1572 df-fal 1582 df-ex 1809 df-nf 1813 df-sb 2096 df-mo 2566 df-eu 2596 df-clab 2741 df-cleq 2754 df-clel 2837 df-nfc 2911 df-ne 2958 df-ral 3079 df-rex 3089 df-rab 3416 df-v 3456 df-sbc 3744 df-dif 3907 df-un 3909 df-in 3911 df-ss 3921 df-nul 4286 df-if 4487 df-sn 4589 df-pr 4591 df-op 4595 df-uni 4872 df-br 5109 df-opab 5173 df-mpt 5192 df-id 5555 df-xp 5666 df-rel 5667 df-cnv 5668 df-co 5669 df-dm 5670 df-rn 5671 df-iota 6492 df-fun 6538 df-fv 6544 df-ov 7415 df-oprab 7416 df-mpo 7417 df-1st 7984 df-2nd 7985 |
| This theorem is used by: eucalginv 16648 eucalglt 16649 |
| Copyright terms: Public domain | W3C validator |