Theorem: AhlswedeZhang.supSum_singleton
File: Mathlib/Combinatorics/SetFamily/AhlswedeZhang.lean

tactic: have : ∀ t : Finset α,
  (card α - (truncatedSup {s} t).card : ℚ) / ((card α - t.card) * (card α).choose t.card) =
  if t ⊆ s then (card α - s.card : ℚ) / ((card α - t.card) * (card α).choose t.card) else 0 := by
  rintro t
  simp_rw [truncatedSup_singleton, le_iff_subset]
  split_ifs <;> simp [card_univ]
state_before: α : Type u_1
inst✝² : Fintype α
inst✝¹ : DecidableEq α
𝒜 ℬ : Finset (Finset α)
s : Finset α
inst✝ : Nonempty α
hs : s ≠ univ
⊢ supSum {s} = ↑(card α) * ∑ k ∈ range (card α), (↑k)⁻¹
state_after: α : Type u_1
inst✝² : Fintype α
inst✝¹ : DecidableEq α
𝒜 ℬ : Finset (Finset α)
s : Finset α
inst✝ : Nonempty α
hs : s ≠ univ
this :
  ∀ (t : Finset α),
    (↑(card α) - ↑({s}.truncatedSup t).card) / ((↑(card α) - ↑t.card) * ↑((card α).choose t.card)) =
      if t ⊆ s then (↑(card α) - ↑s.card) / ((↑(card α) - ↑t.card) * ↑((card α).choose t.card)) else 0
⊢ supSum {s} = ↑(card α) * ∑ k ∈ range (card α), (↑k)⁻¹

