Metamath Proof Explorer


Theorem mzpmfp

Description: Relationship between multivariate Z-polynomials and general multivariate polynomial functions. (Contributed by Stefan O'Rear, 20-Mar-2015) (Revised by AV, 13-Jun-2019)

Ref Expression
Assertion mzpmfp ( mzPoly ‘ 𝐼 ) = ran ( 𝐼 eval ℤring )

Proof

Step Hyp Ref Expression
1 zringbas ℤ = ( Base ‘ ℤring )
2 eqid ( 𝐼 eval ℤring ) = ( 𝐼 eval ℤring )
3 2 1 evlval ( 𝐼 eval ℤring ) = ( ( 𝐼 evalSub ℤring ) ‘ ℤ )
4 3 rneqi ran ( 𝐼 eval ℤring ) = ran ( ( 𝐼 evalSub ℤring ) ‘ ℤ )
5 simpl ( ( 𝐼 ∈ V ∧ 𝑓 ∈ ℤ ) → 𝐼 ∈ V )
6 zringcrng ring ∈ CRing
7 6 a1i ( ( 𝐼 ∈ V ∧ 𝑓 ∈ ℤ ) → ℤring ∈ CRing )
8 zringring ring ∈ Ring
9 1 subrgid ( ℤring ∈ Ring → ℤ ∈ ( SubRing ‘ ℤring ) )
10 8 9 ax-mp ℤ ∈ ( SubRing ‘ ℤring )
11 10 a1i ( ( 𝐼 ∈ V ∧ 𝑓 ∈ ℤ ) → ℤ ∈ ( SubRing ‘ ℤring ) )
12 simpr ( ( 𝐼 ∈ V ∧ 𝑓 ∈ ℤ ) → 𝑓 ∈ ℤ )
13 1 4 5 7 11 12 mpfconst ( ( 𝐼 ∈ V ∧ 𝑓 ∈ ℤ ) → ( ( ℤ ↑m 𝐼 ) × { 𝑓 } ) ∈ ran ( 𝐼 eval ℤring ) )
14 simpl ( ( 𝐼 ∈ V ∧ 𝑓𝐼 ) → 𝐼 ∈ V )
15 6 a1i ( ( 𝐼 ∈ V ∧ 𝑓𝐼 ) → ℤring ∈ CRing )
16 10 a1i ( ( 𝐼 ∈ V ∧ 𝑓𝐼 ) → ℤ ∈ ( SubRing ‘ ℤring ) )
17 simpr ( ( 𝐼 ∈ V ∧ 𝑓𝐼 ) → 𝑓𝐼 )
18 1 4 14 15 16 17 mpfproj ( ( 𝐼 ∈ V ∧ 𝑓𝐼 ) → ( 𝑔 ∈ ( ℤ ↑m 𝐼 ) ↦ ( 𝑔𝑓 ) ) ∈ ran ( 𝐼 eval ℤring ) )
19 simp2r ( ( 𝐼 ∈ V ∧ ( 𝑓 : ( ℤ ↑m 𝐼 ) ⟶ ℤ ∧ 𝑓 ∈ ran ( 𝐼 eval ℤring ) ) ∧ ( 𝑔 : ( ℤ ↑m 𝐼 ) ⟶ ℤ ∧ 𝑔 ∈ ran ( 𝐼 eval ℤring ) ) ) → 𝑓 ∈ ran ( 𝐼 eval ℤring ) )
20 simp3r ( ( 𝐼 ∈ V ∧ ( 𝑓 : ( ℤ ↑m 𝐼 ) ⟶ ℤ ∧ 𝑓 ∈ ran ( 𝐼 eval ℤring ) ) ∧ ( 𝑔 : ( ℤ ↑m 𝐼 ) ⟶ ℤ ∧ 𝑔 ∈ ran ( 𝐼 eval ℤring ) ) ) → 𝑔 ∈ ran ( 𝐼 eval ℤring ) )
21 zringplusg + = ( +g ‘ ℤring )
22 4 21 mpfaddcl ( ( 𝑓 ∈ ran ( 𝐼 eval ℤring ) ∧ 𝑔 ∈ ran ( 𝐼 eval ℤring ) ) → ( 𝑓f + 𝑔 ) ∈ ran ( 𝐼 eval ℤring ) )
23 19 20 22 syl2anc ( ( 𝐼 ∈ V ∧ ( 𝑓 : ( ℤ ↑m 𝐼 ) ⟶ ℤ ∧ 𝑓 ∈ ran ( 𝐼 eval ℤring ) ) ∧ ( 𝑔 : ( ℤ ↑m 𝐼 ) ⟶ ℤ ∧ 𝑔 ∈ ran ( 𝐼 eval ℤring ) ) ) → ( 𝑓f + 𝑔 ) ∈ ran ( 𝐼 eval ℤring ) )
24 zringmulr · = ( .r ‘ ℤring )
25 4 24 mpfmulcl ( ( 𝑓 ∈ ran ( 𝐼 eval ℤring ) ∧ 𝑔 ∈ ran ( 𝐼 eval ℤring ) ) → ( 𝑓f · 𝑔 ) ∈ ran ( 𝐼 eval ℤring ) )
26 19 20 25 syl2anc ( ( 𝐼 ∈ V ∧ ( 𝑓 : ( ℤ ↑m 𝐼 ) ⟶ ℤ ∧ 𝑓 ∈ ran ( 𝐼 eval ℤring ) ) ∧ ( 𝑔 : ( ℤ ↑m 𝐼 ) ⟶ ℤ ∧ 𝑔 ∈ ran ( 𝐼 eval ℤring ) ) ) → ( 𝑓f · 𝑔 ) ∈ ran ( 𝐼 eval ℤring ) )
27 eleq1 ( 𝑏 = ( ( ℤ ↑m 𝐼 ) × { 𝑓 } ) → ( 𝑏 ∈ ran ( 𝐼 eval ℤring ) ↔ ( ( ℤ ↑m 𝐼 ) × { 𝑓 } ) ∈ ran ( 𝐼 eval ℤring ) ) )
28 eleq1 ( 𝑏 = ( 𝑔 ∈ ( ℤ ↑m 𝐼 ) ↦ ( 𝑔𝑓 ) ) → ( 𝑏 ∈ ran ( 𝐼 eval ℤring ) ↔ ( 𝑔 ∈ ( ℤ ↑m 𝐼 ) ↦ ( 𝑔𝑓 ) ) ∈ ran ( 𝐼 eval ℤring ) ) )
29 eleq1 ( 𝑏 = 𝑓 → ( 𝑏 ∈ ran ( 𝐼 eval ℤring ) ↔ 𝑓 ∈ ran ( 𝐼 eval ℤring ) ) )
30 eleq1 ( 𝑏 = 𝑔 → ( 𝑏 ∈ ran ( 𝐼 eval ℤring ) ↔ 𝑔 ∈ ran ( 𝐼 eval ℤring ) ) )
31 eleq1 ( 𝑏 = ( 𝑓f + 𝑔 ) → ( 𝑏 ∈ ran ( 𝐼 eval ℤring ) ↔ ( 𝑓f + 𝑔 ) ∈ ran ( 𝐼 eval ℤring ) ) )
32 eleq1 ( 𝑏 = ( 𝑓f · 𝑔 ) → ( 𝑏 ∈ ran ( 𝐼 eval ℤring ) ↔ ( 𝑓f · 𝑔 ) ∈ ran ( 𝐼 eval ℤring ) ) )
33 eleq1 ( 𝑏 = 𝑎 → ( 𝑏 ∈ ran ( 𝐼 eval ℤring ) ↔ 𝑎 ∈ ran ( 𝐼 eval ℤring ) ) )
34 13 18 23 26 27 28 29 30 31 32 33 mzpindd ( ( 𝐼 ∈ V ∧ 𝑎 ∈ ( mzPoly ‘ 𝐼 ) ) → 𝑎 ∈ ran ( 𝐼 eval ℤring ) )
35 simprlr ( ( ( 𝐼 ∈ V ∧ 𝑎 ∈ ran ( 𝐼 eval ℤring ) ) ∧ ( ( 𝑥 ∈ ran ( 𝐼 eval ℤring ) ∧ 𝑥 ∈ ( mzPoly ‘ 𝐼 ) ) ∧ ( 𝑦 ∈ ran ( 𝐼 eval ℤring ) ∧ 𝑦 ∈ ( mzPoly ‘ 𝐼 ) ) ) ) → 𝑥 ∈ ( mzPoly ‘ 𝐼 ) )
36 simprrr ( ( ( 𝐼 ∈ V ∧ 𝑎 ∈ ran ( 𝐼 eval ℤring ) ) ∧ ( ( 𝑥 ∈ ran ( 𝐼 eval ℤring ) ∧ 𝑥 ∈ ( mzPoly ‘ 𝐼 ) ) ∧ ( 𝑦 ∈ ran ( 𝐼 eval ℤring ) ∧ 𝑦 ∈ ( mzPoly ‘ 𝐼 ) ) ) ) → 𝑦 ∈ ( mzPoly ‘ 𝐼 ) )
37 mzpadd ( ( 𝑥 ∈ ( mzPoly ‘ 𝐼 ) ∧ 𝑦 ∈ ( mzPoly ‘ 𝐼 ) ) → ( 𝑥f + 𝑦 ) ∈ ( mzPoly ‘ 𝐼 ) )
38 35 36 37 syl2anc ( ( ( 𝐼 ∈ V ∧ 𝑎 ∈ ran ( 𝐼 eval ℤring ) ) ∧ ( ( 𝑥 ∈ ran ( 𝐼 eval ℤring ) ∧ 𝑥 ∈ ( mzPoly ‘ 𝐼 ) ) ∧ ( 𝑦 ∈ ran ( 𝐼 eval ℤring ) ∧ 𝑦 ∈ ( mzPoly ‘ 𝐼 ) ) ) ) → ( 𝑥f + 𝑦 ) ∈ ( mzPoly ‘ 𝐼 ) )
39 mzpmul ( ( 𝑥 ∈ ( mzPoly ‘ 𝐼 ) ∧ 𝑦 ∈ ( mzPoly ‘ 𝐼 ) ) → ( 𝑥f · 𝑦 ) ∈ ( mzPoly ‘ 𝐼 ) )
40 35 36 39 syl2anc ( ( ( 𝐼 ∈ V ∧ 𝑎 ∈ ran ( 𝐼 eval ℤring ) ) ∧ ( ( 𝑥 ∈ ran ( 𝐼 eval ℤring ) ∧ 𝑥 ∈ ( mzPoly ‘ 𝐼 ) ) ∧ ( 𝑦 ∈ ran ( 𝐼 eval ℤring ) ∧ 𝑦 ∈ ( mzPoly ‘ 𝐼 ) ) ) ) → ( 𝑥f · 𝑦 ) ∈ ( mzPoly ‘ 𝐼 ) )
41 eleq1 ( 𝑏 = ( ( ℤ ↑m 𝐼 ) × { 𝑥 } ) → ( 𝑏 ∈ ( mzPoly ‘ 𝐼 ) ↔ ( ( ℤ ↑m 𝐼 ) × { 𝑥 } ) ∈ ( mzPoly ‘ 𝐼 ) ) )
42 eleq1 ( 𝑏 = ( 𝑦 ∈ ( ℤ ↑m 𝐼 ) ↦ ( 𝑦𝑥 ) ) → ( 𝑏 ∈ ( mzPoly ‘ 𝐼 ) ↔ ( 𝑦 ∈ ( ℤ ↑m 𝐼 ) ↦ ( 𝑦𝑥 ) ) ∈ ( mzPoly ‘ 𝐼 ) ) )
43 eleq1 ( 𝑏 = 𝑥 → ( 𝑏 ∈ ( mzPoly ‘ 𝐼 ) ↔ 𝑥 ∈ ( mzPoly ‘ 𝐼 ) ) )
44 eleq1 ( 𝑏 = 𝑦 → ( 𝑏 ∈ ( mzPoly ‘ 𝐼 ) ↔ 𝑦 ∈ ( mzPoly ‘ 𝐼 ) ) )
45 eleq1 ( 𝑏 = ( 𝑥f + 𝑦 ) → ( 𝑏 ∈ ( mzPoly ‘ 𝐼 ) ↔ ( 𝑥f + 𝑦 ) ∈ ( mzPoly ‘ 𝐼 ) ) )
46 eleq1 ( 𝑏 = ( 𝑥f · 𝑦 ) → ( 𝑏 ∈ ( mzPoly ‘ 𝐼 ) ↔ ( 𝑥f · 𝑦 ) ∈ ( mzPoly ‘ 𝐼 ) ) )
47 eleq1 ( 𝑏 = 𝑎 → ( 𝑏 ∈ ( mzPoly ‘ 𝐼 ) ↔ 𝑎 ∈ ( mzPoly ‘ 𝐼 ) ) )
48 mzpconst ( ( 𝐼 ∈ V ∧ 𝑥 ∈ ℤ ) → ( ( ℤ ↑m 𝐼 ) × { 𝑥 } ) ∈ ( mzPoly ‘ 𝐼 ) )
49 48 adantlr ( ( ( 𝐼 ∈ V ∧ 𝑎 ∈ ran ( 𝐼 eval ℤring ) ) ∧ 𝑥 ∈ ℤ ) → ( ( ℤ ↑m 𝐼 ) × { 𝑥 } ) ∈ ( mzPoly ‘ 𝐼 ) )
50 mzpproj ( ( 𝐼 ∈ V ∧ 𝑥𝐼 ) → ( 𝑦 ∈ ( ℤ ↑m 𝐼 ) ↦ ( 𝑦𝑥 ) ) ∈ ( mzPoly ‘ 𝐼 ) )
51 50 adantlr ( ( ( 𝐼 ∈ V ∧ 𝑎 ∈ ran ( 𝐼 eval ℤring ) ) ∧ 𝑥𝐼 ) → ( 𝑦 ∈ ( ℤ ↑m 𝐼 ) ↦ ( 𝑦𝑥 ) ) ∈ ( mzPoly ‘ 𝐼 ) )
52 simpr ( ( 𝐼 ∈ V ∧ 𝑎 ∈ ran ( 𝐼 eval ℤring ) ) → 𝑎 ∈ ran ( 𝐼 eval ℤring ) )
53 1 21 24 4 38 40 41 42 43 44 45 46 47 49 51 52 mpfind ( ( 𝐼 ∈ V ∧ 𝑎 ∈ ran ( 𝐼 eval ℤring ) ) → 𝑎 ∈ ( mzPoly ‘ 𝐼 ) )
54 34 53 impbida ( 𝐼 ∈ V → ( 𝑎 ∈ ( mzPoly ‘ 𝐼 ) ↔ 𝑎 ∈ ran ( 𝐼 eval ℤring ) ) )
55 54 eqrdv ( 𝐼 ∈ V → ( mzPoly ‘ 𝐼 ) = ran ( 𝐼 eval ℤring ) )
56 fvprc ( ¬ 𝐼 ∈ V → ( mzPoly ‘ 𝐼 ) = ∅ )
57 df-evl eval = ( 𝑎 ∈ V , 𝑏 ∈ V ↦ ( ( 𝑎 evalSub 𝑏 ) ‘ ( Base ‘ 𝑏 ) ) )
58 57 reldmmpo Rel dom eval
59 58 ovprc1 ( ¬ 𝐼 ∈ V → ( 𝐼 eval ℤring ) = ∅ )
60 59 rneqd ( ¬ 𝐼 ∈ V → ran ( 𝐼 eval ℤring ) = ran ∅ )
61 rn0 ran ∅ = ∅
62 60 61 eqtrdi ( ¬ 𝐼 ∈ V → ran ( 𝐼 eval ℤring ) = ∅ )
63 56 62 eqtr4d ( ¬ 𝐼 ∈ V → ( mzPoly ‘ 𝐼 ) = ran ( 𝐼 eval ℤring ) )
64 55 63 pm2.61i ( mzPoly ‘ 𝐼 ) = ran ( 𝐼 eval ℤring )