ruc-ai4math/mathlib_handler_benchmark_410 huggingface dataset:
-- _private.Mathlib.Combinatorics.Colex.0.Finset.Colex.antisymm_aux
private lemma antisymm_aux (hst : toColex s ≤ toColex t) (hts : toColex t ≤ toColex s) : s ⊆ t 
Arguments: {α : Type u_1} [PartialOrder α] {s t : Finset α} (hst : { ofColex := s } ≤ { ofColex := t }) (hts : { ofColex := t } ≤ { ofColex := s })
Goal: s ⊆ t
-- Finset.Colex.le_def
lemma le_def {s t : Colex α} :
    s ≤ t ↔ ∀ ⦃a⦄, a ∈ ofColex s → a ∉ ofColex t → ∃ b, b ∈ ofColex t ∧ b ∉ ofColex s ∧ a ≤ b 
Arguments: {α : Type u_1} [PartialOrder α] {s t : Finset.Colex α}
Goal: s ≤ t ↔ ∀ ⦃a : α⦄, a ∈ s.ofColex → a ∉ t.ofColex → ∃ b ∈ t.ofColex, b ∉ s.ofColex ∧ a ≤ b
-- Finset.Colex.toColex_le_toColex
lemma toColex_le_toColex :
    toColex s ≤ toColex t ↔ ∀ ⦃a⦄, a ∈ s → a ∉ t → ∃ b, b ∈ t ∧ b ∉ s ∧ a ≤ b 
Arguments: {α : Type u_1} [PartialOrder α] {s t : Finset α}
Goal: { ofColex := s } ≤ { ofColex := t } ↔ ∀ ⦃a : α⦄, a ∈ s → a ∉ t → ∃ b ∈ t, b ∉ s ∧ a ≤ b
-- Finset.Colex.toColex_lt_toColex
lemma toColex_lt_toColex :
    toColex s < toColex t ↔ s ≠ t ∧ ∀ ⦃a⦄, a ∈ s → a ∉ t → ∃ b, b ∈ t ∧ b ∉ s ∧ a ≤ b 
Arguments: {α : Type u_1} [PartialOrder α] {s t : Finset α}
Goal: { ofColex := s } < { ofColex := t } ↔ s ≠ t ∧ ∀ ⦃a : α⦄, a ∈ s → a ∉ t → ∃ b ∈ t, b ∉ s ∧ a ≤ b
-- Finset.Colex.toColex_mono
lemma toColex_mono : Monotone (toColex : Finset α → Colex α) 
Arguments: {α : Type u_1} [PartialOrder α]
Goal: Monotone Finset.Colex.toColex
-- Finset.Colex.toColex_strictMono
lemma toColex_strictMono : StrictMono (toColex : Finset α → Colex α) 
Arguments: {α : Type u_1} [PartialOrder α]
Goal: StrictMono Finset.Colex.toColex
-- Finset.Colex.toColex_le_toColex_of_subset
lemma toColex_le_toColex_of_subset (h : s ⊆ t) : toColex s ≤ toColex t 
Arguments: {α : Type u_1} [PartialOrder α] {s t : Finset α} (h : s ⊆ t)
Goal: { ofColex := s } ≤ { ofColex := t }
-- Finset.Colex.toColex_lt_toColex_of_ssubset
lemma toColex_lt_toColex_of_ssubset (h : s ⊂ t) : toColex s < toColex t 
Arguments: {α : Type u_1} [PartialOrder α] {s t : Finset α} (h : s ⊂ t)
Goal: { ofColex := s } < { ofColex := t }
-- Finset.Colex.toColex_empty
@[simp] lemma toColex_empty : toColex (∅ : Finset α) = ⊥ 
Arguments: {α : Type u_1} [PartialOrder α]
Goal: { ofColex := ∅ } = ⊥
-- Finset.Colex.ofColex_bot
@[simp] lemma ofColex_bot : ofColex (⊥ : Colex α) = ∅ 
Arguments: {α : Type u_1} [PartialOrder α]
Goal: ⊥.ofColex = ∅
-- Finset.Colex.forall_le_mono
lemma forall_le_mono (hst : toColex s ≤ toColex t) (ht : ∀ b ∈ t, b ≤ a) : ∀ b ∈ s, b ≤ a 
Arguments: {α : Type u_1} [PartialOrder α] {s t : Finset α} {a : α} (hst : { ofColex := s } ≤ { ofColex := t }) (ht : ∀ b ∈ t, b ≤ a) (b : α)
Goal: b ∈ s → b ≤ a
-- Finset.Colex.forall_lt_mono
lemma forall_lt_mono (hst : toColex s ≤ toColex t) (ht : ∀ b ∈ t, b < a) : ∀ b ∈ s, b < a 
Arguments: {α : Type u_1} [PartialOrder α] {s t : Finset α} {a : α} (hst : { ofColex := s } ≤ { ofColex := t }) (ht : ∀ b ∈ t, b < a) (b : α)
Goal: b ∈ s → b < a
-- Finset.Colex.toColex_le_singleton
lemma toColex_le_singleton : toColex s ≤ toColex {a} ↔ ∀ b ∈ s, b ≤ a ∧ (a ∈ s → b = a) 
Arguments: {α : Type u_1} [PartialOrder α] {s : Finset α} {a : α}
Goal: { ofColex := s } ≤ { ofColex := {a} } ↔ ∀ b ∈ s, b ≤ a ∧ (a ∈ s → b = a)
-- Finset.Colex.toColex_lt_singleton
lemma toColex_lt_singleton : toColex s < toColex {a} ↔ ∀ b ∈ s, b < a 
Arguments: {α : Type u_1} [PartialOrder α] {s : Finset α} {a : α}
Goal: { ofColex := s } < { ofColex := {a} } ↔ ∀ b ∈ s, b < a
-- Finset.Colex.singleton_le_toColex
lemma singleton_le_toColex : (toColex {a} : Colex α) ≤ toColex s ↔ ∃ x ∈ s, a ≤ x 
Arguments: {α : Type u_1} [PartialOrder α] {s : Finset α} {a : α}
Goal: { ofColex := {a} } ≤ { ofColex := s } ↔ ∃ x ∈ s, a ≤ x
-- Finset.Colex.singleton_le_singleton
lemma singleton_le_singleton : (toColex {a} : Colex α) ≤ toColex {b} ↔ a ≤ b 
Arguments: {α : Type u_1} [PartialOrder α] {a b : α}
Goal: { ofColex := {a} } ≤ { ofColex := {b} } ↔ a ≤ b
-- Finset.Colex.singleton_lt_singleton
lemma singleton_lt_singleton : (toColex {a} : Colex α) < toColex {b} ↔ a < b 
Arguments: {α : Type u_1} [PartialOrder α] {a b : α}
Goal: { ofColex := {a} } < { ofColex := {b} } ↔ a < b
-- Finset.Colex.le_iff_sdiff_subset_lowerClosure
lemma le_iff_sdiff_subset_lowerClosure {s t : Colex α} :
    s ≤ t ↔ (ofColex s : Set α) \ ofColex t ⊆ lowerClosure (ofColex t \ ofColex s : Set α) 
