Theorem: IsLowerSet.le_card_inter_finset'
File: Mathlib/Combinatorics/SetFamily/HarrisKleitman.lean

tactic: induction' s using Finset.induction with a s hs ih generalizing 𝒜 ℬ
state_before: α : Type u_1
inst✝ : DecidableEq α
𝒜 ℬ : Finset (Finset α)
s : Finset α
a : α
h𝒜 : IsLowerSet ↑𝒜
hℬ : IsLowerSet ↑ℬ
h𝒜s : ∀ (t : Finset α), t ∈ 𝒜 → t ⊆ s
hℬs : ∀ (t : Finset α), t ∈ ℬ → t ⊆ s
⊢ card 𝒜 * card ℬ ≤ 2 ^ card s * card (𝒜 ∩ ℬ)

tactic: rw [card_insert_of_not_mem hs, ← card_memberSubfamily_add_card_nonMemberSubfamily a 𝒜, ←
  card_memberSubfamily_add_card_nonMemberSubfamily a ℬ, add_mul, mul_add, mul_add,
  add_comm (_ * _), add_add_add_comm]
state_before: case insert
α : Type u_1
inst✝ : DecidableEq α
𝒜✝ ℬ✝ : Finset (Finset α)
s✝ : Finset α
a✝ : α
h𝒜✝ : IsLowerSet ↑𝒜✝
hℬ✝ : IsLowerSet ↑ℬ✝
h𝒜s✝ : ∀ (t : Finset α), t ∈ 𝒜✝ → t ⊆ s✝
hℬs✝ : ∀ (t : Finset α), t ∈ ℬ✝ → t ⊆ s✝
a : α
s : Finset α
hs : ¬a ∈ s
ih :
  ∀ {𝒜 ℬ : Finset (Finset α)},
    IsLowerSet ↑𝒜 →
      IsLowerSet ↑ℬ →
        (∀ (t : Finset α), t ∈ 𝒜 → t ⊆ s) →
          (∀ (t : Finset α), t ∈ ℬ → t ⊆ s) → card 𝒜 * card ℬ ≤ 2 ^ card s * card (𝒜 ∩ ℬ)
𝒜 ℬ : Finset (Finset α)
h𝒜 : IsLowerSet ↑𝒜
hℬ : IsLowerSet ↑ℬ
h𝒜s : ∀ (t : Finset α), t ∈ 𝒜 → t ⊆ insert a s
hℬs : ∀ (t : Finset α), t ∈ ℬ → t ⊆ insert a s
⊢ card 𝒜 * card ℬ ≤ 2 ^ card (insert a s) * card (𝒜 ∩ ℬ)

tactic: refine'
  (add_le_add_right
        (mul_add_mul_le_mul_add_mul
            (card_le_of_subset h𝒜.memberSubfamily_subset_nonMemberSubfamily) <|
          card_le_of_subset hℬ.memberSubfamily_subset_nonMemberSubfamily)
        _).trans
    _
state_before: case insert
α : Type u_1
inst✝ : DecidableEq α
𝒜✝ ℬ✝ : Finset (Finset α)
s✝ : Finset α
a✝ : α
h𝒜✝ : IsLowerSet ↑𝒜✝
hℬ✝ : IsLowerSet ↑ℬ✝
h𝒜s✝ : ∀ (t : Finset α), t ∈ 𝒜✝ → t ⊆ s✝
hℬs✝ : ∀ (t : Finset α), t ∈ ℬ✝ → t ⊆ s✝
a : α
s : Finset α
hs : ¬a ∈ s
ih :
  ∀ {𝒜 ℬ : Finset (Finset α)},
    IsLowerSet ↑𝒜 →
      IsLowerSet ↑ℬ →
        (∀ (t : Finset α), t ∈ 𝒜 → t ⊆ s) →
          (∀ (t : Finset α), t ∈ ℬ → t ⊆ s) → card 𝒜 * card ℬ ≤ 2 ^ card s * card (𝒜 ∩ ℬ)
𝒜 ℬ : Finset (Finset α)
h𝒜 : IsLowerSet ↑𝒜
hℬ : IsLowerSet ↑ℬ
h𝒜s : ∀ (t : Finset α), t ∈ 𝒜 → t ⊆ insert a s
hℬs : ∀ (t : Finset α), t ∈ ℬ → t ⊆ insert a s
⊢ card (Finset.memberSubfamily a 𝒜) * card (Finset.nonMemberSubfamily a ℬ) +
        card (Finset.nonMemberSubfamily a 𝒜) * card (Finset.memberSubfamily a ℬ) +
      (card (Finset.memberSubfamily a 𝒜) * card (Finset.memberSubfamily a ℬ) +
        card (Finset.nonMemberSubfamily a 𝒜) * card (Finset.nonMemberSubfamily a ℬ)) ≤
    2 ^ (card s + 1) * card (𝒜 ∩ ℬ)

