mathlib3 documentation

data.set.function

Functions over sets #

THIS FILE IS SYNCHRONIZED WITH MATHLIB4. Any changes to this file require a corresponding PR to mathlib4.

Main definitions #

Predicate #

Functions #

Restrict #

def set.restrict {α : Type u} {π : α → Type v} (s : set α) (f : Π (a : α), π a) (a : ↥s) :
π ↑a

Restrict domain of a function f to a set s. Same as subtype.restrict but this version takes an argument ↥s instead of subtype s.

Equations
theorem set.restrict_eq {α : Type u} {β : Type v} (f : α → β) (s : set α) :
@[simp]
theorem set.restrict_apply {α : Type u} {β : Type v} (f : α → β) (s : set α) (x : ↥s) :
s.restrict f x = f ↑x
theorem set.restrict_eq_iff {α : Type u} {π : α → Type v} {f : Π (a : α), π a} {s : set α} {g : Π (a : ↥s), π ↑a} :
s.restrict f = g ↔ ∀ (a : α) (ha : a ∈ s), f a = g ⟨a, ha⟩
theorem set.eq_restrict_iff {α : Type u} {π : α → Type v} {s : set α} {f : Π (a : ↥s), π ↑a} {g : Π (a : α), π a} :
f = s.restrict g ↔ ∀ (a : α) (ha : a ∈ s), f ⟨a, ha⟩ = g a
@[simp]
theorem set.range_restrict {α : Type u} {β : Type v} (f : α → β) (s : set α) :
theorem set.image_restrict {α : Type u} {β : Type v} (f : α → β) (s t : set α) :
s.restrict f '' (coe ⁻¹' t) = f '' (t ∩ s)
@[simp]
theorem set.restrict_dite {α : Type u} {β : Type v} {s : set α} [Π (x : α), decidable (x ∈ s)] (f : Π (a : α), a ∈ s → β) (g : Π (a : α), a ∉ s → β) :
s.restrict (λ (a : α), dite (a ∈ s) (λ (h : a ∈ s), f a h) (λ (h : a ∉ s), g a h)) = λ (a : ↥s), f ↑a _
@[simp]
theorem set.restrict_dite_compl {α : Type u} {β : Type v} {s : set α} [Π (x : α), decidable (x ∈ s)] (f : Π (a : α), a ∈ s → β) (g : Π (a : α), a ∉ s → β) :
sᶜ.restrict (λ (a : α), dite (a ∈ s) (λ (h : a ∈ s), f a h) (λ (h : a ∉ s), g a h)) = λ (a : ↥sᶜ), g ↑a _
@[simp]
theorem set.restrict_ite {α : Type u} {β : Type v} (f g : α → β) (s : set α) [Π (x : α), decidable (x ∈ s)] :
s.restrict (λ (a : α), ite (a ∈ s) (f a) (g a)) = s.restrict f
@[simp]
theorem set.restrict_ite_compl {α : Type u} {β : Type v} (f g : α → β) (s : set α) [Π (x : α), decidable (x ∈ s)] :
sᶜ.restrict (λ (a : α), ite (a ∈ s) (f a) (g a)) = sᶜ.restrict g
@[simp]
theorem set.restrict_piecewise {α : Type u} {β : Type v} (f g : α → β) (s : set α) [Π (x : α), decidable (x ∈ s)] :
@[simp]
theorem set.restrict_piecewise_compl {α : Type u} {β : Type v} (f g : α → β) (s : set α) [Π (x : α), decidable (x ∈ s)] :
theorem set.restrict_extend_range {α : Type u} {β : Type v} {γ : Type w} (f : α → β) (g : α → γ) (g' : β → γ) :
(set.range f).restrict (function.extend f g g') = λ (x : ↥(set.range f)), g (Exists.some _)
@[simp]
theorem set.restrict_extend_compl_range {α : Type u} {β : Type v} {γ : Type w} (f : α → β) (g : α → γ) (g' : β → γ) :
theorem set.range_extend_subset {α : Type u} {β : Type v} {γ : Type w} (f : α → β) (g : α → γ) (g' : β → γ) :
theorem set.range_extend {α : Type u} {β : Type v} {γ : Type w} {f : α → β} (hf : function.injective f) (g : α → γ) (g' : β → γ) :
def set.cod_restrict {α : Type u} {ι : Sort x} (f : ι → α) (s : set α) (h : ∀ (x : ι), f x ∈ s) :
ι → ↥s

Restrict codomain of a function f to a set s. Same as subtype.coind but this version has codomain ↥s instead of subtype s.

Equations
@[simp]
theorem set.coe_cod_restrict_apply {α : Type u} {ι : Sort x} (f : ι → α) (s : set α) (h : ∀ (x : ι), f x ∈ s) (x : ι) :
↑(set.cod_restrict f s h x) = f x
@[simp]
theorem set.restrict_comp_cod_restrict {α : Type u} {β : Type v} {ι : Sort x} {f : ι → α} {g : α → β} {b : set α} (h : ∀ (x : ι), f x ∈ b) :
@[simp]
theorem set.injective_cod_restrict {α : Type u} {ι : Sort x} {f : ι → α} {s : set α} (h : ∀ (x : ι), f x ∈ s) :
theorem function.injective.cod_restrict {α : Type u} {ι : Sort x} {f : ι → α} {s : set α} (h : ∀ (x : ι), f x ∈ s) :

Alias of the reverse direction of set.injective_cod_restrict.

Equality on a set #

def set.eq_on {α : Type u} {β : Type v} (f₁ f₂ : α → β) (s : set α) :
Prop

Two functions f₁ f₂ : α → β are equal on s if f₁ x = f₂ x for all x ∈ a.

Equations
@[simp]
theorem set.eq_on_empty {α : Type u} {β : Type v} (f₁ f₂ : α → β) :
set.eq_on f₁ f₂ ∅
@[simp]
theorem set.eq_on_singleton {α : Type u} {β : Type v} {f₁ f₂ : α → β} {a : α} :
set.eq_on f₁ f₂ {a} ↔ f₁ a = f₂ a
@[simp]
theorem set.restrict_eq_restrict_iff {α : Type u} {β : Type v} {s : set α} {f₁ f₂ : α → β} :
s.restrict f₁ = s.restrict f₂ ↔ set.eq_on f₁ f₂ s
@[symm]
theorem set.eq_on.symm {α : Type u} {β : Type v} {s : set α} {f₁ f₂ : α → β} (h : set.eq_on f₁ f₂ s) :
set.eq_on f₂ f₁ s
theorem set.eq_on_comm {α : Type u} {β : Type v} {s : set α} {f₁ f₂ : α → β} :
set.eq_on f₁ f₂ s ↔ set.eq_on f₂ f₁ s
@[refl]
theorem set.eq_on_refl {α : Type u} {β : Type v} (f : α → β) (s : set α) :
set.eq_on f f s
@[trans]
theorem set.eq_on.trans {α : Type u} {β : Type v} {s : set α} {f₁ f₂ f₃ : α → β} (h₁ : set.eq_on f₁ f₂ s) (h₂ : set.eq_on f₂ f₃ s) :
set.eq_on f₁ f₃ s
theorem set.eq_on.image_eq {α : Type u} {β : Type v} {s : set α} {f₁ f₂ : α → β} (heq : set.eq_on f₁ f₂ s) :
f₁ '' s = f₂ '' s
theorem set.eq_on.inter_preimage_eq {α : Type u} {β : Type v} {s : set α} {f₁ f₂ : α → β} (heq : set.eq_on f₁ f₂ s) (t : set β) :
s ∩ f₁ ⁻¹' t = s ∩ f₂ ⁻¹' t
theorem set.eq_on.mono {α : Type u} {β : Type v} {s₁ s₂ : set α} {f₁ f₂ : α → β} (hs : s₁ ⊆ s₂) (hf : set.eq_on f₁ f₂ s₂) :
set.eq_on f₁ f₂ s₁
@[simp]
theorem set.eq_on_union {α : Type u} {β : Type v} {s₁ s₂ : set α} {f₁ f₂ : α → β} :
set.eq_on f₁ f₂ (s₁ ∪ s₂) ↔ set.eq_on f₁ f₂ s₁ ∧ set.eq_on f₁ f₂ s₂
theorem set.eq_on.union {α : Type u} {β : Type v} {s₁ s₂ : set α} {f₁ f₂ : α → β} (h₁ : set.eq_on f₁ f₂ s₁) (h₂ : set.eq_on f₁ f₂ s₂) :
set.eq_on f₁ f₂ (s₁ ∪ s₂)
theorem set.eq_on.comp_left {α : Type u} {β : Type v} {γ : Type w} {s : set α} {f₁ f₂ : α → β} {g : β → γ} (h : set.eq_on f₁ f₂ s) :
set.eq_on (g ∘ f₁) (g ∘ f₂) s
@[simp]
theorem set.eq_on_range {α : Type u} {β : Type v} {ι : Sort u_1} {f : ι → α} {g₁ g₂ : α → β} :
set.eq_on g₁ g₂ (set.range f) ↔ g₁ ∘ f = g₂ ∘ f
theorem set.eq_on.comp_eq {α : Type u} {β : Type v} {ι : Sort u_1} {f : ι → α} {g₁ g₂ : α → β} :
set.eq_on g₁ g₂ (set.range f) → g₁ ∘ f = g₂ ∘ f

Alias of the forward direction of set.eq_on_range.

Congruence lemmas #

theorem monotone_on.congr {α : Type u} {β : Type v} {s : set α} {f₁ f₂ : α → β} [preorder α] [preorder β] (h₁ : monotone_on f₁ s) (h : set.eq_on f₁ f₂ s) :
theorem antitone_on.congr {α : Type u} {β : Type v} {s : set α} {f₁ f₂ : α → β} [preorder α] [preorder β] (h₁ : antitone_on f₁ s) (h : set.eq_on f₁ f₂ s) :
theorem strict_mono_on.congr {α : Type u} {β : Type v} {s : set α} {f₁ f₂ : α → β} [preorder α] [preorder β] (h₁ : strict_mono_on f₁ s) (h : set.eq_on f₁ f₂ s) :
theorem strict_anti_on.congr {α : Type u} {β : Type v} {s : set α} {f₁ f₂ : α → β} [preorder α] [preorder β] (h₁ : strict_anti_on f₁ s) (h : set.eq_on f₁ f₂ s) :
theorem set.eq_on.congr_monotone_on {α : Type u} {β : Type v} {s : set α} {f₁ f₂ : α → β} [preorder α] [preorder β] (h : set.eq_on f₁ f₂ s) :
theorem set.eq_on.congr_antitone_on {α : Type u} {β : Type v} {s : set α} {f₁ f₂ : α → β} [preorder α] [preorder β] (h : set.eq_on f₁ f₂ s) :
theorem set.eq_on.congr_strict_mono_on {α : Type u} {β : Type v} {s : set α} {f₁ f₂ : α → β} [preorder α] [preorder β] (h : set.eq_on f₁ f₂ s) :
theorem set.eq_on.congr_strict_anti_on {α : Type u} {β : Type v} {s : set α} {f₁ f₂ : α → β} [preorder α] [preorder β] (h : set.eq_on f₁ f₂ s) :

Mono lemmas #

theorem monotone_on.mono {α : Type u} {β : Type v} {s s₂ : set α} {f : α → β} [preorder α] [preorder β] (h : monotone_on f s) (h' : s₂ ⊆ s) :
theorem antitone_on.mono {α : Type u} {β : Type v} {s s₂ : set α} {f : α → β} [preorder α] [preorder β] (h : antitone_on f s) (h' : s₂ ⊆ s) :
theorem strict_mono_on.mono {α : Type u} {β : Type v} {s s₂ : set α} {f : α → β} [preorder α] [preorder β] (h : strict_mono_on f s) (h' : s₂ ⊆ s) :
theorem strict_anti_on.mono {α : Type u} {β : Type v} {s s₂ : set α} {f : α → β} [preorder α] [preorder β] (h : strict_anti_on f s) (h' : s₂ ⊆ s) :
@[protected]
theorem monotone_on.monotone {α : Type u} {β : Type v} {s : set α} {f : α → β} [preorder α] [preorder β] (h : monotone_on f s) :
@[protected]
theorem antitone_on.monotone {α : Type u} {β : Type v} {s : set α} {f : α → β} [preorder α] [preorder β] (h : antitone_on f s) :
@[protected]
theorem strict_mono_on.strict_mono {α : Type u} {β : Type v} {s : set α} {f : α → β} [preorder α] [preorder β] (h : strict_mono_on f s) :
@[protected]
theorem strict_anti_on.strict_anti {α : Type u} {β : Type v} {s : set α} {f : α → β} [preorder α] [preorder β] (h : strict_anti_on f s) :

maps to #

def set.maps_to {α : Type u} {β : Type v} (f : α → β) (s : set α) (t : set β) :
Prop

maps_to f a b means that the image of a is contained in b.

Equations
def set.maps_to.restrict {α : Type u} {β : Type v} (f : α → β) (s : set α) (t : set β) (h : set.maps_to f s t) :

Given a map f sending s : set α into t : set β, restrict domain of f to s and the codomain to t. Same as subtype.map.

Equations
@[simp]
theorem set.maps_to.coe_restrict_apply {α : Type u} {β : Type v} {s : set α} {t : set β} {f : α → β} (h : set.maps_to f s t) (x : ↥s) :
@[simp]
theorem set.cod_restrict_restrict {α : Type u} {β : Type v} {s : set α} {t : set β} {f : α → β} (h : ∀ (x : ↥s), f ↑x ∈ t) :

Restricting the domain and then the codomain is the same as maps_to.restrict.

theorem set.maps_to.restrict_eq_cod_restrict {α : Type u} {β : Type v} {s : set α} {t : set β} {f : α → β} (h : set.maps_to f s t) :

Reverse of set.cod_restrict_restrict.

theorem set.maps_to.coe_restrict {α : Type u} {β : Type v} {s : set α} {t : set β} {f : α → β} (h : set.maps_to f s t) :
theorem set.maps_to.range_restrict {α : Type u} {β : Type v} (f : α → β) (s : set α) (t : set β) (h : set.maps_to f s t) :
theorem set.maps_to_iff_exists_map_subtype {α : Type u} {β : Type v} {s : set α} {t : set β} {f : α → β} :
set.maps_to f s t ↔ ∃ (g : ↥s → ↥t), ∀ (x : ↥s), f ↑x = ↑(g x)
theorem set.maps_to' {α : Type u} {β : Type v} {s : set α} {t : set β} {f : α → β} :
set.maps_to f s t ↔ f '' s ⊆ t
theorem set.maps_to_prod_map_diagonal {α : Type u} {β : Type v} {f : α → β} :
theorem set.maps_to.subset_preimage {α : Type u} {β : Type v} {f : α → β} {s : set α} {t : set β} (hf : set.maps_to f s t) :
s ⊆ f ⁻¹' t
theorem set.maps_to_empty {α : Type u} {β : Type v} (f : α → β) (t : set β) :
@[simp]
theorem set.maps_to_singleton {α : Type u} {β : Type v} {t : set β} {f : α → β} {a : α} :
set.maps_to f {a} t ↔ f a ∈ t
theorem set.maps_to.image_subset {α : Type u} {β : Type v} {s : set α} {t : set β} {f : α → β} (h : set.maps_to f s t) :
f '' s ⊆ t
theorem set.maps_to.congr {α : Type u} {β : Type v} {s : set α} {t : set β} {f₁ f₂ : α → β} (h₁ : set.maps_to f₁ s t) (h : set.eq_on f₁ f₂ s) :
set.maps_to f₂ s t
theorem set.eq_on.comp_right {α : Type u} {β : Type v} {γ : Type w} {s : set α} {t : set β} {f : α → β} {g₁ g₂ : β → γ} (hg : set.eq_on g₁ g₂ t) (hf : set.maps_to f s t) :
set.eq_on (g₁ ∘ f) (g₂ ∘ f) s
theorem set.eq_on.maps_to_iff {α : Type u} {β : Type v} {s : set α} {t : set β} {f₁ f₂ : α → β} (H : set.eq_on f₁ f₂ s) :
set.maps_to f₁ s t ↔ set.maps_to f₂ s t
theorem set.maps_to.comp {α : Type u} {β : Type v} {γ : Type w} {s : set α} {t : set β} {p : set γ} {f : α → β} {g : β → γ} (h₁ : set.maps_to g t p) (h₂ : set.maps_to f s t) :
set.maps_to (g ∘ f) s p
theorem set.maps_to_id {α : Type u} (s : set α) :
theorem set.maps_to.iterate {α : Type u} {f : α → α} {s : set α} (h : set.maps_to f s s) (n : ℕ) :
theorem set.maps_to.iterate_restrict {α : Type u} {f : α → α} {s : set α} (h : set.maps_to f s s) (n : ℕ) :
theorem set.maps_to_of_subsingleton' {α : Type u} {β : Type v} {s : set α} {t : set β} [subsingleton β] (f : α → β) (h : s.nonempty → t.nonempty) :
theorem set.maps_to_of_subsingleton {α : Type u} [subsingleton α] (f : α → α) (s : set α) :
theorem set.maps_to.mono {α : Type u} {β : Type v} {s₁ s₂ : set α} {t₁ t₂ : set β} {f : α → β} (hf : set.maps_to f s₁ t₁) (hs : s₂ ⊆ s₁) (ht : t₁ ⊆ t₂) :
set.maps_to f s₂ t₂
theorem set.maps_to.mono_left {α : Type u} {β : Type v} {s₁ s₂ : set α} {t : set β} {f : α → β} (hf : set.maps_to f s₁ t) (hs : s₂ ⊆ s₁) :
set.maps_to f s₂ t
theorem set.maps_to.mono_right {α : Type u} {β : Type v} {s : set α} {t₁ t₂ : set β} {f : α → β} (hf : set.maps_to f s t₁) (ht : t₁ ⊆ t₂) :
set.maps_to f s t₂
theorem set.maps_to.union_union {α : Type u} {β : Type v} {s₁ s₂ : set α} {t₁ t₂ : set β} {f : α → β} (h₁ : set.maps_to f s₁ t₁) (h₂ : set.maps_to f s₂ t₂) :
set.maps_to f (s₁ ∪ s₂) (t₁ ∪ t₂)
theorem set.maps_to.union {α : Type u} {β : Type v} {s₁ s₂ : set α} {t : set β} {f : α → β} (h₁ : set.maps_to f s₁ t) (h₂ : set.maps_to f s₂ t) :
set.maps_to f (s₁ ∪ s₂) t
@[simp]
theorem set.maps_to_union {α : Type u} {β : Type v} {s₁ s₂ : set α} {t : set β} {f : α → β} :
set.maps_to f (s₁ ∪ s₂) t ↔ set.maps_to f s₁ t ∧ set.maps_to f s₂ t
theorem set.maps_to.inter {α : Type u} {β : Type v} {s : set α} {t₁ t₂ : set β} {f : α → β} (h₁ : set.maps_to f s t₁) (h₂ : set.maps_to f s t₂) :
set.maps_to f s (t₁ ∩ t₂)
theorem set.maps_to.inter_inter {α : Type u} {β : Type v} {s₁ s₂ : set α} {t₁ t₂ : set β} {f : α → β} (h₁ : set.maps_to f s₁ t₁) (h₂ : set.maps_to f s₂ t₂) :
set.maps_to f (s₁ ∩ s₂) (t₁ ∩ t₂)
@[simp]
theorem set.maps_to_inter {α : Type u} {β : Type v} {s : set α} {t₁ t₂ : set β} {f : α → β} :
set.maps_to f s (t₁ ∩ t₂) ↔ set.maps_to f s t₁ ∧ set.maps_to f s t₂
theorem set.maps_to_univ {α : Type u} {β : Type v} (f : α → β) (s : set α) :
theorem set.maps_to_image {α : Type u} {β : Type v} (f : α → β) (s : set α) :
set.maps_to f s (f '' s)
theorem set.maps_to_preimage {α : Type u} {β : Type v} (f : α → β) (t : set β) :
theorem set.maps_to_range {α : Type u} {β : Type v} (f : α → β) (s : set α) :
@[simp]
theorem set.maps_image_to {α : Type u} {β : Type v} {γ : Type w} (f : α → β) (g : γ → α) (s : set γ) (t : set β) :
set.maps_to f (g '' s) t ↔ set.maps_to (f ∘ g) s t
theorem set.maps_to.comp_left {α : Type u} {β : Type v} {γ : Type w} {s : set α} {t : set β} {f : α → β} (g : β → γ) (hf : set.maps_to f s t) :
set.maps_to (g ∘ f) s (g '' t)
theorem set.maps_to.comp_right {α : Type u} {β : Type v} {γ : Type w} {g : β → γ} {s : set β} {t : set γ} (hg : set.maps_to g s t) (f : α → β) :
set.maps_to (g ∘ f) (f ⁻¹' s) t
@[simp]
theorem set.maps_univ_to {α : Type u} {β : Type v} (f : α → β) (s : set β) :
set.maps_to f set.univ s ↔ ∀ (a : α), f a ∈ s
@[simp]
theorem set.maps_range_to {α : Type u} {β : Type v} {γ : Type w} (f : α → β) (g : γ → α) (s : set β) :
theorem set.surjective_maps_to_image_restrict {α : Type u} {β : Type v} (f : α → β) (s : set α) :
theorem set.maps_to.mem_iff {α : Type u} {β : Type v} {s : set α} {t : set β} {f : α → β} (h : set.maps_to f s t) (hc : set.maps_to f sᶜ tᶜ) {x : α} :
f x ∈ t ↔ x ∈ s

Restriction onto preimage #

@[simp]
theorem set.restrict_preimage_coe {α : Type u} {β : Type v} (t : set β) (f : α → β) (ᾰ : ↥(f ⁻¹' t)) :
↑(t.restrict_preimage f ᾰ) = f ↑ᾰ
def set.restrict_preimage {α : Type u} {β : Type v} (t : set β) (f : α → β) :

The restriction of a function onto the preimage of a set.

Equations
theorem set.range_restrict_preimage {α : Type u} {β : Type v} (t : set β) (f : α → β) :
theorem set.restrict_preimage_injective {α : Type u} {β : Type v} (t : set β) {f : α → β} (hf : function.injective f) :
theorem set.restrict_preimage_surjective {α : Type u} {β : Type v} (t : set β) {f : α → β} (hf : function.surjective f) :
theorem set.restrict_preimage_bijective {α : Type u} {β : Type v} (t : set β) {f : α → β} (hf : function.bijective f) :

Injectivity on a set #

def set.inj_on {α : Type u} {β : Type v} (f : α → β) (s : set α) :
Prop

f is injective on a if the restriction of f to a is injective.

Equations
theorem set.subsingleton.inj_on {α : Type u} {β : Type v} {s : set α} (hs : s.subsingleton) (f : α → β) :
@[simp]
theorem set.inj_on_empty {α : Type u} {β : Type v} (f : α → β) :
@[simp]
theorem set.inj_on_singleton {α : Type u} {β : Type v} (f : α → β) (a : α) :
theorem set.inj_on.eq_iff {α : Type u} {β : Type v} {s : set α} {f : α → β} {x y : α} (h : set.inj_on f s) (hx : x ∈ s) (hy : y ∈ s) :
f x = f y ↔ x = y
theorem set.inj_on.ne_iff {α : Type u} {β : Type v} {s : set α} {f : α → β} {x y : α} (h : set.inj_on f s) (hx : x ∈ s) (hy : y ∈ s) :
f x ≠ f y ↔ x ≠ y
theorem set.inj_on.ne {α : Type u} {β : Type v} {s : set α} {f : α → β} {x y : α} (h : set.inj_on f s) (hx : x ∈ s) (hy : y ∈ s) :
x ≠ y → f x ≠ f y

Alias of the reverse direction of set.inj_on.ne_iff.

theorem set.inj_on.congr {α : Type u} {β : Type v} {s : set α} {f₁ f₂ : α → β} (h₁ : set.inj_on f₁ s) (h : set.eq_on f₁ f₂ s) :
set.inj_on f₂ s
theorem set.eq_on.inj_on_iff {α : Type u} {β : Type v} {s : set α} {f₁ f₂ : α → β} (H : set.eq_on f₁ f₂ s) :
set.inj_on f₁ s ↔ set.inj_on f₂ s
theorem set.inj_on.mono {α : Type u} {β : Type v} {s₁ s₂ : set α} {f : α → β} (h : s₁ ⊆ s₂) (ht : set.inj_on f s₂) :
set.inj_on f s₁
theorem set.inj_on_union {α : Type u} {β : Type v} {s₁ s₂ : set α} {f : α → β} (h : disjoint s₁ s₂) :
set.inj_on f (s₁ ∪ s₂) ↔ set.inj_on f s₁ ∧ set.inj_on f s₂ ∧ ∀ (x : α), x ∈ s₁ → ∀ (y : α), y ∈ s₂ → f x ≠ f y
theorem set.inj_on_insert {α : Type u} {β : Type v} {f : α → β} {s : set α} {a : α} (has : a ∉ s) :
theorem set.inj_on_of_injective {α : Type u} {β : Type v} {f : α → β} (h : function.injective f) (s : set α) :
theorem function.injective.inj_on {α : Type u} {β : Type v} {f : α → β} (h : function.injective f) (s : set α) :

Alias of set.inj_on_of_injective.

theorem set.inj_on_id {α : Type u} (s : set α) :
theorem set.inj_on.comp {α : Type u} {β : Type v} {γ : Type w} {s : set α} {t : set β} {f : α → β} {g : β → γ} (hg : set.inj_on g t) (hf : set.inj_on f s) (h : set.maps_to f s t) :
set.inj_on (g ∘ f) s
theorem set.inj_on.iterate {α : Type u} {f : α → α} {s : set α} (h : set.inj_on f s) (hf : set.maps_to f s s) (n : ℕ) :
theorem set.inj_on_of_subsingleton {α : Type u} {β : Type v} [subsingleton α] (f : α → β) (s : set α) :
theorem function.injective.inj_on_range {α : Type u} {β : Type v} {γ : Type w} {f : α → β} {g : β → γ} (h : function.injective (g ∘ f)) :
theorem set.inj_on_iff_injective {α : Type u} {β : Type v} {s : set α} {f : α → β} :
theorem set.inj_on.injective {α : Type u} {β : Type v} {s : set α} {f : α → β} :

Alias of the forward direction of set.inj_on_iff_injective.

theorem set.maps_to.restrict_inj {α : Type u} {β : Type v} {s : set α} {t : set β} {f : α → β} (h : set.maps_to f s t) :
theorem set.exists_inj_on_iff_injective {α : Type u} {β : Type v} {s : set α} [nonempty β] :
(∃ (f : α → β), set.inj_on f s) ↔ ∃ (f : ↥s → β), function.injective f
theorem set.inj_on_preimage {α : Type u} {β : Type v} {f : α → β} {B : set (set β)} (hB : B ⊆ 𝒫set.range f) :
theorem set.inj_on.mem_of_mem_image {α : Type u} {β : Type v} {s s₁ : set α} {f : α → β} {x : α} (hf : set.inj_on f s) (hs : s₁ ⊆ s) (h : x ∈ s) (h₁ : f x ∈ f '' s₁) :
x ∈ s₁
theorem set.inj_on.mem_image_iff {α : Type u} {β : Type v} {s s₁ : set α} {f : α → β} {x : α} (hf : set.inj_on f s) (hs : s₁ ⊆ s) (hx : x ∈ s) :
f x ∈ f '' s₁ ↔ x ∈ s₁
theorem set.inj_on.preimage_image_inter {α : Type u} {β : Type v} {s s₁ : set α} {f : α → β} (hf : set.inj_on f s) (hs : s₁ ⊆ s) :
f ⁻¹' (f '' s₁) ∩ s = s₁
theorem set.eq_on.cancel_left {α : Type u} {β : Type v} {γ : Type w} {s : set α} {t : set β} {f₁ f₂ : α → β} {g : β → γ} (h : set.eq_on (g ∘ f₁) (g ∘ f₂) s) (hg : set.inj_on g t) (hf₁ : set.maps_to f₁ s t) (hf₂ : set.maps_to f₂ s t) :
set.eq_on f₁ f₂ s
theorem set.inj_on.cancel_left {α : Type u} {β : Type v} {γ : Type w} {s : set α} {t : set β} {f₁ f₂ : α → β} {g : β → γ} (hg : set.inj_on g t) (hf₁ : set.maps_to f₁ s t) (hf₂ : set.maps_to f₂ s t) :
set.eq_on (g ∘ f₁) (g ∘ f₂) s ↔ set.eq_on f₁ f₂ s
theorem set.inj_on.image_inter {α : Type u} {β : Type v} {f : α → β} {s t u : set α} (hf : set.inj_on f u) (hs : s ⊆ u) (ht : t ⊆ u) :
f '' (s ∩ t) = f '' s ∩ f '' t
theorem disjoint.image {α : Type u} {β : Type v} {s t u : set α} {f : α → β} (h : disjoint s t) (hf : set.inj_on f u) (hs : s ⊆ u) (ht : t ⊆ u) :
disjoint (f '' s) (f '' t)

Surjectivity on a set #

def set.surj_on {α : Type u} {β : Type v} (f : α → β) (s : set α) (t : set β) :
Prop

f is surjective from a to b if b is contained in the image of a.

Equations
theorem set.surj_on.subset_range {α : Type u} {β : Type v} {s : set α} {t : set β} {f : α → β} (h : set.surj_on f s t) :
theorem set.surj_on_iff_exists_map_subtype {α : Type u} {β : Type v} {s : set α} {t : set β} {f : α → β} :
set.surj_on f s t ↔ ∃ (t' : set β) (g : ↥s → ↥t'), t ⊆ t' ∧ function.surjective g ∧ ∀ (x : ↥s), f ↑x = ↑(g x)
theorem set.surj_on_empty {α : Type u} {β : Type v} (f : α → β) (s : set α) :
@[simp]
theorem set.surj_on_singleton {α : Type u} {β : Type v} {s : set α} {f : α → β} {b : β} :
set.surj_on f s {b} ↔ b ∈ f '' s
theorem set.surj_on_image {α : Type u} {β : Type v} (f : α → β) (s : set α) :
set.surj_on f s (f '' s)
theorem set.surj_on.comap_nonempty {α : Type u} {β : Type v} {s : set α} {t : set β} {f : α → β} (h : set.surj_on f s t) (ht : t.nonempty) :
theorem set.surj_on.congr {α : Type u} {β : Type v} {s : set α} {t : set β} {f₁ f₂ : α → β} (h : set.surj_on f₁ s t) (H : set.eq_on f₁ f₂ s) :
set.surj_on f₂ s t
theorem set.eq_on.surj_on_iff {α : Type u} {β : Type v} {s : set α} {t : set β} {f₁ f₂ : α → β} (h : set.eq_on f₁ f₂ s) :
set.surj_on f₁ s t ↔ set.surj_on f₂ s t
theorem set.surj_on.mono {α : Type u} {β : Type v} {s₁ s₂ : set α} {t₁ t₂ : set β} {f : α → β} (hs : s₁ ⊆ s₂) (ht : t₁ ⊆ t₂) (hf : set.surj_on f s₁ t₂) :
set.surj_on f s₂ t₁
theorem set.surj_on.union {α : Type u} {β : Type v} {s : set α} {t₁ t₂ : set β} {f : α → β} (h₁ : set.surj_on f s t₁) (h₂ : set.surj_on f s t₂) :
set.surj_on f s (t₁ ∪ t₂)
theorem set.surj_on.union_union {α : Type u} {β : Type v} {s₁ s₂ : set α} {t₁ t₂ : set β} {f : α → β} (h₁ : set.surj_on f s₁ t₁) (h₂ : set.surj_on f s₂ t₂) :
set.surj_on f (s₁ ∪ s₂) (t₁ ∪ t₂)
theorem set.surj_on.inter_inter {α : Type u} {β : Type v} {s₁ s₂ : set α} {t₁ t₂ : set β} {f : α → β} (h₁ : set.surj_on f s₁ t₁) (h₂ : set.surj_on f s₂ t₂) (h : set.inj_on f (s₁ ∪ s₂)) :
set.surj_on f (s₁ ∩ s₂) (t₁ ∩ t₂)
theorem set.surj_on.inter {α : Type u} {β : Type v} {s₁ s₂ : set α} {t : set β} {f : α → β} (h₁ : set.surj_on f s₁ t) (h₂ : set.surj_on f s₂ t) (h : set.inj_on f (s₁ ∪ s₂)) :
set.surj_on f (s₁ ∩ s₂) t
theorem set.surj_on_id {α : Type u} (s : set α) :
theorem set.surj_on.comp {α : Type u} {β : Type v} {γ : Type w} {s : set α} {t : set β} {p : set γ} {f : α → β} {g : β → γ} (hg : set.surj_on g t p) (hf : set.surj_on f s t) :
set.surj_on (g ∘ f) s p
theorem set.surj_on.iterate {α : Type u} {f : α → α} {s : set α} (h : set.surj_on f s s) (n : ℕ) :
theorem set.surj_on.comp_left {α : Type u} {β : Type v} {γ : Type w} {s : set α} {t : set β} {f : α → β} (hf : set.surj_on f s t) (g : β → γ) :
set.surj_on (g ∘ f) s (g '' t)
theorem set.surj_on.comp_right {α : Type u} {β : Type v} {γ : Type w} {f : α → β} {g : β → γ} {s : set β} {t : set γ} (hf : function.surjective f) (hg : set.surj_on g s t) :
set.surj_on (g ∘ f) (f ⁻¹' s) t
theorem set.surj_on_of_subsingleton' {α : Type u} {β : Type v} {s : set α} {t : set β} [subsingleton β] (f : α → β) (h : t.nonempty → s.nonempty) :
theorem set.surj_on_of_subsingleton {α : Type u} [subsingleton α] (f : α → α) (s : set α) :
theorem set.surj_on_iff_surjective {α : Type u} {β : Type v} {s : set α} {f : α → β} :
theorem set.surj_on.image_eq_of_maps_to {α : Type u} {β : Type v} {s : set α} {t : set β} {f : α → β} (h₁ : set.surj_on f s t) (h₂ : set.maps_to f s t) :
f '' s = t
theorem set.image_eq_iff_surj_on_maps_to {α : Type u} {β : Type v} {s : set α} {t : set β} {f : α → β} :
f '' s = t ↔ set.surj_on f s t ∧ set.maps_to f s t
theorem set.surj_on.maps_to_compl {α : Type u} {β : Type v} {s : set α} {t : set β} {f : α → β} (h : set.surj_on f s t) (h' : function.injective f) :
theorem set.maps_to.surj_on_compl {α : Type u} {β : Type v} {s : set α} {t : set β} {f : α → β} (h : set.maps_to f s t) (h' : function.surjective f) :
theorem set.eq_on.cancel_right {α : Type u} {β : Type v} {γ : Type w} {s : set α} {t : set β} {f : α → β} {g₁ g₂ : β → γ} (hf : set.eq_on (g₁ ∘ f) (g₂ ∘ f) s) (hf' : set.surj_on f s t) :
set.eq_on g₁ g₂ t
theorem set.surj_on.cancel_right {α : Type u} {β : Type v} {γ : Type w} {s : set α} {t : set β} {f : α → β} {g₁ g₂ : β → γ} (hf : set.surj_on f s t) (hf' : set.maps_to f s t) :
set.eq_on (g₁ ∘ f) (g₂ ∘ f) s ↔ set.eq_on g₁ g₂ t
theorem set.eq_on_comp_right_iff {α : Type u} {β : Type v} {γ : Type w} {s : set α} {f : α → β} {g₁ g₂ : β → γ} :
set.eq_on (g₁ ∘ f) (g₂ ∘ f) s ↔ set.eq_on g₁ g₂ (f '' s)

Bijectivity #

def set.bij_on {α : Type u} {β : Type v} (f : α → β) (s : set α) (t : set β) :
Prop

f is bijective from s to t if f is injective on s and f '' s = t.

Equations
theorem set.bij_on.maps_to {α : Type u} {β : Type v} {s : set α} {t : set β} {f : α → β} (h : set.bij_on f s t) :
theorem set.bij_on.inj_on {α : Type u} {β : Type v} {s : set α} {t : set β} {f : α → β} (h : set.bij_on f s t) :
theorem set.bij_on.surj_on {α : Type u} {β : Type v} {s : set α} {t : set β} {f : α → β} (h : set.bij_on f s t) :
theorem set.bij_on.mk {α : Type u} {β : Type v} {s : set α} {t : set β} {f : α → β} (h₁ : set.maps_to f s t) (h₂ : set.inj_on f s) (h₃ : set.surj_on f s t) :
@[simp]
theorem set.bij_on_empty {α : Type u} {β : Type v} (f : α → β) :
@[simp]
theorem set.bij_on_singleton {α : Type u} {β : Type v} {f : α → β} {a : α} {b : β} :
set.bij_on f {a} {b} ↔ f a = b
theorem set.bij_on.inter_maps_to {α : Type u} {β : Type v} {s₁ s₂ : set α} {t₁ t₂ : set β} {f : α → β} (h₁ : set.bij_on f s₁ t₁) (h₂ : set.maps_to f s₂ t₂) (h₃ : s₁ ∩ f ⁻¹' t₂ ⊆ s₂) :
set.bij_on f (s₁ ∩ s₂) (t₁ ∩ t₂)
theorem set.maps_to.inter_bij_on {α : Type u} {β : Type v} {s₁ s₂ : set α} {t₁ t₂ : set β} {f : α → β} (h₁ : set.maps_to f s₁ t₁) (h₂ : set.bij_on f s₂ t₂) (h₃ : s₂ ∩ f ⁻¹' t₁ ⊆ s₁) :
set.bij_on f (s₁ ∩ s₂) (t₁ ∩ t₂)
theorem set.bij_on.inter {α : Type u} {β : Type v} {s₁ s₂ : set α} {t₁ t₂ : set β} {f : α → β} (h₁ : set.bij_on f s₁ t₁) (h₂ : set.bij_on f s₂ t₂) (h : set.inj_on f (s₁ ∪ s₂)) :
set.bij_on f (s₁ ∩ s₂) (t₁ ∩ t₂)
theorem set.bij_on.union {α : Type u} {β : Type v} {s₁ s₂ : set α} {t₁ t₂ : set β} {f : α → β} (h₁ : set.bij_on f s₁ t₁) (h₂ : set.bij_on f s₂ t₂) (h : set.inj_on f (s₁ ∪ s₂)) :
set.bij_on f (s₁ ∪ s₂) (t₁ ∪ t₂)
theorem set.bij_on.subset_range {α : Type u} {β : Type v} {s : set α} {t : set β} {f : α → β} (h : set.bij_on f s t) :
theorem set.inj_on.bij_on_image {α : Type u} {β : Type v} {s : set α} {f : α → β} (h : set.inj_on f s) :
set.bij_on f s (f '' s)
theorem set.bij_on.congr {α : Type u} {β : Type v} {s : set α} {t : set β} {f₁ f₂ : α → β} (h₁ : set.bij_on f₁ s t) (h : set.eq_on f₁ f₂ s) :
set.bij_on f₂ s t
theorem set.eq_on.bij_on_iff {α : Type u} {β : Type v} {s : set α} {t : set β} {f₁ f₂ : α → β} (H : set.eq_on f₁ f₂ s) :
set.bij_on f₁ s t ↔ set.bij_on f₂ s t
theorem set.bij_on.image_eq {α : Type u} {β : Type v} {s : set α} {t : set β} {f : α → β} (h : set.bij_on f s t) :
f '' s = t
theorem set.bij_on_id {α : Type u} (s : set α) :
theorem set.bij_on.comp {α : Type u} {β : Type v} {γ : Type w} {s : set α} {t : set β} {p : set γ} {f : α → β} {g : β → γ} (hg : set.bij_on g t p) (hf : set.bij_on f s t) :
set.bij_on (g ∘ f) s p
theorem set.bij_on.iterate {α : Type u} {f : α → α} {s : set α} (h : set.bij_on f s s) (n : ℕ) :
theorem set.bij_on_of_subsingleton' {α : Type u} {β : Type v} {s : set α} {t : set β} [subsingleton α] [subsingleton β] (f : α → β) (h : s.nonempty ↔ t.nonempty) :
theorem set.bij_on_of_subsingleton {α : Type u} [subsingleton α] (f : α → α) (s : set α) :
theorem set.bij_on.bijective {α : Type u} {β : Type v} {s : set α} {t : set β} {f : α → β} (h : set.bij_on f s t) :

Alias of the forward direction of set.bijective_iff_bij_on_univ.

theorem set.bij_on.compl {α : Type u} {β : Type v} {s : set α} {t : set β} {f : α → β} (hst : set.bij_on f s t) (hf : function.bijective f) :

left inverse #

def set.left_inv_on {α : Type u} {β : Type v} (f' : β → α) (f : α → β) (s : set α) :
Prop

g is a left inverse to f on a means that g (f x) = x for all x ∈ a.

Equations
@[simp]
theorem set.left_inv_on_empty {α : Type u} {β : Type v} (f' : β → α) (f : α → β) :
@[simp]
theorem set.left_inv_on_singleton {α : Type u} {β : Type v} {f : α → β} {f' : β → α} {a : α} :
set.left_inv_on f' f {a} ↔ f' (f a) = a
theorem set.left_inv_on.eq_on {α : Type u} {β : Type v} {s : set α} {f : α → β} {f' : β → α} (h : set.left_inv_on f' f s) :
set.eq_on (f' ∘ f) id s
theorem set.left_inv_on.eq {α : Type u} {β : Type v} {s : set α} {f : α → β} {f' : β → α} (h : set.left_inv_on f' f s) {x : α} (hx : x ∈ s) :
f' (f x) = x
theorem set.left_inv_on.congr_left {α : Type u} {β : Type v} {s : set α} {f : α → β} {f₁' f₂' : β → α} (h₁ : set.left_inv_on f₁' f s) {t : set β} (h₁' : set.maps_to f s t) (heq : set.eq_on f₁' f₂' t) :
set.left_inv_on f₂' f s
theorem set.left_inv_on.congr_right {α : Type u} {β : Type v} {s : set α} {f₁ f₂ : α → β} {f₁' : β → α} (h₁ : set.left_inv_on f₁' f₁ s) (heq : set.eq_on f₁ f₂ s) :
set.left_inv_on f₁' f₂ s
theorem set.left_inv_on.inj_on {α : Type u} {β : Type v} {s : set α} {f : α → β} {f₁' : β → α} (h : set.left_inv_on f₁' f s) :
theorem set.left_inv_on.surj_on {α : Type u} {β : Type v} {s : set α} {t : set β} {f : α → β} {f' : β → α} (h : set.left_inv_on f' f s) (hf : set.maps_to f s t) :
theorem set.left_inv_on.maps_to {α : Type u} {β : Type v} {s : set α} {t : set β} {f : α → β} {f' : β → α} (h : set.left_inv_on f' f s) (hf : set.surj_on f s t) :
theorem set.left_inv_on_id {α : Type u} (s : set α) :
theorem set.left_inv_on.comp {α : Type u} {β : Type v} {γ : Type w} {s : set α} {t : set β} {f : α → β} {g : β → γ} {f' : β → α} {g' : γ → β} (hf' : set.left_inv_on f' f s) (hg' : set.left_inv_on g' g t) (hf : set.maps_to f s t) :
set.left_inv_on (f' ∘ g') (g ∘ f) s
theorem set.left_inv_on.mono {α : Type u} {β : Type v} {s s₁ : set α} {f : α → β} {f' : β → α} (hf : set.left_inv_on f' f s) (ht : s₁ ⊆ s) :
set.left_inv_on f' f s₁
theorem set.left_inv_on.image_inter' {α : Type u} {β : Type v} {s s₁ : set α} {f : α → β} {f' : β → α} (hf : set.left_inv_on f' f s) :
f '' (s₁ ∩ s) = f' ⁻¹' s₁ ∩ f '' s
theorem set.left_inv_on.image_inter {α : Type u} {β : Type v} {s s₁ : set α} {f : α → β} {f' : β → α} (hf : set.left_inv_on f' f s) :
f '' (s₁ ∩ s) = f' ⁻¹' (s₁ ∩ s) ∩ f '' s
theorem set.left_inv_on.image_image {α : Type u} {β : Type v} {s : set α} {f : α → β} {f' : β → α} (hf : set.left_inv_on f' f s) :
f' '' (f '' s) = s
theorem set.left_inv_on.image_image' {α : Type u} {β : Type v} {s s₁ : set α} {f : α → β} {f' : β → α} (hf : set.left_inv_on f' f s) (hs : s₁ ⊆ s) :
f' '' (f '' s₁) = s₁

Right inverse #

@[reducible]
def set.right_inv_on {α : Type u} {β : Type v} (f' : β → α) (f : α → β) (t : set β) :
Prop

g is a right inverse to f on b if f (g x) = x for all x ∈ b.

Equations
@[simp]
theorem set.right_inv_on_empty {α : Type u} {β : Type v} (f' : β → α) (f : α → β) :
@[simp]
theorem set.right_inv_on_singleton {α : Type u} {β : Type v} {f : α → β} {f' : β → α} {b : β} :
set.right_inv_on f' f {b} ↔ f (f' b) = b
theorem set.right_inv_on.eq_on {α : Type u} {β : Type v} {t : set β} {f : α → β} {f' : β → α} (h : set.right_inv_on f' f t) :
set.eq_on (f ∘ f') id t
theorem set.right_inv_on.eq {α : Type u} {β : Type v} {t : set β} {f : α → β} {f' : β → α} (h : set.right_inv_on f' f t) {y : β} (hy : y ∈ t) :
f (f' y) = y
theorem set.left_inv_on.right_inv_on_image {α : Type u} {β : Type v} {s : set α} {f : α → β} {f' : β → α} (h : set.left_inv_on f' f s) :
set.right_inv_on f' f (f '' s)
theorem set.right_inv_on.congr_left {α : Type u} {β : Type v} {t : set β} {f : α → β} {f₁' f₂' : β → α} (h₁ : set.right_inv_on f₁' f t) (heq : set.eq_on f₁' f₂' t) :
theorem set.right_inv_on.congr_right {α : Type u} {β : Type v} {s : set α} {t : set β} {f₁ f₂ : α → β} {f' : β → α} (h₁ : set.right_inv_on f' f₁ t) (hg : set.maps_to f' t s) (heq : set.eq_on f₁ f₂ s) :
theorem set.right_inv_on.surj_on {α : Type u} {β : Type v} {s : set α} {t : set β} {f : α → β} {f' : β → α} (hf : set.right_inv_on f' f t) (hf' : set.maps_to f' t s) :
theorem set.right_inv_on.maps_to {α : Type u} {β : Type v} {s : set α} {t : set β} {f : α → β} {f' : β → α} (h : set.right_inv_on f' f t) (hf : set.surj_on f' t s) :
theorem set.right_inv_on_id {α : Type u} (s : set α) :
theorem set.right_inv_on.comp {α : Type u} {β : Type v} {γ : Type w} {t : set β} {p : set γ} {f : α → β} {g : β → γ} {f' : β → α} {g' : γ → β} (hf : set.right_inv_on f' f t) (hg : set.right_inv_on g' g p) (g'pt : set.maps_to g' p t) :
set.right_inv_on (f' ∘ g') (g ∘ f) p
theorem set.right_inv_on.mono {α : Type u} {β : Type v} {t t₁ : set β} {f : α → β} {f' : β → α} (hf : set.right_inv_on f' f t) (ht : t₁ ⊆ t) :
theorem set.inj_on.right_inv_on_of_left_inv_on {α : Type u} {β : Type v} {s : set α} {t : set β} {f : α → β} {f' : β → α} (hf : set.inj_on f s) (hf' : set.left_inv_on f f' t) (h₁ : set.maps_to f s t) (h₂ : set.maps_to f' t s) :
theorem set.eq_on_of_left_inv_on_of_right_inv_on {α : Type u} {β : Type v} {s : set α} {t : set β} {f : α → β} {f₁' f₂' : β → α} (h₁ : set.left_inv_on f₁' f s) (h₂ : set.right_inv_on f₂' f t) (h : set.maps_to f₂' t s) :
set.eq_on f₁' f₂' t
theorem set.surj_on.left_inv_on_of_right_inv_on {α : Type u} {β : Type v} {s : set α} {t : set β} {f : α → β} {f' : β → α} (hf : set.surj_on f s t) (hf' : set.right_inv_on f f' s) :

Two-side inverses #

def set.inv_on {α : Type u} {β : Type v} (g : β → α) (f : α → β) (s : set α) (t : set β) :
Prop

g is an inverse to f viewed as a map from a to b

Equations
@[simp]
theorem set.inv_on_empty {α : Type u} {β : Type v} (f' : β → α) (f : α → β) :
@[simp]
theorem set.inv_on_singleton {α : Type u} {β : Type v} {f : α → β} {f' : β → α} {a : α} {b : β} :
set.inv_on f' f {a} {b} ↔ f' (f a) = a ∧ f (f' b) = b
theorem set.inv_on.symm {α : Type u} {β : Type v} {s : set α} {t : set β} {f : α → β} {f' : β → α} (h : set.inv_on f' f s t) :
set.inv_on f f' t s
theorem set.inv_on_id {α : Type u} (s : set α) :
theorem set.inv_on.comp {α : Type u} {β : Type v} {γ : Type w} {s : set α} {t : set β} {p : set γ} {f : α → β} {g : β → γ} {f' : β → α} {g' : γ → β} (hf : set.inv_on f' f s t) (hg : set.inv_on g' g t p) (fst : set.maps_to f s t) (g'pt : set.maps_to g' p t) :
set.inv_on (f' ∘ g') (g ∘ f) s p
theorem set.inv_on.mono {α : Type u} {β : Type v} {s s₁ : set α} {t t₁ : set β} {f : α → β} {f' : β → α} (h : set.inv_on f' f s t) (hs : s₁ ⊆ s) (ht : t₁ ⊆ t) :
set.inv_on f' f s₁ t₁
theorem set.inv_on.bij_on {α : Type u} {β : Type v} {s : set α} {t : set β} {f : α → β} {f' : β → α} (h : set.inv_on f' f s t) (hf : set.maps_to f s t) (hf' : set.maps_to f' t s) :

If functions f' and f are inverse on s and t, f maps s into t, and f' maps t into s, then f is a bijection between s and t. The maps_to arguments can be deduced from surj_on statements using left_inv_on.maps_to and right_inv_on.maps_to.

theorem set.bij_on.symm {α : Type u} {β : Type v} {s : set α} {t : set β} {f : α → β} {g : β → α} (h : set.inv_on f g t s) (hf : set.bij_on f s t) :
theorem set.bij_on_comm {α : Type u} {β : Type v} {s : set α} {t : set β} {f : α → β} {g : β → α} (h : set.inv_on f g t s) :

inv_fun_on is a left/right inverse #

noncomputable def function.inv_fun_on {α : Type u} {β : Type v} [nonempty α] (f : α → β) (s : set α) (b : β) :
α

Construct the inverse for a function f on domain s. This function is a right inverse of f on f '' s. For a computable version, see function.injective.inv_of_mem_range.

Equations
theorem function.inv_fun_on_pos {α : Type u} {β : Type v} [nonempty α] {s : set α} {f : α → β} {b : β} (h : ∃ (a : α) (H : a ∈ s), f a = b) :
theorem function.inv_fun_on_mem {α : Type u} {β : Type v} [nonempty α] {s : set α} {f : α → β} {b : β} (h : ∃ (a : α) (H : a ∈ s), f a = b) :
theorem function.inv_fun_on_eq {α : Type u} {β : Type v} [nonempty α] {s : set α} {f : α → β} {b : β} (h : ∃ (a : α) (H : a ∈ s), f a = b) :
theorem function.inv_fun_on_neg {α : Type u} {β : Type v} [nonempty α] {s : set α} {f : α → β} {b : β} (h : ¬∃ (a : α) (H : a ∈ s), f a = b) :
@[simp]
theorem function.inv_fun_on_apply_mem {α : Type u} {β : Type v} [nonempty α] {s : set α} {f : α → β} {a : α} (h : a ∈ s) :
theorem function.inv_fun_on_apply_eq {α : Type u} {β : Type v} [nonempty α] {s : set α} {f : α → β} {a : α} (h : a ∈ s) :
f (function.inv_fun_on f s (f a)) = f a
theorem set.inj_on.left_inv_on_inv_fun_on {α : Type u} {β : Type v} {s : set α} {f : α → β} [nonempty α] (h : set.inj_on f s) :
theorem set.inj_on.inv_fun_on_image {α : Type u} {β : Type v} {s₁ s₂ : set α} {f : α → β} [nonempty α] (h : set.inj_on f s₂) (ht : s₁ ⊆ s₂) :
function.inv_fun_on f s₂ '' (f '' s₁) = s₁
theorem set.surj_on.right_inv_on_inv_fun_on {α : Type u} {β : Type v} {s : set α} {t : set β} {f : α → β} [nonempty α] (h : set.surj_on f s t) :
theorem set.bij_on.inv_on_inv_fun_on {α : Type u} {β : Type v} {s : set α} {t : set β} {f : α → β} [nonempty α] (h : set.bij_on f s t) :
theorem set.surj_on.inv_on_inv_fun_on {α : Type u} {β : Type v} {s : set α} {t : set β} {f : α → β} [nonempty α] (h : set.surj_on f s t) :
theorem set.surj_on.maps_to_inv_fun_on {α : Type u} {β : Type v} {s : set α} {t : set β} {f : α → β} [nonempty α] (h : set.surj_on f s t) :
theorem set.surj_on.bij_on_subset {α : Type u} {β : Type v} {s : set α} {t : set β} {f : α → β} [nonempty α] (h : set.surj_on f s t) :
theorem set.surj_on_iff_exists_bij_on_subset {α : Type u} {β : Type v} {s : set α} {t : set β} {f : α → β} :
set.surj_on f s t ↔ ∃ (s' : set α) (H : s' ⊆ s), set.bij_on f s' t
theorem set.preimage_inv_fun_of_mem {α : Type u} {β : Type v} [n : nonempty α] {f : α → β} (hf : function.injective f) {s : set α} (h : classical.choice n ∈ s) :
theorem set.preimage_inv_fun_of_not_mem {α : Type u} {β : Type v} [n : nonempty α] {f : α → β} (hf : function.injective f) {s : set α} (h : classical.choice n ∉ s) :

Monotone #

@[protected]
theorem monotone.restrict {α : Type u} {β : Type v} [preorder α] [preorder β] {f : α → β} (h : monotone f) (s : set α) :
@[protected]
theorem monotone.cod_restrict {α : Type u} {β : Type v} [preorder α] [preorder β] {f : α → β} (h : monotone f) {s : set β} (hs : ∀ (x : α), f x ∈ s) :
@[protected]
theorem monotone.range_factorization {α : Type u} {β : Type v} [preorder α] [preorder β] {f : α → β} (h : monotone f) :

Piecewise defined function #

@[simp]
theorem set.piecewise_empty {α : Type u} {δ : α → Sort y} (f g : Π (i : α), δ i) [Π (i : α), decidable (i ∈ ∅)] :
@[simp]
theorem set.piecewise_univ {α : Type u} {δ : α → Sort y} (f g : Π (i : α), δ i) [Π (i : α), decidable (i ∈ set.univ)] :
@[simp]
theorem set.piecewise_insert_self {α : Type u} {δ : α → Sort y} (s : set α) (f g : Π (i : α), δ i) {j : α} [Π (i : α), decidable (i ∈ has_insert.insert j s)] :
(has_insert.insert j s).piecewise f g j = f j
@[protected, instance]
def set.compl.decidable_mem {α : Type u} (s : set α) [Π (j : α), decidable (j ∈ s)] (j : α) :
Equations
theorem set.piecewise_insert {α : Type u} {δ : α → Sort y} (s : set α) (f g : Π (i : α), δ i) [Π (j : α), decidable (j ∈ s)] [decidable_eq α] (j : α) [Π (i : α), decidable (i ∈ has_insert.insert j s)] :
@[simp]
theorem set.piecewise_eq_of_mem {α : Type u} {δ : α → Sort y} (s : set α) (f g : Π (i : α), δ i) [Π (j : α), decidable (j ∈ s)] {i : α} (hi : i ∈ s) :
s.piecewise f g i = f i
@[simp]
theorem set.piecewise_eq_of_not_mem {α : Type u} {δ : α → Sort y} (s : set α) (f g : Π (i : α), δ i) [Π (j : α), decidable (j ∈ s)] {i : α} (hi : i ∉ s) :
s.piecewise f g i = g i
theorem set.piecewise_singleton {α : Type u} {β : Type v} (x : α) [Π (y : α), decidable (y ∈ {x})] [decidable_eq α] (f g : α → β) :
{x}.piecewise f g = function.update g x (f x)
theorem set.piecewise_eq_on {α : Type u} {β : Type v} (s : set α) [Π (j : α), decidable (j ∈ s)] (f g : α → β) :
set.eq_on (s.piecewise f g) f s
theorem set.piecewise_eq_on_compl {α : Type u} {β : Type v} (s : set α) [Π (j : α), decidable (j ∈ s)] (f g : α → β) :
theorem set.piecewise_le {α : Type u} {δ : α → Type u_1} [Π (i : α), preorder (δ i)] {s : set α} [Π (j : α), decidable (j ∈ s)] {f₁ f₂ g : Π (i : α), δ i} (h₁ : ∀ (i : α), i ∈ s → f₁ i ≤ g i) (h₂ : ∀ (i : α), i ∉ s → f₂ i ≤ g i) :
s.piecewise f₁ f₂ ≤ g
theorem set.le_piecewise {α : Type u} {δ : α → Type u_1} [Π (i : α), preorder (δ i)] {s : set α} [Π (j : α), decidable (j ∈ s)] {f₁ f₂ g : Π (i : α), δ i} (h₁ : ∀ (i : α), i ∈ s → g i ≤ f₁ i) (h₂ : ∀ (i : α), i ∉ s → g i ≤ f₂ i) :
g ≤ s.piecewise f₁ f₂
theorem set.piecewise_le_piecewise {α : Type u} {δ : α → Type u_1} [Π (i : α), preorder (δ i)] {s : set α} [Π (j : α), decidable (j ∈ s)] {f₁ f₂ g₁ g₂ : Π (i : α), δ i} (h₁ : ∀ (i : α), i ∈ s → f₁ i ≤ g₁ i) (h₂ : ∀ (i : α), i ∉ s → f₂ i ≤ g₂ i) :
s.piecewise f₁ f₂ ≤ s.piecewise g₁ g₂
@[simp]
theorem set.piecewise_insert_of_ne {α : Type u} {δ : α → Sort y} (s : set α) (f g : Π (i : α), δ i) [Π (j : α), decidable (j ∈ s)] {i j : α} (h : i ≠ j) [Π (i : α), decidable (i ∈ has_insert.insert j s)] :
@[simp]
theorem set.piecewise_compl {α : Type u} {δ : α → Sort y} (s : set α) (f g : Π (i : α), δ i) [Π (j : α), decidable (j ∈ s)] [Π (i : α), decidable (i ∈ sᶜ)] :
@[simp]
theorem set.piecewise_range_comp {α : Type u} {β : Type v} {ι : Sort u_1} (f : ι → α) [Π (j : α), decidable (j ∈ set.range f)] (g₁ g₂ : α → β) :
(set.range f).piecewise g₁ g₂ ∘ f = g₁ ∘ f
theorem set.maps_to.piecewise_ite {α : Type u} {β : Type v} {s s₁ s₂ : set α} {t t₁ t₂ : set β} {f₁ f₂ : α → β} [Π (i : α), decidable (i ∈ s)] (h₁ : set.maps_to f₁ (s₁ ∩ s) (t₁ ∩ t)) (h₂ : set.maps_to f₂ (s₂ ∩ sᶜ) (t₂ ∩ tᶜ)) :
set.maps_to (s.piecewise f₁ f₂) (s.ite s₁ s₂) (t.ite t₁ t₂)
theorem set.eq_on_piecewise {α : Type u} {β : Type v} (s : set α) [Π (j : α), decidable (j ∈ s)] {f f' g : α → β} {t : set α} :
set.eq_on (s.piecewise f f') g t ↔ set.eq_on f g (t ∩ s) ∧ set.eq_on f' g (t ∩ sᶜ)
theorem set.eq_on.piecewise_ite' {α : Type u} {β : Type v} (s : set α) [Π (j : α), decidable (j ∈ s)] {f f' g : α → β} {t t' : set α} (h : set.eq_on f g (t ∩ s)) (h' : set.eq_on f' g (t' ∩ sᶜ)) :
set.eq_on (s.piecewise f f') g (s.ite t t')
theorem set.eq_on.piecewise_ite {α : Type u} {β : Type v} (s : set α) [Π (j : α), decidable (j ∈ s)] {f f' g : α → β} {t t' : set α} (h : set.eq_on f g t) (h' : set.eq_on f' g t') :
set.eq_on (s.piecewise f f') g (s.ite t t')
theorem set.piecewise_preimage {α : Type u} {β : Type v} (s : set α) [Π (j : α), decidable (j ∈ s)] (f g : α → β) (t : set β) :
s.piecewise f g ⁻¹' t = s.ite (f ⁻¹' t) (g ⁻¹' t)
theorem set.apply_piecewise {α : Type u} {δ : α → Sort y} (s : set α) (f g : Π (i : α), δ i) [Π (j : α), decidable (j ∈ s)] {δ' : α → Sort u_1} (h : Π (i : α), δ i → δ' i) {x : α} :
h x (s.piecewise f g x) = s.piecewise (λ (x : α), h x (f x)) (λ (x : α), h x (g x)) x
theorem set.apply_piecewise₂ {α : Type u} {δ : α → Sort y} (s : set α) (f g : Π (i : α), δ i) [Π (j : α), decidable (j ∈ s)] {δ' : α → Sort u_1} {δ'' : α → Sort u_2} (f' g' : Π (i : α), δ' i) (h : Π (i : α), δ i → δ' i → δ'' i) {x : α} :
h x (s.piecewise f g x) (s.piecewise f' g' x) = s.piecewise (λ (x : α), h x (f x) (f' x)) (λ (x : α), h x (g x) (g' x)) x
theorem set.piecewise_op {α : Type u} {δ : α → Sort y} (s : set α) (f g : Π (i : α), δ i) [Π (j : α), decidable (j ∈ s)] {δ' : α → Sort u_1} (h : Π (i : α), δ i → δ' i) :
s.piecewise (λ (x : α), h x (f x)) (λ (x : α), h x (g x)) = λ (x : α), h x (s.piecewise f g x)
theorem set.piecewise_op₂ {α : Type u} {δ : α → Sort y} (s : set α) (f g : Π (i : α), δ i) [Π (j : α), decidable (j ∈ s)] {δ' : α → Sort u_1} {δ'' : α → Sort u_2} (f' g' : Π (i : α), δ' i) (h : Π (i : α), δ i → δ' i → δ'' i) :
s.piecewise (λ (x : α), h x (f x) (f' x)) (λ (x : α), h x (g x) (g' x)) = λ (x : α), h x (s.piecewise f g x) (s.piecewise f' g' x)
@[simp]
theorem set.piecewise_same {α : Type u} {δ : α → Sort y} (s : set α) (f : Π (i : α), δ i) [Π (j : α), decidable (j ∈ s)] :
s.piecewise f f = f
theorem set.range_piecewise {α : Type u} {β : Type v} (s : set α) [Π (j : α), decidable (j ∈ s)] (f g : α → β) :
set.range (s.piecewise f g) = f '' s ∪ g '' sᶜ
theorem set.injective_piecewise_iff {α : Type u} {β : Type v} (s : set α) [Π (j : α), decidable (j ∈ s)] {f g : α → β} :
function.injective (s.piecewise f g) ↔ set.inj_on f s ∧ set.inj_on g sᶜ ∧ ∀ (x : α), x ∈ s → ∀ (y : α), y ∉ s → f x ≠ g y
theorem set.piecewise_mem_pi {α : Type u} (s : set α) [Π (j : α), decidable (j ∈ s)] {δ : α → Type u_1} {t : set α} {t' : Π (i : α), set (δ i)} {f g : Π (i : α), δ i} (hf : f ∈ t.pi t') (hg : g ∈ t.pi t') :
s.piecewise f g ∈ t.pi t'
@[simp]
theorem set.pi_piecewise {ι : Type u_1} {α : ι → Type u_2} (s s' : set ι) (t t' : Π (i : ι), set (α i)) [Π (x : ι), decidable (x ∈ s')] :
s.pi (s'.piecewise t t') = (s ∩ s').pi t ∩ (s \ s').pi t'
theorem set.univ_pi_piecewise {ι : Type u_1} {α : ι → Type u_2} (s : set ι) (t : Π (i : ι), set (α i)) [Π (x : ι), decidable (x ∈ s)] :
set.univ.pi (s.piecewise t (λ (_x : ι), set.univ)) = s.pi t
theorem strict_mono_on.inj_on {α : Type u} {β : Type v} [linear_order α] [preorder β] {f : α → β} {s : set α} (H : strict_mono_on f s) :
theorem strict_anti_on.inj_on {α : Type u} {β : Type v} [linear_order α] [preorder β] {f : α → β} {s : set α} (H : strict_anti_on f s) :
theorem strict_mono_on.comp {α : Type u} {β : Type v} {γ : Type w} [preorder α] [preorder β] [preorder γ] {g : β → γ} {f : α → β} {s : set α} {t : set β} (hg : strict_mono_on g t) (hf : strict_mono_on f s) (hs : set.maps_to f s t) :
theorem strict_mono_on.comp_strict_anti_on {α : Type u} {β : Type v} {γ : Type w} [preorder α] [preorder β] [preorder γ] {g : β → γ} {f : α → β} {s : set α} {t : set β} (hg : strict_mono_on g t) (hf : strict_anti_on f s) (hs : set.maps_to f s t) :
theorem strict_anti_on.comp {α : Type u} {β : Type v} {γ : Type w} [preorder α] [preorder β] [preorder γ] {g : β → γ} {f : α → β} {s : set α} {t : set β} (hg : strict_anti_on g t) (hf : strict_anti_on f s) (hs : set.maps_to f s t) :
theorem strict_anti_on.comp_strict_mono_on {α : Type u} {β : Type v} {γ : Type w} [preorder α] [preorder β] [preorder γ] {g : β → γ} {f : α → β} {s : set α} {t : set β} (hg : strict_anti_on g t) (hf : strict_mono_on f s) (hs : set.maps_to f s t) :
@[simp]
theorem strict_mono_restrict {α : Type u} {β : Type v} [preorder α] [preorder β] {f : α → β} {s : set α} :
theorem strict_mono.of_restrict {α : Type u} {β : Type v} [preorder α] [preorder β] {f : α → β} {s : set α} :

Alias of the forward direction of strict_mono_restrict.

theorem strict_mono_on.restrict {α : Type u} {β : Type v} [preorder α] [preorder β] {f : α → β} {s : set α} :

Alias of the reverse direction of strict_mono_restrict.

theorem strict_mono.cod_restrict {α : Type u} {β : Type v} [preorder α] [preorder β] {f : α → β} (hf : strict_mono f) {s : set β} (hs : ∀ (x : α), f x ∈ s) :
theorem function.injective.comp_inj_on {α : Type u} {β : Type v} {γ : Type w} {f : α → β} {g : β → γ} {s : set α} (hg : function.injective g) (hf : set.inj_on f s) :
set.inj_on (g ∘ f) s
theorem function.surjective.surj_on {α : Type u} {β : Type v} {f : α → β} (hf : function.surjective f) (s : set β) :
theorem function.left_inverse.left_inv_on {α : Type u} {β : Type v} {f : α → β} {g : β → α} (h : function.left_inverse f g) (s : set β) :
theorem function.right_inverse.right_inv_on {α : Type u} {β : Type v} {f : α → β} {g : β → α} (h : function.right_inverse f g) (s : set α) :
theorem function.left_inverse.right_inv_on_range {α : Type u} {β : Type v} {f : α → β} {g : β → α} (h : function.left_inverse f g) :
theorem function.semiconj.maps_to_image {α : Type u} {β : Type v} {fa : α → α} {fb : β → β} {f : α → β} {s t : set α} (h : function.semiconj f fa fb) (ha : set.maps_to fa s t) :
set.maps_to fb (f '' s) (f '' t)
theorem function.semiconj.maps_to_range {α : Type u} {β : Type v} {fa : α → α} {fb : β → β} {f : α → β} (h : function.semiconj f fa fb) :
theorem function.semiconj.surj_on_image {α : Type u} {β : Type v} {fa : α → α} {fb : β → β} {f : α → β} {s t : set α} (h : function.semiconj f fa fb) (ha : set.surj_on fa s t) :
set.surj_on fb (f '' s) (f '' t)
theorem function.semiconj.surj_on_range {α : Type u} {β : Type v} {fa : α → α} {fb : β → β} {f : α → β} (h : function.semiconj f fa fb) (ha : function.surjective fa) :
theorem function.semiconj.inj_on_image {α : Type u} {β : Type v} {fa : α → α} {fb : β → β} {f : α → β} {s : set α} (h : function.semiconj f fa fb) (ha : set.inj_on fa s) (hf : set.inj_on f (fa '' s)) :
set.inj_on fb (f '' s)
theorem function.semiconj.inj_on_range {α : Type u} {β : Type v} {fa : α → α} {fb : β → β} {f : α → β} (h : function.semiconj f fa fb) (ha : function.injective fa) (hf : set.inj_on f (set.range fa)) :
theorem function.semiconj.bij_on_image {α : Type u} {β : Type v} {fa : α → α} {fb : β → β} {f : α → β} {s t : set α} (h : function.semiconj f fa fb) (ha : set.bij_on fa s t) (hf : set.inj_on f t) :
set.bij_on fb (f '' s) (f '' t)
theorem function.semiconj.bij_on_range {α : Type u} {β : Type v} {fa : α → α} {fb : β → β} {f : α → β} (h : function.semiconj f fa fb) (ha : function.bijective fa) (hf : function.injective f) :
theorem function.semiconj.maps_to_preimage {α : Type u} {β : Type v} {fa : α → α} {fb : β → β} {f : α → β} (h : function.semiconj f fa fb) {s t : set β} (hb : set.maps_to fb s t) :
set.maps_to fa (f ⁻¹' s) (f ⁻¹' t)
theorem function.semiconj.inj_on_preimage {α : Type u} {β : Type v} {fa : α → α} {fb : β → β} {f : α → β} (h : function.semiconj f fa fb) {s : set β} (hb : set.inj_on fb s) (hf : set.inj_on f (f ⁻¹' s)) :
theorem function.update_comp_eq_of_not_mem_range' {α : Sort u_1} {β : Type u_2} {γ : β → Sort u_3} [decidable_eq β] (g : Π (b : β), γ b) {f : α → β} {i : β} (a : γ i) (h : i ∉ set.range f) :
(λ (j : α), function.update g i a (f j)) = λ (j : α), g (f j)
theorem function.update_comp_eq_of_not_mem_range {α : Sort u_1} {β : Type u_2} {γ : Sort u_3} [decidable_eq β] (g : β → γ) {f : α → β} {i : β} (a : γ) (h : i ∉ set.range f) :
function.update g i a ∘ f = g ∘ f

Non-dependent version of function.update_comp_eq_of_not_mem_range'

theorem function.insert_inj_on {α : Type u} (s : set α) :
set.inj_on (λ (a : α), has_insert.insert a s) sᶜ
theorem function.monotone_on_of_right_inv_on_of_maps_to {α : Type u} {β : Type v} [partial_order α] [linear_order β] {φ : β → α} {ψ : α → β} {t : set β} {s : set α} (hφ : monotone_on φ t) (φψs : set.right_inv_on ψ φ s) (ψts : set.maps_to ψ s t) :
theorem function.antitone_on_of_right_inv_on_of_maps_to {α : Type u} {β : Type v} [partial_order α] [linear_order β] {φ : β → α} {ψ : α → β} {t : set β} {s : set α} (hφ : antitone_on φ t) (φψs : set.right_inv_on ψ φ s) (ψts : set.maps_to ψ s t) :

Equivalences, permutations #

@[protected]
theorem set.maps_to.extend_domain {α : Type u} {β : Type v} {p : β → Prop} [decidable_pred p] {f : α ≃ subtype p} {g : equiv.perm α} {s t : set α} (h : set.maps_to ⇑g s t) :
@[protected]
theorem set.surj_on.extend_domain {α : Type u} {β : Type v} {p : β → Prop} [decidable_pred p] {f : α ≃ subtype p} {g : equiv.perm α} {s t : set α} (h : set.surj_on ⇑g s t) :
@[protected]
theorem set.bij_on.extend_domain {α : Type u} {β : Type v} {p : β → Prop} [decidable_pred p] {f : α ≃ subtype p} {g : equiv.perm α} {s t : set α} (h : set.bij_on ⇑g s t) :
@[protected]
theorem set.left_inv_on.extend_domain {α : Type u} {β : Type v} {p : β → Prop} [decidable_pred p] {f : α ≃ subtype p} {g₁ g₂ : equiv.perm α} {s : set α} (h : set.left_inv_on ⇑g₁ ⇑g₂ s) :
@[protected]
theorem set.right_inv_on.extend_domain {α : Type u} {β : Type v} {p : β → Prop} [decidable_pred p] {f : α ≃ subtype p} {g₁ g₂ : equiv.perm α} {t : set α} (h : set.right_inv_on ⇑g₁ ⇑g₂ t) :
@[protected]
theorem set.inv_on.extend_domain {α : Type u} {β : Type v} {p : β → Prop} [decidable_pred p] {f : α ≃ subtype p} {g₁ g₂ : equiv.perm α} {s t : set α} (h : set.inv_on ⇑g₁ ⇑g₂ s t) :
theorem equiv.bij_on' {α : Type u} {β : Type v} (e : α ≃ β) {s : set α} {t : set β} (h₁ : set.maps_to ⇑e s t) (h₂ : set.maps_to ⇑(e.symm) t s) :
@[protected]
theorem equiv.bij_on {α : Type u} {β : Type v} (e : α ≃ β) {s : set α} {t : set β} (h : ∀ (a : α), ⇑e a ∈ t ↔ a ∈ s) :
theorem equiv.inv_on {α : Type u} {β : Type v} (e : α ≃ β) {s : set α} {t : set β} :
theorem equiv.bij_on_image {α : Type u} {β : Type v} (e : α ≃ β) {s : set α} :
theorem equiv.bij_on_symm_image {α : Type u} {β : Type v} (e : α ≃ β) {s : set α} :
@[simp]
theorem equiv.bij_on_symm {α : Type u} {β : Type v} {e : α ≃ β} {s : set α} {t : set β} :
theorem set.bij_on.equiv_symm {α : Type u} {β : Type v} {e : α ≃ β} {s : set α} {t : set β} :

Alias of the reverse direction of equiv.bij_on_symm.

theorem set.bij_on.of_equiv_symm {α : Type u} {β : Type v} {e : α ≃ β} {s : set α} {t : set β} :

Alias of the forward direction of equiv.bij_on_symm.

theorem equiv.bij_on_swap {α : Type u} {s : set α} [decidable_eq α] {a b : α} (ha : a ∈ s) (hb : b ∈ s) :