Metamath Proof Explorer


Theorem plymullem

Description: Lemma for plymul . (Contributed by Mario Carneiro, 21-Jul-2014)

Ref Expression
Hypotheses plyadd.1 ( 𝜑𝐹 ∈ ( Poly ‘ 𝑆 ) )
plyadd.2 ( 𝜑𝐺 ∈ ( Poly ‘ 𝑆 ) )
plyadd.3 ( ( 𝜑 ∧ ( 𝑥𝑆𝑦𝑆 ) ) → ( 𝑥 + 𝑦 ) ∈ 𝑆 )
plyadd.m ( 𝜑𝑀 ∈ ℕ0 )
plyadd.n ( 𝜑𝑁 ∈ ℕ0 )
plyadd.a ( 𝜑𝐴 ∈ ( ( 𝑆 ∪ { 0 } ) ↑m0 ) )
plyadd.b ( 𝜑𝐵 ∈ ( ( 𝑆 ∪ { 0 } ) ↑m0 ) )
plyadd.a2 ( 𝜑 → ( 𝐴 “ ( ℤ ‘ ( 𝑀 + 1 ) ) ) = { 0 } )
plyadd.b2 ( 𝜑 → ( 𝐵 “ ( ℤ ‘ ( 𝑁 + 1 ) ) ) = { 0 } )
plyadd.f ( 𝜑𝐹 = ( 𝑧 ∈ ℂ ↦ Σ 𝑘 ∈ ( 0 ... 𝑀 ) ( ( 𝐴𝑘 ) · ( 𝑧𝑘 ) ) ) )
plyadd.g ( 𝜑𝐺 = ( 𝑧 ∈ ℂ ↦ Σ 𝑘 ∈ ( 0 ... 𝑁 ) ( ( 𝐵𝑘 ) · ( 𝑧𝑘 ) ) ) )
plymul.x ( ( 𝜑 ∧ ( 𝑥𝑆𝑦𝑆 ) ) → ( 𝑥 · 𝑦 ) ∈ 𝑆 )
Assertion plymullem ( 𝜑 → ( 𝐹f · 𝐺 ) ∈ ( Poly ‘ 𝑆 ) )

Proof