tactic: rw [← two_mul, pow_succ, mul_assoc]
state_before: case insert
α : Type u_1
inst✝ : DecidableEq α
𝒜✝ ℬ✝ : Finset (Finset α)
s✝ : Finset α
a✝ : α
h𝒜✝ : IsLowerSet ↑𝒜✝
hℬ✝ : IsLowerSet ↑ℬ✝
h𝒜s✝ : ∀ (t : Finset α), t ∈ 𝒜✝ → t ⊆ s✝
hℬs✝ : ∀ (t : Finset α), t ∈ ℬ✝ → t ⊆ s✝
a : α
s : Finset α
hs : ¬a ∈ s
ih :
  ∀ {𝒜 ℬ : Finset (Finset α)},
    IsLowerSet ↑𝒜 →
      IsLowerSet ↑ℬ →
        (∀ (t : Finset α), t ∈ 𝒜 → t ⊆ s) →
          (∀ (t : Finset α), t ∈ ℬ → t ⊆ s) → card 𝒜 * card ℬ ≤ 2 ^ card s * card (𝒜 ∩ ℬ)
𝒜 ℬ : Finset (Finset α)
h𝒜 : IsLowerSet ↑𝒜
hℬ : IsLowerSet ↑ℬ
h𝒜s : ∀ (t : Finset α), t ∈ 𝒜 → t ⊆ insert a s
hℬs : ∀ (t : Finset α), t ∈ ℬ → t ⊆ insert a s
⊢ card (Finset.memberSubfamily a 𝒜) * card (Finset.memberSubfamily a ℬ) +
        card (Finset.nonMemberSubfamily a 𝒜) * card (Finset.nonMemberSubfamily a ℬ) +
      (card (Finset.memberSubfamily a 𝒜) * card (Finset.memberSubfamily a ℬ) +
        card (Finset.nonMemberSubfamily a 𝒜) * card (Finset.nonMemberSubfamily a ℬ)) ≤
    2 ^ (card s + 1) * card (𝒜 ∩ ℬ)

tactic: have h₀ : ∀ 𝒞 : Finset (Finset α), (∀ t ∈ 𝒞, t ⊆ insert a s) →
    ∀ t ∈ 𝒞.nonMemberSubfamily a, t ⊆ s := by
  rintro 𝒞 h𝒞 t ht
  rw [mem_nonMemberSubfamily] at ht
  exact (subset_insert_iff_of_not_mem ht.2).1 (h𝒞 _ ht.1)
state_before: case insert
α : Type u_1
inst✝ : DecidableEq α
𝒜✝ ℬ✝ : Finset (Finset α)
s✝ : Finset α
a✝ : α
h𝒜✝ : IsLowerSet ↑𝒜✝
hℬ✝ : IsLowerSet ↑ℬ✝
h𝒜s✝ : ∀ (t : Finset α), t ∈ 𝒜✝ → t ⊆ s✝
hℬs✝ : ∀ (t : Finset α), t ∈ ℬ✝ → t ⊆ s✝
a : α
s : Finset α
hs : ¬a ∈ s
ih :
  ∀ {𝒜 ℬ : Finset (Finset α)},
    IsLowerSet ↑𝒜 →
      IsLowerSet ↑ℬ →
        (∀ (t : Finset α), t ∈ 𝒜 → t ⊆ s) →
          (∀ (t : Finset α), t ∈ ℬ → t ⊆ s) → card 𝒜 * card ℬ ≤ 2 ^ card s * card (𝒜 ∩ ℬ)
𝒜 ℬ : Finset (Finset α)
h𝒜 : IsLowerSet ↑𝒜
hℬ : IsLowerSet ↑ℬ
h𝒜s : ∀ (t : Finset α), t ∈ 𝒜 → t ⊆ insert a s
hℬs : ∀ (t : Finset α), t ∈ ℬ → t ⊆ insert a s
⊢ 2 *
      (card (Finset.memberSubfamily a 𝒜) * card (Finset.memberSubfamily a ℬ) +
        card (Finset.nonMemberSubfamily a 𝒜) * card (Finset.nonMemberSubfamily a ℬ)) ≤
    2 * (2 ^ card s * card (𝒜 ∩ ℬ))

