Equations
- f ⁻¹' x = (Relation.graph f).preimage x
Instances For
Equations
- Set.term_''_ = Lean.ParserDescr.trailingNode `Set.term_''_ 80 80 (Lean.ParserDescr.binary `andthen (Lean.ParserDescr.symbol " '' ") (Lean.ParserDescr.cat `term 81))
Instances For
Equations
- Set.«term_⁻¹'_» = Lean.ParserDescr.trailingNode `Set.«term_⁻¹'_» 80 80 (Lean.ParserDescr.binary `andthen (Lean.ParserDescr.symbol " ⁻¹' ") (Lean.ParserDescr.cat `term 81))
Instances For
Equations
- Function.IsConstant f = ∀ (a a' : α), f a = f a'
Instances For
@[simp]
Equations
- Function.fixpoints f = {a : α | f a = a}
Instances For
@[simp]
theorem
Function.mem_fixpoints
{α : Type u_1}
{f : α → α}
{a : α}
:
a ∈ Function.fixpoints f ↔ f a = a
theorem
Function.fixpoints_subset_comp_self
{α : Type u_1}
{f : α → α}
:
Function.fixpoints f ⊆ Function.fixpoints (f ∘ f)
Equations
- Function.is_extension g f = ∀ (a : ↥x), f a = g a.val
Instances For
Equations
- Function.«term_|__» = Lean.ParserDescr.trailingNode `Function.«term_|__» 90 90 (Lean.ParserDescr.binary `andthen (Lean.ParserDescr.symbol "|_") (Lean.ParserDescr.cat `term 91))
Instances For
@[simp]
theorem
Function.is_extension_of_restriction
{α : Type u_1}
{β : Type u_2}
{f : α → β}
{x : Set α}
:
Function.is_extension f (f|_x)
@[simp]
theorem
Function.restriction_const
{α : Type u_1}
{β : Type u_2}
{x : Set α}
{b : β}
:
Function.const α b|_x = Function.const (↥x) b
Equations
- Function.Injective f = ∀ (a a' : α), f a = f a' → a = a'
Instances For
theorem
Function.Injective.eq_iff
{α : Type u_1}
{β : Type u_2}
{f : α → β}
(h : Function.Injective f)
{a a' : α}
:
theorem
Function.inj_iff_neq_of_neq
{α : Type u_1}
{β : Type u_2}
{f : α → β}
:
Function.Injective f ↔ ∀ (a a' : α), a ≠ a' → f a ≠ f a'
theorem
Function.Injective.comp
{α : Type u_1}
{β : Type u_2}
{γ : Type u_3}
{f : α → β}
{g : γ → α}
(h : Function.Injective f)
(h' : Function.Injective g)
:
Function.Injective (f ∘ g)
theorem
Function.inj_of_comp_inj
{α : Type u_1}
{β : Type u_2}
{γ : Type u_3}
{f : α → β}
{g : γ → α}
(h : Function.Injective (f ∘ g))
:
theorem
Function.restriction_inj_of_comp_inj
{α : Type u_1}
{β : Type u_2}
{γ : Type u_3}
{f : α → β}
{g : γ → α}
(h : Function.Injective (f ∘ g))
:
Function.Injective (f|_(g '' Set.univ))
@[simp]
theorem
Function.comp_self_inj_iff_inj
{α : Type u_1}
{f : α → α}
:
Function.Injective (f ∘ f) ↔ Function.Injective f
theorem
Function.Injective.restriction
{α : Type u_1}
{β : Type u_2}
{f : α → β}
(h : Function.Injective f)
{x : Set α}
:
Function.Injective (f|_x)
theorem
Function.Injective.preimage_image
{α : Type u_1}
{β : Type u_2}
{f : α → β}
(h : Function.Injective f)
{x : Set α}
:
Equations
- Function.Surjective f = (f '' Set.univ = Set.univ)
Instances For
@[simp]
theorem
Function.surj_iff
{α : Type u_1}
{β : Type u_2}
{f : α → β}
:
Function.Surjective f ↔ ∀ (b : β), ∃ (a : α), b = f a
theorem
Function.Surjective.exists_preimage
{α : Type u_1}
{β : Type u_2}
{f : α → β}
(h : Function.Surjective f)
(b : β)
:
∃ (a : α), b = f a
theorem
Function.Surjective.comp
{α : Type u_1}
{β : Type u_2}
{γ : Type u_3}
{f : α → β}
{g : γ → α}
(h : Function.Surjective f)
(h' : Function.Surjective g)
:
Function.Surjective (f ∘ g)
theorem
Function.surj_of_comp_surj
{α : Type u_1}
{β : Type u_2}
{γ : Type u_3}
{f : α → β}
{g : γ → α}
(h : Function.Surjective (f ∘ g))
:
theorem
Function.surj_iff_preimage_nonempty
{α : Type u_1}
{β : Type u_2}
{f : α → β}
:
Function.Surjective f ↔ ∀ (b : β), (f ⁻¹' {b}).Nonempty
@[simp]
theorem
Function.comp_self_surj_iff_surj
{α : Type u_1}
{f : α → α}
:
Function.Surjective (f ∘ f) ↔ Function.Surjective f
theorem
Function.surjective_of_restriction
{α : Type u_1}
{β : Type u_2}
{f : α → β}
{x : Set α}
(h : Function.Surjective (f|_x))
:
theorem
Function.Surjective.image_preimage
{α : Type u_1}
{β : Type u_2}
{f : α → β}
(h : Function.Surjective f)
{y : Set β}
:
def
Function.corestrict
{α : Type u_1}
{β : Type u_2}
(f : α → β)
{y : Set β}
(h : f '' Set.univ ⊆ y)
:
α → ↥y
Equations
- Function.corestrict f h a = ⟨f a, ⋯⟩
Instances For
@[simp]
theorem
Function.coe_corestrict
{α : Type u_1}
{β : Type u_2}
{f : α → β}
{y : Set β}
{h : f '' Set.univ ⊆ y}
{a : α}
:
(Function.corestrict f h a).val = f a
@[simp]
theorem
Function.corestrict_eq_iff
{α : Type u_1}
{β : Type u_2}
{f g : α → β}
{y : Set β}
{h : f '' Set.univ ⊆ y}
{h' : g '' Set.univ ⊆ y}
:
Function.corestrict f h = Function.corestrict g h' ↔ f = g
Equations
Instances For
theorem
Function.Bijective.inj
{α : Type u_1}
{β : Type u_2}
{f : α → β}
(h : Function.Bijective f)
:
theorem
Function.Bijective.surj
{α : Type u_1}
{β : Type u_2}
{f : α → β}
(h : Function.Bijective f)
:
theorem
Function.Bijective.comp
{α : Type u_1}
{β : Type u_2}
{γ : Type u_3}
{f : α → β}
{g : γ → α}
(h : Function.Bijective f)
(h' : Function.Bijective g)
:
Function.Bijective (f ∘ g)
theorem
Function.bij_iff_inv_functional
{α : Type u_1}
{β : Type u_2}
{f : α → β}
:
Function.Bijective f ↔ (Relation.graph f).inv.Functional
noncomputable def
Function.Bijective.inv
{α : Type u_1}
{β : Type u_2}
{f : α → β}
(h : Function.Bijective f)
(b : β)
:
α
Equations
- h.inv b = ⋯.choose
Instances For
@[simp]
theorem
Function.Bijective.inv_val_iff
{α : Type u_1}
{β : Type u_2}
{f : α → β}
(h : Function.Bijective f)
{a : α}
{b : β}
:
@[simp]
theorem
Function.Bijective.inv_val_val
{α : Type u_1}
{β : Type u_2}
{f : α → β}
(h : Function.Bijective f)
{a : α}
:
h.inv (f a) = a
@[simp]
theorem
Function.Bijective.val_inv_val
{α : Type u_1}
{β : Type u_2}
{f : α → β}
(h : Function.Bijective f)
{b : β}
:
f (h.inv b) = b
@[simp]
theorem
Function.comp_inv
{α : Type u_1}
{β : Type u_2}
{γ : Type u_3}
{f : α → β}
{g : γ → α}
(h : Function.Bijective f)
(h' : Function.Bijective g)
:
@[simp]
theorem
Function.Bijective.inv_bij
{α : Type u_1}
{β : Type u_2}
{f : α → β}
(h : Function.Bijective f)
:
Function.Bijective h.inv
@[simp]
theorem
Function.Bijective.inv_inv
{α : Type u_1}
{β : Type u_2}
{f : α → β}
(h : Function.Bijective f)
:
⋯.inv = f
theorem
Function.Bijective.comp_inv
{α : Type u_1}
{β : Type u_2}
{γ : Type u_3}
{f : α → β}
{g : γ → α}
(h : Function.Bijective f)
(h' : Function.Bijective g)
:
Equations
- Function.IsRetractionOf r g = (r ∘ g = id)
Instances For
Equations
- Function.IsSectionOf s g = (g ∘ s = id)
Instances For
Equations
- Function.HasRetraction f = ∃ (g : β → α), Function.IsRetractionOf g f
Instances For
Equations
- Function.HasSection f = ∃ (g : β → α), Function.IsSectionOf g f
Instances For
Equations
- Function.IsInverseOf f g = (Function.IsRetractionOf f g ∧ Function.IsSectionOf f g)
Instances For
Equations
- Function.HasInverse f = ∃ (g : β → α), Function.IsInverseOf g f
Instances For
theorem
Function.IsInverseOf.fg_eq
{α : Type u_1}
{β : Type u_2}
{f : α → β}
{g : β → α}
(h : Function.IsInverseOf f g)
{b : β}
:
f (g b) = b
theorem
Function.IsInverseOf.gf_eq
{α : Type u_1}
{β : Type u_2}
{f : α → β}
{g : β → α}
(h : Function.IsInverseOf f g)
{a : α}
:
g (f a) = a
theorem
Function.IsRetractionOf.fg_eq
{α : Type u_1}
{β : Type u_2}
{f : α → β}
{g : β → α}
(h : Function.IsRetractionOf f g)
{b : β}
:
f (g b) = b
theorem
Function.IsSectionOf.gf_eq
{α : Type u_1}
{β : Type u_2}
{f : α → β}
{g : β → α}
(h : Function.IsSectionOf f g)
{b : α}
:
g (f b) = b
theorem
Function.Surjective.hasSection
{α : Type u_1}
{β : Type u_2}
{f : α → β}
(h : Function.Surjective f)
:
theorem
Function.Injective.hasRetraction
{α : Type u_1}
{β : Type u_2}
{f : α → β}
[Nonempty α]
(h : Function.Injective f)
:
theorem
Function.Surjective.comp_right_inj
{α : Type u_1}
{β : Type u_2}
{γ : Type u_3}
{f : α → β}
(h : Function.Surjective f)
:
Function.Injective fun (x : β → γ) => x ∘ f
theorem
Function.Surjective.comp_left_surj
{α : Type u_1}
{β : Type u_2}
{γ : Type u_3}
{f : α → β}
(h : Function.Surjective f)
:
Function.Surjective fun (x : γ → α) => f ∘ x
theorem
Function.Injective.comp_right_surj
{α : Type u_1}
{β : Type u_2}
{γ : Type u_3}
{f : α → β}
[Nonempty α]
(h : Function.Injective f)
:
Function.Surjective fun (x : β → γ) => x ∘ f
theorem
Function.Injective.comp_left_inj
{α : Type u_1}
{β : Type u_2}
{γ : Type u_3}
{f : α → β}
(h : Function.Injective f)
:
Function.Injective fun (x : γ → α) => f ∘ x
theorem
Function.IsSectionOf.swap_retraction
{α : Type u_1}
{β : Type u_2}
{f : α → β}
{g : β → α}
(h : Function.IsSectionOf f g)
:
theorem
Function.IsRetractionOf.swap_section
{α : Type u_1}
{β : Type u_2}
{f : α → β}
{g : β → α}
(h : Function.IsRetractionOf f g)
:
theorem
Function.IsSectionOf.inj
{α : Type u_1}
{β : Type u_2}
{f : α → β}
{g : β → α}
(h : Function.IsSectionOf f g)
:
theorem
Function.IsSectionOf.surj
{α : Type u_1}
{β : Type u_2}
{f : α → β}
{g : β → α}
(h : Function.IsSectionOf f g)
:
theorem
Function.IsRetractionOf.inj
{α : Type u_1}
{β : Type u_2}
{f : α → β}
{g : β → α}
(h : Function.IsRetractionOf f g)
:
theorem
Function.IsRetractionOf.surj
{α : Type u_1}
{β : Type u_2}
{f : α → β}
{g : β → α}
(h : Function.IsRetractionOf f g)
:
theorem
Function.IsInverseOf.symm
{α : Type u_1}
{β : Type u_2}
{f : α → β}
{g : β → α}
(h : Function.IsInverseOf f g)
:
theorem
Function.IsInverseOf.bij'
{α : Type u_1}
{β : Type u_2}
{f : α → β}
{g : β → α}
(h : Function.IsInverseOf f g)
:
theorem
Function.IsInverseOf.bij
{α : Type u_1}
{β : Type u_2}
{f : α → β}
{g : β → α}
(h : Function.IsInverseOf f g)
:
theorem
Function.IsSectionOf.section_eq_iff_image_eq
{α : Type u_1}
{β : Type u_2}
{f : α → β}
{g : β → α}
{f' : α → β}
(h : Function.IsSectionOf f g)
(h' : Function.IsSectionOf f' g)
(h'' : f '' Set.univ = f' '' Set.univ)
:
f = f'
theorem
Function.IsInverseOf.eq_inv
{α : Type u_1}
{β : Type u_2}
{f : α → β}
{g : β → α}
(h : Function.IsInverseOf f g)
:
⋯.inv = g
theorem
Function.IsInverseOf.eq_inv'
{α : Type u_1}
{β : Type u_2}
{f : α → β}
{g : β → α}
(h : Function.IsInverseOf f g)
:
⋯.inv = f
theorem
Function.IsInverseOf.isInverse_eq
{α : Type u_1}
{β : Type u_2}
{f : α → β}
{g : β → α}
{f' : α → β}
(h : Function.IsInverseOf f g)
(h' : Function.IsInverseOf f' g)
:
f = f'
theorem
Function.IsInverseOf.isInverse_eq'
{α : Type u_1}
{β : Type u_2}
{f : α → β}
{g g' : β → α}
(h : Function.IsInverseOf f g)
(h' : Function.IsInverseOf f g')
:
g = g'
theorem
Function.IsRetractionOf.comp
{α : Type u_1}
{β : Type u_2}
{γ : Type u_3}
{f : α → β}
{g : β → α}
{f' : β → γ}
{g' : γ → β}
(h : Function.IsRetractionOf f g)
(h' : Function.IsRetractionOf f' g')
:
Function.IsRetractionOf (f' ∘ f) (g ∘ g')
theorem
Function.IsSectionOf.comp
{α : Type u_1}
{β : Type u_2}
{γ : Type u_3}
{f : α → β}
{g : β → α}
{f' : β → γ}
{g' : γ → β}
(h : Function.IsSectionOf f g)
(h' : Function.IsSectionOf f' g')
:
Function.IsSectionOf (f' ∘ f) (g ∘ g')
theorem
Function.IsInverseOf.comp
{α : Type u_1}
{β : Type u_2}
{γ : Type u_3}
{f : α → β}
{g : β → α}
{f' : β → γ}
{g' : γ → β}
(h : Function.IsInverseOf f g)
(h' : Function.IsInverseOf f' g')
:
Function.IsInverseOf (f' ∘ f) (g ∘ g')
theorem
Function.HasRetraction.comp
{α : Type u_1}
{β : Type u_2}
{γ : Type u_3}
{f : α → β}
{f' : β → γ}
(h : Function.HasRetraction f)
(h' : Function.HasRetraction f')
:
Function.HasRetraction (f' ∘ f)
theorem
Function.HasSection.comp
{α : Type u_1}
{β : Type u_2}
{γ : Type u_3}
{f : α → β}
{f' : β → γ}
(h : Function.HasSection f)
(h' : Function.HasSection f')
:
Function.HasSection (f' ∘ f)
theorem
Function.HasInverse.comp
{α : Type u_1}
{β : Type u_2}
{γ : Type u_3}
{f : α → β}
{f' : β → γ}
(h : Function.HasInverse f)
(h' : Function.HasInverse f')
:
Function.HasInverse (f' ∘ f)
theorem
Function.Bijective.inv_isInverseOf
{α : Type u_1}
{β : Type u_2}
{f : α → β}
(h : Function.Bijective f)
:
Function.IsInverseOf h.inv f
theorem
Function.isRetraction_of_comp
{α : Type u_1}
{β : Type u_2}
{γ : Type u_3}
{f : α → β}
{f' : β → γ}
{g : γ → α}
(h : Function.IsRetractionOf g (f' ∘ f))
:
Function.IsRetractionOf (g ∘ f') f
theorem
Function.isSection_of_comp
{α : Type u_1}
{β : Type u_2}
{γ : Type u_3}
{f : α → β}
{f' : β → γ}
{g : γ → α}
(h : Function.IsSectionOf g (f' ∘ f))
:
Function.IsSectionOf (f ∘ g) f'
theorem
Function.surj_of_inj_comp_surj
{α : Type u_1}
{β : Type u_2}
{γ : Type u_3}
{f : α → β}
{f' : β → γ}
(h : Function.Surjective (f' ∘ f))
(h' : Function.Injective f')
:
theorem
Function.inj_of_surj_comp_inj
{α : Type u_1}
{β : Type u_2}
{γ : Type u_3}
{f : α → β}
{f' : β → γ}
(h : Function.Injective (f' ∘ f))
(h' : Function.Surjective f)
:
theorem
Function.isRetraction_of_comp_surj
{α : Type u_1}
{β : Type u_2}
{γ : Type u_3}
{f : α → β}
{f' : β → γ}
{g : γ → α}
(h : Function.IsRetractionOf g (f' ∘ f))
(h' : Function.Surjective f)
:
Function.IsRetractionOf (f ∘ g) f'
theorem
Function.isSection_of_comp_inj
{α : Type u_1}
{β : Type u_2}
{γ : Type u_3}
{f : α → β}
{f' : β → γ}
{g : γ → α}
(h : Function.IsSectionOf g (f' ∘ f))
(h' : Function.Injective f')
:
Function.IsSectionOf (g ∘ f') f
theorem
Function.bij_of_two_bij2
{α : Type u_1}
{β : Type u_2}
{γ : Type u_3}
{f : α → β}
{f' : β → γ}
{g : γ → α}
(h : Function.Bijective (f ∘ g))
(h' : Function.Bijective (g ∘ f'))
:
theorem
Function.bij_of_two_bij1
{α : Type u_1}
{β : Type u_2}
{γ : Type u_3}
{f : α → β}
{f' : β → γ}
{g : γ → α}
(h : Function.Bijective (f ∘ g))
(h' : Function.Bijective (g ∘ f'))
:
theorem
Function.bij_of_two_bij3
{α : Type u_1}
{β : Type u_2}
{γ : Type u_3}
{f : α → β}
{f' : β → γ}
{g : γ → α}
(h : Function.Bijective (f ∘ g))
(h' : Function.Bijective (g ∘ f'))
:
theorem
Function.bij_of_surj_surj_inj1
{α : Type u_1}
{β : Type u_2}
{γ : Type u_3}
{f : α → β}
{g : γ → α}
{f' : β → γ}
(h : Function.Surjective (f' ∘ f ∘ g))
(h' : Function.Surjective (f ∘ g ∘ f'))
(h'' : Function.Injective (g ∘ f' ∘ f))
:
theorem
Function.bij_of_surj_inj2
{α : Type u_1}
{β : Type u_2}
{γ : Type u_3}
{f : α → β}
{g : γ → α}
{f' : β → γ}
(h' : Function.Surjective (f ∘ g ∘ f'))
(h'' : Function.Injective (g ∘ f' ∘ f))
:
theorem
Function.bij_of_surj_inj3
{α : Type u_1}
{β : Type u_2}
{γ : Type u_3}
{f : α → β}
{g : γ → α}
{f' : β → γ}
(h : Function.Surjective (f' ∘ f ∘ g))
(h'' : Function.Injective (g ∘ f' ∘ f))
:
theorem
Function.Surjective.factor_after
{α : Type u_1}
{β : Type u_2}
{γ : Type u_3}
{f : α → β}
{g : α → γ}
(h : Function.Surjective f)
(h' : ∀ (a a' : α), f a = f a' → g a = g a')
:
@[simp]
@[simp]
theorem
Function.curry_bijective
{α : Type u_1}
{β : Type u_2}
{γ : Type u_3}
:
Function.Bijective Function.curry
theorem
Function.uncurry_bijective
{α : Type u_1}
{β : Type u_2}
{γ : Type u_3}
:
Function.Bijective Function.uncurry
theorem
Function.curry_uncurry_inverse
{α : Type u_1}
{β : Type u_2}
{γ : Type u_3}
:
Function.IsInverseOf Function.curry Function.uncurry
Equations
- Function.Injection α β = { f : α → β // Function.Injective f }
Instances For
Equations
- Function.Surjection α β = { f : α → β // Function.Surjective f }
Instances For
Equations
- Function.Bijection α β = { f : α → β // Function.Bijective f }
Instances For
instance
Function.instCoeFunBijectionForall
{α : Type u_5}
{β : Type u_6}
:
CoeFun (Function.Bijection α β) fun (x : Function.Bijection α β) => α → β
Equations
- Function.instCoeFunBijectionForall = { coe := fun (f : Function.Bijection α β) => f.val }
instance
Function.instCoeFunSurjectionForall
{α : Type u_5}
{β : Type u_6}
:
CoeFun (Function.Surjection α β) fun (x : Function.Surjection α β) => α → β
Equations
- Function.instCoeFunSurjectionForall = { coe := fun (f : Function.Surjection α β) => f.val }
instance
Function.instCoeFunInjectionForall
{α : Type u_5}
{β : Type u_6}
:
CoeFun (Function.Injection α β) fun (x : Function.Injection α β) => α → β
Equations
- Function.instCoeFunInjectionForall = { coe := fun (f : Function.Injection α β) => f.val }
noncomputable def
Function.Bijection.invfun
{α : Type u_1}
{β : Type u_2}
(f : Function.Bijection α β)
(b : β)
:
α
Equations
- f.invfun = ⋯.inv
Instances For
noncomputable def
Function.Bijection.inv
{α : Type u_1}
{β : Type u_2}
(f : Function.Bijection α β)
:
Equations
- f.inv = ⟨⋯.inv, ⋯⟩
Instances For
@[simp]
theorem
Function.Bijection.val_inv_val
{α : Type u_1}
{β : Type u_2}
(f : Function.Bijection α β)
{b : β}
:
f.val (f.inv.val b) = b
@[simp]
theorem
Function.Bijection.inv_val_val
{α : Type u_1}
{β : Type u_2}
(f : Function.Bijection α β)
{a : α}
:
f.inv.val (f.val a) = a
def
Function.bijection_of_funcs
{α : Type u_1}
{β : Type u_2}
(f : α → β)
(g : β → α)
(h : ∀ (b : β), f (g b) = b)
(h' : ∀ (a : α), g (f a) = a)
:
Equations
- Function.bijection_of_funcs f g h h' = ⟨f, ⋯⟩
Instances For
Equations
- Function.bijection_univ = Function.bijection_of_funcs Subtype.val (fun (x : α) => ⟨x, True.intro⟩) ⋯ ⋯
Instances For
theorem
Subtype.coe.inj
{α : Type u_1}
{p : α → Prop}
:
Function.Injective fun (x : { x : α // p x }) =>
match x with
| ⟨x, property⟩ => x
theorem
Eq.rec_of_inj
{ι' : Type u_5}
{ι : Type u_6}
{x : ι → Type u_7}
{i i' : ι'}
(f : ι' → ι)
(h : f i = f i')
(h' : Function.Injective f)
(a : (i : ι') → x (f i))
:
h ▸ a i = a i'
theorem
Function.Bijective.preimage_eq
{α : Type u_1}
{β : Type u_2}
{s : Set β}
{f : α → β}
(h : Function.Bijective f)
:
Equations
- bijection_of_eq h = ⟨fun (x : ↥s) => match x with | ⟨x, hx⟩ => ⟨x, ⋯⟩, ⋯⟩