Continuous functions vanishing at infinity #
THIS FILE IS SYNCHRONIZED WITH MATHLIB4. Any changes to this file require a corresponding PR to mathlib4.
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 intances of algebraic structures (e.g.,
non_unital_semiring
) once the necessary type classes (e.g.,topological_ring
) are sufficiently generalized. - Relate the unitization of
C₀(α, β)
to the Alexandroff compactification.
- to_continuous_map : C(α, β)
- zero_at_infty' : filter.tendsto self.to_continuous_map.to_fun (filter.cocompact α) (nhds 0)
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*) [zero_at_infty_continuous_map_class F α β] (f : F)
.
When you extend this structure, make sure to extend zero_at_infty_continuous_map_class
.
Instances for zero_at_infty_continuous_map
- zero_at_infty_continuous_map.has_sizeof_inst
- zero_at_infty_continuous_map.zero_at_infty_continuous_map_class
- zero_at_infty_continuous_map.has_coe_to_fun
- zero_at_infty_continuous_map.has_coe_t
- zero_at_infty_continuous_map.has_zero
- zero_at_infty_continuous_map.inhabited
- zero_at_infty_continuous_map.has_mul
- zero_at_infty_continuous_map.mul_zero_class
- zero_at_infty_continuous_map.semigroup_with_zero
- zero_at_infty_continuous_map.has_add
- zero_at_infty_continuous_map.add_zero_class
- zero_at_infty_continuous_map.has_nat_scalar
- zero_at_infty_continuous_map.add_monoid
- zero_at_infty_continuous_map.add_comm_monoid
- zero_at_infty_continuous_map.has_neg
- zero_at_infty_continuous_map.has_sub
- zero_at_infty_continuous_map.has_int_scalar
- zero_at_infty_continuous_map.add_group
- zero_at_infty_continuous_map.add_comm_group
- zero_at_infty_continuous_map.has_smul
- zero_at_infty_continuous_map.is_central_scalar
- zero_at_infty_continuous_map.smul_with_zero
- zero_at_infty_continuous_map.mul_action_with_zero
- zero_at_infty_continuous_map.module
- zero_at_infty_continuous_map.non_unital_non_assoc_semiring
- zero_at_infty_continuous_map.non_unital_semiring
- zero_at_infty_continuous_map.non_unital_comm_semiring
- zero_at_infty_continuous_map.non_unital_non_assoc_ring
- zero_at_infty_continuous_map.non_unital_ring
- zero_at_infty_continuous_map.non_unital_comm_ring
- zero_at_infty_continuous_map.is_scalar_tower
- zero_at_infty_continuous_map.smul_comm_class
- zero_at_infty_continuous_map.metric_space
- zero_at_infty_continuous_map.complete_space
- zero_at_infty_continuous_map.normed_add_comm_group
- zero_at_infty_continuous_map.normed_space
- zero_at_infty_continuous_map.non_unital_normed_ring
- zero_at_infty_continuous_map.has_star
- zero_at_infty_continuous_map.star_add_monoid
- zero_at_infty_continuous_map.normed_star_group
- zero_at_infty_continuous_map.star_module
- zero_at_infty_continuous_map.star_ring
- zero_at_infty_continuous_map.cstar_ring
- coe : F → Π (a : α), (λ (_x : α), β) a
- coe_injective' : function.injective zero_at_infty_continuous_map_class.coe
- map_continuous : ∀ (f : F), continuous ⇑f
- zero_at_infty : ∀ (f : F), filter.tendsto ⇑f (filter.cocompact α) (nhds 0)
zero_at_infty_continuous_map_class F α β
states that F
is a type of continuous maps which
vanish at infinity.
You should also extend this typeclass when you extend zero_at_infty_continuous_map
.
Instances of this typeclass
Instances of other typeclasses for zero_at_infty_continuous_map_class
- zero_at_infty_continuous_map_class.has_sizeof_inst
Equations
- zero_at_infty_continuous_map.zero_at_infty_continuous_map_class = {coe := λ (f : zero_at_infty_continuous_map α β), f.to_continuous_map.to_fun, coe_injective' := _, map_continuous := _, zero_at_infty := _}
Helper instance for when there's too many metavariables to apply fun_like.has_coe_to_fun
directly.
Equations
- zero_at_infty_continuous_map.has_coe_t = {coe := λ (f : F), {to_continuous_map := {to_fun := ⇑f, continuous_to_fun := _}, zero_at_infty' := _}}
Copy of a zero_at_infinity_continuous_map
with a new to_fun
equal to the old one. Useful
to fix definitional equalities.
Equations
- f.copy f' h = {to_continuous_map := {to_fun := f', continuous_to_fun := _}, zero_at_infty' := _}
A continuous function on a compact space is automatically a continuous function vanishing at infinity.
Equations
- zero_at_infty_continuous_map.continuous_map.lift_zero_at_infty = {to_fun := λ (f : C(α, β)), {to_continuous_map := {to_fun := ⇑f, continuous_to_fun := _}, zero_at_infty' := _}, inv_fun := λ (f : zero_at_infty_continuous_map α β), ↑f, left_inv := _, right_inv := _}
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.
Equations
- zero_at_infty_continuous_map.zero_at_infty_continuous_map_class.of_compact = {coe := λ (g : G), ⇑g, coe_injective' := _, map_continuous := _, zero_at_infty := _}
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
- zero_at_infty_continuous_map.has_zero = {zero := {to_continuous_map := 0, zero_at_infty' := _}}
Equations
Equations
- zero_at_infty_continuous_map.has_mul = {mul := λ (f g : zero_at_infty_continuous_map α β), {to_continuous_map := ↑f * ↑g, zero_at_infty' := _}}
Equations
- zero_at_infty_continuous_map.mul_zero_class = function.injective.mul_zero_class coe_fn zero_at_infty_continuous_map.mul_zero_class._proof_1 zero_at_infty_continuous_map.mul_zero_class._proof_2 zero_at_infty_continuous_map.coe_mul
Equations
- zero_at_infty_continuous_map.semigroup_with_zero = function.injective.semigroup_with_zero coe_fn zero_at_infty_continuous_map.semigroup_with_zero._proof_1 zero_at_infty_continuous_map.semigroup_with_zero._proof_2 zero_at_infty_continuous_map.semigroup_with_zero._proof_3
Equations
- zero_at_infty_continuous_map.has_add = {add := λ (f g : zero_at_infty_continuous_map α β), {to_continuous_map := ↑f + ↑g, zero_at_infty' := _}}
Equations
- zero_at_infty_continuous_map.add_zero_class = function.injective.add_zero_class coe_fn zero_at_infty_continuous_map.add_zero_class._proof_1 zero_at_infty_continuous_map.add_zero_class._proof_2 zero_at_infty_continuous_map.coe_add
Equations
- zero_at_infty_continuous_map.has_nat_scalar = {smul := λ (n : ℕ) (f : zero_at_infty_continuous_map α β), {to_continuous_map := n • ↑f, zero_at_infty' := _}}
Equations
- zero_at_infty_continuous_map.add_monoid = function.injective.add_monoid coe_fn zero_at_infty_continuous_map.add_monoid._proof_1 zero_at_infty_continuous_map.add_monoid._proof_2 zero_at_infty_continuous_map.add_monoid._proof_3 zero_at_infty_continuous_map.add_monoid._proof_4
Equations
- zero_at_infty_continuous_map.add_comm_monoid = function.injective.add_comm_monoid coe_fn zero_at_infty_continuous_map.add_comm_monoid._proof_1 zero_at_infty_continuous_map.add_comm_monoid._proof_2 zero_at_infty_continuous_map.add_comm_monoid._proof_3 zero_at_infty_continuous_map.add_comm_monoid._proof_4
Equations
- zero_at_infty_continuous_map.has_neg = {neg := λ (f : zero_at_infty_continuous_map α β), {to_continuous_map := -↑f, zero_at_infty' := _}}
Equations
- zero_at_infty_continuous_map.has_sub = {sub := λ (f g : zero_at_infty_continuous_map α β), {to_continuous_map := ↑f - ↑g, zero_at_infty' := _}}
Equations
- zero_at_infty_continuous_map.has_int_scalar = {smul := λ (n : ℤ) (f : zero_at_infty_continuous_map α β), {to_continuous_map := n • ↑f, zero_at_infty' := _}}
Equations
- zero_at_infty_continuous_map.add_group = function.injective.add_group coe_fn zero_at_infty_continuous_map.add_group._proof_1 zero_at_infty_continuous_map.add_group._proof_2 zero_at_infty_continuous_map.add_group._proof_3 zero_at_infty_continuous_map.coe_neg zero_at_infty_continuous_map.coe_sub zero_at_infty_continuous_map.add_group._proof_4 zero_at_infty_continuous_map.add_group._proof_5
Equations
- zero_at_infty_continuous_map.add_comm_group = function.injective.add_comm_group coe_fn zero_at_infty_continuous_map.add_comm_group._proof_3 zero_at_infty_continuous_map.add_comm_group._proof_4 zero_at_infty_continuous_map.add_comm_group._proof_5 zero_at_infty_continuous_map.add_comm_group._proof_6 zero_at_infty_continuous_map.add_comm_group._proof_7 zero_at_infty_continuous_map.add_comm_group._proof_8 zero_at_infty_continuous_map.add_comm_group._proof_9
Equations
- zero_at_infty_continuous_map.has_smul = {smul := λ (r : R) (f : zero_at_infty_continuous_map α β), {to_continuous_map := r • ↑f, zero_at_infty' := _}}
Equations
- zero_at_infty_continuous_map.smul_with_zero = function.injective.smul_with_zero {to_fun := coe_fn zero_at_infty_continuous_map.has_coe_to_fun, map_zero' := _} zero_at_infty_continuous_map.smul_with_zero._proof_1 zero_at_infty_continuous_map.coe_smul
Equations
- zero_at_infty_continuous_map.mul_action_with_zero = function.injective.mul_action_with_zero {to_fun := coe_fn zero_at_infty_continuous_map.has_coe_to_fun, map_zero' := _} zero_at_infty_continuous_map.mul_action_with_zero._proof_1 zero_at_infty_continuous_map.mul_action_with_zero._proof_2
Equations
- zero_at_infty_continuous_map.module = function.injective.module R {to_fun := coe_fn zero_at_infty_continuous_map.has_coe_to_fun, map_zero' := _, map_add' := _} zero_at_infty_continuous_map.module._proof_3 zero_at_infty_continuous_map.module._proof_4
Equations
- zero_at_infty_continuous_map.non_unital_non_assoc_semiring = function.injective.non_unital_non_assoc_semiring coe_fn zero_at_infty_continuous_map.non_unital_non_assoc_semiring._proof_2 zero_at_infty_continuous_map.non_unital_non_assoc_semiring._proof_3 zero_at_infty_continuous_map.non_unital_non_assoc_semiring._proof_4 zero_at_infty_continuous_map.non_unital_non_assoc_semiring._proof_5 zero_at_infty_continuous_map.non_unital_non_assoc_semiring._proof_6
Equations
- zero_at_infty_continuous_map.non_unital_semiring = function.injective.non_unital_semiring coe_fn zero_at_infty_continuous_map.non_unital_semiring._proof_4 zero_at_infty_continuous_map.non_unital_semiring._proof_5 zero_at_infty_continuous_map.non_unital_semiring._proof_6 zero_at_infty_continuous_map.non_unital_semiring._proof_7 zero_at_infty_continuous_map.non_unital_semiring._proof_8
Equations
- zero_at_infty_continuous_map.non_unital_comm_semiring = function.injective.non_unital_comm_semiring coe_fn zero_at_infty_continuous_map.non_unital_comm_semiring._proof_4 zero_at_infty_continuous_map.non_unital_comm_semiring._proof_5 zero_at_infty_continuous_map.non_unital_comm_semiring._proof_6 zero_at_infty_continuous_map.non_unital_comm_semiring._proof_7 zero_at_infty_continuous_map.non_unital_comm_semiring._proof_8
Equations
- zero_at_infty_continuous_map.non_unital_non_assoc_ring = function.injective.non_unital_non_assoc_ring coe_fn zero_at_infty_continuous_map.non_unital_non_assoc_ring._proof_5 zero_at_infty_continuous_map.non_unital_non_assoc_ring._proof_6 zero_at_infty_continuous_map.non_unital_non_assoc_ring._proof_7 zero_at_infty_continuous_map.non_unital_non_assoc_ring._proof_8 zero_at_infty_continuous_map.non_unital_non_assoc_ring._proof_9 zero_at_infty_continuous_map.non_unital_non_assoc_ring._proof_10 zero_at_infty_continuous_map.non_unital_non_assoc_ring._proof_11 zero_at_infty_continuous_map.non_unital_non_assoc_ring._proof_12
Equations
- zero_at_infty_continuous_map.non_unital_ring = function.injective.non_unital_ring coe_fn zero_at_infty_continuous_map.non_unital_ring._proof_7 zero_at_infty_continuous_map.non_unital_ring._proof_8 zero_at_infty_continuous_map.non_unital_ring._proof_9 zero_at_infty_continuous_map.non_unital_ring._proof_10 zero_at_infty_continuous_map.non_unital_ring._proof_11 zero_at_infty_continuous_map.non_unital_ring._proof_12 zero_at_infty_continuous_map.non_unital_ring._proof_13 zero_at_infty_continuous_map.non_unital_ring._proof_14
Equations
- zero_at_infty_continuous_map.non_unital_comm_ring = function.injective.non_unital_comm_ring coe_fn zero_at_infty_continuous_map.non_unital_comm_ring._proof_7 zero_at_infty_continuous_map.non_unital_comm_ring._proof_8 zero_at_infty_continuous_map.non_unital_comm_ring._proof_9 zero_at_infty_continuous_map.non_unital_comm_ring._proof_10 zero_at_infty_continuous_map.non_unital_comm_ring._proof_11 zero_at_infty_continuous_map.non_unital_comm_ring._proof_12 zero_at_infty_continuous_map.non_unital_comm_ring._proof_13 zero_at_infty_continuous_map.non_unital_comm_ring._proof_14
Metric structure #
When β
is a metric space, then every element of C₀(α, β)
is bounded, and so there is a natural
inclusion map zero_at_infty_continuous_map.to_bcf : 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.
Equations
- zero_at_infty_continuous_map.bounded_continuous_map_class = {coe := zero_at_infty_continuous_map_class.coe _inst_4, coe_injective' := _, map_continuous := _, map_bounded := _}
Construct a bounded continuous function from a continuous function vanishing at infinity.
Equations
- f.to_bcf = {to_continuous_map := ↑f, map_bounded' := _}
The type of continuous functions vanishing at infinity, with the uniform distance induced by the
inclusion zero_at_infinity_continuous_map.to_bcf
, 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 to_bcf : C₀(α, β) → (α →ᵇ b)
,
viewed as an additive monoid homomorphism. Then C₀(α, β)
is naturally a normed space over a normed
field 𝕜
whenever β
is as well.
Equations
- zero_at_infty_continuous_map.normed_add_comm_group = normed_add_comm_group.induced (zero_at_infty_continuous_map α β) (bounded_continuous_function α β) {to_fun := zero_at_infty_continuous_map.to_bcf (add_zero_class.to_has_zero β), map_zero' := _, map_add' := _} zero_at_infty_continuous_map.normed_add_comm_group._proof_6
Equations
- zero_at_infty_continuous_map.normed_space = {to_module := zero_at_infty_continuous_map.module zero_at_infty_continuous_map.normed_space._proof_2, norm_smul_le := _}
Equations
- zero_at_infty_continuous_map.non_unital_normed_ring = {to_has_norm := normed_add_comm_group.to_has_norm zero_at_infty_continuous_map.normed_add_comm_group, to_non_unital_ring := {add := non_unital_ring.add zero_at_infty_continuous_map.non_unital_ring, add_assoc := _, zero := non_unital_ring.zero zero_at_infty_continuous_map.non_unital_ring, zero_add := _, add_zero := _, nsmul := non_unital_ring.nsmul zero_at_infty_continuous_map.non_unital_ring, nsmul_zero' := _, nsmul_succ' := _, neg := non_unital_ring.neg zero_at_infty_continuous_map.non_unital_ring, sub := non_unital_ring.sub zero_at_infty_continuous_map.non_unital_ring, sub_eq_add_neg := _, zsmul := non_unital_ring.zsmul zero_at_infty_continuous_map.non_unital_ring, zsmul_zero' := _, zsmul_succ' := _, zsmul_neg' := _, add_left_neg := _, add_comm := _, mul := non_unital_ring.mul zero_at_infty_continuous_map.non_unital_ring, left_distrib := _, right_distrib := _, zero_mul := _, mul_zero := _, mul_assoc := _}, to_metric_space := normed_add_comm_group.to_metric_space zero_at_infty_continuous_map.normed_add_comm_group, dist_eq := _, norm_mul := _}
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
star_add_monoid
is close enough.
The star_add_monoid
and normed_star_group
classes on C₀(α, β)
are inherited from their
counterparts on α →ᵇ β
. Ultimately, when β
is a C⋆-ring, then so is C₀(α, β)
.
Equations
- zero_at_infty_continuous_map.has_star = {star := λ (f : zero_at_infty_continuous_map α β), {to_continuous_map := {to_fun := λ (x : α), has_star.star (⇑f x), continuous_to_fun := _}, zero_at_infty' := _}}
Equations
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 cocompact_map
s.
Composition of a continuous function vanishing at infinity with a cocompact map yields another continuous function vanishing at infinity.
Equations
- f.comp g = {to_continuous_map := ↑f.comp ↑g, zero_at_infty' := _}
Composition as an additive monoid homomorphism.
Equations
- zero_at_infty_continuous_map.comp_add_monoid_hom g = {to_fun := λ (f : zero_at_infty_continuous_map γ δ), f.comp g, map_zero' := _, map_add' := _}
Composition as a semigroup homomorphism.
Equations
- zero_at_infty_continuous_map.comp_mul_hom g = {to_fun := λ (f : zero_at_infty_continuous_map γ δ), f.comp g, map_mul' := _}
Composition as a linear map.
Equations
- zero_at_infty_continuous_map.comp_linear_map g = {to_fun := λ (f : zero_at_infty_continuous_map γ δ), f.comp g, map_add' := _, map_smul' := _}
Composition as a non-unital algebra homomorphism.
Equations
- zero_at_infty_continuous_map.comp_non_unital_alg_hom g = {to_fun := λ (f : zero_at_infty_continuous_map γ δ), f.comp g, map_smul' := _, map_zero' := _, map_add' := _, map_mul' := _}