| 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 16508 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 7358 | . . 3 ⊢ ((1st ‘𝑋)𝐸(2nd ‘𝑋)) = (𝐸‘〈(1st ‘𝑋), (2nd ‘𝑋)〉) | |
| 2 | xp1st 7962 | . . . 4 ⊢ (𝑋 ∈ (ℕ0 × ℕ0) → (1st ‘𝑋) ∈ ℕ0) | |
| 3 | xp2nd 7963 | . . . 4 ⊢ (𝑋 ∈ (ℕ0 × ℕ0) → (2nd ‘𝑋) ∈ ℕ0) | |
| 4 | eucalgval.1 | . . . . 5 ⊢ 𝐸 = (𝑥 ∈ ℕ0, 𝑦 ∈ ℕ0 ↦ if(𝑦 = 0, 〈𝑥, 𝑦〉, 〈𝑦, (𝑥 mod 𝑦)〉)) | |
| 5 | 4 | eucalgval2 16502 | . . . 4 ⊢ (((1st ‘𝑋) ∈ ℕ0 ∧ (2nd ‘𝑋) ∈ ℕ0) → ((1st ‘𝑋)𝐸(2nd ‘𝑋)) = if((2nd ‘𝑋) = 0, 〈(1st ‘𝑋), (2nd ‘𝑋)〉, 〈(2nd ‘𝑋), ((1st ‘𝑋) mod (2nd ‘𝑋))〉)) |
| 6 | 2, 3, 5 | syl2anc 584 | . . 3 ⊢ (𝑋 ∈ (ℕ0 × ℕ0) → ((1st ‘𝑋)𝐸(2nd ‘𝑋)) = if((2nd ‘𝑋) = 0, 〈(1st ‘𝑋), (2nd ‘𝑋)〉, 〈(2nd ‘𝑋), ((1st ‘𝑋) mod (2nd ‘𝑋))〉)) |
| 7 | 1, 6 | eqtr3id 2782 | . 2 ⊢ (𝑋 ∈ (ℕ0 × ℕ0) → (𝐸‘〈(1st ‘𝑋), (2nd ‘𝑋)〉) = if((2nd ‘𝑋) = 0, 〈(1st ‘𝑋), (2nd ‘𝑋)〉, 〈(2nd ‘𝑋), ((1st ‘𝑋) mod (2nd ‘𝑋))〉)) |
| 8 | 1st2nd2 7969 | . . 3 ⊢ (𝑋 ∈ (ℕ0 × ℕ0) → 𝑋 = 〈(1st ‘𝑋), (2nd ‘𝑋)〉) | |
| 9 | 8 | fveq2d 6835 | . 2 ⊢ (𝑋 ∈ (ℕ0 × ℕ0) → (𝐸‘𝑋) = (𝐸‘〈(1st ‘𝑋), (2nd ‘𝑋)〉)) |
| 10 | 8 | fveq2d 6835 | . . . . 5 ⊢ (𝑋 ∈ (ℕ0 × ℕ0) → ( mod ‘𝑋) = ( mod ‘〈(1st ‘𝑋), (2nd ‘𝑋)〉)) |
| 11 | df-ov 7358 | . . . . 5 ⊢ ((1st ‘𝑋) mod (2nd ‘𝑋)) = ( mod ‘〈(1st ‘𝑋), (2nd ‘𝑋)〉) | |
| 12 | 10, 11 | eqtr4di 2786 | . . . 4 ⊢ (𝑋 ∈ (ℕ0 × ℕ0) → ( mod ‘𝑋) = ((1st ‘𝑋) mod (2nd ‘𝑋))) |
| 13 | 12 | opeq2d 4833 | . . 3 ⊢ (𝑋 ∈ (ℕ0 × ℕ0) → 〈(2nd ‘𝑋), ( mod ‘𝑋)〉 = 〈(2nd ‘𝑋), ((1st ‘𝑋) mod (2nd ‘𝑋))〉) |
| 14 | 8, 13 | ifeq12d 4498 | . 2 ⊢ (𝑋 ∈ (ℕ0 × ℕ0) → if((2nd ‘𝑋) = 0, 𝑋, 〈(2nd ‘𝑋), ( mod ‘𝑋)〉) = if((2nd ‘𝑋) = 0, 〈(1st ‘𝑋), (2nd ‘𝑋)〉, 〈(2nd ‘𝑋), ((1st ‘𝑋) mod (2nd ‘𝑋))〉)) |
| 15 | 7, 9, 14 | 3eqtr4d 2778 | 1 ⊢ (𝑋 ∈ (ℕ0 × ℕ0) → (𝐸‘𝑋) = if((2nd ‘𝑋) = 0, 𝑋, 〈(2nd ‘𝑋), ( mod ‘𝑋)〉)) |
| Colors of variables: wff setvar class |
| Syntax hints: → wi 4 = wceq 1541 ∈ wcel 2113 ifcif 4476 〈cop 4583 × cxp 5619 ‘cfv 6489 (class class class)co 7355 ∈ cmpo 7357 1st c1st 7928 2nd c2nd 7929 0cc0 11016 ℕ0cn0 12391 mod cmo 13783 |
| This theorem was proved from axioms: ax-mp 5 ax-1 6 ax-2 7 ax-3 8 ax-gen 1796 ax-4 1810 ax-5 1911 ax-6 1968 ax-7 2009 ax-8 2115 ax-9 2123 ax-10 2146 ax-11 2162 ax-12 2182 ax-ext 2705 ax-sep 5238 ax-nul 5248 ax-pr 5374 ax-un 7677 |
| This theorem depends on definitions: df-bi 207 df-an 396 df-or 848 df-3an 1088 df-tru 1544 df-fal 1554 df-ex 1781 df-nf 1785 df-sb 2068 df-mo 2537 df-eu 2566 df-clab 2712 df-cleq 2725 df-clel 2808 df-nfc 2883 df-ne 2931 df-ral 3050 df-rex 3059 df-rab 3398 df-v 3440 df-sbc 3739 df-dif 3902 df-un 3904 df-in 3906 df-ss 3916 df-nul 4285 df-if 4477 df-sn 4578 df-pr 4580 df-op 4584 df-uni 4861 df-br 5096 df-opab 5158 df-mpt 5177 df-id 5516 df-xp 5627 df-rel 5628 df-cnv 5629 df-co 5630 df-dm 5631 df-rn 5632 df-iota 6445 df-fun 6491 df-fv 6497 df-ov 7358 df-oprab 7359 df-mpo 7360 df-1st 7930 df-2nd 7931 |
| This theorem is referenced by: eucalginv 16505 eucalglt 16506 |
| Copyright terms: Public domain | W3C validator |