Safe Haskell | None |
---|---|
Language | Haskell2010 |
- class (SOrd nat, IsPeano nat) => PeanoOrder nat where
- data DiffNat n m where
- data LeqView (n :: nat) (m :: nat) where
- type family FlipOrdering (a :: Ordering) :: Ordering where ...
- sFlipOrdering :: forall (t :: Ordering). Sing t -> Sing (Apply FlipOrderingSym0 t :: Ordering)
- coerceLeqL :: forall (n :: nat) m l. IsPeano nat => (n :~: m) -> Sing l -> IsTrue (n <= l) -> IsTrue (m <= l)
- coerceLeqR :: forall (n :: nat) m l. IsPeano nat => Sing l -> (n :~: m) -> IsTrue (l <= n) -> IsTrue (l <= m)
- sLeqCongL :: (a :~: b) -> Sing c -> (a <= c) :~: (b <= c)
- sLeqCongR :: Sing a -> (b :~: c) -> (a <= b) :~: (a <= c)
- sLeqCong :: (a :~: b) -> (c :~: d) -> (a <= c) :~: (b <= d)
- type (-.) n m = Subt n m (m <= n)
- (%-.) :: PeanoOrder nat => Sing (n :: nat) -> Sing m -> Sing (n -. m)
- minPlusTruncMinus :: PeanoOrder nat => Sing (n :: nat) -> Sing (m :: nat) -> (Min n m + (n -. m)) :~: n
- truncMinusLeq :: PeanoOrder nat => Sing (n :: nat) -> Sing m -> IsTrue ((n -. m) <= n)
- module Data.Singletons.Prelude.Eq
- module Data.Singletons.Prelude.Num
- module Data.Singletons.Prelude.Ord
- type (<) a b = (:<) a b
- type (<@#@$) = (:<$)
- type (<@#@$$) = (:<$$)
- type (<@#@$$$) a b = (:<$$$) a b
- (%<) :: forall nat (a :: nat) (b :: nat). SOrd nat => Sing a -> Sing b -> Sing ((<) a b)
- type (>) a b = (:>) a b
- type (>@#@$) = (:>$)
- type (>@#@$$) = (:>$$)
- type (>@#@$$$) a b = (:>$$$) a b
- (%>) :: forall nat (a :: nat) (b :: nat). SOrd nat => Sing a -> Sing b -> Sing ((>) a b)
- type (<=) a b = (:<=) a b
- type (<=@#@$) = (:<=$)
- type (<=@#@$$) = (:<=$$)
- type (<=@#@$$$) a b = (:<=$$$) a b
- (%<=) :: forall nat (a :: nat) (b :: nat). SOrd nat => Sing a -> Sing b -> Sing ((<=) a b)
- type (>=) a b = (:>=) a b
- type (>=@#@$) = (:>=$)
- type (>=@#@$$) = (:>=$$)
- type (>=@#@$$$) a b = (:>=$$$) a b
- (%>=) :: forall nat (a :: nat) (b :: nat). SOrd nat => Sing a -> Sing b -> Sing ((>=) a b)
- type (/=) a b = (:/=) a b
- type (/=@#@$) = (:/=$)
- type (/=@#@$$) = (:/=$$)
- type (/=@#@$$$) a b = (:/=$$$) a b
- (%/=) :: forall nat (a :: nat) (b :: nat). SEq nat => Sing a -> Sing b -> Sing ((/=) a b)
- type (==) a b = (:==) a b
- type (==@#@$) = (:==$)
- type (==@#@$$) = (:==$$)
- type (==@#@$$$) a b = (:==$$$) a b
- (%==) :: forall nat (a :: nat) (b :: nat). SEq nat => Sing a -> Sing b -> Sing ((==) a b)
- type (+) a b = (:+) a b
- type (+@#@$) = (:+$)
- type (+@#@$$) = (:+$$)
- type (+@#@$$$) a b = (:+$$$) a b
- (%+) :: forall nat (a :: nat) (b :: nat). SNum nat => Sing a -> Sing b -> Sing ((+) a b)
- type (-) a b = (:-) a b
- type (-@#@$) = (:-$)
- type (-@#@$$) = (:-$$)
- type (-@#@$$$) a b = (:-$$$) a b
- (%-) :: forall nat (a :: nat) (b :: nat). SNum nat => Sing a -> Sing b -> Sing ((-) a b)
- type * a b = (:*) a b
- type (*@#@$) = (:*$)
- type (*@#@$$) = (:*$$)
- type (*@#@$$$) a b = (:*$$$) a b
- (%*) :: forall nat (a :: nat) (b :: nat). SNum nat => Sing a -> Sing b -> Sing (* a b)
Documentation
class (SOrd nat, IsPeano nat) => PeanoOrder nat where Source #
(succLeqToLT, cmpZero, leqRefl | leqZero, leqSucc, viewLeq | leqWitness, leqStep), eqlCmpEQ, ltToLeq, eqToRefl, flipCompare, leqToCmp, leqReversed, lneqSuccLeq, lneqReversed, (leqToMin, geqToMin | minLeqL, minLeqR, minLargest), (leqToMax, geqToMax | maxLeqL, maxLeqR, maxLeast)
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 #
type family FlipOrdering (a :: Ordering) :: Ordering where ... Source #
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 #
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 #
module Data.Singletons.Prelude.Eq
module Data.Singletons.Prelude.Num
module Data.Singletons.Prelude.Ord
(%<) :: forall nat (a :: nat) (b :: nat). SOrd nat => Sing a -> Sing b -> Sing ((<) a b) infix 4 Source #
(%>) :: forall nat (a :: nat) (b :: nat). SOrd nat => Sing a -> Sing b -> Sing ((>) a b) infix 4 Source #
type (<=@#@$$$) a b = (:<=$$$) a b Source #
(%<=) :: forall nat (a :: nat) (b :: nat). SOrd nat => Sing a -> Sing b -> Sing ((<=) a b) infix 4 Source #
type (>=@#@$$$) a b = (:>=$$$) a b Source #
(%>=) :: forall nat (a :: nat) (b :: nat). SOrd nat => Sing a -> Sing b -> Sing ((>=) a b) infix 4 Source #
type (/=@#@$$$) a b = (:/=$$$) a b Source #
(%/=) :: forall nat (a :: nat) (b :: nat). SEq nat => Sing a -> Sing b -> Sing ((/=) a b) infix 4 Source #
type (==@#@$$$) a b = (:==$$$) a b Source #
(%==) :: forall nat (a :: nat) (b :: nat). SEq nat => Sing a -> Sing b -> Sing ((==) a b) infix 4 Source #
(%+) :: forall nat (a :: nat) (b :: nat). SNum nat => Sing a -> Sing b -> Sing ((+) a b) infixl 6 Source #