type-natural-0.8.2.0: Type-level natural and proofs of their properties.

Safe HaskellNone
LanguageHaskell2010

Data.Type.Natural.Class.Order

Synopsis

Documentation

class (SOrd nat, IsPeano nat) => PeanoOrder nat where Source #

Methods

leqToCmp :: Sing (a :: nat) -> Sing b -> IsTrue (a <= b) -> Either (a :~: b) (Compare a b :~: LT) Source #

eqlCmpEQ :: Sing (a :: nat) -> Sing b -> (a :~: b) -> Compare a b :~: EQ Source #

eqToRefl :: Sing (a :: nat) -> Sing b -> (Compare a b :~: EQ) -> a :~: b Source #

flipCompare :: Sing (a :: nat) -> Sing b -> FlipOrdering (Compare a b) :~: Compare b a Source #

ltToNeq :: Sing (a :: nat) -> Sing b -> (Compare a b :~: LT) -> (a :~: b) -> Void Source #

leqNeqToLT :: Sing (a :: nat) -> Sing b -> IsTrue (a <= b) -> ((a :~: b) -> Void) -> Compare a b :~: LT Source #

succLeqToLT :: Sing (a :: nat) -> Sing b -> IsTrue (S a <= b) -> Compare a b :~: LT Source #

ltToLeq :: Sing (a :: nat) -> Sing b -> (Compare a b :~: LT) -> IsTrue (a <= b) Source #

gtToLeq :: Sing (a :: nat) -> Sing b -> (Compare a b :~: GT) -> IsTrue (b <= a) Source #

ltToSuccLeq :: Sing (a :: nat) -> Sing b -> (Compare a b :~: LT) -> IsTrue (Succ a <= b) Source #

cmpZero :: Sing a -> Compare (Zero nat) (Succ a) :~: LT Source #

leqToGT :: Sing (a :: nat) -> Sing b -> IsTrue (Succ b <= a) -> Compare a b :~: GT Source #

cmpZero' :: Sing a -> Either (Compare (Zero nat) a :~: EQ) (Compare (Zero nat) a :~: LT) Source #

zeroNoLT :: Sing a -> (Compare a (Zero nat) :~: LT) -> Void Source #

ltRightPredSucc :: Sing (a :: nat) -> Sing b -> (Compare a b :~: LT) -> b :~: Succ (Pred b) Source #

cmpSucc :: Sing (n :: nat) -> Sing m -> Compare n m :~: Compare (Succ n) (Succ m) Source #

ltSucc :: Sing (a :: nat) -> Compare a (Succ a) :~: LT Source #

cmpSuccStepR :: Sing (n :: nat) -> Sing m -> (Compare n m :~: LT) -> Compare n (Succ m) :~: LT Source #

ltSuccLToLT :: Sing (n :: nat) -> Sing m -> (Compare (Succ n) m :~: LT) -> Compare n m :~: LT Source #

leqToLT :: Sing (a :: nat) -> Sing b -> IsTrue (Succ a <= b) -> Compare a b :~: LT Source #

leqZero :: Sing n -> IsTrue (Zero nat <= n) Source #

leqSucc :: Sing (n :: nat) -> Sing m -> IsTrue (n <= m) -> IsTrue (Succ n <= Succ m) Source #

fromLeqView :: LeqView (n :: nat) m -> IsTrue (n <= m) Source #

leqViewRefl :: Sing (n :: nat) -> LeqView n n Source #

viewLeq :: forall n m. Sing (n :: nat) -> Sing m -> IsTrue (n <= m) -> LeqView n m Source #

leqWitness :: Sing (n :: nat) -> Sing m -> IsTrue (n <= m) -> DiffNat n m Source #

leqStep :: Sing (n :: nat) -> Sing m -> Sing l -> ((n + l) :~: m) -> IsTrue (n <= m) Source #

leqNeqToSuccLeq :: Sing (n :: nat) -> Sing m -> IsTrue (n <= m) -> ((n :~: m) -> Void) -> IsTrue (Succ n <= m) Source #

leqRefl :: Sing (n :: nat) -> IsTrue (n <= n) Source #

leqSuccStepR :: Sing (n :: nat) -> Sing m -> IsTrue (n <= m) -> IsTrue (n <= Succ m) Source #

leqSuccStepL :: Sing (n :: nat) -> Sing m -> IsTrue (Succ n <= m) -> IsTrue (n <= m) Source #

leqReflexive :: Sing (n :: nat) -> Sing m -> (n :~: m) -> IsTrue (n <= m) Source #

leqTrans :: Sing (n :: nat) -> Sing m -> Sing l -> IsTrue (n <= m) -> IsTrue (m <= l) -> IsTrue (n <= l) Source #

leqAntisymm :: Sing (n :: nat) -> Sing m -> IsTrue (n <= m) -> IsTrue (m <= n) -> n :~: m Source #

plusMonotone :: Sing (n :: nat) -> Sing m -> Sing l -> Sing k -> IsTrue (n <= m) -> IsTrue (l <= k) -> IsTrue ((n + l) <= (m + k)) Source #

leqZeroElim :: Sing n -> IsTrue (n <= Zero nat) -> n :~: Zero nat Source #

plusMonotoneL :: Sing (n :: nat) -> Sing m -> Sing (l :: nat) -> IsTrue (n <= m) -> IsTrue ((n + l) <= (m + l)) Source #

plusMonotoneR :: Sing n -> Sing m -> Sing (l :: nat) -> IsTrue (m <= l) -> IsTrue ((n + m) <= (n + l)) Source #

plusLeqL :: Sing (n :: nat) -> Sing m -> IsTrue (n <= (n + m)) Source #

plusLeqR :: Sing (n :: nat) -> Sing m -> IsTrue (m <= (n + m)) Source #

plusCancelLeqR :: Sing (n :: nat) -> Sing m -> Sing l -> IsTrue ((n + l) <= (m + l)) -> IsTrue (n <= m) Source #

plusCancelLeqL :: Sing (n :: nat) -> Sing m -> Sing l -> IsTrue ((n + m) <= (n + l)) -> IsTrue (m <= l) Source #

succLeqZeroAbsurd :: Sing n -> IsTrue (S n <= Zero nat) -> Void Source #

succLeqZeroAbsurd' :: Sing n -> (S n <= Zero nat) :~: False Source #

succLeqAbsurd :: Sing (n :: nat) -> IsTrue (S n <= n) -> Void Source #

succLeqAbsurd' :: Sing (n :: nat) -> (S n <= n) :~: False Source #

notLeqToLeq :: (n <= m) ~ False => Sing (n :: nat) -> Sing m -> IsTrue (m <= n) Source #

leqSucc' :: Sing (n :: nat) -> Sing m -> (n <= m) :~: (Succ n <= Succ m) Source #

leqToMin :: Sing (n :: nat) -> Sing m -> IsTrue (n <= m) -> Min n m :~: n Source #

geqToMin :: Sing (n :: nat) -> Sing m -> IsTrue (m <= n) -> Min n m :~: m Source #

minComm :: Sing (n :: nat) -> Sing m -> Min n m :~: Min m n Source #

minLeqL :: Sing (n :: nat) -> Sing m -> IsTrue (Min n m <= n) Source #

minLeqR :: Sing (n :: nat) -> Sing m -> IsTrue (Min n m <= m) Source #

minLargest :: Sing (l :: nat) -> Sing n -> Sing m -> IsTrue (l <= n) -> IsTrue (l <= m) -> IsTrue (l <= Min n m) Source #

leqToMax :: Sing (n :: nat) -> Sing m -> IsTrue (n <= m) -> Max n m :~: m Source #

geqToMax :: Sing (n :: nat) -> Sing m -> IsTrue (m <= n) -> Max n m :~: n Source #

maxComm :: Sing (n :: nat) -> Sing m -> Max n m :~: Max m n Source #

maxLeqR :: Sing (n :: nat) -> Sing m -> IsTrue (m <= Max n m) Source #

maxLeqL :: Sing (n :: nat) -> Sing m -> IsTrue (n <= Max n m) Source #

maxLeast :: Sing (l :: nat) -> Sing n -> Sing m -> IsTrue (n <= l) -> IsTrue (m <= l) -> IsTrue (Max n m <= l) Source #

leqReversed :: Sing (n :: nat) -> Sing m -> (n <= m) :~: (m >= n) Source #

lneqSuccLeq :: Sing (n :: nat) -> Sing m -> (n < m) :~: (Succ n <= m) Source #

lneqReversed :: Sing (n :: nat) -> Sing m -> (n < m) :~: (m > n) Source #

