Module
Type.Data.Peano.Nat.Definition
- Package
- purescript-typelevel-peano
- Repository
- csicar/purescript-typelevel-peano
#Succ Source
data Succ :: Nat -> NatRepresents Successor of a Nat: (Succ a) ^= 1 + a
Instances
(IsNat a) => IsNat (Succ a)(SumNat a b c) => SumNat (Succ a) b (Succ c)ProductNat (Succ Z) a a1 * a = a
(ProductNat a b ab, SumNat ab b result) => ProductNat (Succ a) b result(1 + a) * b = b + a * b
ExponentiationNat a Z (Succ Z)(ExponentiationNat a b ab, ProductNat ab a result) => ExponentiationNat a (Succ b) result(CompareNat a b ord) => CompareNat (Succ a) (Succ b) ordIsZeroNat (Succ a) False
#ProductNat Source
class ProductNat (a :: Nat) (b :: Nat) (c :: Nat) | a b -> ca * b = c
Instances
ProductNat Z a Z0 * a = 0
ProductNat (Succ Z) a a1 * a = a
(ProductNat a b ab, SumNat ab b result) => ProductNat (Succ a) b result(1 + a) * b = b + a * b
#ExponentiationNat Source
class ExponentiationNat (a :: Nat) (b :: Nat) (c :: Nat) | a b -> cInstances
ExponentiationNat a Z (Succ Z)(ExponentiationNat a b ab, ProductNat ab a result) => ExponentiationNat a (Succ b) result
#powNat Source
powNat :: forall c b a. ExponentiationNat a b c => NProxy a -> NProxy b -> NProxy c> powNat d2 d3
8 -- : NProxy D8
a raised to the power of b a^b = c
#CompareNat Source
class CompareNat (a :: Nat) (b :: Nat) (ord :: Ordering) | a b -> ordInstances
CompareNat a a EQCompareNat Z a LTCompareNat a Z GT(CompareNat a b ord) => CompareNat (Succ a) (Succ b) ord
0 * a = 0