Metamath Proof Explorer


Theorem subfacval2

Description: A closed-form expression for the subfactorial. (Contributed by Mario Carneiro, 23-Jan-2015)

Ref Expression
Hypotheses derang.d D=xFinf|f:x1-1 ontoxyxfyy
subfac.n S=n0D1n
Assertion subfacval2 N0SN=N!k=0N1kk!

Proof

Step Hyp Ref Expression
1 derang.d D=xFinf|f:x1-1 ontoxyxfyy
2 subfac.n S=n0D1n
3 fveq2 x=0Sx=S0
4 1 2 subfac0 S0=1
5 3 4 eqtrdi x=0Sx=1
6 fveq2 x=0x!=0!
7 fac0 0!=1
8 6 7 eqtrdi x=0x!=1
9 oveq2 x=00x=00
10 9 sumeq1d x=0k=0x1kk!=k=001kk!
11 8 10 oveq12d x=0x!k=0x1kk!=1k=001kk!
12 5 11 eqeq12d x=0Sx=x!k=0x1kk!1=1k=001kk!
13 fv0p1e1 x=0Sx+1=S1
14 1 2 subfac1 S1=0
15 13 14 eqtrdi x=0Sx+1=0
16 fv0p1e1 x=0x+1!=1!
17 fac1 1!=1
18 16 17 eqtrdi x=0x+1!=1
19 oveq1 x=0x+1=0+1
20 0p1e1 0+1=1
21 19 20 eqtrdi x=0x+1=1
22 21 oveq2d x=00x+1=01
23 22 sumeq1d x=0k=0x+11kk!=k=011kk!
24 18 23 oveq12d x=0x+1!k=0x+11kk!=1k=011kk!
25 15 24 eqeq12d x=0Sx+1=x+1!k=0x+11kk!0=1k=011kk!
26 12 25 anbi12d x=0Sx=x!k=0x1kk!Sx+1=x+1!k=0x+11kk!1=1k=001kk!0=1k=011kk!
27 fveq2 x=mSx=Sm
28 fveq2 x=mx!=m!
29 oveq2 x=m0x=0m
30 29 sumeq1d x=mk=0x1kk!=k=0m1kk!
31 28 30 oveq12d x=mx!k=0x1kk!=m!k=0m1kk!
32 27 31 eqeq12d x=mSx=x!k=0x1kk!Sm=m!k=0m1kk!
33 fvoveq1 x=mSx+1=Sm+1
34 fvoveq1 x=mx+1!=m+1!
35 oveq1 x=mx+1=m+1
36 35 oveq2d x=m0x+1=0m+1
37 36 sumeq1d x=mk=0x+11kk!=k=0m+11kk!
38 34 37 oveq12d x=mx+1!k=0x+11kk!=m+1!k=0m+11kk!
39 33 38 eqeq12d x=mSx+1=x+1!k=0x+11kk!Sm+1=m+1!k=0m+11kk!
40 32 39 anbi12d x=mSx=x!k=0x1kk!Sx+1=x+1!k=0x+11kk!Sm=m!k=0m1kk!Sm+1=m+1!k=0m+11kk!
41 fveq2 x=m+1Sx=Sm+1
42 fveq2 x=m+1x!=m+1!
43 oveq2 x=m+10x=0m+1
44 43 sumeq1d x=m+1k=0x1kk!=k=0m+11kk!
45 42 44 oveq12d x=m+1x!k=0x1kk!=m+1!k=0m+11kk!
46 41 45 eqeq12d x=m+1Sx=x!k=0x1kk!Sm+1=m+1!k=0m+11kk!
47 fvoveq1 x=m+1Sx+1=Sm+1+1
48 fvoveq1 x=m+1x+1!=m+1+1!
49 oveq1 x=m+1x+1=m+1+1
50 49 oveq2d x=m+10x+1=0m+1+1
51 50 sumeq1d x=m+1k=0x+11kk!=k=0m+1+11kk!
52 48 51 oveq12d x=m+1x+1!k=0x+11kk!=m+1+1!k=0m+1+11kk!
53 47 52 eqeq12d x=m+1Sx+1=x+1!k=0x+11kk!Sm+1+1=m+1+1!k=0m+1+11kk!
54 46 53 anbi12d x=m+1Sx=x!k=0x1kk!Sx+1=x+1!k=0x+11kk!Sm+1=m+1!k=0m+11kk!Sm+1+1=m+1+1!k=0m+1+11kk!
55 fveq2 x=NSx=SN
56 fveq2 x=Nx!=N!
57 oveq2 x=N0x=0N
58 57 sumeq1d x=Nk=0x1kk!=k=0N1kk!
59 56 58 oveq12d x=Nx!k=0x1kk!=N!k=0N1kk!
60 55 59 eqeq12d x=NSx=x!k=0x1kk!SN=N!k=0N1kk!
61 fvoveq1 x=NSx+1=SN+1
62 fvoveq1 x=Nx+1!=N+1!
63 oveq1 x=Nx+1=N+1
64 63 oveq2d x=N0x+1=0N+1
65 64 sumeq1d x=Nk=0x+11kk!=k=0N+11kk!
66 62 65 oveq12d x=Nx+1!k=0x+11kk!=N+1!k=0N+11kk!
67 61 66 eqeq12d x=NSx+1=x+1!k=0x+11kk!SN+1=N+1!k=0N+11kk!
68 60 67 anbi12d x=NSx=x!k=0x1kk!Sx+1=x+1!k=0x+11kk!SN=N!k=0N1kk!SN+1=N+1!k=0N+11kk!
69 0z 0
70 ax-1cn 1
71 oveq2 k=01k=10
72 neg1cn 1
73 exp0 110=1
74 72 73 ax-mp 10=1
75 71 74 eqtrdi k=01k=1
76 fveq2 k=0k!=0!
77 76 7 eqtrdi k=0k!=1
78 75 77 oveq12d k=01kk!=11
79 70 div1i 11=1
80 78 79 eqtrdi k=01kk!=1
81 80 fsum1 01k=001kk!=1
82 69 70 81 mp2an k=001kk!=1
83 82 oveq2i 1k=001kk!=11
84 1t1e1 11=1
85 83 84 eqtr2i 1=1k=001kk!
86 nn0uz 0=0
87 1e0p1 1=0+1
88 oveq2 k=11k=11
89 exp1 111=1
90 72 89 ax-mp 11=1
91 88 90 eqtrdi k=11k=1
92 fveq2 k=1k!=1!
93 92 17 eqtrdi k=1k!=1
94 91 93 oveq12d k=11kk!=11
95 72 div1i 11=1
96 94 95 eqtrdi k=11kk!=1
97 neg1rr 1
98 reexpcl 1k01k
99 97 98 mpan k01k
100 faccl k0k!
101 99 100 nndivred k01kk!
102 101 recnd k01kk!
103 102 adantl k01kk!
104 0nn0 00
105 104 82 pm3.2i 00k=001kk!=1
106 105 a1i 00k=001kk!=1
107 1pneg1e0 1+-1=0
108 107 a1i 1+-1=0
109 86 87 96 103 106 108 fsump1i 10k=011kk!=0
110 109 mptru 10k=011kk!=0
111 110 simpri k=011kk!=0
112 111 oveq2i 1k=011kk!=10
113 70 mul01i 10=0
114 112 113 eqtr2i 0=1k=011kk!
115 85 114 pm3.2i 1=1k=001kk!0=1k=011kk!
116 simpr Sm=m!k=0m1kk!Sm+1=m+1!k=0m+11kk!Sm+1=m+1!k=0m+11kk!
117 116 a1i m0Sm=m!k=0m1kk!Sm+1=m+1!k=0m+11kk!Sm+1=m+1!k=0m+11kk!
118 oveq12 Sm+1=m+1!k=0m+11kk!Sm=m!k=0m1kk!Sm+1+Sm=m+1!k=0m+11kk!+m!k=0m1kk!
119 118 ancoms Sm=m!k=0m1kk!Sm+1=m+1!k=0m+11kk!Sm+1+Sm=m+1!k=0m+11kk!+m!k=0m1kk!
120 119 oveq2d Sm=m!k=0m1kk!Sm+1=m+1!k=0m+11kk!m+1Sm+1+Sm=m+1m+1!k=0m+11kk!+m!k=0m1kk!
121 nn0p1nn m0m+1
122 1 2 subfacp1 m+1Sm+1+1=m+1Sm+1+Sm+1-1
123 121 122 syl m0Sm+1+1=m+1Sm+1+Sm+1-1
124 nn0cn m0m
125 pncan m1m+1-1=m
126 124 70 125 sylancl m0m+1-1=m
127 126 fveq2d m0Sm+1-1=Sm
128 127 oveq2d m0Sm+1+Sm+1-1=Sm+1+Sm
129 128 oveq2d m0m+1Sm+1+Sm+1-1=m+1Sm+1+Sm
130 123 129 eqtrd m0Sm+1+1=m+1Sm+1+Sm
131 peano2nn0 m0m+10
132 peano2nn0 m+10m+1+10
133 131 132 syl m0m+1+10
134 faccl m+1+10m+1+1!
135 133 134 syl m0m+1+1!
136 135 nncnd m0m+1+1!
137 fzfid m00m+1Fin
138 elfznn0 k0m+1k0
139 138 adantl m0k0m+1k0
140 139 102 syl m0k0m+11kk!
141 137 140 fsumcl m0k=0m+11kk!
142 expcl 1m+1+101m+1+1
143 72 133 142 sylancr m01m+1+1
144 135 nnne0d m0m+1+1!0
145 143 136 144 divcld m01m+1+1m+1+1!
146 136 141 145 adddid m0m+1+1!k=0m+11kk!+1m+1+1m+1+1!=m+1+1!k=0m+11kk!+m+1+1!1m+1+1m+1+1!
147 id m0m0
148 147 86 eleqtrdi m0m0
149 oveq2 k=m+11k=1m+1
150 fveq2 k=m+1k!=m+1!
151 149 150 oveq12d k=m+11kk!=1m+1m+1!
152 148 140 151 fsump1 m0k=0m+11kk!=k=0m1kk!+1m+1m+1!
153 152 oveq2d m0m+1+1!k=0m+11kk!=m+1+1!k=0m1kk!+1m+1m+1!
154 fzfid m00mFin
155 elfznn0 k0mk0
156 155 adantl m0k0mk0
157 156 102 syl m0k0m1kk!
158 154 157 fsumcl m0k=0m1kk!
159 expcl 1m+101m+1
160 72 131 159 sylancr m01m+1
161 faccl m+10m+1!
162 131 161 syl m0m+1!
163 162 nncnd m0m+1!
164 162 nnne0d m0m+1!0
165 160 163 164 divcld m01m+1m+1!
166 136 158 165 adddid m0m+1+1!k=0m1kk!+1m+1m+1!=m+1+1!k=0m1kk!+m+1+1!1m+1m+1!
167 facp1 m+10m+1+1!=m+1!m+1+1
168 131 167 syl m0m+1+1!=m+1!m+1+1
169 facp1 m0m+1!=m!m+1
170 faccl m0m!
171 170 nncnd m0m!
172 121 nncnd m0m+1
173 171 172 mulcomd m0m!m+1=m+1m!
174 169 173 eqtrd m0m+1!=m+1m!
175 174 oveq1d m0m+1!m+1+1=m+1m!m+1+1
176 133 nn0cnd m0m+1+1
177 172 171 176 mulassd m0m+1m!m+1+1=m+1m!m+1+1
178 168 175 177 3eqtrd m0m+1+1!=m+1m!m+1+1
179 178 oveq1d m0m+1+1!k=0m1kk!=m+1m!m+1+1k=0m1kk!
180 136 160 163 164 div12d m0m+1+1!1m+1m+1!=1m+1m+1+1!m+1!
181 168 oveq1d m0m+1+1!m+1!=m+1!m+1+1m+1!
182 176 163 164 divcan3d m0m+1!m+1+1m+1!=m+1+1
183 181 182 eqtrd m0m+1+1!m+1!=m+1+1
184 183 oveq2d m01m+1m+1+1!m+1!=1m+1m+1+1
185 180 184 eqtrd m0m+1+1!1m+1m+1!=1m+1m+1+1
186 179 185 oveq12d m0m+1+1!k=0m1kk!+m+1+1!1m+1m+1!=m+1m!m+1+1k=0m1kk!+1m+1m+1+1
187 153 166 186 3eqtrd m0m+1+1!k=0m+11kk!=m+1m!m+1+1k=0m1kk!+1m+1m+1+1
188 143 136 144 divcan2d m0m+1+1!1m+1+1m+1+1!=1m+1+1
189 187 188 oveq12d m0m+1+1!k=0m+11kk!+m+1+1!1m+1+1m+1+1!=m+1m!m+1+1k=0m1kk!+1m+1m+1+1+1m+1+1
190 171 176 mulcld m0m!m+1+1
191 172 190 158 mulassd m0m+1m!m+1+1k=0m1kk!=m+1m!m+1+1k=0m1kk!
192 72 a1i m01
193 160 176 192 adddid m01m+1m+1+1+-1=1m+1m+1+1+1m+1-1
194 negsub m+1+11m+1+1+-1=m+1+1-1
195 176 70 194 sylancl m0m+1+1+-1=m+1+1-1
196 pncan m+11m+1+1-1=m+1
197 172 70 196 sylancl m0m+1+1-1=m+1
198 195 197 eqtrd m0m+1+1+-1=m+1
199 198 oveq2d m01m+1m+1+1+-1=1m+1m+1
200 193 199 eqtr3d m01m+1m+1+1+1m+1-1=1m+1m+1
201 expp1 1m+101m+1+1=1m+1-1
202 72 131 201 sylancr m01m+1+1=1m+1-1
203 202 oveq2d m01m+1m+1+1+1m+1+1=1m+1m+1+1+1m+1-1
204 172 160 mulcomd m0m+11m+1=1m+1m+1
205 200 203 204 3eqtr4d m01m+1m+1+1+1m+1+1=m+11m+1
206 191 205 oveq12d m0m+1m!m+1+1k=0m1kk!+1m+1m+1+1+1m+1+1=m+1m!m+1+1k=0m1kk!+m+11m+1
207 172 190 mulcld m0m+1m!m+1+1
208 207 158 mulcld m0m+1m!m+1+1k=0m1kk!
209 160 176 mulcld m01m+1m+1+1
210 208 209 143 addassd m0m+1m!m+1+1k=0m1kk!+1m+1m+1+1+1m+1+1=m+1m!m+1+1k=0m1kk!+1m+1m+1+1+1m+1+1
211 190 158 mulcld m0m!m+1+1k=0m1kk!
212 172 211 160 adddid m0m+1m!m+1+1k=0m1kk!+1m+1=m+1m!m+1+1k=0m1kk!+m+11m+1
213 206 210 212 3eqtr4d m0m+1m!m+1+1k=0m1kk!+1m+1m+1+1+1m+1+1=m+1m!m+1+1k=0m1kk!+1m+1
214 146 189 213 3eqtrd m0m+1+1!k=0m+11kk!+1m+1+1m+1+1!=m+1m!m+1+1k=0m1kk!+1m+1
215 131 86 eleqtrdi m0m+10
216 elfznn0 k0m+1+1k0
217 216 adantl m0k0m+1+1k0
218 217 102 syl m0k0m+1+11kk!
219 oveq2 k=m+1+11k=1m+1+1
220 fveq2 k=m+1+1k!=m+1+1!
221 219 220 oveq12d k=m+1+11kk!=1m+1+1m+1+1!
222 215 218 221 fsump1 m0k=0m+1+11kk!=k=0m+11kk!+1m+1+1m+1+1!
223 222 oveq2d m0m+1+1!k=0m+1+11kk!=m+1+1!k=0m+11kk!+1m+1+1m+1+1!
224 163 158 mulcld m0m+1!k=0m1kk!
225 171 158 mulcld m0m!k=0m1kk!
226 224 160 225 add32d m0m+1!k=0m1kk!+1m+1+m!k=0m1kk!=m+1!k=0m1kk!+m!k=0m1kk!+1m+1
227 152 oveq2d m0m+1!k=0m+11kk!=m+1!k=0m1kk!+1m+1m+1!
228 163 158 165 adddid m0m+1!k=0m1kk!+1m+1m+1!=m+1!k=0m1kk!+m+1!1m+1m+1!
229 160 163 164 divcan2d m0m+1!1m+1m+1!=1m+1
230 229 oveq2d m0m+1!k=0m1kk!+m+1!1m+1m+1!=m+1!k=0m1kk!+1m+1
231 227 228 230 3eqtrd m0m+1!k=0m+11kk!=m+1!k=0m1kk!+1m+1
232 231 oveq1d m0m+1!k=0m+11kk!+m!k=0m1kk!=m+1!k=0m1kk!+1m+1+m!k=0m1kk!
233 70 a1i m01
234 171 172 233 adddid m0m!m+1+1=m!m+1+m!1
235 169 eqcomd m0m!m+1=m+1!
236 171 mulridd m0m!1=m!
237 235 236 oveq12d m0m!m+1+m!1=m+1!+m!
238 234 237 eqtrd m0m!m+1+1=m+1!+m!
239 238 oveq1d m0m!m+1+1k=0m1kk!=m+1!+m!k=0m1kk!
240 163 171 158 adddird m0m+1!+m!k=0m1kk!=m+1!k=0m1kk!+m!k=0m1kk!
241 239 240 eqtrd m0m!m+1+1k=0m1kk!=m+1!k=0m1kk!+m!k=0m1kk!
242 241 oveq1d m0m!m+1+1k=0m1kk!+1m+1=m+1!k=0m1kk!+m!k=0m1kk!+1m+1
243 226 232 242 3eqtr4d m0m+1!k=0m+11kk!+m!k=0m1kk!=m!m+1+1k=0m1kk!+1m+1
244 243 oveq2d m0m+1m+1!k=0m+11kk!+m!k=0m1kk!=m+1m!m+1+1k=0m1kk!+1m+1
245 214 223 244 3eqtr4d m0m+1+1!k=0m+1+11kk!=m+1m+1!k=0m+11kk!+m!k=0m1kk!
246 130 245 eqeq12d m0Sm+1+1=m+1+1!k=0m+1+11kk!m+1Sm+1+Sm=m+1m+1!k=0m+11kk!+m!k=0m1kk!
247 120 246 imbitrrid m0Sm=m!k=0m1kk!Sm+1=m+1!k=0m+11kk!Sm+1+1=m+1+1!k=0m+1+11kk!
248 117 247 jcad m0Sm=m!k=0m1kk!Sm+1=m+1!k=0m+11kk!Sm+1=m+1!k=0m+11kk!Sm+1+1=m+1+1!k=0m+1+11kk!
249 26 40 54 68 115 248 nn0ind N0SN=N!k=0N1kk!SN+1=N+1!k=0N+11kk!
250 249 simpld N0SN=N!k=0N1kk!