lneqToLT :: Sing (n :: nat) -> Sing (m :: nat) -> IsTrue (n < m) -> Compare n m :~: LT Source #

ltToLneq :: Sing (n :: nat) -> Sing (m :: nat) -> (Compare n m :~: LT) -> IsTrue (n < m) Source #

lneqZero :: Sing (a :: nat) -> IsTrue (Zero nat < Succ a) Source #

lneqSucc :: Sing (n :: nat) -> IsTrue (n < Succ n) Source #

succLneqSucc :: Sing (n :: nat) -> Sing (m :: nat) -> (n < m) :~: (Succ n < Succ m) Source #

lneqRightPredSucc :: Sing (n :: nat) -> Sing (m :: nat) -> IsTrue (n < m) -> m :~: Succ (Pred m) Source #

lneqSuccStepL :: Sing (n :: nat) -> Sing m -> IsTrue (Succ n < m) -> IsTrue (n < m) Source #

lneqSuccStepR :: Sing (n :: nat) -> Sing m -> IsTrue (n < m) -> IsTrue (n < Succ m) Source #

plusStrictMonotone :: Sing (n :: nat) -> Sing m -> Sing l -> Sing k -> IsTrue (n < m) -> IsTrue (l < k) -> IsTrue ((n + l) < (m + k)) Source #

maxZeroL :: Sing n -> Max (Zero nat) n :~: n Source #

maxZeroR :: Sing n -> Max n (Zero nat) :~: n Source #

minZeroL :: Sing n -> Min (Zero nat) n :~: Zero nat Source #

minZeroR :: Sing n -> Min n (Zero nat) :~: Zero nat Source #

minusSucc :: Sing (n :: nat) -> Sing m -> IsTrue (m <= n) -> (Succ n - m) :~: Succ (n - m) Source #

lneqZeroAbsurd :: Sing n -> IsTrue (n < Zero nat) -> Void Source #

minusPlus :: forall (n :: nat) m. PeanoOrder nat => Sing (n :: nat) -> Sing m -> IsTrue (m <= n) -> ((n - m) + m) :~: n Source #

Instances
PeanoOrder Nat Source # 
Instance details

Defined in Data.Type.Natural.Builtin

Methods

leqToCmp :: Sing a -> Sing b -> IsTrue (a <= b) -> Either (a :~: b) (Compare a b :~: LT) Source #

eqlCmpEQ :: Sing a -> Sing b -> (a :~: b) -> Compare a b :~: EQ Source #

eqToRefl :: Sing a -> Sing b -> (Compare a b :~: EQ) -> a :~: b Source #

flipCompare :: Sing a -> Sing b -> FlipOrdering (Compare a b) :~: Compare b a Source #

ltToNeq :: Sing a -> Sing b -> (Compare a b :~: LT) -> (a :~: b) -> Void Source #

leqNeqToLT :: Sing a -> Sing b -> IsTrue (a <= b) -> ((a :~: b) -> Void) -> Compare a b :~: LT Source #

succLeqToLT :: Sing a -> Sing b -> IsTrue (S a <= b) -> Compare a b :~: LT Source #

ltToLeq :: Sing a -> Sing b -> (Compare a b :~: LT) -> IsTrue (a <= b) Source #

gtToLeq :: Sing a -> Sing b -> (Compare a b :~: GT) -> IsTrue (b <= a) Source #

ltToSuccLeq :: Sing a -> Sing b -> (Compare a b :~: LT) -> IsTrue (Succ a <= b) Source #

cmpZero :: Sing a -> Compare (Zero Nat) (Succ a) :~: LT Source #

leqToGT :: Sing a -> Sing b -> IsTrue (Succ b <= a) -> Compare a b :~: GT Source #

cmpZero' :: Sing a -> Either (Compare (Zero Nat) a :~: EQ) (Compare (Zero Nat) a :~: LT) Source #

zeroNoLT :: Sing a -> (Compare a (Zero Nat) :~: LT) -> Void Source #

ltRightPredSucc :: Sing a -> Sing b -> (Compare a b :~: LT) -> b :~: Succ (Pred b) Source #

cmpSucc :: Sing n -> Sing m -> Compare n m :~: Compare (Succ n) (Succ m) Source #

ltSucc :: Sing a -> Compare a (Succ a) :~: LT Source #

cmpSuccStepR :: Sing n -> Sing m -> (Compare n m :~: LT) -> Compare n (Succ m) :~: LT Source #

ltSuccLToLT :: Sing n -> Sing m -> (Compare (Succ n) m :~: LT) -> Compare n m :~: LT Source #

leqToLT :: Sing a -> Sing b -> IsTrue (Succ a <= b) -> Compare a b :~: LT Source #

leqZero :: Sing n -> IsTrue (Zero Nat <= n) Source #

leqSucc :: Sing n -> Sing m -> IsTrue (n <= m) -> IsTrue (Succ n <= Succ m) Source #

fromLeqView :: LeqView n m -> IsTrue (n <= m) Source #

leqViewRefl :: Sing n -> LeqView n n Source #

viewLeq :: Sing n -> Sing m -> IsTrue (n <= m) -> LeqView n m Source #

leqWitness :: Sing n -> Sing m -> IsTrue (n <= m) -> DiffNat n m Source #

leqStep :: Sing n -> Sing m -> Sing l -> ((n + l) :~: m) -> IsTrue (n <= m) Source #

leqNeqToSuccLeq :: Sing n -> Sing m -> IsTrue (n <= m) -> ((n :~: m) -> Void) -> IsTrue (Succ n <= m) Source #

leqRefl :: Sing n -> IsTrue (n <= n) Source #

leqSuccStepR :: Sing n -> Sing m -> IsTrue (n <= m) -> IsTrue (n <= Succ m) Source #

leqSuccStepL :: Sing n -> Sing m -> IsTrue (Succ n <= m) -> IsTrue (n <= m) Source #

leqReflexive :: Sing n -> Sing m -> (n :~: m) -> IsTrue (n <= m) Source #

leqTrans :: Sing n -> Sing m -> Sing l -> IsTrue (n <= m) -> IsTrue (m <= l) -> IsTrue (n <= l) Source #

leqAntisymm :: Sing n -> Sing m -> IsTrue (n <= m) -> IsTrue (m <= n) -> n :~: m Source #

plusMonotone :: Sing n -> Sing m -> Sing l -> Sing k -> IsTrue (n <= m) -> IsTrue (l <= k) -> IsTrue ((n + l) <= (m + k)) Source #

leqZeroElim :: Sing n -> IsTrue (n <= Zero Nat) -> n :~: Zero Nat Source #

plusMonotoneL :: Sing n -> Sing m -> Sing l -> IsTrue (n <= m) -> IsTrue ((n + l) <= (m + l)) Source #

plusMonotoneR :: Sing n -> Sing m -> Sing l -> IsTrue (m <= l) -> IsTrue ((n + m) <= (n + l)) Source #

plusLeqL :: Sing n -> Sing m -> IsTrue (n <= (n + m)) Source #

plusLeqR :: Sing n -> Sing m -> IsTrue (m <= (n + m)) Source #

plusCancelLeqR :: Sing n -> Sing m -> Sing l -> IsTrue ((n + l) <= (m + l)) -> IsTrue (n <= m) Source #

plusCancelLeqL :: Sing n -> Sing m -> Sing l -> IsTrue ((n + m) <= (n + l)) -> IsTrue (m <= l) Source #

succLeqZeroAbsurd :: Sing n -> IsTrue (S n <= Zero Nat) -> Void Source #

succLeqZeroAbsurd' :: Sing n -> (S n <= Zero Nat) :~: False Source #

succLeqAbsurd :: Sing n -> IsTrue (S n <= n) -> Void Source #

succLeqAbsurd' :: Sing n -> (S n <= n) :~: False Source #

notLeqToLeq :: (n <= m) ~ False => Sing n -> Sing m -> IsTrue (m <= n) Source #

leqSucc' :: Sing n -> Sing m -> (n <= m) :~: (Succ n <= Succ m) Source #

leqToMin :: Sing n -> Sing m -> IsTrue (n <= m) -> Min n m :~: n Source #

geqToMin :: Sing n -> Sing m -> IsTrue (m <= n) -> Min n m :~: m Source #

minComm :: Sing n -> Sing m -> Min n m :~: Min m n Source #

minLeqL :: Sing n -> Sing m -> IsTrue (Min n m <= n) Source #

minLeqR :: Sing n -> Sing m -> IsTrue (Min n m <= m) Source #

minLargest :: Sing l -> Sing n -> Sing m -> IsTrue (l <= n) -> IsTrue (l <= m) -> IsTrue (l <= Min n m) Source #

