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

Proof steps:
state_before: α : Type u_1
inst✝ : DecidableEq α
𝒜 ℬ : Finset (Finset α)
s : Finset α
a : α
h𝒜 : IsLowerSet ↑𝒜
hℬ : IsLowerSet ↑ℬ
h𝒜s : ∀ t ∈ 𝒜, t ⊆ s
hℬs : ∀ t ∈ ℬ, t ⊆ s
⊢ 𝒜.card * ℬ.card ≤ 2 ^ s.card * (𝒜 ∩ ℬ).card
state_after: case empty
α : Type u_1
inst✝ : DecidableEq α
a : α
𝒜 ℬ : Finset (Finset α)
h𝒜 : IsLowerSet ↑𝒜
hℬ : IsLowerSet ↑ℬ
h𝒜s : ∀ t ∈ 𝒜, t ⊆ ∅
hℬs : ∀ t ∈ ℬ, t ⊆ ∅
⊢ 𝒜.card * ℬ.card ≤ 2 ^ ∅.card * (𝒜 ∩ ℬ).card

case insert
α : Type u_1
inst✝ : DecidableEq α
a✝ a : α
s : Finset α
hs : a ∉ s
ih :
  ∀ {𝒜 ℬ : Finset (Finset α)},
    IsLowerSet ↑𝒜 → IsLowerSet ↑ℬ → (∀ t ∈ 𝒜, t ⊆ s) → (∀ t ∈ ℬ, t ⊆ s) → 𝒜.card * ℬ.card ≤ 2 ^ s.card * (𝒜 ∩ ℬ).card
𝒜 ℬ : Finset (Finset α)
h𝒜 : IsLowerSet ↑𝒜
hℬ : IsLowerSet ↑ℬ
h𝒜s : ∀ t ∈ 𝒜, t ⊆ insert a s
hℬs : ∀ t ∈ ℬ, t ⊆ insert a s
⊢ 𝒜.card * ℬ.card ≤ 2 ^ (insert a s).card * (𝒜 ∩ ℬ).card
tactic: induction' s using Finset.induction with a s hs ih generalizing 𝒜 ℬ
state_before: case insert
α : Type u_1
inst✝ : DecidableEq α
a✝ a : α
s : Finset α
hs : a ∉ s
ih :
  ∀ {𝒜 ℬ : Finset (Finset α)},
    IsLowerSet ↑𝒜 → IsLowerSet ↑ℬ → (∀ t ∈ 𝒜, t ⊆ s) → (∀ t ∈ ℬ, t ⊆ s) → 𝒜.card * ℬ.card ≤ 2 ^ s.card * (𝒜 ∩ ℬ).card
𝒜 ℬ : Finset (Finset α)
h𝒜 : IsLowerSet ↑𝒜
hℬ : IsLowerSet ↑ℬ
h𝒜s : ∀ t ∈ 𝒜, t ⊆ insert a s
hℬs : ∀ t ∈ ℬ, t ⊆ insert a s
⊢ 𝒜.card * ℬ.card ≤ 2 ^ (insert a s).card * (𝒜 ∩ ℬ).card
state_after: case insert
α : Type u_1
inst✝ : DecidableEq α
a✝ a : α
s : Finset α
hs : a ∉ s
ih :
  ∀ {𝒜 ℬ : Finset (Finset α)},
    IsLowerSet ↑𝒜 → IsLowerSet ↑ℬ → (∀ t ∈ 𝒜, t ⊆ s) → (∀ t ∈ ℬ, t ⊆ s) → 𝒜.card * ℬ.card ≤ 2 ^ s.card * (𝒜 ∩ ℬ).card
𝒜 ℬ : Finset (Finset α)
h𝒜 : IsLowerSet ↑𝒜
hℬ : IsLowerSet ↑ℬ
h𝒜s : ∀ t ∈ 𝒜, t ⊆ insert a s
hℬs : ∀ t ∈ ℬ, t ⊆ insert a s
⊢ (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 ℬ).card) ≤
    2 ^ (s.card + 1) * (𝒜 ∩ ℬ).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 α
a✝ a : α
s : Finset α
hs : a ∉ s
ih :
  ∀ {𝒜 ℬ : Finset (Finset α)},
    IsLowerSet ↑𝒜 → IsLowerSet ↑ℬ → (∀ t ∈ 𝒜, t ⊆ s) → (∀ t ∈ ℬ, t ⊆ s) → 𝒜.card * ℬ.card ≤ 2 ^ s.card * (𝒜 ∩ ℬ).card
