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_monoid
s,
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.