@@ -34,13 +34,21 @@ theorem prod_factorial_dvd_factorial_sum : (∏ i ∈ s, (f i)!) ∣ (∑ i ∈
3434 rw [prod_cons, Finset.sum_cons]
3535 exact (mul_dvd_mul_left _ ih).trans (Nat.factorial_mul_factorial_dvd_factorial_add _ _)
3636
37+ theorem factorial_eq_prod_range_add_one : ∀ n, (n)! = ∏ i ∈ range n, (i + 1 )
38+ | 0 => rfl
39+ | n + 1 => by rw [factorial, prod_range_succ_comm, factorial_eq_prod_range_add_one n]
40+
41+ @[simp]
42+ theorem _root_.Finset.prod_range_add_one_eq_factorial (n : ℕ) : ∏ i ∈ range n, (i + 1 ) = (n)! :=
43+ factorial_eq_prod_range_add_one _ |>.symm
44+
3745theorem ascFactorial_eq_prod_range (n : ℕ) : ∀ k, n.ascFactorial k = ∏ i ∈ range k, (n + i)
3846 | 0 => rfl
39- | k + 1 => by rw [ascFactorial, prod_range_succ, mul_comm , ascFactorial_eq_prod_range n k]
47+ | k + 1 => by rw [ascFactorial, prod_range_succ_comm , ascFactorial_eq_prod_range n k]
4048
4149theorem descFactorial_eq_prod_range (n : ℕ) : ∀ k, n.descFactorial k = ∏ i ∈ range k, (n - i)
4250 | 0 => rfl
43- | k + 1 => by rw [descFactorial, prod_range_succ, mul_comm , descFactorial_eq_prod_range n k]
51+ | k + 1 => by rw [descFactorial, prod_range_succ_comm , descFactorial_eq_prod_range n k]
4452
4553/-- `k!` divides the product of any `k` consecutive integers. -/
4654lemma factorial_coe_dvd_prod (k : ℕ) (n : ℤ) : (k ! : ℤ) ∣ ∏ i ∈ range k, (n + i) := by
0 commit comments