Skip to content
This repository was archived by the owner on Jul 24, 2024. It is now read-only.

Commit 0e834df

Browse files
committed
chore(data/nat/multiplicity): simplify proof (#14103)
1 parent 0509c9c commit 0e834df

File tree

1 file changed

+10
-22
lines changed

1 file changed

+10
-22
lines changed

src/data/nat/multiplicity.lean

Lines changed: 10 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -190,28 +190,16 @@ have h₁ : multiplicity p (choose n k) + multiplicity p (k! * (n - k)!) =
190190
h₁
191191

192192
/-- 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 _ _
215203
end
216204

217205
lemma multiplicity_choose_prime_pow {p n k : ℕ} (hp : p.prime)

0 commit comments

Comments
 (0)