Step Hyp Ref Expression
1 plyadd.1 ( 𝜑𝐹 ∈ ( Poly ‘ 𝑆 ) )
2 plyadd.2 ( 𝜑𝐺 ∈ ( Poly ‘ 𝑆 ) )
3 plyadd.3 ( ( 𝜑 ∧ ( 𝑥𝑆𝑦𝑆 ) ) → ( 𝑥 + 𝑦 ) ∈ 𝑆 )
4 plyadd.m ( 𝜑𝑀 ∈ ℕ0 )
5 plyadd.n ( 𝜑𝑁 ∈ ℕ0 )
6 plyadd.a ( 𝜑𝐴 ∈ ( ( 𝑆 ∪ { 0 } ) ↑m0 ) )
7 plyadd.b ( 𝜑𝐵 ∈ ( ( 𝑆 ∪ { 0 } ) ↑m0 ) )
8 plyadd.a2 ( 𝜑 → ( 𝐴 “ ( ℤ ‘ ( 𝑀 + 1 ) ) ) = { 0 } )
9 plyadd.b2 ( 𝜑 → ( 𝐵 “ ( ℤ ‘ ( 𝑁 + 1 ) ) ) = { 0 } )
10 plyadd.f ( 𝜑𝐹 = ( 𝑧 ∈ ℂ ↦ Σ 𝑘 ∈ ( 0 ... 𝑀 ) ( ( 𝐴𝑘 ) · ( 𝑧𝑘 ) ) ) )
11 plyadd.g ( 𝜑𝐺 = ( 𝑧 ∈ ℂ ↦ Σ 𝑘 ∈ ( 0 ... 𝑁 ) ( ( 𝐵𝑘 ) · ( 𝑧𝑘 ) ) ) )
12 plymul.x ( ( 𝜑 ∧ ( 𝑥𝑆𝑦𝑆 ) ) → ( 𝑥 · 𝑦 ) ∈ 𝑆 )
13 plybss ( 𝐹 ∈ ( Poly ‘ 𝑆 ) → 𝑆 ⊆ ℂ )
14 1 13 syl ( 𝜑𝑆 ⊆ ℂ )
15 0cnd ( 𝜑 → 0 ∈ ℂ )
16 15 snssd ( 𝜑 → { 0 } ⊆ ℂ )
17 14 16 unssd ( 𝜑 → ( 𝑆 ∪ { 0 } ) ⊆ ℂ )
18 cnex ℂ ∈ V
19 ssexg ( ( ( 𝑆 ∪ { 0 } ) ⊆ ℂ ∧ ℂ ∈ V ) → ( 𝑆 ∪ { 0 } ) ∈ V )
20 17 18 19 sylancl ( 𝜑 → ( 𝑆 ∪ { 0 } ) ∈ V )
21 nn0ex 0 ∈ V
22 elmapg ( ( ( 𝑆 ∪ { 0 } ) ∈ V ∧ ℕ0 ∈ V ) → ( 𝐴 ∈ ( ( 𝑆 ∪ { 0 } ) ↑m0 ) ↔ 𝐴 : ℕ0 ⟶ ( 𝑆 ∪ { 0 } ) ) )
23 20 21 22 sylancl ( 𝜑 → ( 𝐴 ∈ ( ( 𝑆 ∪ { 0 } ) ↑m0 ) ↔ 𝐴 : ℕ0 ⟶ ( 𝑆 ∪ { 0 } ) ) )
24 6 23 mpbid ( 𝜑𝐴 : ℕ0 ⟶ ( 𝑆 ∪ { 0 } ) )
25 24 17 fssd ( 𝜑𝐴 : ℕ0 ⟶ ℂ )
26 elmapg ( ( ( 𝑆 ∪ { 0 } ) ∈ V ∧ ℕ0 ∈ V ) → ( 𝐵 ∈ ( ( 𝑆 ∪ { 0 } ) ↑m0 ) ↔ 𝐵 : ℕ0 ⟶ ( 𝑆 ∪ { 0 } ) ) )
27 20 21 26 sylancl ( 𝜑 → ( 𝐵 ∈ ( ( 𝑆 ∪ { 0 } ) ↑m0 ) ↔ 𝐵 : ℕ0 ⟶ ( 𝑆 ∪ { 0 } ) ) )
28 7 27 mpbid ( 𝜑𝐵 : ℕ0 ⟶ ( 𝑆 ∪ { 0 } ) )
29 28 17 fssd ( 𝜑𝐵 : ℕ0 ⟶ ℂ )
30 1 2 4 5 25 29 8 9 10 11 plymullem1 ( 𝜑 → ( 𝐹f · 𝐺 ) = ( 𝑧 ∈ ℂ ↦ Σ 𝑛 ∈ ( 0 ... ( 𝑀 + 𝑁 ) ) ( Σ 𝑘 ∈ ( 0 ... 𝑛 ) ( ( 𝐴𝑘 ) · ( 𝐵 ‘ ( 𝑛𝑘 ) ) ) · ( 𝑧𝑛 ) ) ) )
31 4 5 nn0addcld ( 𝜑 → ( 𝑀 + 𝑁 ) ∈ ℕ0 )
32 eqid ( 𝑆 ∪ { 0 } ) = ( 𝑆 ∪ { 0 } )
33 14 32 3 un0addcl ( ( 𝜑 ∧ ( 𝑥 ∈ ( 𝑆 ∪ { 0 } ) ∧ 𝑦 ∈ ( 𝑆 ∪ { 0 } ) ) ) → ( 𝑥 + 𝑦 ) ∈ ( 𝑆 ∪ { 0 } ) )
34 fzfid ( 𝜑 → ( 0 ... 𝑛 ) ∈ Fin )
35 elfznn0 ( 𝑘 ∈ ( 0 ... 𝑛 ) → 𝑘 ∈ ℕ0 )
36 ffvelrn ( ( 𝐴 : ℕ0 ⟶ ( 𝑆 ∪ { 0 } ) ∧ 𝑘 ∈ ℕ0 ) → ( 𝐴𝑘 ) ∈ ( 𝑆 ∪ { 0 } ) )
37 24 35 36 syl2an ( ( 𝜑𝑘 ∈ ( 0 ... 𝑛 ) ) → ( 𝐴𝑘 ) ∈ ( 𝑆 ∪ { 0 } ) )
38 fznn0sub ( 𝑘 ∈ ( 0 ... 𝑛 ) → ( 𝑛𝑘 ) ∈ ℕ0 )
39 ffvelrn ( ( 𝐵 : ℕ0 ⟶ ( 𝑆 ∪ { 0 } ) ∧ ( 𝑛𝑘 ) ∈ ℕ0 ) → ( 𝐵 ‘ ( 𝑛𝑘 ) ) ∈ ( 𝑆 ∪ { 0 } ) )
40 28 38 39 syl2an ( ( 𝜑𝑘 ∈ ( 0 ... 𝑛 ) ) → ( 𝐵 ‘ ( 𝑛𝑘 ) ) ∈ ( 𝑆 ∪ { 0 } ) )
41 37 40 jca ( ( 𝜑𝑘 ∈ ( 0 ... 𝑛 ) ) → ( ( 𝐴𝑘 ) ∈ ( 𝑆 ∪ { 0 } ) ∧ ( 𝐵 ‘ ( 𝑛𝑘 ) ) ∈ ( 𝑆 ∪ { 0 } ) ) )
42 14 32 12 un0mulcl ( ( 𝜑 ∧ ( 𝑥 ∈ ( 𝑆 ∪ { 0 } ) ∧ 𝑦 ∈ ( 𝑆 ∪ { 0 } ) ) ) → ( 𝑥 · 𝑦 ) ∈ ( 𝑆 ∪ { 0 } ) )
43 42 caovclg ( ( 𝜑 ∧ ( ( 𝐴𝑘 ) ∈ ( 𝑆 ∪ { 0 } ) ∧ ( 𝐵 ‘ ( 𝑛𝑘 ) ) ∈ ( 𝑆 ∪ { 0 } ) ) ) → ( ( 𝐴𝑘 ) · ( 𝐵 ‘ ( 𝑛𝑘 ) ) ) ∈ ( 𝑆 ∪ { 0 } ) )
44 41 43 syldan ( ( 𝜑𝑘 ∈ ( 0 ... 𝑛 ) ) → ( ( 𝐴𝑘 ) · ( 𝐵 ‘ ( 𝑛𝑘 ) ) ) ∈ ( 𝑆 ∪ { 0 } ) )
45 ssun2 { 0 } ⊆ ( 𝑆 ∪ { 0 } )
46 c0ex 0 ∈ V
47 46 snss ( 0 ∈ ( 𝑆 ∪ { 0 } ) ↔ { 0 } ⊆ ( 𝑆 ∪ { 0 } ) )
48 45 47 mpbir 0 ∈ ( 𝑆 ∪ { 0 } )
49 48 a1i ( 𝜑 → 0 ∈ ( 𝑆 ∪ { 0 } ) )
50 17 33 34 44 49 fsumcllem ( 𝜑 → Σ 𝑘 ∈ ( 0 ... 𝑛 ) ( ( 𝐴𝑘 ) · ( 𝐵 ‘ ( 𝑛𝑘 ) ) ) ∈ ( 𝑆 ∪ { 0 } ) )
51 50 adantr ( ( 𝜑𝑛 ∈ ( 0 ... ( 𝑀 + 𝑁 ) ) ) → Σ 𝑘 ∈ ( 0 ... 𝑛 ) ( ( 𝐴𝑘 ) · ( 𝐵 ‘ ( 𝑛𝑘 ) ) ) ∈ ( 𝑆 ∪ { 0 } ) )
52 17 31 51 elplyd ( 𝜑 → ( 𝑧 ∈ ℂ ↦ Σ 𝑛 ∈ ( 0 ... ( 𝑀 + 𝑁 ) ) ( Σ 𝑘 ∈ ( 0 ... 𝑛 ) ( ( 𝐴𝑘 ) · ( 𝐵 ‘ ( 𝑛𝑘 ) ) ) · ( 𝑧𝑛 ) ) ) ∈ ( Poly ‘ ( 𝑆 ∪ { 0 } ) ) )
53 30 52 eqeltrd ( 𝜑 → ( 𝐹f · 𝐺 ) ∈ ( Poly ‘ ( 𝑆 ∪ { 0 } ) ) )
54 plyun0 ( Poly ‘ ( 𝑆 ∪ { 0 } ) ) = ( Poly ‘ 𝑆 )
55 53 54 eleqtrdi ( 𝜑 → ( 𝐹f · 𝐺 ) ∈ ( Poly ‘ 𝑆 ) )