Disjoint sum of finsets #
This file defines the disjoint sum of two finsets as Finset (α ⊕ β). Beware not to confuse with
the Finset.sum operation which computes the additive sum.
Main declarations #
Finset.disjSum:s.disjSum tis the disjoint sum ofsandt.Finset.toLeft: Given a finset of elementsα ⊕ β, extracts all the elements of the formα.Finset.toRight: Given a finset of elementsα ⊕ β, extracts all the elements of the formβ.
Disjoint sum of finsets.
Instances For
@[simp]
theorem
Finset.empty_disjSum
{α : Type u_1}
{β : Type u_2}
(t : Finset β)
:
∅.disjSum t = map Function.Embedding.inr t
@[simp]
theorem
Finset.disjSum_empty
{α : Type u_1}
{β : Type u_2}
(s : Finset α)
:
s.disjSum ∅ = map Function.Embedding.inl s
theorem
Finset.disjoint_map_inl_map_inr
{α : Type u_1}
{β : Type u_2}
(s : Finset α)
(t : Finset β)
:
@[simp]
theorem
Finset.map_inl_disjUnion_map_inr
{α : Type u_1}
{β : Type u_2}
(s : Finset α)
(t : Finset β)
:
(map Function.Embedding.inl s).disjUnion (map Function.Embedding.inr t) ⋯ = s.disjSum t
@[simp]
@[simp]
@[simp]
theorem
Finset.disjSum_strictMono_left
{α : Type u_1}
{β : Type u_2}
(t : Finset β)
:
StrictMono fun (s : Finset α) => s.disjSum t
@[simp]
Given a finset of elements α ⊕ β, extract all the elements of the form α. This
forms a quasi-inverse to disjSum, in that it recovers its left input.
See also List.partitionMap.
Instances For
Given a finset of elements α ⊕ β, extract all the elements of the form β. This
forms a quasi-inverse to disjSum, in that it recovers its right input.
See also List.partitionMap.
Instances For
@[simp]
theorem
Finset.mem_toLeft
{α : Type u_1}
{β : Type u_2}
{u : Finset (α ⊕ β)}
{a : α}
:
a ∈ u.toLeft ↔ Sum.inl a ∈ u
@[simp]
theorem
Finset.mem_toRight
{α : Type u_1}
{β : Type u_2}
{u : Finset (α ⊕ β)}
{b : β}
:
b ∈ u.toRight ↔ Sum.inr b ∈ u
@[simp]
@[simp]
theorem
Finset.subset_map_inl
{α : Type u_1}
{β : Type u_2}
{s : Finset α}
{u : Finset (α ⊕ β)}
:
u ⊆ map Function.Embedding.inl s ↔ u.toLeft ⊆ s ∧ u.toRight = ∅
theorem
Finset.subset_map_inr
{α : Type u_1}
{β : Type u_2}
{t : Finset β}
{u : Finset (α ⊕ β)}
:
u ⊆ map Function.Embedding.inr t ↔ u.toLeft = ∅ ∧ u.toRight ⊆ t
theorem
Finset.map_inl_subset_iff_subset_toLeft
{α : Type u_1}
{β : Type u_2}
{s : Finset α}
{u : Finset (α ⊕ β)}
:
map Function.Embedding.inl s ⊆ u ↔ s ⊆ u.toLeft
theorem
Finset.map_inr_subset_iff_subset_toRight
{α : Type u_1}
{β : Type u_2}
{t : Finset β}
{u : Finset (α ⊕ β)}
:
map Function.Embedding.inr t ⊆ u ↔ t ⊆ u.toRight
theorem
Finset.gc_map_inl_toLeft
{α : Type u_1}
{β : Type u_2}
:
GaloisConnection (fun (x : Finset α) => map Function.Embedding.inl x) toLeft
theorem
Finset.gc_map_inr_toRight
{α : Type u_1}
{β : Type u_2}
:
GaloisConnection (fun (x : Finset β) => map Function.Embedding.inr x) toRight
@[simp]
theorem
Finset.toLeft_map_sumComm
{α : Type u_1}
{β : Type u_2}
{u : Finset (α ⊕ β)}
:
(map (Equiv.sumComm α β).toEmbedding u).toLeft = u.toRight
@[simp]
theorem
Finset.toRight_map_sumComm
{α : Type u_1}
{β : Type u_2}
{u : Finset (α ⊕ β)}
:
(map (Equiv.sumComm α β).toEmbedding u).toRight = u.toLeft
@[simp]
@[simp]
@[simp]
@[simp]
@[simp]
@[simp]
@[simp]
@[simp]
Finsets on sum types are equivalent to pairs of finsets on each summand.
Instances For
@[simp]
@[simp]
@[simp]