Metamath Proof Explorer


Theorem pf1mpf

Description: Convert a univariate polynomial function to multivariate. (Contributed by Mario Carneiro, 12-Jun-2015)

Ref Expression
Hypotheses pf1rcl.q 𝑄 = ran ( eval1𝑅 )
pf1f.b 𝐵 = ( Base ‘ 𝑅 )
mpfpf1.q 𝐸 = ran ( 1o eval 𝑅 )
Assertion pf1mpf ( 𝐹𝑄 → ( 𝐹 ∘ ( 𝑥 ∈ ( 𝐵m 1o ) ↦ ( 𝑥 ‘ ∅ ) ) ) ∈ 𝐸 )

Proof

Step Hyp Ref Expression
1 pf1rcl.q 𝑄 = ran ( eval1𝑅 )
2 pf1f.b 𝐵 = ( Base ‘ 𝑅 )
3 mpfpf1.q 𝐸 = ran ( 1o eval 𝑅 )
4 1 pf1rcl ( 𝐹𝑄𝑅 ∈ CRing )
5 id ( 𝐹𝑄𝐹𝑄 )
6 5 1 eleqtrdi ( 𝐹𝑄𝐹 ∈ ran ( eval1𝑅 ) )
7 eqid ( eval1𝑅 ) = ( eval1𝑅 )
8 eqid ( Poly1𝑅 ) = ( Poly1𝑅 )
9 eqid ( 𝑅s 𝐵 ) = ( 𝑅s 𝐵 )
10 7 8 9 2 evl1rhm ( 𝑅 ∈ CRing → ( eval1𝑅 ) ∈ ( ( Poly1𝑅 ) RingHom ( 𝑅s 𝐵 ) ) )
11 4 10 syl ( 𝐹𝑄 → ( eval1𝑅 ) ∈ ( ( Poly1𝑅 ) RingHom ( 𝑅s 𝐵 ) ) )
12 eqid ( Base ‘ ( Poly1𝑅 ) ) = ( Base ‘ ( Poly1𝑅 ) )
13 eqid ( Base ‘ ( 𝑅s 𝐵 ) ) = ( Base ‘ ( 𝑅s 𝐵 ) )
14 12 13 rhmf ( ( eval1𝑅 ) ∈ ( ( Poly1𝑅 ) RingHom ( 𝑅s 𝐵 ) ) → ( eval1𝑅 ) : ( Base ‘ ( Poly1𝑅 ) ) ⟶ ( Base ‘ ( 𝑅s 𝐵 ) ) )
15 ffn ( ( eval1𝑅 ) : ( Base ‘ ( Poly1𝑅 ) ) ⟶ ( Base ‘ ( 𝑅s 𝐵 ) ) → ( eval1𝑅 ) Fn ( Base ‘ ( Poly1𝑅 ) ) )
16 fvelrnb ( ( eval1𝑅 ) Fn ( Base ‘ ( Poly1𝑅 ) ) → ( 𝐹 ∈ ran ( eval1𝑅 ) ↔ ∃ 𝑦 ∈ ( Base ‘ ( Poly1𝑅 ) ) ( ( eval1𝑅 ) ‘ 𝑦 ) = 𝐹 ) )
17 11 14 15 16 4syl ( 𝐹𝑄 → ( 𝐹 ∈ ran ( eval1𝑅 ) ↔ ∃ 𝑦 ∈ ( Base ‘ ( Poly1𝑅 ) ) ( ( eval1𝑅 ) ‘ 𝑦 ) = 𝐹 ) )
18 6 17 mpbid ( 𝐹𝑄 → ∃ 𝑦 ∈ ( Base ‘ ( Poly1𝑅 ) ) ( ( eval1𝑅 ) ‘ 𝑦 ) = 𝐹 )
19 eqid ( 1o eval 𝑅 ) = ( 1o eval 𝑅 )
20 eqid ( 1o mPoly 𝑅 ) = ( 1o mPoly 𝑅 )
21 8 12 ply1bas ( Base ‘ ( Poly1𝑅 ) ) = ( Base ‘ ( 1o mPoly 𝑅 ) )
22 7 19 2 20 21 evl1val ( ( 𝑅 ∈ CRing ∧ 𝑦 ∈ ( Base ‘ ( Poly1𝑅 ) ) ) → ( ( eval1𝑅 ) ‘ 𝑦 ) = ( ( ( 1o eval 𝑅 ) ‘ 𝑦 ) ∘ ( 𝑧𝐵 ↦ ( 1o × { 𝑧 } ) ) ) )
23 22 coeq1d ( ( 𝑅 ∈ CRing ∧ 𝑦 ∈ ( Base ‘ ( Poly1𝑅 ) ) ) → ( ( ( eval1𝑅 ) ‘ 𝑦 ) ∘ ( 𝑥 ∈ ( 𝐵m 1o ) ↦ ( 𝑥 ‘ ∅ ) ) ) = ( ( ( ( 1o eval 𝑅 ) ‘ 𝑦 ) ∘ ( 𝑧𝐵 ↦ ( 1o × { 𝑧 } ) ) ) ∘ ( 𝑥 ∈ ( 𝐵m 1o ) ↦ ( 𝑥 ‘ ∅ ) ) ) )
24 coass ( ( ( ( 1o eval 𝑅 ) ‘ 𝑦 ) ∘ ( 𝑧𝐵 ↦ ( 1o × { 𝑧 } ) ) ) ∘ ( 𝑥 ∈ ( 𝐵m 1o ) ↦ ( 𝑥 ‘ ∅ ) ) ) = ( ( ( 1o eval 𝑅 ) ‘ 𝑦 ) ∘ ( ( 𝑧𝐵 ↦ ( 1o × { 𝑧 } ) ) ∘ ( 𝑥 ∈ ( 𝐵m 1o ) ↦ ( 𝑥 ‘ ∅ ) ) ) )
25 df1o2 1o = { ∅ }
26 2 fvexi 𝐵 ∈ V
27 0ex ∅ ∈ V
28 eqid ( 𝑥 ∈ ( 𝐵m 1o ) ↦ ( 𝑥 ‘ ∅ ) ) = ( 𝑥 ∈ ( 𝐵m 1o ) ↦ ( 𝑥 ‘ ∅ ) )
29 25 26 27 28 mapsncnv ( 𝑥 ∈ ( 𝐵m 1o ) ↦ ( 𝑥 ‘ ∅ ) ) = ( 𝑧𝐵 ↦ ( 1o × { 𝑧 } ) )
30 29 coeq1i ( ( 𝑥 ∈ ( 𝐵m 1o ) ↦ ( 𝑥 ‘ ∅ ) ) ∘ ( 𝑥 ∈ ( 𝐵m 1o ) ↦ ( 𝑥 ‘ ∅ ) ) ) = ( ( 𝑧𝐵 ↦ ( 1o × { 𝑧 } ) ) ∘ ( 𝑥 ∈ ( 𝐵m 1o ) ↦ ( 𝑥 ‘ ∅ ) ) )
31 25 26 27 28 mapsnf1o2 ( 𝑥 ∈ ( 𝐵m 1o ) ↦ ( 𝑥 ‘ ∅ ) ) : ( 𝐵m 1o ) –1-1-onto𝐵
32 f1ococnv1 ( ( 𝑥 ∈ ( 𝐵m 1o ) ↦ ( 𝑥 ‘ ∅ ) ) : ( 𝐵m 1o ) –1-1-onto𝐵 → ( ( 𝑥 ∈ ( 𝐵m 1o ) ↦ ( 𝑥 ‘ ∅ ) ) ∘ ( 𝑥 ∈ ( 𝐵m 1o ) ↦ ( 𝑥 ‘ ∅ ) ) ) = ( I ↾ ( 𝐵m 1o ) ) )
33 31 32 mp1i ( ( 𝑅 ∈ CRing ∧ 𝑦 ∈ ( Base ‘ ( Poly1𝑅 ) ) ) → ( ( 𝑥 ∈ ( 𝐵m 1o ) ↦ ( 𝑥 ‘ ∅ ) ) ∘ ( 𝑥 ∈ ( 𝐵m 1o ) ↦ ( 𝑥 ‘ ∅ ) ) ) = ( I ↾ ( 𝐵m 1o ) ) )
34 30 33 eqtr3id ( ( 𝑅 ∈ CRing ∧ 𝑦 ∈ ( Base ‘ ( Poly1𝑅 ) ) ) → ( ( 𝑧𝐵 ↦ ( 1o × { 𝑧 } ) ) ∘ ( 𝑥 ∈ ( 𝐵m 1o ) ↦ ( 𝑥 ‘ ∅ ) ) ) = ( I ↾ ( 𝐵m 1o ) ) )
35 34 coeq2d ( ( 𝑅 ∈ CRing ∧ 𝑦 ∈ ( Base ‘ ( Poly1𝑅 ) ) ) → ( ( ( 1o eval 𝑅 ) ‘ 𝑦 ) ∘ ( ( 𝑧𝐵 ↦ ( 1o × { 𝑧 } ) ) ∘ ( 𝑥 ∈ ( 𝐵m 1o ) ↦ ( 𝑥 ‘ ∅ ) ) ) ) = ( ( ( 1o eval 𝑅 ) ‘ 𝑦 ) ∘ ( I ↾ ( 𝐵m 1o ) ) ) )
36 24 35 eqtrid ( ( 𝑅 ∈ CRing ∧ 𝑦 ∈ ( Base ‘ ( Poly1𝑅 ) ) ) → ( ( ( ( 1o eval 𝑅 ) ‘ 𝑦 ) ∘ ( 𝑧𝐵 ↦ ( 1o × { 𝑧 } ) ) ) ∘ ( 𝑥 ∈ ( 𝐵m 1o ) ↦ ( 𝑥 ‘ ∅ ) ) ) = ( ( ( 1o eval 𝑅 ) ‘ 𝑦 ) ∘ ( I ↾ ( 𝐵m 1o ) ) ) )
37 eqid ( 𝑅s ( 𝐵m 1o ) ) = ( 𝑅s ( 𝐵m 1o ) )
38 eqid ( Base ‘ ( 𝑅s ( 𝐵m 1o ) ) ) = ( Base ‘ ( 𝑅s ( 𝐵m 1o ) ) )
39 simpl ( ( 𝑅 ∈ CRing ∧ 𝑦 ∈ ( Base ‘ ( Poly1𝑅 ) ) ) → 𝑅 ∈ CRing )
40 ovexd ( ( 𝑅 ∈ CRing ∧ 𝑦 ∈ ( Base ‘ ( Poly1𝑅 ) ) ) → ( 𝐵m 1o ) ∈ V )
41 1on 1o ∈ On
42 19 2 20 37 evlrhm ( ( 1o ∈ On ∧ 𝑅 ∈ CRing ) → ( 1o eval 𝑅 ) ∈ ( ( 1o mPoly 𝑅 ) RingHom ( 𝑅s ( 𝐵m 1o ) ) ) )
43 41 42 mpan ( 𝑅 ∈ CRing → ( 1o eval 𝑅 ) ∈ ( ( 1o mPoly 𝑅 ) RingHom ( 𝑅s ( 𝐵m 1o ) ) ) )
44 21 38 rhmf ( ( 1o eval 𝑅 ) ∈ ( ( 1o mPoly 𝑅 ) RingHom ( 𝑅s ( 𝐵m 1o ) ) ) → ( 1o eval 𝑅 ) : ( Base ‘ ( Poly1𝑅 ) ) ⟶ ( Base ‘ ( 𝑅s ( 𝐵m 1o ) ) ) )
45 43 44 syl ( 𝑅 ∈ CRing → ( 1o eval 𝑅 ) : ( Base ‘ ( Poly1𝑅 ) ) ⟶ ( Base ‘ ( 𝑅s ( 𝐵m 1o ) ) ) )
46 45 ffvelcdmda ( ( 𝑅 ∈ CRing ∧ 𝑦 ∈ ( Base ‘ ( Poly1𝑅 ) ) ) → ( ( 1o eval 𝑅 ) ‘ 𝑦 ) ∈ ( Base ‘ ( 𝑅s ( 𝐵m 1o ) ) ) )
47 37 2 38 39 40 46 pwselbas ( ( 𝑅 ∈ CRing ∧ 𝑦 ∈ ( Base ‘ ( Poly1𝑅 ) ) ) → ( ( 1o eval 𝑅 ) ‘ 𝑦 ) : ( 𝐵m 1o ) ⟶ 𝐵 )
48 fcoi1 ( ( ( 1o eval 𝑅 ) ‘ 𝑦 ) : ( 𝐵m 1o ) ⟶ 𝐵 → ( ( ( 1o eval 𝑅 ) ‘ 𝑦 ) ∘ ( I ↾ ( 𝐵m 1o ) ) ) = ( ( 1o eval 𝑅 ) ‘ 𝑦 ) )
49 47 48 syl ( ( 𝑅 ∈ CRing ∧ 𝑦 ∈ ( Base ‘ ( Poly1𝑅 ) ) ) → ( ( ( 1o eval 𝑅 ) ‘ 𝑦 ) ∘ ( I ↾ ( 𝐵m 1o ) ) ) = ( ( 1o eval 𝑅 ) ‘ 𝑦 ) )
50 23 36 49 3eqtrd ( ( 𝑅 ∈ CRing ∧ 𝑦 ∈ ( Base ‘ ( Poly1𝑅 ) ) ) → ( ( ( eval1𝑅 ) ‘ 𝑦 ) ∘ ( 𝑥 ∈ ( 𝐵m 1o ) ↦ ( 𝑥 ‘ ∅ ) ) ) = ( ( 1o eval 𝑅 ) ‘ 𝑦 ) )
51 45 ffnd ( 𝑅 ∈ CRing → ( 1o eval 𝑅 ) Fn ( Base ‘ ( Poly1𝑅 ) ) )
52 fnfvelrn ( ( ( 1o eval 𝑅 ) Fn ( Base ‘ ( Poly1𝑅 ) ) ∧ 𝑦 ∈ ( Base ‘ ( Poly1𝑅 ) ) ) → ( ( 1o eval 𝑅 ) ‘ 𝑦 ) ∈ ran ( 1o eval 𝑅 ) )
53 51 52 sylan ( ( 𝑅 ∈ CRing ∧ 𝑦 ∈ ( Base ‘ ( Poly1𝑅 ) ) ) → ( ( 1o eval 𝑅 ) ‘ 𝑦 ) ∈ ran ( 1o eval 𝑅 ) )
54 53 3 eleqtrrdi ( ( 𝑅 ∈ CRing ∧ 𝑦 ∈ ( Base ‘ ( Poly1𝑅 ) ) ) → ( ( 1o eval 𝑅 ) ‘ 𝑦 ) ∈ 𝐸 )
55 50 54 eqeltrd ( ( 𝑅 ∈ CRing ∧ 𝑦 ∈ ( Base ‘ ( Poly1𝑅 ) ) ) → ( ( ( eval1𝑅 ) ‘ 𝑦 ) ∘ ( 𝑥 ∈ ( 𝐵m 1o ) ↦ ( 𝑥 ‘ ∅ ) ) ) ∈ 𝐸 )
56 coeq1 ( ( ( eval1𝑅 ) ‘ 𝑦 ) = 𝐹 → ( ( ( eval1𝑅 ) ‘ 𝑦 ) ∘ ( 𝑥 ∈ ( 𝐵m 1o ) ↦ ( 𝑥 ‘ ∅ ) ) ) = ( 𝐹 ∘ ( 𝑥 ∈ ( 𝐵m 1o ) ↦ ( 𝑥 ‘ ∅ ) ) ) )
57 56 eleq1d ( ( ( eval1𝑅 ) ‘ 𝑦 ) = 𝐹 → ( ( ( ( eval1𝑅 ) ‘ 𝑦 ) ∘ ( 𝑥 ∈ ( 𝐵m 1o ) ↦ ( 𝑥 ‘ ∅ ) ) ) ∈ 𝐸 ↔ ( 𝐹 ∘ ( 𝑥 ∈ ( 𝐵m 1o ) ↦ ( 𝑥 ‘ ∅ ) ) ) ∈ 𝐸 ) )
58 55 57 syl5ibcom ( ( 𝑅 ∈ CRing ∧ 𝑦 ∈ ( Base ‘ ( Poly1𝑅 ) ) ) → ( ( ( eval1𝑅 ) ‘ 𝑦 ) = 𝐹 → ( 𝐹 ∘ ( 𝑥 ∈ ( 𝐵m 1o ) ↦ ( 𝑥 ‘ ∅ ) ) ) ∈ 𝐸 ) )
59 58 rexlimdva ( 𝑅 ∈ CRing → ( ∃ 𝑦 ∈ ( Base ‘ ( Poly1𝑅 ) ) ( ( eval1𝑅 ) ‘ 𝑦 ) = 𝐹 → ( 𝐹 ∘ ( 𝑥 ∈ ( 𝐵m 1o ) ↦ ( 𝑥 ‘ ∅ ) ) ) ∈ 𝐸 ) )
60 4 18 59 sylc ( 𝐹𝑄 → ( 𝐹 ∘ ( 𝑥 ∈ ( 𝐵m 1o ) ↦ ( 𝑥 ‘ ∅ ) ) ) ∈ 𝐸 )