Safe Haskell | None |
---|---|
Language | Haskell2010 |
- class (SOrd nat, IsPeano nat) => PeanoOrder nat where
- data DiffNat n m where
- data LeqView n m where
- type family FlipOrdering (a :: Ordering) :: Ordering where ...
- sFlipOrdering :: forall t. Sing t -> Sing (Apply FlipOrderingSym0 t :: Ordering)
- coerceLeqL :: forall n m l. IsPeano nat => (n :~: m) -> Sing l -> IsTrue (n :<= l) -> IsTrue (m :<= l)
- coerceLeqR :: forall n 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)
Documentation
class (SOrd nat, IsPeano nat) => PeanoOrder nat where Source #
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 m. PeanoOrder nat => Sing (n :: nat) -> Sing m -> IsTrue (m :<= n) -> ((n :- m) :+ m) :~: n Source #
type family FlipOrdering (a :: Ordering) :: Ordering where ... Source #
coerceLeqL :: forall n m l. IsPeano nat => (n :~: m) -> Sing l -> IsTrue (n :<= l) -> IsTrue (m :<= l) Source #
coerceLeqR :: forall n m l. IsPeano nat => Sing l -> (n :~: m) -> IsTrue (l :<= n) -> IsTrue (l :<= m) Source #
type (:-.) n m = Subt n m (m :<= n) infixl 6 Source #
Natural subtraction, truncated to zero if m > n.
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 #