Metamath Proof Explorer


Theorem bpolysum

Description: A sum for Bernoulli polynomials. (Contributed by Scott Fenton, 16-May-2014) (Proof shortened by Mario Carneiro, 22-May-2014)

Ref Expression
Assertion bpolysum ( ( 𝑁 ∈ ℕ0𝑋 ∈ ℂ ) → Σ 𝑘 ∈ ( 0 ... 𝑁 ) ( ( 𝑁 C 𝑘 ) · ( ( 𝑘 BernPoly 𝑋 ) / ( ( 𝑁𝑘 ) + 1 ) ) ) = ( 𝑋𝑁 ) )

Proof

Step Hyp Ref Expression
1 simpl ( ( 𝑁 ∈ ℕ0𝑋 ∈ ℂ ) → 𝑁 ∈ ℕ0 )
2 nn0uz 0 = ( ℤ ‘ 0 )
3 1 2 eleqtrdi ( ( 𝑁 ∈ ℕ0𝑋 ∈ ℂ ) → 𝑁 ∈ ( ℤ ‘ 0 ) )
4 elfzelz ( 𝑘 ∈ ( 0 ... 𝑁 ) → 𝑘 ∈ ℤ )
5 bccl ( ( 𝑁 ∈ ℕ0𝑘 ∈ ℤ ) → ( 𝑁 C 𝑘 ) ∈ ℕ0 )
6 1 4 5 syl2an ( ( ( 𝑁 ∈ ℕ0𝑋 ∈ ℂ ) ∧ 𝑘 ∈ ( 0 ... 𝑁 ) ) → ( 𝑁 C 𝑘 ) ∈ ℕ0 )
7 6 nn0cnd ( ( ( 𝑁 ∈ ℕ0𝑋 ∈ ℂ ) ∧ 𝑘 ∈ ( 0 ... 𝑁 ) ) → ( 𝑁 C 𝑘 ) ∈ ℂ )
8 elfznn0 ( 𝑘 ∈ ( 0 ... 𝑁 ) → 𝑘 ∈ ℕ0 )
9 simpr ( ( 𝑁 ∈ ℕ0𝑋 ∈ ℂ ) → 𝑋 ∈ ℂ )
10 bpolycl ( ( 𝑘 ∈ ℕ0𝑋 ∈ ℂ ) → ( 𝑘 BernPoly 𝑋 ) ∈ ℂ )
11 8 9 10 syl2anr ( ( ( 𝑁 ∈ ℕ0𝑋 ∈ ℂ ) ∧ 𝑘 ∈ ( 0 ... 𝑁 ) ) → ( 𝑘 BernPoly 𝑋 ) ∈ ℂ )
12 fznn0sub ( 𝑘 ∈ ( 0 ... 𝑁 ) → ( 𝑁𝑘 ) ∈ ℕ0 )
13 12 adantl ( ( ( 𝑁 ∈ ℕ0𝑋 ∈ ℂ ) ∧ 𝑘 ∈ ( 0 ... 𝑁 ) ) → ( 𝑁𝑘 ) ∈ ℕ0 )
14 nn0p1nn ( ( 𝑁𝑘 ) ∈ ℕ0 → ( ( 𝑁𝑘 ) + 1 ) ∈ ℕ )
15 13 14 syl ( ( ( 𝑁 ∈ ℕ0𝑋 ∈ ℂ ) ∧ 𝑘 ∈ ( 0 ... 𝑁 ) ) → ( ( 𝑁𝑘 ) + 1 ) ∈ ℕ )
16 15 nncnd ( ( ( 𝑁 ∈ ℕ0𝑋 ∈ ℂ ) ∧ 𝑘 ∈ ( 0 ... 𝑁 ) ) → ( ( 𝑁𝑘 ) + 1 ) ∈ ℂ )
17 15 nnne0d ( ( ( 𝑁 ∈ ℕ0𝑋 ∈ ℂ ) ∧ 𝑘 ∈ ( 0 ... 𝑁 ) ) → ( ( 𝑁𝑘 ) + 1 ) ≠ 0 )
18 11 16 17 divcld ( ( ( 𝑁 ∈ ℕ0𝑋 ∈ ℂ ) ∧ 𝑘 ∈ ( 0 ... 𝑁 ) ) → ( ( 𝑘 BernPoly 𝑋 ) / ( ( 𝑁𝑘 ) + 1 ) ) ∈ ℂ )
19 7 18 mulcld ( ( ( 𝑁 ∈ ℕ0𝑋 ∈ ℂ ) ∧ 𝑘 ∈ ( 0 ... 𝑁 ) ) → ( ( 𝑁 C 𝑘 ) · ( ( 𝑘 BernPoly 𝑋 ) / ( ( 𝑁𝑘 ) + 1 ) ) ) ∈ ℂ )
20 oveq2 ( 𝑘 = 𝑁 → ( 𝑁 C 𝑘 ) = ( 𝑁 C 𝑁 ) )
21 oveq1 ( 𝑘 = 𝑁 → ( 𝑘 BernPoly 𝑋 ) = ( 𝑁 BernPoly 𝑋 ) )
22 oveq2 ( 𝑘 = 𝑁 → ( 𝑁𝑘 ) = ( 𝑁𝑁 ) )
23 22 oveq1d ( 𝑘 = 𝑁 → ( ( 𝑁𝑘 ) + 1 ) = ( ( 𝑁𝑁 ) + 1 ) )
24 21 23 oveq12d ( 𝑘 = 𝑁 → ( ( 𝑘 BernPoly 𝑋 ) / ( ( 𝑁𝑘 ) + 1 ) ) = ( ( 𝑁 BernPoly 𝑋 ) / ( ( 𝑁𝑁 ) + 1 ) ) )
25 20 24 oveq12d ( 𝑘 = 𝑁 → ( ( 𝑁 C 𝑘 ) · ( ( 𝑘 BernPoly 𝑋 ) / ( ( 𝑁𝑘 ) + 1 ) ) ) = ( ( 𝑁 C 𝑁 ) · ( ( 𝑁 BernPoly 𝑋 ) / ( ( 𝑁𝑁 ) + 1 ) ) ) )
26 3 19 25 fsumm1 ( ( 𝑁 ∈ ℕ0𝑋 ∈ ℂ ) → Σ 𝑘 ∈ ( 0 ... 𝑁 ) ( ( 𝑁 C 𝑘 ) · ( ( 𝑘 BernPoly 𝑋 ) / ( ( 𝑁𝑘 ) + 1 ) ) ) = ( Σ 𝑘 ∈ ( 0 ... ( 𝑁 − 1 ) ) ( ( 𝑁 C 𝑘 ) · ( ( 𝑘 BernPoly 𝑋 ) / ( ( 𝑁𝑘 ) + 1 ) ) ) + ( ( 𝑁 C 𝑁 ) · ( ( 𝑁 BernPoly 𝑋 ) / ( ( 𝑁𝑁 ) + 1 ) ) ) ) )
27 bcnn ( 𝑁 ∈ ℕ0 → ( 𝑁 C 𝑁 ) = 1 )
28 27 adantr ( ( 𝑁 ∈ ℕ0𝑋 ∈ ℂ ) → ( 𝑁 C 𝑁 ) = 1 )
29 nn0cn ( 𝑁 ∈ ℕ0𝑁 ∈ ℂ )
30 29 adantr ( ( 𝑁 ∈ ℕ0𝑋 ∈ ℂ ) → 𝑁 ∈ ℂ )
31 30 subidd ( ( 𝑁 ∈ ℕ0𝑋 ∈ ℂ ) → ( 𝑁𝑁 ) = 0 )
32 31 oveq1d ( ( 𝑁 ∈ ℕ0𝑋 ∈ ℂ ) → ( ( 𝑁𝑁 ) + 1 ) = ( 0 + 1 ) )
33 0p1e1 ( 0 + 1 ) = 1
34 32 33 eqtrdi ( ( 𝑁 ∈ ℕ0𝑋 ∈ ℂ ) → ( ( 𝑁𝑁 ) + 1 ) = 1 )
35 34 oveq2d ( ( 𝑁 ∈ ℕ0𝑋 ∈ ℂ ) → ( ( 𝑁 BernPoly 𝑋 ) / ( ( 𝑁𝑁 ) + 1 ) ) = ( ( 𝑁 BernPoly 𝑋 ) / 1 ) )
36 bpolycl ( ( 𝑁 ∈ ℕ0𝑋 ∈ ℂ ) → ( 𝑁 BernPoly 𝑋 ) ∈ ℂ )
37 36 div1d ( ( 𝑁 ∈ ℕ0𝑋 ∈ ℂ ) → ( ( 𝑁 BernPoly 𝑋 ) / 1 ) = ( 𝑁 BernPoly 𝑋 ) )
38 35 37 eqtrd ( ( 𝑁 ∈ ℕ0𝑋 ∈ ℂ ) → ( ( 𝑁 BernPoly 𝑋 ) / ( ( 𝑁𝑁 ) + 1 ) ) = ( 𝑁 BernPoly 𝑋 ) )
39 28 38 oveq12d ( ( 𝑁 ∈ ℕ0𝑋 ∈ ℂ ) → ( ( 𝑁 C 𝑁 ) · ( ( 𝑁 BernPoly 𝑋 ) / ( ( 𝑁𝑁 ) + 1 ) ) ) = ( 1 · ( 𝑁 BernPoly 𝑋 ) ) )
40 36 mulid2d ( ( 𝑁 ∈ ℕ0𝑋 ∈ ℂ ) → ( 1 · ( 𝑁 BernPoly 𝑋 ) ) = ( 𝑁 BernPoly 𝑋 ) )
41 39 40 eqtrd ( ( 𝑁 ∈ ℕ0𝑋 ∈ ℂ ) → ( ( 𝑁 C 𝑁 ) · ( ( 𝑁 BernPoly 𝑋 ) / ( ( 𝑁𝑁 ) + 1 ) ) ) = ( 𝑁 BernPoly 𝑋 ) )
42 41 oveq2d ( ( 𝑁 ∈ ℕ0𝑋 ∈ ℂ ) → ( Σ 𝑘 ∈ ( 0 ... ( 𝑁 − 1 ) ) ( ( 𝑁 C 𝑘 ) · ( ( 𝑘 BernPoly 𝑋 ) / ( ( 𝑁𝑘 ) + 1 ) ) ) + ( ( 𝑁 C 𝑁 ) · ( ( 𝑁 BernPoly 𝑋 ) / ( ( 𝑁𝑁 ) + 1 ) ) ) ) = ( Σ 𝑘 ∈ ( 0 ... ( 𝑁 − 1 ) ) ( ( 𝑁 C 𝑘 ) · ( ( 𝑘 BernPoly 𝑋 ) / ( ( 𝑁𝑘 ) + 1 ) ) ) + ( 𝑁 BernPoly 𝑋 ) ) )
43 bpolyval ( ( 𝑁 ∈ ℕ0𝑋 ∈ ℂ ) → ( 𝑁 BernPoly 𝑋 ) = ( ( 𝑋𝑁 ) − Σ 𝑘 ∈ ( 0 ... ( 𝑁 − 1 ) ) ( ( 𝑁 C 𝑘 ) · ( ( 𝑘 BernPoly 𝑋 ) / ( ( 𝑁𝑘 ) + 1 ) ) ) ) )
44 43 eqcomd ( ( 𝑁 ∈ ℕ0𝑋 ∈ ℂ ) → ( ( 𝑋𝑁 ) − Σ 𝑘 ∈ ( 0 ... ( 𝑁 − 1 ) ) ( ( 𝑁 C 𝑘 ) · ( ( 𝑘 BernPoly 𝑋 ) / ( ( 𝑁𝑘 ) + 1 ) ) ) ) = ( 𝑁 BernPoly 𝑋 ) )
45 expcl ( ( 𝑋 ∈ ℂ ∧ 𝑁 ∈ ℕ0 ) → ( 𝑋𝑁 ) ∈ ℂ )
46 45 ancoms ( ( 𝑁 ∈ ℕ0𝑋 ∈ ℂ ) → ( 𝑋𝑁 ) ∈ ℂ )
47 fzfid ( ( 𝑁 ∈ ℕ0𝑋 ∈ ℂ ) → ( 0 ... ( 𝑁 − 1 ) ) ∈ Fin )
48 fzssp1 ( 0 ... ( 𝑁 − 1 ) ) ⊆ ( 0 ... ( ( 𝑁 − 1 ) + 1 ) )
49 ax-1cn 1 ∈ ℂ
50 npcan ( ( 𝑁 ∈ ℂ ∧ 1 ∈ ℂ ) → ( ( 𝑁 − 1 ) + 1 ) = 𝑁 )
51 30 49 50 sylancl ( ( 𝑁 ∈ ℕ0𝑋 ∈ ℂ ) → ( ( 𝑁 − 1 ) + 1 ) = 𝑁 )
52 51 oveq2d ( ( 𝑁 ∈ ℕ0𝑋 ∈ ℂ ) → ( 0 ... ( ( 𝑁 − 1 ) + 1 ) ) = ( 0 ... 𝑁 ) )
53 48 52 sseqtrid ( ( 𝑁 ∈ ℕ0𝑋 ∈ ℂ ) → ( 0 ... ( 𝑁 − 1 ) ) ⊆ ( 0 ... 𝑁 ) )
54 53 sselda ( ( ( 𝑁 ∈ ℕ0𝑋 ∈ ℂ ) ∧ 𝑘 ∈ ( 0 ... ( 𝑁 − 1 ) ) ) → 𝑘 ∈ ( 0 ... 𝑁 ) )
55 54 19 syldan ( ( ( 𝑁 ∈ ℕ0𝑋 ∈ ℂ ) ∧ 𝑘 ∈ ( 0 ... ( 𝑁 − 1 ) ) ) → ( ( 𝑁 C 𝑘 ) · ( ( 𝑘 BernPoly 𝑋 ) / ( ( 𝑁𝑘 ) + 1 ) ) ) ∈ ℂ )
56 47 55 fsumcl ( ( 𝑁 ∈ ℕ0𝑋 ∈ ℂ ) → Σ 𝑘 ∈ ( 0 ... ( 𝑁 − 1 ) ) ( ( 𝑁 C 𝑘 ) · ( ( 𝑘 BernPoly 𝑋 ) / ( ( 𝑁𝑘 ) + 1 ) ) ) ∈ ℂ )
57 46 56 36 subaddd ( ( 𝑁 ∈ ℕ0𝑋 ∈ ℂ ) → ( ( ( 𝑋𝑁 ) − Σ 𝑘 ∈ ( 0 ... ( 𝑁 − 1 ) ) ( ( 𝑁 C 𝑘 ) · ( ( 𝑘 BernPoly 𝑋 ) / ( ( 𝑁𝑘 ) + 1 ) ) ) ) = ( 𝑁 BernPoly 𝑋 ) ↔ ( Σ 𝑘 ∈ ( 0 ... ( 𝑁 − 1 ) ) ( ( 𝑁 C 𝑘 ) · ( ( 𝑘 BernPoly 𝑋 ) / ( ( 𝑁𝑘 ) + 1 ) ) ) + ( 𝑁 BernPoly 𝑋 ) ) = ( 𝑋𝑁 ) ) )
58 44 57 mpbid ( ( 𝑁 ∈ ℕ0𝑋 ∈ ℂ ) → ( Σ 𝑘 ∈ ( 0 ... ( 𝑁 − 1 ) ) ( ( 𝑁 C 𝑘 ) · ( ( 𝑘 BernPoly 𝑋 ) / ( ( 𝑁𝑘 ) + 1 ) ) ) + ( 𝑁 BernPoly 𝑋 ) ) = ( 𝑋𝑁 ) )
59 26 42 58 3eqtrd ( ( 𝑁 ∈ ℕ0𝑋 ∈ ℂ ) → Σ 𝑘 ∈ ( 0 ... 𝑁 ) ( ( 𝑁 C 𝑘 ) · ( ( 𝑘 BernPoly 𝑋 ) / ( ( 𝑁𝑘 ) + 1 ) ) ) = ( 𝑋𝑁 ) )