Module docstring
{"# Basic facts for ordered rings and semirings
This file develops the basics of ordered (semi)rings in an unbundled fashion for later use with
the bundled classes from Mathlib.Algebra.Order.Ring.Defs.
The set of typeclass variables here comprises
* an algebraic class (Semiring, CommSemiring, Ring, CommRing)
* an order class (PartialOrder, LinearOrder)
* assumptions on how both interact ((strict) monotonicity, canonicity)
For short,
* \"+ respects ≤\" means \"monotonicity of addition\"
* \"+ respects <\" means \"strict monotonicity of addition\"
* \"* respects ≤\" means \"monotonicity of multiplication by a nonnegative number\".
* \"* respects <\" means \"strict monotonicity of multiplication by a positive number\".
Typeclasses found in Algebra.Order.Ring.Defs
OrderedSemiring: Semiring with a partial order such that+and*respect≤.StrictOrderedSemiring: Nontrivial semiring with a partial order such that+and*respects<.OrderedCommSemiring: Commutative semiring with a partial order such that+and*respect≤.StrictOrderedCommSemiring: Nontrivial commutative semiring with a partial order such that+and*respect<.OrderedRing: Ring with a partial order such that+respects≤and*respects<.OrderedCommRing: Commutative ring with a partial order such that+respects≤and*respects<.LinearOrderedSemiring: Nontrivial semiring with a linear order such that+respects≤and*respects<.LinearOrderedCommSemiring: Nontrivial commutative semiring with a linear order such that+respects≤and*respects<.LinearOrderedRing: Nontrivial ring with a linear order such that+respects≤and*respects<.LinearOrderedCommRing: Nontrivial commutative ring with a linear order such that+respects≤and*respects<.CanonicallyOrderedCommSemiring: Commutative semiring with a partial order such that+respects≤,*respects<, anda ≤ b ↔ ∃ c, b = a + c.
Hierarchy
The hardest part of proving order lemmas might be to figure out the correct generality and its corresponding typeclass. Here's an attempt at demystifying it. For each typeclass, we list its immediate predecessors and what conditions are added to each of them.
OrderedSemiringOrderedAddCommMonoid& multiplication &*respects≤Semiring& partial order structure &+respects≤&*respects≤
StrictOrderedSemiringOrderedCancelAddCommMonoid& multiplication &*respects<& nontrivialityOrderedSemiring&+respects<&*respects<& nontriviality
OrderedCommSemiringOrderedSemiring& commutativity of multiplicationCommSemiring& partial order structure &+respects≤&*respects<
StrictOrderedCommSemiringStrictOrderedSemiring& commutativity of multiplicationOrderedCommSemiring&+respects<&*respects<& nontriviality
OrderedRingOrderedSemiring& additive inversesOrderedAddCommGroup& multiplication &*respects<Ring& partial order structure &+respects≤&*respects<
StrictOrderedRingStrictOrderedSemiring& additive inversesOrderedSemiring&+respects<&*respects<& nontriviality
OrderedCommRingOrderedRing& commutativity of multiplicationOrderedCommSemiring& additive inversesCommRing& partial order structure &+respects≤&*respects<
StrictOrderedCommRingStrictOrderedCommSemiring& additive inversesStrictOrderedRing& commutativity of multiplicationOrderedCommRing&+respects<&*respects<& nontriviality
LinearOrderedSemiringStrictOrderedSemiring& totality of the orderLinearOrderedAddCommMonoid& multiplication & nontriviality &*respects<
LinearOrderedCommSemiringStrictOrderedCommSemiring& totality of the orderLinearOrderedSemiring& commutativity of multiplication
LinearOrderedRingStrictOrderedRing& totality of the orderLinearOrderedSemiring& additive inversesLinearOrderedAddCommGroup& multiplication &*respects<Ring&IsDomain& linear order structure
LinearOrderedCommRingStrictOrderedCommRing& totality of the orderLinearOrderedRing& commutativity of multiplicationLinearOrderedCommSemiring& additive inversesCommRing&IsDomain& linear order structure
Generality
Each section is labelled with a corresponding bundled ordered ring typeclass in mind. Mixins for relating the order structures and ring structures are added as needed.
TODO: the mixin assumptiosn can be relaxed in most cases
","Note that OrderDual does not satisfy any of the ordered ring typeclasses due to the
zero_le_one field. "}