Safe Haskell | None |
---|---|
Language | Haskell2010 |
Data.Type.Natural.Lemma.Order
Synopsis
- data DiffNat (n :: Natural) (m :: Natural) where
- data LeqView (n :: Natural) (m :: Nat) where
- type (<) (n :: Nat) (m :: Nat) = n < m
- type (<?) (n :: Nat) (m :: Nat) = n <? m
- (%<?) :: forall (n :: Nat) (m :: Nat). SNat n -> SNat m -> SBool (n <? m)
- type (>) (n :: Nat) (m :: Nat) = n > m
- type (>?) (n :: Nat) (m :: Nat) = n >? m
- (%>?) :: forall (n :: Nat) (m :: Nat). SNat n -> SNat m -> SBool (n >? m)
- type (>=) (n :: Nat) (m :: Nat) = n >= m
- type (>=?) (n :: Nat) (m :: Nat) = n >=? m
- (%>=?) :: forall (n :: Nat) (m :: Nat). SNat n -> SNat m -> SBool (n >=? m)
- type family FlipOrdering (ord :: Ordering) :: Ordering where ...
- type Min (m :: Nat) (n :: Nat) = Min m n
- sMin :: forall (n :: Nat) (m :: Nat). SNat n -> SNat m -> SNat (Min n m)
- type Max (m :: Nat) (n :: Nat) = Max m n
- sMax :: forall (n :: Nat) (m :: Nat). SNat n -> SNat m -> SNat (Max n m)
- type family OrdCond (o :: Ordering) (lt :: k) (eq :: k) (gt :: k) :: k where ...
- sOrdCond :: forall {k} (o :: Ordering) f (lt :: k) (eq :: k) (gt :: k). SOrdering o -> f lt -> f eq -> f gt -> f (OrdCond o lt eq gt)
- ordCondDistrib :: forall {k1} {k2} proxy (f :: k1 -> k2) (o :: Ordering) p (l :: k1) p' (e :: k1) p'' (g :: k1). proxy f -> SOrdering o -> p l -> p' e -> p'' g -> OrdCond o (f l) (f e) (f g) :~: f (OrdCond o l e g)
- leqOrdCond :: forall (n :: Nat) (m :: Nat). SNat n -> SNat m -> (n <=? m) :~: OrdCond (CmpNat n m) 'True 'True 'False
- sFlipOrdering :: forall (ord :: Ordering). SOrdering ord -> SOrdering (FlipOrdering ord)
- coerceLeqL :: forall (n :: Nat) (m :: Nat) (l :: Nat). (n :~: m) -> SNat l -> IsTrue (n <=? l) -> IsTrue (m <=? l)
- coerceLeqR :: forall (n :: Nat) (m :: Nat) (l :: Nat). SNat l -> (n :~: m) -> IsTrue (l <=? n) -> IsTrue (l <=? m)
- sLeqCongL :: forall (a :: Nat) (b :: Nat) (c :: Nat). (a :~: b) -> SNat c -> (a <= c) :~: (b <= c)
- sLeqCongR :: forall (a :: Nat) (b :: Nat) (c :: Nat). SNat a -> (b :~: c) -> (a <= b) :~: (a <= c)
- sLeqCong :: forall {t} (a :: t) (b :: t) (c :: t) (d :: t). (a :~: b) -> (c :~: d) -> (a <= c) :~: (b <= d)
- succDiffNat :: forall (n :: Nat) (m :: Nat). SNat n -> SNat m -> DiffNat n m -> DiffNat (Succ n) (Succ m)
- compareCongR :: forall (a :: Nat) (b :: Natural) (c :: Natural). SNat a -> (b :~: c) -> CmpNat a b :~: CmpNat a c
- leqToCmp :: forall (a :: Nat) (b :: Nat). SNat a -> SNat b -> IsTrue (a <=? b) -> Either (a :~: b) (CmpNat a b :~: 'LT)
- eqlCmpEQ :: forall (a :: Nat) (b :: Nat). SNat a -> SNat b -> (a :~: b) -> CmpNat a b :~: 'EQ
- eqToRefl :: forall (a :: Nat) (b :: Nat). SNat a -> SNat b -> (CmpNat a b :~: 'EQ) -> a :~: b
- flipCmpNat :: forall (a :: Nat) (b :: Nat). SNat a -> SNat b -> FlipOrdering (CmpNat a b) :~: CmpNat b a
- ltToNeq :: forall (a :: Nat) (b :: Nat). SNat a -> SNat b -> (CmpNat a b :~: 'LT) -> (a :~: b) -> Void
- leqNeqToLT :: forall (a :: Nat) (b :: Nat). SNat a -> SNat b -> IsTrue (a <=? b) -> ((a :~: b) -> Void) -> CmpNat a b :~: 'LT
- succLeqToLT :: forall (a :: Nat) (b :: Nat). SNat a -> SNat b -> IsTrue (S a <=? b) -> CmpNat a b :~: 'LT
- ltToLeq :: forall (a :: Nat) (b :: Nat). SNat a -> SNat b -> (CmpNat a b :~: 'LT) -> IsTrue (a <=? b)
- gtToLeq :: forall (a :: Nat) (b :: Nat). SNat a -> SNat b -> (CmpNat a b :~: 'GT) -> IsTrue (b <=? a)
- congFlipOrdering :: forall (a :: Ordering) (b :: Ordering). (a :~: b) -> FlipOrdering a :~: FlipOrdering b
- ltToSuccLeq :: forall (a :: Nat) (b :: Nat). SNat a -> SNat b -> (CmpNat a b :~: 'LT) -> IsTrue (Succ a <=? b)
- cmpZero :: forall (a :: Nat). SNat a -> CmpNat 0 (Succ a) :~: 'LT
- cmpSuccZeroGT :: forall (a :: Nat). SNat a -> CmpNat (Succ a) 0 :~: 'GT
- leqToGT :: forall (a :: Nat) (b :: Nat). SNat a -> SNat b -> IsTrue (Succ b <=? a) -> CmpNat a b :~: 'GT
- cmpZero' :: forall (a :: Nat). SNat a -> Either (CmpNat 0 a :~: 'EQ) (CmpNat 0 a :~: 'LT)
- zeroNoLT :: forall (a :: Nat). SNat a -> (CmpNat a 0 :~: 'LT) -> Void
- ltRightPredSucc :: forall (a :: Nat) (b :: Nat). SNat a -> SNat b -> (CmpNat a b :~: 'LT) -> b :~: Succ (Pred b)
- cmpSucc :: forall (n :: Nat) (m :: Nat). SNat n -> SNat m -> CmpNat n m :~: CmpNat (Succ n) (Succ m)
- ltSucc :: forall (a :: Nat). SNat a -> CmpNat a (Succ a) :~: 'LT
- cmpSuccStepR :: forall (n :: Nat) (m :: Nat). SNat n -> SNat m -> (CmpNat n m :~: 'LT) -> CmpNat n (Succ m) :~: 'LT
- ltSuccLToLT :: forall (n :: Nat) (m :: Nat). SNat n -> SNat m -> (CmpNat (Succ n) m :~: 'LT) -> CmpNat n m :~: 'LT
- leqToLT :: forall (a :: Nat) (b :: Nat). SNat a -> SNat b -> IsTrue (Succ a <=? b) -> CmpNat a b :~: 'LT
- leqZero :: forall (n :: Nat). SNat n -> IsTrue (0 <=? n)
- leqSucc :: forall (n :: Nat) (m :: Nat). SNat n -> SNat m -> IsTrue (n <=? m) -> IsTrue (Succ n <=? Succ m)
- fromLeqView :: forall (n :: Natural) (m :: Nat). LeqView n m -> IsTrue (n <=? m)
- leqViewRefl :: forall (n :: Nat). SNat n -> LeqView n n
- viewLeq :: forall (n :: Nat) (m :: Nat). SNat n -> SNat m -> IsTrue (n <=? m) -> LeqView n m
- leqWitness :: forall (n :: Nat) (m :: Nat). SNat n -> SNat m -> IsTrue (n <=? m) -> DiffNat n m
- leqStep :: forall (n :: Nat) (m :: Nat) (l :: Nat). SNat n -> SNat m -> SNat l -> ((n + l) :~: m) -> IsTrue (n <=? m)
- leqNeqToSuccLeq :: forall (n :: Nat) (m :: Nat). SNat n -> SNat m -> IsTrue (n <=? m) -> ((n :~: m) -> Void) -> IsTrue (Succ n <=? m)
- leqRefl :: forall (n :: Nat). SNat n -> IsTrue (n <=? n)
- leqSuccStepR :: forall (n :: Nat) (m :: Nat). SNat n -> SNat m -> IsTrue (n <=? m) -> IsTrue (n <=? Succ m)
- leqSuccStepL :: forall (n :: Nat) (m :: Nat). SNat n -> SNat m -> IsTrue (Succ n <=? m) -> IsTrue (n <=? m)
- leqReflexive :: forall (n :: Nat) (m :: Nat). SNat n -> SNat m -> (n :~: m) -> IsTrue (n <=? m)
- leqTrans :: forall (n :: Nat) (m :: Nat) (l :: Nat). SNat n -> SNat m -> SNat l -> IsTrue (n <=? m) -> IsTrue (m <=? l) -> IsTrue (n <=? l)
- leqAntisymm :: forall (n :: Nat) (m :: Nat). SNat n -> SNat m -> IsTrue (n <=? m) -> IsTrue (m <=? n) -> n :~: m
- plusMonotone :: forall (n :: Nat) (m :: Nat) (l :: Nat) (k :: Nat). SNat n -> SNat m -> SNat l -> SNat k -> IsTrue (n <=? m) -> IsTrue (l <=? k) -> IsTrue ((n + l) <=? (m + k))
- leqZeroElim :: forall (n :: Nat). SNat n -> IsTrue (n <=? 0) -> n :~: 0
- plusMonotoneL :: forall (n :: Nat) (m :: Nat) (l :: Nat). SNat n -> SNat m -> SNat l -> IsTrue (n <=? m) -> IsTrue ((n + l) <=? (m + l))
- plusMonotoneR :: forall (n :: Nat) (m :: Nat) (l :: Nat). SNat n -> SNat m -> SNat l -> IsTrue (m <=? l) -> IsTrue ((n + m) <=? (n + l))
- plusLeqL :: forall (n :: Nat) (m :: Nat). SNat n -> SNat m -> IsTrue (n <=? (n + m))
- plusLeqR :: forall (n :: Nat) (m :: Nat). SNat n -> SNat m -> IsTrue (m <=? (n + m))
- plusCancelLeqR :: forall (n :: Nat) (m :: Nat) (l :: Nat). SNat n -> SNat m -> SNat l -> IsTrue ((n + l) <=? (m + l)) -> IsTrue (n <=? m)
- plusCancelLeqL :: forall (n :: Nat) (m :: Nat) (l :: Nat). SNat n -> SNat m -> SNat l -> IsTrue ((n + m) <=? (n + l)) -> IsTrue (m <=? l)
- succLeqZeroAbsurd :: forall (n :: Nat). SNat n -> IsTrue (S n <=? 0) -> Void
- succLeqZeroAbsurd' :: forall (n :: Nat). SNat n -> (S n <=? 0) :~: 'False
- succLeqAbsurd :: forall (n :: Nat). SNat n -> IsTrue (S n <=? n) -> Void
- succLeqAbsurd' :: forall (n :: Nat). SNat n -> (S n <=? n) :~: 'False
- notLeqToLeq :: forall (n :: Nat) (m :: Nat). (n <=? m) ~ 'False => SNat n -> SNat m -> IsTrue (m <=? n)
- leqSucc' :: forall (n :: Nat) (m :: Nat). SNat n -> SNat m -> (n <=? m) :~: (Succ n <=? Succ m)
- leqToMin :: forall (n :: Nat) (m :: Nat). SNat n -> SNat m -> IsTrue (n <=? m) -> Min n m :~: n
- geqToMin :: forall (n :: Nat) (m :: Nat). SNat n -> SNat m -> IsTrue (m <=? n) -> Min n m :~: m
- minComm :: forall (n :: Nat) (m :: Nat). SNat n -> SNat m -> Min n m :~: Min m n
- minLeqL :: forall (n :: Nat) (m :: Nat). SNat n -> SNat m -> IsTrue (Min n m <=? n)
- minLeqR :: forall (n :: Nat) (m :: Nat). SNat n -> SNat m -> IsTrue (Min n m <=? m)
- minLargest :: forall (l :: Nat) (n :: Nat) (m :: Nat). SNat l -> SNat n -> SNat m -> IsTrue (l <=? n) -> IsTrue (l <=? m) -> IsTrue (l <=? Min n m)
- leqToMax :: forall (n :: Nat) (m :: Nat). SNat n -> SNat m -> IsTrue (n <=? m) -> Max n m :~: m
- geqToMax :: forall (n :: Nat) (m :: Nat). SNat n -> SNat m -> IsTrue (m <=? n) -> Max n m :~: n
- maxComm :: forall (n :: Nat) (m :: Nat). SNat n -> SNat m -> Max n m :~: Max m n
- maxLeqR :: forall (n :: Nat) (m :: Nat). SNat n -> SNat m -> IsTrue (m <=? Max n m)
- maxLeqL :: forall (n :: Nat) (m :: Nat). SNat n -> SNat m -> IsTrue (n <=? Max n m)
- maxLeast :: forall (l :: Nat) (n :: Nat) (m :: Nat). SNat l -> SNat n -> SNat m -> IsTrue (n <=? l) -> IsTrue (m <=? l) -> IsTrue (Max n m <=? l)
- lneqSuccLeq :: forall (n :: Nat) (m :: Nat). SNat n -> SNat m -> (n <? m) :~: (Succ n <=? m)
- lneqReversed :: forall (n :: Nat) (m :: Nat). SNat n -> SNat m -> (n <? m) :~: (m >? n)
- lneqToLT :: forall (n :: Nat) (m :: Nat). SNat n -> SNat m -> IsTrue (n <? m) -> CmpNat n m :~: 'LT
- ltToLneq :: forall (n :: Nat) (m :: Nat). SNat n -> SNat m -> (CmpNat n m :~: 'LT) -> IsTrue (n <? m)
- lneqZero :: forall (a :: Nat). SNat a -> IsTrue (0 <? Succ a)
- lneqSucc :: forall (n :: Nat). SNat n -> IsTrue (n <? Succ n)
- succLneqSucc :: forall (n :: Nat) (m :: Nat). SNat n -> SNat m -> (n <? m) :~: (Succ n <? Succ m)
- lneqRightPredSucc :: forall (n :: Nat) (m :: Nat). SNat n -> SNat m -> IsTrue (n <? m) -> m :~: Succ (Pred m)
- lneqSuccStepL :: forall (n :: Nat) (m :: Nat). SNat n -> SNat m -> IsTrue (Succ n <? m) -> IsTrue (n <? m)
- lneqSuccStepR :: forall (n :: Nat) (m :: Nat). SNat n -> SNat m -> IsTrue (n <? m) -> IsTrue (n <? Succ m)
- plusStrictMonotone :: forall (n :: Nat) (m :: Nat) (l :: Nat) (k :: Nat). SNat n -> SNat m -> SNat l -> SNat k -> IsTrue (n <? m) -> IsTrue (l <? k) -> IsTrue ((n + l) <? (m + k))
- minCase :: forall (n :: Nat) (m :: Nat). SNat n -> SNat m -> Either (Min n m :~: n) (Min n m :~: m)
- maxCase :: forall (n :: Nat) (m :: Nat). SNat n -> SNat m -> Either (Max n m :~: m) (Max n m :~: n)
- maxZeroL :: forall (n :: Nat). SNat n -> Max 0 n :~: n
- maxZeroR :: forall (n :: Nat). SNat n -> Max n 0 :~: n
- minZeroL :: forall (n :: Nat). SNat n -> Min 0 n :~: 0
- minZeroR :: forall (n :: Nat). SNat n -> Min n 0 :~: 0
- minusSucc :: forall (n :: Nat) (m :: Nat). SNat n -> SNat m -> IsTrue (m <=? n) -> (Succ n - m) :~: Succ (n - m)
- lneqZeroAbsurd :: forall (n :: Nat). SNat n -> IsTrue (n <? 0) -> Void
- minusPlus :: forall (n :: Nat) (m :: Nat). SNat n -> SNat m -> IsTrue (m <=? n) -> ((n - m) + m) :~: n
- minPlusTruncMinus :: forall (n :: Nat) (m :: Nat). SNat n -> SNat m -> (Min n m + (n -. m)) :~: n
- truncMinusLeq :: forall (n :: Nat) (m :: Nat). SNat n -> SNat m -> IsTrue ((n -. m) <=? n)
- type (-.) (n :: Natural) (m :: Natural) = Subt n m (m <=? n)
- (%-.) :: forall (n :: Nat) (m :: Nat). SNat n -> SNat m -> SNat (n -. m)
- type LeqWitness (n :: k) (m :: k) = IsTrue (n <=? m)
- data (a :: Natural) :<: (b :: Natural)
- data Leq (n :: Natural) (m :: Nat) where
- leqRhs :: forall (n :: Natural) (m :: Nat). Leq n m -> SNat m
- leqLhs :: forall (n :: Natural) (m :: Nat). Leq n m -> SNat n
- propToBoolLeq :: forall (n :: Natural) (m :: Nat). Leq n m -> LeqWitness n m
- boolToPropLeq :: forall (n :: Nat) (m :: Nat). n <= m => SNat n -> SNat m -> Leq n m
- propToBoolLt :: forall (n :: Natural) (m :: Natural). (n :<: m) -> IsTrue (n <? m)
- boolToPropLt :: forall (n :: Nat) (m :: Nat). n < m => SNat n -> SNat m -> n :<: m
Documentation
type family FlipOrdering (ord :: Ordering) :: Ordering where ... Source #
Equations
FlipOrdering 'LT = 'GT | |
FlipOrdering 'GT = 'LT | |
FlipOrdering 'EQ = 'EQ |
type family OrdCond (o :: Ordering) (lt :: k) (eq :: k) (gt :: k) :: k where ... #
A case statement on Ordering
.
OrdCond c l e g
is l
when c ~ LT
, e
when c ~ EQ
, and g
when
c ~ GT
.
Since: base-4.16.0.0
sOrdCond :: forall {k} (o :: Ordering) f (lt :: k) (eq :: k) (gt :: k). SOrdering o -> f lt -> f eq -> f gt -> f (OrdCond o lt eq gt) Source #
Lemmas
ordCondDistrib :: forall {k1} {k2} proxy (f :: k1 -> k2) (o :: Ordering) p (l :: k1) p' (e :: k1) p'' (g :: k1). proxy f -> SOrdering o -> p l -> p' e -> p'' g -> OrdCond o (f l) (f e) (f g) :~: f (OrdCond o l e g) Source #
leqOrdCond :: forall (n :: Nat) (m :: Nat). SNat n -> SNat m -> (n <=? m) :~: OrdCond (CmpNat n m) 'True 'True 'False Source #
sFlipOrdering :: forall (ord :: Ordering). SOrdering ord -> SOrdering (FlipOrdering ord) Source #
coerceLeqL :: forall (n :: Nat) (m :: Nat) (l :: Nat). (n :~: m) -> SNat l -> IsTrue (n <=? l) -> IsTrue (m <=? l) Source #
Since 1.0.0.0 (type changed)
coerceLeqR :: forall (n :: Nat) (m :: Nat) (l :: Nat). SNat l -> (n :~: m) -> IsTrue (l <=? n) -> IsTrue (l <=? m) Source #
Since 1.0.0.0 (type changed)
sLeqCongL :: forall (a :: Nat) (b :: Nat) (c :: Nat). (a :~: b) -> SNat c -> (a <= c) :~: (b <= c) Source #
sLeqCongR :: forall (a :: Nat) (b :: Nat) (c :: Nat). SNat a -> (b :~: c) -> (a <= b) :~: (a <= c) Source #
sLeqCong :: forall {t} (a :: t) (b :: t) (c :: t) (d :: t). (a :~: b) -> (c :~: d) -> (a <= c) :~: (b <= d) Source #
succDiffNat :: forall (n :: Nat) (m :: Nat). SNat n -> SNat m -> DiffNat n m -> DiffNat (Succ n) (Succ m) Source #
compareCongR :: forall (a :: Nat) (b :: Natural) (c :: Natural). SNat a -> (b :~: c) -> CmpNat a b :~: CmpNat a c Source #
leqToCmp :: forall (a :: Nat) (b :: Nat). SNat a -> SNat b -> IsTrue (a <=? b) -> Either (a :~: b) (CmpNat a b :~: 'LT) Source #
eqlCmpEQ :: forall (a :: Nat) (b :: Nat). SNat a -> SNat b -> (a :~: b) -> CmpNat a b :~: 'EQ Source #
eqToRefl :: forall (a :: Nat) (b :: Nat). SNat a -> SNat b -> (CmpNat a b :~: 'EQ) -> a :~: b Source #
flipCmpNat :: forall (a :: Nat) (b :: Nat). SNat a -> SNat b -> FlipOrdering (CmpNat a b) :~: CmpNat b a Source #
ltToNeq :: forall (a :: Nat) (b :: Nat). SNat a -> SNat b -> (CmpNat a b :~: 'LT) -> (a :~: b) -> Void Source #
leqNeqToLT :: forall (a :: Nat) (b :: Nat). SNat a -> SNat b -> IsTrue (a <=? b) -> ((a :~: b) -> Void) -> CmpNat a b :~: 'LT Source #
succLeqToLT :: forall (a :: Nat) (b :: Nat). SNat a -> SNat b -> IsTrue (S a <=? b) -> CmpNat a b :~: 'LT Source #
ltToLeq :: forall (a :: Nat) (b :: Nat). SNat a -> SNat b -> (CmpNat a b :~: 'LT) -> IsTrue (a <=? b) Source #
gtToLeq :: forall (a :: Nat) (b :: Nat). SNat a -> SNat b -> (CmpNat a b :~: 'GT) -> IsTrue (b <=? a) Source #
congFlipOrdering :: forall (a :: Ordering) (b :: Ordering). (a :~: b) -> FlipOrdering a :~: FlipOrdering b Source #
ltToSuccLeq :: forall (a :: Nat) (b :: Nat). SNat a -> SNat b -> (CmpNat a b :~: 'LT) -> IsTrue (Succ a <=? b) Source #
leqToGT :: forall (a :: Nat) (b :: Nat). SNat a -> SNat b -> IsTrue (Succ b <=? a) -> CmpNat a b :~: 'GT Source #
ltRightPredSucc :: forall (a :: Nat) (b :: Nat). SNat a -> SNat b -> (CmpNat a b :~: 'LT) -> b :~: Succ (Pred b) Source #
cmpSucc :: forall (n :: Nat) (m :: Nat). SNat n -> SNat m -> CmpNat n m :~: CmpNat (Succ n) (Succ m) Source #
cmpSuccStepR :: forall (n :: Nat) (m :: Nat). SNat n -> SNat m -> (CmpNat n m :~: 'LT) -> CmpNat n (Succ m) :~: 'LT Source #
ltSuccLToLT :: forall (n :: Nat) (m :: Nat). SNat n -> SNat m -> (CmpNat (Succ n) m :~: 'LT) -> CmpNat n m :~: 'LT Source #
leqToLT :: forall (a :: Nat) (b :: Nat). SNat a -> SNat b -> IsTrue (Succ a <=? b) -> CmpNat a b :~: 'LT Source #
leqSucc :: forall (n :: Nat) (m :: Nat). SNat n -> SNat m -> IsTrue (n <=? m) -> IsTrue (Succ n <=? Succ m) Source #
viewLeq :: forall (n :: Nat) (m :: Nat). SNat n -> SNat m -> IsTrue (n <=? m) -> LeqView n m Source #
leqWitness :: forall (n :: Nat) (m :: Nat). SNat n -> SNat m -> IsTrue (n <=? m) -> DiffNat n m Source #
leqStep :: forall (n :: Nat) (m :: Nat) (l :: Nat). SNat n -> SNat m -> SNat l -> ((n + l) :~: m) -> IsTrue (n <=? m) Source #
leqNeqToSuccLeq :: forall (n :: Nat) (m :: Nat). SNat n -> SNat m -> IsTrue (n <=? m) -> ((n :~: m) -> Void) -> IsTrue (Succ n <=? m) Source #
leqSuccStepR :: forall (n :: Nat) (m :: Nat). SNat n -> SNat m -> IsTrue (n <=? m) -> IsTrue (n <=? Succ m) Source #
leqSuccStepL :: forall (n :: Nat) (m :: Nat). SNat n -> SNat m -> IsTrue (Succ n <=? m) -> IsTrue (n <=? m) Source #
leqReflexive :: forall (n :: Nat) (m :: Nat). SNat n -> SNat m -> (n :~: m) -> IsTrue (n <=? m) Source #
leqTrans :: forall (n :: Nat) (m :: Nat) (l :: Nat). SNat n -> SNat m -> SNat l -> IsTrue (n <=? m) -> IsTrue (m <=? l) -> IsTrue (n <=? l) Source #
leqAntisymm :: forall (n :: Nat) (m :: Nat). SNat n -> SNat m -> IsTrue (n <=? m) -> IsTrue (m <=? n) -> n :~: m Source #
plusMonotone :: forall (n :: Nat) (m :: Nat) (l :: Nat) (k :: Nat). SNat n -> SNat m -> SNat l -> SNat k -> IsTrue (n <=? m) -> IsTrue (l <=? k) -> IsTrue ((n + l) <=? (m + k)) Source #
plusMonotoneL :: forall (n :: Nat) (m :: Nat) (l :: Nat). SNat n -> SNat m -> SNat l -> IsTrue (n <=? m) -> IsTrue ((n + l) <=? (m + l)) Source #
plusMonotoneR :: forall (n :: Nat) (m :: Nat) (l :: Nat). SNat n -> SNat m -> SNat l -> IsTrue (m <=? l) -> IsTrue ((n + m) <=? (n + l)) Source #
plusCancelLeqR :: forall (n :: Nat) (m :: Nat) (l :: Nat). SNat n -> SNat m -> SNat l -> IsTrue ((n + l) <=? (m + l)) -> IsTrue (n <=? m) Source #
plusCancelLeqL :: forall (n :: Nat) (m :: Nat) (l :: Nat). SNat n -> SNat m -> SNat l -> IsTrue ((n + m) <=? (n + l)) -> IsTrue (m <=? l) Source #
notLeqToLeq :: forall (n :: Nat) (m :: Nat). (n <=? m) ~ 'False => SNat n -> SNat m -> IsTrue (m <=? n) Source #
leqSucc' :: forall (n :: Nat) (m :: Nat). SNat n -> SNat m -> (n <=? m) :~: (Succ n <=? Succ m) Source #
leqToMin :: forall (n :: Nat) (m :: Nat). SNat n -> SNat m -> IsTrue (n <=? m) -> Min n m :~: n Source #
geqToMin :: forall (n :: Nat) (m :: Nat). SNat n -> SNat m -> IsTrue (m <=? n) -> Min n m :~: m Source #
minLargest :: forall (l :: Nat) (n :: Nat) (m :: Nat). SNat l -> SNat n -> SNat m -> IsTrue (l <=? n) -> IsTrue (l <=? m) -> IsTrue (l <=? Min n m) Source #
leqToMax :: forall (n :: Nat) (m :: Nat). SNat n -> SNat m -> IsTrue (n <=? m) -> Max n m :~: m Source #
geqToMax :: forall (n :: Nat) (m :: Nat). SNat n -> SNat m -> IsTrue (m <=? n) -> Max n m :~: n Source #
maxLeast :: forall (l :: Nat) (n :: Nat) (m :: Nat). SNat l -> SNat n -> SNat m -> IsTrue (n <=? l) -> IsTrue (m <=? l) -> IsTrue (Max n m <=? l) Source #
lneqSuccLeq :: forall (n :: Nat) (m :: Nat). SNat n -> SNat m -> (n <? m) :~: (Succ n <=? m) Source #
Since 1.2.0.0 (type changed)
lneqReversed :: forall (n :: Nat) (m :: Nat). SNat n -> SNat m -> (n <? m) :~: (m >? n) Source #
Since 1.2.0.0 (type changed)
lneqToLT :: forall (n :: Nat) (m :: Nat). SNat n -> SNat m -> IsTrue (n <? m) -> CmpNat n m :~: 'LT Source #
ltToLneq :: forall (n :: Nat) (m :: Nat). SNat n -> SNat m -> (CmpNat n m :~: 'LT) -> IsTrue (n <? m) Source #
succLneqSucc :: forall (n :: Nat) (m :: Nat). SNat n -> SNat m -> (n <? m) :~: (Succ n <? Succ m) Source #
lneqRightPredSucc :: forall (n :: Nat) (m :: Nat). SNat n -> SNat m -> IsTrue (n <? m) -> m :~: Succ (Pred m) Source #
lneqSuccStepL :: forall (n :: Nat) (m :: Nat). SNat n -> SNat m -> IsTrue (Succ n <? m) -> IsTrue (n <? m) Source #
lneqSuccStepR :: forall (n :: Nat) (m :: Nat). SNat n -> SNat m -> IsTrue (n <? m) -> IsTrue (n <? Succ m) Source #
plusStrictMonotone :: forall (n :: Nat) (m :: Nat) (l :: Nat) (k :: Nat). SNat n -> SNat m -> SNat l -> SNat k -> IsTrue (n <? m) -> IsTrue (l <? k) -> IsTrue ((n + l) <? (m + k)) Source #
minCase :: forall (n :: Nat) (m :: Nat). SNat n -> SNat m -> Either (Min n m :~: n) (Min n m :~: m) Source #
maxCase :: forall (n :: Nat) (m :: Nat). SNat n -> SNat m -> Either (Max n m :~: m) (Max n m :~: n) Source #
minusSucc :: forall (n :: Nat) (m :: Nat). SNat n -> SNat m -> IsTrue (m <=? n) -> (Succ n - m) :~: Succ (n - m) Source #
minusPlus :: forall (n :: Nat) (m :: Nat). SNat n -> SNat m -> IsTrue (m <=? n) -> ((n - m) + m) :~: n Source #
minPlusTruncMinus :: forall (n :: Nat) (m :: Nat). SNat n -> SNat m -> (Min n m + (n -. m)) :~: n Source #
type (-.) (n :: Natural) (m :: Natural) = Subt n m (m <=? n) infixl 6 Source #
Natural subtraction, truncated to zero if m > n.
Various witnesses for orderings
type LeqWitness (n :: k) (m :: k) = IsTrue (n <=? m) Source #
conversions between lax orders
propToBoolLeq :: forall (n :: Natural) (m :: Nat). Leq n m -> LeqWitness n m Source #