𝒜 ℬ : Finset (Finset α)
h𝒜 : IsLowerSet ↑𝒜
hℬ : IsLowerSet ↑ℬ
h𝒜s : ∀ t ∈ 𝒜, t ⊆ insert a s
hℬs : ∀ t ∈ ℬ, t ⊆ insert a s
⊢ (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 ℬ).card) ≤
    2 ^ (s.card + 1) * (𝒜 ∩ ℬ).card
state_after: case insert
α : Type u_1
inst✝ : DecidableEq α
a✝ a : α
s : Finset α
hs : a ∉ s
ih :
  ∀ {𝒜 ℬ : Finset (Finset α)},
    IsLowerSet ↑𝒜 → IsLowerSet ↑ℬ → (∀ t ∈ 𝒜, t ⊆ s) → (∀ t ∈ ℬ, t ⊆ s) → 𝒜.card * ℬ.card ≤ 2 ^ s.card * (𝒜 ∩ ℬ).card
𝒜 ℬ : Finset (Finset α)
h𝒜 : IsLowerSet ↑𝒜
hℬ : IsLowerSet ↑ℬ
h𝒜s : ∀ t ∈ 𝒜, t ⊆ insert a s
hℬs : ∀ t ∈ ℬ, t ⊆ insert a s
⊢ (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 ℬ).card) ≤
    2 ^ (s.card + 1) * (𝒜 ∩ ℬ).card
tactic: refine
    (add_le_add_right
          (mul_add_mul_le_mul_add_mul
              (card_le_card h𝒜.memberSubfamily_subset_nonMemberSubfamily) <|
            card_le_card hℬ.memberSubfamily_subset_nonMemberSubfamily)
          _).trans
      ?_
state_before: case insert
α : Type u_1
inst✝ : DecidableEq α
a✝ a : α
s : Finset α
hs : a ∉ s
ih :
  ∀ {𝒜 ℬ : Finset (Finset α)},
    IsLowerSet ↑𝒜 → IsLowerSet ↑ℬ → (∀ t ∈ 𝒜, t ⊆ s) → (∀ t ∈ ℬ, t ⊆ s) → 𝒜.card * ℬ.card ≤ 2 ^ s.card * (𝒜 ∩ ℬ).card
𝒜 ℬ : Finset (Finset α)
h𝒜 : IsLowerSet ↑𝒜
hℬ : IsLowerSet ↑ℬ
h𝒜s : ∀ t ∈ 𝒜, t ⊆ insert a s
hℬs : ∀ t ∈ ℬ, t ⊆ insert a s
⊢ (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 ℬ).card) ≤
    2 ^ (s.card + 1) * (𝒜 ∩ ℬ).card
state_after: case insert
α : Type u_1
inst✝ : DecidableEq α
a✝ a : α
s : Finset α
hs : a ∉ s
ih :
  ∀ {𝒜 ℬ : Finset (Finset α)},
    IsLowerSet ↑𝒜 → IsLowerSet ↑ℬ → (∀ t ∈ 𝒜, t ⊆ s) → (∀ t ∈ ℬ, t ⊆ s) → 𝒜.card * ℬ.card ≤ 2 ^ s.card * (𝒜 ∩ ℬ).card
𝒜 ℬ : Finset (Finset α)
h𝒜 : IsLowerSet ↑𝒜
hℬ : IsLowerSet ↑ℬ
h𝒜s : ∀ t ∈ 𝒜, t ⊆ insert a s
hℬs : ∀ t ∈ ℬ, t ⊆ insert a s
⊢ 2 *
      ((Finset.memberSubfamily a 𝒜).card * (Finset.memberSubfamily a ℬ).card +
        (Finset.nonMemberSubfamily a 𝒜).card * (Finset.nonMemberSubfamily a ℬ).card) ≤
    2 * (2 ^ s.card * (𝒜 ∩ ℬ).card)
