@@ -190,28 +190,16 @@ have h₁ : multiplicity p (choose n k) + multiplicity p (k! * (n - k)!) =
190
190
h₁
191
191
192
192
/-- A lower bound on the multiplicity of `p` in `choose n k`. -/
193
- lemma multiplicity_le_multiplicity_choose_add {p : ℕ} (hp : p.prime) (n k : ℕ) :
194
- multiplicity p n ≤ multiplicity p (choose n k) + multiplicity p k :=
195
- if hkn : n < k then by simp [choose_eq_zero_of_lt hkn]
196
- else if hk0 : k = 0 then by simp [hk0]
197
- else if hn0 : n = 0 then by cases k; simp [hn0, *] at *
198
- else begin
199
- rw [multiplicity_choose hp (le_of_not_gt hkn) (lt_succ_self _),
200
- multiplicity_eq_card_pow_dvd (ne_of_gt hp.one_lt) (nat.pos_of_ne_zero hk0)
201
- (lt_succ_of_le (log_mono_right (le_of_not_gt hkn))),
202
- multiplicity_eq_card_pow_dvd (ne_of_gt hp.one_lt) (nat.pos_of_ne_zero hn0) (lt_succ_self _),
203
- ← nat.cast_add, enat.coe_le_coe],
204
- calc ((Ico 1 (log p n).succ).filter (λ i, p ^ i ∣ n)).card
205
- ≤ ((Ico 1 (log p n).succ).filter (λ i, p ^ i ≤ k % p ^ i + (n - k) % p ^ i) ∪
206
- (Ico 1 (log p n).succ).filter (λ i, p ^ i ∣ k) ).card :
207
- card_le_of_subset $ λ i, begin
208
- have := @le_mod_add_mod_of_dvd_add_of_not_dvd k (n - k) (p ^ i),
209
- simp [add_tsub_cancel_of_le (le_of_not_gt hkn)] at * {contextual := tt},
210
- tauto
211
- end
212
- ... ≤ ((Ico 1 (log p n).succ).filter (λ i, p ^ i ≤ k % p ^ i + (n - k) % p ^ i)).card +
213
- ((Ico 1 (log p n).succ).filter (λ i, p ^ i ∣ k)).card :
214
- card_union_le _ _
193
+ lemma multiplicity_le_multiplicity_choose_add {p : ℕ} (hp : p.prime) : ∀ (n k : ℕ),
194
+ multiplicity p n ≤ multiplicity p (choose n k) + multiplicity p k
195
+ | _ 0 := by simp
196
+ | 0 (_+1 ) := by simp
197
+ | (n+1 ) (k+1 ) :=
198
+ begin
199
+ rw ← hp.multiplicity_mul,
200
+ refine multiplicity_le_multiplicity_of_dvd_right _,
201
+ rw [← succ_mul_choose_eq],
202
+ exact dvd_mul_right _ _
215
203
end
216
204
217
205
lemma multiplicity_choose_prime_pow {p n k : ℕ} (hp : p.prime)
0 commit comments