Ordered semimodules
In this file we define
ordered_semimodule R M
: an ordered additive commutative monoidM
is anordered_semimodule
over anordered_semiring
R
if the scalar product respects the order relation on the monoid and on the ring. There is a correspondence between this structure and convex cones, which is proven inanalysis/convex/cone.lean
.
Implementation notes
- We choose to define
ordered_semimodule
so that it extendssemimodule
only, as is done for semimodules itself. - To get ordered modules and ordered vector spaces, it suffices to the replace the
order_add_comm_monoid
and theordered_semiring
as desired.
References
- https://en.wikipedia.org/wiki/Ordered_vector_space
Tags
ordered semimodule, ordered module, ordered vector space
@[class]
structure
ordered_semimodule
(R : Type u_1)
(β : Type u_2)
[ordered_semiring R]
[ordered_add_comm_monoid β] :
Type (max u_1 u_2)
- to_semimodule : semimodule R β
- smul_lt_smul_of_pos : ∀ {a b : β} {c_1 : R}, a < b → 0 < c_1 → c_1 • a < c_1 • b
- lt_of_smul_lt_smul_of_nonneg : ∀ {a b : β} {c_1 : R}, c_1 • a < c_1 • b → 0 ≤ c_1 → a < b
An ordered semimodule is an ordered additive commutative monoid with a partial order in which the scalar multiplication is compatible with the order.
theorem
smul_lt_smul_of_pos
{R : Type u_1}
{β : Type u_2}
[ordered_semiring R]
[ordered_add_comm_monoid β]
[ordered_semimodule R β]
{a b : β}
{c : R}
(a_1 : a < b)
(a_2 : 0 < c) :
theorem
smul_le_smul_of_nonneg
{R : Type u_1}
{β : Type u_2}
[ordered_semiring R]
[ordered_add_comm_monoid β]
[ordered_semimodule R β]
{a b : β}
{c : R}
(h₁ : a ≤ b)
(h₂ : 0 ≤ c) :
@[instance]
@[instance]
def
order_dual.has_scalar
{R : Type u_1}
{β : Type u_2}
[semiring R]
[ordered_add_comm_monoid β]
[semimodule R β] :
has_scalar R (order_dual β)
Equations
@[instance]
def
order_dual.mul_action
{R : Type u_1}
{β : Type u_2}
[semiring R]
[ordered_add_comm_monoid β]
[semimodule R β] :
mul_action R (order_dual β)
Equations
@[instance]
def
order_dual.distrib_mul_action
{R : Type u_1}
{β : Type u_2}
[semiring R]
[ordered_add_comm_monoid β]
[semimodule R β] :
distrib_mul_action R (order_dual β)
Equations
- order_dual.distrib_mul_action = {to_mul_action := order_dual.mul_action _inst_3, smul_add := _, smul_zero := _}
@[instance]
def
order_dual.semimodule
{R : Type u_1}
{β : Type u_2}
[semiring R]
[ordered_add_comm_monoid β]
[semimodule R β] :
semimodule R (order_dual β)
Equations
- order_dual.semimodule = {to_distrib_mul_action := order_dual.distrib_mul_action _inst_3, add_smul := _, zero_smul := _}
@[instance]
def
order_dual.ordered_semimodule
{R : Type u_1}
{β : Type u_2}
[ordered_semiring R]
[ordered_add_comm_monoid β]
[ordered_semimodule R β] :
ordered_semimodule R (order_dual β)