Continuous functions vanishing at infinity #
The type of continuous functions vanishing at infinity. When the domain is compact
C(α, β) ≃ C₀(α, β) via the identity map. When the codomain is a metric space, every continuous
map which vanishes at infinity is a bounded continuous function. When the domain is a locally
compact space, this type has nice properties.
TODO #
- Create more instances of algebraic structures (e.g.,
NonUnitalSemiring) once the necessary type classes (e.g.,IsTopologicalRing) are sufficiently generalized. - Relate the unitization of
C₀(α, β)to the Alexandroff compactification.
C₀(α, β) is the type of continuous functions α → β which vanish at infinity from a
topological space to a metric space with a zero element.
When possible, instead of parametrizing results over (f : C₀(α, β)),
you should parametrize over (F : Type*) [ZeroAtInftyContinuousMapClass F α β] (f : F).
When you extend this structure, make sure to extend ZeroAtInftyContinuousMapClass.
- toFun : α → β
- continuous_toFun : Continuous self.toFun
- zero_at_infty' : Filter.Tendsto self.toFun (Filter.cocompact α) (nhds 0)
The function tends to zero along the
cocompactfilter.
Instances For
C₀(α, β) is the type of continuous functions α → β which vanish at infinity from a
topological space to a metric space with a zero element.
When possible, instead of parametrizing results over (f : C₀(α, β)),
you should parametrize over (F : Type*) [ZeroAtInftyContinuousMapClass F α β] (f : F).
When you extend this structure, make sure to extend ZeroAtInftyContinuousMapClass.
Equations
- One or more equations did not get rendered due to their size.
Instances For
C₀(α, β) is the type of continuous functions α → β which vanish at infinity from a
topological space to a metric space with a zero element.
When possible, instead of parametrizing results over (f : C₀(α, β)),
you should parametrize over (F : Type*) [ZeroAtInftyContinuousMapClass F α β] (f : F).
When you extend this structure, make sure to extend ZeroAtInftyContinuousMapClass.
Equations
- ZeroAtInfty.«term_→C₀_» = Lean.ParserDescr.trailingNode `ZeroAtInfty.«term_→C₀_» 1022 0 (Lean.ParserDescr.binary `andthen (Lean.ParserDescr.symbol " →C₀ ") (Lean.ParserDescr.cat `term 0))
Instances For
ZeroAtInftyContinuousMapClass F α β states that F is a type of continuous maps which
vanish at infinity.
You should also extend this typeclass when you extend ZeroAtInftyContinuousMap.
- zero_at_infty (f : F) : Filter.Tendsto (⇑f) (Filter.cocompact α) (nhds 0)
Each member of the class tends to zero along the
cocompactfilter.
Instances
Equations
- ZeroAtInftyContinuousMap.instFunLike = { coe := fun (f : ZeroAtInftyContinuousMap α β) => f.toFun, coe_injective' := ⋯ }
Copy of a ZeroAtInftyContinuousMap with a new toFun equal to the old one. Useful
to fix definitional equalities.
Instances For
A continuous function on a compact space is automatically a continuous function vanishing at infinity.
Equations
- One or more equations did not get rendered due to their size.
Instances For
A continuous function on a compact space is automatically a continuous function vanishing at infinity. This is not an instance to avoid type class loops.
Algebraic structure #
Whenever β has suitable algebraic structure and a compatible topological structure, then
C₀(α, β) inherits a corresponding algebraic structure. The primary exception to this is that
C₀(α, β) will not have a multiplicative identity.
Equations
- ZeroAtInftyContinuousMap.instInhabited = { default := 0 }
Equations
- ZeroAtInftyContinuousMap.instMul = { mul := fun (f g : ZeroAtInftyContinuousMap α β) => { toContinuousMap := ↑f * ↑g, zero_at_infty' := ⋯ } }
Equations
- ZeroAtInftyContinuousMap.instMulZeroClass = Function.Injective.mulZeroClass (fun (f : ZeroAtInftyContinuousMap α β) => ⇑f) ⋯ ⋯ ⋯
Equations
- ZeroAtInftyContinuousMap.instSemigroupWithZero = Function.Injective.semigroupWithZero (fun (f : ZeroAtInftyContinuousMap α β) => ⇑f) ⋯ ⋯ ⋯
Equations
- ZeroAtInftyContinuousMap.instAdd = { add := fun (f g : ZeroAtInftyContinuousMap α β) => { toContinuousMap := ↑f + ↑g, zero_at_infty' := ⋯ } }
Equations
- ZeroAtInftyContinuousMap.instAddZeroClass = Function.Injective.addZeroClass (fun (f : ZeroAtInftyContinuousMap α β) => ⇑f) ⋯ ⋯ ⋯
Equations
- ZeroAtInftyContinuousMap.instSMul = { smul := fun (r : R) (f : ZeroAtInftyContinuousMap α β) => { toFun := r • ⇑f, continuous_toFun := ⋯, zero_at_infty' := ⋯ } }
Equations
- ZeroAtInftyContinuousMap.instAddMonoid = Function.Injective.addMonoid (fun (f : ZeroAtInftyContinuousMap α β) => ⇑f) ⋯ ⋯ ⋯ ⋯
Equations
- ZeroAtInftyContinuousMap.instAddCommMonoid = Function.Injective.addCommMonoid (fun (f : ZeroAtInftyContinuousMap α β) => ⇑f) ⋯ ⋯ ⋯ ⋯
Equations
- ZeroAtInftyContinuousMap.instNeg = { neg := fun (f : ZeroAtInftyContinuousMap α β) => { toContinuousMap := -↑f, zero_at_infty' := ⋯ } }
Equations
- ZeroAtInftyContinuousMap.instSub = { sub := fun (f g : ZeroAtInftyContinuousMap α β) => { toContinuousMap := ↑f - ↑g, zero_at_infty' := ⋯ } }
Equations
- ZeroAtInftyContinuousMap.instAddGroup = Function.Injective.addGroup (fun (f : ZeroAtInftyContinuousMap α β) => ⇑f) ⋯ ⋯ ⋯ ⋯ ⋯ ⋯ ⋯
Equations
- ZeroAtInftyContinuousMap.instAddCommGroup = Function.Injective.addCommGroup (fun (f : ZeroAtInftyContinuousMap α β) => ⇑f) ⋯ ⋯ ⋯ ⋯ ⋯ ⋯ ⋯
Equations
- ZeroAtInftyContinuousMap.instSMulWithZero = Function.Injective.smulWithZero { toFun := DFunLike.coe, map_zero' := ⋯ } ⋯ ⋯
Equations
- ZeroAtInftyContinuousMap.instMulActionWithZero = Function.Injective.mulActionWithZero { toFun := DFunLike.coe, map_zero' := ⋯ } ⋯ ⋯
Equations
- ZeroAtInftyContinuousMap.instModule = Function.Injective.module R { toFun := DFunLike.coe, map_zero' := ⋯, map_add' := ⋯ } ⋯ ⋯
Equations
- ZeroAtInftyContinuousMap.instNonUnitalNonAssocSemiring = Function.Injective.nonUnitalNonAssocSemiring (fun (f : ZeroAtInftyContinuousMap α β) => ⇑f) ⋯ ⋯ ⋯ ⋯ ⋯
Equations
- ZeroAtInftyContinuousMap.instNonUnitalSemiring = Function.Injective.nonUnitalSemiring (fun (f : ZeroAtInftyContinuousMap α β) => ⇑f) ⋯ ⋯ ⋯ ⋯ ⋯
Equations
- ZeroAtInftyContinuousMap.instNonUnitalCommSemiring = Function.Injective.nonUnitalCommSemiring (fun (f : ZeroAtInftyContinuousMap α β) => ⇑f) ⋯ ⋯ ⋯ ⋯ ⋯
Equations
- ZeroAtInftyContinuousMap.instNonUnitalNonAssocRing = Function.Injective.nonUnitalNonAssocRing (fun (f : ZeroAtInftyContinuousMap α β) => ⇑f) ⋯ ⋯ ⋯ ⋯ ⋯ ⋯ ⋯ ⋯
Equations
- ZeroAtInftyContinuousMap.instNonUnitalRing = Function.Injective.nonUnitalRing (fun (f : ZeroAtInftyContinuousMap α β) => ⇑f) ⋯ ⋯ ⋯ ⋯ ⋯ ⋯ ⋯ ⋯
Equations
- ZeroAtInftyContinuousMap.instNonUnitalCommRing = Function.Injective.nonUnitalCommRing (fun (f : ZeroAtInftyContinuousMap α β) => ⇑f) ⋯ ⋯ ⋯ ⋯ ⋯ ⋯ ⋯ ⋯
Metric structure #
When β is a metric space, then every element of C₀(α, β) is bounded, and so there is a natural
inclusion map ZeroAtInftyContinuousMap.toBCF : C₀(α, β) → (α →ᵇ β). Via this map C₀(α, β)
inherits a metric as the pullback of the metric on α →ᵇ β. Moreover, this map has closed range
in α →ᵇ β and consequently C₀(α, β) is a complete space whenever β is complete.
Construct a bounded continuous function from a continuous function vanishing at infinity.
Instances For
The type of continuous functions vanishing at infinity, with the uniform distance induced by the
inclusion ZeroAtInftyContinuousMap.toBCF, is a pseudo-metric space.
The type of continuous functions vanishing at infinity, with the uniform distance induced by the
inclusion ZeroAtInftyContinuousMap.toBCF, is a metric space.
Convergence in the metric on C₀(α, β) is uniform convergence.
Continuous functions vanishing at infinity taking values in a complete space form a complete space.
Normed space #
The norm structure on C₀(α, β) is the one induced by the inclusion toBCF : C₀(α, β) → (α →ᵇ b),
viewed as an additive monoid homomorphism. Then C₀(α, β) is naturally a normed space over a normed
field 𝕜 whenever β is as well.
Equations
- One or more equations did not get rendered due to their size.
Equations
- One or more equations did not get rendered due to their size.
Equations
- ZeroAtInftyContinuousMap.instNormedSpace = { toModule := ZeroAtInftyContinuousMap.instModule, norm_smul_le := ⋯ }
Equations
- One or more equations did not get rendered due to their size.
Equations
- One or more equations did not get rendered due to their size.
Equations
- ZeroAtInftyContinuousMap.instNonUnitalSeminormedCommRing = { toNonUnitalSeminormedRing := ZeroAtInftyContinuousMap.instNonUnitalSeminormedRing, mul_comm := ⋯ }
Equations
- ZeroAtInftyContinuousMap.instNonUnitalNormedCommRing = { toNonUnitalNormedRing := ZeroAtInftyContinuousMap.instNonUnitalNormedRing, mul_comm := ⋯ }
Star structure #
It is possible to equip C₀(α, β) with a pointwise star operation whenever there is a continuous
star : β → β for which star (0 : β) = 0. We don't have quite this weak a typeclass, but
StarAddMonoid is close enough.
The StarAddMonoid and NormedStarGroup classes on C₀(α, β) are inherited from their
counterparts on α →ᵇ β. Ultimately, when β is a C⋆-ring, then so is C₀(α, β).
Equations
- ZeroAtInftyContinuousMap.instStar = { star := fun (f : ZeroAtInftyContinuousMap α β) => { toFun := fun (x : α) => star (f x), continuous_toFun := ⋯, zero_at_infty' := ⋯ } }
Equations
- ZeroAtInftyContinuousMap.instStarAddMonoid = { toStar := ZeroAtInftyContinuousMap.instStar, star_involutive := ⋯, star_add := ⋯ }
Equations
- ZeroAtInftyContinuousMap.instStarRing = { toInvolutiveStar := ZeroAtInftyContinuousMap.instStarAddMonoid.toInvolutiveStar, star_mul := ⋯, star_add := ⋯ }
C₀ as a functor #
For each β with sufficient structure, there is a contravariant functor C₀(-, β) from the
category of topological spaces with morphisms given by CocompactMaps.
Composition of a continuous function vanishing at infinity with a cocompact map yields another continuous function vanishing at infinity.
Instances For
Composition as an additive monoid homomorphism.
Equations
- ZeroAtInftyContinuousMap.compAddMonoidHom g = { toFun := fun (f : ZeroAtInftyContinuousMap γ δ) => f.comp g, map_zero' := ⋯, map_add' := ⋯ }
Instances For
Composition as a semigroup homomorphism.
Equations
- ZeroAtInftyContinuousMap.compMulHom g = { toFun := fun (f : ZeroAtInftyContinuousMap γ δ) => f.comp g, map_mul' := ⋯ }
Instances For
Composition as a linear map.
Equations
- ZeroAtInftyContinuousMap.compLinearMap g = { toFun := fun (f : ZeroAtInftyContinuousMap γ δ) => f.comp g, map_add' := ⋯, map_smul' := ⋯ }
Instances For
Composition as a non-unital algebra homomorphism.
Equations
- ZeroAtInftyContinuousMap.compNonUnitalAlgHom g = { toFun := fun (f : ZeroAtInftyContinuousMap γ δ) => f.comp g, map_smul' := ⋯, map_zero' := ⋯, map_add' := ⋯, map_mul' := ⋯ }