ruc-ai4math/mathlib_handler_benchmark_410 huggingface dataset:
-- SupHom.withBot_id
@[simp]
theorem withBot_id : (SupHom.id α).withBot = SupBotHom.id _ 
Arguments: {α : Type u_3} [SemilatticeSup α]
Goal: (SupHom.id α).withBot = SupBotHom.id (WithBot α)
-- SupHom.withBot_comp
@[simp]
theorem withBot_comp (f : SupHom β γ) (g : SupHom α β) :
    (f.comp g).withBot = f.withBot.comp g.withBot 
Arguments: {α : Type u_3} {β : Type u_4} {γ : Type u_5} [SemilatticeSup α] [SemilatticeSup β] [SemilatticeSup γ] (f : SupHom β γ) (g : SupHom α β)
Goal: (f.comp g).withBot = f.withBot.comp g.withBot
-- SupHom.withTop'_toFun
@[simps]
def withTop' [OrderTop β] (f : SupHom α β) : SupHom (WithTop α) β 
Arguments: {α : Type u_3} {β : Type u_4} [SemilatticeSup α] [SemilatticeSup β] [OrderTop β] (f : SupHom α β) (a : WithTop α)
Goal: f.withTop' a = Option.elim a ⊤ ⇑f
-- SupHom.withBot'_toSupHom_toFun
@[simps]
def withBot' [OrderBot β] (f : SupHom α β) : SupBotHom (WithBot α) β 
Arguments: {α : Type u_3} {β : Type u_4} [SemilatticeSup α] [SemilatticeSup β] [OrderBot β] (f : SupHom α β) (a : WithBot α)
Goal: f.withBot'.toSupHom a = Option.elim a ⊥ ⇑f
-- InfHom.withTop_toInfHom_toFun
@[simps]
protected def withTop (f : InfHom α β) : InfTopHom (WithTop α) (WithTop β) 
Arguments: {α : Type u_3} {β : Type u_4} [SemilatticeInf α] [SemilatticeInf β] (f : InfHom α β)
Goal: ∀ (a : Option α), f.withTop.toInfHom a = Option.map (⇑f) a
-- InfHom.withTop_id
@[simp]
theorem withTop_id : (InfHom.id α).withTop = InfTopHom.id _ 
Arguments: {α : Type u_3} [SemilatticeInf α]
Goal: (InfHom.id α).withTop = InfTopHom.id (WithTop α)
-- InfHom.withTop_comp
@[simp]
theorem withTop_comp (f : InfHom β γ) (g : InfHom α β) :
    (f.comp g).withTop = f.withTop.comp g.withTop 
Arguments: {α : Type u_3} {β : Type u_4} {γ : Type u_5} [SemilatticeInf α] [SemilatticeInf β] [SemilatticeInf γ] (f : InfHom β γ) (g : InfHom α β)
Goal: (f.comp g).withTop = f.withTop.comp g.withTop
-- InfHom.withBot_toFun
@[simps]
protected def withBot (f : InfHom α β) : InfHom (WithBot α) (WithBot β) 
Arguments: {α : Type u_3} {β : Type u_4} [SemilatticeInf α] [SemilatticeInf β] (f : InfHom α β)
Goal: ∀ (a : Option α), f.withBot a = Option.map (⇑f) a
-- InfHom.withBot_id
@[simp]
theorem withBot_id : (InfHom.id α).withBot = InfHom.id _ 
Arguments: {α : Type u_3} [SemilatticeInf α]
Goal: (InfHom.id α).withBot = InfHom.id (WithBot α)
-- InfHom.withBot_comp
@[simp]
theorem withBot_comp (f : InfHom β γ) (g : InfHom α β) :
    (f.comp g).withBot = f.withBot.comp g.withBot 
