Documentation

Mathlib.Data.Finset.BooleanAlgebra

Finsets are a Boolean algebra #

This file provides the BooleanAlgebra (Finset α) instance, under the assumption that α is a Fintype.

Main results #

theorem Finset.Nonempty.eq_univ {α : Type u_1} {s : Finset α} [Fintype α] [Subsingleton α] :
s.Nonemptys = univ
@[simp]
theorem Finset.singleton_ne_univ {α : Type u_1} [Fintype α] [Nontrivial α] (a : α) :
@[simp]
theorem Finset.univ_eq_empty {α : Type u_1} [Fintype α] [IsEmpty α] :
@[simp]
theorem Finset.univ_unique {α : Type u_1} [Fintype α] [Unique α] :
instance Finset.boundedOrder {α : Type u_1} [Fintype α] :
Equations
    @[simp]
    theorem Finset.top_eq_univ {α : Type u_1} [Fintype α] :
    @[simp]
    theorem Finset.univ_subset_iff {α : Type u_1} [Fintype α] {s : Finset α} :
    theorem Finset.codisjoint_left {α : Type u_1} {s t : Finset α} [Fintype α] :
    Codisjoint s t ∀ ⦃a : α⦄, asa t
    theorem Finset.codisjoint_right {α : Type u_1} {s t : Finset α} [Fintype α] :
    Codisjoint s t ∀ ⦃a : α⦄, ata s
    theorem Finset.sdiff_eq_inter_compl {α : Type u_1} [Fintype α] [DecidableEq α] (s t : Finset α) :
    s \ t = s t
    @[simp]
    theorem Finset.mem_compl {α : Type u_1} {s : Finset α} [Fintype α] [DecidableEq α] {a : α} :
    a s as
    theorem Finset.notMem_compl {α : Type u_1} {s : Finset α} [Fintype α] [DecidableEq α] {a : α} :
    as a s
    @[simp]
    theorem Finset.coe_compl {α : Type u_1} [Fintype α] [DecidableEq α] (s : Finset α) :
    s = (↑s)
    @[simp]
    theorem Finset.compl_subset_compl {α : Type u_1} {s t : Finset α} [Fintype α] [DecidableEq α] :
    s t t s
    @[simp]
    theorem Finset.compl_ssubset_compl {α : Type u_1} {s t : Finset α} [Fintype α] [DecidableEq α] :
    s t t s
    theorem Finset.subset_compl_comm {α : Type u_1} {s t : Finset α} [Fintype α] [DecidableEq α] :
    s t t s
    @[simp]
    theorem Finset.subset_compl_singleton {α : Type u_1} {s : Finset α} [Fintype α] [DecidableEq α] {a : α} :
    s {a} as
    @[simp]
    theorem Finset.compl_univ {α : Type u_1} [Fintype α] [DecidableEq α] :
    @[simp]
    theorem Finset.compl_eq_empty_iff {α : Type u_1} [Fintype α] [DecidableEq α] (s : Finset α) :
    @[simp]
    theorem Finset.compl_eq_univ_iff {α : Type u_1} [Fintype α] [DecidableEq α] (s : Finset α) :
    @[simp]
    theorem Finset.union_compl {α : Type u_1} [Fintype α] [DecidableEq α] (s : Finset α) :
    @[simp]
    theorem Finset.inter_compl {α : Type u_1} [Fintype α] [DecidableEq α] (s : Finset α) :
    @[simp]
    theorem Finset.compl_union {α : Type u_1} [Fintype α] [DecidableEq α] (s t : Finset α) :
    (s t) = s t
    @[simp]
    theorem Finset.compl_inter {α : Type u_1} [Fintype α] [DecidableEq α] (s t : Finset α) :
    (s t) = s t
    @[simp]
    theorem Finset.compl_erase {α : Type u_1} {s : Finset α} [Fintype α] [DecidableEq α] {a : α} :
    (s.erase a) = insert a s
    @[simp]
    theorem Finset.compl_insert {α : Type u_1} {s : Finset α} [Fintype α] [DecidableEq α] {a : α} :
    (insert a s) = s.erase a
    theorem Finset.insert_compl_insert {α : Type u_1} {s : Finset α} [Fintype α] [DecidableEq α] {a : α} (ha : as) :
    @[simp]
    theorem Finset.insert_compl_self {α : Type u_1} [Fintype α] [DecidableEq α] (x : α) :
    @[simp]
    theorem Finset.compl_filter {α : Type u_1} [Fintype α] [DecidableEq α] (p : αProp) [DecidablePred p] [(x : α) → Decidable ¬p x] :
    (filter p univ) = {x : α | ¬p x}
    theorem Finset.insert_inj_on' {α : Type u_1} [Fintype α] [DecidableEq α] (s : Finset α) :
    Set.InjOn (fun (a : α) => insert a s) s
    theorem Finset.image_univ_of_surjective {α : Type u_1} {β : Type u_2} [Fintype α] [DecidableEq α] [Fintype β] {f : βα} (hf : Function.Surjective f) :
    @[simp]
    theorem Finset.image_univ_equiv {α : Type u_1} {β : Type u_2} [Fintype α] [DecidableEq α] [Fintype β] (f : β α) :
    image (⇑f) univ = univ
    @[simp]
    theorem Finset.univ_inter {α : Type u_1} [Fintype α] [DecidableEq α] (s : Finset α) :
    univ s = s
    @[simp]
    theorem Finset.inter_univ {α : Type u_1} [Fintype α] [DecidableEq α] (s : Finset α) :
    s univ = s
    @[simp]
    theorem Finset.inter_eq_univ {α : Type u_1} {s t : Finset α} [Fintype α] [DecidableEq α] :
    s t = univ s = univ t = univ
    theorem Finset.map_univ_of_surjective {α : Type u_1} {β : Type u_2} [Fintype α] [Fintype β] {f : β α} (hf : Function.Surjective f) :
    @[simp]
    theorem Finset.map_univ_equiv {α : Type u_1} {β : Type u_2} [Fintype α] [Fintype β] (f : β α) :
    @[simp]
    theorem Finset.univ_filter_exists {α : Type u_1} {β : Type u_2} [Fintype α] (f : αβ) [Fintype β] [DecidablePred fun (y : β) => ∃ (x : α), f x = y] [DecidableEq β] :
    {y : β | ∃ (x : α), f x = y} = image f univ
    theorem Finset.univ_filter_mem_range {α : Type u_1} {β : Type u_2} [Fintype α] (f : αβ) [Fintype β] [DecidablePred fun (y : β) => y Set.range f] [DecidableEq β] :
    {y : β | y Set.range f} = image f univ

    Note this is a special case of (Finset.image_preimage f univ _).symm.

    theorem Finset.coe_filter_univ {α : Type u_1} [Fintype α] (p : αProp) [DecidablePred p] :
    (filter p univ) = {x : α | p x}
    @[simp]
    theorem Finset.subtype_eq_univ {α : Type u_1} {s : Finset α} {p : αProp} [DecidablePred p] [Fintype { a : α // p a }] :
    Finset.subtype p s = univ ∀ ⦃a : α⦄, p aa s
    @[simp]
    theorem Finset.subtype_univ {α : Type u_1} [Fintype α] (p : αProp) [DecidablePred p] [Fintype { a : α // p a }] :
    theorem Finset.univ_val_map_subtype_restrict {α : Type u_1} {β : Type u_2} [Fintype α] (f : αβ) (p : αProp) [DecidablePred p] [Fintype { a : α // p a }] :
    @[simp]
    theorem Finset.filter_univ_mem {α : Type u_1} [Fintype α] [DecidableEq α] (s : Finset α) :
    {x : α | x s} = s
    instance Finset.decidableCodisjoint {α : Type u_1} {s t : Finset α} [Fintype α] [DecidableEq α] :
    Equations
      instance Finset.decidableIsCompl {α : Type u_1} {s t : Finset α} [Fintype α] [DecidableEq α] :
      Equations