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.,TopologicalRing
) 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
cocompact
filter.
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
cocompact
filter.
Instances
Equations
- ZeroAtInftyContinuousMap.instFunLike = { coe := fun (f : ZeroAtInftyContinuousMap α β) => f.toFun, coe_injective' := ⋯ }
Equations
- ZeroAtInftyContinuousMap.instCoeTC = { coe := fun (f : F) => { toFun := ⇑f, continuous_toFun := ⋯, zero_at_infty' := ⋯ } }
Copy of a ZeroAtInftyContinuousMap
with a new toFun
equal to the old one. Useful
to fix definitional equalities.
Equations
- f.copy f' h = { toFun := f', continuous_toFun := ⋯, zero_at_infty' := ⋯ }
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.instZero = { zero := { toContinuousMap := 0, zero_at_infty' := ⋯ } }
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.
Equations
- f.toBCF = { toContinuousMap := ↑f, map_bounded' := ⋯ }
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.
Equations
- ZeroAtInftyContinuousMap.instPseudoMetricSpace = PseudoMetricSpace.induced ZeroAtInftyContinuousMap.toBCF inferInstance
The type of continuous functions vanishing at infinity, with the uniform distance induced by the
inclusion ZeroAtInftyContinuousMap.toBCF
, is a metric space.
Equations
- ZeroAtInftyContinuousMap.instMetricSpace = MetricSpace.induced ZeroAtInftyContinuousMap.toBCF ⋯ inferInstance
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 = NormedSpace.mk ⋯
Equations
- ZeroAtInftyContinuousMap.instNonUnitalSeminormedRing = NonUnitalSeminormedRing.mk ⋯ ⋯
Equations
- ZeroAtInftyContinuousMap.instNonUnitalNormedRing = NonUnitalNormedRing.mk ⋯ ⋯
Equations
- ZeroAtInftyContinuousMap.instNonUnitalSeminormedCommRing = NonUnitalSeminormedCommRing.mk ⋯
Equations
- ZeroAtInftyContinuousMap.instNonUnitalNormedCommRing = NonUnitalNormedCommRing.mk ⋯
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 = StarAddMonoid.mk ⋯
Equations
- ZeroAtInftyContinuousMap.instStarRing = StarRing.mk ⋯
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 CocompactMap
s.
Composition of a continuous function vanishing at infinity with a cocompact map yields another continuous function vanishing at infinity.
Equations
- f.comp g = { toContinuousMap := (↑f).comp ↑g, zero_at_infty' := ⋯ }
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' := ⋯ }