Arguments: {α : Type u_3} {β : Type u_4} {γ : Type u_5} [SemilatticeInf α] [SemilatticeInf β] [SemilatticeInf γ] (f : InfHom β γ) (g : InfHom α β)
Goal: (f.comp g).withBot = f.withBot.comp g.withBot
-- InfHom.withTop'_toInfHom_toFun
@[simps]
def withTop' [OrderTop β] (f : InfHom α β) : InfTopHom (WithTop α) β 
Arguments: {α : Type u_3} {β : Type u_4} [SemilatticeInf α] [SemilatticeInf β] [OrderTop β] (f : InfHom α β) (a : WithTop α)
Goal: f.withTop'.toInfHom a = Option.elim a ⊤ ⇑f
-- InfHom.withBot'_toFun
@[simps]
def withBot' [OrderBot β] (f : InfHom α β) : InfHom (WithBot α) β 
Arguments: {α : Type u_3} {β : Type u_4} [SemilatticeInf α] [SemilatticeInf β] [OrderBot β] (f : InfHom α β) (a : WithBot α)
Goal: f.withBot' a = Option.elim a ⊥ ⇑f
-- LatticeHom.withTop_toSupHom
@[simps]
protected def withTop (f : LatticeHom α β) : LatticeHom (WithTop α) (WithTop β) 
Arguments: {α : Type u_3} {β : Type u_4} [Lattice α] [Lattice β] (f : LatticeHom α β)
Goal: f.withTop.toSupHom = f.withTop
-- LatticeHom.coe_withTop
@[simp, norm_cast]
lemma coe_withTop (f : LatticeHom α β) : ⇑f.withTop = WithTop.map f 
Arguments: {α : Type u_3} {β : Type u_4} [Lattice α] [Lattice β] (f : LatticeHom α β)
Goal: ⇑f.withTop = WithTop.map ⇑f
-- LatticeHom.withTop_apply
lemma withTop_apply (f : LatticeHom α β) (a : WithTop α) : f.withTop a = a.map f 
Arguments: {α : Type u_3} {β : Type u_4} [Lattice α] [Lattice β] (f : LatticeHom α β) (a : WithTop α)
Goal: f.withTop a = WithTop.map (⇑f) a
-- LatticeHom.withTop_id
@[simp]
theorem withTop_id : (LatticeHom.id α).withTop = LatticeHom.id _ 
Arguments: {α : Type u_3} [Lattice α]
Goal: (LatticeHom.id α).withTop = LatticeHom.id (WithTop α)
-- LatticeHom.withTop_comp
@[simp]
theorem withTop_comp (f : LatticeHom β γ) (g : LatticeHom α β) :
    (f.comp g).withTop = f.withTop.comp g.withTop 
Arguments: {α : Type u_3} {β : Type u_4} {γ : Type u_5} [Lattice α] [Lattice β] [Lattice γ] (f : LatticeHom β γ) (g : LatticeHom α β)
Goal: (f.comp g).withTop = f.withTop.comp g.withTop
-- LatticeHom.withBot_toSupHom_toFun
@[simps]
protected def withBot (f : LatticeHom α β) : LatticeHom (WithBot α) (WithBot β) 
Arguments: {α : Type u_3} {β : Type u_4} [Lattice α] [Lattice β] (f : LatticeHom α β) (a : WithBot α)
Goal: f.withBot.toSupHom a = f.withBot a
-- LatticeHom.coe_withBot
@[simp, norm_cast]
lemma coe_withBot (f : LatticeHom α β) : ⇑f.withBot = Option.map f 
Arguments: {α : Type u_3} {β : Type u_4} [Lattice α] [Lattice β] (f : LatticeHom α β)
Goal: ⇑f.withBot = Option.map ⇑f
-- LatticeHom.withBot_apply
lemma withBot_apply (f : LatticeHom α β) (a : WithBot α) : f.withBot a = a.map f 
Arguments: {α : Type u_3} {β : Type u_4} [Lattice α] [Lattice β] (f : LatticeHom α β) (a : WithBot α)
Goal: f.withBot a = WithBot.map (⇑f) a
-- LatticeHom.withBot_id
@[simp]
theorem withBot_id : (LatticeHom.id α).withBot = LatticeHom.id _ 
Arguments: {α : Type u_3} [Lattice α]
Goal: (LatticeHom.id α).withBot = LatticeHom.id (WithBot α)
-- LatticeHom.withBot_comp
@[simp]
theorem withBot_comp (f : LatticeHom β γ) (g : LatticeHom α β) :
    (f.comp g).withBot = f.withBot.comp g.withBot 
Arguments: {α : Type u_3} {β : Type u_4} {γ : Type u_5} [Lattice α] [Lattice β] [Lattice γ] (f : LatticeHom β γ) (g : LatticeHom α β)
Goal: (f.comp g).withBot = f.withBot.comp g.withBot
-- LatticeHom.withTopWithBot_toLatticeHom
@[simps]
def withTopWithBot (f : LatticeHom α β) :
    BoundedLatticeHom (WithTop <| WithBot α) (WithTop <| WithBot β) 