tactic: have h₁ : ∀ 𝒞 : Finset (Finset α), (∀ t ∈ 𝒞, t ⊆ insert a s) →
    ∀ t ∈ 𝒞.memberSubfamily a, t ⊆ s := by
  rintro 𝒞 h𝒞 t ht
  rw [mem_memberSubfamily] at ht
  exact (subset_insert_iff_of_not_mem ht.2).1 ((subset_insert _ _).trans <| h𝒞 _ ht.1)
state_before: case insert
α : Type u_1
inst✝ : DecidableEq α
𝒜✝ ℬ✝ : Finset (Finset α)
s✝ : Finset α
a✝ : α
h𝒜✝ : IsLowerSet ↑𝒜✝
hℬ✝ : IsLowerSet ↑ℬ✝
h𝒜s✝ : ∀ (t : Finset α), t ∈ 𝒜✝ → t ⊆ s✝
hℬs✝ : ∀ (t : Finset α), t ∈ ℬ✝ → t ⊆ s✝
a : α
s : Finset α
hs : ¬a ∈ s
ih :
  ∀ {𝒜 ℬ : Finset (Finset α)},
    IsLowerSet ↑𝒜 →
      IsLowerSet ↑ℬ →
        (∀ (t : Finset α), t ∈ 𝒜 → t ⊆ s) →
          (∀ (t : Finset α), t ∈ ℬ → t ⊆ s) → card 𝒜 * card ℬ ≤ 2 ^ card s * card (𝒜 ∩ ℬ)
𝒜 ℬ : Finset (Finset α)
h𝒜 : IsLowerSet ↑𝒜
hℬ : IsLowerSet ↑ℬ
h𝒜s : ∀ (t : Finset α), t ∈ 𝒜 → t ⊆ insert a s
hℬs : ∀ (t : Finset α), t ∈ ℬ → t ⊆ insert a s
h₀ :
  ∀ (𝒞 : Finset (Finset α)),
    (∀ (t : Finset α), t ∈ 𝒞 → t ⊆ insert a s) → ∀ (t : Finset α), t ∈ Finset.nonMemberSubfamily a 𝒞 → t ⊆ s
⊢ 2 *
      (card (Finset.memberSubfamily a 𝒜) * card (Finset.memberSubfamily a ℬ) +
        card (Finset.nonMemberSubfamily a 𝒜) * card (Finset.nonMemberSubfamily a ℬ)) ≤
    2 * (2 ^ card s * card (𝒜 ∩ ℬ))

tactic: refine' mul_le_mul_left' _ _
state_before: case insert
α : Type u_1
inst✝ : DecidableEq α
𝒜✝ ℬ✝ : Finset (Finset α)
s✝ : Finset α
a✝ : α
h𝒜✝ : IsLowerSet ↑𝒜✝
hℬ✝ : IsLowerSet ↑ℬ✝
h𝒜s✝ : ∀ (t : Finset α), t ∈ 𝒜✝ → t ⊆ s✝
hℬs✝ : ∀ (t : Finset α), t ∈ ℬ✝ → t ⊆ s✝
a : α
s : Finset α
hs : ¬a ∈ s
ih :
  ∀ {𝒜 ℬ : Finset (Finset α)},
    IsLowerSet ↑𝒜 →
      IsLowerSet ↑ℬ →
        (∀ (t : Finset α), t ∈ 𝒜 → t ⊆ s) →
          (∀ (t : Finset α), t ∈ ℬ → t ⊆ s) → card 𝒜 * card ℬ ≤ 2 ^ card s * card (𝒜 ∩ ℬ)
𝒜 ℬ : Finset (Finset α)
h𝒜 : IsLowerSet ↑𝒜
hℬ : IsLowerSet ↑ℬ
h𝒜s : ∀ (t : Finset α), t ∈ 𝒜 → t ⊆ insert a s
hℬs : ∀ (t : Finset α), t ∈ ℬ → t ⊆ insert a s
h₀ :
  ∀ (𝒞 : Finset (Finset α)),
    (∀ (t : Finset α), t ∈ 𝒞 → t ⊆ insert a s) → ∀ (t : Finset α), t ∈ Finset.nonMemberSubfamily a 𝒞 → t ⊆ s
