Metamath Proof Explorer


Theorem eldioph3

Description: Inference version of eldioph3b with quantifier expanded. (Contributed by Stefan O'Rear, 10-Oct-2014)

Ref Expression
Assertion eldioph3 ( ( 𝑁 ∈ ℕ0𝑃 ∈ ( mzPoly ‘ ℕ ) ) → { 𝑡 ∣ ∃ 𝑢 ∈ ( ℕ0m ℕ ) ( 𝑡 = ( 𝑢 ↾ ( 1 ... 𝑁 ) ) ∧ ( 𝑃𝑢 ) = 0 ) } ∈ ( Dioph ‘ 𝑁 ) )

Proof

Step Hyp Ref Expression
1 simpl ( ( 𝑁 ∈ ℕ0𝑃 ∈ ( mzPoly ‘ ℕ ) ) → 𝑁 ∈ ℕ0 )
2 simpr ( ( 𝑁 ∈ ℕ0𝑃 ∈ ( mzPoly ‘ ℕ ) ) → 𝑃 ∈ ( mzPoly ‘ ℕ ) )
3 eqidd ( ( 𝑁 ∈ ℕ0𝑃 ∈ ( mzPoly ‘ ℕ ) ) → { 𝑡 ∣ ∃ 𝑢 ∈ ( ℕ0m ℕ ) ( 𝑡 = ( 𝑢 ↾ ( 1 ... 𝑁 ) ) ∧ ( 𝑃𝑢 ) = 0 ) } = { 𝑡 ∣ ∃ 𝑢 ∈ ( ℕ0m ℕ ) ( 𝑡 = ( 𝑢 ↾ ( 1 ... 𝑁 ) ) ∧ ( 𝑃𝑢 ) = 0 ) } )
4 fveq1 ( 𝑝 = 𝑃 → ( 𝑝𝑏 ) = ( 𝑃𝑏 ) )
5 4 eqeq1d ( 𝑝 = 𝑃 → ( ( 𝑝𝑏 ) = 0 ↔ ( 𝑃𝑏 ) = 0 ) )
6 5 anbi2d ( 𝑝 = 𝑃 → ( ( 𝑎 = ( 𝑏 ↾ ( 1 ... 𝑁 ) ) ∧ ( 𝑝𝑏 ) = 0 ) ↔ ( 𝑎 = ( 𝑏 ↾ ( 1 ... 𝑁 ) ) ∧ ( 𝑃𝑏 ) = 0 ) ) )
7 6 rexbidv ( 𝑝 = 𝑃 → ( ∃ 𝑏 ∈ ( ℕ0m ℕ ) ( 𝑎 = ( 𝑏 ↾ ( 1 ... 𝑁 ) ) ∧ ( 𝑝𝑏 ) = 0 ) ↔ ∃ 𝑏 ∈ ( ℕ0m ℕ ) ( 𝑎 = ( 𝑏 ↾ ( 1 ... 𝑁 ) ) ∧ ( 𝑃𝑏 ) = 0 ) ) )
8 7 abbidv ( 𝑝 = 𝑃 → { 𝑎 ∣ ∃ 𝑏 ∈ ( ℕ0m ℕ ) ( 𝑎 = ( 𝑏 ↾ ( 1 ... 𝑁 ) ) ∧ ( 𝑝𝑏 ) = 0 ) } = { 𝑎 ∣ ∃ 𝑏 ∈ ( ℕ0m ℕ ) ( 𝑎 = ( 𝑏 ↾ ( 1 ... 𝑁 ) ) ∧ ( 𝑃𝑏 ) = 0 ) } )
9 eqeq1 ( 𝑎 = 𝑡 → ( 𝑎 = ( 𝑏 ↾ ( 1 ... 𝑁 ) ) ↔ 𝑡 = ( 𝑏 ↾ ( 1 ... 𝑁 ) ) ) )
10 9 anbi1d ( 𝑎 = 𝑡 → ( ( 𝑎 = ( 𝑏 ↾ ( 1 ... 𝑁 ) ) ∧ ( 𝑃𝑏 ) = 0 ) ↔ ( 𝑡 = ( 𝑏 ↾ ( 1 ... 𝑁 ) ) ∧ ( 𝑃𝑏 ) = 0 ) ) )
11 10 rexbidv ( 𝑎 = 𝑡 → ( ∃ 𝑏 ∈ ( ℕ0m ℕ ) ( 𝑎 = ( 𝑏 ↾ ( 1 ... 𝑁 ) ) ∧ ( 𝑃𝑏 ) = 0 ) ↔ ∃ 𝑏 ∈ ( ℕ0m ℕ ) ( 𝑡 = ( 𝑏 ↾ ( 1 ... 𝑁 ) ) ∧ ( 𝑃𝑏 ) = 0 ) ) )
12 reseq1 ( 𝑏 = 𝑢 → ( 𝑏 ↾ ( 1 ... 𝑁 ) ) = ( 𝑢 ↾ ( 1 ... 𝑁 ) ) )
13 12 eqeq2d ( 𝑏 = 𝑢 → ( 𝑡 = ( 𝑏 ↾ ( 1 ... 𝑁 ) ) ↔ 𝑡 = ( 𝑢 ↾ ( 1 ... 𝑁 ) ) ) )
14 fveqeq2 ( 𝑏 = 𝑢 → ( ( 𝑃𝑏 ) = 0 ↔ ( 𝑃𝑢 ) = 0 ) )
15 13 14 anbi12d ( 𝑏 = 𝑢 → ( ( 𝑡 = ( 𝑏 ↾ ( 1 ... 𝑁 ) ) ∧ ( 𝑃𝑏 ) = 0 ) ↔ ( 𝑡 = ( 𝑢 ↾ ( 1 ... 𝑁 ) ) ∧ ( 𝑃𝑢 ) = 0 ) ) )
16 15 cbvrexvw ( ∃ 𝑏 ∈ ( ℕ0m ℕ ) ( 𝑡 = ( 𝑏 ↾ ( 1 ... 𝑁 ) ) ∧ ( 𝑃𝑏 ) = 0 ) ↔ ∃ 𝑢 ∈ ( ℕ0m ℕ ) ( 𝑡 = ( 𝑢 ↾ ( 1 ... 𝑁 ) ) ∧ ( 𝑃𝑢 ) = 0 ) )
17 11 16 bitrdi ( 𝑎 = 𝑡 → ( ∃ 𝑏 ∈ ( ℕ0m ℕ ) ( 𝑎 = ( 𝑏 ↾ ( 1 ... 𝑁 ) ) ∧ ( 𝑃𝑏 ) = 0 ) ↔ ∃ 𝑢 ∈ ( ℕ0m ℕ ) ( 𝑡 = ( 𝑢 ↾ ( 1 ... 𝑁 ) ) ∧ ( 𝑃𝑢 ) = 0 ) ) )
18 17 cbvabv { 𝑎 ∣ ∃ 𝑏 ∈ ( ℕ0m ℕ ) ( 𝑎 = ( 𝑏 ↾ ( 1 ... 𝑁 ) ) ∧ ( 𝑃𝑏 ) = 0 ) } = { 𝑡 ∣ ∃ 𝑢 ∈ ( ℕ0m ℕ ) ( 𝑡 = ( 𝑢 ↾ ( 1 ... 𝑁 ) ) ∧ ( 𝑃𝑢 ) = 0 ) }
19 8 18 eqtrdi ( 𝑝 = 𝑃 → { 𝑎 ∣ ∃ 𝑏 ∈ ( ℕ0m ℕ ) ( 𝑎 = ( 𝑏 ↾ ( 1 ... 𝑁 ) ) ∧ ( 𝑝𝑏 ) = 0 ) } = { 𝑡 ∣ ∃ 𝑢 ∈ ( ℕ0m ℕ ) ( 𝑡 = ( 𝑢 ↾ ( 1 ... 𝑁 ) ) ∧ ( 𝑃𝑢 ) = 0 ) } )
20 19 rspceeqv ( ( 𝑃 ∈ ( mzPoly ‘ ℕ ) ∧ { 𝑡 ∣ ∃ 𝑢 ∈ ( ℕ0m ℕ ) ( 𝑡 = ( 𝑢 ↾ ( 1 ... 𝑁 ) ) ∧ ( 𝑃𝑢 ) = 0 ) } = { 𝑡 ∣ ∃ 𝑢 ∈ ( ℕ0m ℕ ) ( 𝑡 = ( 𝑢 ↾ ( 1 ... 𝑁 ) ) ∧ ( 𝑃𝑢 ) = 0 ) } ) → ∃ 𝑝 ∈ ( mzPoly ‘ ℕ ) { 𝑡 ∣ ∃ 𝑢 ∈ ( ℕ0m ℕ ) ( 𝑡 = ( 𝑢 ↾ ( 1 ... 𝑁 ) ) ∧ ( 𝑃𝑢 ) = 0 ) } = { 𝑎 ∣ ∃ 𝑏 ∈ ( ℕ0m ℕ ) ( 𝑎 = ( 𝑏 ↾ ( 1 ... 𝑁 ) ) ∧ ( 𝑝𝑏 ) = 0 ) } )
21 2 3 20 syl2anc ( ( 𝑁 ∈ ℕ0𝑃 ∈ ( mzPoly ‘ ℕ ) ) → ∃ 𝑝 ∈ ( mzPoly ‘ ℕ ) { 𝑡 ∣ ∃ 𝑢 ∈ ( ℕ0m ℕ ) ( 𝑡 = ( 𝑢 ↾ ( 1 ... 𝑁 ) ) ∧ ( 𝑃𝑢 ) = 0 ) } = { 𝑎 ∣ ∃ 𝑏 ∈ ( ℕ0m ℕ ) ( 𝑎 = ( 𝑏 ↾ ( 1 ... 𝑁 ) ) ∧ ( 𝑝𝑏 ) = 0 ) } )
22 eldioph3b ( { 𝑡 ∣ ∃ 𝑢 ∈ ( ℕ0m ℕ ) ( 𝑡 = ( 𝑢 ↾ ( 1 ... 𝑁 ) ) ∧ ( 𝑃𝑢 ) = 0 ) } ∈ ( Dioph ‘ 𝑁 ) ↔ ( 𝑁 ∈ ℕ0 ∧ ∃ 𝑝 ∈ ( mzPoly ‘ ℕ ) { 𝑡 ∣ ∃ 𝑢 ∈ ( ℕ0m ℕ ) ( 𝑡 = ( 𝑢 ↾ ( 1 ... 𝑁 ) ) ∧ ( 𝑃𝑢 ) = 0 ) } = { 𝑎 ∣ ∃ 𝑏 ∈ ( ℕ0m ℕ ) ( 𝑎 = ( 𝑏 ↾ ( 1 ... 𝑁 ) ) ∧ ( 𝑝𝑏 ) = 0 ) } ) )
23 1 21 22 sylanbrc ( ( 𝑁 ∈ ℕ0𝑃 ∈ ( mzPoly ‘ ℕ ) ) → { 𝑡 ∣ ∃ 𝑢 ∈ ( ℕ0m ℕ ) ( 𝑡 = ( 𝑢 ↾ ( 1 ... 𝑁 ) ) ∧ ( 𝑃𝑢 ) = 0 ) } ∈ ( Dioph ‘ 𝑁 ) )