Algebraic structures over continuous functions #
THIS FILE IS SYNCHRONIZED WITH MATHLIB4. Any changes to this file require a corresponding PR to mathlib4.
In this file we define instances of algebraic structures over the type continuous_map α β
(denoted C(α, β)) of bundled continuous maps from α to β. For example, C(α, β)
is a group when β is a group, a ring when β is a ring, etc.
For each type of algebraic structure, we also define an appropriate subobject of α → β
with carrier { f : α → β | continuous f }. For example, when β is a group, a subgroup
continuous_subgroup α β of α → β is constructed with carrier { f : α → β | continuous f }.
Note that, rather than using the derived algebraic structures on these subobjects
(for example, when β is a group, the derived group structure on continuous_subgroup α β),
one should use C(α, β) with the appropriate instance of the structure.
Equations
- continuous_functions.set_of.has_coe_to_fun = {coe := subtype.val (λ (x : α → β), x ∈ {f : α → β | continuous f})}
Equations
Equations
Equations
- continuous_map.has_nat_cast = {nat_cast := λ (n : ℕ), continuous_map.const α ↑n}
Equations
- continuous_map.has_int_cast = {int_cast := λ (n : ℤ), continuous_map.const α ↑n}
Group stucture #
In this section we show that continuous functions valued in a topological group inherit the structure of a group.
The submonoid of continuous maps α → β.
Equations
- continuous_submonoid α β = {carrier := {f : α → β | continuous f}, mul_mem' := _, one_mem' := _}
The add_submonoid of continuous maps α → β.
Equations
- continuous_add_submonoid α β = {carrier := {f : α → β | continuous f}, add_mem' := _, zero_mem' := _}
The subgroup of continuous maps α → β.
Equations
- continuous_subgroup α β = {carrier := (continuous_submonoid α β).carrier, mul_mem' := _, one_mem' := _, inv_mem' := _}
The add_subgroup of continuous maps α → β.
Equations
- continuous_add_subgroup α β = {carrier := (continuous_add_submonoid α β).carrier, add_mem' := _, zero_mem' := _, neg_mem' := _}
Equations
- continuous_map.add_semigroup = function.injective.add_semigroup coe_fn continuous_map.coe_injective continuous_map.add_semigroup._proof_1
Equations
- continuous_map.semigroup = function.injective.semigroup coe_fn continuous_map.coe_injective continuous_map.semigroup._proof_1
Equations
- continuous_map.add_comm_semigroup = function.injective.add_comm_semigroup coe_fn continuous_map.coe_injective continuous_map.add_comm_semigroup._proof_1
Equations
- continuous_map.comm_semigroup = function.injective.comm_semigroup coe_fn continuous_map.coe_injective continuous_map.comm_semigroup._proof_1
Equations
- continuous_map.mul_one_class = function.injective.mul_one_class coe_fn continuous_map.coe_injective continuous_map.mul_one_class._proof_1 continuous_map.mul_one_class._proof_2
Equations
- continuous_map.add_zero_class = function.injective.add_zero_class coe_fn continuous_map.coe_injective continuous_map.add_zero_class._proof_1 continuous_map.add_zero_class._proof_2
Equations
- continuous_map.mul_zero_class = function.injective.mul_zero_class coe_fn continuous_map.coe_injective continuous_map.mul_zero_class._proof_1 continuous_map.mul_zero_class._proof_2
Equations
- continuous_map.semigroup_with_zero = function.injective.semigroup_with_zero coe_fn continuous_map.coe_injective continuous_map.semigroup_with_zero._proof_1 continuous_map.semigroup_with_zero._proof_2
Equations
- continuous_map.add_monoid = function.injective.add_monoid coe_fn continuous_map.coe_injective continuous_map.add_monoid._proof_1 continuous_map.add_monoid._proof_2 continuous_map.coe_nsmul
Equations
- continuous_map.monoid = function.injective.monoid coe_fn continuous_map.coe_injective continuous_map.monoid._proof_1 continuous_map.monoid._proof_2 continuous_map.coe_pow
Equations
- continuous_map.monoid_with_zero = function.injective.monoid_with_zero coe_fn continuous_map.coe_injective continuous_map.monoid_with_zero._proof_1 continuous_map.monoid_with_zero._proof_2 continuous_map.monoid_with_zero._proof_3 continuous_map.monoid_with_zero._proof_4
Equations
- continuous_map.comm_monoid = function.injective.comm_monoid coe_fn continuous_map.coe_injective continuous_map.comm_monoid._proof_1 continuous_map.comm_monoid._proof_2 continuous_map.comm_monoid._proof_3
Equations
- continuous_map.add_comm_monoid = function.injective.add_comm_monoid coe_fn continuous_map.coe_injective continuous_map.add_comm_monoid._proof_1 continuous_map.add_comm_monoid._proof_2 continuous_map.add_comm_monoid._proof_3
Equations
- continuous_map.comm_monoid_with_zero = function.injective.comm_monoid_with_zero coe_fn continuous_map.coe_injective continuous_map.comm_monoid_with_zero._proof_1 continuous_map.comm_monoid_with_zero._proof_2 continuous_map.comm_monoid_with_zero._proof_3 continuous_map.comm_monoid_with_zero._proof_4
Coercion to a function as an monoid_hom. Similar to monoid_hom.coe_fn.
Equations
Coercion to a function as an add_monoid_hom. Similar to add_monoid_hom.coe_fn.
Equations
Composition on the left by a (continuous) homomorphism of topological add_monoids,
as an add_monoid_hom. Similar to add_monoid_hom.comp_left.
Composition on the left by a (continuous) homomorphism of topological monoids, as a
monoid_hom. Similar to monoid_hom.comp_left.
Composition on the right as a monoid_hom. Similar to monoid_hom.comp_hom'.
Composition on the right as an add_monoid_hom. Similar to
add_monoid_hom.comp_hom'.
Equations
- continuous_map.add_group = function.injective.add_group coe_fn continuous_map.coe_injective continuous_map.add_group._proof_1 continuous_map.add_group._proof_2 continuous_map.coe_neg continuous_map.add_group._proof_3 continuous_map.add_group._proof_4 continuous_map.coe_zsmul
Equations
- continuous_map.group = function.injective.group coe_fn continuous_map.coe_injective continuous_map.group._proof_1 continuous_map.group._proof_2 continuous_map.coe_inv continuous_map.group._proof_3 continuous_map.group._proof_4 continuous_map.coe_zpow
Equations
- continuous_map.comm_group = function.injective.comm_group coe_fn continuous_map.coe_injective continuous_map.comm_group._proof_4 continuous_map.comm_group._proof_5 continuous_map.comm_group._proof_6 continuous_map.comm_group._proof_7 continuous_map.comm_group._proof_8 continuous_map.comm_group._proof_9
Equations
- continuous_map.add_comm_group = function.injective.add_comm_group coe_fn continuous_map.coe_injective continuous_map.add_comm_group._proof_4 continuous_map.add_comm_group._proof_5 continuous_map.add_comm_group._proof_6 continuous_map.add_comm_group._proof_7 continuous_map.add_comm_group._proof_8 continuous_map.add_comm_group._proof_9
If α is locally compact, and an infinite sum of functions in C(α, β)
converges to g (for the compact-open topology), then the pointwise sum converges to g x for
all x ∈ α.
Ring stucture #
In this section we show that continuous functions valued in a topological semiring R inherit
the structure of a ring.
The subsemiring of continuous maps α → β.
Equations
- continuous_subsemiring α R = {carrier := (continuous_add_submonoid α R).carrier, mul_mem' := _, one_mem' := _, add_mem' := _, zero_mem' := _}
The subring of continuous maps α → β.
Equations
- continuous_map.non_unital_non_assoc_semiring = function.injective.non_unital_non_assoc_semiring coe_fn continuous_map.coe_injective continuous_map.non_unital_non_assoc_semiring._proof_1 continuous_map.non_unital_non_assoc_semiring._proof_2 continuous_map.non_unital_non_assoc_semiring._proof_3 continuous_map.non_unital_non_assoc_semiring._proof_4
Equations
- continuous_map.non_unital_semiring = function.injective.non_unital_semiring coe_fn continuous_map.coe_injective continuous_map.non_unital_semiring._proof_4 continuous_map.non_unital_semiring._proof_5 continuous_map.non_unital_semiring._proof_6 continuous_map.non_unital_semiring._proof_7
Equations
- continuous_map.add_monoid_with_one = function.injective.add_monoid_with_one coe_fn continuous_map.coe_injective continuous_map.add_monoid_with_one._proof_1 continuous_map.add_monoid_with_one._proof_2 continuous_map.add_monoid_with_one._proof_3 continuous_map.add_monoid_with_one._proof_4 continuous_map.add_monoid_with_one._proof_5
Equations
- continuous_map.non_assoc_semiring = function.injective.non_assoc_semiring coe_fn continuous_map.coe_injective continuous_map.non_assoc_semiring._proof_4 continuous_map.non_assoc_semiring._proof_5 continuous_map.non_assoc_semiring._proof_6 continuous_map.non_assoc_semiring._proof_7 continuous_map.non_assoc_semiring._proof_8 continuous_map.non_assoc_semiring._proof_9
Equations
- continuous_map.semiring = function.injective.semiring coe_fn continuous_map.coe_injective continuous_map.semiring._proof_5 continuous_map.semiring._proof_6 continuous_map.semiring._proof_7 continuous_map.semiring._proof_8 continuous_map.semiring._proof_9 continuous_map.semiring._proof_10 continuous_map.semiring._proof_11
Equations
- continuous_map.non_unital_non_assoc_ring = function.injective.non_unital_non_assoc_ring coe_fn continuous_map.coe_injective continuous_map.non_unital_non_assoc_ring._proof_5 continuous_map.non_unital_non_assoc_ring._proof_6 continuous_map.non_unital_non_assoc_ring._proof_7 continuous_map.non_unital_non_assoc_ring._proof_8 continuous_map.non_unital_non_assoc_ring._proof_9 continuous_map.non_unital_non_assoc_ring._proof_10 continuous_map.non_unital_non_assoc_ring._proof_11
Equations
- continuous_map.non_unital_ring = function.injective.non_unital_ring coe_fn continuous_map.coe_injective continuous_map.non_unital_ring._proof_7 continuous_map.non_unital_ring._proof_8 continuous_map.non_unital_ring._proof_9 continuous_map.non_unital_ring._proof_10 continuous_map.non_unital_ring._proof_11 continuous_map.non_unital_ring._proof_12 continuous_map.non_unital_ring._proof_13
Equations
- continuous_map.non_assoc_ring = function.injective.non_assoc_ring coe_fn continuous_map.coe_injective continuous_map.non_assoc_ring._proof_7 continuous_map.non_assoc_ring._proof_8 continuous_map.non_assoc_ring._proof_9 continuous_map.non_assoc_ring._proof_10 continuous_map.non_assoc_ring._proof_11 continuous_map.non_assoc_ring._proof_12 continuous_map.non_assoc_ring._proof_13 continuous_map.non_assoc_ring._proof_14 continuous_map.non_assoc_ring._proof_15 continuous_map.non_assoc_ring._proof_16
Equations
- continuous_map.ring = function.injective.ring coe_fn continuous_map.coe_injective continuous_map.ring._proof_8 continuous_map.ring._proof_9 continuous_map.ring._proof_10 continuous_map.ring._proof_11 continuous_map.ring._proof_12 continuous_map.ring._proof_13 continuous_map.ring._proof_14 continuous_map.ring._proof_15 continuous_map.ring._proof_16 continuous_map.ring._proof_17 continuous_map.ring._proof_18
Equations
- continuous_map.non_unital_comm_semiring = function.injective.non_unital_comm_semiring coe_fn continuous_map.coe_injective continuous_map.non_unital_comm_semiring._proof_4 continuous_map.non_unital_comm_semiring._proof_5 continuous_map.non_unital_comm_semiring._proof_6 continuous_map.non_unital_comm_semiring._proof_7
Equations
- continuous_map.comm_semiring = function.injective.comm_semiring coe_fn continuous_map.coe_injective continuous_map.comm_semiring._proof_5 continuous_map.comm_semiring._proof_6 continuous_map.comm_semiring._proof_7 continuous_map.comm_semiring._proof_8 continuous_map.comm_semiring._proof_9 continuous_map.comm_semiring._proof_10 continuous_map.comm_semiring._proof_11
Equations
- continuous_map.non_unital_comm_ring = function.injective.non_unital_comm_ring coe_fn continuous_map.coe_injective continuous_map.non_unital_comm_ring._proof_7 continuous_map.non_unital_comm_ring._proof_8 continuous_map.non_unital_comm_ring._proof_9 continuous_map.non_unital_comm_ring._proof_10 continuous_map.non_unital_comm_ring._proof_11 continuous_map.non_unital_comm_ring._proof_12 continuous_map.non_unital_comm_ring._proof_13
Equations
- continuous_map.comm_ring = function.injective.comm_ring coe_fn continuous_map.coe_injective continuous_map.comm_ring._proof_8 continuous_map.comm_ring._proof_9 continuous_map.comm_ring._proof_10 continuous_map.comm_ring._proof_11 continuous_map.comm_ring._proof_12 continuous_map.comm_ring._proof_13 continuous_map.comm_ring._proof_14 continuous_map.comm_ring._proof_15 continuous_map.comm_ring._proof_16 continuous_map.comm_ring._proof_17 continuous_map.comm_ring._proof_18
Composition on the left by a (continuous) homomorphism of topological semirings, as a
ring_hom. Similar to ring_hom.comp_left.
Equations
- ring_hom.comp_left_continuous α g hg = {to_fun := (monoid_hom.comp_left_continuous α g.to_monoid_hom hg).to_fun, map_one' := _, map_mul' := _, map_zero' := _, map_add' := _}
Coercion to a function as a ring_hom.
Equations
- continuous_map.coe_fn_ring_hom = {to_fun := coe_fn continuous_map.has_coe_to_fun, map_one' := _, map_mul' := _, map_zero' := _, map_add' := _}
Semiodule stucture #
In this section we show that continuous functions valued in a topological module M over a
topological semiring R inherit the structure of a module.
The R-submodule of continuous maps α → M.
Equations
- continuous_submodule α R M = {carrier := {f : α → M | continuous f}, add_mem' := _, zero_mem' := _, smul_mem' := _}
Equations
- continuous_map.mul_action = function.injective.mul_action coe_fn continuous_map.coe_injective continuous_map.mul_action._proof_1
Equations
- continuous_map.distrib_mul_action = function.injective.distrib_mul_action continuous_map.coe_fn_add_monoid_hom continuous_map.coe_injective continuous_map.distrib_mul_action._proof_1
Equations
- continuous_map.module = function.injective.module R continuous_map.coe_fn_add_monoid_hom continuous_map.coe_injective continuous_map.module._proof_1
Composition on the left by a continuous linear map, as a linear_map.
Similar to linear_map.comp_left.
Equations
- continuous_linear_map.comp_left_continuous R α g = {to_fun := (add_monoid_hom.comp_left_continuous α g.to_linear_map.to_add_monoid_hom _).to_fun, map_add' := _, map_smul' := _}
Coercion to a function as a linear_map.
Equations
- continuous_map.coe_fn_linear_map R = {to_fun := coe_fn continuous_map.has_coe_to_fun, map_add' := _, map_smul' := _}
Algebra structure #
In this section we show that continuous functions valued in a topological algebra A over a ring
R inherit the structure of an algebra. Note that the hypothesis that A is a topological algebra
is obtained by requiring that A be both a has_continuous_smul and a topological_semiring.
The R-subalgebra of continuous maps α → A.
Equations
- continuous_subalgebra = {carrier := {f : α → A | continuous f}, mul_mem' := _, one_mem' := _, add_mem' := _, zero_mem' := _, algebra_map_mem' := _}
Continuous constant functions as a ring_hom.
Equations
- continuous_map.C = {to_fun := λ (c : R), {to_fun := λ (x : α), ⇑(algebra_map R A) c, continuous_to_fun := _}, map_one' := _, map_mul' := _, map_zero' := _, map_add' := _}
Equations
- continuous_map.algebra = {to_has_smul := continuous_map.has_smul continuous_map.algebra._proof_1, to_ring_hom := continuous_map.C _inst_6, commutes' := _, smul_def' := _}
Composition on the left by a (continuous) homomorphism of topological R-algebras, as an
alg_hom. Similar to alg_hom.comp_left.
Equations
- alg_hom.comp_left_continuous R g hg = {to_fun := (ring_hom.comp_left_continuous α g.to_ring_hom hg).to_fun, map_one' := _, map_mul' := _, map_zero' := _, map_add' := _, commutes' := _}
Precomposition of functions into a normed ring by a continuous map is an algebra homomorphism.
Coercion to a function as an alg_hom.
A version of separates_points for subalgebras of the continuous functions,
used for stating the Stone-Weierstrass theorem.
A set of continuous maps "separates points strongly" if for each pair of distinct points there is a function with specified values on them.
We give a slightly unusual formulation, where the specified values are given by some
function v, and we ask f x = v x ∧ f y = v y. This avoids needing a hypothesis x ≠ y.
In fact, this definition would work perfectly well for a set of non-continuous functions, but as the only current use case is in the Stone-Weierstrass theorem, writing it this way avoids having to deal with casts inside the set. (This may need to change if we do Stone-Weierstrass on non-compact spaces, where the functions would be continuous functions vanishing at infinity.)
Working in continuous functions into a topological field, a subalgebra of functions that separates points also separates points strongly.
By the hypothesis, we can find a function f so f x ≠ f y.
By an affine transformation in the field we can arrange so that f x = a and f x = b.
Structure as module over scalar functions #
If M is a module over R, then we show that the space of continuous functions from α to M
is naturally a module over the ring of continuous functions from α to R.
Equations
- continuous_map.module' R M = {to_distrib_mul_action := {to_mul_action := {to_has_smul := {smul := has_smul.smul continuous_map.has_smul'}, one_smul := _, mul_smul := _}, smul_zero := _, smul_add := _}, add_smul := _, zero_smul := _}
We now provide formulas for f ⊓ g and f ⊔ g, where f g : C(α, β),
in terms of continuous_map.abs.
Star structure #
If β has a continuous star operation, we put a star structure on C(α, β) by using the
star operation pointwise.
If β is a ⋆-ring, then C(α, β) inherits a ⋆-ring structure.
If β is a ⋆-ring and a ⋆-module over R, then the space of continuous functions from α to β
is a ⋆-module over R.
Equations
- continuous_map.has_star = {star := λ (f : C(α, β)), star_continuous_map.comp f}
Equations
- continuous_map.has_involutive_star = {to_has_star := continuous_map.has_star _inst_4, star_involutive := _}
Equations
Equations
Equations
- continuous_map.star_ring = {to_star_semigroup := continuous_map.star_semigroup _inst_6, star_add := _}
The functorial map taking f : C(X, Y) to C(Y, A) →⋆ₐ[𝕜] C(X, A) given by pre-composition
with the continuous function f. See continuous_map.comp_monoid_hom' and
continuous_map.comp_add_monoid_hom', continuous_map.comp_right_alg_hom for bundlings of
pre-composition into a monoid_hom, an add_monoid_hom and an alg_hom, respectively, under
suitable assumptions on A.
continuous_map.comp_star_alg_hom' sends the identity continuous map to the identity
star_alg_hom
continuous_map.comp_star_alg_hom is functorial.
Summing translates of a function #
Summing the translates of f by ℤ • p gives a map which is periodic with period p.
(This is true without any convergence conditions, since if the sum doesn't converge it is taken to
be the zero map, which is periodic.)
continuous_map.comp_star_alg_hom' as a star_alg_equiv when the continuous map f is
actually a homeomorphism.