Interactions between embeddings and sets. #
@[simp]
theorem
Function.Embedding.coeWithTop_apply
{α : Type u_1}
(a✝ : α)
:
Function.Embedding.coeWithTop a✝ = ↑a✝
def
Function.Embedding.optionElim
{α : Type u_1}
{β : Type u_2}
(f : α ↪ β)
(x : β)
(h : x ∉ Set.range ⇑f)
:
Given an embedding f : α ↪ β
and a point outside of Set.range f
, construct an embedding
Option α ↪ β
.
Equations
- f.optionElim x h = { toFun := Option.elim' x ⇑f, inj' := ⋯ }
Instances For
@[simp]
theorem
Function.Embedding.optionElim_apply
{α : Type u_1}
{β : Type u_2}
(f : α ↪ β)
(x : β)
(h : x ∉ Set.range ⇑f)
(a✝ : Option α)
:
(f.optionElim x h) a✝ = Option.elim' x (⇑f) a✝
@[simp]
theorem
Function.Embedding.optionEmbeddingEquiv_symm_apply
(α : Type u_1)
(β : Type u_2)
(f : (f : α ↪ β) × ↑(Set.range ⇑f)ᶜ)
:
(Function.Embedding.optionEmbeddingEquiv α β).symm f = f.fst.optionElim ↑f.snd ⋯
@[simp]
theorem
Function.Embedding.optionEmbeddingEquiv_apply_snd_coe
(α : Type u_1)
(β : Type u_2)
(f : Option α ↪ β)
:
↑((Function.Embedding.optionEmbeddingEquiv α β) f).snd = f none
@[simp]
theorem
Function.Embedding.optionEmbeddingEquiv_apply_fst
(α : Type u_1)
(β : Type u_2)
(f : Option α ↪ β)
:
((Function.Embedding.optionEmbeddingEquiv α β) f).fst = Function.Embedding.coeWithTop.trans f
def
Function.Embedding.codRestrict
{α : Sort u_1}
{β : Type u_2}
(p : Set β)
(f : α ↪ β)
(H : ∀ (a : α), f a ∈ p)
:
α ↪ ↑p
Restrict the codomain of an embedding.
Equations
- Function.Embedding.codRestrict p f H = { toFun := fun (a : α) => ⟨f a, ⋯⟩, inj' := ⋯ }
Instances For
@[simp]
theorem
Function.Embedding.codRestrict_apply
{α : Sort u_1}
{β : Type u_2}
(p : Set β)
(f : α ↪ β)
(H : ∀ (a : α), f a ∈ p)
(a : α)
:
(Function.Embedding.codRestrict p f H) a = ⟨f a, ⋯⟩
A subtype {x // p x ∨ q x}
over a disjunction of p q : α → Prop
is equivalent to a sum of
subtypes {x // p x} ⊕ {x // q x}
such that ¬ p x
is sent to the right, when
Disjoint p q
.
See also Equiv.sumCompl
, for when IsCompl p q
.
Equations
- One or more equations did not get rendered due to their size.
Instances For
@[simp]
theorem
subtypeOrEquiv_apply
{α : Type u_1}
(p q : α → Prop)
[DecidablePred p]
(h : Disjoint p q)
(a : { x : α // p x ∨ q x })
:
(subtypeOrEquiv p q h) a = (subtypeOrLeftEmbedding p q) a
@[simp]
theorem
subtypeOrEquiv_symm_inl
{α : Type u_1}
(p q : α → Prop)
[DecidablePred p]
(h : Disjoint p q)
(x : { x : α // p x })
:
(subtypeOrEquiv p q h).symm (Sum.inl x) = ⟨↑x, ⋯⟩
@[simp]
theorem
subtypeOrEquiv_symm_inr
{α : Type u_1}
(p q : α → Prop)
[DecidablePred p]
(h : Disjoint p q)
(x : { x : α // q x })
:
(subtypeOrEquiv p q h).symm (Sum.inr x) = ⟨↑x, ⋯⟩
@[simp]
theorem
Function.Embedding.sumSet_apply
{α : Type u_1}
{s t : Set α}
(h : Disjoint s t)
(a✝ : ↑s ⊕ ↑t)
:
(Function.Embedding.sumSet h) a✝ = Sum.elim Subtype.val Subtype.val a✝
theorem
Function.Embedding.coe_sumSet
{α : Type u_1}
{s t : Set α}
(h : Disjoint s t)
:
⇑(Function.Embedding.sumSet h) = Sum.elim Subtype.val Subtype.val
@[simp]
theorem
Function.Embedding.sumSet_range
{α : Type u_1}
{s t : Set α}
(h : Disjoint s t)
:
Set.range ⇑(Function.Embedding.sumSet h) = s ∪ t
def
Function.Embedding.sigmaSet
{α : Type u_1}
{ι : Type u_2}
{s : ι → Set α}
(h : Pairwise (Disjoint on s))
:
(i : ι) × ↑(s i) ↪ α
For an indexed family s : ι → Set α
of disjoint sets,
the natural injection from the sigma-type (i : ι) × ↑(s i)
to α
.
Equations
- Function.Embedding.sigmaSet h = { toFun := fun (x : (i : ι) × ↑(s i)) => ↑x.snd, inj' := ⋯ }
Instances For
@[simp]
theorem
Function.Embedding.sigmaSet_apply
{α : Type u_1}
{ι : Type u_2}
{s : ι → Set α}
(h : Pairwise (Disjoint on s))
(x : (i : ι) × ↑(s i))
:
(Function.Embedding.sigmaSet h) x = ↑x.snd
theorem
Function.Embedding.coe_sigmaSet
{α : Type u_1}
{ι : Type u_2}
{s : ι → Set α}
(h : Pairwise (Disjoint on s))
:
⇑(Function.Embedding.sigmaSet h) = fun (x : (i : ι) × ↑(s i)) => ↑x.snd
@[simp]
theorem
Function.Embedding.sigmaSet_range
{α : Type u_1}
{ι : Type u_2}
{s : ι → Set α}
(h : Pairwise (Disjoint on s))
:
Set.range ⇑(Function.Embedding.sigmaSet h) = ⋃ (i : ι), s i