leqToMax :: Sing n -> Sing m -> IsTrue (n <= m) -> Max n m :~: m Source #

geqToMax :: Sing n -> Sing m -> IsTrue (m <= n) -> Max n m :~: n Source #

maxComm :: Sing n -> Sing m -> Max n m :~: Max m n Source #

maxLeqR :: Sing n -> Sing m -> IsTrue (m <= Max n m) Source #

maxLeqL :: Sing n -> Sing m -> IsTrue (n <= Max n m) Source #

maxLeast :: Sing l -> Sing n -> Sing m -> IsTrue (n <= l) -> IsTrue (m <= l) -> IsTrue (Max n m <= l) Source #

leqReversed :: Sing n -> Sing m -> (n <= m) :~: (m >= n) Source #

lneqSuccLeq :: Sing n -> Sing m -> (n < m) :~: (Succ n <= m) Source #

lneqReversed :: Sing n -> Sing m -> (n < m) :~: (m > n) Source #

lneqToLT :: Sing n -> Sing m -> IsTrue (n < m) -> Compare n m :~: LT Source #

ltToLneq :: Sing n -> Sing m -> (Compare n m :~: LT) -> IsTrue (n < m) Source #

lneqZero :: Sing a -> IsTrue (Zero Nat < Succ a) Source #

lneqSucc :: Sing n -> IsTrue (n < Succ n) Source #

succLneqSucc :: Sing n -> Sing m -> (n < m) :~: (Succ n < Succ m) Source #

lneqRightPredSucc :: Sing n -> Sing m -> IsTrue (n < m) -> m :~: Succ (Pred m) Source #

lneqSuccStepL :: Sing n -> Sing m -> IsTrue (Succ n < m) -> IsTrue (n < m) Source #

lneqSuccStepR :: Sing n -> Sing m -> IsTrue (n < m) -> IsTrue (n < Succ m) Source #

plusStrictMonotone :: Sing n -> Sing m -> Sing l -> Sing k -> IsTrue (n < m) -> IsTrue (l < k) -> IsTrue ((n + l) < (m + k)) Source #

maxZeroL :: Sing n -> Max (Zero Nat) n :~: n Source #

maxZeroR :: Sing n -> Max n (Zero Nat) :~: n Source #

minZeroL :: Sing n -> Min (Zero Nat) n :~: Zero Nat Source #

minZeroR :: Sing n -> Min n (Zero Nat) :~: Zero Nat Source #

minusSucc :: Sing n -> Sing m -> IsTrue (m <= n) -> (Succ n - m) :~: Succ (n - m) Source #

lneqZeroAbsurd :: Sing n -> IsTrue (n < Zero Nat) -> Void Source #

minusPlus :: PeanoOrder Nat => Sing n -> Sing m -> IsTrue (m <= n) -> ((n - m) + m) :~: n Source #

PeanoOrder Nat Source # 
Instance details

Defined in Data.Type.Natural

Methods

leqToCmp :: Sing a -> Sing b -> IsTrue (a <= b) -> Either (a :~: b) (Compare a b :~: LT) Source #

eqlCmpEQ :: Sing a -> Sing b -> (a :~: b) -> Compare a b :~: EQ Source #

eqToRefl :: Sing a -> Sing b -> (Compare a b :~: EQ) -> a :~: b Source #

flipCompare :: Sing a -> Sing b -> FlipOrdering (Compare a b) :~: Compare b a Source #

ltToNeq :: Sing a -> Sing b -> (Compare a b :~: LT) -> (a :~: b) -> Void Source #

leqNeqToLT :: Sing a -> Sing b -> IsTrue (a <= b) -> ((a :~: b) -> Void) -> Compare a b :~: LT Source #

succLeqToLT :: Sing a -> Sing b -> IsTrue (S a <= b) -> Compare a b :~: LT Source #

ltToLeq :: Sing a -> Sing b -> (Compare a b :~: LT) -> IsTrue (a <= b) Source #

gtToLeq :: Sing a -> Sing b -> (Compare a b :~: GT) -> IsTrue (b <= a) Source #

ltToSuccLeq :: Sing a -> Sing b -> (Compare a b :~: LT) -> IsTrue (Succ a <= b) Source #

cmpZero :: Sing a -> Compare (Zero Nat) (Succ a) :~: LT Source #

leqToGT :: Sing a -> Sing b -> IsTrue (Succ b <= a) -> Compare a b :~: GT Source #

cmpZero' :: Sing a -> Either (Compare (Zero Nat) a :~: EQ) (Compare (Zero Nat) a :~: LT) Source #

zeroNoLT :: Sing a -> (Compare a (Zero Nat) :~: LT) -> Void Source #

ltRightPredSucc :: Sing a -> Sing b -> (Compare a b :~: LT) -> b :~: Succ (Pred b) Source #

cmpSucc :: Sing n -> Sing m -> Compare n m :~: Compare (Succ n) (Succ m) Source #

ltSucc :: Sing a -> Compare a (Succ a) :~: LT Source #

cmpSuccStepR :: Sing n -> Sing m -> (Compare n m :~: LT) -> Compare n (Succ m) :~: LT Source #

ltSuccLToLT :: Sing n -> Sing m -> (Compare (Succ n) m :~: LT) -> Compare n m :~: LT Source #

leqToLT :: Sing a -> Sing b -> IsTrue (Succ a <= b) -> Compare a b :~: LT Source #

leqZero :: Sing n -> IsTrue (Zero Nat <= n) Source #

leqSucc :: Sing n -> Sing m -> IsTrue (n <= m) -> IsTrue (Succ n <= Succ m) Source #

fromLeqView :: LeqView n m -> IsTrue (n <= m) Source #

leqViewRefl :: Sing n -> LeqView n n Source #

viewLeq :: Sing n -> Sing m -> IsTrue (n <= m) -> LeqView n m Source #

leqWitness :: Sing n -> Sing m -> IsTrue (n <= m) -> DiffNat n m Source #

leqStep :: Sing n -> Sing m -> Sing l -> ((n + l) :~: m) -> IsTrue (n <= m) Source #

leqNeqToSuccLeq :: Sing n -> Sing m -> IsTrue (n <= m) -> ((n :~: m) -> Void) -> IsTrue (Succ n <= m) Source #

leqRefl :: Sing n -> IsTrue (n <= n) Source #

leqSuccStepR :: Sing n -> Sing m -> IsTrue (n <= m) -> IsTrue (n <= Succ m) Source #

leqSuccStepL :: Sing n -> Sing m -> IsTrue (Succ n <= m) -> IsTrue (n <= m) Source #

leqReflexive :: Sing n -> Sing m -> (n :~: m) -> IsTrue (n <= m) Source #

leqTrans :: Sing n -> Sing m -> Sing l -> IsTrue (n <= m) -> IsTrue (m <= l) -> IsTrue (n <= l) Source #

leqAntisymm :: Sing n -> Sing m -> IsTrue (n <= m) -> IsTrue (m <= n) -> n :~: m Source #

plusMonotone :: Sing n -> Sing m -> Sing l -> Sing k -> IsTrue (n <= m) -> IsTrue (l <= k) -> IsTrue ((n + l) <= (m + k)) Source #

leqZeroElim :: Sing n -> IsTrue (n <= Zero Nat) -> n :~: Zero Nat Source #

plusMonotoneL :: Sing n -> Sing m -> Sing l -> IsTrue (n <= m) -> IsTrue ((n + l) <= (m + l)) Source #

plusMonotoneR :: Sing n -> Sing m -> Sing l -> IsTrue (m <= l) -> IsTrue ((n + m) <= (n + l)) Source #

plusLeqL :: Sing n -> Sing m -> IsTrue (n <= (n + m)) Source #

plusLeqR :: Sing n -> Sing m -> IsTrue (m <= (n + m)) Source #

plusCancelLeqR :: Sing n -> Sing m -> Sing l -> IsTrue ((n + l) <= (m + l)) -> IsTrue (n <= m) Source #

plusCancelLeqL :: Sing n -> Sing m -> Sing l -> IsTrue ((n + m) <= (n + l)) -> IsTrue (m <= l) Source #

succLeqZeroAbsurd :: Sing n -> IsTrue (S n <= Zero Nat) -> Void Source #

succLeqZeroAbsurd' :: Sing n -> (S n <= Zero Nat) :~: False Source #

succLeqAbsurd :: Sing n -> IsTrue (S n <= n) -> Void Source #

succLeqAbsurd' :: Sing n -> (S n <= n) :~: False Source #

notLeqToLeq :: (n <= m) ~ False => Sing n -> Sing m -> IsTrue (m <= n) Source #

