Algebraic structures over continuous functions #
In this file we define instances of algebraic structures over the type ContinuousMap α β
(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
continuousSubgroup α β 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 continuousSubgroup α β),
one should use C(α, β) with the appropriate instance of the structure.
Equations
mul and add #
one #
Equations
- ContinuousMap.instOne = { one := ContinuousMap.const α 1 }
Equations
- ContinuousMap.instZero = { zero := ContinuousMap.const α 0 }
Equations
- ContinuousMap.instNatCast = { natCast := fun (n : ℕ) => ContinuousMap.const α ↑n }
Equations
- ContinuousMap.instIntCast = { intCast := fun (n : ℤ) => ContinuousMap.const α ↑n }
nsmul and pow #
inv and neg #
div and sub #
zpow and zsmul #
Group structure #
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
- continuousSubmonoid α β = { carrier := {f : α → β | Continuous f}, mul_mem' := ⋯, one_mem' := ⋯ }
Instances For
The AddSubmonoid of continuous maps α → β.
Equations
- continuousAddSubmonoid α β = { carrier := {f : α → β | Continuous f}, add_mem' := ⋯, zero_mem' := ⋯ }
Instances For
The subgroup of continuous maps α → β.
Equations
- continuousSubgroup α β = { toSubmonoid := continuousSubmonoid α β, inv_mem' := ⋯ }
Instances For
The AddSubgroup of continuous maps α → β.
Equations
- continuousAddSubgroup α β = { toAddSubmonoid := continuousAddSubmonoid α β, neg_mem' := ⋯ }
Instances For
Equations
Coercion to a function as a MonoidHom. Similar to MonoidHom.coeFn.
Equations
Instances For
Coercion to a function as an AddMonoidHom. Similar to AddMonoidHom.coeFn.
Equations
Instances For
Composition on the left by a (continuous) homomorphism of topological monoids, as a
MonoidHom. Similar to MonoidHom.compLeft.
Equations
Instances For
Composition on the left by a (continuous) homomorphism of topological AddMonoids, as an
AddMonoidHom. Similar to AddMonoidHom.comp_left.
Equations
Instances For
Composition on the right as a MonoidHom. Similar to MonoidHom.compHom'.
Equations
Instances For
Composition on the right as an AddMonoidHom. Similar to AddMonoidHom.compHom'.
Equations
Instances For
Equations
Equations
Equations
Equations
If an infinite product of functions in C(α, β) converges to g
(for the compact-open topology), then the pointwise product converges to g x for all x ∈ α.
If 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 structure #
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
- continuousSubsemiring α R = { carrier := (continuousAddSubmonoid α R).carrier, mul_mem' := ⋯, one_mem' := ⋯, add_mem' := ⋯, zero_mem' := ⋯ }
Instances For
The subring of continuous maps α → β.
Equations
- continuousSubring α R = { carrier := (continuousAddSubgroup α R).carrier, mul_mem' := ⋯, one_mem' := ⋯, add_mem' := ⋯, zero_mem' := ⋯, neg_mem' := ⋯ }
Instances For
Equations
Equations
Equations
Equations
- ContinuousMap.instNonAssocRingOfIsTopologicalRing = Function.Injective.nonAssocRing DFunLike.coe ⋯ ⋯ ⋯ ⋯ ⋯ ⋯ ⋯ ⋯ ⋯ ⋯ ⋯
Equations
- ContinuousMap.instRing = Function.Injective.ring DFunLike.coe ⋯ ⋯ ⋯ ⋯ ⋯ ⋯ ⋯ ⋯ ⋯ ⋯ ⋯ ⋯
Equations
Equations
Equations
- ContinuousMap.instCommRingOfIsTopologicalRing = Function.Injective.commRing DFunLike.coe ⋯ ⋯ ⋯ ⋯ ⋯ ⋯ ⋯ ⋯ ⋯ ⋯ ⋯ ⋯
Composition on the left by a (continuous) homomorphism of topological semirings, as a
RingHom. Similar to RingHom.compLeft.
Equations
- RingHom.compLeftContinuous α g hg = { toMonoidHom := MonoidHom.compLeftContinuous α (↑g) hg, map_zero' := ⋯, map_add' := ⋯ }
Instances For
Coercion to a function as a RingHom.
Equations
- ContinuousMap.coeFnRingHom = { toMonoidHom := ContinuousMap.coeFnMonoidHom, map_zero' := ⋯, map_add' := ⋯ }
Instances For
Module structure #
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
- continuousSubmodule α R M = { carrier := {f : α → M | Continuous f}, add_mem' := ⋯, zero_mem' := ⋯, smul_mem' := ⋯ }
Instances For
Composition on the left by a continuous linear map, as a ContinuousLinearMap.
Similar to LinearMap.compLeft.
Equations
- ContinuousLinearMap.compLeftContinuous R α g = { toFun := (↑(AddMonoidHom.compLeftContinuous α (↑g).toAddMonoidHom ⋯)).toFun, map_add' := ⋯, map_smul' := ⋯, cont := ⋯ }
Instances For
The constant map x ↦ y ↦ x as a ContinuousLinearMap.
Equations
- ContinuousLinearMap.const R α = { toFun := fun (m : M) => ContinuousMap.const α m, map_add' := ⋯, map_smul' := ⋯, cont := ⋯ }
Instances For
Coercion to a function as a LinearMap.
Equations
- ContinuousMap.coeFnLinearMap R = { toFun := (↑ContinuousMap.coeFnAddMonoidHom).toFun, map_add' := ⋯, map_smul' := ⋯ }
Instances For
Evaluation at a point, as a continuous linear map.
Equations
Instances For
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 ContinuousSMul and a IsTopologicalSemiring.
The R-subalgebra of continuous maps α → A.
Equations
- continuousSubalgebra = { carrier := {f : α → A | Continuous f}, mul_mem' := ⋯, one_mem' := ⋯, add_mem' := ⋯, zero_mem' := ⋯, algebraMap_mem' := ⋯ }
Instances For
Continuous constant functions as a RingHom.
Equations
- ContinuousMap.C = { toFun := fun (c : R) => { toFun := fun (x : α) => (algebraMap R A) c, continuous_toFun := ⋯ }, map_one' := ⋯, map_mul' := ⋯, map_zero' := ⋯, map_add' := ⋯ }
Instances For
Equations
- ContinuousMap.algebra = { toSMul := ContinuousMap.instSMul, algebraMap := ContinuousMap.C, commutes' := ⋯, smul_def' := ⋯ }
Composition on the left by a (continuous) homomorphism of topological R-algebras, as an
AlgHom. Similar to AlgHom.compLeft.
Equations
- AlgHom.compLeftContinuous R g hg = { toRingHom := RingHom.compLeftContinuous α g.toRingHom hg, commutes' := ⋯ }
Instances For
Precomposition of functions into a topological semiring by a continuous map is an algebra homomorphism.
Equations
Instances For
Coercion to a function as an AlgHom.
Equations
- ContinuousMap.coeFnAlgHom R = { toRingHom := ContinuousMap.coeFnRingHom, commutes' := ⋯ }
Instances For
A version of Set.SeparatesPoints for subalgebras of the continuous functions,
used for stating the Stone-Weierstrass theorem.
Equations
- s.SeparatesPoints = ((fun (f : C(α, A)) => ⇑f) '' ↑s).SeparatesPoints
Instances For
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.)
Equations
- s.SeparatesPointsStrongly = ∀ (v : α → 𝕜) (x y : α), ∃ f ∈ s, f x = v x ∧ f y = v y
Instances For
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.
Coercion to a function for a scalar-valued continuous map multiplying a vector-valued one
(as opposed to ContinuousMap.coe_smul which is multiplication by a constant scalar).
Evaluation of a scalar-valued continuous map multiplying a vector-valued one
(as opposed to ContinuousMap.smul_apply which is multiplication by a constant scalar).
Evaluation as a bundled map #
Evaluation of continuous maps at a point, bundled as an algebra homomorphism.