Arguments: {α : Type u_1} [PartialOrder α] {s t : Finset.Colex α}
Goal: s ≤ t ↔ ↑s.ofColex \ ↑t.ofColex ⊆ ↑(lowerClosure (↑t.ofColex \ ↑s.ofColex))
-- Finset.Colex.toColex_sdiff_le_toColex_sdiff
lemma toColex_sdiff_le_toColex_sdiff (hus : u ⊆ s) (hut : u ⊆ t) :
    toColex (s \ u) ≤ toColex (t \ u) ↔ toColex s ≤ toColex t 
Arguments: {α : Type u_1} [PartialOrder α] {s t u : Finset α} [DecidableEq α] (hus : u ⊆ s) (hut : u ⊆ t)
Goal: { ofColex := s \ u } ≤ { ofColex := t \ u } ↔ { ofColex := s } ≤ { ofColex := t }
-- Finset.Colex.toColex_sdiff_lt_toColex_sdiff
lemma toColex_sdiff_lt_toColex_sdiff (hus : u ⊆ s) (hut : u ⊆ t) :
    toColex (s \ u) < toColex (t \ u) ↔ toColex s < toColex t 
Arguments: {α : Type u_1} [PartialOrder α] {s t u : Finset α} [DecidableEq α] (hus : u ⊆ s) (hut : u ⊆ t)
Goal: { ofColex := s \ u } < { ofColex := t \ u } ↔ { ofColex := s } < { ofColex := t }
-- Finset.Colex.toColex_sdiff_le_toColex_sdiff'
@[simp] lemma toColex_sdiff_le_toColex_sdiff' :
    toColex (s \ t) ≤ toColex (t \ s) ↔ toColex s ≤ toColex t 
Arguments: {α : Type u_1} [PartialOrder α] {s t : Finset α} [DecidableEq α]
Goal: { ofColex := s \ t } ≤ { ofColex := t \ s } ↔ { ofColex := s } ≤ { ofColex := t }
-- Finset.Colex.toColex_sdiff_lt_toColex_sdiff'
@[simp] lemma toColex_sdiff_lt_toColex_sdiff' :
 toColex (s \ t) < toColex (t \ s) ↔ toColex s < toColex t 