Arguments: {α : Type u_3} {β : Type u_4} [Lattice α] [Lattice β] (f : LatticeHom α β)
Goal: f.withTopWithBot.toLatticeHom = f.withBot.withTop
-- LatticeHom.coe_withTopWithBot
@[simp, norm_cast]
lemma coe_withTopWithBot (f : LatticeHom α β) : ⇑f.withTopWithBot = Option.map (Option.map f) 
Arguments: {α : Type u_3} {β : Type u_4} [Lattice α] [Lattice β] (f : LatticeHom α β)
Goal: ⇑f.withTopWithBot = Option.map (Option.map ⇑f)
-- LatticeHom.withTopWithBot_apply
lemma withTopWithBot_apply (f : LatticeHom α β) (a : WithTop <| WithBot α) :
    f.withTopWithBot a = a.map (Option.map f) 
Arguments: {α : Type u_3} {β : Type u_4} [Lattice α] [Lattice β] (f : LatticeHom α β) (a : WithTop (WithBot α))
Goal: f.withTopWithBot a = WithTop.map (Option.map ⇑f) a
-- LatticeHom.withTopWithBot_id
@[simp]
theorem withTopWithBot_id : (LatticeHom.id α).withTopWithBot = BoundedLatticeHom.id _ 
Arguments: {α : Type u_3} [Lattice α]
Goal: (LatticeHom.id α).withTopWithBot = BoundedLatticeHom.id (WithTop (WithBot α))
-- LatticeHom.withTopWithBot_comp
@[simp]
theorem withTopWithBot_comp (f : LatticeHom β γ) (g : LatticeHom α β) :
    (f.comp g).withTopWithBot = f.withTopWithBot.comp g.withTopWithBot 
Arguments: {α : Type u_3} {β : Type u_4} {γ : Type u_5} [Lattice α] [Lattice β] [Lattice γ] (f : LatticeHom β γ) (g : LatticeHom α β)
Goal: (f.comp g).withTopWithBot = f.withTopWithBot.comp g.withTopWithBot
-- LatticeHom.withTop'_toSupHom
@[simps]
def withTop' [OrderTop β] (f : LatticeHom α β) : LatticeHom (WithTop α) β 
Arguments: {α : Type u_3} {β : Type u_4} [Lattice α] [Lattice β] [OrderTop β] (f : LatticeHom α β)
Goal: f.withTop'.toSupHom = f.withTop'
-- LatticeHom.withBot'_toSupHom
@[simps]
def withBot' [OrderBot β] (f : LatticeHom α β) : LatticeHom (WithBot α) β 
Arguments: {α : Type u_3} {β : Type u_4} [Lattice α] [Lattice β] [OrderBot β] (f : LatticeHom α β)
Goal: f.withBot'.toSupHom = f.withBot'.toSupHom
-- LatticeHom.withTopWithBot'_toLatticeHom
@[simps]
def withTopWithBot' [BoundedOrder β] (f : LatticeHom α β) :
    BoundedLatticeHom (WithTop <| WithBot α) β 
Arguments: {α : Type u_3} {β : Type u_4} [Lattice α] [Lattice β] [BoundedOrder β] (f : LatticeHom α β)
Goal: f.withTopWithBot'.toLatticeHom = f.withBot'.withTop'
-- Filter.eventually_curry_iff
theorem eventually_curry_iff {f : Filter α} {g : Filter β} {p : α × β → Prop} :
    (∀ᶠ x : α × β in f.curry g, p x) ↔ ∀ᶠ x : α in f, ∀ᶠ y : β in g, p (x, y) 
Arguments: {α : Type u_1} {β : Type u_2} {f : Filter α} {g : Filter β} {p : α × β → Prop}
Goal: (∀ᶠ (x : α × β) in f.curry g, p x) ↔ ∀ᶠ (x : α) in f, ∀ᶠ (y : β) in g, p (x, y)
-- Filter.frequently_curry_iff
theorem frequently_curry_iff {α β : Type*} {l : Filter α} {m : Filter β}
    (p : (α × β) → Prop) : (∃ᶠ x in l.curry m, p x) ↔ ∃ᶠ x in l, ∃ᶠ y in m, p (x, y) 
Arguments: {α : Type u_4} {β : Type u_5} {l : Filter α} {m : Filter β} (p : α × β → Prop)
Goal: (∃ᶠ (x : α × β) in l.curry m, p x) ↔ ∃ᶠ (x : α) in l, ∃ᶠ (y : β) in m, p (x, y)
-- Filter.mem_curry_iff
theorem mem_curry_iff {f : Filter α} {g : Filter β} {s : Set (α × β)} :
    s ∈ f.curry g ↔ ∀ᶠ x : α in f, ∀ᶠ y : β in g, (x, y) ∈ s 
