# 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.

@[reducible, inline]
abbrev PointedCone (๐ : Type u_5) (E : Type u_6) [OrderedSemiring ๐] [] [Module ๐ E] :
Type u_6

A pointed cone is a submodule of a module with scalars restricted to being nonnegative.

Equations
Instances For
def PointedCone.toConvexCone {๐ : Type u_1} {E : Type u_2} [OrderedSemiring ๐] [] [Module ๐ E] (S : PointedCone ๐ E) :
ConvexCone ๐ E

Every pointed cone is a convex cone.

Equations
• โS = { carrier := โS, smul_mem' := โฏ, add_mem' := โฏ }
Instances For
instance PointedCone.instCoeConvexCone {๐ : Type u_1} {E : Type u_2} [OrderedSemiring ๐] [] [Module ๐ E] :
Coe (PointedCone ๐ E) (ConvexCone ๐ E)
Equations
• PointedCone.instCoeConvexCone = { coe := PointedCone.toConvexCone }
theorem PointedCone.toConvexCone_injective {๐ : Type u_1} {E : Type u_2} [OrderedSemiring ๐] [] [Module ๐ E] :
Function.Injective PointedCone.toConvexCone
@[simp]
theorem PointedCone.toConvexCone_pointed {๐ : Type u_1} {E : Type u_2} [OrderedSemiring ๐] [] [Module ๐ E] (S : PointedCone ๐ E) :
(โS).Pointed
theorem PointedCone.ext {๐ : Type u_1} {E : Type u_2} [OrderedSemiring ๐] [] [Module ๐ E] {S : PointedCone ๐ E} {T : PointedCone ๐ E} (h : โ (x : E), x โ S โ x โ T) :
S = T
instance PointedCone.instZero {๐ : Type u_1} {E : Type u_2} [OrderedSemiring ๐] [] [Module ๐ E] (S : PointedCone ๐ E) :
Zero โฅS
Equations
• S.instZero = { zero := โจ0, โฏโฉ }
def ConvexCone.toPointedCone {๐ : Type u_1} {E : Type u_2} [OrderedSemiring ๐] [] [Module ๐ E] {S : ConvexCone ๐ E} (hS : S.Pointed) :
PointedCone ๐ E

The PointedCone constructed from a pointed ConvexCone.