Arguments: {α : Type u_1} [PartialOrder α] {s t : Finset α} [DecidableEq α]
Goal: { ofColex := s \ t } < { ofColex := t \ s } ↔ { ofColex := s } < { ofColex := t }
-- Finset.Colex.cons_le_cons
@[simp] lemma cons_le_cons (ha hb) : toColex (s.cons a ha) ≤ toColex (s.cons b hb) ↔ a ≤ b 
Arguments: {α : Type u_1} [PartialOrder α] {s : Finset α} {a b : α} (ha : a ∉ s) (hb : b ∉ s)
Goal: { ofColex := Finset.cons a s ha } ≤ { ofColex := Finset.cons b s hb } ↔ a ≤ b
-- Finset.Colex.cons_lt_cons
@[simp] lemma cons_lt_cons (ha hb) : toColex (s.cons a ha) < toColex (s.cons b hb) ↔ a < b 
Arguments: {α : Type u_1} [PartialOrder α] {s : Finset α} {a b : α} (ha : a ∉ s) (hb : b ∉ s)
Goal: { ofColex := Finset.cons a s ha } < { ofColex := Finset.cons b s hb } ↔ a < b
-- Finset.Colex.insert_le_insert
lemma insert_le_insert (ha : a ∉ s) (hb : b ∉ s) :
    toColex (insert a s) ≤ toColex (insert b s) ↔ a ≤ b 
Arguments: {α : Type u_1} [PartialOrder α] {s : Finset α} {a b : α} [DecidableEq α] (ha : a ∉ s) (hb : b ∉ s)
Goal: { ofColex := insert a s } ≤ { ofColex := insert b s } ↔ a ≤ b
-- Finset.Colex.insert_lt_insert
lemma insert_lt_insert (ha : a ∉ s) (hb : b ∉ s) :
    toColex (insert a s) < toColex (insert b s) ↔ a < b 
Arguments: {α : Type u_1} [PartialOrder α] {s : Finset α} {a b : α} [DecidableEq α] (ha : a ∉ s) (hb : b ∉ s)
Goal: { ofColex := insert a s } < { ofColex := insert b s } ↔ a < b
-- Finset.Colex.erase_le_erase
lemma erase_le_erase (ha : a ∈ s) (hb : b ∈ s) :
    toColex (s.erase a) ≤ toColex (s.erase b) ↔ b ≤ a 
Arguments: {α : Type u_1} [PartialOrder α] {s : Finset α} {a b : α} [DecidableEq α] (ha : a ∈ s) (hb : b ∈ s)
Goal: { ofColex := s.erase a } ≤ { ofColex := s.erase b } ↔ b ≤ a
-- Finset.Colex.erase_lt_erase
lemma erase_lt_erase (ha : a ∈ s) (hb : b ∈ s) :
    toColex (s.erase a) < toColex (s.erase b) ↔ b < a 
Arguments: {α : Type u_1} [PartialOrder α] {s : Finset α} {a b : α} [DecidableEq α] (ha : a ∈ s) (hb : b ∈ s)
Goal: { ofColex := s.erase a } < { ofColex := s.erase b } ↔ b < a
-- _private.Mathlib.Combinatorics.Colex.0.Finset.Colex.max_mem_aux
private lemma max_mem_aux {s t : Colex α} (hst : s ≠ t) : (ofColex s ∆ ofColex t).Nonempty 
Arguments: {α : Type u_1} [LinearOrder α] {s t : Finset.Colex α} (hst : s ≠ t)
Goal: (symmDiff s.ofColex t.ofColex).Nonempty
-- Finset.Colex.toColex_lt_toColex_iff_exists_forall_lt
lemma toColex_lt_toColex_iff_exists_forall_lt :
    toColex s < toColex t ↔ ∃ a ∈ t, a ∉ s ∧ ∀ b ∈ s, b ∉ t → b < a 
Arguments: {α : Type u_1} [LinearOrder α] {s t : Finset α}
Goal: { ofColex := s } < { ofColex := t } ↔ ∃ a ∈ t, a ∉ s ∧ ∀ b ∈ s, b ∉ t → b < a
-- Finset.Colex.lt_iff_exists_forall_lt
lemma lt_iff_exists_forall_lt {s t : Colex α} :
    s < t ↔ ∃ a ∈ ofColex t, a ∉ ofColex s ∧ ∀ b ∈ ofColex s, b ∉ ofColex t → b < a 
Arguments: {α : Type u_1} [LinearOrder α] {s t : Finset.Colex α}
Goal: s < t ↔ ∃ a ∈ t.ofColex, a ∉ s.ofColex ∧ ∀ b ∈ s.ofColex, b ∉ t.ofColex → b < a
-- Finset.Colex.toColex_le_toColex_iff_max'_mem
lemma toColex_le_toColex_iff_max'_mem :
    toColex s ≤ toColex t ↔ ∀ hst : s ≠ t, (s ∆ t).max' (symmDiff_nonempty.2 hst) ∈ t 
Arguments: {α : Type u_1} [LinearOrder α] {s t : Finset α}
Goal: { ofColex := s } ≤ { ofColex := t } ↔ ∀ (hst : s ≠ t), (symmDiff s t).max' ⋯ ∈ t
-- Finset.Colex.le_iff_max'_mem
lemma le_iff_max'_mem {s t : Colex α} :
    s ≤ t ↔ ∀ h : s ≠ t, (ofColex s ∆ ofColex t).max' (max_mem_aux h) ∈ ofColex t 