Arguments: {α : Type u_1} {β : Type u_2} {f : Filter α} {g : Filter β} {s : Set (α × β)}
Goal: s ∈ f.curry g ↔ ∀ᶠ (x : α) in f, ∀ᶠ (y : β) in g, (x, y) ∈ s
-- Filter.curry_le_prod
theorem curry_le_prod {f : Filter α} {g : Filter β} : f.curry g ≤ f.prod g 
Arguments: {α : Type u_1} {β : Type u_2} {f : Filter α} {g : Filter β}
Goal: f.curry g ≤ f.prod g
-- Filter.Tendsto.curry
theorem Tendsto.curry {f : α → β → γ} {la : Filter α} {lb : Filter β} {lc : Filter γ}
    (h : ∀ᶠ a in la, Tendsto (fun b : β => f a b) lb lc) : Tendsto (↿f) (la.curry lb) lc 
Arguments: {α : Type u_1} {β : Type u_2} {γ : Type u_3} {f : α → β → γ} {la : Filter α} {lb : Filter β} {lc : Filter γ} (h : ∀ᶠ (a : α) in la, Filter.Tendsto (fun b => f a b) lb lc)
Goal: Filter.Tendsto (↿f) (la.curry lb) lc
-- Filter.frequently_curry_prod_iff
theorem frequently_curry_prod_iff {α β : Type*} {l : Filter α} {m : Filter β}
    (s : Set α) (t : Set β) : (∃ᶠ x in l.curry m, x ∈ s ×ˢ t) ↔ sᶜ ∉ l ∧ tᶜ ∉ m 
Arguments: {α : Type u_4} {β : Type u_5} {l : Filter α} {m : Filter β} (s : Set α) (t : Set β)
Goal: (∃ᶠ (x : α × β) in l.curry m, x ∈ s ×ˢ t) ↔ sᶜ ∉ l ∧ tᶜ ∉ m
-- Filter.prod_mem_curry
theorem prod_mem_curry {α β : Type*} {l : Filter α} {m : Filter β} {s : Set α} {t : Set β}
    (hs : s ∈ l) (ht : t ∈ m) : s ×ˢ t ∈ l.curry m 
Arguments: {α : Type u_4} {β : Type u_5} {l : Filter α} {m : Filter β} {s : Set α} {t : Set β} (hs : s ∈ l) (ht : t ∈ m)
Goal: s ×ˢ t ∈ l.curry m
-- Filter.eventually_curry_prod_iff
theorem eventually_curry_prod_iff {α β : Type*} {l : Filter α} {m : Filter β}
    [NeBot l] [NeBot m] (s : Set α) (t : Set β) :
    (∀ᶠ x in l.curry m, x ∈ s ×ˢ t) ↔ s ∈ l ∧ t ∈ m 
Arguments: {α : Type u_4} {β : Type u_5} {l : Filter α} {m : Filter β} [l.NeBot] [m.NeBot] (s : Set α) (t : Set β)
Goal: (∀ᶠ (x : α × β) in l.curry m, x ∈ s ×ˢ t) ↔ s ∈ l ∧ t ∈ m
-- Finpartition.supIndep
@[ext]
structure Finpartition [Lattice α] [OrderBot α] (a : α) where
  -- Porting note: Docstrings added
    parts : Finset α
    supIndep : parts.SupIndep id
    sup_parts : parts.sup id = a
    not_bot_mem : ⊥ ∉ parts
  deriving DecidableEq
Arguments: {α : Type u_1} [Lattice α] [OrderBot α] {a : α} (self : Finpartition a)
Goal: self.parts.SupIndep id
-- Finpartition.sup_parts
@[ext]
structure Finpartition [Lattice α] [OrderBot α] (a : α) where
  -- Porting note: Docstrings added
    parts : Finset α
    supIndep : parts.SupIndep id
    sup_parts : parts.sup id = a
    not_bot_mem : ⊥ ∉ parts
  deriving DecidableEq
Arguments: {α : Type u_1} [Lattice α] [OrderBot α] {a : α} (self : Finpartition a)
Goal: self.parts.sup id = a
-- Finpartition.not_bot_mem
@[ext]
structure Finpartition [Lattice α] [OrderBot α] (a : α) where
  -- Porting note: Docstrings added
    parts : Finset α
    supIndep : parts.SupIndep id
    sup_parts : parts.sup id = a
    not_bot_mem : ⊥ ∉ parts
  deriving DecidableEq
Arguments: {α : Type u_1} [Lattice α] [OrderBot α] {a : α} (self : Finpartition a)
Goal: ⊥ ∉ self.parts
-- Finpartition.ofErase_parts
@[simps]
def ofErase [DecidableEq α] {a : α} (parts : Finset α) (sup_indep : parts.SupIndep id)
    (sup_parts : parts.sup id = a) : Finpartition a 
