Compactly supported continuous functions #
In this file, we define the type C_c(α, β)
of compactly supported continuous functions and the
class CompactlySupportedContinuousMapClass
, and prove basic properties.
Main definitions and results #
This file contains various instances such as Add
, Mul
, SMul F C_c(α, β)
when F
is a class of
continuous functions.
When β
has more structures, C_c(α, β)
inherits such structures as AddCommGroup
,
NonUnitalRing
and StarRing
.
When the domain α
is compact, ContinuousMap.liftCompactlySupported
gives the identification
C(α, β) ≃ C_c(α, β)
.
C_c(α, β)
is the type of continuous functions α → β
with compact support from a topological
space to a topological space with a zero element.
When possible, instead of parametrizing results over f : C_c(α, β)
,
you should parametrize over {F : Type*} [CompactlySupportedContinuousMapClass F α β] (f : F)
.
When you extend this structure, make sure to extend CompactlySupportedContinuousMapClass
.
- toFun : α → β
- continuous_toFun : Continuous self.toFun
- hasCompactSupport' : HasCompactSupport self.toFun
The function has compact support .
Instances For
C_c(α, β)
is the type of continuous functions α → β
with compact support from a topological
space to a topological space with a zero element.
When possible, instead of parametrizing results over f : C_c(α, β)
,
you should parametrize over {F : Type*} [CompactlySupportedContinuousMapClass F α β] (f : F)
.
When you extend this structure, make sure to extend CompactlySupportedContinuousMapClass
.
Equations
- One or more equations did not get rendered due to their size.
Instances For
C_c(α, β)
is the type of continuous functions α → β
with compact support from a topological
space to a topological space with a zero element.
When possible, instead of parametrizing results over f : C_c(α, β)
,
you should parametrize over {F : Type*} [CompactlySupportedContinuousMapClass F α β] (f : F)
.
When you extend this structure, make sure to extend CompactlySupportedContinuousMapClass
.
Equations
- One or more equations did not get rendered due to their size.
Instances For
CompactlySupportedContinuousMapClass F α β
states that F
is a type of continuous maps with
compact support.
You should also extend this typeclass when you extend CompactlySupportedContinuousMap
.
- hasCompactSupport (f : F) : HasCompactSupport ⇑f
Each member of the class has compact support.
Instances
Equations
- CompactlySupportedContinuousMap.instFunLike = { coe := fun (f : CompactlySupportedContinuousMap α β) => f.toFun, coe_injective' := ⋯ }
Copy of a CompactlySupportedContinuousMap
with a new toFun
equal to the old one. Useful
to fix definitional equalities.
Equations
- f.copy f' h = { toFun := f', continuous_toFun := ⋯, hasCompactSupport' := ⋯ }
Instances For
A continuous function on a compact space automatically has compact support.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Algebraic structure #
Whenever β
has the structure of continuous additive monoid and a compatible topological structure,
then C_c(α, β)
inherits a corresponding algebraic structure. The primary exception to this is that
C_c(α, β)
will not have a multiplicative identity.
Equations
- CompactlySupportedContinuousMap.instZero = { zero := { toFun := ⇑0, continuous_toFun := ⋯, hasCompactSupport' := ⋯ } }
Equations
- CompactlySupportedContinuousMap.instInhabited = { default := 0 }
Equations
- CompactlySupportedContinuousMap.instMulOfContinuousMul = { mul := fun (f g : CompactlySupportedContinuousMap α β) => { toContinuousMap := ↑f * ↑g, hasCompactSupport' := ⋯ } }
the product of f : F
assuming ContinuousMapClass F α γ
and ContinuousSMul γ β
and
g : C_c(α, β)
is in C_c(α, β)
Equations
- One or more equations did not get rendered due to their size.
Equations
- CompactlySupportedContinuousMap.instMulZeroClassOfContinuousMul = Function.Injective.mulZeroClass (fun (f : CompactlySupportedContinuousMap α β) => ⇑f) ⋯ ⋯ ⋯
Equations
- CompactlySupportedContinuousMap.instSemigroupWithZeroOfContinuousMul = Function.Injective.semigroupWithZero (fun (f : CompactlySupportedContinuousMap α β) => ⇑f) ⋯ ⋯ ⋯
Equations
- CompactlySupportedContinuousMap.instAddOfContinuousAdd = { add := fun (f g : CompactlySupportedContinuousMap α β) => { toContinuousMap := ↑f + ↑g, hasCompactSupport' := ⋯ } }
Equations
- CompactlySupportedContinuousMap.instAddZeroClassOfContinuousAdd = Function.Injective.addZeroClass (fun (f : CompactlySupportedContinuousMap α β) => ⇑f) ⋯ ⋯ ⋯
Coercion to a function as a AddMonoidHom
. Similar to AddMonoidHom.coeFn
.
Equations
- CompactlySupportedContinuousMap.coeFnMonoidHom = { toFun := fun (f : CompactlySupportedContinuousMap α β) => ⇑f, map_zero' := ⋯, map_add' := ⋯ }
Instances For
Equations
- One or more equations did not get rendered due to their size.
Equations
- CompactlySupportedContinuousMap.instAddMonoidOfContinuousAdd = Function.Injective.addMonoid (fun (f : CompactlySupportedContinuousMap α β) => ⇑f) ⋯ ⋯ ⋯ ⋯
Equations
- CompactlySupportedContinuousMap.instAddCommMonoidOfContinuousAdd = Function.Injective.addCommMonoid (fun (f : CompactlySupportedContinuousMap α β) => ⇑f) ⋯ ⋯ ⋯ ⋯
Equations
- CompactlySupportedContinuousMap.instNeg = { neg := fun (f : CompactlySupportedContinuousMap α β) => { toFun := -⇑f.toContinuousMap, continuous_toFun := ⋯, hasCompactSupport' := ⋯ } }
Equations
- One or more equations did not get rendered due to their size.
Equations
- CompactlySupportedContinuousMap.instAddGroup = Function.Injective.addGroup (fun (f : CompactlySupportedContinuousMap α β) => ⇑f) ⋯ ⋯ ⋯ ⋯ ⋯ ⋯ ⋯
Equations
- CompactlySupportedContinuousMap.instAddCommGroupOfTopologicalAddGroup = Function.Injective.addCommGroup (fun (f : CompactlySupportedContinuousMap α β) => ⇑f) ⋯ ⋯ ⋯ ⋯ ⋯ ⋯ ⋯
Equations
- CompactlySupportedContinuousMap.instSMulWithZeroOfContinuousConstSMul = Function.Injective.smulWithZero { toFun := DFunLike.coe, map_zero' := ⋯ } ⋯ ⋯
Equations
- CompactlySupportedContinuousMap.instMulActionWithZeroOfContinuousConstSMul = Function.Injective.mulActionWithZero { toFun := DFunLike.coe, map_zero' := ⋯ } ⋯ ⋯
Equations
- CompactlySupportedContinuousMap.instModuleOfContinuousConstSMul = Function.Injective.module R { toFun := DFunLike.coe, map_zero' := ⋯, map_add' := ⋯ } ⋯ ⋯
Equations
- CompactlySupportedContinuousMap.instNonUnitalNonAssocSemiringOfTopologicalSemiring = Function.Injective.nonUnitalNonAssocSemiring (fun (f : CompactlySupportedContinuousMap α β) => ⇑f) ⋯ ⋯ ⋯ ⋯ ⋯
Equations
- CompactlySupportedContinuousMap.instNonUnitalSemiringOfTopologicalSemiring = Function.Injective.nonUnitalSemiring (fun (f : CompactlySupportedContinuousMap α β) => ⇑f) ⋯ ⋯ ⋯ ⋯ ⋯
Equations
- CompactlySupportedContinuousMap.instNonUnitalCommSemiringOfTopologicalSemiring = Function.Injective.nonUnitalCommSemiring (fun (f : CompactlySupportedContinuousMap α β) => ⇑f) ⋯ ⋯ ⋯ ⋯ ⋯
Equations
- CompactlySupportedContinuousMap.instNonUnitalNonAssocRingOfTopologicalRing = Function.Injective.nonUnitalNonAssocRing (fun (f : CompactlySupportedContinuousMap α β) => ⇑f) ⋯ ⋯ ⋯ ⋯ ⋯ ⋯ ⋯ ⋯
Equations
- CompactlySupportedContinuousMap.instNonUnitalRingOfTopologicalRing = Function.Injective.nonUnitalRing (fun (f : CompactlySupportedContinuousMap α β) => ⇑f) ⋯ ⋯ ⋯ ⋯ ⋯ ⋯ ⋯ ⋯
Equations
- CompactlySupportedContinuousMap.instNonUnitalCommRingOfTopologicalRing = Function.Injective.nonUnitalCommRing (fun (f : CompactlySupportedContinuousMap α β) => ⇑f) ⋯ ⋯ ⋯ ⋯ ⋯ ⋯ ⋯ ⋯
Star structure #
It is possible to equip C_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
StarAddMonoid
is close enough.
The StarAddMonoid
class on C_c(α, β)
is inherited from their counterparts on α →ᵇ β
.
Equations
- One or more equations did not get rendered due to their size.
Equations
- CompactlySupportedContinuousMap.instStarAddMonoid = StarAddMonoid.mk ⋯
Equations
- CompactlySupportedContinuousMap.instStarRing = StarRing.mk ⋯
C_c
as a functor #
For each β
with sufficient structure, there is a contravariant functor C_c(-, β)
from the
category of topological spaces with morphisms given by CocompactMap
s.
Composition of a continuous function with compact support with a cocompact map yields another continuous function with compact support.
Equations
- f.comp g = { toContinuousMap := (↑f).comp ↑g, hasCompactSupport' := ⋯ }
Instances For
Composition as an additive monoid homomorphism.
Equations
- CompactlySupportedContinuousMap.compAddMonoidHom g = { toFun := fun (f : CompactlySupportedContinuousMap γ δ) => f.comp g, map_zero' := ⋯, map_add' := ⋯ }
Instances For
Composition as a semigroup homomorphism.
Equations
- CompactlySupportedContinuousMap.compMulHom g = { toFun := fun (f : CompactlySupportedContinuousMap γ δ) => f.comp g, map_mul' := ⋯ }
Instances For
Composition as a linear map.
Equations
- CompactlySupportedContinuousMap.compLinearMap g = { toFun := fun (f : CompactlySupportedContinuousMap γ δ) => f.comp g, map_add' := ⋯, map_smul' := ⋯ }
Instances For
Composition as a non-unital algebra homomorphism.
Equations
- CompactlySupportedContinuousMap.compNonUnitalAlgHom g = { toFun := fun (f : CompactlySupportedContinuousMap γ δ) => f.comp g, map_smul' := ⋯, map_zero' := ⋯, map_add' := ⋯, map_mul' := ⋯ }
Instances For
Equations
- CompactlySupportedContinuousMapClass.instCoeTCCompactlySupportedContinuousMap = { coe := fun (f : F) => { toFun := ⇑f, continuous_toFun := ⋯, hasCompactSupport' := ⋯ } }
A continuous function on a compact space has automatically compact support. This is not an instance to avoid type class loops.
The nonnegative part of a bounded continuous ℝ
-valued function as a bounded
continuous ℝ≥0
-valued function.
Equations
- f.nnrealPart = { toFun := Real.toNNReal ∘ f.toFun, continuous_toFun := ⋯, hasCompactSupport' := ⋯ }