chalmers-lava2000-1.6.1: Hardware description EDSL
Safe HaskellNone
LanguageHaskell98

Lava.Property

Documentation

data Gen a Source #

Instances

Instances details
Monad Gen Source # 
Instance details

Defined in Lava.Property

Methods

(>>=) :: Gen a -> (a -> Gen b) -> Gen b

(>>) :: Gen a -> Gen b -> Gen b

return :: a -> Gen a

Functor Gen Source # 
Instance details

Defined in Lava.Property

Methods

fmap :: (a -> b) -> Gen a -> Gen b

(<$) :: a -> Gen b -> Gen a

Applicative Gen Source # 
Instance details

Defined in Lava.Property

Methods

pure :: a -> Gen a

(<*>) :: Gen (a -> b) -> Gen a -> Gen b

liftA2 :: (a -> b -> c) -> Gen a -> Gen b -> Gen c

(*>) :: Gen a -> Gen b -> Gen b

(<*) :: Gen a -> Gen b -> Gen a

Checkable a => Checkable (Gen a) Source # 
Instance details

Defined in Lava.Property

Methods

property :: Gen a -> Property Source #

generate :: Gen a -> IO a Source #

class ChoiceWithSig a Source #

Minimal complete definition

ifThenElseWithSig

Instances

Instances details
ChoiceWithSig Bool Source # 
Instance details

Defined in Lava.Property

Methods

ifThenElseWithSig :: Choice b => Signal Bool -> (b, b) -> b

class Fresh a where Source #

Methods

fresh :: Gen a Source #

Instances

Instances details
Fresh () Source # 
Instance details

Defined in Lava.Property

Methods

fresh :: Gen () Source #

ConstructiveSig a => Fresh (Signal a) Source # 
Instance details

Defined in Lava.Property

Methods

fresh :: Gen (Signal a) Source #

(CoFresh a, Choice b, Fresh b) => Fresh (a -> b) Source # 
Instance details

Defined in Lava.Property

Methods

fresh :: Gen (a -> b) Source #

(Fresh a, Fresh b) => Fresh (a, b) Source # 
Instance details

Defined in Lava.Property

Methods

fresh :: Gen (a, b) Source #

(Fresh a, Fresh b, Fresh c) => Fresh (a, b, c) Source # 
Instance details

Defined in Lava.Property

Methods

fresh :: Gen (a, b, c) Source #

(Fresh a, Fresh b, Fresh c, Fresh d) => Fresh (a, b, c, d) Source # 
Instance details

Defined in Lava.Property

Methods

fresh :: Gen (a, b, c, d) Source #

(Fresh a, Fresh b, Fresh c, Fresh d, Fresh e) => Fresh (a, b, c, d, e) Source # 
Instance details

Defined in Lava.Property

Methods

fresh :: Gen (a, b, c, d, e) Source #

(Fresh a, Fresh b, Fresh c, Fresh d, Fresh e, Fresh f) => Fresh (a, b, c, d, e, f) Source # 
Instance details

Defined in Lava.Property

Methods

fresh :: Gen (a, b, c, d, e, f) Source #

(Fresh a, Fresh b, Fresh c, Fresh d, Fresh e, Fresh f, Fresh g) => Fresh (a, b, c, d, e, f, g) Source # 
Instance details

Defined in Lava.Property

Methods

fresh :: Gen (a, b, c, d, e, f, g) Source #

class CoFresh a where Source #

Methods

cofresh :: (Choice b, Fresh b) => Gen b -> Gen (a -> b) Source #

Instances

Instances details
CoFresh () Source # 
Instance details

Defined in Lava.Property

Methods

cofresh :: (Choice b, Fresh b) => Gen b -> Gen (() -> b) Source #

CoFresh a => CoFresh [a] Source # 
Instance details

Defined in Lava.Property

Methods

cofresh :: (Choice b, Fresh b) => Gen b -> Gen ([a] -> b) Source #

ChoiceWithSig a => CoFresh (Signal a) Source # 
Instance details

Defined in Lava.Property

Methods

cofresh :: (Choice b, Fresh b) => Gen b -> Gen (Signal a -> b) Source #

(Finite a, CoFresh b) => CoFresh (a -> b) Source # 
Instance details

Defined in Lava.Property

Methods

cofresh :: (Choice b0, Fresh b0) => Gen b0 -> Gen ((a -> b) -> b0) Source #

(CoFresh a, CoFresh b) => CoFresh (a, b) Source # 
Instance details

Defined in Lava.Property

Methods

cofresh :: (Choice b0, Fresh b0) => Gen b0 -> Gen ((a, b) -> b0) Source #

(CoFresh a, CoFresh b, CoFresh c) => CoFresh (a, b, c) Source # 
Instance details

Defined in Lava.Property

Methods

cofresh :: (Choice b0, Fresh b0) => Gen b0 -> Gen ((a, b, c) -> b0) Source #

(CoFresh a, CoFresh b, CoFresh c, CoFresh d) => CoFresh (a, b, c, d) Source # 
Instance details

Defined in Lava.Property

Methods

