Step |
Hyp |
Ref |
Expression |
1 |
|
negcl |
|- ( X e. CC -> -u X e. CC ) |
2 |
1
|
adantr |
|- ( ( X e. CC /\ N e. NN0 ) -> -u X e. CC ) |
3 |
|
elfznn |
|- ( k e. ( 1 ... N ) -> k e. NN ) |
4 |
|
nnm1nn0 |
|- ( k e. NN -> ( k - 1 ) e. NN0 ) |
5 |
3 4
|
syl |
|- ( k e. ( 1 ... N ) -> ( k - 1 ) e. NN0 ) |
6 |
5
|
nn0cnd |
|- ( k e. ( 1 ... N ) -> ( k - 1 ) e. CC ) |
7 |
|
subcl |
|- ( ( -u X e. CC /\ ( k - 1 ) e. CC ) -> ( -u X - ( k - 1 ) ) e. CC ) |
8 |
2 6 7
|
syl2an |
|- ( ( ( X e. CC /\ N e. NN0 ) /\ k e. ( 1 ... N ) ) -> ( -u X - ( k - 1 ) ) e. CC ) |
9 |
8
|
mulm1d |
|- ( ( ( X e. CC /\ N e. NN0 ) /\ k e. ( 1 ... N ) ) -> ( -u 1 x. ( -u X - ( k - 1 ) ) ) = -u ( -u X - ( k - 1 ) ) ) |
10 |
|
simpll |
|- ( ( ( X e. CC /\ N e. NN0 ) /\ k e. ( 1 ... N ) ) -> X e. CC ) |
11 |
6
|
adantl |
|- ( ( ( X e. CC /\ N e. NN0 ) /\ k e. ( 1 ... N ) ) -> ( k - 1 ) e. CC ) |
12 |
10 11
|
negdi2d |
|- ( ( ( X e. CC /\ N e. NN0 ) /\ k e. ( 1 ... N ) ) -> -u ( X + ( k - 1 ) ) = ( -u X - ( k - 1 ) ) ) |
13 |
12
|
negeqd |
|- ( ( ( X e. CC /\ N e. NN0 ) /\ k e. ( 1 ... N ) ) -> -u -u ( X + ( k - 1 ) ) = -u ( -u X - ( k - 1 ) ) ) |
14 |
|
simpl |
|- ( ( X e. CC /\ N e. NN0 ) -> X e. CC ) |
15 |
|
addcl |
|- ( ( X e. CC /\ ( k - 1 ) e. CC ) -> ( X + ( k - 1 ) ) e. CC ) |
16 |
14 6 15
|
syl2an |
|- ( ( ( X e. CC /\ N e. NN0 ) /\ k e. ( 1 ... N ) ) -> ( X + ( k - 1 ) ) e. CC ) |
17 |
16
|
negnegd |
|- ( ( ( X e. CC /\ N e. NN0 ) /\ k e. ( 1 ... N ) ) -> -u -u ( X + ( k - 1 ) ) = ( X + ( k - 1 ) ) ) |
18 |
9 13 17
|
3eqtr2rd |
|- ( ( ( X e. CC /\ N e. NN0 ) /\ k e. ( 1 ... N ) ) -> ( X + ( k - 1 ) ) = ( -u 1 x. ( -u X - ( k - 1 ) ) ) ) |
19 |
18
|
prodeq2dv |
|- ( ( X e. CC /\ N e. NN0 ) -> prod_ k e. ( 1 ... N ) ( X + ( k - 1 ) ) = prod_ k e. ( 1 ... N ) ( -u 1 x. ( -u X - ( k - 1 ) ) ) ) |
20 |
|
risefacval2 |
|- ( ( X e. CC /\ N e. NN0 ) -> ( X RiseFac N ) = prod_ k e. ( 1 ... N ) ( X + ( k - 1 ) ) ) |
21 |
|
fzfi |
|- ( 1 ... N ) e. Fin |
22 |
|
neg1cn |
|- -u 1 e. CC |
23 |
|
fprodconst |
|- ( ( ( 1 ... N ) e. Fin /\ -u 1 e. CC ) -> prod_ k e. ( 1 ... N ) -u 1 = ( -u 1 ^ ( # ` ( 1 ... N ) ) ) ) |
24 |
21 22 23
|
mp2an |
|- prod_ k e. ( 1 ... N ) -u 1 = ( -u 1 ^ ( # ` ( 1 ... N ) ) ) |
25 |
|
hashfz1 |
|- ( N e. NN0 -> ( # ` ( 1 ... N ) ) = N ) |
26 |
25
|
oveq2d |
|- ( N e. NN0 -> ( -u 1 ^ ( # ` ( 1 ... N ) ) ) = ( -u 1 ^ N ) ) |
27 |
24 26
|
eqtr2id |
|- ( N e. NN0 -> ( -u 1 ^ N ) = prod_ k e. ( 1 ... N ) -u 1 ) |
28 |
27
|
adantl |
|- ( ( X e. CC /\ N e. NN0 ) -> ( -u 1 ^ N ) = prod_ k e. ( 1 ... N ) -u 1 ) |
29 |
|
fallfacval2 |
|- ( ( -u X e. CC /\ N e. NN0 ) -> ( -u X FallFac N ) = prod_ k e. ( 1 ... N ) ( -u X - ( k - 1 ) ) ) |
30 |
1 29
|
sylan |
|- ( ( X e. CC /\ N e. NN0 ) -> ( -u X FallFac N ) = prod_ k e. ( 1 ... N ) ( -u X - ( k - 1 ) ) ) |
31 |
28 30
|
oveq12d |
|- ( ( X e. CC /\ N e. NN0 ) -> ( ( -u 1 ^ N ) x. ( -u X FallFac N ) ) = ( prod_ k e. ( 1 ... N ) -u 1 x. prod_ k e. ( 1 ... N ) ( -u X - ( k - 1 ) ) ) ) |
32 |
|
fzfid |
|- ( ( X e. CC /\ N e. NN0 ) -> ( 1 ... N ) e. Fin ) |
33 |
22
|
a1i |
|- ( ( ( X e. CC /\ N e. NN0 ) /\ k e. ( 1 ... N ) ) -> -u 1 e. CC ) |
34 |
32 33 8
|
fprodmul |
|- ( ( X e. CC /\ N e. NN0 ) -> prod_ k e. ( 1 ... N ) ( -u 1 x. ( -u X - ( k - 1 ) ) ) = ( prod_ k e. ( 1 ... N ) -u 1 x. prod_ k e. ( 1 ... N ) ( -u X - ( k - 1 ) ) ) ) |
35 |
31 34
|
eqtr4d |
|- ( ( X e. CC /\ N e. NN0 ) -> ( ( -u 1 ^ N ) x. ( -u X FallFac N ) ) = prod_ k e. ( 1 ... N ) ( -u 1 x. ( -u X - ( k - 1 ) ) ) ) |
36 |
19 20 35
|
3eqtr4d |
|- ( ( X e. CC /\ N e. NN0 ) -> ( X RiseFac N ) = ( ( -u 1 ^ N ) x. ( -u X FallFac N ) ) ) |