This module provides utilities for the creation of order-related typeclass instances.
If an LE α instance is reflexive and transitive, then it represents a preorder.
If an LE α instance is transitive and total, then it represents a linear preorder.
If an LE α is reflexive, antisymmetric and transitive, then it represents a partial order.
If an LE α instance is antisymmetric, transitive and total, then it represents a linear order.
Returns a LawfulOrderLT α instance given certain properties.
If an OrderData α instance is compatible with an LE α instance, then this lemma derives
a LawfulOrderLT α instance from a property relating the LE α and LT α instances.
Returns a LawfulOrderMin α instance given certain properties.
This lemma derives a LawfulOrderMin α instance from two properties involving LE α and Min α
instances.
The produced instance entails LawfulOrderInf α and MinEqOr α.
Returns a LawfulOrderMax α instance given certain properties.
This lemma derives a LawfulOrderMax α instance from two properties involving LE α and Max α
instances.
The produced instance entails LawfulOrderSup α and MaxEqOr α.
Equations
- ⋯ = ⋯
Instances For
If an LT α instance is asymmetric and its negation is transitive, then LE.ofLT α represents a
linear preorder.
If an LT α instance is asymmetric and its negation is transitive and antisymmetric, then
LE.ofLT α represents a linear order.
Derives a LawfulOrderMin α instance for OrderData.ofLT from two properties involving
LT α and Min α instances.
The produced instance entails LawfulOrderInf α and MinEqOr α.
Derives a LawfulOrderMax α instance for OrderData.ofLT from two properties involving LT α and
Max α instances.
The produced instance entails LawfulOrderSup α and MaxEqOr α.
Equations
- ⋯ = ⋯