leqSucc' :: Sing n -> Sing m -> (n <= m) :~: (Succ n <= Succ m) Source #

leqToMin :: Sing n -> Sing m -> IsTrue (n <= m) -> Min n m :~: n Source #

geqToMin :: Sing n -> Sing m -> IsTrue (m <= n) -> Min n m :~: m Source #

minComm :: Sing n -> Sing m -> Min n m :~: Min m n Source #

minLeqL :: Sing n -> Sing m -> IsTrue (Min n m <= n) Source #

minLeqR :: Sing n -> Sing m -> IsTrue (Min n m <= m) Source #

minLargest :: Sing l -> Sing n -> Sing m -> IsTrue (l <= n) -> IsTrue (l <= m) -> IsTrue (l <= Min n m) Source #

leqToMax :: Sing n -> Sing m -> IsTrue (n <= m) -> Max n m :~: m Source #

geqToMax :: Sing n -> Sing m -> IsTrue (m <= n) -> Max n m :~: n Source #

maxComm :: Sing n -> Sing m -> Max n m :~: Max m n Source #

maxLeqR :: Sing n -> Sing m -> IsTrue (m <= Max n m) Source #

maxLeqL :: Sing n -> Sing m -> IsTrue (n <= Max n m) Source #

maxLeast :: Sing l -> Sing n -> Sing m -> IsTrue (n <= l) -> IsTrue (m <= l) -> IsTrue (Max n m <= l) Source #

leqReversed :: Sing n -> Sing m -> (n <= m) :~: (m >= n) Source #

lneqSuccLeq :: Sing n -> Sing m -> (n < m) :~: (Succ n <= m) Source #

lneqReversed :: Sing n -> Sing m -> (n < m) :~: (m > n) Source #

lneqToLT :: Sing n -> Sing m -> IsTrue (n < m) -> Compare n m :~: LT Source #

ltToLneq :: Sing n -> Sing m -> (Compare n m :~: LT) -> IsTrue (n < m) Source #

lneqZero :: Sing a -> IsTrue (Zero Nat < Succ a) Source #

lneqSucc :: Sing n -> IsTrue (n < Succ n) Source #

succLneqSucc :: Sing n -> Sing m -> (n < m) :~: (Succ n < Succ m) Source #

lneqRightPredSucc :: Sing n -> Sing m -> IsTrue (n < m) -> m :~: Succ (Pred m) Source #

lneqSuccStepL :: Sing n -> Sing m -> IsTrue (Succ n < m) -> IsTrue (n < m) Source #

lneqSuccStepR :: Sing n -> Sing m -> IsTrue (n < m) -> IsTrue (n < Succ m) Source #

plusStrictMonotone :: Sing n -> Sing m -> Sing l -> Sing k -> IsTrue (n < m) -> IsTrue (l < k) -> IsTrue ((n + l) < (m + k)) Source #

maxZeroL :: Sing n -> Max (Zero Nat) n :~: n Source #

maxZeroR :: Sing n -> Max n (Zero Nat) :~: n Source #

minZeroL :: Sing n -> Min (Zero Nat) n :~: Zero Nat Source #

minZeroR :: Sing n -> Min n (Zero Nat) :~: Zero Nat Source #

minusSucc :: Sing n -> Sing m -> IsTrue (m <= n) -> (Succ n - m) :~: Succ (n - m) Source #

lneqZeroAbsurd :: Sing n -> IsTrue (n < Zero Nat) -> Void Source #

minusPlus :: PeanoOrder Nat => Sing n -> Sing m -> IsTrue (m <= n) -> ((n - m) + m) :~: n Source #

data DiffNat n m where Source #

Constructors

DiffNat :: Sing n -> Sing m -> DiffNat n (n + m) 

data LeqView (n :: nat) (m :: nat) where Source #

Constructors

LeqZero :: Sing n -> LeqView (Zero nat) n 
LeqSucc :: Sing n -> Sing m -> IsTrue (n <= m) -> LeqView (Succ n) (Succ m) 

sFlipOrdering :: forall (t :: Ordering). Sing t -> Sing (Apply FlipOrderingSym0 t :: Ordering) Source #

coerceLeqL :: forall (n :: nat) m l. IsPeano nat => (n :~: m) -> Sing l -> IsTrue (n <= l) -> IsTrue (m <= l) Source #

coerceLeqR :: forall (n :: nat) m l. IsPeano nat => Sing l -> (n :~: m) -> IsTrue (l <= n) -> IsTrue (l <= m) Source #

sLeqCongL :: (a :~: b) -> Sing c -> (a <= c) :~: (b <= c) Source #

sLeqCongR :: Sing a -> (b :~: c) -> (a <= b) :~: (a <= c) Source #

sLeqCong :: (a :~: b) -> (c :~: d) -> (a <= c) :~: (b <= d) Source #

type (-.) n m = Subt n m (m <= n) infixl 6 Source #

Natural subtraction, truncated to zero if m > n.

(%-.) :: PeanoOrder nat => Sing (n :: nat) -> Sing m -> Sing (n -. m) Source #

minPlusTruncMinus :: PeanoOrder nat => Sing (n :: nat) -> Sing (m :: nat) -> (Min n m + (n -. m)) :~: n Source #

truncMinusLeq :: PeanoOrder nat => Sing (n :: nat) -> Sing m -> IsTrue ((n -. m) <= n) Source #

data family Sing (a :: k) :: * #

The singleton kind-indexed data family.

Instances
Eq (Sing n) # 
Instance details

Defined in Data.Type.Natural.Core

Methods

(==) :: Sing n -> Sing n -> Bool #

(/=) :: Sing n -> Sing n -> Bool #

ShowSing Nat => Show (Sing z) # 
Instance details

Defined in Data.Type.Natural.Definitions

Methods

showsPrec :: Int -> Sing z -> ShowS #

show :: Sing z -> String #

showList :: [Sing z] -> ShowS #

data Sing (z :: Bool) 
Instance details

Defined in Data.Singletons.Prelude.Instances

data Sing (z :: Bool) where
data Sing (z :: Ordering) 
Instance details

Defined in Data.Singletons.Prelude.Instances

data Sing (z :: Ordering) where
data Sing (n :: Nat) 
Instance details

Defined in Data.Singletons.TypeLits.Internal

data Sing (n :: Nat) where
data Sing (n :: Symbol) 
Instance details

Defined in Data.Singletons.TypeLits.Internal

data Sing (n :: Symbol) where
data Sing (z :: ()) 
Instance details

Defined in Data.Singletons.Prelude.Instances

data Sing (z :: ()) where
data Sing (z :: Nat) # 
Instance details

Defined in Data.Type.Natural.Definitions

data Sing (z :: Nat) where
data Sing (z :: Void) 
Instance details

Defined in Data.Singletons.Prelude.Instances

data Sing (z :: Void)
data Sing (z :: [a]) 
Instance details

Defined in Data.Singletons.Prelude.Instances

data Sing (z :: [a]) where
data Sing (z :: Maybe a) 
Instance details

Defined in Data.Singletons.Prelude.Instances

data Sing (z :: Maybe a) where
data Sing (z :: NonEmpty a) 
Instance details

Defined in Data.Singletons.Prelude.Instances

data Sing (z :: NonEmpty a) where
data Sing (z :: Either a b) 
Instance details

Defined in Data.Singletons.Prelude.Instances

data Sing (z :: Either a b) where
data Sing (z :: (a, b)) 
Instance details

Defined in Data.Singletons.Prelude.Instances

data Sing (z :: (a, b)) where
data Sing (f :: k1 ~> k2) 
Instance details

Defined in Data.Singletons.Internal

data Sing (f :: k1 ~> k2) = SLambda {}
data Sing (z :: (a, b, c)) 
Instance details

Defined in Data.Singletons.Prelude.Instances

data Sing (z :: (a, b, c)) where
data Sing (z :: (a, b, c, d)) 
Instance details

Defined in Data.Singletons.Prelude.Instances

data Sing (z :: (a, b, c, d)) where
data Sing (z :: (a, b, c, d, e)) 
Instance details

Defined in Data.Singletons.Prelude.Instances

data Sing (z :: (a, b, c, d, e)) where
data Sing (z :: (a, b, c, d, e, f)) 
Instance details

Defined in Data.Singletons.Prelude.Instances

data Sing (z :: (a, b, c, d, e, f)) where
data Sing (z :: (a, b, c, d, e, f, g)) 
Instance details

Defined in Data.Singletons.Prelude.Instances

data Sing (z :: (a, b, c, d, e, f, g)) where

type CompareSym2 (t :: a6989586621679299162) (t1 :: a6989586621679299162) = Compare t t1 #

