Documentation

Mathlib.Data.Finset.Disjoint

Disjoint finite sets #

Main declarations #

Tags #

finite sets, finset

disjoint #

theorem Finset.disjoint_left {α : Type u_2} {s t : Finset α} :
Disjoint s t ↔ ∀ ⦃a : α⦄, a ∈ s → a ∉ t
theorem Disjoint.notMem_of_mem_left_finset {α : Type u_2} {s t : Finset α} :
Disjoint s t → ∀ ⦃a : α⦄, a ∈ s → a ∉ t

Alias of the forward direction of Finset.disjoint_left.

theorem Finset.disjoint_right {α : Type u_2} {s t : Finset α} :
Disjoint s t ↔ ∀ ⦃a : α⦄, a ∈ t → a ∉ s
theorem Disjoint.notMem_of_mem_right_finset {α : Type u_2} {s t : Finset α} :
Disjoint s t → ∀ ⦃a : α⦄, a ∈ t → a ∉ s

Alias of the forward direction of Finset.disjoint_right.

theorem Finset.disjoint_iff_ne {α : Type u_2} {s t : Finset α} :
Disjoint s t ↔ ∀ a ∈ s, ∀ b ∈ t, a ≠ b
@[simp]
theorem Finset.disjoint_val {α : Type u_2} {s t : Finset α} :
theorem Disjoint.forall_ne_finset {α : Type u_2} {s t : Finset α} {a b : α} (h : Disjoint s t) (ha : a ∈ s) (hb : b ∈ t) :
a ≠ b
theorem Finset.not_disjoint_iff {α : Type u_2} {s t : Finset α} :
¬Disjoint s t ↔ ∃ a ∈ s, a ∈ t
theorem Finset.disjoint_of_subset_left {α : Type u_2} {s t u : Finset α} (h : s ⊆ u) (d : Disjoint u t) :
theorem Finset.disjoint_of_subset_right {α : Type u_2} {s t u : Finset α} (h : t ⊆ u) (d : Disjoint s u) :
@[simp]
theorem Finset.disjoint_empty_left {α : Type u_2} (s : Finset α) :
@[simp]
theorem Finset.disjoint_empty_right {α : Type u_2} (s : Finset α) :
@[simp]
theorem Finset.disjoint_singleton_left {α : Type u_2} {s : Finset α} {a : α} :
Disjoint {a} s ↔ a ∉ s
@[simp]
theorem Finset.disjoint_singleton_right {α : Type u_2} {s : Finset α} {a : α} :
Disjoint s {a} ↔ a ∉ s
theorem Finset.disjoint_singleton {α : Type u_2} {a b : α} :
theorem Finset.disjoint_self_iff_empty {α : Type u_2} (s : Finset α) :
@[simp]
theorem Finset.disjoint_coe {α : Type u_2} {s t : Finset α} :
Disjoint ↑s ↑t ↔ Disjoint s t
@[simp]
theorem Finset.pairwiseDisjoint_coe {α : Type u_2} {ι : Type u_5} {s : Set ι} {f : ι → Finset α} :
(s.PairwiseDisjoint fun (i : ι) => ↑(f i)) ↔ s.PairwiseDisjoint f
@[simp]
theorem Finset.pairwiseDisjoint_singleton_iff_injOn {ι : Type u_1} {α : Type u_2} {s : Set ι} {f : ι → α} :
(s.PairwiseDisjoint fun (i : ι) => {f i}) ↔ Set.InjOn f s
@[implicit_reducible]
instance Finset.decidableDisjoint {α : Type u_2} [DecidableEq α] (U V : Finset α) :
Equations

disjoint union #

def Finset.disjUnion {α : Type u_2} (s t : Finset α) (h : Disjoint s t) :

disjUnion s t h is the set such that a ∈ disjUnion s t h iff a ∈ s or a ∈ t. It is the same as s ∪ t, but it does not require decidable equality on the type. The hypothesis ensures that the sets are disjoint.

Equations
Instances For
    @[simp]
    theorem Finset.disjUnion_val {α : Type u_2} (s t : Finset α) (h : Disjoint s t) :
    (s.disjUnion t h).val = s.val + t.val
    @[simp]
    theorem Finset.mem_disjUnion {α : Type u_5} {s t : Finset α} {h : Disjoint s t} {a : α} :
    a ∈ s.disjUnion t h ↔ a ∈ s ∨ a ∈ t
    @[simp]
    theorem Finset.coe_disjUnion {α : Type u_2} {s t : Finset α} (h : Disjoint s t) :
    ↑(s.disjUnion t h) = ↑s ∪ ↑t
    theorem Finset.disjUnion_comm {α : Type u_2} (s t : Finset α) (h : Disjoint s t) :
    s.disjUnion t h = t.disjUnion s ⋯
    @[simp]
    theorem Finset.disjUnion_inj_left {α : Type u_2} {s₁ s₂ t : Finset α} (h₁ : Disjoint s₁ t) (h₂ : Disjoint s₂ t) :
    s₁.disjUnion t h₁ = s₂.disjUnion t h₂ ↔ s₁ = s₂
    @[simp]
    theorem Finset.disjUnion_inj_right {α : Type u_2} {s t₁ t₂ : Finset α} (h₁ : Disjoint s t₁) (h₂ : Disjoint s t₂) :
    s.disjUnion t₁ h₁ = s.disjUnion t₂ h₂ ↔ t₁ = t₂
    @[simp]
    theorem Finset.empty_disjUnion {α : Type u_2} (t : Finset α) (h : Disjoint ∅ t := ⋯) :
    @[simp]
    theorem Finset.disjUnion_empty {α : Type u_2} (s : Finset α) (h : Disjoint s ∅ := ⋯) :
    theorem Finset.singleton_disjUnion {α : Type u_2} (a : α) (t : Finset α) (h : Disjoint {a} t) :
    {a}.disjUnion t h = cons a t ⋯
    theorem Finset.disjUnion_singleton {α : Type u_2} (s : Finset α) (a : α) (h : Disjoint s {a}) :
    s.disjUnion {a} h = cons a s ⋯

    insert #

    @[simp]
    theorem Finset.disjoint_insert_left {α : Type u_2} [DecidableEq α] {s t : Finset α} {a : α} :
    Disjoint (insert a s) t ↔ a ∉ t ∧ Disjoint s t
    @[simp]
    theorem Finset.disjoint_insert_right {α : Type u_2} [DecidableEq α] {s t : Finset α} {a : α} :
    Disjoint s (insert a t) ↔ a ∉ s ∧ Disjoint s t
    @[simp]
    theorem Multiset.disjoint_toFinset {α : Type u_2} [DecidableEq α] {m1 m2 : Multiset α} :