Metamath Proof Explorer


Theorem eldioph

Description: Condition for a set to be Diophantine (unpacking existential quantifier). (Contributed by Stefan O'Rear, 5-Oct-2014)

Ref Expression
Assertion eldioph ⊢ N ∈ ℕ 0 ∧ K ∈ ℤ ≥ N ∧ P ∈ mzPoly ⁡ 1 … K → t | ∃ u ∈ ℕ 0 1 … K t = u ↾ 1 … N ∧ P ⁡ u = 0 ∈ Dioph ⁡ N

Proof

Step Hyp Ref Expression
1 simp1 ⊢ N ∈ ℕ 0 ∧ K ∈ ℤ ≥ N ∧ P ∈ mzPoly ⁡ 1 … K → N ∈ ℕ 0
2 simp2 ⊢ N ∈ ℕ 0 ∧ K ∈ ℤ ≥ N ∧ P ∈ mzPoly ⁡ 1 … K → K ∈ ℤ ≥ N
3 simp3 ⊢ N ∈ ℕ 0 ∧ K ∈ ℤ ≥ N ∧ P ∈ mzPoly ⁡ 1 … K → P ∈ mzPoly ⁡ 1 … K
4 eqidd ⊢ N ∈ ℕ 0 ∧ K ∈ ℤ ≥ N ∧ P ∈ mzPoly ⁡ 1 … K → t | ∃ u ∈ ℕ 0 1 … K t = u ↾ 1 … N ∧ P ⁡ u = 0 = t | ∃ u ∈ ℕ 0 1 … K t = u ↾ 1 … N ∧ P ⁡ u = 0
5 fveq1 ⊢ p = P → p ⁡ u = P ⁡ u
6 5 eqeq1d ⊢ p = P → p ⁡ u = 0 ↔ P ⁡ u = 0
7 6 anbi2d ⊢ p = P → t = u ↾ 1 … N ∧ p ⁡ u = 0 ↔ t = u ↾ 1 … N ∧ P ⁡ u = 0
8 7 rexbidv ⊢ p = P → ∃ u ∈ ℕ 0 1 … K t = u ↾ 1 … N ∧ p ⁡ u = 0 ↔ ∃ u ∈ ℕ 0 1 … K t = u ↾ 1 … N ∧ P ⁡ u = 0
9 8 abbidv ⊢ p = P → t | ∃ u ∈ ℕ 0 1 … K t = u ↾ 1 … N ∧ p ⁡ u = 0 = t | ∃ u ∈ ℕ 0 1 … K t = u ↾ 1 … N ∧ P ⁡ u = 0
10 9 rspceeqv ⊢ P ∈ mzPoly ⁡ 1 … K ∧ t | ∃ u ∈ ℕ 0 1 … K t = u ↾ 1 … N ∧ P ⁡ u = 0 = t | ∃ u ∈ ℕ 0 1 … K t = u ↾ 1 … N ∧ P ⁡ u = 0 → ∃ p ∈ mzPoly ⁡ 1 … K t | ∃ u ∈ ℕ 0 1 … K t = u ↾ 1 … N ∧ P ⁡ u = 0 = t | ∃ u ∈ ℕ 0 1 … K t = u ↾ 1 … N ∧ p ⁡ u = 0
11 3 4 10 syl2anc ⊢ N ∈ ℕ 0 ∧ K ∈ ℤ ≥ N ∧ P ∈ mzPoly ⁡ 1 … K → ∃ p ∈ mzPoly ⁡ 1 … K t | ∃ u ∈ ℕ 0 1 … K t = u ↾ 1 … N ∧ P ⁡ u = 0 = t | ∃ u ∈ ℕ 0 1 … K t = u ↾ 1 … N ∧ p ⁡ u = 0
12 oveq2 ⊢ k = K → 1 … k = 1 … K
13 12 fveq2d ⊢ k = K → mzPoly ⁡ 1 … k = mzPoly ⁡ 1 … K
14 12 oveq2d ⊢ k = K → ℕ 0 1 … k = ℕ 0 1 … K
15 14 rexeqdv ⊢ k = K → ∃ u ∈ ℕ 0 1 … k t = u ↾ 1 … N ∧ p ⁡ u = 0 ↔ ∃ u ∈ ℕ 0 1 … K t = u ↾ 1 … N ∧ p ⁡ u = 0
16 15 abbidv ⊢ k = K → t | ∃ u ∈ ℕ 0 1 … k t = u ↾ 1 … N ∧ p ⁡ u = 0 = t | ∃ u ∈ ℕ 0 1 … K t = u ↾ 1 … N ∧ p ⁡ u = 0
17 16 eqeq2d ⊢ k = K → t | ∃ u ∈ ℕ 0 1 … K t = u ↾ 1 … N ∧ P ⁡ u = 0 = t | ∃ u ∈ ℕ 0 1 … k t = u ↾ 1 … N ∧ p ⁡ u = 0 ↔ t | ∃ u ∈ ℕ 0 1 … K t = u ↾ 1 … N ∧ P ⁡ u = 0 = t | ∃ u ∈ ℕ 0 1 … K t = u ↾ 1 … N ∧ p ⁡ u = 0
18 13 17 rexeqbidv ⊢ k = K → ∃ p ∈ mzPoly ⁡ 1 … k t | ∃ u ∈ ℕ 0 1 … K t = u ↾ 1 … N ∧ P ⁡ u = 0 = t | ∃ u ∈ ℕ 0 1 … k t = u ↾ 1 … N ∧ p ⁡ u = 0 ↔ ∃ p ∈ mzPoly ⁡ 1 … K t | ∃ u ∈ ℕ 0 1 … K t = u ↾ 1 … N ∧ P ⁡ u = 0 = t | ∃ u ∈ ℕ 0 1 … K t = u ↾ 1 … N ∧ p ⁡ u = 0
19 18 rspcev ⊢ K ∈ ℤ ≥ N ∧ ∃ p ∈ mzPoly ⁡ 1 … K t | ∃ u ∈ ℕ 0 1 … K t = u ↾ 1 … N ∧ P ⁡ u = 0 = t | ∃ u ∈ ℕ 0 1 … K t = u ↾ 1 … N ∧ p ⁡ u = 0 → ∃ k ∈ ℤ ≥ N ∃ p ∈ mzPoly ⁡ 1 … k t | ∃ u ∈ ℕ 0 1 … K t = u ↾ 1 … N ∧ P ⁡ u = 0 = t | ∃ u ∈ ℕ 0 1 … k t = u ↾ 1 … N ∧ p ⁡ u = 0
20 2 11 19 syl2anc ⊢ N ∈ ℕ 0 ∧ K ∈ ℤ ≥ N ∧ P ∈ mzPoly ⁡ 1 … K → ∃ k ∈ ℤ ≥ N ∃ p ∈ mzPoly ⁡ 1 … k t | ∃ u ∈ ℕ 0 1 … K t = u ↾ 1 … N ∧ P ⁡ u = 0 = t | ∃ u ∈ ℕ 0 1 … k t = u ↾ 1 … N ∧ p ⁡ u = 0
21 eldiophb ⊢ t | ∃ u ∈ ℕ 0 1 … K t = u ↾ 1 … N ∧ P ⁡ u = 0 ∈ Dioph ⁡ N ↔ N ∈ ℕ 0 ∧ ∃ k ∈ ℤ ≥ N ∃ p ∈ mzPoly ⁡ 1 … k t | ∃ u ∈ ℕ 0 1 … K t = u ↾ 1 … N ∧ P ⁡ u = 0 = t | ∃ u ∈ ℕ 0 1 … k t = u ↾ 1 … N ∧ p ⁡ u = 0
22 1 20 21 sylanbrc ⊢ N ∈ ℕ 0 ∧ K ∈ ℤ ≥ N ∧ P ∈ mzPoly ⁡ 1 … K → t | ∃ u ∈ ℕ 0 1 … K t = u ↾ 1 … N ∧ P ⁡ u = 0 ∈ Dioph ⁡ N