Arguments: {α : Type u_1} [LinearOrder α] {s t : Finset.Colex α}
Goal: s ≤ t ↔ ∀ (h : s ≠ t), (symmDiff s.ofColex t.ofColex).max' ⋯ ∈ t.ofColex
-- Finset.Colex.toColex_lt_toColex_iff_max'_mem
lemma toColex_lt_toColex_iff_max'_mem :
    toColex s < toColex t ↔ ∃ hst : s ≠ t, (s ∆ t).max' (symmDiff_nonempty.2 hst) ∈ t 
Arguments: {α : Type u_1} [LinearOrder α] {s t : Finset α}
Goal: { ofColex := s } < { ofColex := t } ↔ ∃ (hst : s ≠ t), (symmDiff s t).max' ⋯ ∈ t
-- Finset.Colex.lt_iff_max'_mem
lemma lt_iff_max'_mem {s t : Colex α} :
    s < t ↔ ∃ h : s ≠ t, (ofColex s ∆ ofColex t).max' (max_mem_aux h) ∈ ofColex t 
Arguments: {α : Type u_1} [LinearOrder α] {s t : Finset.Colex α}
Goal: s < t ↔ ∃ (h : s ≠ t), (symmDiff s.ofColex t.ofColex).max' ⋯ ∈ t.ofColex
-- Finset.Colex.lt_iff_exists_filter_lt
lemma lt_iff_exists_filter_lt :
    toColex s < toColex t ↔ ∃ w ∈ t \ s, s.filter (w < ·) = t.filter (w < ·) 
