Metamath Proof Explorer


Theorem gcdass

Description: Associative law for gcd operator. Theorem 1.4(b) in ApostolNT p. 16. (Contributed by Scott Fenton, 2-Apr-2014) (Revised by Mario Carneiro, 19-Apr-2014)

Ref Expression
Assertion gcdass ⊢ N ∈ ℤ ∧ M ∈ ℤ ∧ P ∈ ℤ → N gcd M gcd P = N gcd M gcd P

Proof

Step Hyp Ref Expression
1 anass ⊢ N = 0 ∧ M = 0 ∧ P = 0 ↔ N = 0 ∧ M = 0 ∧ P = 0
2 anass ⊢ x ∥ N ∧ x ∥ M ∧ x ∥ P ↔ x ∥ N ∧ x ∥ M ∧ x ∥ P
3 2 rabbii ⊢ x ∈ ℤ | x ∥ N ∧ x ∥ M ∧ x ∥ P = x ∈ ℤ | x ∥ N ∧ x ∥ M ∧ x ∥ P
4 3 supeq1i ⊢ sup x ∈ ℤ | x ∥ N ∧ x ∥ M ∧ x ∥ P ℝ < = sup x ∈ ℤ | x ∥ N ∧ x ∥ M ∧ x ∥ P ℝ <
5 1 4 ifbieq2i ⊢ if N = 0 ∧ M = 0 ∧ P = 0 0 sup x ∈ ℤ | x ∥ N ∧ x ∥ M ∧ x ∥ P ℝ < = if N = 0 ∧ M = 0 ∧ P = 0 0 sup x ∈ ℤ | x ∥ N ∧ x ∥ M ∧ x ∥ P ℝ <
6 gcdcl ⊢ N ∈ ℤ ∧ M ∈ ℤ → N gcd M ∈ ℕ 0
7 6 3adant3 ⊢ N ∈ ℤ ∧ M ∈ ℤ ∧ P ∈ ℤ → N gcd M ∈ ℕ 0
8 7 nn0zd ⊢ N ∈ ℤ ∧ M ∈ ℤ ∧ P ∈ ℤ → N gcd M ∈ ℤ
9 simp3 ⊢ N ∈ ℤ ∧ M ∈ ℤ ∧ P ∈ ℤ → P ∈ ℤ
10 gcdval ⊢ N gcd M ∈ ℤ ∧ P ∈ ℤ → N gcd M gcd P = if N gcd M = 0 ∧ P = 0 0 sup x ∈ ℤ | x ∥ N gcd M ∧ x ∥ P ℝ <
11 8 9 10 syl2anc ⊢ N ∈ ℤ ∧ M ∈ ℤ ∧ P ∈ ℤ → N gcd M gcd P = if N gcd M = 0 ∧ P = 0 0 sup x ∈ ℤ | x ∥ N gcd M ∧ x ∥ P ℝ <
12 gcdeq0 ⊢ N ∈ ℤ ∧ M ∈ ℤ → N gcd M = 0 ↔ N = 0 ∧ M = 0
13 12 3adant3 ⊢ N ∈ ℤ ∧ M ∈ ℤ ∧ P ∈ ℤ → N gcd M = 0 ↔ N = 0 ∧ M = 0
14 13 anbi1d ⊢ N ∈ ℤ ∧ M ∈ ℤ ∧ P ∈ ℤ → N gcd M = 0 ∧ P = 0 ↔ N = 0 ∧ M = 0 ∧ P = 0
15 14 bicomd ⊢ N ∈ ℤ ∧ M ∈ ℤ ∧ P ∈ ℤ → N = 0 ∧ M = 0 ∧ P = 0 ↔ N gcd M = 0 ∧ P = 0
16 simpr ⊢ N ∈ ℤ ∧ M ∈ ℤ ∧ P ∈ ℤ ∧ x ∈ ℤ → x ∈ ℤ
17 simpl1 ⊢ N ∈ ℤ ∧ M ∈ ℤ ∧ P ∈ ℤ ∧ x ∈ ℤ → N ∈ ℤ
18 simpl2 ⊢ N ∈ ℤ ∧ M ∈ ℤ ∧ P ∈ ℤ ∧ x ∈ ℤ → M ∈ ℤ
19 dvdsgcdb ⊢ x ∈ ℤ ∧ N ∈ ℤ ∧ M ∈ ℤ → x ∥ N ∧ x ∥ M ↔ x ∥ N gcd M
20 16 17 18 19 syl3anc ⊢ N ∈ ℤ ∧ M ∈ ℤ ∧ P ∈ ℤ ∧ x ∈ ℤ → x ∥ N ∧ x ∥ M ↔ x ∥ N gcd M
21 20 anbi1d ⊢ N ∈ ℤ ∧ M ∈ ℤ ∧ P ∈ ℤ ∧ x ∈ ℤ → x ∥ N ∧ x ∥ M ∧ x ∥ P ↔ x ∥ N gcd M ∧ x ∥ P
22 21 rabbidva ⊢ N ∈ ℤ ∧ M ∈ ℤ ∧ P ∈ ℤ → x ∈ ℤ | x ∥ N ∧ x ∥ M ∧ x ∥ P = x ∈ ℤ | x ∥ N gcd M ∧ x ∥ P
23 22 supeq1d ⊢ N ∈ ℤ ∧ M ∈ ℤ ∧ P ∈ ℤ → sup x ∈ ℤ | x ∥ N ∧ x ∥ M ∧ x ∥ P ℝ < = sup x ∈ ℤ | x ∥ N gcd M ∧ x ∥ P ℝ <
24 15 23 ifbieq2d ⊢ N ∈ ℤ ∧ M ∈ ℤ ∧ P ∈ ℤ → if N = 0 ∧ M = 0 ∧ P = 0 0 sup x ∈ ℤ | x ∥ N ∧ x ∥ M ∧ x ∥ P ℝ < = if N gcd M = 0 ∧ P = 0 0 sup x ∈ ℤ | x ∥ N gcd M ∧ x ∥ P ℝ <
25 11 24 eqtr4d ⊢ N ∈ ℤ ∧ M ∈ ℤ ∧ P ∈ ℤ → N gcd M gcd P = if N = 0 ∧ M = 0 ∧ P = 0 0 sup x ∈ ℤ | x ∥ N ∧ x ∥ M ∧ x ∥ P ℝ <
26 simp1 ⊢ N ∈ ℤ ∧ M ∈ ℤ ∧ P ∈ ℤ → N ∈ ℤ
27 gcdcl ⊢ M ∈ ℤ ∧ P ∈ ℤ → M gcd P ∈ ℕ 0
28 27 3adant1 ⊢ N ∈ ℤ ∧ M ∈ ℤ ∧ P ∈ ℤ → M gcd P ∈ ℕ 0
29 28 nn0zd ⊢ N ∈ ℤ ∧ M ∈ ℤ ∧ P ∈ ℤ → M gcd P ∈ ℤ
30 gcdval ⊢ N ∈ ℤ ∧ M gcd P ∈ ℤ → N gcd M gcd P = if N = 0 ∧ M gcd P = 0 0 sup x ∈ ℤ | x ∥ N ∧ x ∥ M gcd P ℝ <
31 26 29 30 syl2anc ⊢ N ∈ ℤ ∧ M ∈ ℤ ∧ P ∈ ℤ → N gcd M gcd P = if N = 0 ∧ M gcd P = 0 0 sup x ∈ ℤ | x ∥ N ∧ x ∥ M gcd P ℝ <
32 gcdeq0 ⊢ M ∈ ℤ ∧ P ∈ ℤ → M gcd P = 0 ↔ M = 0 ∧ P = 0
33 32 3adant1 ⊢ N ∈ ℤ ∧ M ∈ ℤ ∧ P ∈ ℤ → M gcd P = 0 ↔ M = 0 ∧ P = 0
34 33 anbi2d ⊢ N ∈ ℤ ∧ M ∈ ℤ ∧ P ∈ ℤ → N = 0 ∧ M gcd P = 0 ↔ N = 0 ∧ M = 0 ∧ P = 0
35 34 bicomd ⊢ N ∈ ℤ ∧ M ∈ ℤ ∧ P ∈ ℤ → N = 0 ∧ M = 0 ∧ P = 0 ↔ N = 0 ∧ M gcd P = 0
36 simpl3 ⊢ N ∈ ℤ ∧ M ∈ ℤ ∧ P ∈ ℤ ∧ x ∈ ℤ → P ∈ ℤ
37 dvdsgcdb ⊢ x ∈ ℤ ∧ M ∈ ℤ ∧ P ∈ ℤ → x ∥ M ∧ x ∥ P ↔ x ∥ M gcd P
38 16 18 36 37 syl3anc ⊢ N ∈ ℤ ∧ M ∈ ℤ ∧ P ∈ ℤ ∧ x ∈ ℤ → x ∥ M ∧ x ∥ P ↔ x ∥ M gcd P
39 38 anbi2d ⊢ N ∈ ℤ ∧ M ∈ ℤ ∧ P ∈ ℤ ∧ x ∈ ℤ → x ∥ N ∧ x ∥ M ∧ x ∥ P ↔ x ∥ N ∧ x ∥ M gcd P
40 39 rabbidva ⊢ N ∈ ℤ ∧ M ∈ ℤ ∧ P ∈ ℤ → x ∈ ℤ | x ∥ N ∧ x ∥ M ∧ x ∥ P = x ∈ ℤ | x ∥ N ∧ x ∥ M gcd P
41 40 supeq1d ⊢ N ∈ ℤ ∧ M ∈ ℤ ∧ P ∈ ℤ → sup x ∈ ℤ | x ∥ N ∧ x ∥ M ∧ x ∥ P ℝ < = sup x ∈ ℤ | x ∥ N ∧ x ∥ M gcd P ℝ <
42 35 41 ifbieq2d ⊢ N ∈ ℤ ∧ M ∈ ℤ ∧ P ∈ ℤ → if N = 0 ∧ M = 0 ∧ P = 0 0 sup x ∈ ℤ | x ∥ N ∧ x ∥ M ∧ x ∥ P ℝ < = if N = 0 ∧ M gcd P = 0 0 sup x ∈ ℤ | x ∥ N ∧ x ∥ M gcd P ℝ <
43 31 42 eqtr4d ⊢ N ∈ ℤ ∧ M ∈ ℤ ∧ P ∈ ℤ → N gcd M gcd P = if N = 0 ∧ M = 0 ∧ P = 0 0 sup x ∈ ℤ | x ∥ N ∧ x ∥ M ∧ x ∥ P ℝ <
44 5 25 43 3eqtr4a ⊢ N ∈ ℤ ∧ M ∈ ℤ ∧ P ∈ ℤ → N gcd M gcd P = N gcd M gcd P