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
- ⋯ = ⋯