numhask-test-0.1.0.0: Laws and tests for numhask

Safe HaskellNone
LanguageHaskell2010

NumHask.Laws

Synopsis

Documentation

data LawArity a #

unification of law equations

Constructors

Nonary Bool 
Unary (a -> Bool) 
Binary (a -> a -> Bool) 
Ternary (a -> a -> a -> Bool) 
Ornary (a -> a -> a -> a -> Bool) 
Failiary (a -> Property) 

data LawArity2 a b #

unification of law equations with 2 types

Constructors

Unary10 (a -> Bool) 
Unary01 (b -> Bool) 
Binary11 (a -> b -> Bool) 
Binary20 (a -> a -> Bool) 
Ternary21 (a -> a -> b -> Bool) 
Ternary12 (a -> b -> b -> Bool) 
Ternary30 (a -> a -> a -> Bool) 
Quad31 (a -> a -> a -> b -> Bool) 
Quad22 (a -> a -> b -> b -> Bool) 
Failiary2 (a -> Property) 

type Law a = (TestName, LawArity a) #

type Law2 a b = (TestName, LawArity2 a b) #

testLawOf :: (Arbitrary a, Show a) => [a] -> Law a -> TestTree #

testLawOf2 :: (Arbitrary a, Show a, Arbitrary b, Show b) => [(a, b)] -> Law2 a b -> TestTree #

additiveLaws :: (Eq a, Additive a) => [Law a] #

additive

additiveLaws_ :: (Epsilon a, Additive a) => [Law a] #

additive with approximate association equality

additiveLawsFail :: (Eq a, Additive a, Show a, Arbitrary a) => [Law a] #

additive laws with a failure on association

rationalLaws :: (Eq a, FromRatio a, ToRatio a) => [Law a] #

signedLaws :: (Eq a, Signed a) => [Law a] #

normedLaws :: forall a b. (Ord b, AdditiveUnital a, AdditiveUnital b, MultiplicativeUnital b, Normed a b) => [Law2 a b] #

metricIntegralLaws :: forall a b. (FromInteger b, Ord b, Signed b, Epsilon b, Metric a b, AdditiveGroup b) => [Law2 a b] #

metricIntegralBoundedLaws :: forall a b. (FromInteger b, Bounded b, Ord b, Signed b, Epsilon b, Metric a b) => [Law2 a b] #

metricRationalLaws :: forall a b. (FromRatio b, Ord b, Signed b, Epsilon b, Metric a b, Normed a b, Additive a, AdditiveGroup b) => [Law2 a b] #

upperBoundedFieldLaws :: forall a. (Eq a, UpperBoundedField a) => [Law a] #

lowerBoundedFieldLaws :: forall a. (Eq a, LowerBoundedField a) => [Law a] #

expFieldLaws :: forall a b. (FromInteger b, AdditiveUnital b, ExpField a, Normed a b, Epsilon a, Ord a, Ord b) => [Law2 a b] #

additiveBasisLaws :: (Epsilon (r a), AdditiveBasis r a) => [Law (r a)] #

additiveModuleLaws :: (Epsilon a, Epsilon (r a), AdditiveModule r a, Additive (r a)) => [Law2 (r a) a] #

expFieldContainerLaws :: (ExpField (r a), Foldable r, ExpField a, Epsilon a, Signed a, FromRatio a, Epsilon (r a), Ord a) => [Law (r a)] #

tensorProductLaws :: (Eq (r (r a)), Additive (r (r a)), TensorProduct (r a), Epsilon (r a), Additive (r a)) => [Law2 (r a) a] #

banachLaws :: (Foldable r, Epsilon (r a), Banach r a, Singleton r, Signed a, FromRatio a, Ord a) => [Law2 (r a) a] #

hilbertLaws :: (MultiplicativeModule r a, Epsilon a, Epsilon (r a), Hilbert r a, Additive (r a)) => [Law2 (r a) a] #

semiringLaws :: (Epsilon a, Semiring a) => [Law a] #

semiring

ringLaws :: (Epsilon a, Ring a) => [Law a] #

ring

starSemiringLaws :: (Epsilon a, StarSemiring a) => [Law a] #

starsemiring

involutiveRingLaws :: forall a. (Eq a, MultiplicativeUnital a, InvolutiveRing a) => [Law a] #

involutive ring