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
Instances For
Equations
- PointedCone.instCoePointedConeConvexConeToSMulToZeroToAddMonoidToSMulZeroClassToZeroToMonoidWithZeroToSemiringToSMulWithZeroToMulActionWithZero = { coe := PointedCone.toConvexCone }
Equations
- PointedCone.instZero S = { zero := { val := 0, property := (_ : 0 โ S) } }
The PointedCone
constructed from a pointed ConvexCone
.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- (_ : CanLift (ConvexCone ๐ E) (PointedCone ๐ E) PointedCone.toConvexCone ConvexCone.Pointed) = (_ : CanLift (ConvexCone ๐ E) (PointedCone ๐ E) PointedCone.toConvexCone ConvexCone.Pointed)
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 (_ : ConvexCone.Pointed (ConvexCone.positive ๐ E))
Instances For
The inner dual cone of a pointed cone is a pointed cone.
Equations
- PointedCone.dual S = ConvexCone.toPointedCone (_ : ConvexCone.Pointed (Set.innerDualCone โS))