Commit 2021-09-06 12:25 773b45f7
View on Github →feat(algebra/module/ordered): redefine ordered_module as ordered_smul (#8930)
One would like to talk about ordered_monoid R (with_top R), but the module constraint is too strict to allow this.
The definition of ordered_monoid works if it is loosened to has_scalar R M. Most of the proofs that are part of its API need at most smul_with_zero. So it has been loosened to smul_with_zero, since a lawless ordered_monoid wouldn't do much.
In the ordered_field portion, module has been loosened to mul_action_with_zero.
order_dual instances of smul instances have also been generalized to better transmit. There are more generalizations possible, but seem out of scope for a single PR.
Unfortunately, these generalizations exposed a gnarly misalignment between prod.has_lt and prod.has_le, which have incompatible definitions, when inferred through separate paths. In particular, the lt definition of generated by prod.preorder is different than the core prod.has_lt. Due to this, the prod.ordered_monoid instance has not been generalized.