\import Algebra.Monoid \import Order.PartialOrder \import Paths \class OrderedMonoid \extends Poset, Monoid { | <=_*-left (z : E) {x y : E} : x <= y -> x * z <= y * z | <=_*-right (z : E) {x y : E} : x <= y -> z * x <= z * y \lemma <=_* {a b c d : E} (p : a <= c) (q : b <= d) : a * b <= c * d => <=_*-left b p <=∘ <=_*-right c q } \class OrderedCMonoid \extends OrderedMonoid, CMonoid | <=_*-right z x<y => transport2 (<=) *-comm *-comm (<=_*-left z x<y)