tactic: simp_rw [← sub_eq_of_eq_add (Fintype.sum_div_mul_card_choose_card α), eq_sub_iff_add_eq,
  ← eq_sub_iff_add_eq', supSum, ← sum_sub_distrib, ← sub_div]
state_before: α : Type u_1
inst✝² : Fintype α
inst✝¹ : DecidableEq α
𝒜 ℬ : Finset (Finset α)
s : Finset α
inst✝ : Nonempty α
hs : s ≠ univ
this :
  ∀ (t : Finset α),
    (↑(card α) - ↑({s}.truncatedSup t).card) / ((↑(card α) - ↑t.card) * ↑((card α).choose t.card)) =
      if t ⊆ s then (↑(card α) - ↑s.card) / ((↑(card α) - ↑t.card) * ↑((card α).choose t.card)) else 0
⊢ supSum {s} = ↑(card α) * ∑ k ∈ range (card α), (↑k)⁻¹
state_after: α : Type u_1
inst✝² : Fintype α
inst✝¹ : DecidableEq α
𝒜 ℬ : Finset (Finset α)
s : Finset α
inst✝ : Nonempty α
hs : s ≠ univ
this :
  ∀ (t : Finset α),
    (↑(card α) - ↑({s}.truncatedSup t).card) / ((↑(card α) - ↑t.card) * ↑((card α).choose t.card)) =
      if t ⊆ s then (↑(card α) - ↑s.card) / ((↑(card α) - ↑t.card) * ↑((card α).choose t.card)) else 0
⊢ 1 = ∑ x : Finset α, (↑(card α) - ↑({s}.truncatedSup x).card) / ((↑(card α) - ↑x.card) * ↑((card α).choose x.card))

tactic: rw [sum_congr rfl fun t _ ↦ this t, sum_ite, sum_const_zero, add_zero, filter_subset_univ,
  sum_powerset, ← binomial_sum_eq ((card_lt_iff_ne_univ _).2 hs), eq_comm]
state_before: α : Type u_1
inst✝² : Fintype α
inst✝¹ : DecidableEq α
𝒜 ℬ : Finset (Finset α)
s : Finset α
inst✝ : Nonempty α
hs : s ≠ univ
this :
  ∀ (t : Finset α),
    (↑(card α) - ↑({s}.truncatedSup t).card) / ((↑(card α) - ↑t.card) * ↑((card α).choose t.card)) =
      if t ⊆ s then (↑(card α) - ↑s.card) / ((↑(card α) - ↑t.card) * ↑((card α).choose t.card)) else 0
⊢ 1 = ∑ x : Finset α, (↑(card α) - ↑({s}.truncatedSup x).card) / ((↑(card α) - ↑x.card) * ↑((card α).choose x.card))
state_after: α : Type u_1
inst✝² : Fintype α
inst✝¹ : DecidableEq α
𝒜 ℬ : Finset (Finset α)
s : Finset α
inst✝ : Nonempty α
hs : s ≠ univ
this :
  ∀ (t : Finset α),
    (↑(card α) - ↑({s}.truncatedSup t).card) / ((↑(card α) - ↑t.card) * ↑((card α).choose t.card)) =
      if t ⊆ s then (↑(card α) - ↑s.card) / ((↑(card α) - ↑t.card) * ↑((card α).choose t.card)) else 0
⊢ ∑ j ∈ range (s.card + 1),
      ∑ t ∈ powersetCard j s, (↑(card α) - ↑s.card) / ((↑(card α) - ↑t.card) * ↑((card α).choose t.card)) =
    ∑ i ∈ range (s.card + 1), ↑(s.card.choose i) * (↑(card α) - ↑s.card) / ((↑(card α) - ↑i) * ↑((card α).choose i))

tactic: refine sum_congr rfl fun n _ ↦ ?_
state_before: α : Type u_1
inst✝² : Fintype α
inst✝¹ : DecidableEq α
𝒜 ℬ : Finset (Finset α)
s : Finset α
inst✝ : Nonempty α
hs : s ≠ univ
this :
  ∀ (t : Finset α),
    (↑(card α) - ↑({s}.truncatedSup t).card) / ((↑(card α) - ↑t.card) * ↑((card α).choose t.card)) =
      if t ⊆ s then (↑(card α) - ↑s.card) / ((↑(card α) - ↑t.card) * ↑((card α).choose t.card)) else 0
⊢ ∑ j ∈ range (s.card + 1),
      ∑ t ∈ powersetCard j s, (↑(card α) - ↑s.card) / ((↑(card α) - ↑t.card) * ↑((card α).choose t.card)) =
    ∑ i ∈ range (s.card + 1), ↑(s.card.choose i) * (↑(card α) - ↑s.card) / ((↑(card α) - ↑i) * ↑((card α).choose i))
state_after: α : Type u_1
inst✝² : Fintype α
inst✝¹ : DecidableEq α
𝒜 ℬ : Finset (Finset α)
s : Finset α
inst✝ : Nonempty α
hs : s ≠ univ
this :
  ∀ (t : Finset α),
    (↑(card α) - ↑({s}.truncatedSup t).card) / ((↑(card α) - ↑t.card) * ↑((card α).choose t.card)) =
      if t ⊆ s then (↑(card α) - ↑s.card) / ((↑(card α) - ↑t.card) * ↑((card α).choose t.card)) else 0
n : ℕ
x✝ : n ∈ range (s.card + 1)
⊢ ∑ t ∈ powersetCard n s, (↑(card α) - ↑s.card) / ((↑(card α) - ↑t.card) * ↑((card α).choose t.card)) =
    ↑(s.card.choose n) * (↑(card α) - ↑s.card) / ((↑(card α) - ↑n) * ↑((card α).choose n))

tactic: rw [mul_div_assoc, ← nsmul_eq_mul]
state_before: α : Type u_1
inst✝² : Fintype α
inst✝¹ : DecidableEq α
𝒜 ℬ : Finset (Finset α)
s : Finset α
inst✝ : Nonempty α
hs : s ≠ univ
this :
  ∀ (t : Finset α),
    (↑(card α) - ↑({s}.truncatedSup t).card) / ((↑(card α) - ↑t.card) * ↑((card α).choose t.card)) =
      if t ⊆ s then (↑(card α) - ↑s.card) / ((↑(card α) - ↑t.card) * ↑((card α).choose t.card)) else 0
n : ℕ
x✝ : n ∈ range (s.card + 1)
⊢ ∑ t ∈ powersetCard n s, (↑(card α) - ↑s.card) / ((↑(card α) - ↑t.card) * ↑((card α).choose t.card)) =
    ↑(s.card.choose n) * (↑(card α) - ↑s.card) / ((↑(card α) - ↑n) * ↑((card α).choose n))
state_after: α : Type u_1
inst✝² : Fintype α
inst✝¹ : DecidableEq α
𝒜 ℬ : Finset (Finset α)
s : Finset α
inst✝ : Nonempty α
hs : s ≠ univ
this :
  ∀ (t : Finset α),
    (↑(card α) - ↑({s}.truncatedSup t).card) / ((↑(card α) - ↑t.card) * ↑((card α).choose t.card)) =
      if t ⊆ s then (↑(card α) - ↑s.card) / ((↑(card α) - ↑t.card) * ↑((card α).choose t.card)) else 0
n : ℕ
x✝ : n ∈ range (s.card + 1)
⊢ ∑ t ∈ powersetCard n s, (↑(card α) - ↑s.card) / ((↑(card α) - ↑t.card) * ↑((card α).choose t.card)) =
    s.card.choose n • ((↑(card α) - ↑s.card) / ((↑(card α) - ↑n) * ↑((card α).choose n)))

tactic: exact sum_powersetCard n s fun m ↦ (card α - s.card : ℚ) / ((card α - m) * (card α).choose m)
state_before: α : Type u_1
inst✝² : Fintype α
inst✝¹ : DecidableEq α
𝒜 ℬ : Finset (Finset α)
s : Finset α
inst✝ : Nonempty α
hs : s ≠ univ
this :
  ∀ (t : Finset α),
    (↑(card α) - ↑({s}.truncatedSup t).card) / ((↑(card α) - ↑t.card) * ↑((card α).choose t.card)) =
      if t ⊆ s then (↑(card α) - ↑s.card) / ((↑(card α) - ↑t.card) * ↑((card α).choose t.card)) else 0
n : ℕ
x✝ : n ∈ range (s.card + 1)
⊢ ∑ t ∈ powersetCard n s, (↑(card α) - ↑s.card) / ((↑(card α) - ↑t.card) * ↑((card α).choose t.card)) =
    s.card.choose n • ((↑(card α) - ↑s.card) / ((↑(card α) - ↑n) * ↑((card α).choose n)))
state_after: no goals

tactic: rintro t
state_before: α : Type u_1
inst✝² : Fintype α
inst✝¹ : DecidableEq α
𝒜 ℬ : Finset (Finset α)
s : Finset α
inst✝ : Nonempty α
hs : s ≠ univ
⊢ ∀ (t : Finset α),
    (↑(card α) - ↑({s}.truncatedSup t).card) / ((↑(card α) - ↑t.card) * ↑((card α).choose t.card)) =
      if t ⊆ s then (↑(card α) - ↑s.card) / ((↑(card α) - ↑t.card) * ↑((card α).choose t.card)) else 0
state_after: α : Type u_1
inst✝² : Fintype α
inst✝¹ : DecidableEq α
𝒜 ℬ : Finset (Finset α)
s : Finset α
inst✝ : Nonempty α
hs : s ≠ univ
t : Finset α
⊢ (↑(card α) - ↑({s}.truncatedSup t).card) / ((↑(card α) - ↑t.card) * ↑((card α).choose t.card)) =
    if t ⊆ s then (↑(card α) - ↑s.card) / ((↑(card α) - ↑t.card) * ↑((card α).choose t.card)) else 0

tactic: simp_rw [truncatedSup_singleton, le_iff_subset]
state_before: α : Type u_1
inst✝² : Fintype α
inst✝¹ : DecidableEq α
𝒜 ℬ : Finset (Finset α)
s : Finset α
inst✝ : Nonempty α
hs : s ≠ univ
t : Finset α
⊢ (↑(card α) - ↑({s}.truncatedSup t).card) / ((↑(card α) - ↑t.card) * ↑((card α).choose t.card)) =
    if t ⊆ s then (↑(card α) - ↑s.card) / ((↑(card α) - ↑t.card) * ↑((card α).choose t.card)) else 0
state_after: α : Type u_1
inst✝² : Fintype α
inst✝¹ : DecidableEq α
𝒜 ℬ : Finset (Finset α)
s : Finset α
inst✝ : Nonempty α
hs : s ≠ univ
t : Finset α
⊢ (↑(card α) - ↑(if t ⊆ s then s else ⊤).card) / ((↑(card α) - ↑t.card) * ↑((card α).choose t.card)) =
    if t ⊆ s then (↑(card α) - ↑s.card) / ((↑(card α) - ↑t.card) * ↑((card α).choose t.card)) else 0

tactic: split_ifs <;> simp [card_univ]
state_before: α : Type u_1
inst✝² : Fintype α
inst✝¹ : DecidableEq α
𝒜 ℬ : Finset (Finset α)
s : Finset α
inst✝ : Nonempty α
hs : s ≠ univ
t : Finset α
⊢ (↑(card α) - ↑(if t ⊆ s then s else ⊤).card) / ((↑(card α) - ↑t.card) * ↑((card α).choose t.card)) =
    if t ⊆ s then (↑(card α) - ↑s.card) / ((↑(card α) - ↑t.card) * ↑((card α).choose t.card)) else 0
state_after: no goals