h₁ :
  ∀ (𝒞 : Finset (Finset α)),
    (∀ (t : Finset α), t ∈ 𝒞 → t ⊆ insert a s) → ∀ (t : Finset α), t ∈ Finset.memberSubfamily a 𝒞 → t ⊆ s
⊢ 2 *
      (card (Finset.memberSubfamily a 𝒜) * card (Finset.memberSubfamily a ℬ) +
        card (Finset.nonMemberSubfamily a 𝒜) * card (Finset.nonMemberSubfamily a ℬ)) ≤
    2 * (2 ^ card s * card (𝒜 ∩ ℬ))

tactic: refine' (add_le_add (ih h𝒜.memberSubfamily hℬ.memberSubfamily (h₁ _ h𝒜s) <| h₁ _ hℬs) <|
  ih h𝒜.nonMemberSubfamily hℬ.nonMemberSubfamily (h₀ _ h𝒜s) <| h₀ _ hℬs).trans_eq _
state_before: case insert
α : Type u_1
inst✝ : DecidableEq α
𝒜✝ ℬ✝ : Finset (Finset α)
s✝ : Finset α
a✝ : α
h𝒜✝ : IsLowerSet ↑𝒜✝
hℬ✝ : IsLowerSet ↑ℬ✝
h𝒜s✝ : ∀ (t : Finset α), t ∈ 𝒜✝ → t ⊆ s✝
hℬs✝ : ∀ (t : Finset α), t ∈ ℬ✝ → t ⊆ s✝
a : α
s : Finset α
hs : ¬a ∈ s
ih :
  ∀ {𝒜 ℬ : Finset (Finset α)},
    IsLowerSet ↑𝒜 →
      IsLowerSet ↑ℬ →
        (∀ (t : Finset α), t ∈ 𝒜 → t ⊆ s) →
          (∀ (t : Finset α), t ∈ ℬ → t ⊆ s) → card 𝒜 * card ℬ ≤ 2 ^ card s * card (𝒜 ∩ ℬ)
𝒜 ℬ : Finset (Finset α)
h𝒜 : IsLowerSet ↑𝒜
hℬ : IsLowerSet ↑ℬ
h𝒜s : ∀ (t : Finset α), t ∈ 𝒜 → t ⊆ insert a s
hℬs : ∀ (t : Finset α), t ∈ ℬ → t ⊆ insert a s
h₀ :
  ∀ (𝒞 : Finset (Finset α)),
    (∀ (t : Finset α), t ∈ 𝒞 → t ⊆ insert a s) → ∀ (t : Finset α), t ∈ Finset.nonMemberSubfamily a 𝒞 → t ⊆ s
h₁ :
  ∀ (𝒞 : Finset (Finset α)),
    (∀ (t : Finset α), t ∈ 𝒞 → t ⊆ insert a s) → ∀ (t : Finset α), t ∈ Finset.memberSubfamily a 𝒞 → t ⊆ s
⊢ card (Finset.memberSubfamily a 𝒜) * card (Finset.memberSubfamily a ℬ) +
      card (Finset.nonMemberSubfamily a 𝒜) * card (Finset.nonMemberSubfamily a ℬ) ≤
    2 ^ card s * card (𝒜 ∩ ℬ)

tactic: rw [← mul_add, ← memberSubfamily_inter, ← nonMemberSubfamily_inter,
  card_memberSubfamily_add_card_nonMemberSubfamily]
state_before: case insert
α : Type u_1
inst✝ : DecidableEq α
𝒜✝ ℬ✝ : Finset (Finset α)
s✝ : Finset α
a✝ : α
h𝒜✝ : IsLowerSet ↑𝒜✝
hℬ✝ : IsLowerSet ↑ℬ✝
h𝒜s✝ : ∀ (t : Finset α), t ∈ 𝒜✝ → t ⊆ s✝
hℬs✝ : ∀ (t : Finset α), t ∈ ℬ✝ → t ⊆ s✝
a : α
s : Finset α
hs : ¬a ∈ s
ih :
  ∀ {𝒜 ℬ : Finset (Finset α)},
    IsLowerSet ↑𝒜 →
      IsLowerSet ↑ℬ →
        (∀ (t : Finset α), t ∈ 𝒜 → t ⊆ s) →
          (∀ (t : Finset α), t ∈ ℬ → t ⊆ s) → card 𝒜 * card ℬ ≤ 2 ^ card s * card (𝒜 ∩ ℬ)
