Proper cones #
We define a proper cone as a closed, pointed cone. Proper cones are used in defining conic programs which generalize linear programs. A linear program is a conic program for the positive cone. We then prove Farkas' lemma for conic programs following the proof in the reference below. Farkas' lemma is equivalent to strong duality. So, once we have the definitions of conic and linear programs, the results from this file can be used to prove duality theorems.
TODO #
The next steps are:
- Add convex_cone_class that extends set_like and replace the below instance
- Define primal and dual cone programs and prove weak duality.
- Prove regular and strong duality for cone programs using Farkas' lemma (see reference).
- Define linear programs and prove LP duality as a special case of cone duality.
- Find a better reference (textbook instead of lecture notes).
References #
- [B. Gartner and J. Matousek, Cone Programming][gartnerMatousek]
A proper cone is a pointed cone C
that is closed. Proper cones have the nice property that
they are equal to their double dual, see ProperCone.dual_dual
.
This makes them useful for defining cone programs and proving duality theorems.
Equations
- ProperCone R E = ClosedSubmodule { r : R // 0 ≤ r } E
Instances For
Any proper cone can be seen as a pointed cone.
This is an alias of ClosedSubmodule.toSubmodule
for convenience and discoverability.
Equations
- ↑C = ↑C
Instances For
Equations
Equations
- ProperCone.instSetLike = { coe := fun (C : ProperCone R E) => (↑C).carrier, coe_injective' := ⋯ }
Alias of ProperCone.mem_toPointedCone
.
Alias of ProperCone.pointed_toConvexCone
.
Alias of ProperCone.mem_bot
.
Alias of ProperCone.coe_bot
.
Alias of ProperCone.pointed_toConvexCone
.
The closure of image of a proper cone under a R
-linear map is a proper cone. We
use continuous maps here so that the comap of f is also a map between proper cones.
Equations
- ProperCone.comap f C = ClosedSubmodule.comap (ContinuousLinearMap.restrictScalars { r : R // 0 ≤ r } f) C
Instances For
The closure of image of a proper cone under a linear map is a proper cone.
We use continuous maps here to match ProperCone.comap
.
Equations
- ProperCone.map f C = ClosedSubmodule.map (ContinuousLinearMap.restrictScalars { r : R // 0 ≤ r } f) C
Instances For
The positive cone is the proper cone formed by the set of nonnegative elements in an ordered module.
Equations
- ProperCone.positive R E = { toSubmodule := PointedCone.positive R E, isClosed' := ⋯ }