cofresh :: (Choice b0, Fresh b0) => Gen b0 -> Gen ((a, b, c, d) -> b0) Source #

(CoFresh a, CoFresh b, CoFresh c, CoFresh d, CoFresh e) => CoFresh (a, b, c, d, e) Source # 
Instance details

Defined in Lava.Property

Methods

cofresh :: (Choice b0, Fresh b0) => Gen b0 -> Gen ((a, b, c, d, e) -> b0) Source #

(CoFresh a, CoFresh b, CoFresh c, CoFresh d, CoFresh e, CoFresh f) => CoFresh (a, b, c, d, e, f) Source # 
Instance details

Defined in Lava.Property

Methods

cofresh :: (Choice b0, Fresh b0) => Gen b0 -> Gen ((a, b, c, d, e, f) -> b0) Source #

(CoFresh a, CoFresh b, CoFresh c, CoFresh d, CoFresh e, CoFresh f, CoFresh g) => CoFresh (a, b, c, d, e, f, g) Source # 
Instance details

Defined in Lava.Property

Methods

cofresh :: (Choice b0, Fresh b0) => Gen b0 -> Gen ((a, b, c, d, e, f, g) -> b0) Source #

double :: Gen a -> Gen (a, a) Source #

triple :: Gen a -> Gen (a, a, a) Source #

list :: Fresh a => Int -> Gen [a] Source #

listOf :: Int -> Gen a -> Gen [a] Source #

results :: Int -> Gen (a -> b) -> Gen (a -> [b]) Source #

sequential :: (CoFresh a, Fresh b, Choice b) => Int -> Gen (a -> b) Source #

forAll :: (ShowModel a, Checkable b) => Gen a -> (a -> b) -> Property Source #

newtype Property Source #

Constructors

P (Gen ([Signal Bool], Model -> [[String]])) 

Instances

Instances details
Checkable Property Source # 
Instance details

Defined in Lava.Property

class Checkable a where Source #

Methods

property :: a -> Property Source #

Instances

Instances details
Checkable Bool Source # 
Instance details

Defined in Lava.Property

Methods

property :: Bool -> Property Source #

Checkable Property Source # 
Instance details

Defined in Lava.Property

Checkable a => Checkable [a] Source # 
Instance details

Defined in Lava.Property

Methods

property :: [a] -> Property Source #

Checkable a => Checkable (Signal a) Source # 
Instance details

Defined in Lava.Property

Checkable a => Checkable (Gen a) Source # 
Instance details

Defined in Lava.Property

Methods

property :: Gen a -> Property Source #

(Fresh a, ShowModel a, Checkable b) => Checkable (a -> b) Source # 
Instance details

Defined in Lava.Property

Methods

property :: (a -> b) -> Property Source #

class ShowModel a where Source #

Methods

showModel :: Model -> a -> [String] Source #

Instances

Instances details
ShowModel () Source # 
Instance details

Defined in Lava.Property

Methods

showModel :: Model -> () -> [String] Source #

ShowModel a => ShowModel [a] Source # 
Instance details

Defined in Lava.Property

Methods

showModel :: Model -> [a] -> [String] Source #

ShowModel (Signal a) Source # 
Instance details

Defined in Lava.Property

Methods

showModel :: Model -> Signal a -> [String] Source #

ShowModel (a -> b) Source # 
Instance details

Defined in Lava.Property

Methods

showModel :: Model -> (a -> b) -> [String] Source #

(ShowModel a, ShowModel b) => ShowModel (a, b) Source # 
Instance details

Defined in Lava.Property

Methods

showModel :: Model -> (a, b) -> [String] Source #

(ShowModel a, ShowModel b, ShowModel c) => ShowModel (a, b, c) Source # 
Instance details

Defined in Lava.Property

Methods

showModel :: Model -> (a, b, c) -> [String] Source #

(ShowModel a, ShowModel b, ShowModel c, ShowModel d) => ShowModel (a, b, c, d) Source # 
Instance details

Defined in Lava.Property

Methods

showModel :: Model -> (a, b, c, d) -> [String] Source #

(ShowModel a, ShowModel b, ShowModel c, ShowModel d, ShowModel e) => ShowModel (a, b, c, d, e) Source # 
Instance details

Defined in Lava.Property

Methods

showModel :: Model -> (a, b, c, d, e) -> [String] Source #

(ShowModel a, ShowModel b, ShowModel c, ShowModel d, ShowModel e, ShowModel f) => ShowModel (a, b, c, d, e, f) Source # 
Instance details

Defined in Lava.Property

Methods

showModel :: Model -> (a, b, c, d, e, f) -> [String] Source #

(ShowModel a, ShowModel b, ShowModel c, ShowModel d, ShowModel e, ShowModel f, ShowModel g) => ShowModel (a, b, c, d, e, f, g) Source # 
Instance details

Defined in Lava.Property

Methods

showModel :: Model -> (a, b, c, d, e, f, g) -> [String] Source #

type Model = [(String, [String])] Source #

properties :: Checkable a => a -> IO ([Signal Bool], Model -> [[String]]) Source #