data CompareSym1 (l :: a6989586621679299162) (l1 :: TyFun a6989586621679299162 Ordering) :: forall a6989586621679299162. a6989586621679299162 -> TyFun a6989586621679299162 Ordering -> * #

Instances
SuppressUnusedWarnings (CompareSym1 :: a6989586621679299162 -> TyFun a6989586621679299162 Ordering -> *) 
Instance details

Defined in Data.Singletons.Prelude.Ord

type Apply (CompareSym1 l1 :: TyFun a Ordering -> *) (l2 :: a) 
Instance details

Defined in Data.Singletons.Prelude.Ord

type Apply (CompareSym1 l1 :: TyFun a Ordering -> *) (l2 :: a) = Compare l1 l2

data CompareSym0 (l :: TyFun a6989586621679299162 (TyFun a6989586621679299162 Ordering -> Type)) :: forall a6989586621679299162. TyFun a6989586621679299162 (TyFun a6989586621679299162 Ordering -> Type) -> * #

Instances
SuppressUnusedWarnings (CompareSym0 :: TyFun a6989586621679299162 (TyFun a6989586621679299162 Ordering -> Type) -> *) 
Instance details

Defined in Data.Singletons.Prelude.Ord

type Apply (CompareSym0 :: TyFun a6989586621679299162 (TyFun a6989586621679299162 Ordering -> Type) -> *) (l :: a6989586621679299162) 
Instance details

Defined in Data.Singletons.Prelude.Ord

type Apply (CompareSym0 :: TyFun a6989586621679299162 (TyFun a6989586621679299162 Ordering -> Type) -> *) (l :: a6989586621679299162) = CompareSym1 l