Arguments: {α : Type u_1} [Lattice α] [OrderBot α] [DecidableEq α] {a : α} (parts : Finset α) (sup_indep : parts.SupIndep id) (sup_parts : parts.sup id = a)
Goal: (Finpartition.ofErase parts sup_indep sup_parts).parts = parts.erase ⊥
-- Finpartition.ofSubset_parts
@[simps]
def ofSubset {a b : α} (P : Finpartition a) {parts : Finset α} (subset : parts ⊆ P.parts)
    (sup_parts : parts.sup id = b) : Finpartition b 
Arguments: {α : Type u_1} [Lattice α] [OrderBot α] {a b : α} (P : Finpartition a) {parts : Finset α} (subset : parts ⊆ P.parts) (sup_parts : parts.sup id = b)
Goal: (P.ofSubset subset sup_parts).parts = parts
-- Finpartition.copy_parts
@[simps]
def copy {a b : α} (P : Finpartition a) (h : a = b) : Finpartition b 
Arguments: {α : Type u_1} [Lattice α] [OrderBot α] {a b : α} (P : Finpartition a) (h : a = b)
Goal: (P.copy h).parts = P.parts
-- Finpartition.parts_map
@[simp]
theorem parts_map {β : Type*} [Lattice β] [OrderBot β] {a : α} {e : α ≃o β} {P : Finpartition a} :
    (P.map e).parts = P.parts.map e 
Arguments: {α : Type u_1} [Lattice α] [OrderBot α] {β : Type u_2} [Lattice β] [OrderBot β] {a : α} {e : α ≃o β} {P : Finpartition a}
Goal: (Finpartition.map e P).parts = Finset.map (↑e).toEmbedding P.parts
-- Finpartition.empty_parts
@[simps]
protected def empty : Finpartition (⊥ : α) 
Arguments: (α : Type u_1) [Lattice α] [OrderBot α]
Goal: (Finpartition.empty α).parts = ∅
-- Finpartition.default_eq_empty
@[simp]
theorem default_eq_empty : (default : Finpartition (⊥ : α)) = Finpartition.empty α 
Arguments: (α : Type u_1) [Lattice α] [OrderBot α]
Goal: default = Finpartition.empty α
-- Finpartition.indiscrete_parts
@[simps]
def indiscrete (ha : a ≠ ⊥) : Finpartition a 
Arguments: {α : Type u_1} [Lattice α] [OrderBot α] {a : α} (ha : a ≠ ⊥)
Goal: (Finpartition.indiscrete ha).parts = {a}
-- Finpartition.le
protected theorem le {b : α} (hb : b ∈ P.parts) : b ≤ a 
Arguments: {α : Type u_1} [Lattice α] [OrderBot α] {a : α} (P : Finpartition a) {b : α} (hb : b ∈ P.parts)
Goal: b ≤ a
-- Finpartition.ne_bot
theorem ne_bot {b : α} (hb : b ∈ P.parts) : b ≠ ⊥ 
Arguments: {α : Type u_1} [Lattice α] [OrderBot α] {a : α} (P : Finpartition a) {b : α} (hb : b ∈ P.parts)
Goal: b ≠ ⊥
-- Finpartition.disjoint
protected theorem disjoint : (P.parts : Set α).PairwiseDisjoint id 
Arguments: {α : Type u_1} [Lattice α] [OrderBot α] {a : α} (P : Finpartition a)
Goal: (↑P.parts).PairwiseDisjoint id
-- Finpartition.parts_eq_empty_iff
theorem parts_eq_empty_iff : P.parts = ∅ ↔ a = ⊥ 
Arguments: {α : Type u_1} [Lattice α] [OrderBot α] {a : α} {P : Finpartition a}
Goal: P.parts = ∅ ↔ a = ⊥
-- Finpartition.parts_nonempty_iff
theorem parts_nonempty_iff : P.parts.Nonempty ↔ a ≠ ⊥ 
Arguments: {α : Type u_1} [Lattice α] [OrderBot α] {a : α} {P : Finpartition a}
Goal: P.parts.Nonempty ↔ a ≠ ⊥
-- Finpartition.parts_nonempty
theorem parts_nonempty (P : Finpartition a) (ha : a ≠ ⊥) : P.parts.Nonempty 
Arguments: {α : Type u_1} [Lattice α] [OrderBot α] {a : α} (P : Finpartition a) (ha : a ≠ ⊥)
Goal: P.parts.Nonempty
-- Finpartition.parts_top_subset
theorem parts_top_subset (a : α) [Decidable (a = ⊥)] : (⊤ : Finpartition a).parts ⊆ {a} 
Arguments: {α : Type u_1} [Lattice α] [OrderBot α] (a : α) [Decidable (a = ⊥)]
Goal: ⊤.parts ⊆ {a}
-- Finpartition.parts_top_subsingleton
theorem parts_top_subsingleton (a : α) [Decidable (a = ⊥)] :
    ((⊤ : Finpartition a).parts : Set α).Subsingleton 
