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
- ContinuousFunctions.instCoeFunElemForallSetOfContinuous = { coe := Subtype.val }
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 }
Alias of ContinuousMap.coe_natCast.
Alias of ContinuousMap.natCast_apply.
Equations
- ContinuousMap.instIntCast = { intCast := fun (n : ℤ) => ContinuousMap.const α ↑n }
Alias of ContinuousMap.coe_intCast.
Alias of ContinuousMap.intCast_apply.
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
- ContinuousMap.instSemigroupOfContinuousMul = Function.Injective.semigroup DFunLike.coe ⋯ ⋯
Equations
- ContinuousMap.instAddSemigroupOfContinuousAdd = Function.Injective.addSemigroup DFunLike.coe ⋯ ⋯
Equations
- ContinuousMap.instCommSemigroupOfContinuousMul = Function.Injective.commSemigroup DFunLike.coe ⋯ ⋯
Equations
- ContinuousMap.instAddCommSemigroupOfContinuousAdd = Function.Injective.addCommSemigroup DFunLike.coe ⋯ ⋯
Equations
- ContinuousMap.instMulOneClassOfContinuousMul = Function.Injective.mulOneClass DFunLike.coe ⋯ ⋯ ⋯
Equations
- ContinuousMap.instAddZeroClassOfContinuousAdd = Function.Injective.addZeroClass DFunLike.coe ⋯ ⋯ ⋯
Equations
- ContinuousMap.instMulZeroClassOfContinuousMul = Function.Injective.mulZeroClass DFunLike.coe ⋯ ⋯ ⋯
Equations
- ContinuousMap.instSemigroupWithZeroOfContinuousMul = Function.Injective.semigroupWithZero DFunLike.coe ⋯ ⋯ ⋯
Equations
- ContinuousMap.instMonoidOfContinuousMul = Function.Injective.monoid DFunLike.coe ⋯ ⋯ ⋯ ⋯
Equations
- ContinuousMap.instAddMonoidOfContinuousAdd = Function.Injective.addMonoid DFunLike.coe ⋯ ⋯ ⋯ ⋯
Equations
- ContinuousMap.instMonoidWithZeroOfContinuousMul = Function.Injective.monoidWithZero DFunLike.coe ⋯ ⋯ ⋯ ⋯ ⋯
Equations
- ContinuousMap.instCommMonoidOfContinuousMul = Function.Injective.commMonoid DFunLike.coe ⋯ ⋯ ⋯ ⋯
Equations
- ContinuousMap.instAddCommMonoidOfContinuousAdd = Function.Injective.addCommMonoid DFunLike.coe ⋯ ⋯ ⋯ ⋯
Equations
- ContinuousMap.instCommMonoidWithZeroOfContinuousMul = Function.Injective.commMonoidWithZero DFunLike.coe ⋯ ⋯ ⋯ ⋯ ⋯
Equations
- ⋯ = ⋯
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
- MonoidHom.compLeftContinuous α g hg = { toFun := fun (f : C(α, β)) => { toFun := ⇑g, continuous_toFun := hg }.comp f, map_one' := ⋯, map_mul' := ⋯ }
Instances For
Composition on the left by a (continuous) homomorphism of topological AddMonoids, as an
AddMonoidHom. Similar to AddMonoidHom.comp_left.
Equations
- AddMonoidHom.compLeftContinuous α g hg = { toFun := fun (f : C(α, β)) => { toFun := ⇑g, continuous_toFun := hg }.comp f, map_zero' := ⋯, map_add' := ⋯ }
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
- ContinuousMap.instGroupOfTopologicalGroup = Function.Injective.group DFunLike.coe ⋯ ⋯ ⋯ ⋯ ⋯ ⋯ ⋯
Equations
- ContinuousMap.instAddGroupOfTopologicalAddGroup = Function.Injective.addGroup DFunLike.coe ⋯ ⋯ ⋯ ⋯ ⋯ ⋯ ⋯
Equations
- ContinuousMap.instCommGroupContinuousMap = Function.Injective.commGroup DFunLike.coe ⋯ ⋯ ⋯ ⋯ ⋯ ⋯ ⋯
Equations
- ContinuousMap.instAddCommGroupContinuousMap = Function.Injective.addCommGroup DFunLike.coe ⋯ ⋯ ⋯ ⋯ ⋯ ⋯ ⋯
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
- ContinuousMap.instNonUnitalNonAssocSemiringOfTopologicalSemiring = Function.Injective.nonUnitalNonAssocSemiring DFunLike.coe ⋯ ⋯ ⋯ ⋯ ⋯
Equations
- ContinuousMap.instNonUnitalSemiringOfTopologicalSemiring = Function.Injective.nonUnitalSemiring DFunLike.coe ⋯ ⋯ ⋯ ⋯ ⋯
Equations
- ContinuousMap.instAddMonoidWithOneOfContinuousAdd = Function.Injective.addMonoidWithOne DFunLike.coe ⋯ ⋯ ⋯ ⋯ ⋯ ⋯
Equations
- ContinuousMap.instNonAssocSemiringOfTopologicalSemiring = Function.Injective.nonAssocSemiring DFunLike.coe ⋯ ⋯ ⋯ ⋯ ⋯ ⋯ ⋯
Equations
- ContinuousMap.instSemiringOfTopologicalSemiring = Function.Injective.semiring DFunLike.coe ⋯ ⋯ ⋯ ⋯ ⋯ ⋯ ⋯ ⋯
Equations
- ContinuousMap.instNonUnitalNonAssocRingOfTopologicalRing = Function.Injective.nonUnitalNonAssocRing DFunLike.coe ⋯ ⋯ ⋯ ⋯ ⋯ ⋯ ⋯ ⋯
Equations
- ContinuousMap.instNonUnitalRingOfTopologicalRing = Function.Injective.nonUnitalRing DFunLike.coe ⋯ ⋯ ⋯ ⋯ ⋯ ⋯ ⋯ ⋯
Equations
- ContinuousMap.instNonAssocRingOfTopologicalRing = Function.Injective.nonAssocRing DFunLike.coe ⋯ ⋯ ⋯ ⋯ ⋯ ⋯ ⋯ ⋯ ⋯ ⋯ ⋯
Equations
- ContinuousMap.instRing = Function.Injective.ring DFunLike.coe ⋯ ⋯ ⋯ ⋯ ⋯ ⋯ ⋯ ⋯ ⋯ ⋯ ⋯ ⋯
Equations
- ContinuousMap.instNonUnitalCommSemiringOfTopologicalSemiring = Function.Injective.nonUnitalCommSemiring DFunLike.coe ⋯ ⋯ ⋯ ⋯ ⋯
Equations
- ContinuousMap.instCommSemiringOfTopologicalSemiring = Function.Injective.commSemiring DFunLike.coe ⋯ ⋯ ⋯ ⋯ ⋯ ⋯ ⋯ ⋯
Equations
- ContinuousMap.instNonUnitalCommRingOfTopologicalRing = Function.Injective.nonUnitalCommRing DFunLike.coe ⋯ ⋯ ⋯ ⋯ ⋯ ⋯ ⋯ ⋯
Equations
- ContinuousMap.instCommRingOfTopologicalRing = Function.Injective.commRing DFunLike.coe ⋯ ⋯ ⋯ ⋯ ⋯ ⋯ ⋯ ⋯ ⋯ ⋯ ⋯ ⋯
Equations
- ⋯ = ⋯
Equations
- ⋯ = ⋯
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
Equations
- ⋯ = ⋯
Equations
- ⋯ = ⋯
Equations
- ⋯ = ⋯
Equations
- ⋯ = ⋯
Equations
- ⋯ = ⋯
Equations
- ⋯ = ⋯
Equations
- ⋯ = ⋯
Equations
- ⋯ = ⋯
Equations
- ⋯ = ⋯
Equations
- ⋯ = ⋯
Equations
- ⋯ = ⋯
Equations
- ContinuousMap.instMulActionOfContinuousConstSMul = Function.Injective.mulAction DFunLike.coe ⋯ ⋯
Equations
- ContinuousMap.instDistribMulActionOfContinuousConstSMul = Function.Injective.distribMulAction ContinuousMap.coeFnAddMonoidHom ⋯ ⋯
Equations
- ContinuousMap.module = Function.Injective.module R ContinuousMap.coeFnAddMonoidHom ⋯ ⋯
Composition on the left by a continuous linear map, as a LinearMap.
Similar to LinearMap.compLeft.
Equations
- ContinuousLinearMap.compLeftContinuous R α g = { toFun := (↑(AddMonoidHom.compLeftContinuous α (↑g).toAddMonoidHom ⋯)).toFun, map_add' := ⋯, map_smul' := ⋯ }
Instances For
Coercion to a function as a LinearMap.
Equations
- ContinuousMap.coeFnLinearMap R = { toFun := (↑ContinuousMap.coeFnAddMonoidHom).toFun, map_add' := ⋯, map_smul' := ⋯ }
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 TopologicalSemiring.
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 = Algebra.mk ContinuousMap.C ⋯ ⋯
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
- ContinuousMap.compRightAlgHom R A f = { toFun := fun (g : C(β, A)) => g.comp f, map_one' := ⋯, map_mul' := ⋯, map_zero' := ⋯, map_add' := ⋯, commutes' := ⋯ }
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.
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.)
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.
Equations
- ⋯ = ⋯
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.
Equations
- ContinuousMap.evalAlgHom S R x = { toFun := fun (f : C(X, R)) => f x, map_one' := ⋯, map_mul' := ⋯, map_zero' := ⋯, map_add' := ⋯, commutes' := ⋯ }