type (<@#@$$$) (t :: a6989586621679299162) (t1 :: a6989586621679299162) = t < t1 #

data (l :: a6989586621679299162) <@#@$$ (l1 :: TyFun a6989586621679299162 Bool) :: forall a6989586621679299162. a6989586621679299162 -> TyFun a6989586621679299162 Bool -> * #

Instances
SuppressUnusedWarnings ((<@#@$$) :: a6989586621679299162 -> TyFun a6989586621679299162 Bool -> *) 
Instance details

Defined in Data.Singletons.Prelude.Ord

type Apply ((<@#@$$) l1 :: TyFun a Bool -> *) (l2 :: a) 
Instance details

Defined in Data.Singletons.Prelude.Ord

type Apply ((<@#@$$) l1 :: TyFun a Bool -> *) (l2 :: a) = l1 < l2

data (<@#@$) (l :: TyFun a6989586621679299162 (TyFun a6989586621679299162 Bool -> Type)) :: forall a6989586621679299162. TyFun a6989586621679299162 (TyFun a6989586621679299162 Bool -> Type) -> * #

Instances
SuppressUnusedWarnings ((<@#@$) :: TyFun a6989586621679299162 (TyFun a6989586621679299162 Bool -> Type) -> *) 
Instance details

Defined in Data.Singletons.Prelude.Ord

type Apply ((<@#@$) :: TyFun a6989586621679299162 (TyFun a6989586621679299162 Bool -> Type) -> *) (l :: a6989586621679299162) 
Instance details

Defined in Data.Singletons.Prelude.Ord

type Apply ((<@#@$) :: TyFun a6989586621679299162 (TyFun a6989586621679299162 Bool -> Type) -> *) (l :: a6989586621679299162) = (<@#@$$) l

type (<=@#@$$$) (t :: a6989586621679299162) (t1 :: a6989586621679299162) = t <= t1 #

data (l :: a6989586621679299162) <=@#@$$ (l1 :: TyFun a6989586621679299162 Bool) :: forall a6989586621679299162. a6989586621679299162 -> TyFun a6989586621679299162 Bool -> * #

Instances
SuppressUnusedWarnings ((<=@#@$$) :: a6989586621679299162 -> TyFun a6989586621679299162 Bool -> *) 
Instance details

Defined in Data.Singletons.Prelude.Ord

type Apply ((<=@#@$$) l1 :: TyFun a Bool -> *) (l2 :: a) 
Instance details

Defined in Data.Singletons.Prelude.Ord

type Apply ((<=@#@$$) l1 :: TyFun a Bool -> *) (l2 :: a) = l1 <= l2

data (<=@#@$) (l :: TyFun a6989586621679299162 (TyFun a6989586621679299162 Bool -> Type)) :: forall a6989586621679299162. TyFun a6989586621679299162 (TyFun a6989586621679299162 Bool -> Type) -> * #

Instances
SuppressUnusedWarnings ((<=@#@$) :: TyFun a6989586621679299162 (TyFun a6989586621679299162 Bool -> Type) -> *) 
Instance details

Defined in Data.Singletons.Prelude.Ord

type Apply ((<=@#@$) :: TyFun a6989586621679299162 (TyFun a6989586621679299162 Bool -> Type) -> *) (l :: a6989586621679299162) 
Instance details

Defined in Data.Singletons.Prelude.Ord

type Apply ((<=@#@$) :: TyFun a6989586621679299162 (TyFun a6989586621679299162 Bool -> Type) -> *) (l :: a6989586621679299162) = (<=@#@$$) l

type (>@#@$$$) (t :: a6989586621679299162) (t1 :: a6989586621679299162) = t > t1 #

data (l :: a6989586621679299162) >@#@$$ (l1 :: TyFun a6989586621679299162 Bool) :: forall a6989586621679299162. a6989586621679299162 -> TyFun a6989586621679299162 Bool -> * #

Instances
SuppressUnusedWarnings ((>@#@$$) :: a6989586621679299162 -> TyFun a6989586621679299162 Bool -> *) 
Instance details

Defined in Data.Singletons.Prelude.Ord

type Apply ((>@#@$$) l1 :: TyFun a Bool -> *) (l2 :: a) 
Instance details

Defined in Data.Singletons.Prelude.Ord

type Apply ((>@#@$$) l1 :: TyFun a Bool -> *) (l2 :: a) = l1 > l2

data (>@#@$) (l :: TyFun a6989586621679299162 (TyFun a6989586621679299162 Bool -> Type)) :: forall a6989586621679299162. TyFun a6989586621679299162 (TyFun a6989586621679299162 Bool -> Type) -> * #

Instances
SuppressUnusedWarnings ((>@#@$) :: TyFun a6989586621679299162 (TyFun a6989586621679299162 Bool -> Type) -> *) 
Instance details

Defined in Data.Singletons.Prelude.Ord

type Apply ((>@#@$) :: TyFun a6989586621679299162 (TyFun a6989586621679299162 Bool -> Type) -> *) (l :: a6989586621679299162) 
Instance details

Defined in Data.Singletons.Prelude.Ord

type Apply ((>@#@$) :: TyFun a6989586621679299162 (TyFun a6989586621679299162 Bool -> Type) -> *) (l :: a6989586621679299162) = (>@#@$$) l

type (>=@#@$$$) (t :: a6989586621679299162) (t1 :: a6989586621679299162) = t >= t1 #

data (l :: a6989586621679299162) >=@#@$$ (l1 :: TyFun a6989586621679299162 Bool) :: forall a6989586621679299162. a6989586621679299162 -> TyFun a6989586621679299162 Bool -> * #

Instances
SuppressUnusedWarnings ((>=@#@$$) :: a6989586621679299162 -> TyFun a6989586621679299162 Bool -> *) 
Instance details

Defined in Data.Singletons.Prelude.Ord

type Apply ((>=@#@$$) l1 :: TyFun a Bool -> *) (l2 :: a) 
Instance details

Defined in Data.Singletons.Prelude.Ord

type Apply ((>=@#@$$) l1 :: TyFun a Bool -> *) (l2 :: a) = l1 >= l2

data (>=@#@$) (l :: TyFun a6989586621679299162 (TyFun a6989586621679299162 Bool -> Type)) :: forall a6989586621679299162. TyFun a6989586621679299162 (TyFun a6989586621679299162 Bool -> Type) -> * #

Instances
SuppressUnusedWarnings ((>=@#@$) :: TyFun a6989586621679299162 (TyFun a6989586621679299162 Bool -> Type) -> *) 
Instance details

Defined in Data.Singletons.Prelude.Ord

type Apply ((>=@#@$) :: TyFun a6989586621679299162 (TyFun a6989586621679299162 Bool -> Type) -> *) (l :: a6989586621679299162) 
Instance details

Defined in Data.Singletons.Prelude.Ord

type Apply ((>=@#@$) :: TyFun a6989586621679299162 (TyFun a6989586621679299162 Bool -> Type) -> *) (l :: a6989586621679299162) = (>=@#@$$) l

type MaxSym2 (t :: a6989586621679299162) (t1 :: a6989586621679299162) = Max t t1 #

data MaxSym1 (l :: a6989586621679299162) (l1 :: TyFun a6989586621679299162 a6989586621679299162) :: forall a6989586621679299162. a6989586621679299162 -> TyFun a6989586621679299162 a6989586621679299162 -> * #

Instances
SuppressUnusedWarnings (MaxSym1 :: a6989586621679299162 -> TyFun a6989586621679299162 a6989586621679299162 -> *) 
Instance details

Defined in Data.Singletons.Prelude.Ord

type Apply (MaxSym1 l1 :: TyFun a a -> *) (l2 :: a) 
Instance details

Defined in Data.Singletons.Prelude.Ord

type Apply (MaxSym1 l1 :: TyFun a a -> *) (l2 :: a) = Max l1 l2

data MaxSym0 (l :: TyFun a6989586621679299162 (TyFun a6989586621679299162 a6989586621679299162 -> Type)) :: forall a6989586621679299162. TyFun a6989586621679299162 (TyFun a6989586621679299162 a6989586621679299162 -> Type) -> * #

Instances
SuppressUnusedWarnings (MaxSym0 :: TyFun a6989586621679299162 (TyFun a6989586621679299162 a6989586621679299162 -> Type) -> *) 
Instance details

Defined in Data.Singletons.Prelude.Ord

type Apply (MaxSym0 :: TyFun a6989586621679299162 (TyFun a6989586621679299162 a6989586621679299162 -> Type) -> *) (l :: a6989586621679299162) 
Instance details

Defined in Data.Singletons.Prelude.Ord

type Apply (MaxSym0 :: TyFun a6989586621679299162 (TyFun a6989586621679299162 a6989586621679299162 -> Type) -> *) (l :: a6989586621679299162) = MaxSym1 l

type MinSym2 (t :: a6989586621679299162) (t1 :: a6989586621679299162) = Min t t1 #

data MinSym1 (l :: a6989586621679299162) (l1 :: TyFun a6989586621679299162 a6989586621679299162) :: forall a6989586621679299162. a6989586621679299162 -> TyFun a6989586621679299162 a6989586621679299162 -> * #

Instances
SuppressUnusedWarnings (MinSym1 :: a6989586621679299162 -> TyFun a6989586621679299162 a6989586621679299162 -> *) 
Instance details

Defined in Data.Singletons.Prelude.Ord

type Apply (MinSym1 l1 :: TyFun a a -> *) (l2 :: a) 
Instance details

Defined in Data.Singletons.Prelude.Ord

type Apply (MinSym1 l1 :: TyFun a a -> *) (l2 :: a) = Min l1 l2

data MinSym0 (l :: TyFun a6989586621679299162 (TyFun a6989586621679299162 a6989586621679299162 -> Type)) :: forall a6989586621679299162. TyFun a6989586621679299162 (TyFun a6989586621679299162 a6989586621679299162 -> Type) -> * #

Instances
SuppressUnusedWarnings (MinSym0 :: TyFun a6989586621679299162 (TyFun a6989586621679299162 a6989586621679299162 -> Type) -> *) 
Instance details

Defined in Data.Singletons.Prelude.Ord

type Apply (MinSym0 :: TyFun a6989586621679299162 (TyFun a6989586621679299162 a6989586621679299162 -> Type) -> *) (l :: a6989586621679299162) 
Instance details

Defined in Data.Singletons.Prelude.Ord

type Apply (MinSym0 :: TyFun a6989586621679299162 (TyFun a6989586621679299162 a6989586621679299162 -> Type) -> *) (l :: a6989586621679299162) = MinSym1 l

class PEq a => POrd a #

Associated Types

type Compare (arg :: a) (arg1 :: a) :: Ordering #

type (arg :: a) < (arg1 :: a) :: Bool #

type (arg :: a) <= (arg1 :: a) :: Bool #

type (arg :: a) > (arg1 :: a) :: Bool #

type (arg :: a) >= (arg1 :: a) :: Bool #

type Max (arg :: a) (arg1 :: a) :: a #

type Min (arg :: a) (arg1 :: a) :: a #

Instances
POrd Bool 
Instance details

Defined in Data.Singletons.Prelude.Ord

Associated Types

type Compare arg arg1 :: Ordering #

type arg < arg1 :: Bool #

type arg <= arg1 :: Bool #

type arg > arg1 :: Bool #

type arg >= arg1 :: Bool #

type Max arg arg1 :: a #

type Min arg arg1 :: a #

POrd Ordering 
Instance details

Defined in Data.Singletons.Prelude.Ord

Associated Types

type Compare arg arg1 :: Ordering #

type arg < arg1 :: Bool #

type arg <= arg1 :: Bool #

type arg > arg1 :: Bool #

type arg >= arg1 :: Bool #

type Max arg arg1 :: a #

type Min arg arg1 :: a #

POrd () 
Instance details

Defined in Data.Singletons.Prelude.Ord

Associated Types

type Compare arg arg1 :: Ordering #

type arg < arg1 :: Bool #

type arg <= arg1 :: Bool #

type arg > arg1 :: Bool #

type arg >= arg1 :: Bool #

type Max arg arg1 :: a #

type Min arg arg1 :: a #

POrd Nat # 
Instance details

Defined in Data.Type.Natural.Definitions

Associated Types

type Compare arg arg1 :: Ordering #

type arg < arg1 :: Bool #

type arg <= arg1 :: Bool #

type arg > arg1 :: Bool #

type arg >= arg1 :: Bool #

type Max arg arg1 :: a #

type Min arg arg1 :: a #

POrd Void 
Instance details

Defined in Data.Singletons.Prelude.Ord

Associated Types

type Compare arg arg1 :: Ordering #

type arg < arg1 :: Bool #

type arg <= arg1 :: Bool #

type arg > arg1 :: Bool #

type arg >= arg1 :: Bool #

type Max arg arg1 :: a #

type Min arg arg1 :: a #

POrd [a] 
Instance details

Defined in Data.Singletons.Prelude.Ord

Associated Types

type Compare arg arg1 :: Ordering #

type arg < arg1 :: Bool #

type arg <= arg1 :: Bool #

type arg > arg1 :: Bool #

type arg >= arg1 :: Bool #

type Max arg arg1 :: a #

type Min arg arg1 :: a #

POrd (Maybe a) 
Instance details

Defined in Data.Singletons.Prelude.Ord

Associated Types

type Compare arg arg1 :: Ordering #

type arg < arg1 :: Bool #

type arg <= arg1 :: Bool #

type arg > arg1 :: Bool #

type arg >= arg1 :: Bool #

type Max arg arg1 :: a #

type Min arg arg1 :: a #

POrd (NonEmpty a) 
Instance details

Defined in Data.Singletons.Prelude.Ord

Associated Types

type Compare arg arg1 :: Ordering #

type arg < arg1 :: Bool #

type arg <= arg1 :: Bool #

type arg > arg1 :: Bool #

type arg >= arg1 :: Bool #

type Max arg arg1 :: a #

type Min arg arg1 :: a #

POrd (Either a b) 
Instance details

Defined in Data.Singletons.Prelude.Ord

Associated Types

type Compare arg arg1 :: Ordering #

type arg < arg1 :: Bool #

type arg <= arg1 :: Bool #

type arg > arg1 :: Bool #

type arg >= arg1 :: Bool #

type Max arg arg1 :: a #

type Min arg arg1 :: a #

POrd (a, b) 
Instance details

Defined in Data.Singletons.Prelude.Ord

Associated Types

type Compare arg arg1 :: Ordering #

type arg < arg1 :: Bool #

type arg <= arg1 :: Bool #

type arg > arg1 :: Bool #

type arg >= arg1 :: Bool #

type Max arg arg1 :: a #

type Min arg arg1 :: a #

POrd (a, b, c) 
Instance details

Defined in Data.Singletons.Prelude.Ord

Associated Types

type Compare arg arg1 :: Ordering #

type arg < arg1 :: Bool #

type arg <= arg1 :: Bool #

type arg > arg1 :: Bool #

type arg >= arg1 :: Bool #

type Max arg arg1 :: a #

type Min arg arg1 :: a #

POrd (a, b, c, d) 
Instance details

Defined in Data.Singletons.Prelude.Ord

Associated Types

type Compare arg arg1 :: Ordering #

type arg < arg1 :: Bool #

type arg <= arg1 :: Bool #

type arg > arg1 :: Bool #

type arg >= arg1 :: Bool #

type Max arg arg1 :: a #

type Min arg arg1 :: a #

POrd (a, b, c, d, e) 
Instance details

Defined in Data.Singletons.Prelude.Ord

Associated Types

type Compare arg arg1 :: Ordering #

type arg < arg1 :: Bool #

type arg <= arg1 :: Bool #

type arg > arg1 :: Bool #

type arg >= arg1 :: Bool #

type Max arg arg1 :: a #

type Min arg arg1 :: a #

POrd (a, b, c, d, e, f) 
Instance details

Defined in Data.Singletons.Prelude.Ord

Associated Types

type Compare arg arg1 :: Ordering #

type arg < arg1 :: Bool #

type arg <= arg1 :: Bool #

type arg > arg1 :: Bool #

type arg >= arg1 :: Bool #

type Max arg arg1 :: a #

type Min arg arg1 :: a #

POrd (a, b, c, d, e, f, g) 
Instance details

Defined in Data.Singletons.Prelude.Ord

Associated Types

type Compare arg arg1 :: Ordering #

type arg < arg1 :: Bool #

type arg <= arg1 :: Bool #

type arg > arg1 :: Bool #

type arg >= arg1 :: Bool #

type Max arg arg1 :: a #

type Min arg arg1 :: a #

class SEq a => SOrd a where #

Methods

sCompare :: Sing t1 -> Sing t2 -> Sing (Apply (Apply (CompareSym0 :: TyFun a (TyFun a Ordering -> Type) -> *) t1) t2) #

(%<) :: Sing t1 -> Sing t2 -> Sing (Apply (Apply ((<@#@$) :: TyFun a (TyFun a Bool -> Type) -> *) t1) t2) infix 4 #

(%<=) :: Sing t1 -> Sing t2 -> Sing (Apply (Apply ((<=@#@$) :: TyFun a (TyFun a Bool -> Type) -> *) t1) t2) infix 4 #

(%>) :: Sing t1 -> Sing t2 -> Sing (Apply (Apply ((>@#@$) :: TyFun a (TyFun a Bool -> Type) -> *) t1) t2) infix 4 #

(%>=) :: Sing t1 -> Sing t2 -> Sing (Apply (Apply ((>=@#@$) :: TyFun a (TyFun a Bool -> Type) -> *) t1) t2) infix 4 #

sMax :: Sing t1 -> Sing t2 -> Sing (Apply (Apply (MaxSym0 :: TyFun a (TyFun a a -> Type) -> *) t1) t2) #

sMin :: Sing t1 -> Sing t2 -> Sing (Apply (Apply (MinSym0 :: TyFun a (TyFun a a -> Type) -> *) t1) t2) #

Instances
SOrd Bool 
Instance details

Defined in Data.Singletons.Prelude.Ord

Methods

sCompare :: Sing t1 -> Sing t2 -> Sing (Apply (Apply CompareSym0 t1) t2) #

(%<) :: Sing t1 -> Sing t2 -> Sing (Apply (Apply (<@#@$) t1) t2) #

(%<=) :: Sing t1 -> Sing t2 -> Sing (Apply (Apply (<=@#@$) t1) t2) #

(%>) :: Sing t1 -> Sing t2 -> Sing (Apply (Apply (>@#@$) t1) t2) #

(%>=) :: Sing t1 -> Sing t2 -> Sing (Apply (Apply (>=@#@$) t1) t2) #

sMax :: Sing t1 -> Sing t2 -> Sing (Apply (Apply MaxSym0 t1) t2) #

sMin :: Sing t1 -> Sing t2 -> Sing (Apply (Apply MinSym0 t1) t2) #

SOrd Ordering 
Instance details

Defined in Data.Singletons.Prelude.Ord

Methods

sCompare :: Sing t1 -> Sing t2 -> Sing (Apply (Apply CompareSym0 t1) t2) #

(%<) :: Sing t1 -> Sing t2 -> Sing (Apply (Apply (<@#@$) t1) t2) #

(%<=) :: Sing t1 -> Sing t2 -> Sing (Apply (Apply (<=@#@$) t1) t2) #

(%>) :: Sing t1 -> Sing t2 -> Sing (Apply (Apply (>@#@$) t1) t2) #

(%>=) :: Sing t1 -> Sing t2 -> Sing (Apply (Apply (>=@#@$) t1) t2) #

sMax :: Sing t1 -> Sing t2 -> Sing (Apply (Apply MaxSym0 t1) t2) #

sMin :: Sing t1 -> Sing t2 -> Sing (Apply (Apply MinSym0 t1) t2) #

SOrd () 
Instance details

Defined in Data.Singletons.Prelude.Ord

Methods

sCompare :: Sing t1 -> Sing t2 -> Sing (Apply (Apply CompareSym0 t1) t2) #

(%<) :: Sing t1 -> Sing t2 -> Sing (Apply (Apply (<@#@$) t1) t2) #

(%<=) :: Sing t1 -> Sing t2 -> Sing (Apply (Apply (<=@#@$) t1) t2) #

(%>) :: Sing t1 -> Sing t2 -> Sing (Apply (Apply (>@#@$) t1) t2) #

(%>=) :: Sing t1 -> Sing t2 -> Sing (Apply (Apply (>=@#@$) t1) t2) #

sMax :: Sing t1 -> Sing t2 -> Sing (Apply (Apply MaxSym0 t1) t2) #

sMin :: Sing t1 -> Sing t2 -> Sing (Apply (Apply MinSym0 t1) t2) #

SOrd Nat # 
Instance details

Defined in Data.Type.Natural.Definitions

Methods

sCompare :: Sing t1 -> Sing t2 -> Sing (Apply (Apply CompareSym0 t1) t2) #

(%<) :: Sing t1 -> Sing t2 -> Sing (Apply (Apply (<@#@$) t1) t2) #

(%<=) :: Sing t1 -> Sing t2 -> Sing (Apply (Apply (<=@#@$) t1) t2) #

(%>) :: Sing t1 -> Sing t2 -> Sing (Apply (Apply (>@#@$) t1) t2) #

(%>=) :: Sing t1 -> Sing t2 -> Sing (Apply (Apply (>=@#@$) t1) t2) #

sMax :: Sing t1 -> Sing t2 -> Sing (Apply (Apply MaxSym0 t1) t2) #

sMin :: Sing t1 -> Sing t2 -> Sing (Apply (Apply MinSym0 t1) t2) #

SOrd Void 
Instance details

Defined in Data.Singletons.Prelude.Ord

Methods

sCompare :: Sing t1 -> Sing t2 -> Sing (Apply (Apply CompareSym0 t1) t2) #

(%<) :: Sing t1 -> Sing t2 -> Sing (Apply (Apply (<@#@$) t1) t2) #

(%<=) :: Sing t1 -> Sing t2 -> Sing (Apply (Apply (<=@#@$) t1) t2) #

(%>) :: Sing t1 -> Sing t2 -> Sing (Apply (Apply (>@#@$) t1) t2) #

(%>=) :: Sing t1 -> Sing t2 -> Sing (Apply (Apply (>=@#@$) t1) t2) #

sMax :: Sing t1 -> Sing t2 -> Sing (Apply (Apply MaxSym0 t1) t2) #

sMin :: Sing t1 -> Sing t2 -> Sing (Apply (Apply MinSym0 t1) t2) #

(SOrd a, SOrd [a]) => SOrd [a] 
Instance details

Defined in Data.Singletons.Prelude.Ord

Methods

sCompare :: Sing t1 -> Sing t2 -> Sing (Apply (Apply CompareSym0 t1) t2) #

(%<) :: Sing t1 -> Sing t2 -> Sing (Apply (Apply (<@#@$) t1) t2) #

(%<=) :: Sing t1 -> Sing t2 -> Sing (Apply (Apply (<=@#@$) t1) t2) #

(%>) :: Sing t1 -> Sing t2 -> Sing (Apply (Apply (>@#@$) t1) t2) #

(%>=) :: Sing t1 -> Sing t2 -> Sing (Apply (Apply (>=@#@$) t1) t2) #

sMax :: Sing t1 -> Sing t2 -> Sing (Apply (Apply MaxSym0 t1) t2) #

sMin :: Sing t1 -> Sing t2 -> Sing (Apply (Apply MinSym0 t1) t2) #

SOrd a => SOrd (Maybe a) 
Instance details

Defined in Data.Singletons.Prelude.Ord

Methods

sCompare :: Sing t1 -> Sing t2 -> Sing (Apply (Apply CompareSym0 t1) t2) #

(%<) :: Sing t1 -> Sing t2 -> Sing (Apply (Apply (<@#@$) t1) t2) #

(%<=) :: Sing t1 -> Sing t2 -> Sing (Apply (Apply (<=@#@$) t1) t2) #

(%>) :: Sing t1 -> Sing t2 -> Sing (Apply (Apply (>@#@$) t1) t2) #

(%>=) :: Sing t1 -> Sing t2 -> Sing (Apply (Apply (>=@#@$) t1) t2) #

sMax :: Sing t1 -> Sing t2 -> Sing (Apply (Apply MaxSym0 t1) t2) #

sMin :: Sing t1 -> Sing t2 -> Sing (Apply (Apply MinSym0 t1) t2) #

(SOrd a, SOrd [a]) => SOrd (NonEmpty a) 
Instance details

Defined in Data.Singletons.Prelude.Ord

Methods

sCompare :: Sing t1 -> Sing t2 -> Sing (Apply (Apply CompareSym0 t1) t2) #

(%<) :: Sing t1 -> Sing t2 -> Sing (Apply (Apply (<@#@$) t1) t2) #

(%<=) :: Sing t1 -> Sing t2 -> Sing (Apply (Apply (<=@#@$) t1) t2) #

(%>) :: Sing t1 -> Sing t2 -> Sing (Apply (Apply (>@#@$) t1) t2) #

(%>=) :: Sing t1 -> Sing t2 -> Sing (Apply (Apply (>=@#@$) t1) t2) #

sMax :: Sing t1 -> Sing t2 -> Sing (Apply (Apply MaxSym0 t1) t2) #

sMin :: Sing t1 -> Sing t2 -> Sing (Apply (Apply MinSym0 t1) t2) #

(SOrd a, SOrd b) => SOrd (Either a b) 
Instance details

Defined in Data.Singletons.Prelude.Ord

Methods

sCompare :: Sing t1 -> Sing t2 -> Sing (Apply (Apply CompareSym0 t1) t2) #

(%<) :: Sing t1 -> Sing t2 -> Sing (Apply (Apply (<@#@$) t1) t2) #

(%<=) :: Sing t1 -> Sing t2 -> Sing (Apply (Apply (<=@#@$) t1) t2) #

(%>) :: Sing t1 -> Sing t2 -> Sing (Apply (Apply (>@#@$) t1) t2) #

(%>=) :: Sing t1 -> Sing t2 -> Sing (Apply (Apply (>=@#@$) t1) t2) #

sMax :: Sing t1 -> Sing t2 -> Sing (Apply (Apply MaxSym0 t1) t2) #

sMin :: Sing t1 -> Sing t2 -> Sing (Apply (Apply MinSym0 t1) t2) #

(SOrd a, SOrd b) => SOrd (a, b) 
Instance details

Defined in Data.Singletons.Prelude.Ord

Methods

sCompare :: Sing t1 -> Sing t2 -> Sing (Apply (Apply CompareSym0 t1) t2) #

(%<) :: Sing t1 -> Sing t2 -> Sing (Apply (Apply (<@#@$) t1) t2) #

(%<=) :: Sing t1 -> Sing t2 -> Sing (Apply (Apply (<=@#@$) t1) t2) #

(%>) :: Sing t1 -> Sing t2 -> Sing (Apply (Apply (>@#@$) t1) t2) #

(%>=) :: Sing t1 -> Sing t2 -> Sing (Apply (Apply (>=@#@$) t1) t2) #

sMax :: Sing t1 -> Sing t2 -> Sing (Apply (Apply MaxSym0 t1) t2) #

sMin :: Sing t1 -> Sing t2 -> Sing (Apply (Apply MinSym0 t1) t2) #

(SOrd a, SOrd b, SOrd c) => SOrd (a, b, c) 
Instance details

Defined in Data.Singletons.Prelude.Ord

Methods

sCompare :: Sing t1 -> Sing t2 -> Sing (Apply (Apply CompareSym0 t1) t2) #

(%<) :: Sing t1 -> Sing t2 -> Sing (Apply (Apply (<@#@$) t1) t2) #

(%<=) :: Sing t1 -> Sing t2 -> Sing (Apply (Apply (<=@#@$) t1) t2) #

(%>) :: Sing t1 -> Sing t2 -> Sing (Apply (Apply (>@#@$) t1) t2) #

(%>=) :: Sing t1 -> Sing t2 -> Sing (Apply (Apply (>=@#@$) t1) t2) #

sMax :: Sing t1 -> Sing t2 -> Sing (Apply (Apply MaxSym0 t1) t2) #

sMin :: Sing t1 -> Sing t2 -> Sing (Apply (Apply MinSym0 t1) t2) #

(SOrd a, SOrd b, SOrd c, SOrd d) => SOrd (a, b, c, d) 
Instance details

Defined in Data.Singletons.Prelude.Ord

Methods

sCompare :: Sing t1 -> Sing t2 -> Sing (Apply (Apply CompareSym0 t1) t2) #

(%<) :: Sing t1 -> Sing t2 -> Sing (Apply (Apply (<@#@$) t1) t2) #

(%<=) :: Sing t1 -> Sing t2 -> Sing (Apply (Apply (<=@#@$) t1) t2) #

(%>) :: Sing t1 -> Sing t2 -> Sing (Apply (Apply (>@#@$) t1) t2) #

(%>=) :: Sing t1 -> Sing t2 -> Sing (Apply (Apply (>=@#@$) t1) t2) #

sMax :: Sing t1 -> Sing t2 -> Sing (Apply (Apply MaxSym0 t1) t2) #

sMin :: Sing t1 -> Sing t2 -> Sing (Apply (Apply MinSym0 t1) t2) #

(SOrd a, SOrd b, SOrd c, SOrd d, SOrd e) => SOrd (a, b, c, d, e) 
Instance details

Defined in Data.Singletons.Prelude.Ord

Methods

sCompare :: Sing t1 -> Sing t2 -> Sing (Apply (Apply CompareSym0 t1) t2) #

(%<) :: Sing t1 -> Sing t2 -> Sing (Apply (Apply (<@#@$) t1) t2) #

(%<=) :: Sing t1 -> Sing t2 -> Sing (Apply (Apply (<=@#@$) t1) t2) #

(%>) :: Sing t1 -> Sing t2 -> Sing (Apply (Apply (>@#@$) t1) t2) #

(%>=) :: Sing t1 -> Sing t2 -> Sing (Apply (Apply (>=@#@$) t1) t2) #

sMax :: Sing t1 -> Sing t2 -> Sing (Apply (Apply MaxSym0 t1) t2) #

sMin :: Sing t1 -> Sing t2 -> Sing (Apply (Apply MinSym0 t1) t2) #

(SOrd a, SOrd b, SOrd c, SOrd d, SOrd e, SOrd f) => SOrd (a, b, c, d, e, f) 
Instance details

Defined in Data.Singletons.Prelude.Ord

Methods

sCompare :: Sing t1 -> Sing t2 -> Sing (Apply (Apply CompareSym0 t1) t2) #

(%<) :: Sing t1 -> Sing t2 -> Sing (Apply (Apply (<@#@$) t1) t2) #

(%<=) :: Sing t1 -> Sing t2 -> Sing (Apply (Apply (<=@#@$) t1) t2) #

(%>) :: Sing t1 -> Sing t2 -> Sing (Apply (Apply (>@#@$) t1) t2) #

(%>=) :: Sing t1 -> Sing t2 -> Sing (Apply (Apply (>=@#@$) t1) t2) #

sMax :: Sing t1 -> Sing t2 -> Sing (Apply (Apply MaxSym0 t1) t2) #

sMin :: Sing t1 -> Sing t2 -> Sing (Apply (Apply MinSym0 t1) t2) #

(SOrd a, SOrd b, SOrd c, SOrd d, SOrd e, SOrd f, SOrd g) => SOrd (a, b, c, d, e, f, g) 
Instance details

Defined in Data.Singletons.Prelude.Ord

Methods

sCompare :: Sing t1 -> Sing t2 -> Sing (Apply (Apply CompareSym0 t1) t2) #

(%<) :: Sing t1 -> Sing t2 -> Sing (Apply (Apply (<@#@$) t1) t2) #

(%<=) :: Sing t1 -> Sing t2 -> Sing (Apply (Apply (<=@#@$) t1) t2) #

(%>) :: Sing t1 -> Sing t2 -> Sing (Apply (Apply (>@#@$) t1) t2) #

(%>=) :: Sing t1 -> Sing t2 -> Sing (Apply (Apply (>=@#@$) t1) t2) #

sMax :: Sing t1 -> Sing t2 -> Sing (Apply (Apply MaxSym0 t1) t2) #

sMin :: Sing t1 -> Sing t2 -> Sing (Apply (Apply MinSym0 t1) t2) #

type LTSym0 = LT #

type EQSym0 = EQ #

type GTSym0 = GT #