Arguments: {α : Type u_1} [Lattice α] [OrderBot α] (a : α) [Decidable (a = ⊥)]
Goal: (↑⊤.parts).Subsingleton
-- Finpartition.parts_inf
@[simp]
theorem parts_inf (P Q : Finpartition a) :
    (P ⊓ Q).parts = ((P.parts ×ˢ Q.parts).image fun bc : α × α ↦ bc.1 ⊓ bc.2).erase ⊥ 
Arguments: {α : Type u_1} [DistribLattice α] [OrderBot α] [DecidableEq α] {a : α} (P Q : Finpartition a)
Goal: (P ⊓ Q).parts = (Finset.image (fun bc => bc.1 ⊓ bc.2) (P.parts ×ˢ Q.parts)).erase ⊥
-- Finpartition.exists_le_of_le
theorem exists_le_of_le {a b : α} {P Q : Finpartition a} (h : P ≤ Q) (hb : b ∈ Q.parts) :
    ∃ c ∈ P.parts, c ≤ b 
Arguments: {α : Type u_1} [DistribLattice α] [OrderBot α] {a b : α} {P Q : Finpartition a} (h : P ≤ Q) (hb : b ∈ Q.parts)
Goal: ∃ c ∈ P.parts, c ≤ b
-- Finpartition.card_mono
theorem card_mono {a : α} {P Q : Finpartition a} (h : P ≤ Q) : Q.parts.card ≤ P.parts.card 
Arguments: {α : Type u_1} [DistribLattice α] [OrderBot α] {a : α} {P Q : Finpartition a} (h : P ≤ Q)
Goal: Q.parts.card ≤ P.parts.card
-- Finpartition.bind_parts
@[simps]
def bind (P : Finpartition a) (Q : ∀ i ∈ P.parts, Finpartition i) : Finpartition a 
Arguments: {α : Type u_1} [DistribLattice α] [OrderBot α] [DecidableEq α] {a : α} (P : Finpartition a) (Q : (i : α) → i ∈ P.parts → Finpartition i)
Goal: (P.bind Q).parts = P.parts.attach.biUnion fun i => (Q ↑i ⋯).parts
-- Finpartition.mem_bind
theorem mem_bind : b ∈ (P.bind Q).parts ↔ ∃ A hA, b ∈ (Q A hA).parts 
Arguments: {α : Type u_1} [DistribLattice α] [OrderBot α] [DecidableEq α] {a b : α} {P : Finpartition a} {Q : (i : α) → i ∈ P.parts → Finpartition i}
Goal: b ∈ (P.bind Q).parts ↔ ∃ A, ∃ (hA : A ∈ P.parts), b ∈ (Q A hA).parts
-- Finpartition.card_bind
theorem card_bind (Q : ∀ i ∈ P.parts, Finpartition i) :
    (P.bind Q).parts.card = ∑ A ∈ P.parts.attach, (Q _ A.2).parts.card 
Arguments: {α : Type u_1} [DistribLattice α] [OrderBot α] [DecidableEq α] {a : α} {P : Finpartition a} (Q : (i : α) → i ∈ P.parts → Finpartition i)
Goal: (P.bind Q).parts.card = ∑ A ∈ P.parts.attach, (Q ↑A ⋯).parts.card
-- Finpartition.extend_parts
@[simps]
def extend (P : Finpartition a) (hb : b ≠ ⊥) (hab : Disjoint a b) (hc : a ⊔ b = c) :
    Finpartition c 
Arguments: {α : Type u_1} [DistribLattice α] [OrderBot α] [DecidableEq α] {a b c : α} (P : Finpartition a) (hb : b ≠ ⊥) (hab : Disjoint a b) (hc : a ⊔ b = c)
Goal: (P.extend hb hab hc).parts = insert b P.parts
-- Finpartition.card_extend
theorem card_extend (P : Finpartition a) (b c : α) {hb : b ≠ ⊥} {hab : Disjoint a b}
    {hc : a ⊔ b = c} : (P.extend hb hab hc).parts.card = P.parts.card + 1 
