Metamath Proof Explorer


Theorem eucalgf

Description: Domain and codomain of the step function E for Euclid's Algorithm. (Contributed by Paul Chapman, 31-Mar-2011) (Revised by Mario Carneiro, 28-May-2014)

Ref Expression
Hypothesis eucalgval.1 ⊢ E = x ∈ ℕ 0 , y ∈ ℕ 0 ⟼ if y = 0 x y y x mod y
Assertion eucalgf ⊢ E : ℕ 0 × ℕ 0 ⟶ ℕ 0 × ℕ 0

Proof

Step Hyp Ref Expression
1 eucalgval.1 ⊢ E = x ∈ ℕ 0 , y ∈ ℕ 0 ⟼ if y = 0 x y y x mod y
2 nnne0 ⊢ y ∈ ℕ → y ≠ 0
3 2 adantl ⊢ x ∈ ℕ 0 ∧ y ∈ ℕ → y ≠ 0
4 3 neneqd ⊢ x ∈ ℕ 0 ∧ y ∈ ℕ → ¬ y = 0
5 4 iffalsed ⊢ x ∈ ℕ 0 ∧ y ∈ ℕ → if y = 0 x y y x mod y = y x mod y
6 nnnn0 ⊢ y ∈ ℕ → y ∈ ℕ 0
7 6 adantl ⊢ x ∈ ℕ 0 ∧ y ∈ ℕ → y ∈ ℕ 0
8 nn0z ⊢ x ∈ ℕ 0 → x ∈ ℤ
9 zmodcl ⊢ x ∈ ℤ ∧ y ∈ ℕ → x mod y ∈ ℕ 0
10 8 9 sylan ⊢ x ∈ ℕ 0 ∧ y ∈ ℕ → x mod y ∈ ℕ 0
11 7 10 opelxpd ⊢ x ∈ ℕ 0 ∧ y ∈ ℕ → y x mod y ∈ ℕ 0 × ℕ 0
12 5 11 eqeltrd ⊢ x ∈ ℕ 0 ∧ y ∈ ℕ → if y = 0 x y y x mod y ∈ ℕ 0 × ℕ 0
13 12 adantlr ⊢ x ∈ ℕ 0 ∧ y ∈ ℕ 0 ∧ y ∈ ℕ → if y = 0 x y y x mod y ∈ ℕ 0 × ℕ 0
14 iftrue ⊢ y = 0 → if y = 0 x y y x mod y = x y
15 14 adantl ⊢ x ∈ ℕ 0 ∧ y ∈ ℕ 0 ∧ y = 0 → if y = 0 x y y x mod y = x y
16 opelxpi ⊢ x ∈ ℕ 0 ∧ y ∈ ℕ 0 → x y ∈ ℕ 0 × ℕ 0
17 16 adantr ⊢ x ∈ ℕ 0 ∧ y ∈ ℕ 0 ∧ y = 0 → x y ∈ ℕ 0 × ℕ 0
18 15 17 eqeltrd ⊢ x ∈ ℕ 0 ∧ y ∈ ℕ 0 ∧ y = 0 → if y = 0 x y y x mod y ∈ ℕ 0 × ℕ 0
19 elnn0 ⊢ y ∈ ℕ 0 ↔ y ∈ ℕ ∨ y = 0
20 19 bilani ⊢ x ∈ ℕ 0 ∧ y ∈ ℕ 0 → y ∈ ℕ ∨ y = 0
21 13 18 20 mpjaodan ⊢ x ∈ ℕ 0 ∧ y ∈ ℕ 0 → if y = 0 x y y x mod y ∈ ℕ 0 × ℕ 0
22 21 rgen2 ⊢ ∀ x ∈ ℕ 0 ∀ y ∈ ℕ 0 if y = 0 x y y x mod y ∈ ℕ 0 × ℕ 0
23 1 fmpo ⊢ ∀ x ∈ ℕ 0 ∀ y ∈ ℕ 0 if y = 0 x y y x mod y ∈ ℕ 0 × ℕ 0 ↔ E : ℕ 0 × ℕ 0 ⟶ ℕ 0 × ℕ 0
24 22 23 mpbi ⊢ E : ℕ 0 × ℕ 0 ⟶ ℕ 0 × ℕ 0