Equations
• = { carrier := โS, add_mem' := โฏ, zero_mem' := hS, smul_mem' := โฏ }
Instances For
@[simp]
theorem ConvexCone.mem_toPointedCone {๐ : Type u_1} {E : Type u_2} [OrderedSemiring ๐] [] [Module ๐ E] {S : ConvexCone ๐ E} (hS : S.Pointed) (x : E) :
@[simp]
theorem ConvexCone.coe_toPointedCone {๐ : Type u_1} {E : Type u_2} [OrderedSemiring ๐] [] [Module ๐ E] {S : ConvexCone ๐ E} (hS : S.Pointed) :
โ = S
instance PointedCone.canLift {๐ : Type u_1} {E : Type u_2} [OrderedSemiring ๐] [] [Module ๐ E] :
CanLift (ConvexCone ๐ E) (PointedCone ๐ E) PointedCone.toConvexCone ConvexCone.Pointed
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.

def PointedCone.map {๐ : Type u_1} {E : Type u_2} {F : Type u_3} [OrderedSemiring ๐] [] [Module ๐ E] [] [Module ๐ F] (f : E โโ[๐] F) (S : PointedCone ๐ E) :
PointedCone ๐ F

The image of a pointed cone under a ๐-linear map is a pointed cone.

Equations
Instances For
@[simp]
theorem PointedCone.toConvexCone_map {๐ : Type u_1} {E : Type u_2} {F : Type u_3} [OrderedSemiring ๐] [] [Module ๐ E] [] [Module ๐ F] (S : PointedCone ๐ E) (f : E โโ[๐] F) :
โ() = ConvexCone.map f โS
@[simp]
theorem PointedCone.coe_map {๐ : Type u_1} {E : Type u_2} {F : Type u_3} [OrderedSemiring ๐] [] [Module ๐ E] [] [Module ๐ F] (S : PointedCone ๐ E) (f : E โโ[๐] F) :
โ() = โf '' โS
@[simp]
theorem PointedCone.mem_map {๐ : Type u_1} {E : Type u_2} {F : Type u_3} [OrderedSemiring ๐] [] [Module ๐ E] [] [Module ๐ F] {f : E โโ[๐] F} {S : PointedCone ๐ E} {y : F} :
y โ โ โ x โ S, f x = y
theorem PointedCone.map_map {๐ : Type u_1} {E : Type u_2} {F : Type u_3} {G : Type u_4} [OrderedSemiring ๐] [] [Module ๐ E] [] [Module ๐ F] [] [Module ๐ G] (g : F โโ[๐] G) (f : E โโ[๐] F) (S : PointedCone ๐ E) :
= PointedCone.map (g โโ f) S
@[simp]
theorem PointedCone.map_id {๐ : Type u_1} {E : Type u_2} [OrderedSemiring ๐] [] [Module ๐ E] (S : PointedCone ๐ E) :
PointedCone.map LinearMap.id S = S
def PointedCone.comap {๐ : Type u_1} {E : Type u_2} {F : Type u_3} [OrderedSemiring ๐] [] [Module ๐ E] [] [Module ๐ F] (f : E โโ[๐] F) (S : PointedCone ๐ F) :
PointedCone ๐ E

The preimage of a convex cone under a ๐-linear map is a convex cone.

Equations
Instances For
@[simp]
theorem PointedCone.coe_comap {๐ : Type u_1} {E : Type u_2} {F : Type u_3} [OrderedSemiring ๐] [] [Module ๐ E] [] [Module ๐ F] (f : E โโ[๐] F) (S : PointedCone ๐ F) :
โ() = โf โปยน' โS
@[simp]
theorem PointedCone.comap_id {๐ : Type u_1} {E : Type u_2} [OrderedSemiring ๐] [] [Module ๐ E] (S : PointedCone ๐ E) :
PointedCone.comap LinearMap.id S = S
theorem PointedCone.comap_comap {๐ : Type u_1} {E : Type u_2} {F : Type u_3} {G : Type u_4} [OrderedSemiring ๐] [] [Module ๐ E] [] [Module ๐ F] [] [Module ๐ G] (g : F โโ[๐] G) (f : E โโ[๐] F) (S : PointedCone ๐ G) :
= PointedCone.comap (g โโ f) S
@[simp]
theorem PointedCone.mem_comap {๐ : Type u_1} {E : Type u_2} {F : Type u_3} [OrderedSemiring ๐] [] [Module ๐ E] [] [Module ๐ F] {f : E โโ[๐] F} {S : PointedCone ๐ F} {x : E} :
def PointedCone.positive (๐ : Type u_1) (E : Type u_2) [OrderedSemiring ๐] [Module ๐ E] [OrderedSMul ๐ E] :
PointedCone ๐ E

The positive cone is the pointed cone formed by the set of nonnegative elements in an ordered module.

Equations
Instances For
@[simp]
theorem PointedCone.mem_positive (๐ : Type u_1) (E : Type u_2) [OrderedSemiring ๐] [Module ๐ E] [OrderedSMul ๐ E] {x : E} :
@[simp]
theorem PointedCone.toConvexCone_positive (๐ : Type u_1) (E : Type u_2) [OrderedSemiring ๐] [Module ๐ E] [OrderedSMul ๐ E] :
โ(PointedCone.positive ๐ E) = ConvexCone.positive ๐ E
def PointedCone.dual {E : Type u_5} [] (S : ) :

The inner dual cone of a pointed cone is a pointed cone.

Equations
• S.dual =
Instances For
@[simp]
theorem PointedCone.toConvexCone_dual {E : Type u_5} [] (S : ) :
โS.dual = (โS).innerDualCone
@[simp]
theorem PointedCone.mem_dual {E : Type u_5} [] {S : } {y : E} :
y โ S.dual โ โ โฆx : Eโฆ, x โ S โ 0 โค โชx, yโซ_โ