Theorem: Finset.sum_card_slice_div_choose_le_one
File: Mathlib/Combinatorics/SetFamily/LYM.lean

tactic: rw [← sum_flip]
state_before: 𝕜 : Type u_1
α : Type u_2
inst✝¹ : LinearOrderedField 𝕜
𝒜 : Finset (Finset α)
s : Finset α
k : ℕ
inst✝ : Fintype α
h𝒜 : IsAntichain (fun x x_1 => x ⊆ x_1) ↑𝒜
⊢ ∑ r ∈ range (Fintype.card α + 1), ↑(𝒜 # r).card / ↑((Fintype.card α).choose r) ≤ 1
state_after: 𝕜 : Type u_1
α : Type u_2
inst✝¹ : LinearOrderedField 𝕜
𝒜 : Finset (Finset α)
s : Finset α
k : ℕ
inst✝ : Fintype α
h𝒜 : IsAntichain (fun x x_1 => x ⊆ x_1) ↑𝒜
⊢ ∑ r ∈ range (Fintype.card α + 1), ↑(𝒜 # (Fintype.card α - r)).card / ↑((Fintype.card α).choose (Fintype.card α - r)) ≤
    1

tactic: refine (le_card_falling_div_choose le_rfl h𝒜).trans ?_
state_before: 𝕜 : Type u_1
α : Type u_2
inst✝¹ : LinearOrderedField 𝕜
𝒜 : Finset (Finset α)
s : Finset α
k : ℕ
inst✝ : Fintype α
h𝒜 : IsAntichain (fun x x_1 => x ⊆ x_1) ↑𝒜
⊢ ∑ r ∈ range (Fintype.card α + 1), ↑(𝒜 # (Fintype.card α - r)).card / ↑((Fintype.card α).choose (Fintype.card α - r)) ≤
    1
state_after: 𝕜 : Type u_1
α : Type u_2
inst✝¹ : LinearOrderedField 𝕜
𝒜 : Finset (Finset α)
s : Finset α
k : ℕ
inst✝ : Fintype α
h𝒜 : IsAntichain (fun x x_1 => x ⊆ x_1) ↑𝒜
⊢ ↑(falling (Fintype.card α - Fintype.card α) 𝒜).card / ↑((Fintype.card α).choose (Fintype.card α - Fintype.card α)) ≤ 1

tactic: rw [div_le_iff] <;> norm_cast
state_before: 𝕜 : Type u_1
α : Type u_2
inst✝¹ : LinearOrderedField 𝕜
𝒜 : Finset (Finset α)
s : Finset α
k : ℕ
inst✝ : Fintype α
h𝒜 : IsAntichain (fun x x_1 => x ⊆ x_1) ↑𝒜
⊢ ↑(falling (Fintype.card α - Fintype.card α) 𝒜).card / ↑((Fintype.card α).choose (Fintype.card α - Fintype.card α)) ≤ 1
state_after: 𝕜 : Type u_1
α : Type u_2
inst✝¹ : LinearOrderedField 𝕜
𝒜 : Finset (Finset α)
s : Finset α
k : ℕ
inst✝ : Fintype α
h𝒜 : IsAntichain (fun x x_1 => x ⊆ x_1) ↑𝒜
⊢ (falling (Fintype.card α - Fintype.card α) 𝒜).card ≤ 1 * (Fintype.card α).choose (Fintype.card α - Fintype.card α)

𝕜 : Type u_1
α : Type u_2
inst✝¹ : LinearOrderedField 𝕜
𝒜 : Finset (Finset α)
s : Finset α
k : ℕ
inst✝ : Fintype α
h𝒜 : IsAntichain (fun x x_1 => x ⊆ x_1) ↑𝒜
⊢ 0 < (Fintype.card α).choose (Fintype.card α - Fintype.card α)

tactic: simpa only [Nat.sub_self, one_mul, Nat.choose_zero_right, falling] using
  Set.Sized.card_le (sized_falling 0 𝒜)
state_before: 𝕜 : Type u_1
α : Type u_2
inst✝¹ : LinearOrderedField 𝕜
𝒜 : Finset (Finset α)
s : Finset α
k : ℕ
inst✝ : Fintype α
h𝒜 : IsAntichain (fun x x_1 => x ⊆ x_1) ↑𝒜
⊢ (falling (Fintype.card α - Fintype.card α) 𝒜).card ≤ 1 * (Fintype.card α).choose (Fintype.card α - Fintype.card α)
state_after: no goals

tactic: rw [tsub_self, choose_zero_right]
state_before: 𝕜 : Type u_1
α : Type u_2
inst✝¹ : LinearOrderedField 𝕜
𝒜 : Finset (Finset α)
s : Finset α
k : ℕ
inst✝ : Fintype α
h𝒜 : IsAntichain (fun x x_1 => x ⊆ x_1) ↑𝒜
⊢ 0 < (Fintype.card α).choose (Fintype.card α - Fintype.card α)
state_after: 𝕜 : Type u_1
α : Type u_2
inst✝¹ : LinearOrderedField 𝕜
𝒜 : Finset (Finset α)
s : Finset α
k : ℕ
inst✝ : Fintype α
h𝒜 : IsAntichain (fun x x_1 => x ⊆ x_1) ↑𝒜
⊢ 0 < 1

tactic: exact zero_lt_one
state_before: 𝕜 : Type u_1
α : Type u_2
inst✝¹ : LinearOrderedField 𝕜
𝒜 : Finset (Finset α)
s : Finset α
k : ℕ
inst✝ : Fintype α
h𝒜 : IsAntichain (fun x x_1 => x ⊆ x_1) ↑𝒜
⊢ 0 < 1
state_after: no goals