Metamath Proof Explorer


Theorem birthdaylem2

Description: For general N and K , count the fraction of injective functions from 1 ... K to 1 ... N . (Contributed by Mario Carneiro, 7-May-2015)

Ref Expression
Hypotheses birthday.s S=f|f:1K1N
birthday.t T=f|f:1K1-11N
Assertion birthdaylem2 NK0NTS=ek=0K1log1kN

Proof

Step Hyp Ref Expression
1 birthday.s S=f|f:1K1N
2 birthday.t T=f|f:1K1-11N
3 2 fveq2i T=f|f:1K1-11N
4 fzfi 1KFin
5 fzfi 1NFin
6 hashf1 1KFin1NFinf|f:1K1-11N=1K!(1N1K)
7 4 5 6 mp2an f|f:1K1-11N=1K!(1N1K)
8 3 7 eqtri T=1K!(1N1K)
9 elfznn0 K0NK0
10 9 adantl NK0NK0
11 hashfz1 K01K=K
12 10 11 syl NK0N1K=K
13 12 fveq2d NK0N1K!=K!
14 nnnn0 NN0
15 hashfz1 N01N=N
16 14 15 syl N1N=N
17 16 adantr NK0N1N=N
18 17 12 oveq12d NK0N(1N1K)=(NK)
19 13 18 oveq12d NK0N1K!(1N1K)=K!(NK)
20 8 19 eqtrid NK0NT=K!(NK)
21 14 adantr NK0NN0
22 21 faccld NK0NN!
23 22 nncnd NK0NN!
24 fznn0sub K0NNK0
25 24 adantl NK0NNK0
26 25 faccld NK0NNK!
27 26 nncnd NK0NNK!
28 26 nnne0d NK0NNK!0
29 23 27 28 divcld NK0NN!NK!
30 10 faccld NK0NK!
31 30 nncnd NK0NK!
32 30 nnne0d NK0NK!0
33 29 31 32 divcan2d NK0NK!N!NK!K!=N!NK!
34 bcval2 K0N(NK)=N!NK!K!
35 34 adantl NK0N(NK)=N!NK!K!
36 23 27 31 28 32 divdiv1d NK0NN!NK!K!=N!NK!K!
37 35 36 eqtr4d NK0N(NK)=N!NK!K!
38 37 oveq2d NK0NK!(NK)=K!N!NK!K!
39 fzfid NK0N1NFin
40 elfznn n1Nn
41 40 adantl NK0Nn1Nn
42 nnrp nn+
43 42 relogcld nlogn
44 43 recnd nlogn
45 41 44 syl NK0Nn1Nlogn
46 39 45 fsumcl NK0Nn=1Nlogn
47 fzfid NK0N1NKFin
48 elfznn n1NKn
49 48 adantl NK0Nn1NKn
50 49 44 syl NK0Nn1NKlogn
51 47 50 fsumcl NK0Nn=1NKlogn
52 efsub n=1Nlognn=1NKlognen=1Nlognn=1NKlogn=en=1Nlognen=1NKlogn
53 46 51 52 syl2anc NK0Nen=1Nlognn=1NKlogn=en=1Nlognen=1NKlogn
54 25 nn0red NK0NNK
55 54 ltp1d NK0NNK<N-K+1
56 fzdisj NK<N-K+11NKN-K+1N=
57 55 56 syl NK0N1NKN-K+1N=
58 fznn0sub2 K0NNK0N
59 58 adantl NK0NNK0N
60 elfzle2 NK0NNKN
61 59 60 syl NK0NNKN
62 61 adantr NK0NNKNKN
63 simpr NK0NNKNK
64 nnuz =1
65 63 64 eleqtrdi NK0NNKNK1
66 nnz NN
67 66 ad2antrr NK0NNKN
68 elfz5 NK1NNK1NNKN
69 65 67 68 syl2anc NK0NNKNK1NNKN
70 62 69 mpbird NK0NNKNK1N
71 fzsplit NK1N1N=1NKN-K+1N
72 70 71 syl NK0NNK1N=1NKN-K+1N
73 simpr NK0NNK=0NK=0
74 73 oveq2d NK0NNK=01NK=10
75 fz10 10=
76 74 75 eqtrdi NK0NNK=01NK=
77 76 uneq1d NK0NNK=01NKN-K+1N=N-K+1N
78 uncom N-K+1N=N-K+1N
79 un0 N-K+1N=N-K+1N
80 78 79 eqtri N-K+1N=N-K+1N
81 73 oveq1d NK0NNK=0N-K+1=0+1
82 1e0p1 1=0+1
83 81 82 eqtr4di NK0NNK=0N-K+1=1
84 83 oveq1d NK0NNK=0N-K+1N=1N
85 80 84 eqtrid NK0NNK=0N-K+1N=1N
86 77 85 eqtr2d NK0NNK=01N=1NKN-K+1N
87 elnn0 NK0NKNK=0
88 25 87 sylib NK0NNKNK=0
89 72 86 88 mpjaodan NK0N1N=1NKN-K+1N
90 57 89 39 45 fsumsplit NK0Nn=1Nlogn=n=1NKlogn+n=N-K+1Nlogn
91 90 oveq1d NK0Nn=1Nlognn=1NKlogn=n=1NKlogn+n=N-K+1Nlogn-n=1NKlogn
92 fzfid NK0NN-K+1NFin
93 nn0p1nn NK0N-K+1
94 25 93 syl NK0NN-K+1
95 elfzuz nN-K+1NnN-K+1
96 eluznn N-K+1nN-K+1n
97 94 95 96 syl2an NK0NnN-K+1Nn
98 97 44 syl NK0NnN-K+1Nlogn
99 92 98 fsumcl NK0Nn=N-K+1Nlogn
100 51 99 pncan2d NK0Nn=1NKlogn+n=N-K+1Nlogn-n=1NKlogn=n=N-K+1Nlogn
101 91 100 eqtr2d NK0Nn=N-K+1Nlogn=n=1Nlognn=1NKlogn
102 101 fveq2d NK0Nen=N-K+1Nlogn=en=1Nlognn=1NKlogn
103 22 nnne0d NK0NN!0
104 eflog N!N!0elogN!=N!
105 23 103 104 syl2anc NK0NelogN!=N!
106 logfac N0logN!=n=1Nlogn
107 21 106 syl NK0NlogN!=n=1Nlogn
108 107 fveq2d NK0NelogN!=en=1Nlogn
109 105 108 eqtr3d NK0NN!=en=1Nlogn
110 eflog NK!NK!0elogNK!=NK!
111 27 28 110 syl2anc NK0NelogNK!=NK!
112 logfac NK0logNK!=n=1NKlogn
113 25 112 syl NK0NlogNK!=n=1NKlogn
114 113 fveq2d NK0NelogNK!=en=1NKlogn
115 111 114 eqtr3d NK0NNK!=en=1NKlogn
116 109 115 oveq12d NK0NN!NK!=en=1Nlognen=1NKlogn
117 53 102 116 3eqtr4d NK0Nen=N-K+1Nlogn=N!NK!
118 33 38 117 3eqtr4d NK0NK!(NK)=en=N-K+1Nlogn
119 20 118 eqtrd NK0NT=en=N-K+1Nlogn
120 mapvalg 1NFin1KFin1N1K=f|f:1K1N
121 5 4 120 mp2an 1N1K=f|f:1K1N
122 1 121 eqtr4i S=1N1K
123 122 fveq2i S=1N1K
124 hashmap 1NFin1KFin1N1K=1N1K
125 5 4 124 mp2an 1N1K=1N1K
126 123 125 eqtri S=1N1K
127 17 12 oveq12d NK0N1N1K=NK
128 126 127 eqtrid NK0NS=NK
129 nncn NN
130 129 adantr NK0NN
131 nnne0 NN0
132 131 adantr NK0NN0
133 elfzelz K0NK
134 133 adantl NK0NK
135 explog NN0KNK=eKlogN
136 130 132 134 135 syl3anc NK0NNK=eKlogN
137 128 136 eqtrd NK0NS=eKlogN
138 119 137 oveq12d NK0NTS=en=N-K+1NlogneKlogN
139 10 nn0cnd NK0NK
140 nnrp NN+
141 140 adantr NK0NN+
142 141 relogcld NK0NlogN
143 142 recnd NK0NlogN
144 139 143 mulcld NK0NKlogN
145 efsub n=N-K+1NlognKlogNen=N-K+1NlognKlogN=en=N-K+1NlogneKlogN
146 99 144 145 syl2anc NK0Nen=N-K+1NlognKlogN=en=N-K+1NlogneKlogN
147 relogdiv n+N+lognN=lognlogN
148 42 141 147 syl2anr NK0NnlognN=lognlogN
149 97 148 syldan NK0NnN-K+1NlognN=lognlogN
150 149 sumeq2dv NK0Nn=N-K+1NlognN=n=N-K+1NlognlogN
151 66 adantr NK0NN
152 25 nn0zd NK0NNK
153 152 peano2zd NK0NN-K+1
154 97 nnrpd NK0NnN-K+1Nn+
155 141 adantr NK0NnN-K+1NN+
156 154 155 rpdivcld NK0NnN-K+1NnN+
157 156 relogcld NK0NnN-K+1NlognN
158 157 recnd NK0NnN-K+1NlognN
159 fvoveq1 n=NklognN=logNkN
160 151 153 151 158 159 fsumrev NK0Nn=N-K+1NlognN=k=NNNN-K+1logNkN
161 130 subidd NK0NNN=0
162 1cnd NK0N1
163 130 139 162 subsubd NK0NNK1=N-K+1
164 163 oveq2d NK0NNNK1=NN-K+1
165 ax-1cn 1
166 subcl K1K1
167 139 165 166 sylancl NK0NK1
168 130 167 nncand NK0NNNK1=K1
169 164 168 eqtr3d NK0NNN-K+1=K1
170 161 169 oveq12d NK0NNNNN-K+1=0K1
171 130 adantr NK0Nk0K1N
172 elfznn0 k0K1k0
173 172 adantl NK0Nk0K1k0
174 173 nn0cnd NK0Nk0K1k
175 132 adantr NK0Nk0K1N0
176 171 174 171 175 divsubdird NK0Nk0K1NkN=NNkN
177 171 175 dividd NK0Nk0K1NN=1
178 177 oveq1d NK0Nk0K1NNkN=1kN
179 176 178 eqtrd NK0Nk0K1NkN=1kN
180 179 fveq2d NK0Nk0K1logNkN=log1kN
181 170 180 sumeq12rdv NK0Nk=NNNN-K+1logNkN=k=0K1log1kN
182 160 181 eqtrd NK0Nn=N-K+1NlognN=k=0K1log1kN
183 143 adantr NK0NnN-K+1NlogN
184 92 98 183 fsumsub NK0Nn=N-K+1NlognlogN=n=N-K+1Nlognn=N-K+1NlogN
185 fsumconst N-K+1NFinlogNn=N-K+1NlogN=N-K+1NlogN
186 92 143 185 syl2anc NK0Nn=N-K+1NlogN=N-K+1NlogN
187 1zzd NK0N1
188 fzen 1KNK1K1+N-KK+N-K
189 187 134 152 188 syl3anc NK0N1K1+N-KK+N-K
190 25 nn0cnd NK0NNK
191 addcom 1NK1+N-K=N-K+1
192 165 190 191 sylancr NK0N1+N-K=N-K+1
193 139 130 pncan3d NK0NK+N-K=N
194 192 193 oveq12d NK0N1+N-KK+N-K=N-K+1N
195 189 194 breqtrd NK0N1KN-K+1N
196 hasheni 1KN-K+1N1K=N-K+1N
197 195 196 syl NK0N1K=N-K+1N
198 197 12 eqtr3d NK0NN-K+1N=K
199 198 oveq1d NK0NN-K+1NlogN=KlogN
200 186 199 eqtrd NK0Nn=N-K+1NlogN=KlogN
201 200 oveq2d NK0Nn=N-K+1Nlognn=N-K+1NlogN=n=N-K+1NlognKlogN
202 184 201 eqtrd NK0Nn=N-K+1NlognlogN=n=N-K+1NlognKlogN
203 150 182 202 3eqtr3rd NK0Nn=N-K+1NlognKlogN=k=0K1log1kN
204 203 fveq2d NK0Nen=N-K+1NlognKlogN=ek=0K1log1kN
205 138 146 204 3eqtr2d NK0NTS=ek=0K1log1kN