Metamath Proof Explorer


Theorem diophun

Description: If two sets are Diophantine, so is their union. (Contributed by Stefan O'Rear, 9-Oct-2014) (Revised by Stefan O'Rear, 6-May-2015)

Ref Expression
Assertion diophun ⊢ A ∈ Dioph ⁡ N ∧ B ∈ Dioph ⁡ N → A ∪ B ∈ Dioph ⁡ N

Proof

Step Hyp Ref Expression
1 eldiophelnn0 ⊢ A ∈ Dioph ⁡ N → N ∈ ℕ 0
2 nnex ⊢ ℕ ∈ V
3 2 jctr ⊢ N ∈ ℕ 0 → N ∈ ℕ 0 ∧ ℕ ∈ V
4 1z ⊢ 1 ∈ ℤ
5 nnuz ⊢ ℕ = ℤ ≥ 1
6 5 uzinf ⊢ 1 ∈ ℤ → ¬ ℕ ∈ Fin
7 4 6 ax-mp ⊢ ¬ ℕ ∈ Fin
8 elfznn ⊢ a ∈ 1 … N → a ∈ ℕ
9 8 ssriv ⊢ 1 … N ⊆ ℕ
10 7 9 pm3.2i ⊢ ¬ ℕ ∈ Fin ∧ 1 … N ⊆ ℕ
11 eldioph2b ⊢ N ∈ ℕ 0 ∧ ℕ ∈ V ∧ ¬ ℕ ∈ Fin ∧ 1 … N ⊆ ℕ → A ∈ Dioph ⁡ N ↔ ∃ a ∈ mzPoly ⁡ ℕ A = b | ∃ d ∈ ℕ 0 ℕ b = d ↾ 1 … N ∧ a ⁡ d = 0
12 eldioph2b ⊢ N ∈ ℕ 0 ∧ ℕ ∈ V ∧ ¬ ℕ ∈ Fin ∧ 1 … N ⊆ ℕ → B ∈ Dioph ⁡ N ↔ ∃ c ∈ mzPoly ⁡ ℕ B = b | ∃ d ∈ ℕ 0 ℕ b = d ↾ 1 … N ∧ c ⁡ d = 0
13 11 12 anbi12d ⊢ N ∈ ℕ 0 ∧ ℕ ∈ V ∧ ¬ ℕ ∈ Fin ∧ 1 … N ⊆ ℕ → A ∈ Dioph ⁡ N ∧ B ∈ Dioph ⁡ N ↔ ∃ a ∈ mzPoly ⁡ ℕ A = b | ∃ d ∈ ℕ 0 ℕ b = d ↾ 1 … N ∧ a ⁡ d = 0 ∧ ∃ c ∈ mzPoly ⁡ ℕ B = b | ∃ d ∈ ℕ 0 ℕ b = d ↾ 1 … N ∧ c ⁡ d = 0
14 3 10 13 sylancl ⊢ N ∈ ℕ 0 → A ∈ Dioph ⁡ N ∧ B ∈ Dioph ⁡ N ↔ ∃ a ∈ mzPoly ⁡ ℕ A = b | ∃ d ∈ ℕ 0 ℕ b = d ↾ 1 … N ∧ a ⁡ d = 0 ∧ ∃ c ∈ mzPoly ⁡ ℕ B = b | ∃ d ∈ ℕ 0 ℕ b = d ↾ 1 … N ∧ c ⁡ d = 0
15 reeanv ⊢ ∃ a ∈ mzPoly ⁡ ℕ ∃ c ∈ mzPoly ⁡ ℕ A = b | ∃ d ∈ ℕ 0 ℕ b = d ↾ 1 … N ∧ a ⁡ d = 0 ∧ B = b | ∃ d ∈ ℕ 0 ℕ b = d ↾ 1 … N ∧ c ⁡ d = 0 ↔ ∃ a ∈ mzPoly ⁡ ℕ A = b | ∃ d ∈ ℕ 0 ℕ b = d ↾ 1 … N ∧ a ⁡ d = 0 ∧ ∃ c ∈ mzPoly ⁡ ℕ B = b | ∃ d ∈ ℕ 0 ℕ b = d ↾ 1 … N ∧ c ⁡ d = 0
16 unab ⊢ b | ∃ d ∈ ℕ 0 ℕ b = d ↾ 1 … N ∧ a ⁡ d = 0 ∪ b | ∃ d ∈ ℕ 0 ℕ b = d ↾ 1 … N ∧ c ⁡ d = 0 = b | ∃ d ∈ ℕ 0 ℕ b = d ↾ 1 … N ∧ a ⁡ d = 0 ∨ ∃ d ∈ ℕ 0 ℕ b = d ↾ 1 … N ∧ c ⁡ d = 0
17 r19.43 ⊢ ∃ d ∈ ℕ 0 ℕ b = d ↾ 1 … N ∧ a ⁡ d = 0 ∨ b = d ↾ 1 … N ∧ c ⁡ d = 0 ↔ ∃ d ∈ ℕ 0 ℕ b = d ↾ 1 … N ∧ a ⁡ d = 0 ∨ ∃ d ∈ ℕ 0 ℕ b = d ↾ 1 … N ∧ c ⁡ d = 0
18 andi ⊢ b = d ↾ 1 … N ∧ a ⁡ d = 0 ∨ c ⁡ d = 0 ↔ b = d ↾ 1 … N ∧ a ⁡ d = 0 ∨ b = d ↾ 1 … N ∧ c ⁡ d = 0
19 zex ⊢ ℤ ∈ V
20 nn0ssz ⊢ ℕ 0 ⊆ ℤ
21 mapss ⊢ ℤ ∈ V ∧ ℕ 0 ⊆ ℤ → ℕ 0 ℕ ⊆ ℤ ℕ
22 19 20 21 mp2an ⊢ ℕ 0 ℕ ⊆ ℤ ℕ
23 22 sseli ⊢ d ∈ ℕ 0 ℕ → d ∈ ℤ ℕ
24 23 adantl ⊢ N ∈ ℕ 0 ∧ a ∈ mzPoly ⁡ ℕ ∧ c ∈ mzPoly ⁡ ℕ ∧ d ∈ ℕ 0 ℕ → d ∈ ℤ ℕ
25 fveq2 ⊢ e = d → a ⁡ e = a ⁡ d
26 fveq2 ⊢ e = d → c ⁡ e = c ⁡ d
27 25 26 oveq12d ⊢ e = d → a ⁡ e ⁢ c ⁡ e = a ⁡ d ⁢ c ⁡ d
28 eqid ⊢ e ∈ ℤ ℕ ⟼ a ⁡ e ⁢ c ⁡ e = e ∈ ℤ ℕ ⟼ a ⁡ e ⁢ c ⁡ e
29 ovex ⊢ a ⁡ d ⁢ c ⁡ d ∈ V
30 27 28 29 fvmpt ⊢ d ∈ ℤ ℕ → e ∈ ℤ ℕ ⟼ a ⁡ e ⁢ c ⁡ e ⁡ d = a ⁡ d ⁢ c ⁡ d
31 24 30 syl ⊢ N ∈ ℕ 0 ∧ a ∈ mzPoly ⁡ ℕ ∧ c ∈ mzPoly ⁡ ℕ ∧ d ∈ ℕ 0 ℕ → e ∈ ℤ ℕ ⟼ a ⁡ e ⁢ c ⁡ e ⁡ d = a ⁡ d ⁢ c ⁡ d
32 31 eqeq1d ⊢ N ∈ ℕ 0 ∧ a ∈ mzPoly ⁡ ℕ ∧ c ∈ mzPoly ⁡ ℕ ∧ d ∈ ℕ 0 ℕ → e ∈ ℤ ℕ ⟼ a ⁡ e ⁢ c ⁡ e ⁡ d = 0 ↔ a ⁡ d ⁢ c ⁡ d = 0
33 simplrl ⊢ N ∈ ℕ 0 ∧ a ∈ mzPoly ⁡ ℕ ∧ c ∈ mzPoly ⁡ ℕ ∧ d ∈ ℕ 0 ℕ → a ∈ mzPoly ⁡ ℕ
34 mzpf ⊢ a ∈ mzPoly ⁡ ℕ → a : ℤ ℕ ⟶ ℤ
35 33 34 syl ⊢ N ∈ ℕ 0 ∧ a ∈ mzPoly ⁡ ℕ ∧ c ∈ mzPoly ⁡ ℕ ∧ d ∈ ℕ 0 ℕ → a : ℤ ℕ ⟶ ℤ
36 35 24 ffvelcdmd ⊢ N ∈ ℕ 0 ∧ a ∈ mzPoly ⁡ ℕ ∧ c ∈ mzPoly ⁡ ℕ ∧ d ∈ ℕ 0 ℕ → a ⁡ d ∈ ℤ
37 36 zcnd ⊢ N ∈ ℕ 0 ∧ a ∈ mzPoly ⁡ ℕ ∧ c ∈ mzPoly ⁡ ℕ ∧ d ∈ ℕ 0 ℕ → a ⁡ d ∈ ℂ
38 simplrr ⊢ N ∈ ℕ 0 ∧ a ∈ mzPoly ⁡ ℕ ∧ c ∈ mzPoly ⁡ ℕ ∧ d ∈ ℕ 0 ℕ → c ∈ mzPoly ⁡ ℕ
39 mzpf ⊢ c ∈ mzPoly ⁡ ℕ → c : ℤ ℕ ⟶ ℤ
40 38 39 syl ⊢ N ∈ ℕ 0 ∧ a ∈ mzPoly ⁡ ℕ ∧ c ∈ mzPoly ⁡ ℕ ∧ d ∈ ℕ 0 ℕ → c : ℤ ℕ ⟶ ℤ
41 40 24 ffvelcdmd ⊢ N ∈ ℕ 0 ∧ a ∈ mzPoly ⁡ ℕ ∧ c ∈ mzPoly ⁡ ℕ ∧ d ∈ ℕ 0 ℕ → c ⁡ d ∈ ℤ
42 41 zcnd ⊢ N ∈ ℕ 0 ∧ a ∈ mzPoly ⁡ ℕ ∧ c ∈ mzPoly ⁡ ℕ ∧ d ∈ ℕ 0 ℕ → c ⁡ d ∈ ℂ
43 37 42 mul0ord ⊢ N ∈ ℕ 0 ∧ a ∈ mzPoly ⁡ ℕ ∧ c ∈ mzPoly ⁡ ℕ ∧ d ∈ ℕ 0 ℕ → a ⁡ d ⁢ c ⁡ d = 0 ↔ a ⁡ d = 0 ∨ c ⁡ d = 0
44 32 43 bitr2d ⊢ N ∈ ℕ 0 ∧ a ∈ mzPoly ⁡ ℕ ∧ c ∈ mzPoly ⁡ ℕ ∧ d ∈ ℕ 0 ℕ → a ⁡ d = 0 ∨ c ⁡ d = 0 ↔ e ∈ ℤ ℕ ⟼ a ⁡ e ⁢ c ⁡ e ⁡ d = 0
45 44 anbi2d ⊢ N ∈ ℕ 0 ∧ a ∈ mzPoly ⁡ ℕ ∧ c ∈ mzPoly ⁡ ℕ ∧ d ∈ ℕ 0 ℕ → b = d ↾ 1 … N ∧ a ⁡ d = 0 ∨ c ⁡ d = 0 ↔ b = d ↾ 1 … N ∧ e ∈ ℤ ℕ ⟼ a ⁡ e ⁢ c ⁡ e ⁡ d = 0
46 18 45 bitr3id ⊢ N ∈ ℕ 0 ∧ a ∈ mzPoly ⁡ ℕ ∧ c ∈ mzPoly ⁡ ℕ ∧ d ∈ ℕ 0 ℕ → b = d ↾ 1 … N ∧ a ⁡ d = 0 ∨ b = d ↾ 1 … N ∧ c ⁡ d = 0 ↔ b = d ↾ 1 … N ∧ e ∈ ℤ ℕ ⟼ a ⁡ e ⁢ c ⁡ e ⁡ d = 0
47 46 rexbidva ⊢ N ∈ ℕ 0 ∧ a ∈ mzPoly ⁡ ℕ ∧ c ∈ mzPoly ⁡ ℕ → ∃ d ∈ ℕ 0 ℕ b = d ↾ 1 … N ∧ a ⁡ d = 0 ∨ b = d ↾ 1 … N ∧ c ⁡ d = 0 ↔ ∃ d ∈ ℕ 0 ℕ b = d ↾ 1 … N ∧ e ∈ ℤ ℕ ⟼ a ⁡ e ⁢ c ⁡ e ⁡ d = 0
48 17 47 bitr3id ⊢ N ∈ ℕ 0 ∧ a ∈ mzPoly ⁡ ℕ ∧ c ∈ mzPoly ⁡ ℕ → ∃ d ∈ ℕ 0 ℕ b = d ↾ 1 … N ∧ a ⁡ d = 0 ∨ ∃ d ∈ ℕ 0 ℕ b = d ↾ 1 … N ∧ c ⁡ d = 0 ↔ ∃ d ∈ ℕ 0 ℕ b = d ↾ 1 … N ∧ e ∈ ℤ ℕ ⟼ a ⁡ e ⁢ c ⁡ e ⁡ d = 0
49 48 abbidv ⊢ N ∈ ℕ 0 ∧ a ∈ mzPoly ⁡ ℕ ∧ c ∈ mzPoly ⁡ ℕ → b | ∃ d ∈ ℕ 0 ℕ b = d ↾ 1 … N ∧ a ⁡ d = 0 ∨ ∃ d ∈ ℕ 0 ℕ b = d ↾ 1 … N ∧ c ⁡ d = 0 = b | ∃ d ∈ ℕ 0 ℕ b = d ↾ 1 … N ∧ e ∈ ℤ ℕ ⟼ a ⁡ e ⁢ c ⁡ e ⁡ d = 0
50 16 49 eqtrid ⊢ N ∈ ℕ 0 ∧ a ∈ mzPoly ⁡ ℕ ∧ c ∈ mzPoly ⁡ ℕ → b | ∃ d ∈ ℕ 0 ℕ b = d ↾ 1 … N ∧ a ⁡ d = 0 ∪ b | ∃ d ∈ ℕ 0 ℕ b = d ↾ 1 … N ∧ c ⁡ d = 0 = b | ∃ d ∈ ℕ 0 ℕ b = d ↾ 1 … N ∧ e ∈ ℤ ℕ ⟼ a ⁡ e ⁢ c ⁡ e ⁡ d = 0
51 simpl ⊢ N ∈ ℕ 0 ∧ a ∈ mzPoly ⁡ ℕ ∧ c ∈ mzPoly ⁡ ℕ → N ∈ ℕ 0
52 2 9 pm3.2i ⊢ ℕ ∈ V ∧ 1 … N ⊆ ℕ
53 52 a1i ⊢ N ∈ ℕ 0 ∧ a ∈ mzPoly ⁡ ℕ ∧ c ∈ mzPoly ⁡ ℕ → ℕ ∈ V ∧ 1 … N ⊆ ℕ
54 simprl ⊢ N ∈ ℕ 0 ∧ a ∈ mzPoly ⁡ ℕ ∧ c ∈ mzPoly ⁡ ℕ → a ∈ mzPoly ⁡ ℕ
55 54 34 syl ⊢ N ∈ ℕ 0 ∧ a ∈ mzPoly ⁡ ℕ ∧ c ∈ mzPoly ⁡ ℕ → a : ℤ ℕ ⟶ ℤ
56 55 feqmptd ⊢ N ∈ ℕ 0 ∧ a ∈ mzPoly ⁡ ℕ ∧ c ∈ mzPoly ⁡ ℕ → a = e ∈ ℤ ℕ ⟼ a ⁡ e
57 56 54 eqeltrrd ⊢ N ∈ ℕ 0 ∧ a ∈ mzPoly ⁡ ℕ ∧ c ∈ mzPoly ⁡ ℕ → e ∈ ℤ ℕ ⟼ a ⁡ e ∈ mzPoly ⁡ ℕ
58 simprr ⊢ N ∈ ℕ 0 ∧ a ∈ mzPoly ⁡ ℕ ∧ c ∈ mzPoly ⁡ ℕ → c ∈ mzPoly ⁡ ℕ
59 58 39 syl ⊢ N ∈ ℕ 0 ∧ a ∈ mzPoly ⁡ ℕ ∧ c ∈ mzPoly ⁡ ℕ → c : ℤ ℕ ⟶ ℤ
60 59 feqmptd ⊢ N ∈ ℕ 0 ∧ a ∈ mzPoly ⁡ ℕ ∧ c ∈ mzPoly ⁡ ℕ → c = e ∈ ℤ ℕ ⟼ c ⁡ e
61 60 58 eqeltrrd ⊢ N ∈ ℕ 0 ∧ a ∈ mzPoly ⁡ ℕ ∧ c ∈ mzPoly ⁡ ℕ → e ∈ ℤ ℕ ⟼ c ⁡ e ∈ mzPoly ⁡ ℕ
62 mzpmulmpt ⊢ e ∈ ℤ ℕ ⟼ a ⁡ e ∈ mzPoly ⁡ ℕ ∧ e ∈ ℤ ℕ ⟼ c ⁡ e ∈ mzPoly ⁡ ℕ → e ∈ ℤ ℕ ⟼ a ⁡ e ⁢ c ⁡ e ∈ mzPoly ⁡ ℕ
63 57 61 62 syl2anc ⊢ N ∈ ℕ 0 ∧ a ∈ mzPoly ⁡ ℕ ∧ c ∈ mzPoly ⁡ ℕ → e ∈ ℤ ℕ ⟼ a ⁡ e ⁢ c ⁡ e ∈ mzPoly ⁡ ℕ
64 eldioph2 ⊢ N ∈ ℕ 0 ∧ ℕ ∈ V ∧ 1 … N ⊆ ℕ ∧ e ∈ ℤ ℕ ⟼ a ⁡ e ⁢ c ⁡ e ∈ mzPoly ⁡ ℕ → b | ∃ d ∈ ℕ 0 ℕ b = d ↾ 1 … N ∧ e ∈ ℤ ℕ ⟼ a ⁡ e ⁢ c ⁡ e ⁡ d = 0 ∈ Dioph ⁡ N
65 51 53 63 64 syl3anc ⊢ N ∈ ℕ 0 ∧ a ∈ mzPoly ⁡ ℕ ∧ c ∈ mzPoly ⁡ ℕ → b | ∃ d ∈ ℕ 0 ℕ b = d ↾ 1 … N ∧ e ∈ ℤ ℕ ⟼ a ⁡ e ⁢ c ⁡ e ⁡ d = 0 ∈ Dioph ⁡ N
66 50 65 eqeltrd ⊢ N ∈ ℕ 0 ∧ a ∈ mzPoly ⁡ ℕ ∧ c ∈ mzPoly ⁡ ℕ → b | ∃ d ∈ ℕ 0 ℕ b = d ↾ 1 … N ∧ a ⁡ d = 0 ∪ b | ∃ d ∈ ℕ 0 ℕ b = d ↾ 1 … N ∧ c ⁡ d = 0 ∈ Dioph ⁡ N
67 uneq12 ⊢ A = b | ∃ d ∈ ℕ 0 ℕ b = d ↾ 1 … N ∧ a ⁡ d = 0 ∧ B = b | ∃ d ∈ ℕ 0 ℕ b = d ↾ 1 … N ∧ c ⁡ d = 0 → A ∪ B = b | ∃ d ∈ ℕ 0 ℕ b = d ↾ 1 … N ∧ a ⁡ d = 0 ∪ b | ∃ d ∈ ℕ 0 ℕ b = d ↾ 1 … N ∧ c ⁡ d = 0
68 67 eleq1d ⊢ A = b | ∃ d ∈ ℕ 0 ℕ b = d ↾ 1 … N ∧ a ⁡ d = 0 ∧ B = b | ∃ d ∈ ℕ 0 ℕ b = d ↾ 1 … N ∧ c ⁡ d = 0 → A ∪ B ∈ Dioph ⁡ N ↔ b | ∃ d ∈ ℕ 0 ℕ b = d ↾ 1 … N ∧ a ⁡ d = 0 ∪ b | ∃ d ∈ ℕ 0 ℕ b = d ↾ 1 … N ∧ c ⁡ d = 0 ∈ Dioph ⁡ N
69 66 68 syl5ibrcom ⊢ N ∈ ℕ 0 ∧ a ∈ mzPoly ⁡ ℕ ∧ c ∈ mzPoly ⁡ ℕ → A = b | ∃ d ∈ ℕ 0 ℕ b = d ↾ 1 … N ∧ a ⁡ d = 0 ∧ B = b | ∃ d ∈ ℕ 0 ℕ b = d ↾ 1 … N ∧ c ⁡ d = 0 → A ∪ B ∈ Dioph ⁡ N
70 69 rexlimdvva ⊢ N ∈ ℕ 0 → ∃ a ∈ mzPoly ⁡ ℕ ∃ c ∈ mzPoly ⁡ ℕ A = b | ∃ d ∈ ℕ 0 ℕ b = d ↾ 1 … N ∧ a ⁡ d = 0 ∧ B = b | ∃ d ∈ ℕ 0 ℕ b = d ↾ 1 … N ∧ c ⁡ d = 0 → A ∪ B ∈ Dioph ⁡ N
71 15 70 biimtrrid ⊢ N ∈ ℕ 0 → ∃ a ∈ mzPoly ⁡ ℕ A = b | ∃ d ∈ ℕ 0 ℕ b = d ↾ 1 … N ∧ a ⁡ d = 0 ∧ ∃ c ∈ mzPoly ⁡ ℕ B = b | ∃ d ∈ ℕ 0 ℕ b = d ↾ 1 … N ∧ c ⁡ d = 0 → A ∪ B ∈ Dioph ⁡ N
72 14 71 sylbid ⊢ N ∈ ℕ 0 → A ∈ Dioph ⁡ N ∧ B ∈ Dioph ⁡ N → A ∪ B ∈ Dioph ⁡ N
73 1 72 syl ⊢ A ∈ Dioph ⁡ N → A ∈ Dioph ⁡ N ∧ B ∈ Dioph ⁡ N → A ∪ B ∈ Dioph ⁡ N
74 73 anabsi5 ⊢ A ∈ Dioph ⁡ N ∧ B ∈ Dioph ⁡ N → A ∪ B ∈ Dioph ⁡ N