Arguments: {α : Type u_1} [DistribLattice α] [OrderBot α] [DecidableEq α] {a : α} (P : Finpartition a) (b c : α) {hb : b ≠ ⊥} {hab : Disjoint a b} {hc : a ⊔ b = c}
Goal: (P.extend hb hab hc).parts.card = P.parts.card + 1
-- Finpartition.avoid_parts_val
@[simps!]
def avoid (b : α) : Finpartition (a \ b) 
Arguments: {α : Type u_1} [GeneralizedBooleanAlgebra α] [DecidableEq α] {a : α} (P : Finpartition a) (b : α)
Goal: (P.avoid b).parts.val = (Multiset.map (fun x => x \ b) P.parts.val).dedup.erase ⊥
-- Finpartition.mem_avoid
@[simp]
theorem mem_avoid : c ∈ (P.avoid b).parts ↔ ∃ d ∈ P.parts, ¬d ≤ b ∧ d \ b = c 
Arguments: {α : Type u_1} [GeneralizedBooleanAlgebra α] [DecidableEq α] {a b c : α} (P : Finpartition a)
Goal: c ∈ (P.avoid b).parts ↔ ∃ d ∈ P.parts, ¬d ≤ b ∧ d \ b = c
-- Finpartition.nonempty_of_mem_parts
theorem nonempty_of_mem_parts {a : Finset α} (ha : a ∈ P.parts) : a.Nonempty 
Arguments: {α : Type u_1} [DecidableEq α] {s : Finset α} (P : Finpartition s) {a : Finset α} (ha : a ∈ P.parts)
Goal: a.Nonempty
-- Finpartition.eq_of_mem_parts
lemma eq_of_mem_parts (ht : t ∈ P.parts) (hu : u ∈ P.parts) (hat : a ∈ t) (hau : a ∈ u) : t = u 
Arguments: {α : Type u_1} [DecidableEq α] {s t u : Finset α} (P : Finpartition s) {a : α} (ht : t ∈ P.parts) (hu : u ∈ P.parts) (hat : a ∈ t) (hau : a ∈ u)
Goal: t = u
-- Finpartition.exists_mem
theorem exists_mem (ha : a ∈ s) : ∃ t ∈ P.parts, a ∈ t 
Arguments: {α : Type u_1} [DecidableEq α] {s : Finset α} (P : Finpartition s) {a : α} (ha : a ∈ s)
Goal: ∃ t ∈ P.parts, a ∈ t
-- Finpartition.biUnion_parts
theorem biUnion_parts : P.parts.biUnion id = s 
Arguments: {α : Type u_1} [DecidableEq α] {s : Finset α} (P : Finpartition s)
Goal: P.parts.biUnion id = s
-- Finpartition.existsUnique_mem
theorem existsUnique_mem (ha : a ∈ s) : ∃! t, t ∈ P.parts ∧ a ∈ t 
Arguments: {α : Type u_1} [DecidableEq α] {s : Finset α} (P : Finpartition s) {a : α} (ha : a ∈ s)
Goal: ∃! t, t ∈ P.parts ∧ a ∈ t
-- Finpartition.part_mem
lemma part_mem (ha : a ∈ s) : P.part a ∈ P.parts 
Arguments: {α : Type u_1} [DecidableEq α] {s : Finset α} (P : Finpartition s) {a : α} (ha : a ∈ s)
Goal: P.part a ∈ P.parts
-- Finpartition.mem_part
lemma mem_part (ha : a ∈ s) : a ∈ P.part a 
Arguments: {α : Type u_1} [DecidableEq α] {s : Finset α} (P : Finpartition s) {a : α} (ha : a ∈ s)
Goal: a ∈ P.part a
-- Finpartition.part_eq_of_mem
lemma part_eq_of_mem (ht : t ∈ P.parts) (hat : a ∈ t) : P.part a = t 
Arguments: {α : Type u_1} [DecidableEq α] {s t : Finset α} (P : Finpartition s) {a : α} (ht : t ∈ P.parts) (hat : a ∈ t)
Goal: P.part a = t
-- Finpartition.mem_part_iff_part_eq_part
lemma mem_part_iff_part_eq_part {b : α} (ha : a ∈ s) (hb : b ∈ s) :
    a ∈ P.part b ↔ P.part a = P.part b 