tactic: rw [← two_mul, pow_succ', mul_assoc]
state_before: case insert
α : Type u_1
inst✝ : DecidableEq α
a✝ a : α
s : Finset α
hs : a ∉ s
ih :
  ∀ {𝒜 ℬ : Finset (Finset α)},
    IsLowerSet ↑𝒜 → IsLowerSet ↑ℬ → (∀ t ∈ 𝒜, t ⊆ s) → (∀ t ∈ ℬ, t ⊆ s) → 𝒜.card * ℬ.card ≤ 2 ^ s.card * (𝒜 ∩ ℬ).card
𝒜 ℬ : Finset (Finset α)
h𝒜 : IsLowerSet ↑𝒜
hℬ : IsLowerSet ↑ℬ
h𝒜s : ∀ t ∈ 𝒜, t ⊆ insert a s
hℬs : ∀ t ∈ ℬ, t ⊆ insert a s
⊢ 2 *
      ((Finset.memberSubfamily a 𝒜).card * (Finset.memberSubfamily a ℬ).card +
        (Finset.nonMemberSubfamily a 𝒜).card * (Finset.nonMemberSubfamily a ℬ).card) ≤
    2 * (2 ^ s.card * (𝒜 ∩ ℬ).card)
state_after: case insert
α : Type u_1
inst✝ : DecidableEq α
a✝ a : α
s : Finset α
hs : a ∉ s
ih :
  ∀ {𝒜 ℬ : Finset (Finset α)},
    IsLowerSet ↑𝒜 → IsLowerSet ↑ℬ → (∀ t ∈ 𝒜, t ⊆ s) → (∀ t ∈ ℬ, t ⊆ s) → 𝒜.card * ℬ.card ≤ 2 ^ s.card * (𝒜 ∩ ℬ).card
𝒜 ℬ : Finset (Finset α)
h𝒜 : IsLowerSet ↑𝒜
hℬ : IsLowerSet ↑ℬ
h𝒜s : ∀ t ∈ 𝒜, t ⊆ insert a s
hℬs : ∀ t ∈ ℬ, t ⊆ insert a s
h₀ : ∀ (𝒞 : Finset (Finset α)), (∀ t ∈ 𝒞, t ⊆ insert a s) → ∀ t ∈ Finset.nonMemberSubfamily a 𝒞, t ⊆ s
⊢ 2 *
      ((Finset.memberSubfamily a 𝒜).card * (Finset.memberSubfamily a ℬ).card +
        (Finset.nonMemberSubfamily a 𝒜).card * (Finset.nonMemberSubfamily a ℬ).card) ≤
    2 * (2 ^ s.card * (𝒜 ∩ ℬ).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 α
a✝ a : α
s : Finset α
hs : a ∉ s
ih :
  ∀ {𝒜 ℬ : Finset (Finset α)},
    IsLowerSet ↑𝒜 → IsLowerSet ↑ℬ → (∀ t ∈ 𝒜, t ⊆ s) → (∀ t ∈ ℬ, t ⊆ s) → 𝒜.card * ℬ.card ≤ 2 ^ s.card * (𝒜 ∩ ℬ).card
𝒜 ℬ : Finset (Finset α)
h𝒜 : IsLowerSet ↑𝒜
hℬ : IsLowerSet ↑ℬ
h𝒜s : ∀ t ∈ 𝒜, t ⊆ insert a s
hℬs : ∀ t ∈ ℬ, t ⊆ insert a s
h₀ : ∀ (𝒞 : Finset (Finset α)), (∀ t ∈ 𝒞, t ⊆ insert a s) → ∀ t ∈ Finset.nonMemberSubfamily a 𝒞, t ⊆ s
⊢ 2 *
      ((Finset.memberSubfamily a 𝒜).card * (Finset.memberSubfamily a ℬ).card +
        (Finset.nonMemberSubfamily a 𝒜).card * (Finset.nonMemberSubfamily a ℬ).card) ≤
    2 * (2 ^ s.card * (𝒜 ∩ ℬ).card)
state_after: case insert
α : Type u_1
inst✝ : DecidableEq α
a✝ a : α
s : Finset α
hs : a ∉ s
ih :
  ∀ {𝒜 ℬ : Finset (Finset α)},
    IsLowerSet ↑𝒜 → IsLowerSet ↑ℬ → (∀ t ∈ 𝒜, t ⊆ s) → (∀ t ∈ ℬ, t ⊆ s) → 𝒜.card * ℬ.card ≤ 2 ^ s.card * (𝒜 ∩ ℬ).card
𝒜 ℬ : Finset (Finset α)
h𝒜 : IsLowerSet ↑𝒜
hℬ : IsLowerSet ↑ℬ
h𝒜s : ∀ t ∈ 𝒜, t ⊆ insert a s
hℬs : ∀ t ∈ ℬ, t ⊆ insert a s
h₀ : ∀ (𝒞 : Finset (Finset α)), (∀ t ∈ 𝒞, t ⊆ insert a s) → ∀ t ∈ Finset.nonMemberSubfamily a 𝒞, t ⊆ s
h₁ : ∀ (𝒞 : Finset (Finset α)), (∀ t ∈ 𝒞, t ⊆ insert a s) → ∀ t ∈ Finset.memberSubfamily a 𝒞, t ⊆ s
⊢ 2 *
      ((Finset.memberSubfamily a 𝒜).card * (Finset.memberSubfamily a ℬ).card +
        (Finset.nonMemberSubfamily a 𝒜).card * (Finset.nonMemberSubfamily a ℬ).card) ≤
    2 * (2 ^ s.card * (𝒜 ∩ ℬ).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 α
a✝ a : α
s : Finset α
hs : a ∉ s
ih :
  ∀ {𝒜 ℬ : Finset (Finset α)},
    IsLowerSet ↑𝒜 → IsLowerSet ↑ℬ → (∀ t ∈ 𝒜, t ⊆ s) → (∀ t ∈ ℬ, t ⊆ s) → 𝒜.card * ℬ.card ≤ 2 ^ s.card * (𝒜 ∩ ℬ).card
𝒜 ℬ : Finset (Finset α)
h𝒜 : IsLowerSet ↑𝒜
hℬ : IsLowerSet ↑ℬ
h𝒜s : ∀ t ∈ 𝒜, t ⊆ insert a s
hℬs : ∀ t ∈ ℬ, t ⊆ insert a s
h₀ : ∀ (𝒞 : Finset (Finset α)), (∀ t ∈ 𝒞, t ⊆ insert a s) → ∀ t ∈ Finset.nonMemberSubfamily a 𝒞, t ⊆ s
h₁ : ∀ (𝒞 : Finset (Finset α)), (∀ t ∈ 𝒞, t ⊆ insert a s) → ∀ t ∈ Finset.memberSubfamily a 𝒞, t ⊆ s
⊢ 2 *
      ((Finset.memberSubfamily a 𝒜).card * (Finset.memberSubfamily a ℬ).card +
        (Finset.nonMemberSubfamily a 𝒜).card * (Finset.nonMemberSubfamily a ℬ).card) ≤
    2 * (2 ^ s.card * (𝒜 ∩ ℬ).card)
state_after: case insert
α : Type u_1
inst✝ : DecidableEq α
a✝ a : α
s : Finset α
hs : a ∉ s
ih :
  ∀ {𝒜 ℬ : Finset (Finset α)},
    IsLowerSet ↑𝒜 → IsLowerSet ↑ℬ → (∀ t ∈ 𝒜, t ⊆ s) → (∀ t ∈ ℬ, t ⊆ s) → 𝒜.card * ℬ.card ≤ 2 ^ s.card * (𝒜 ∩ ℬ).card
𝒜 ℬ : Finset (Finset α)
h𝒜 : IsLowerSet ↑𝒜
hℬ : IsLowerSet ↑ℬ
h𝒜s : ∀ t ∈ 𝒜, t ⊆ insert a s
hℬs : ∀ t ∈ ℬ, t ⊆ insert a s
h₀ : ∀ (𝒞 : Finset (Finset α)), (∀ t ∈ 𝒞, t ⊆ insert a s) → ∀ t ∈ Finset.nonMemberSubfamily a 𝒞, t ⊆ s
h₁ : ∀ (𝒞 : Finset (Finset α)), (∀ t ∈ 𝒞, t ⊆ insert a s) → ∀ t ∈ Finset.memberSubfamily a 𝒞, t ⊆ s
⊢ (Finset.memberSubfamily a 𝒜).card * (Finset.memberSubfamily a ℬ).card +
      (Finset.nonMemberSubfamily a 𝒜).card * (Finset.nonMemberSubfamily a ℬ).card ≤
    2 ^ s.card * (𝒜 ∩ ℬ).card
tactic: refine mul_le_mul_left' ?_ _
state_before: case insert
α : Type u_1
inst✝ : DecidableEq α
a✝ a : α
s : Finset α
hs : a ∉ s
ih :
  ∀ {𝒜 ℬ : Finset (Finset α)},
    IsLowerSet ↑𝒜 → IsLowerSet ↑ℬ → (∀ t ∈ 𝒜, t ⊆ s) → (∀ t ∈ ℬ, t ⊆ s) → 𝒜.card * ℬ.card ≤ 2 ^ s.card * (𝒜 ∩ ℬ).card
𝒜 ℬ : Finset (Finset α)
h𝒜 : IsLowerSet ↑𝒜
hℬ : IsLowerSet ↑ℬ
h𝒜s : ∀ t ∈ 𝒜, t ⊆ insert a s
hℬs : ∀ t ∈ ℬ, t ⊆ insert a s
h₀ : ∀ (𝒞 : Finset (Finset α)), (∀ t ∈ 𝒞, t ⊆ insert a s) → ∀ t ∈ Finset.nonMemberSubfamily a 𝒞, t ⊆ s
h₁ : ∀ (𝒞 : Finset (Finset α)), (∀ t ∈ 𝒞, t ⊆ insert a s) → ∀ t ∈ Finset.memberSubfamily a 𝒞, t ⊆ s
⊢ (Finset.memberSubfamily a 𝒜).card * (Finset.memberSubfamily a ℬ).card +
      (Finset.nonMemberSubfamily a 𝒜).card * (Finset.nonMemberSubfamily a ℬ).card ≤
    2 ^ s.card * (𝒜 ∩ ℬ).card
state_after: case insert
α : Type u_1
inst✝ : DecidableEq α
a✝ a : α
s : Finset α
hs : a ∉ s
ih :
  ∀ {𝒜 ℬ : Finset (Finset α)},
    IsLowerSet ↑𝒜 → IsLowerSet ↑ℬ → (∀ t ∈ 𝒜, t ⊆ s) → (∀ t ∈ ℬ, t ⊆ s) → 𝒜.card * ℬ.card ≤ 2 ^ s.card * (𝒜 ∩ ℬ).card
𝒜 ℬ : Finset (Finset α)
h𝒜 : IsLowerSet ↑𝒜
hℬ : IsLowerSet ↑ℬ
h𝒜s : ∀ t ∈ 𝒜, t ⊆ insert a s
hℬs : ∀ t ∈ ℬ, t ⊆ insert a s
h₀ : ∀ (𝒞 : Finset (Finset α)), (∀ t ∈ 𝒞, t ⊆ insert a s) → ∀ t ∈ Finset.nonMemberSubfamily a 𝒞, t ⊆ s
h₁ : ∀ (𝒞 : Finset (Finset α)), (∀ t ∈ 𝒞, t ⊆ insert a s) → ∀ t ∈ Finset.memberSubfamily a 𝒞, t ⊆ s
⊢ 2 ^ s.card * (Finset.memberSubfamily a 𝒜 ∩ Finset.memberSubfamily a ℬ).card +
      2 ^ s.card * (Finset.nonMemberSubfamily a 𝒜 ∩ Finset.nonMemberSubfamily a ℬ).card =
    2 ^ s.card * (𝒜 ∩ ℬ).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 α
a✝ a : α
s : Finset α
hs : a ∉ s
ih :
  ∀ {𝒜 ℬ : Finset (Finset α)},
    IsLowerSet ↑𝒜 → IsLowerSet ↑ℬ → (∀ t ∈ 𝒜, t ⊆ s) → (∀ t ∈ ℬ, t ⊆ s) → 𝒜.card * ℬ.card ≤ 2 ^ s.card * (𝒜 ∩ ℬ).card
𝒜 ℬ : Finset (Finset α)
h𝒜 : IsLowerSet ↑𝒜
hℬ : IsLowerSet ↑ℬ
h𝒜s : ∀ t ∈ 𝒜, t ⊆ insert a s
hℬs : ∀ t ∈ ℬ, t ⊆ insert a s
h₀ : ∀ (𝒞 : Finset (Finset α)), (∀ t ∈ 𝒞, t ⊆ insert a s) → ∀ t ∈ Finset.nonMemberSubfamily a 𝒞, t ⊆ s
h₁ : ∀ (𝒞 : Finset (Finset α)), (∀ t ∈ 𝒞, t ⊆ insert a s) → ∀ t ∈ Finset.memberSubfamily a 𝒞, t ⊆ s
⊢ 2 ^ s.card * (Finset.memberSubfamily a 𝒜 ∩ Finset.memberSubfamily a ℬ).card +
      2 ^ s.card * (Finset.nonMemberSubfamily a 𝒜 ∩ Finset.nonMemberSubfamily a ℬ).card =
    2 ^ s.card * (𝒜 ∩ ℬ).card
state_after: no goals
tactic: rw [← mul_add, ← memberSubfamily_inter, ← nonMemberSubfamily_inter,
    card_memberSubfamily_add_card_nonMemberSubfamily]