Commit 2022-09-14 18:51 660bde43
View on Github →refactor(algebra/order/monoid_lemma_zero_lt): Use {x : α // 0 ≤ α} (#16447)
pos_mul_mono/mul_pos_mono and pos_mul_reflect_lt/mul_pos_reflect_lt were stated as covariance/contravariance of {x : α // 0 < α} over α even though the extension to {x : α // 0 ≤ α} also holds.
This meant that many lemmas were relying on antisymmetry only to treat the cases a = 0 and 0 < a separately, which made them need partial_order and depend on classical.choice. This prevented #16172 from actually removing the decidable lemma in algebra.order.ring after #16189 got merged.
Further, #16189 did not actually get rid of the temporary zero_lt namespace, so name conflicts that arise were not fixed.
Finally, le_mul_of_one_le_left and its seven friends were reproved inline about five time each.
Hence in this PR we
- restate pos_mul_mono,mul_pos_mono,pos_mul_reflect_lt,mul_pos_reflect_ltusing{x : α // 0 ≤ α}
- provide the (classical) equivalence with the previous definitions in a partial_order.
- generalise lemmas from partial_ordertopreorder.
- delete all lemmas in the preordernamespace as they are now fully generalized. This in essence reverts (parts of) #12961, #13296 and #13299.
- replace most of the various has_le/has_ltassumptions by a blankpreorderone, hence simplifying the file sectioning
- remove the zero_ltnamespace.
- rename lemmas to fix name conflicts.
- delete a few lemmas that were left in algebra.order.ring.
- golf proofs involving le_mul_of_one_le_leftand its seven friends. This is why the PR has a -450 lines diff.