Arguments: {α : Type u_1} [DecidableEq α] {s : Finset α} (P : Finpartition s) {a b : α} (ha : a ∈ s) (hb : b ∈ s)
Goal: a ∈ P.part b ↔ P.part a = P.part b
-- Finpartition.part_surjOn
theorem part_surjOn : Set.SurjOn P.part s P.parts 
Arguments: {α : Type u_1} [DecidableEq α] {s : Finset α} (P : Finpartition s)
Goal: Set.SurjOn P.part ↑s ↑P.parts
-- Finpartition.exists_subset_part_bijOn
theorem exists_subset_part_bijOn : ∃ r ⊆ s, Set.BijOn P.part r P.parts 
Arguments: {α : Type u_1} [DecidableEq α] {s : Finset α} (P : Finpartition s)
Goal: ∃ r ⊆ s, Set.BijOn P.part ↑r ↑P.parts
-- Finpartition.exists_enumeration
lemma exists_enumeration : ∃ f : s ≃ Σ t : P.parts, Fin t.1.card,
    ∀ a b : s, P.part a = P.part b ↔ (f a).1 = (f b).1 
Arguments: {α : Type u_1} [DecidableEq α] {s : Finset α} (P : Finpartition s)
Goal: ∃ f, ∀ (a b : { x // x ∈ s }), P.part ↑a = P.part ↑b ↔ (f a).fst = (f b).fst
-- Finpartition.sum_card_parts
theorem sum_card_parts : ∑ i ∈ P.parts, i.card = s.card 
Arguments: {α : Type u_1} [DecidableEq α] {s : Finset α} (P : Finpartition s)
Goal: ∑ i ∈ P.parts, i.card = s.card
-- Finpartition.parts_bot
@[simp]
theorem parts_bot (s : Finset α) :
    (⊥ : Finpartition s).parts = s.map ⟨singleton, singleton_injective⟩ 
Arguments: {α : Type u_1} [DecidableEq α] (s : Finset α)
Goal: ⊥.parts = Finset.map { toFun := singleton, inj' := ⋯ } s
-- Finpartition.card_bot
theorem card_bot (s : Finset α) : (⊥ : Finpartition s).parts.card = s.card 
Arguments: {α : Type u_1} [DecidableEq α] (s : Finset α)
Goal: ⊥.parts.card = s.card
-- Finpartition.mem_bot_iff
theorem mem_bot_iff : t ∈ (⊥ : Finpartition s).parts ↔ ∃ a ∈ s, {a} = t 
Arguments: {α : Type u_1} [DecidableEq α] {s t : Finset α}
Goal: t ∈ ⊥.parts ↔ ∃ a ∈ s, {a} = t
-- Finpartition.card_parts_le_card
theorem card_parts_le_card : P.parts.card ≤ s.card 
Arguments: {α : Type u_1} [DecidableEq α] {s : Finset α} (P : Finpartition s)
Goal: P.parts.card ≤ s.card
-- Finpartition.card_mod_card_parts_le
lemma card_mod_card_parts_le : s.card % P.parts.card ≤ P.parts.card 
Arguments: {α : Type u_1} [DecidableEq α] {s : Finset α} (P : Finpartition s)
Goal: s.card % P.parts.card ≤ P.parts.card
-- Finpartition.mem_part_ofSetoid_iff_rel
theorem mem_part_ofSetoid_iff_rel {s : Setoid α} [DecidableRel s.r] {b : α} :
    b ∈ (ofSetoid s).part a ↔ s.r a b 
Arguments: {α : Type u_1} [DecidableEq α] {a : α} [Fintype α] {s : Setoid α} [DecidableRel Setoid.r] {b : α}
Goal: b ∈ (Finpartition.ofSetoid s).part a ↔ Setoid.r a b
-- Finpartition.mem_atomise
theorem mem_atomise :
    t ∈ (atomise s F).parts ↔
      t.Nonempty ∧ ∃ Q ⊆ F, (s.filter fun i ↦ ∀ u ∈ F, u ∈ Q ↔ i ∈ u) = t 
Arguments: {α : Type u_1} [DecidableEq α] {s t : Finset α} [Fintype α] {F : Finset (Finset α)}
Goal: t ∈ (Finpartition.atomise s F).parts ↔ t.Nonempty ∧ ∃ Q ⊆ F, Finset.filter (fun i => ∀ u ∈ F, u ∈ Q ↔ i ∈ u) s = t
-- Finpartition.atomise_empty
theorem atomise_empty (hs : s.Nonempty) : (atomise s ∅).parts = {s} 
Arguments: {α : Type u_1} [DecidableEq α] {s : Finset α} [Fintype α] (hs : s.Nonempty)
Goal: (Finpartition.atomise s ∅).parts = {s}
-- Finpartition.card_atomise_le
theorem card_atomise_le : (atomise s F).parts.card ≤ 2 ^ F.card 
Arguments: {α : Type u_1} [DecidableEq α] {s : Finset α} [Fintype α] {F : Finset (Finset α)}
Goal: (Finpartition.atomise s F).parts.card ≤ 2 ^ F.card