Documentation

Mathlib.Data.Finset.Sups

Set family operations #

This file defines a few binary operations on Finset α for use in set family combinatorics.

Main declarations #

Notation #

We define the following notation in scope FinsetFamily:

References #

[B. Bollobás, Combinatorics][bollobas1986]

@[instance_reducible]

s ⊻ t is the finset of elements of the form a ⊔ b where a ∈ s, b ∈ t.

Equations
Instances For
    @[simp]
    theorem Finset.mem_sups {α : Type u_2} [DecidableEq α] [SemilatticeSup α] {s t : Finset α} {c : α} :
    c ∈ s ⊻ t ↔ ∃ a ∈ s, ∃ b ∈ t, a ⊔ b = c
    @[simp]
    theorem Finset.coe_sups {α : Type u_2} [DecidableEq α] [SemilatticeSup α] (s t : Finset α) :
    ↑(s ⊻ t) = ↑s ⊻ ↑t
    theorem Finset.card_sups_le {α : Type u_2} [DecidableEq α] [SemilatticeSup α] (s t : Finset α) :
    (s ⊻ t).card ≤ s.card * t.card
    theorem Finset.card_sups_iff {α : Type u_2} [DecidableEq α] [SemilatticeSup α] (s t : Finset α) :
    (s ⊻ t).card = s.card * t.card ↔ Set.InjOn (fun (x : α × α) => x.1 ⊔ x.2) (↑s ×ˢ ↑t)
    theorem Finset.sup_mem_sups {α : Type u_2} [DecidableEq α] [SemilatticeSup α] {s t : Finset α} {a b : α} :
    a ∈ s → b ∈ t → a ⊔ b ∈ s ⊻ t
    theorem Finset.sups_subset {α : Type u_2} [DecidableEq α] [SemilatticeSup α] {s₁ s₂ t₁ t₂ : Finset α} :
    s₁ ⊆ s₂ → t₁ ⊆ t₂ → s₁ ⊻ t₁ ⊆ s₂ ⊻ t₂
    theorem Finset.sups_subset_left {α : Type u_2} [DecidableEq α] [SemilatticeSup α] {s t₁ t₂ : Finset α} :
    t₁ ⊆ t₂ → s ⊻ t₁ ⊆ s ⊻ t₂
    theorem Finset.sups_subset_right {α : Type u_2} [DecidableEq α] [SemilatticeSup α] {s₁ s₂ t : Finset α} :
    s₁ ⊆ s₂ → s₁ ⊻ t ⊆ s₂ ⊻ t
    theorem Finset.image_subset_sups_left {α : Type u_2} [DecidableEq α] [SemilatticeSup α] {s t : Finset α} {b : α} :
    b ∈ t → image (fun (x : α) => x ⊔ b) s ⊆ s ⊻ t
    theorem Finset.image_subset_sups_right {α : Type u_2} [DecidableEq α] [SemilatticeSup α] {s t : Finset α} {a : α} :
    a ∈ s → image (fun (x : α) => a ⊔ x) t ⊆ s ⊻ t
    theorem Finset.forall_sups_iff {α : Type u_2} [DecidableEq α] [SemilatticeSup α] {s t : Finset α} {p : α → Prop} :
    (∀ c ∈ s ⊻ t, p c) ↔ ∀ a ∈ s, ∀ b ∈ t, p (a ⊔ b)
    @[simp]
    theorem Finset.sups_subset_iff {α : Type u_2} [DecidableEq α] [SemilatticeSup α] {s t u : Finset α} :
    s ⊻ t ⊆ u ↔ ∀ a ∈ s, ∀ b ∈ t, a ⊔ b ∈ u
    @[simp]
    theorem Finset.sups_nonempty {α : Type u_2} [DecidableEq α] [SemilatticeSup α] {s t : Finset α} :
    theorem Finset.Nonempty.sups {α : Type u_2} [DecidableEq α] [SemilatticeSup α] {s t : Finset α} :
    s.Nonempty → t.Nonempty → (s ⊻ t).Nonempty
    theorem Finset.Nonempty.of_sups_left {α : Type u_2} [DecidableEq α] [SemilatticeSup α] {s t : Finset α} :
    (s ⊻ t).Nonempty → s.Nonempty
    theorem Finset.Nonempty.of_sups_right {α : Type u_2} [DecidableEq α] [SemilatticeSup α] {s t : Finset α} :
    (s ⊻ t).Nonempty → t.Nonempty
    @[simp]
    theorem Finset.empty_sups {α : Type u_2} [DecidableEq α] [SemilatticeSup α] {t : Finset α} :
    @[simp]
    theorem Finset.sups_empty {α : Type u_2} [DecidableEq α] [SemilatticeSup α] {s : Finset α} :
    @[simp]
    theorem Finset.sups_eq_empty {α : Type u_2} [DecidableEq α] [SemilatticeSup α] {s t : Finset α} :
    s ⊻ t = ∅ ↔ s = ∅ ∨ t = ∅
    @[simp]
    theorem Finset.singleton_sups {α : Type u_2} [DecidableEq α] [SemilatticeSup α] {t : Finset α} {a : α} :
    {a} ⊻ t = image (fun (x : α) => a ⊔ x) t
    @[simp]
    theorem Finset.sups_singleton {α : Type u_2} [DecidableEq α] [SemilatticeSup α] {s : Finset α} {b : α} :
    s ⊻ {b} = image (fun (x : α) => x ⊔ b) s
    theorem Finset.singleton_sups_singleton {α : Type u_2} [DecidableEq α] [SemilatticeSup α] {a b : α} :
    {a} ⊻ {b} = {a ⊔ b}
    theorem Finset.sups_union_left {α : Type u_2} [DecidableEq α] [SemilatticeSup α] {s₁ s₂ t : Finset α} :
    (s₁ ∪ s₂) ⊻ t = s₁ ⊻ t ∪ s₂ ⊻ t
    theorem Finset.sups_union_right {α : Type u_2} [DecidableEq α] [SemilatticeSup α] {s t₁ t₂ : Finset α} :
    s ⊻ (t₁ ∪ t₂) = s ⊻ t₁ ∪ s ⊻ t₂
    theorem Finset.sups_inter_subset_left {α : Type u_2} [DecidableEq α] [SemilatticeSup α] {s₁ s₂ t : Finset α} :
    (s₁ ∩ s₂) ⊻ t ⊆ s₁ ⊻ t ∩ s₂ ⊻ t
    theorem Finset.sups_inter_subset_right {α : Type u_2} [DecidableEq α] [SemilatticeSup α] {s t₁ t₂ : Finset α} :
    s ⊻ (t₁ ∩ t₂) ⊆ s ⊻ t₁ ∩ s ⊻ t₂
    theorem Finset.subset_sups {α : Type u_2} [DecidableEq α] [SemilatticeSup α] {u : Finset α} {s t : Set α} :
    ↑u ⊆ s ⊻ t → ∃ (s' : Finset α) (t' : Finset α), ↑s' ⊆ s ∧ ↑t' ⊆ t ∧ u ⊆ s' ⊻ t'
    theorem Finset.image_sups {F : Type u_1} {α : Type u_2} {β : Type u_3} [DecidableEq α] [DecidableEq β] [SemilatticeSup α] [SemilatticeSup β] [FunLike F α β] [SupHomClass F α β] (f : F) (s t : Finset α) :
    image (⇑f) (s ⊻ t) = image (⇑f) s ⊻ image (⇑f) t
    theorem Finset.map_sups {F : Type u_1} {α : Type u_2} {β : Type u_3} [DecidableEq α] [DecidableEq β] [SemilatticeSup α] [SemilatticeSup β] [FunLike F α β] [SupHomClass F α β] (f : F) (hf : Function.Injective ⇑f) (s t : Finset α) :
    map { toFun := ⇑f, inj' := hf } (s ⊻ t) = map { toFun := ⇑f, inj' := hf } s ⊻ map { toFun := ⇑f, inj' := hf } t
    theorem Finset.subset_sups_self {α : Type u_2} [DecidableEq α] [SemilatticeSup α] {s : Finset α} :
    s ⊆ s ⊻ s
    theorem Finset.sups_subset_self {α : Type u_2} [DecidableEq α] [SemilatticeSup α] {s : Finset α} :
    s ⊻ s ⊆ s ↔ SupClosed ↑s
    @[simp]
    theorem Finset.sups_eq_self {α : Type u_2} [DecidableEq α] [SemilatticeSup α] {s : Finset α} :
    s ⊻ s = s ↔ SupClosed ↑s
    theorem Finset.filter_sups_le {α : Type u_2} [DecidableEq α] [SemilatticeSup α] [DecidableLE α] (s t : Finset α) (a : α) :
    {b ∈ s ⊻ t | b ≤ a} = {b ∈ s | b ≤ a} ⊻ {b ∈ t | b ≤ a}
    theorem Finset.biUnion_image_sup_left {α : Type u_2} [DecidableEq α] [SemilatticeSup α] (s t : Finset α) :
    (s.biUnion fun (a : α) => image (fun (x : α) => a ⊔ x) t) = s ⊻ t
    theorem Finset.biUnion_image_sup_right {α : Type u_2} [DecidableEq α] [SemilatticeSup α] (s t : Finset α) :
    (t.biUnion fun (b : α) => image (fun (x : α) => x ⊔ b) s) = s ⊻ t
    theorem Finset.image_sup_product {α : Type u_2} [DecidableEq α] [SemilatticeSup α] (s t : Finset α) :
    image (Function.uncurry fun (x1 x2 : α) => x1 ⊔ x2) (s ×ˢ t) = s ⊻ t
    theorem Finset.sups_assoc {α : Type u_2} [DecidableEq α] [SemilatticeSup α] (s t u : Finset α) :
    s ⊻ t ⊻ u = s ⊻ (t ⊻ u)
    theorem Finset.sups_comm {α : Type u_2} [DecidableEq α] [SemilatticeSup α] (s t : Finset α) :
    s ⊻ t = t ⊻ s
    theorem Finset.sups_left_comm {α : Type u_2} [DecidableEq α] [SemilatticeSup α] (s t u : Finset α) :
    s ⊻ (t ⊻ u) = t ⊻ (s ⊻ u)
    theorem Finset.sups_right_comm {α : Type u_2} [DecidableEq α] [SemilatticeSup α] (s t u : Finset α) :
    s ⊻ t ⊻ u = s ⊻ u ⊻ t
    theorem Finset.sups_sups_sups_comm {α : Type u_2} [DecidableEq α] [SemilatticeSup α] (s t u v : Finset α) :
    s ⊻ t ⊻ (u ⊻ v) = s ⊻ u ⊻ (t ⊻ v)
    @[instance_reducible]

    s ⊼ t is the finset of elements of the form a ⊓ b where a ∈ s, b ∈ t.

    Equations
    Instances For
      @[simp]
      theorem Finset.mem_infs {α : Type u_2} [DecidableEq α] [SemilatticeInf α] {s t : Finset α} {c : α} :
      c ∈ s ⊼ t ↔ ∃ a ∈ s, ∃ b ∈ t, a ⊓ b = c
      @[simp]
      theorem Finset.coe_infs {α : Type u_2} [DecidableEq α] [SemilatticeInf α] (s t : Finset α) :
      ↑(s ⊼ t) = ↑s ⊼ ↑t
      theorem Finset.card_infs_le {α : Type u_2} [DecidableEq α] [SemilatticeInf α] (s t : Finset α) :
      (s ⊼ t).card ≤ s.card * t.card
      theorem Finset.card_infs_iff {α : Type u_2} [DecidableEq α] [SemilatticeInf α] (s t : Finset α) :
      (s ⊼ t).card = s.card * t.card ↔ Set.InjOn (fun (x : α × α) => x.1 ⊓ x.2) (↑s ×ˢ ↑t)
      theorem Finset.inf_mem_infs {α : Type u_2} [DecidableEq α] [SemilatticeInf α] {s t : Finset α} {a b : α} :
      a ∈ s → b ∈ t → a ⊓ b ∈ s ⊼ t
      theorem Finset.infs_subset {α : Type u_2} [DecidableEq α] [SemilatticeInf α] {s₁ s₂ t₁ t₂ : Finset α} :
      s₁ ⊆ s₂ → t₁ ⊆ t₂ → s₁ ⊼ t₁ ⊆ s₂ ⊼ t₂
      theorem Finset.infs_subset_left {α : Type u_2} [DecidableEq α] [SemilatticeInf α] {s t₁ t₂ : Finset α} :
      t₁ ⊆ t₂ → s ⊼ t₁ ⊆ s ⊼ t₂
      theorem Finset.infs_subset_right {α : Type u_2} [DecidableEq α] [SemilatticeInf α] {s₁ s₂ t : Finset α} :
      s₁ ⊆ s₂ → s₁ ⊼ t ⊆ s₂ ⊼ t
      theorem Finset.image_subset_infs_left {α : Type u_2} [DecidableEq α] [SemilatticeInf α] {s t : Finset α} {b : α} :
      b ∈ t → image (fun (x : α) => x ⊓ b) s ⊆ s ⊼ t
      theorem Finset.image_subset_infs_right {α : Type u_2} [DecidableEq α] [SemilatticeInf α] {s t : Finset α} {a : α} :
      a ∈ s → image (fun (x : α) => a ⊓ x) t ⊆ s ⊼ t
      theorem Finset.forall_infs_iff {α : Type u_2} [DecidableEq α] [SemilatticeInf α] {s t : Finset α} {p : α → Prop} :
      (∀ c ∈ s ⊼ t, p c) ↔ ∀ a ∈ s, ∀ b ∈ t, p (a ⊓ b)
      @[simp]
      theorem Finset.infs_subset_iff {α : Type u_2} [DecidableEq α] [SemilatticeInf α] {s t u : Finset α} :
      s ⊼ t ⊆ u ↔ ∀ a ∈ s, ∀ b ∈ t, a ⊓ b ∈ u
      @[simp]
      theorem Finset.infs_nonempty {α : Type u_2} [DecidableEq α] [SemilatticeInf α] {s t : Finset α} :
      theorem Finset.Nonempty.infs {α : Type u_2} [DecidableEq α] [SemilatticeInf α] {s t : Finset α} :
      s.Nonempty → t.Nonempty → (s ⊼ t).Nonempty
      theorem Finset.Nonempty.of_infs_left {α : Type u_2} [DecidableEq α] [SemilatticeInf α] {s t : Finset α} :
      (s ⊼ t).Nonempty → s.Nonempty
      theorem Finset.Nonempty.of_infs_right {α : Type u_2} [DecidableEq α] [SemilatticeInf α] {s t : Finset α} :
      (s ⊼ t).Nonempty → t.Nonempty
      @[simp]
      theorem Finset.empty_infs {α : Type u_2} [DecidableEq α] [SemilatticeInf α] {t : Finset α} :
      @[simp]
      theorem Finset.infs_empty {α : Type u_2} [DecidableEq α] [SemilatticeInf α] {s : Finset α} :
      @[simp]
      theorem Finset.infs_eq_empty {α : Type u_2} [DecidableEq α] [SemilatticeInf α] {s t : Finset α} :
      s ⊼ t = ∅ ↔ s = ∅ ∨ t = ∅
      @[simp]
      theorem Finset.singleton_infs {α : Type u_2} [DecidableEq α] [SemilatticeInf α] {t : Finset α} {a : α} :
      {a} ⊼ t = image (fun (x : α) => a ⊓ x) t
      @[simp]
      theorem Finset.infs_singleton {α : Type u_2} [DecidableEq α] [SemilatticeInf α] {s : Finset α} {b : α} :
      s ⊼ {b} = image (fun (x : α) => x ⊓ b) s
      theorem Finset.singleton_infs_singleton {α : Type u_2} [DecidableEq α] [SemilatticeInf α] {a b : α} :
      {a} ⊼ {b} = {a ⊓ b}
      theorem Finset.infs_union_left {α : Type u_2} [DecidableEq α] [SemilatticeInf α] {s₁ s₂ t : Finset α} :
      (s₁ ∪ s₂) ⊼ t = s₁ ⊼ t ∪ s₂ ⊼ t
      theorem Finset.infs_union_right {α : Type u_2} [DecidableEq α] [SemilatticeInf α] {s t₁ t₂ : Finset α} :
      s ⊼ (t₁ ∪ t₂) = s ⊼ t₁ ∪ s ⊼ t₂
      theorem Finset.infs_inter_subset_left {α : Type u_2} [DecidableEq α] [SemilatticeInf α] {s₁ s₂ t : Finset α} :
      (s₁ ∩ s₂) ⊼ t ⊆ s₁ ⊼ t ∩ s₂ ⊼ t
      theorem Finset.infs_inter_subset_right {α : Type u_2} [DecidableEq α] [SemilatticeInf α] {s t₁ t₂ : Finset α} :
      s ⊼ (t₁ ∩ t₂) ⊆ s ⊼ t₁ ∩ s ⊼ t₂
      theorem Finset.subset_infs {α : Type u_2} [DecidableEq α] [SemilatticeInf α] {u : Finset α} {s t : Set α} :
      ↑u ⊆ s ⊼ t → ∃ (s' : Finset α) (t' : Finset α), ↑s' ⊆ s ∧ ↑t' ⊆ t ∧ u ⊆ s' ⊼ t'
      theorem Finset.image_infs {F : Type u_1} {α : Type u_2} {β : Type u_3} [DecidableEq α] [DecidableEq β] [SemilatticeInf α] [SemilatticeInf β] [FunLike F α β] [InfHomClass F α β] (f : F) (s t : Finset α) :
      image (⇑f) (s ⊼ t) = image (⇑f) s ⊼ image (⇑f) t
      theorem Finset.map_infs {F : Type u_1} {α : Type u_2} {β : Type u_3} [DecidableEq α] [DecidableEq β] [SemilatticeInf α] [SemilatticeInf β] [FunLike F α β] [InfHomClass F α β] (f : F) (hf : Function.Injective ⇑f) (s t : Finset α) :
      map { toFun := ⇑f, inj' := hf } (s ⊼ t) = map { toFun := ⇑f, inj' := hf } s ⊼ map { toFun := ⇑f, inj' := hf } t
      theorem Finset.subset_infs_self {α : Type u_2} [DecidableEq α] [SemilatticeInf α] {s : Finset α} :
      s ⊆ s ⊼ s
      theorem Finset.infs_self_subset {α : Type u_2} [DecidableEq α] [SemilatticeInf α] {s : Finset α} :
      s ⊼ s ⊆ s ↔ InfClosed ↑s
      @[simp]
      theorem Finset.infs_self {α : Type u_2} [DecidableEq α] [SemilatticeInf α] {s : Finset α} :
      s ⊼ s = s ↔ InfClosed ↑s
      theorem Finset.filter_infs_le {α : Type u_2} [DecidableEq α] [SemilatticeInf α] [DecidableLE α] (s t : Finset α) (a : α) :
      {b ∈ s ⊼ t | a ≤ b} = {b ∈ s | a ≤ b} ⊼ {b ∈ t | a ≤ b}
      theorem Finset.biUnion_image_inf_left {α : Type u_2} [DecidableEq α] [SemilatticeInf α] (s t : Finset α) :
      (s.biUnion fun (a : α) => image (fun (x : α) => a ⊓ x) t) = s ⊼ t
      theorem Finset.biUnion_image_inf_right {α : Type u_2} [DecidableEq α] [SemilatticeInf α] (s t : Finset α) :
      (t.biUnion fun (b : α) => image (fun (x : α) => x ⊓ b) s) = s ⊼ t
      theorem Finset.image_inf_product {α : Type u_2} [DecidableEq α] [SemilatticeInf α] (s t : Finset α) :
      image (Function.uncurry fun (x1 x2 : α) => x1 ⊓ x2) (s ×ˢ t) = s ⊼ t
      theorem Finset.infs_assoc {α : Type u_2} [DecidableEq α] [SemilatticeInf α] (s t u : Finset α) :
      s ⊼ t ⊼ u = s ⊼ (t ⊼ u)
      theorem Finset.infs_comm {α : Type u_2} [DecidableEq α] [SemilatticeInf α] (s t : Finset α) :
      s ⊼ t = t ⊼ s
      theorem Finset.infs_left_comm {α : Type u_2} [DecidableEq α] [SemilatticeInf α] (s t u : Finset α) :
      s ⊼ (t ⊼ u) = t ⊼ (s ⊼ u)
      theorem Finset.infs_right_comm {α : Type u_2} [DecidableEq α] [SemilatticeInf α] (s t u : Finset α) :
      s ⊼ t ⊼ u = s ⊼ u ⊼ t
      theorem Finset.infs_infs_infs_comm {α : Type u_2} [DecidableEq α] [SemilatticeInf α] (s t u v : Finset α) :
      s ⊼ t ⊼ (u ⊼ v) = s ⊼ u ⊼ (t ⊼ v)
      theorem Finset.sups_infs_subset_left {α : Type u_2} [DecidableEq α] [DistribLattice α] (s t u : Finset α) :
      s ⊻ t ⊼ u ⊆ (s ⊻ t) ⊼ (s ⊻ u)
      theorem Finset.sups_infs_subset_right {α : Type u_2} [DecidableEq α] [DistribLattice α] (s t u : Finset α) :
      t ⊼ u ⊻ s ⊆ (t ⊻ s) ⊼ (u ⊻ s)
      theorem Finset.infs_sups_subset_left {α : Type u_2} [DecidableEq α] [DistribLattice α] (s t u : Finset α) :
      s ⊼ (t ⊻ u) ⊆ s ⊼ t ⊻ s ⊼ u
      theorem Finset.infs_sups_subset_right {α : Type u_2} [DecidableEq α] [DistribLattice α] (s t u : Finset α) :
      (t ⊻ u) ⊼ s ⊆ t ⊼ s ⊻ u ⊼ s
      @[simp]
      theorem Finset.powerset_union {α : Type u_2} [DecidableEq α] (s t : Finset α) :
      @[simp]
      theorem Finset.powerset_inter {α : Type u_2} [DecidableEq α] (s t : Finset α) :
      theorem Finset.union_mem_sups {α : Type u_2} [DecidableEq α] {𝒜 ℬ : Finset (Finset α)} {s t : Finset α} :
      s ∈ 𝒜 → t ∈ ℬ → s ∪ t ∈ 𝒜 ⊻ ℬ
      theorem Finset.inter_mem_infs {α : Type u_2} [DecidableEq α] {𝒜 ℬ : Finset (Finset α)} {s t : Finset α} :
      s ∈ 𝒜 → t ∈ ℬ → s ∩ t ∈ 𝒜 ⊼ ℬ

      The finset of elements of the form a ⊔ b where a ∈ s, b ∈ t and a and b are disjoint.

      Equations
      Instances For

        The finset of elements of the form a ⊔ b where a ∈ s, b ∈ t and a and b are disjoint.

        Equations
        Instances For
          @[simp]
          theorem Finset.mem_disjSups {α : Type u_2} [DecidableEq α] [SemilatticeSup α] [OrderBot α] [DecidableRel Disjoint] {s t : Finset α} {c : α} :
          c ∈ s.disjSups t ↔ ∃ a ∈ s, ∃ b ∈ t, Disjoint a b ∧ a ⊔ b = c
          theorem Finset.disjSups_subset {α : Type u_2} [DecidableEq α] [SemilatticeSup α] [OrderBot α] [DecidableRel Disjoint] {s₁ s₂ t₁ t₂ : Finset α} (hs : s₁ ⊆ s₂) (ht : t₁ ⊆ t₂) :
          s₁.disjSups t₁ ⊆ s₂.disjSups t₂
          theorem Finset.disjSups_subset_left {α : Type u_2} [DecidableEq α] [SemilatticeSup α] [OrderBot α] [DecidableRel Disjoint] {s t₁ t₂ : Finset α} (ht : t₁ ⊆ t₂) :
          s.disjSups t₁ ⊆ s.disjSups t₂
          theorem Finset.disjSups_subset_right {α : Type u_2} [DecidableEq α] [SemilatticeSup α] [OrderBot α] [DecidableRel Disjoint] {s₁ s₂ t : Finset α} (hs : s₁ ⊆ s₂) :
          s₁.disjSups t ⊆ s₂.disjSups t
          theorem Finset.forall_disjSups_iff {α : Type u_2} [DecidableEq α] [SemilatticeSup α] [OrderBot α] [DecidableRel Disjoint] {s t : Finset α} {p : α → Prop} :
          (∀ c ∈ s.disjSups t, p c) ↔ ∀ a ∈ s, ∀ b ∈ t, Disjoint a b → p (a ⊔ b)
          @[simp]
          theorem Finset.disjSups_subset_iff {α : Type u_2} [DecidableEq α] [SemilatticeSup α] [OrderBot α] [DecidableRel Disjoint] {s t u : Finset α} :
          s.disjSups t ⊆ u ↔ ∀ a ∈ s, ∀ b ∈ t, Disjoint a b → a ⊔ b ∈ u
          theorem Finset.disjSups_union_left {α : Type u_2} [DecidableEq α] [SemilatticeSup α] [OrderBot α] [DecidableRel Disjoint] {s₁ s₂ t : Finset α} :
          (s₁ ∪ s₂).disjSups t = s₁.disjSups t ∪ s₂.disjSups t
          theorem Finset.disjSups_union_right {α : Type u_2} [DecidableEq α] [SemilatticeSup α] [OrderBot α] [DecidableRel Disjoint] {s t₁ t₂ : Finset α} :
          s.disjSups (t₁ ∪ t₂) = s.disjSups t₁ ∪ s.disjSups t₂
          theorem Finset.disjSups_inter_subset_left {α : Type u_2} [DecidableEq α] [SemilatticeSup α] [OrderBot α] [DecidableRel Disjoint] {s₁ s₂ t : Finset α} :
          (s₁ ∩ s₂).disjSups t ⊆ s₁.disjSups t ∩ s₂.disjSups t
          theorem Finset.disjSups_inter_subset_right {α : Type u_2} [DecidableEq α] [SemilatticeSup α] [OrderBot α] [DecidableRel Disjoint] {s t₁ t₂ : Finset α} :
          s.disjSups (t₁ ∩ t₂) ⊆ s.disjSups t₁ ∩ s.disjSups t₂
          def Finset.diffs {α : Type u_2} [DecidableEq α] [GeneralizedBooleanAlgebra α] :
          Finset α → Finset α → Finset α

          s \\ t is the finset of elements of the form a \ b where a ∈ s, b ∈ t.

          Equations
          Instances For

            s \\ t is the finset of elements of the form a \ b where a ∈ s, b ∈ t.

            Equations
            Instances For
              @[simp]
              theorem Finset.mem_diffs {α : Type u_2} [DecidableEq α] [GeneralizedBooleanAlgebra α] {s t : Finset α} {c : α} :
              c ∈ s.diffs t ↔ ∃ a ∈ s, ∃ b ∈ t, a \ b = c
              @[simp]
              theorem Finset.coe_diffs {α : Type u_2} [DecidableEq α] [GeneralizedBooleanAlgebra α] (s t : Finset α) :
              ↑(s.diffs t) = Set.image2 (fun (x1 x2 : α) => x1 \ x2) ↑s ↑t
              theorem Finset.card_diffs_iff {α : Type u_2} [DecidableEq α] [GeneralizedBooleanAlgebra α] (s t : Finset α) :
              (s.diffs t).card = s.card * t.card ↔ Set.InjOn (fun (x : α × α) => x.1 \ x.2) (↑s ×ˢ ↑t)
              theorem Finset.sdiff_mem_diffs {α : Type u_2} [DecidableEq α] [GeneralizedBooleanAlgebra α] {s t : Finset α} {a b : α} :
              a ∈ s → b ∈ t → a \ b ∈ s.diffs t
              theorem Finset.diffs_subset {α : Type u_2} [DecidableEq α] [GeneralizedBooleanAlgebra α] {s₁ s₂ t₁ t₂ : Finset α} :
              s₁ ⊆ s₂ → t₁ ⊆ t₂ → s₁.diffs t₁ ⊆ s₂.diffs t₂
              theorem Finset.diffs_subset_left {α : Type u_2} [DecidableEq α] [GeneralizedBooleanAlgebra α] {s t₁ t₂ : Finset α} :
              t₁ ⊆ t₂ → s.diffs t₁ ⊆ s.diffs t₂
              theorem Finset.diffs_subset_right {α : Type u_2} [DecidableEq α] [GeneralizedBooleanAlgebra α] {s₁ s₂ t : Finset α} :
              s₁ ⊆ s₂ → s₁.diffs t ⊆ s₂.diffs t
              theorem Finset.image_subset_diffs_left {α : Type u_2} [DecidableEq α] [GeneralizedBooleanAlgebra α] {s t : Finset α} {b : α} :
              b ∈ t → image (fun (x : α) => x \ b) s ⊆ s.diffs t
              theorem Finset.image_subset_diffs_right {α : Type u_2} [DecidableEq α] [GeneralizedBooleanAlgebra α] {s t : Finset α} {a : α} :
              a ∈ s → image (fun (x : α) => a \ x) t ⊆ s.diffs t
              theorem Finset.forall_mem_diffs {α : Type u_2} [DecidableEq α] [GeneralizedBooleanAlgebra α] {s t : Finset α} {p : α → Prop} :
              (∀ c ∈ s.diffs t, p c) ↔ ∀ a ∈ s, ∀ b ∈ t, p (a \ b)
              @[simp]
              theorem Finset.diffs_subset_iff {α : Type u_2} [DecidableEq α] [GeneralizedBooleanAlgebra α] {s t u : Finset α} :
              s.diffs t ⊆ u ↔ ∀ a ∈ s, ∀ b ∈ t, a \ b ∈ u
              @[simp]
              @[simp]
              @[simp]
              theorem Finset.diffs_eq_empty {α : Type u_2} [DecidableEq α] [GeneralizedBooleanAlgebra α] {s t : Finset α} :
              s.diffs t = ∅ ↔ s = ∅ ∨ t = ∅
              @[deprecated Finset.empty_sdiffs (since := "2026-06-03")]

              Alias of Finset.empty_sdiffs.

              @[simp]
              theorem Finset.singleton_diffs {α : Type u_2} [DecidableEq α] [GeneralizedBooleanAlgebra α] {t : Finset α} {a : α} :
              {a}.diffs t = image (fun (x : α) => a \ x) t
              @[simp]
              theorem Finset.diffs_singleton {α : Type u_2} [DecidableEq α] [GeneralizedBooleanAlgebra α] {s : Finset α} {b : α} :
              s.diffs {b} = image (fun (x : α) => x \ b) s
              theorem Finset.diffs_union_left {α : Type u_2} [DecidableEq α] [GeneralizedBooleanAlgebra α] {s₁ s₂ t : Finset α} :
              (s₁ ∪ s₂).diffs t = s₁.diffs t ∪ s₂.diffs t
              theorem Finset.diffs_union_right {α : Type u_2} [DecidableEq α] [GeneralizedBooleanAlgebra α] {s t₁ t₂ : Finset α} :
              s.diffs (t₁ ∪ t₂) = s.diffs t₁ ∪ s.diffs t₂
              theorem Finset.diffs_inter_subset_left {α : Type u_2} [DecidableEq α] [GeneralizedBooleanAlgebra α] {s₁ s₂ t : Finset α} :
              (s₁ ∩ s₂).diffs t ⊆ s₁.diffs t ∩ s₂.diffs t
              theorem Finset.diffs_inter_subset_right {α : Type u_2} [DecidableEq α] [GeneralizedBooleanAlgebra α] {s t₁ t₂ : Finset α} :
              s.diffs (t₁ ∩ t₂) ⊆ s.diffs t₁ ∩ s.diffs t₂
              theorem Finset.subset_diffs {α : Type u_2} [DecidableEq α] [GeneralizedBooleanAlgebra α] {u : Finset α} {s t : Set α} :
              ↑u ⊆ Set.image2 (fun (x1 x2 : α) => x1 \ x2) s t → ∃ (s' : Finset α) (t' : Finset α), ↑s' ⊆ s ∧ ↑t' ⊆ t ∧ u ⊆ s'.diffs t'
              theorem Finset.biUnion_image_sdiff_left {α : Type u_2} [DecidableEq α] [GeneralizedBooleanAlgebra α] (s t : Finset α) :
              (s.biUnion fun (a : α) => image (fun (x : α) => a \ x) t) = s.diffs t
              theorem Finset.biUnion_image_sdiff_right {α : Type u_2} [DecidableEq α] [GeneralizedBooleanAlgebra α] (s t : Finset α) :
              (t.biUnion fun (b : α) => image (fun (x : α) => x \ b) s) = s.diffs t
              theorem Finset.image_sdiff_product {α : Type u_2} [DecidableEq α] [GeneralizedBooleanAlgebra α] (s t : Finset α) :
              image (Function.uncurry fun (x1 x2 : α) => x1 \ x2) (s ×ˢ t) = s.diffs t
              theorem Finset.diffs_right_comm {α : Type u_2} [DecidableEq α] [GeneralizedBooleanAlgebra α] (s t u : Finset α) :
              (s.diffs t).diffs u = (s.diffs u).diffs t
              def Finset.compls {α : Type u_2} [BooleanAlgebra α] :
              Finset α → Finset α

              sᶜˢ is the finset of elements of the form aᶜ where a ∈ s.

              Equations
              Instances For

                sᶜˢ is the finset of elements of the form aᶜ where a ∈ s.

                Equations
                Instances For
                  @[simp]
                  theorem Finset.mem_compls {α : Type u_2} [BooleanAlgebra α] {s : Finset α} {a : α} :
                  @[simp]
                  theorem Finset.image_compl {α : Type u_2} [BooleanAlgebra α] (s : Finset α) [DecidableEq α] :
                  @[simp]
                  theorem Finset.coe_compls {α : Type u_2} [BooleanAlgebra α] (s : Finset α) :
                  ↑s.compls = compl '' ↑s
                  @[simp]
                  theorem Finset.card_compls {α : Type u_2} [BooleanAlgebra α] (s : Finset α) :
                  theorem Finset.compl_mem_compls {α : Type u_2} [BooleanAlgebra α] {s : Finset α} {a : α} :
                  a ∈ s → aᶜ ∈ s.compls
                  @[simp]
                  theorem Finset.compls_subset_compls {α : Type u_2} [BooleanAlgebra α] {s₁ s₂ : Finset α} :
                  s₁.compls ⊆ s₂.compls ↔ s₁ ⊆ s₂
                  theorem Finset.forall_mem_compls {α : Type u_2} [BooleanAlgebra α] {s : Finset α} {p : α → Prop} :
                  (∀ a ∈ s.compls, p a) ↔ ∀ a ∈ s, p aᶜ
                  theorem Finset.exists_compls_iff {α : Type u_2} [BooleanAlgebra α] {s : Finset α} {p : α → Prop} :
                  (∃ a ∈ s.compls, p a) ↔ ∃ a ∈ s, p aᶜ
                  @[simp]
                  theorem Finset.compls_compls {α : Type u_2} [BooleanAlgebra α] (s : Finset α) :
                  theorem Finset.compls_subset_iff {α : Type u_2} [BooleanAlgebra α] {s t : Finset α} :
                  s.compls ⊆ t ↔ s ⊆ t.compls
                  @[simp]
                  theorem Finset.Nonempty.compls {α : Type u_2} [BooleanAlgebra α] {s : Finset α} :

                  Alias of the reverse direction of Finset.compls_nonempty.

                  theorem Finset.Nonempty.of_compls {α : Type u_2} [BooleanAlgebra α] {s : Finset α} :

                  Alias of the forward direction of Finset.compls_nonempty.

                  @[simp]
                  @[simp]
                  theorem Finset.compls_eq_empty {α : Type u_2} [BooleanAlgebra α] {s : Finset α} :
                  @[simp]
                  theorem Finset.compls_singleton {α : Type u_2} [BooleanAlgebra α] (a : α) :
                  @[simp]
                  @[simp]
                  theorem Finset.compls_union {α : Type u_2} [BooleanAlgebra α] [DecidableEq α] (s t : Finset α) :
                  @[simp]
                  theorem Finset.compls_inter {α : Type u_2} [BooleanAlgebra α] [DecidableEq α] (s t : Finset α) :
                  @[simp]
                  theorem Finset.compls_infs {α : Type u_2} [BooleanAlgebra α] [DecidableEq α] (s t : Finset α) :
                  @[simp]
                  theorem Finset.compls_sups {α : Type u_2} [BooleanAlgebra α] [DecidableEq α] (s t : Finset α) :
                  @[simp]
                  theorem Finset.infs_compls_eq_diffs {α : Type u_2} [BooleanAlgebra α] [DecidableEq α] (s t : Finset α) :
                  s ⊼ t.compls = s.diffs t
                  @[simp]
                  theorem Finset.compls_infs_eq_diffs {α : Type u_2} [BooleanAlgebra α] [DecidableEq α] (s t : Finset α) :
                  s.compls ⊼ t = t.diffs s
                  @[simp]
                  theorem Finset.diffs_compls_eq_infs {α : Type u_2} [BooleanAlgebra α] [DecidableEq α] (s t : Finset α) :
                  s.diffs t.compls = s ⊼ t
                  theorem Set.Sized.compls {α : Type u_4} [DecidableEq α] [Fintype α] {𝒜 : Finset (Finset α)} {n : ℕ} (h𝒜 : Sized n ↑𝒜) :
                  Sized (Fintype.card α - n) ↑𝒜.compls
                  theorem Finset.sized_compls {α : Type u_4} [DecidableEq α] [Fintype α] {𝒜 : Finset (Finset α)} {n : ℕ} (hn : n ≤ Fintype.card α) :
                  Set.Sized n ↑𝒜.compls ↔ Set.Sized (Fintype.card α - n) ↑𝒜