𝒜 ℬ : Finset (Finset α)
h𝒜 : IsLowerSet ↑𝒜
hℬ : IsLowerSet ↑ℬ
h𝒜s : ∀ (t : Finset α), t ∈ 𝒜 → t ⊆ insert a s
hℬs : ∀ (t : Finset α), t ∈ ℬ → t ⊆ insert a s
h₀ :
  ∀ (𝒞 : Finset (Finset α)),
    (∀ (t : Finset α), t ∈ 𝒞 → t ⊆ insert a s) → ∀ (t : Finset α), t ∈ Finset.nonMemberSubfamily a 𝒞 → t ⊆ s
h₁ :
  ∀ (𝒞 : Finset (Finset α)),
    (∀ (t : Finset α), t ∈ 𝒞 → t ⊆ insert a s) → ∀ (t : Finset α), t ∈ Finset.memberSubfamily a 𝒞 → t ⊆ s
⊢ 2 ^ card s * card (Finset.memberSubfamily a 𝒜 ∩ Finset.memberSubfamily a ℬ) +
      2 ^ card s * card (Finset.nonMemberSubfamily a 𝒜 ∩ Finset.nonMemberSubfamily a ℬ) =
    2 ^ card s * card (𝒜 ∩ ℬ)

tactic: simp_rw [subset_empty, ← subset_singleton_iff', subset_singleton_iff] at h𝒜s hℬs
state_before: case empty
α : Type u_1
inst✝ : DecidableEq α
𝒜✝ ℬ✝ : Finset (Finset α)
s : Finset α
a : α
h𝒜✝ : IsLowerSet ↑𝒜✝
hℬ✝ : IsLowerSet ↑ℬ✝
h𝒜s✝ : ∀ (t : Finset α), t ∈ 𝒜✝ → t ⊆ s
hℬs✝ : ∀ (t : Finset α), t ∈ ℬ✝ → t ⊆ s
𝒜 ℬ : Finset (Finset α)
h𝒜 : IsLowerSet ↑𝒜
hℬ : IsLowerSet ↑ℬ
h𝒜s : ∀ (t : Finset α), t ∈ 𝒜 → t ⊆ ∅
hℬs : ∀ (t : Finset α), t ∈ ℬ → t ⊆ ∅
⊢ card 𝒜 * card ℬ ≤ 2 ^ card ∅ * card (𝒜 ∩ ℬ)

tactic: obtain rfl | rfl := h𝒜s
state_before: case empty
α : Type u_1
inst✝ : DecidableEq α
𝒜✝ ℬ✝ : Finset (Finset α)
s : Finset α
a : α
h𝒜✝ : IsLowerSet ↑𝒜✝
hℬ✝ : IsLowerSet ↑ℬ✝
h𝒜s✝ : ∀ (t : Finset α), t ∈ 𝒜✝ → t ⊆ s
hℬs✝ : ∀ (t : Finset α), t ∈ ℬ✝ → t ⊆ s
𝒜 ℬ : Finset (Finset α)
h𝒜 : IsLowerSet ↑𝒜
hℬ : IsLowerSet ↑ℬ
h𝒜s : 𝒜 = ∅ ∨ 𝒜 = {∅}
hℬs : ℬ = ∅ ∨ ℬ = {∅}
⊢ card 𝒜 * card ℬ ≤ 2 ^ card ∅ * card (𝒜 ∩ ℬ)

tactic: obtain rfl | rfl := hℬs
state_before: case empty.inr
α : Type u_1
inst✝ : DecidableEq α
𝒜 ℬ✝ : Finset (Finset α)
s : Finset α
a : α
h𝒜✝ : IsLowerSet ↑𝒜
hℬ✝ : IsLowerSet ↑ℬ✝
h𝒜s : ∀ (t : Finset α), t ∈ 𝒜 → t ⊆ s
hℬs✝ : ∀ (t : Finset α), t ∈ ℬ✝ → t ⊆ s
ℬ : Finset (Finset α)
hℬ : IsLowerSet ↑ℬ
hℬs : ℬ = ∅ ∨ ℬ = {∅}
h𝒜 : IsLowerSet ↑{∅}
⊢ card {∅} * card ℬ ≤ 2 ^ card ∅ * card ({∅} ∩ ℬ)

tactic: simp only [card_empty, empty_inter, mul_zero, zero_mul]
state_before: case empty.inl
α : Type u_1
inst✝ : DecidableEq α
𝒜 ℬ✝ : Finset (Finset α)
s : Finset α
a : α
h𝒜✝ : IsLowerSet ↑𝒜
hℬ✝ : IsLowerSet ↑ℬ✝
h𝒜s : ∀ (t : Finset α), t ∈ 𝒜 → t ⊆ s
hℬs✝ : ∀ (t : Finset α), t ∈ ℬ✝ → t ⊆ s
ℬ : Finset (Finset α)
hℬ : IsLowerSet ↑ℬ
hℬs : ℬ = ∅ ∨ ℬ = {∅}
h𝒜 : IsLowerSet ↑∅
⊢ card ∅ * card ℬ ≤ 2 ^ card ∅ * card (∅ ∩ ℬ)

tactic: simp only [card_empty, inter_empty, mul_zero, zero_mul]
state_before: case empty.inr.inl
α : Type u_1
inst✝ : DecidableEq α
𝒜 ℬ : Finset (Finset α)
s : Finset α
a : α
h𝒜✝ : IsLowerSet ↑𝒜
hℬ✝ : IsLowerSet ↑ℬ
h𝒜s : ∀ (t : Finset α), t ∈ 𝒜 → t ⊆ s
hℬs : ∀ (t : Finset α), t ∈ ℬ → t ⊆ s
h𝒜 : IsLowerSet ↑{∅}
hℬ : IsLowerSet ↑∅
⊢ card {∅} * card ∅ ≤ 2 ^ card ∅ * card ({∅} ∩ ∅)

tactic: simp only [card_empty, pow_zero, inter_singleton_of_mem, mem_singleton, card_singleton]
state_before: case empty.inr.inr
α : Type u_1
inst✝ : DecidableEq α
𝒜 ℬ : Finset (Finset α)
s : Finset α
a : α
h𝒜✝ : IsLowerSet ↑𝒜
hℬ✝ : IsLowerSet ↑ℬ
h𝒜s : ∀ (t : Finset α), t ∈ 𝒜 → t ⊆ s
hℬs : ∀ (t : Finset α), t ∈ ℬ → t ⊆ s
h𝒜 hℬ : IsLowerSet ↑{∅}
⊢ card {∅} * card {∅} ≤ 2 ^ card ∅ * card ({∅} ∩ {∅})

tactic: rintro 𝒞 h𝒞 t ht
state_before: α : Type u_1
inst✝ : DecidableEq α
𝒜✝ ℬ✝ : Finset (Finset α)
s✝ : Finset α
a✝ : α
h𝒜✝ : IsLowerSet ↑𝒜✝
hℬ✝ : IsLowerSet ↑ℬ✝
h𝒜s✝ : ∀ (t : Finset α), t ∈ 𝒜✝ → t ⊆ s✝
hℬs✝ : ∀ (t : Finset α), t ∈ ℬ✝ → t ⊆ s✝
a : α
s : Finset α
hs : ¬a ∈ s
ih :
  ∀ {𝒜 ℬ : Finset (Finset α)},
    IsLowerSet ↑𝒜 →
      IsLowerSet ↑ℬ →
        (∀ (t : Finset α), t ∈ 𝒜 → t ⊆ s) →
          (∀ (t : Finset α), t ∈ ℬ → t ⊆ s) → card 𝒜 * card ℬ ≤ 2 ^ card s * card (𝒜 ∩ ℬ)
𝒜 ℬ : Finset (Finset α)
h𝒜 : IsLowerSet ↑𝒜
hℬ : IsLowerSet ↑ℬ
h𝒜s : ∀ (t : Finset α), t ∈ 𝒜 → t ⊆ insert a s
hℬs : ∀ (t : Finset α), t ∈ ℬ → t ⊆ insert a s
⊢ ∀ (𝒞 : Finset (Finset α)),
    (∀ (t : Finset α), t ∈ 𝒞 → t ⊆ insert a s) → ∀ (t : Finset α), t ∈ Finset.nonMemberSubfamily a 𝒞 → t ⊆ s

tactic: rw [mem_nonMemberSubfamily] at ht
state_before: α : Type u_1
inst✝ : DecidableEq α
𝒜✝ ℬ✝ : Finset (Finset α)
s✝ : Finset α
a✝ : α
h𝒜✝ : IsLowerSet ↑𝒜✝
hℬ✝ : IsLowerSet ↑ℬ✝
h𝒜s✝ : ∀ (t : Finset α), t ∈ 𝒜✝ → t ⊆ s✝
hℬs✝ : ∀ (t : Finset α), t ∈ ℬ✝ → t ⊆ s✝
a : α
s : Finset α
hs : ¬a ∈ s
ih :
  ∀ {𝒜 ℬ : Finset (Finset α)},
    IsLowerSet ↑𝒜 →
      IsLowerSet ↑ℬ →
        (∀ (t : Finset α), t ∈ 𝒜 → t ⊆ s) →
          (∀ (t : Finset α), t ∈ ℬ → t ⊆ s) → card 𝒜 * card ℬ ≤ 2 ^ card s * card (𝒜 ∩ ℬ)
𝒜 ℬ : Finset (Finset α)
h𝒜 : IsLowerSet ↑𝒜
hℬ : IsLowerSet ↑ℬ
h𝒜s : ∀ (t : Finset α), t ∈ 𝒜 → t ⊆ insert a s
hℬs : ∀ (t : Finset α), t ∈ ℬ → t ⊆ insert a s
𝒞 : Finset (Finset α)
h𝒞 : ∀ (t : Finset α), t ∈ 𝒞 → t ⊆ insert a s
t : Finset α
ht : t ∈ Finset.nonMemberSubfamily a 𝒞
⊢ t ⊆ s

tactic: exact (subset_insert_iff_of_not_mem ht.2).1 (h𝒞 _ ht.1)
state_before: α : Type u_1
inst✝ : DecidableEq α
𝒜✝ ℬ✝ : Finset (Finset α)
s✝ : Finset α
a✝ : α
h𝒜✝ : IsLowerSet ↑𝒜✝
hℬ✝ : IsLowerSet ↑ℬ✝
h𝒜s✝ : ∀ (t : Finset α), t ∈ 𝒜✝ → t ⊆ s✝
hℬs✝ : ∀ (t : Finset α), t ∈ ℬ✝ → t ⊆ s✝
a : α
s : Finset α
hs : ¬a ∈ s
ih :
  ∀ {𝒜 ℬ : Finset (Finset α)},
    IsLowerSet ↑𝒜 →
      IsLowerSet ↑ℬ →
        (∀ (t : Finset α), t ∈ 𝒜 → t ⊆ s) →
          (∀ (t : Finset α), t ∈ ℬ → t ⊆ s) → card 𝒜 * card ℬ ≤ 2 ^ card s * card (𝒜 ∩ ℬ)
𝒜 ℬ : Finset (Finset α)
h𝒜 : IsLowerSet ↑𝒜
hℬ : IsLowerSet ↑ℬ
h𝒜s : ∀ (t : Finset α), t ∈ 𝒜 → t ⊆ insert a s
hℬs : ∀ (t : Finset α), t ∈ ℬ → t ⊆ insert a s
𝒞 : Finset (Finset α)
h𝒞 : ∀ (t : Finset α), t ∈ 𝒞 → t ⊆ insert a s
t : Finset α
ht : t ∈ 𝒞 ∧ ¬a ∈ t
⊢ t ⊆ s

tactic: rintro 𝒞 h𝒞 t ht
state_before: α : Type u_1
inst✝ : DecidableEq α
𝒜✝ ℬ✝ : Finset (Finset α)
s✝ : Finset α
a✝ : α
h𝒜✝ : IsLowerSet ↑𝒜✝
hℬ✝ : IsLowerSet ↑ℬ✝
h𝒜s✝ : ∀ (t : Finset α), t ∈ 𝒜✝ → t ⊆ s✝
hℬs✝ : ∀ (t : Finset α), t ∈ ℬ✝ → t ⊆ s✝
a : α
s : Finset α
hs : ¬a ∈ s
ih :
  ∀ {𝒜 ℬ : Finset (Finset α)},
    IsLowerSet ↑𝒜 →
      IsLowerSet ↑ℬ →
        (∀ (t : Finset α), t ∈ 𝒜 → t ⊆ s) →
          (∀ (t : Finset α), t ∈ ℬ → t ⊆ s) → card 𝒜 * card ℬ ≤ 2 ^ card s * card (𝒜 ∩ ℬ)
𝒜 ℬ : Finset (Finset α)
h𝒜 : IsLowerSet ↑𝒜
hℬ : IsLowerSet ↑ℬ
h𝒜s : ∀ (t : Finset α), t ∈ 𝒜 → t ⊆ insert a s
hℬs : ∀ (t : Finset α), t ∈ ℬ → t ⊆ insert a s
h₀ :
  ∀ (𝒞 : Finset (Finset α)),
    (∀ (t : Finset α), t ∈ 𝒞 → t ⊆ insert a s) → ∀ (t : Finset α), t ∈ Finset.nonMemberSubfamily a 𝒞 → t ⊆ s
⊢ ∀ (𝒞 : Finset (Finset α)),
    (∀ (t : Finset α), t ∈ 𝒞 → t ⊆ insert a s) → ∀ (t : Finset α), t ∈ Finset.memberSubfamily a 𝒞 → t ⊆ s

tactic: rw [mem_memberSubfamily] at ht
state_before: α : Type u_1
inst✝ : DecidableEq α
𝒜✝ ℬ✝ : Finset (Finset α)
s✝ : Finset α
a✝ : α
h𝒜✝ : IsLowerSet ↑𝒜✝
hℬ✝ : IsLowerSet ↑ℬ✝
h𝒜s✝ : ∀ (t : Finset α), t ∈ 𝒜✝ → t ⊆ s✝
hℬs✝ : ∀ (t : Finset α), t ∈ ℬ✝ → t ⊆ s✝
a : α
s : Finset α
hs : ¬a ∈ s
ih :
  ∀ {𝒜 ℬ : Finset (Finset α)},
    IsLowerSet ↑𝒜 →
      IsLowerSet ↑ℬ →
        (∀ (t : Finset α), t ∈ 𝒜 → t ⊆ s) →
          (∀ (t : Finset α), t ∈ ℬ → t ⊆ s) → card 𝒜 * card ℬ ≤ 2 ^ card s * card (𝒜 ∩ ℬ)
𝒜 ℬ : Finset (Finset α)
h𝒜 : IsLowerSet ↑𝒜
hℬ : IsLowerSet ↑ℬ
h𝒜s : ∀ (t : Finset α), t ∈ 𝒜 → t ⊆ insert a s
hℬs : ∀ (t : Finset α), t ∈ ℬ → t ⊆ insert a s
h₀ :
  ∀ (𝒞 : Finset (Finset α)),
    (∀ (t : Finset α), t ∈ 𝒞 → t ⊆ insert a s) → ∀ (t : Finset α), t ∈ Finset.nonMemberSubfamily a 𝒞 → t ⊆ s
𝒞 : Finset (Finset α)
h𝒞 : ∀ (t : Finset α), t ∈ 𝒞 → t ⊆ insert a s
t : Finset α
ht : t ∈ Finset.memberSubfamily a 𝒞
⊢ t ⊆ s

tactic: exact (subset_insert_iff_of_not_mem ht.2).1 ((subset_insert _ _).trans <| h𝒞 _ ht.1)
state_before: α : Type u_1
inst✝ : DecidableEq α
𝒜✝ ℬ✝ : Finset (Finset α)
s✝ : Finset α
a✝ : α
h𝒜✝ : IsLowerSet ↑𝒜✝
hℬ✝ : IsLowerSet ↑ℬ✝
h𝒜s✝ : ∀ (t : Finset α), t ∈ 𝒜✝ → t ⊆ s✝
hℬs✝ : ∀ (t : Finset α), t ∈ ℬ✝ → t ⊆ s✝
a : α
s : Finset α
hs : ¬a ∈ s
ih :
  ∀ {𝒜 ℬ : Finset (Finset α)},
    IsLowerSet ↑𝒜 →
      IsLowerSet ↑ℬ →
        (∀ (t : Finset α), t ∈ 𝒜 → t ⊆ s) →
          (∀ (t : Finset α), t ∈ ℬ → t ⊆ s) → card 𝒜 * card ℬ ≤ 2 ^ card s * card (𝒜 ∩ ℬ)
𝒜 ℬ : Finset (Finset α)
h𝒜 : IsLowerSet ↑𝒜
hℬ : IsLowerSet ↑ℬ
h𝒜s : ∀ (t : Finset α), t ∈ 𝒜 → t ⊆ insert a s
hℬs : ∀ (t : Finset α), t ∈ ℬ → t ⊆ insert a s
h₀ :
  ∀ (𝒞 : Finset (Finset α)),
    (∀ (t : Finset α), t ∈ 𝒞 → t ⊆ insert a s) → ∀ (t : Finset α), t ∈ Finset.nonMemberSubfamily a 𝒞 → t ⊆ s
𝒞 : Finset (Finset α)
h𝒞 : ∀ (t : Finset α), t ∈ 𝒞 → t ⊆ insert a s
t : Finset α
ht : insert a t ∈ 𝒞 ∧ ¬a ∈ t
⊢ t ⊆ s