Arguments: {α : Type u_1} [LinearOrder α] {s t : Finset α}
Goal: { ofColex := s } < { ofColex := t } ↔ ∃ w ∈ t \ s, Finset.filter (fun x => w < x) s = Finset.filter (fun x => w < x) t
-- Finset.Colex.erase_le_erase_min'
lemma erase_le_erase_min' (hst : toColex s ≤ toColex t) (hcard : s.card ≤ t.card) (ha : a ∈ s) :
    toColex (s.erase a) ≤
      toColex (t.erase <| min' t <| card_pos.1 <| (card_pos.2 ⟨a, ha⟩).trans_le hcard) 
Arguments: {α : Type u_1} [LinearOrder α] {s t : Finset α} {a : α} (hst : { ofColex := s } ≤ { ofColex := t }) (hcard : s.card ≤ t.card) (ha : a ∈ s)
Goal: { ofColex := s.erase a } ≤ { ofColex := t.erase (t.min' ⋯) }
-- Finset.Colex.toColex_image_le_toColex_image
lemma toColex_image_le_toColex_image (hf : StrictMono f) :
    toColex (s.image f) ≤ toColex (t.image f) ↔ toColex s ≤ toColex t 
Arguments: {α : Type u_1} {β : Type u_2} [LinearOrder α] [LinearOrder β] {f : α → β} {s t : Finset α} (hf : StrictMono f)
Goal: { ofColex := Finset.image f s } ≤ { ofColex := Finset.image f t } ↔ { ofColex := s } ≤ { ofColex := t }
-- Finset.Colex.toColex_image_lt_toColex_image
lemma toColex_image_lt_toColex_image (hf : StrictMono f) :
    toColex (s.image f) < toColex (t.image f) ↔ toColex s < toColex t 
Arguments: {α : Type u_1} {β : Type u_2} [LinearOrder α] [LinearOrder β] {f : α → β} {s t : Finset α} (hf : StrictMono f)
Goal: { ofColex := Finset.image f s } < { ofColex := Finset.image f t } ↔ { ofColex := s } < { ofColex := t }
-- Finset.Colex.toColex_image_ofColex_strictMono
lemma toColex_image_ofColex_strictMono (hf : StrictMono f) :
    StrictMono fun s ↦ toColex <| image f <| ofColex s 
Arguments: {α : Type u_1} {β : Type u_2} [LinearOrder α] [LinearOrder β] {f : α → β} (hf : StrictMono f)
Goal: StrictMono fun s => { ofColex := Finset.image f s.ofColex }
-- Finset.Colex.toColex_univ
@[simp] lemma toColex_univ [Fintype α] : toColex (univ : Finset α) = ⊤ 
Arguments: {α : Type u_1} [LinearOrder α] [Fintype α]
Goal: { ofColex := Finset.univ } = ⊤
-- Finset.Colex.ofColex_top
@[simp] lemma ofColex_top [Fintype α] : ofColex (⊤ : Colex α) = univ 
Arguments: {α : Type u_1} [LinearOrder α] [Fintype α]
Goal: ⊤.ofColex = Finset.univ
-- Finset.Colex.isInitSeg_empty
@[simp] lemma isInitSeg_empty : IsInitSeg (∅ : Finset (Finset α)) r 
Arguments: {α : Type u_1} [LinearOrder α] {r : ℕ}
Goal: Finset.Colex.IsInitSeg ∅ r
-- Finset.Colex.IsInitSeg.total
lemma IsInitSeg.total (h₁ : IsInitSeg 𝒜₁ r) (h₂ : IsInitSeg 𝒜₂ r) : 𝒜₁ ⊆ 𝒜₂ ∨ 𝒜₂ ⊆ 𝒜₁ 
Arguments: {α : Type u_1} [LinearOrder α] {𝒜₁ 𝒜₂ : Finset (Finset α)} {r : ℕ} (h₁ : Finset.Colex.IsInitSeg 𝒜₁ r) (h₂ : Finset.Colex.IsInitSeg 𝒜₂ r)
Goal: 𝒜₁ ⊆ 𝒜₂ ∨ 𝒜₂ ⊆ 𝒜₁
-- Finset.Colex.mem_initSeg
@[simp]
lemma mem_initSeg : t ∈ initSeg s ↔ s.card = t.card ∧ toColex t ≤ toColex s 
Arguments: {α : Type u_1} [LinearOrder α] {s t : Finset α} [Fintype α]
Goal: t ∈ Finset.Colex.initSeg s ↔ s.card = t.card ∧ { ofColex := t } ≤ { ofColex := s }
-- Finset.Colex.mem_initSeg_self
lemma mem_initSeg_self : s ∈ initSeg s 
Arguments: {α : Type u_1} [LinearOrder α] {s : Finset α} [Fintype α]
Goal: s ∈ Finset.Colex.initSeg s
-- Finset.Colex.initSeg_nonempty
@[simp] lemma initSeg_nonempty : (initSeg s).Nonempty 
Arguments: {α : Type u_1} [LinearOrder α] {s : Finset α} [Fintype α]
Goal: (Finset.Colex.initSeg s).Nonempty
-- Finset.Colex.isInitSeg_initSeg
lemma isInitSeg_initSeg : IsInitSeg (initSeg s) s.card 
Arguments: {α : Type u_1} [LinearOrder α] {s : Finset α} [Fintype α]
Goal: Finset.Colex.IsInitSeg (Finset.Colex.initSeg s) s.card
-- Finset.Colex.IsInitSeg.exists_initSeg
lemma IsInitSeg.exists_initSeg (h𝒜 : IsInitSeg 𝒜 r) (h𝒜₀ : 𝒜.Nonempty) :
    ∃ s : Finset α, s.card = r ∧ 𝒜 = initSeg s 
Arguments: {α : Type u_1} [LinearOrder α] {𝒜 : Finset (Finset α)} {r : ℕ} [Fintype α] (h𝒜 : Finset.Colex.IsInitSeg 𝒜 r) (h𝒜₀ : 𝒜.Nonempty)
Goal: ∃ s, s.card = r ∧ 𝒜 = Finset.Colex.initSeg s
-- Finset.Colex.isInitSeg_iff_exists_initSeg
lemma isInitSeg_iff_exists_initSeg :
    IsInitSeg 𝒜 r ∧ 𝒜.Nonempty ↔ ∃ s : Finset α, s.card = r ∧ 𝒜 = initSeg s 
Arguments: {α : Type u_1} [LinearOrder α] {𝒜 : Finset (Finset α)} {r : ℕ} [Fintype α]
Goal: Finset.Colex.IsInitSeg 𝒜 r ∧ 𝒜.Nonempty ↔ ∃ s, s.card = r ∧ 𝒜 = Finset.Colex.initSeg s
-- Finset.geomSum_ofColex_strictMono
lemma geomSum_ofColex_strictMono (hn : 2 ≤ n) : StrictMono fun s ↦ ∑ k ∈ ofColex s, n ^ k 
Arguments: {n : ℕ} (hn : 2 ≤ n)
Goal: StrictMono fun s => ∑ k ∈ s.ofColex, n ^ k
-- Finset.geomSum_le_geomSum_iff_toColex_le_toColex
lemma geomSum_le_geomSum_iff_toColex_le_toColex (hn : 2 ≤ n) :
    ∑ k ∈ s, n ^ k ≤ ∑ k ∈ t, n ^ k ↔ toColex s ≤ toColex t 
Arguments: {s t : Finset ℕ} {n : ℕ} (hn : 2 ≤ n)
Goal: ∑ k ∈ s, n ^ k ≤ ∑ k ∈ t, n ^ k ↔ { ofColex := s } ≤ { ofColex := t }
-- Finset.geomSum_lt_geomSum_iff_toColex_lt_toColex
lemma geomSum_lt_geomSum_iff_toColex_lt_toColex (hn : 2 ≤ n) :
    ∑ i ∈ s, n ^ i < ∑ i ∈ t, n ^ i ↔ toColex s < toColex t 
Arguments: {s t : Finset ℕ} {n : ℕ} (hn : 2 ≤ n)
Goal: ∑ i ∈ s, n ^ i < ∑ i ∈ t, n ^ i ↔ { ofColex := s } < { ofColex := t }
-- Finset.geomSum_injective
theorem geomSum_injective {n : ℕ} (hn : 2 ≤ n) :
    Function.Injective (fun s : Finset ℕ ↦ ∑ i in s, n ^ i) 
Arguments: {n : ℕ} (hn : 2 ≤ n)
Goal: Function.Injective fun s => ∑ i ∈ s, n ^ i
-- Finset.lt_geomSum_of_mem
theorem lt_geomSum_of_mem {a : ℕ} (hn : 2 ≤ n) (hi : a ∈ s) : a < ∑ i in s, n ^ i 
Arguments: {s : Finset ℕ} {n a : ℕ} (hn : 2 ≤ n) (hi : a ∈ s)
Goal: a < ∑ i ∈ s, n ^ i
-- Finset.toFinset_bitIndices_twoPowSum
@[simp] theorem toFinset_bitIndices_twoPowSum (s : Finset ℕ) :
    (∑ i in s, 2 ^ i).bitIndices.toFinset = s 
Arguments: (s : Finset ℕ)
Goal: (∑ i ∈ s, 2 ^ i).bitIndices.toFinset = s
-- Finset.twoPowSum_toFinset_bitIndices
@[simp] theorem twoPowSum_toFinset_bitIndices (n : ℕ) :
    ∑ i in n.bitIndices.toFinset, 2 ^ i = n 
Arguments: (n : ℕ)
Goal: ∑ i ∈ n.bitIndices.toFinset, 2 ^ i = n
-- Finset.equivBitIndices_apply
@[simps] def equivBitIndices : ℕ ≃ Finset ℕ 
Arguments: (n : ℕ)
Goal: Finset.equivBitIndices n = n.bitIndices.toFinset
-- Finset.equivBitIndices_symm_apply
@[simps] def equivBitIndices : ℕ ≃ Finset ℕ 
Arguments: (s : Finset ℕ)
Goal: Finset.equivBitIndices.symm s = ∑ i ∈ s, 2 ^ i
-- Finset.orderIsoColex_apply_ofColex
@[simps] def orderIsoColex : ℕ ≃o Colex ℕ 
Arguments: (n : ℕ)
Goal: (Finset.orderIsoColex n).ofColex = Finset.equivBitIndices n
-- Finset.orderIsoColex_symm_apply
@[simps] def orderIsoColex : ℕ ≃o Colex ℕ 
Arguments: (s : Finset.Colex ℕ)
Goal: (RelIso.symm Finset.orderIsoColex) s = Finset.equivBitIndices.symm s.ofColex
-- Finset.mem_nonMemberSubfamily
@[simp]
theorem mem_nonMemberSubfamily : s ∈ 𝒜.nonMemberSubfamily a ↔ s ∈ 𝒜 ∧ a ∉ s 
Arguments: {α : Type u_1} [DecidableEq α] {𝒜 : Finset (Finset α)} {s : Finset α} {a : α}
Goal: s ∈ Finset.nonMemberSubfamily a 𝒜 ↔ s ∈ 𝒜 ∧ a ∉ s
-- Finset.mem_memberSubfamily
@[simp]
theorem mem_memberSubfamily : s ∈ 𝒜.memberSubfamily a ↔ insert a s ∈ 𝒜 ∧ a ∉ s 
Arguments: {α : Type u_1} [DecidableEq α] {𝒜 : Finset (Finset α)} {s : Finset α} {a : α}
Goal: s ∈ Finset.memberSubfamily a 𝒜 ↔ insert a s ∈ 𝒜 ∧ a ∉ s
-- Finset.nonMemberSubfamily_inter
theorem nonMemberSubfamily_inter (a : α) (𝒜 ℬ : Finset (Finset α)) :
    (𝒜 ∩ ℬ).nonMemberSubfamily a = 𝒜.nonMemberSubfamily a ∩ ℬ.nonMemberSubfamily a 
Arguments: {α : Type u_1} [DecidableEq α] (a : α) (𝒜 ℬ : Finset (Finset α))
Goal: Finset.nonMemberSubfamily a (𝒜 ∩ ℬ) = Finset.nonMemberSubfamily a 𝒜 ∩ Finset.nonMemberSubfamily a ℬ
-- Finset.memberSubfamily_inter
theorem memberSubfamily_inter (a : α) (𝒜 ℬ : Finset (Finset α)) :
    (𝒜 ∩ ℬ).memberSubfamily a = 𝒜.memberSubfamily a ∩ ℬ.memberSubfamily a 
Arguments: {α : Type u_1} [DecidableEq α] (a : α) (𝒜 ℬ : Finset (Finset α))
Goal: Finset.memberSubfamily a (𝒜 ∩ ℬ) = Finset.memberSubfamily a 𝒜 ∩ Finset.memberSubfamily a ℬ
-- Finset.nonMemberSubfamily_union
theorem nonMemberSubfamily_union (a : α) (𝒜 ℬ : Finset (Finset α)) :
    (𝒜 ∪ ℬ).nonMemberSubfamily a = 𝒜.nonMemberSubfamily a ∪ ℬ.nonMemberSubfamily a 
Arguments: {α : Type u_1} [DecidableEq α] (a : α) (𝒜 ℬ : Finset (Finset α))
Goal: Finset.nonMemberSubfamily a (𝒜 ∪ ℬ) = Finset.nonMemberSubfamily a 𝒜 ∪ Finset.nonMemberSubfamily a ℬ
-- Finset.memberSubfamily_union
theorem memberSubfamily_union (a : α) (𝒜 ℬ : Finset (Finset α)) :
    (𝒜 ∪ ℬ).memberSubfamily a = 𝒜.memberSubfamily a ∪ ℬ.memberSubfamily a 
Arguments: {α : Type u_1} [DecidableEq α] (a : α) (𝒜 ℬ : Finset (Finset α))
Goal: Finset.memberSubfamily a (𝒜 ∪ ℬ) = Finset.memberSubfamily a 𝒜 ∪ Finset.memberSubfamily a ℬ
-- Finset.card_memberSubfamily_add_card_nonMemberSubfamily
theorem card_memberSubfamily_add_card_nonMemberSubfamily (a : α) (𝒜 : Finset (Finset α)) :
    (𝒜.memberSubfamily a).card + (𝒜.nonMemberSubfamily a).card = 𝒜.card 
Arguments: {α : Type u_1} [DecidableEq α] (a : α) (𝒜 : Finset (Finset α))
Goal: (Finset.memberSubfamily a 𝒜).card + (Finset.nonMemberSubfamily a 𝒜).card = 𝒜.card
-- Finset.memberSubfamily_union_nonMemberSubfamily
theorem memberSubfamily_union_nonMemberSubfamily (a : α) (𝒜 : Finset (Finset α)) :
    𝒜.memberSubfamily a ∪ 𝒜.nonMemberSubfamily a = 𝒜.image fun s => s.erase a 
Arguments: {α : Type u_1} [DecidableEq α] (a : α) (𝒜 : Finset (Finset α))
Goal: Finset.memberSubfamily a 𝒜 ∪ Finset.nonMemberSubfamily a 𝒜 = Finset.image (fun s => s.erase a) 𝒜
-- Finset.memberSubfamily_memberSubfamily
@[simp]
theorem memberSubfamily_memberSubfamily : (𝒜.memberSubfamily a).memberSubfamily a = ∅ 
Arguments: {α : Type u_1} [DecidableEq α] {𝒜 : Finset (Finset α)} {a : α}
Goal: Finset.memberSubfamily a (Finset.memberSubfamily a 𝒜) = ∅
-- Finset.memberSubfamily_nonMemberSubfamily
@[simp]
theorem memberSubfamily_nonMemberSubfamily : (𝒜.nonMemberSubfamily a).memberSubfamily a = ∅ 
Arguments: {α : Type u_1} [DecidableEq α] {𝒜 : Finset (Finset α)} {a : α}
Goal: Finset.memberSubfamily a (Finset.nonMemberSubfamily a 𝒜) = ∅
-- Finset.nonMemberSubfamily_memberSubfamily
@[simp]
theorem nonMemberSubfamily_memberSubfamily :
    (𝒜.memberSubfamily a).nonMemberSubfamily a = 𝒜.memberSubfamily a 
Arguments: {α : Type u_1} [DecidableEq α] {𝒜 : Finset (Finset α)} {a : α}
Goal: Finset.nonMemberSubfamily a (Finset.memberSubfamily a 𝒜) = Finset.memberSubfamily a 𝒜
-- Finset.nonMemberSubfamily_nonMemberSubfamily
@[simp]
theorem nonMemberSubfamily_nonMemberSubfamily :
    (𝒜.nonMemberSubfamily a).nonMemberSubfamily a = 𝒜.nonMemberSubfamily a 
Arguments: {α : Type u_1} [DecidableEq α] {𝒜 : Finset (Finset α)} {a : α}
Goal: Finset.nonMemberSubfamily a (Finset.nonMemberSubfamily a 𝒜) = Finset.nonMemberSubfamily a 𝒜
-- Finset.memberSubfamily_image_insert
lemma memberSubfamily_image_insert (h𝒜 : ∀ s ∈ 𝒜, a ∉ s) :
    (𝒜.image <| insert a).memberSubfamily a = 𝒜 
Arguments: {α : Type u_1} [DecidableEq α] {𝒜 : Finset (Finset α)} {a : α} (h𝒜 : ∀ s ∈ 𝒜, a ∉ s)
Goal: Finset.memberSubfamily a (Finset.image (insert a) 𝒜) = 𝒜
-- Finset.nonMemberSubfamily_image_insert
@[simp] lemma nonMemberSubfamily_image_insert : (𝒜.image <| insert a).nonMemberSubfamily a = ∅ 
Arguments: {α : Type u_1} [DecidableEq α] {𝒜 : Finset (Finset α)} {a : α}
Goal: Finset.nonMemberSubfamily a (Finset.image (insert a) 𝒜) = ∅
-- Finset.memberSubfamily_image_erase
@[simp] lemma memberSubfamily_image_erase : (𝒜.image (erase · a)).memberSubfamily a = ∅ 
Arguments: {α : Type u_1} [DecidableEq α] {𝒜 : Finset (Finset α)} {a : α}
Goal: Finset.memberSubfamily a (Finset.image (fun x => x.erase a) 𝒜) = ∅
-- Finset.image_insert_memberSubfamily
lemma image_insert_memberSubfamily (𝒜 : Finset (Finset α)) (a : α) :
    (𝒜.memberSubfamily a).image (insert a) = 𝒜.filter (a ∈ ·) 
Arguments: {α : Type u_1} [DecidableEq α] (𝒜 : Finset (Finset α)) (a : α)
Goal: Finset.image (insert a) (Finset.memberSubfamily a 𝒜) = Finset.filter (fun x => a ∈ x) 𝒜
-- Finset.memberFamily_induction_on
@[elab_as_elim]
lemma memberFamily_induction_on {p : Finset (Finset α) → Prop}
    (𝒜 : Finset (Finset α)) (empty : p ∅) (singleton_empty : p {∅})
    (subfamily : ∀ (a : α) ⦃𝒜 : Finset (Finset α)⦄,
      p (𝒜.nonMemberSubfamily a) → p (𝒜.memberSubfamily a) → p 𝒜) : p 𝒜 
Arguments: {α : Type u_1} [DecidableEq α] {p : Finset (Finset α) → Prop} (𝒜 : Finset (Finset α)) (empty : p ∅) (singleton_empty : p {∅}) (subfamily :
  ∀ (a : α) ⦃𝒜 : Finset (Finset α)⦄, p (Finset.nonMemberSubfamily a 𝒜) → p (Finset.memberSubfamily a 𝒜) → p 𝒜)
Goal: p 𝒜
-- Finset.family_induction_on
@[elab_as_elim]
protected lemma family_induction_on {p : Finset (Finset α) → Prop}
    (𝒜 : Finset (Finset α)) (empty : p ∅) (singleton_empty : p {∅})
    (image_insert : ∀ (a : α) ⦃𝒜 : Finset (Finset α)⦄,
      (∀ s ∈ 𝒜, a ∉ s) → p 𝒜 → p (𝒜.image <| insert a))
    (subfamily : ∀ (a : α) ⦃𝒜 : Finset (Finset α)⦄,
      p (𝒜.filter (a ∉ ·)) → p (𝒜.filter (a ∈ ·)) → p 𝒜) : p 𝒜 
Arguments: {α : Type u_1} [DecidableEq α] {p : Finset (Finset α) → Prop} (𝒜 : Finset (Finset α)) (empty : p ∅) (singleton_empty : p {∅}) (image_insert : ∀ (a : α) ⦃𝒜 : Finset (Finset α)⦄, (∀ s ∈ 𝒜, a ∉ s) → p 𝒜 → p (Finset.image (insert a) 𝒜)) (subfamily :
  ∀ (a : α) ⦃𝒜 : Finset (Finset α)⦄, p (Finset.filter (fun x => a ∉ x) 𝒜) → p (Finset.filter (fun x => a ∈ x) 𝒜) → p 𝒜)
Goal: p 𝒜
-- Down.mem_compression
theorem mem_compression : s ∈ 𝓓 a 𝒜 ↔ s ∈ 𝒜 ∧ s.erase a ∈ 𝒜 ∨ s ∉ 𝒜 ∧ insert a s ∈ 𝒜 
Arguments: {α : Type u_1} [DecidableEq α] {𝒜 : Finset (Finset α)} {s : Finset α} {a : α}
Goal: s ∈ Down.compression a 𝒜 ↔ s ∈ 𝒜 ∧ s.erase a ∈ 𝒜 ∨ s ∉ 𝒜 ∧ insert a s ∈ 𝒜
-- Down.erase_mem_compression
theorem erase_mem_compression (hs : s ∈ 𝒜) : s.erase a ∈ 𝓓 a 𝒜 
Arguments: {α : Type u_1} [DecidableEq α] {𝒜 : Finset (Finset α)} {s : Finset α} {a : α} (hs : s ∈ 𝒜)
Goal: s.erase a ∈ Down.compression a 𝒜
-- Down.erase_mem_compression_of_mem_compression
theorem erase_mem_compression_of_mem_compression : s ∈ 𝓓 a 𝒜 → s.erase a ∈ 𝓓 a 𝒜 
Arguments: {α : Type u_1} [DecidableEq α] {𝒜 : Finset (Finset α)} {s : Finset α} {a : α}
Goal: s ∈ Down.compression a 𝒜 → s.erase a ∈ Down.compression a 𝒜
-- Down.mem_compression_of_insert_mem_compression
theorem mem_compression_of_insert_mem_compression (h : insert a s ∈ 𝓓 a 𝒜) : s ∈ 𝓓 a 𝒜 
Arguments: {α : Type u_1} [DecidableEq α] {𝒜 : Finset (Finset α)} {s : Finset α} {a : α} (h : insert a s ∈ Down.compression a 𝒜)
Goal: s ∈ Down.compression a 𝒜