Pointed cones #
A pointed cone is defined to be a submodule of a module where the scalars are restricted to be
nonnegative. This is equivalent to saying that as a set a pointed cone is convex cone which
contains 0
. This is a bundled version of ConvexCone.Pointed
. We choose the submodule definition
as it allows us to use the Module
API to work with convex cones.
A pointed cone is a submodule of a module with scalars restricted to being nonnegative.
Equations
- PointedCone ๐ E = Submodule { c : ๐ // 0 โค c } E
Instances For
Every pointed cone is a convex cone.
Equations
- โS = { carrier := โS, smul_mem' := โฏ, add_mem' := โฏ }
Instances For
Equations
- PointedCone.instCoeConvexCone = { coe := PointedCone.toConvexCone }
Equations
- S.instZero = { zero := โจ0, โฏโฉ }
The PointedCone
constructed from a pointed ConvexCone
.
Equations
- ConvexCone.toPointedCone hS = { carrier := โS, add_mem' := โฏ, zero_mem' := hS, smul_mem' := โฏ }
Instances For
Equations
- โฏ = โฏ
Maps between pointed cones #
There is already a definition of maps between submodules, Submodule.map
. In our case, these maps
are induced from linear maps between the ambient modules that are linear over nonnegative scalars.
Such maps are unlikely to be of any use in practice. So, we construct some API to define maps
between pointed cones induced from linear maps between the ambient modules that are linear over
all scalars.
The image of a pointed cone under a ๐
-linear map is a pointed cone.
Equations
- PointedCone.map f S = Submodule.map (โ{ c : ๐ // 0 โค c } f) S
Instances For
The preimage of a convex cone under a ๐
-linear map is a convex cone.
Equations
- PointedCone.comap f S = Submodule.comap (โ{ c : ๐ // 0 โค c } f) S
Instances For
The positive cone is the pointed cone formed by the set of nonnegative elements in an ordered module.
Equations
- PointedCone.positive ๐ E = ConvexCone.toPointedCone โฏ
Instances For
The inner dual cone of a pointed cone is a pointed cone.
Equations
- S.dual = ConvexCone.toPointedCone โฏ