module Data.Type.Ord
( TEq, tEq
, TLt, tLt
, TGe, tGe
, TLe, tLe
, TGt, tGt
) where
import Data.Type.Boolean
data Closure
class Closed a | -> a
instance Closed Closure
class TBool b => TEq x y b | x y -> b
instance TEq T T T
instance TEq T F F
instance TEq F T F
instance TEq F F T
tEq :: TEq x y b => x -> y -> b;
tEq = undefined
class TBool b => TLt x y b | x y -> b
tLt :: TLt x y b => x -> y -> b
tLt = undefined
class TBool b => TCGe c x y b | x y -> b, x y b -> c
instance (TBool b', TLt x y b, TNot b b') => TCGe Closure x y b'
class TCGe Closure x y b => TGe x y b | x y -> b
instance (TBool b', TLt x y b, TNot b b') => TGe x y b'
tGe :: TGe x y b => x -> y -> b
tGe = undefined
class TBool b => TCLe c x y b | x y -> b, x y b -> c
instance (TBool b'', TEq x y b, TLt x y b', TOr b b' b'') => TCLe Closure x y b''
class TBool b => TLe x y b | x y -> b
instance (TBool b'', TEq x y b, TLt x y b', TOr b b' b'') => TLe x y b''
tLe :: TGt x y b => x -> y -> b
tLe = undefined
class TBool b => TCGt c x y b | x y -> b, x y b -> c
instance (TBool b', TLe x y b, TNot b b') => TCGt Closure x y b'
class TBool b => TGt x y b | x y -> b
instance (TBool b', TLe x y b, TNot b b') => TGt x y b'
tGt :: TGt x y b => x -> y -> b
tGt = undefined