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 a 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.
Instances For
A submodule is a pointed cone.
Instances For
Equations
Coercion from submodules to pointed cones as an order embedding.
Equations
- PointedCone.ofSubmoduleEmbedding = Submodule.restrictScalarsEmbedding { c : R // 0 ≤ c } R E
Instances For
Coercion from submodules to pointed cones as a lattice homomorphism.
Equations
- PointedCone.ofSubmoduleLatticeHom = Submodule.restrictScalarsLatticeHom { c : R // 0 ≤ c } R E
Instances For
Every pointed cone is a convex cone.
Instances For
Equations
The PointedCone constructed from a pointed ConvexCone.
Equations
- C.toPointedCone hC = { carrier := ↑C, add_mem' := ⋯, zero_mem' := hC, smul_mem' := ⋯ }
Instances For
Construct a pointed cone from closure under two-element conical combinations. I.e., a nonempty set closed under two-element conical combinations is a pointed cone.
Equations
- PointedCone.ofConeComb C nonempty coneComb = Submodule.ofLinearComb C nonempty ⋯
Instances For
The cone hull of a set s is the smallest pointed cone that contains s.
Pointed cones being defined as submodules over nonnegative scalars, this is implemented as
the submodule span of s w.r.t. nonnegative scalars.
Equations
- PointedCone.hull R s = Submodule.span { c : R // 0 ≤ c } s
Instances For
Alias of PointedCone.subset_hull.
Elements of the cone hull are expressible as conical combination of elements from s.
Alias of PointedCone.mem_hull_set.
Elements of the cone hull are expressible as conical combination of elements from s.
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 an R-linear map is a pointed cone.
Equations
- PointedCone.map f C = Submodule.map (↑{ c : R // 0 ≤ c } f) C
Instances For
The preimage of a pointed cone under an R-linear map is a pointed cone.
Equations
- PointedCone.comap f C = Submodule.comap (↑{ c : R // 0 ≤ c } f) C
Instances For
The positive cone is the pointed cone formed by the set of nonnegative elements in an ordered module.
Equations
- PointedCone.positive R E = (ConvexCone.positive R E).toPointedCone ⋯
Instances For
Constructs an ordered module given an ordered group, a cone, and a proof that the order relation is the one defined by the cone.
The lineality space of a cone C is the submodule given by C ⊓ -C.
Instances For
The lineality space of a cone is the largest submodule contained in the cone.
A pointed cone is salient iff the intersection of the cone with its negative
is the set {0}.