grisette-0.5.0.1: Symbolic evaluation as a library
Safe HaskellSafe-Inferred
LanguageHaskell2010

Grisette.Experimental

Synopsis

Experimental features

The experimental features are likely to be changed in the future, and they do not comply with the semantics versioning policy.

Use the APIs with caution.

Symbolic Generation with Errors Class

class Mergeable a => GenSymConstrained spec a where Source #

Class of types in which symbolic values can be generated with some specification.

See GenSym for more details. The difference of this class is that it allows constraints to be generated along with the generation of symbolic values.

Minimal complete definition

Nothing

Methods

freshConstrained :: (MonadFresh m, MonadError e m, MonadUnion m) => e -> spec -> m (UnionM a) Source #

Generates a symbolic value with the given specification.

Constraint violations will throw an error in the monadic environment.

>>> runFreshT (freshConstrained () (SOrdUpperBound (1 :: SymInteger) ())) "a" :: ExceptT () UnionM (UnionM SymInteger)
ExceptT <If (<= 1 a@0) (Left ()) (Right {a@0})>

default freshConstrained :: GenSymSimpleConstrained spec a => (MonadFresh m, MonadError e m, MonadUnion m) => e -> spec -> m (UnionM a) Source #

Instances

Instances details
(Mergeable a, GenSym spec a) => GenSymConstrained spec a Source # 
Instance details

Defined in Grisette.Experimental.GenSymConstrained

Methods

freshConstrained :: (MonadFresh m, MonadError e m, MonadUnion m) => e -> spec -> m (UnionM a) Source #

(GenSymConstrained () a, Mergeable a) => GenSymConstrained Integer [a] Source # 
Instance details

Defined in Grisette.Experimental.GenSymConstrained

Methods

freshConstrained :: (MonadFresh m, MonadError e m, MonadUnion m) => e -> Integer -> m (UnionM [a]) Source #

(GenSymConstrained aspec a, Mergeable a) => GenSymConstrained aspec (Maybe a) Source # 
Instance details

Defined in Grisette.Experimental.GenSymConstrained

Methods

freshConstrained :: (MonadFresh m, MonadError e m, MonadUnion m) => e -> aspec -> m (UnionM (Maybe a)) Source #

(GenSymConstrained () a, Mergeable a, GenSymConstrained () b, Mergeable b) => GenSymConstrained () (Either a b) Source # 
Instance details

Defined in Grisette.Experimental.GenSymConstrained

Methods

freshConstrained :: (MonadFresh m, MonadError e m, MonadUnion m) => e -> () -> m (UnionM (Either a b)) Source #

(GenSymConstrained spec (m (Maybe a)), Mergeable1 m, Mergeable a) => GenSymConstrained spec (MaybeT m a) Source # 
Instance details

Defined in Grisette.Experimental.GenSymConstrained

Methods

freshConstrained :: (MonadFresh m0, MonadError e m0, MonadUnion m0) => e -> spec -> m0 (UnionM (MaybeT m a)) Source #

(GenSymConstrained spec (m (Either a b)), Mergeable1 m, Mergeable a, Mergeable b) => GenSymConstrained spec (ExceptT a m b) Source # 
Instance details

Defined in Grisette.Experimental.GenSymConstrained

Methods

freshConstrained :: (MonadFresh m0, MonadError e m0, MonadUnion m0) => e -> spec -> m0 (UnionM (ExceptT a m b)) Source #

(GenSymConstrained spec a, Mergeable a) => GenSymConstrained (ListSpec spec) [a] Source # 
Instance details

Defined in Grisette.Experimental.GenSymConstrained

Methods

freshConstrained :: (MonadFresh m, MonadError e m, MonadUnion m) => e -> ListSpec spec -> m (UnionM [a]) Source #

(GenSymConstrained spec a, Mergeable a) => GenSymConstrained (SimpleListSpec spec) [a] Source # 
Instance details

Defined in Grisette.Experimental.GenSymConstrained

Methods

freshConstrained :: (MonadFresh m, MonadError e m, MonadUnion m) => e -> SimpleListSpec spec -> m (UnionM [a]) Source #

(GenSymConstrained aspec a, Mergeable a) => GenSymConstrained (Maybe aspec) (Maybe a) Source # 
Instance details

Defined in Grisette.Experimental.GenSymConstrained

Methods

freshConstrained :: (MonadFresh m, MonadError e m, MonadUnion m) => e -> Maybe aspec -> m (UnionM (Maybe a)) Source #

(GenSymConstrained a a, Mergeable a) => GenSymConstrained [a] [a] Source # 
Instance details

Defined in Grisette.Experimental.GenSymConstrained

Methods

freshConstrained :: (MonadFresh m, MonadError e m, MonadUnion m) => e -> [a] -> m (UnionM [a]) Source #

GenSymConstrained (SOrdBound Integer ()) Integer Source # 
Instance details

Defined in Grisette.Experimental.GenSymConstrained

(SOrd a, Mergeable a, GenSym spec a) => GenSymConstrained (SOrdBound a spec) a Source # 
Instance details

Defined in Grisette.Experimental.GenSymConstrained

Methods

freshConstrained :: (MonadFresh m, MonadError e m, MonadUnion m) => e -> SOrdBound a spec -> m (UnionM a) Source #

(SOrd a, Mergeable a, GenSym spec a) => GenSymConstrained (SOrdLowerBound a spec) a Source # 
Instance details

Defined in Grisette.Experimental.GenSymConstrained

Methods

freshConstrained :: (MonadFresh m, MonadError e m, MonadUnion m) => e -> SOrdLowerBound a spec -> m (UnionM a) Source #

(SOrd a, Mergeable a, GenSym spec a) => GenSymConstrained (SOrdUpperBound a spec) a Source # 
Instance details

Defined in Grisette.Experimental.GenSymConstrained

Methods

freshConstrained :: (MonadFresh m, MonadError e m, MonadUnion m) => e -> SOrdUpperBound a spec -> m (UnionM a) Source #

(GenSymConstrained aspec a, Mergeable a, GenSymConstrained bspec b, Mergeable b) => GenSymConstrained (Either aspec bspec) (Either a b) Source # 
Instance details

Defined in Grisette.Experimental.GenSymConstrained

Methods

freshConstrained :: (MonadFresh m, MonadError e m, MonadUnion m) => e -> Either aspec bspec -> m (UnionM (Either a b)) Source #

(GenSymSimpleConstrained (m (Maybe a)) (m (Maybe a)), Mergeable1 m, Mergeable a) => GenSymConstrained (MaybeT m a) (MaybeT m a) Source # 
Instance details

Defined in Grisette.Experimental.GenSymConstrained

Methods

freshConstrained :: (MonadFresh m0, MonadError e m0, MonadUnion m0) => e -> MaybeT m a -> m0 (UnionM (MaybeT m a)) Source #

(GenSymConstrained aspec a, Mergeable a, GenSymConstrained bspec b, Mergeable b) => GenSymConstrained (aspec, bspec) (a, b) Source # 
Instance details

Defined in Grisette.Experimental.GenSymConstrained

Methods

freshConstrained :: (MonadFresh m, MonadError e m, MonadUnion m) => e -> (aspec, bspec) -> m (UnionM (a, b)) Source #

(GenSymSimpleConstrained (m (Either e a)) (m (Either e a)), Mergeable1 m, Mergeable e, Mergeable a) => GenSymConstrained (ExceptT e m a) (ExceptT e m a) Source # 
Instance details

Defined in Grisette.Experimental.GenSymConstrained

Methods

freshConstrained :: (MonadFresh m0, MonadError e0 m0, MonadUnion m0) => e0 -> ExceptT e m a -> m0 (UnionM (ExceptT e m a)) Source #

(GenSymConstrained aspec a, Mergeable a, GenSymConstrained bspec b, Mergeable b, GenSymConstrained cspec c, Mergeable c) => GenSymConstrained (aspec, bspec, cspec) (a, b, c) Source # 
Instance details

Defined in Grisette.Experimental.GenSymConstrained

Methods

freshConstrained :: (MonadFresh m, MonadError e m, MonadUnion m) => e -> (aspec, bspec, cspec) -> m (UnionM (a, b, c)) Source #

(GenSymConstrained aspec a, Mergeable a, GenSymConstrained bspec b, Mergeable b, GenSymConstrained cspec c, Mergeable c, GenSymConstrained dspec d, Mergeable d) => GenSymConstrained (aspec, bspec, cspec, dspec) (a, b, c, d) Source # 
Instance details

Defined in Grisette.Experimental.GenSymConstrained

Methods

freshConstrained :: (MonadFresh m, MonadError e m, MonadUnion m) => e -> (aspec, bspec, cspec, dspec) -> m (UnionM (a, b, c, d)) Source #

(GenSymConstrained aspec a, Mergeable a, GenSymConstrained bspec b, Mergeable b, GenSymConstrained cspec c, Mergeable c, GenSymConstrained dspec d, Mergeable d, GenSymConstrained espec e, Mergeable e) => GenSymConstrained (aspec, bspec, cspec, dspec, espec) (a, b, c, d, e) Source # 
Instance details

Defined in Grisette.Experimental.GenSymConstrained

Methods

freshConstrained :: (MonadFresh m, MonadError e0 m, MonadUnion m) => e0 -> (aspec, bspec, cspec, dspec, espec) -> m (UnionM (a, b, c, d, e)) Source #

(GenSymConstrained aspec a, Mergeable a, GenSymConstrained bspec b, Mergeable b, GenSymConstrained cspec c, Mergeable c, GenSymConstrained dspec d, Mergeable d, GenSymConstrained espec e, Mergeable e, GenSymConstrained fspec f, Mergeable f) => GenSymConstrained (aspec, bspec, cspec, dspec, espec, fspec) (a, b, c, d, e, f) Source # 
Instance details

Defined in Grisette.Experimental.GenSymConstrained

Methods

freshConstrained :: (MonadFresh m, MonadError e0 m, MonadUnion m) => e0 -> (aspec, bspec, cspec, dspec, espec, fspec) -> m (UnionM (a, b, c, d, e, f)) Source #

(GenSymConstrained aspec a, Mergeable a, GenSymConstrained bspec b, Mergeable b, GenSymConstrained cspec c, Mergeable c, GenSymConstrained dspec d, Mergeable d, GenSymConstrained espec e, Mergeable e, GenSymConstrained fspec f, Mergeable f, GenSymConstrained gspec g, Mergeable g) => GenSymConstrained (aspec, bspec, cspec, dspec, espec, fspec, gspec) (a, b, c, d, e, f, g) Source # 
Instance details

Defined in Grisette.Experimental.GenSymConstrained

Methods

freshConstrained :: (MonadFresh m, MonadError e0 m, MonadUnion m) => e0 -> (aspec, bspec, cspec, dspec, espec, fspec, gspec) -> m (UnionM (a, b, c, d, e, f, g)) Source #

(GenSymConstrained aspec a, Mergeable a, GenSymConstrained bspec b, Mergeable b, GenSymConstrained cspec c, Mergeable c, GenSymConstrained dspec d, Mergeable d, GenSymConstrained espec e, Mergeable e, GenSymConstrained fspec f, Mergeable f, GenSymConstrained gspec g, Mergeable g, GenSymConstrained hspec h, Mergeable h) => GenSymConstrained (aspec, bspec, cspec, dspec, espec, fspec, gspec, hspec) (a, b, c, d, e, f, g, h) Source # 
Instance details

Defined in Grisette.Experimental.GenSymConstrained

Methods

freshConstrained :: (MonadFresh m, MonadError e0 m, MonadUnion m) => e0 -> (aspec, bspec, cspec, dspec, espec, fspec, gspec, hspec) -> m (UnionM (a, b, c, d, e, f, g, h)) Source #

class Mergeable a => GenSymSimpleConstrained spec a where Source #

Class of types in which symbolic values can be generated with some specification.

See GenSymSimple for more details. The difference of this class is that it allows constraints to be generated along with the generation of symbolic values.

Methods

simpleFreshConstrained :: (MonadFresh m, MonadError e m, MonadUnion m) => e -> spec -> m a Source #

Generates a symbolic value with the given specification.

Constraint violations will throw an error in the monadic environment.

>>> runFreshT (simpleFreshConstrained () (SOrdUpperBound (1 :: SymInteger) ())) "a" :: ExceptT () UnionM SymInteger
ExceptT <If (<= 1 a@0) (Left ()) (Right a@0)>

Instances

Instances details
(Mergeable a, GenSymSimple spec a) => GenSymSimpleConstrained spec a Source # 
Instance details

Defined in Grisette.Experimental.GenSymConstrained

Methods

simpleFreshConstrained :: (MonadFresh m, MonadError e m, MonadUnion m) => e -> spec -> m a Source #

(GenSymSimpleConstrained spec (m (Maybe a)), Mergeable1 m, Mergeable a) => GenSymSimpleConstrained spec (MaybeT m a) Source # 
Instance details

Defined in Grisette.Experimental.GenSymConstrained

Methods

simpleFreshConstrained :: (MonadFresh m0, MonadError e m0, MonadUnion m0) => e -> spec -> m0 (MaybeT m a) Source #

(GenSymSimpleConstrained spec (m (Either a b)), Mergeable1 m, Mergeable a, Mergeable b) => GenSymSimpleConstrained spec (ExceptT a m b) Source # 
Instance details

Defined in Grisette.Experimental.GenSymConstrained

Methods

simpleFreshConstrained :: (MonadFresh m0, MonadError e m0, MonadUnion m0) => e -> spec -> m0 (ExceptT a m b) Source #

GenSymSimpleConstrained spec a => GenSymSimpleConstrained (SimpleListSpec spec) [a] Source # 
Instance details

Defined in Grisette.Experimental.GenSymConstrained

Methods

simpleFreshConstrained :: (MonadFresh m, MonadError e m, MonadUnion m) => e -> SimpleListSpec spec -> m [a] Source #

GenSymSimpleConstrained aspec a => GenSymSimpleConstrained (Maybe aspec) (Maybe a) Source # 
Instance details

Defined in Grisette.Experimental.GenSymConstrained

Methods

simpleFreshConstrained :: (MonadFresh m, MonadError e m, MonadUnion m) => e -> Maybe aspec -> m (Maybe a) Source #

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

Defined in Grisette.Experimental.GenSymConstrained

Methods

simpleFreshConstrained :: (MonadFresh m, MonadError e m, MonadUnion m) => e -> [a] -> m [a] Source #

(SOrd a, Mergeable a, GenSymSimple spec a) => GenSymSimpleConstrained (SOrdBound a spec) a Source # 
Instance details

Defined in Grisette.Experimental.GenSymConstrained

Methods

simpleFreshConstrained :: (MonadFresh m, MonadError e m, MonadUnion m) => e -> SOrdBound a spec -> m a Source #

(SOrd a, Mergeable a, GenSymSimple spec a) => GenSymSimpleConstrained (SOrdLowerBound a spec) a Source # 
Instance details

Defined in Grisette.Experimental.GenSymConstrained

Methods

simpleFreshConstrained :: (MonadFresh m, MonadError e m, MonadUnion m) => e -> SOrdLowerBound a spec -> m a Source #

(SOrd a, Mergeable a, GenSymSimple spec a) => GenSymSimpleConstrained (SOrdUpperBound a spec) a Source # 
Instance details

Defined in Grisette.Experimental.GenSymConstrained

Methods

simpleFreshConstrained :: (MonadFresh m, MonadError e m, MonadUnion m) => e -> SOrdUpperBound a spec -> m a Source #

(GenSymSimpleConstrained a a, GenSymSimpleConstrained b b) => GenSymSimpleConstrained (Either a b) (Either a b) Source # 
Instance details

Defined in Grisette.Experimental.GenSymConstrained

Methods

simpleFreshConstrained :: (MonadFresh m, MonadError e m, MonadUnion m) => e -> Either a b -> m (Either a b) Source #

(GenSymSimpleConstrained (m (Maybe a)) (m (Maybe a)), Mergeable1 m, Mergeable a) => GenSymSimpleConstrained (MaybeT m a) (MaybeT m a) Source # 
Instance details

Defined in Grisette.Experimental.GenSymConstrained

Methods

simpleFreshConstrained :: (MonadFresh m0, MonadError e m0, MonadUnion m0) => e -> MaybeT m a -> m0 (MaybeT m a) Source #

(GenSymSimpleConstrained aspec a, GenSymSimpleConstrained bspec b) => GenSymSimpleConstrained (aspec, bspec) (a, b) Source # 
Instance details

Defined in Grisette.Experimental.GenSymConstrained

Methods

simpleFreshConstrained :: (MonadFresh m, MonadError e m, MonadUnion m) => e -> (aspec, bspec) -> m (a, b) Source #

(GenSymSimpleConstrained (m (Either e a)) (m (Either e a)), Mergeable1 m, Mergeable e, Mergeable a) => GenSymSimpleConstrained (ExceptT e m a) (ExceptT e m a) Source # 
Instance details

Defined in Grisette.Experimental.GenSymConstrained

Methods

simpleFreshConstrained :: (MonadFresh m0, MonadError e0 m0, MonadUnion m0) => e0 -> ExceptT e m a -> m0 (ExceptT e m a) Source #

(GenSymSimpleConstrained aspec a, GenSymSimpleConstrained bspec b, GenSymSimpleConstrained cspec c) => GenSymSimpleConstrained (aspec, bspec, cspec) (a, b, c) Source # 
Instance details

Defined in Grisette.Experimental.GenSymConstrained

Methods

simpleFreshConstrained :: (MonadFresh m, MonadError e m, MonadUnion m) => e -> (aspec, bspec, cspec) -> m (a, b, c) Source #

(GenSymSimpleConstrained aspec a, GenSymSimpleConstrained bspec b, GenSymSimpleConstrained cspec c, GenSymSimpleConstrained dspec d) => GenSymSimpleConstrained (aspec, bspec, cspec, dspec) (a, b, c, d) Source # 
Instance details

Defined in Grisette.Experimental.GenSymConstrained

Methods

simpleFreshConstrained :: (MonadFresh m, MonadError e m, MonadUnion m) => e -> (aspec, bspec, cspec, dspec) -> m (a, b, c, d) Source #

(GenSymSimpleConstrained aspec a, GenSymSimpleConstrained bspec b, GenSymSimpleConstrained cspec c, GenSymSimpleConstrained dspec d, GenSymSimpleConstrained espec e) => GenSymSimpleConstrained (aspec, bspec, cspec, dspec, espec) (a, b, c, d, e) Source # 
Instance details

Defined in Grisette.Experimental.GenSymConstrained

Methods

simpleFreshConstrained :: (MonadFresh m, MonadError e0 m, MonadUnion m) => e0 -> (aspec, bspec, cspec, dspec, espec) -> m (a, b, c, d, e) Source #

(GenSymSimpleConstrained aspec a, GenSymSimpleConstrained bspec b, GenSymSimpleConstrained cspec c, GenSymSimpleConstrained dspec d, GenSymSimpleConstrained espec e, GenSymSimpleConstrained fspec f) => GenSymSimpleConstrained (aspec, bspec, cspec, dspec, espec, fspec) (a, b, c, d, e, f) Source # 
Instance details

Defined in Grisette.Experimental.GenSymConstrained

Methods

simpleFreshConstrained :: (MonadFresh m, MonadError e0 m, MonadUnion m) => e0 -> (aspec, bspec, cspec, dspec, espec, fspec) -> m (a, b, c, d, e, f) Source #

(GenSymSimpleConstrained aspec a, GenSymSimpleConstrained bspec b, GenSymSimpleConstrained cspec c, GenSymSimpleConstrained dspec d, GenSymSimpleConstrained espec e, GenSymSimpleConstrained fspec f, GenSymSimpleConstrained gspec g) => GenSymSimpleConstrained (aspec, bspec, cspec, dspec, espec, fspec, gspec) (a, b, c, d, e, f, g) Source # 
Instance details

Defined in Grisette.Experimental.GenSymConstrained

Methods

simpleFreshConstrained :: (MonadFresh m, MonadError e0 m, MonadUnion m) => e0 -> (aspec, bspec, cspec, dspec, espec, fspec, gspec) -> m (a, b, c, d, e, f, g) Source #

(GenSymSimpleConstrained aspec a, GenSymSimpleConstrained bspec b, GenSymSimpleConstrained cspec c, GenSymSimpleConstrained dspec d, GenSymSimpleConstrained espec e, GenSymSimpleConstrained fspec f, GenSymSimpleConstrained gspec g, GenSymSimpleConstrained hspec h) => GenSymSimpleConstrained (aspec, bspec, cspec, dspec, espec, fspec, gspec, hspec) (a, b, c, d, e, f, g, h) Source # 
Instance details

Defined in Grisette.Experimental.GenSymConstrained

Methods

simpleFreshConstrained :: (MonadFresh m, MonadError e0 m, MonadUnion m) => e0 -> (aspec, bspec, cspec, dspec, espec, fspec, gspec, hspec) -> m (a, b, c, d, e, f, g, h) Source #

genSymConstrained :: forall spec a e. (GenSymConstrained spec a, Mergeable e) => e -> spec -> Identifier -> ExceptT e UnionM (UnionM a) Source #

genSymSimpleConstrained :: forall spec a e. (GenSymSimpleConstrained spec a, Mergeable e) => e -> spec -> Identifier -> ExceptT e UnionM a Source #

derivedSimpleFreshConstrainedNoSpec :: forall a m e. (Generic a, GenSymSimpleConstrainedNoSpec (Rep a), MonadFresh m, MonadError e m, MonadUnion m, Mergeable a) => e -> () -> m a Source #

We cannot provide DerivingVia style derivation for GenSymSimpleConstrained, while you can use this simpleFreshConstrained implementation to implement GenSymSimpleConstrained fo your own types.

This simpleFreshConstrained implementation is for the types that does not need any specification. It will generate product types by generating each fields with () as specification. It will not work on sum types.

Note: Never use on recursive types.

derivedSimpleFreshConstrainedSameShape :: (Generic a, GenSymConstrainedSameShape (Rep a), Mergeable a, MonadFresh m, MonadError e m, MonadUnion m) => e -> a -> m a Source #

We cannot provide DerivingVia style derivation for GenSymSimpleConstrained, while you can use this simpleFreshConstrained implementation to implement GenSymSimpleConstrained fo your own types.

This simpleFreshConstrained implementation is for the types that can be generated with a reference value of the same type.

For sum types, it will generate the result with the same data constructor. For product types, it will generate the result by generating each field with the corresponding reference value.

Note: Can be used on recursive types.

derivedFreshConstrainedNoSpec :: forall a m e. (Generic a, GenSymConstrainedNoSpec (Rep a), Mergeable a, MonadFresh m, MonadError e m, MonadUnion m) => e -> () -> m (UnionM a) Source #

We cannot provide DerivingVia style derivation for GenSymConstrained, while you can use this freshConstrained implementation to implement GenSymConstrained for your own types.

This freshConstrained implementation is for the types that does not need any specification. It will generate product types by generating each fields with () as specification, and generate all possible values for a sum type.

Note: Never use on recursive types.

Some common GenSymConstrained specifications

data SOrdUpperBound a spec Source #

Exclusive bound, generates the values with the specification, then filters out the ones that are greater than or equal to the bound

Constructors

SOrdUpperBound a spec 

Instances

Instances details
(SOrd a, Mergeable a, GenSym spec a) => GenSymConstrained (SOrdUpperBound a spec) a Source # 
Instance details

Defined in Grisette.Experimental.GenSymConstrained

Methods

freshConstrained :: (MonadFresh m, MonadError e m, MonadUnion m) => e -> SOrdUpperBound a spec -> m (UnionM a) Source #

(SOrd a, Mergeable a, GenSymSimple spec a) => GenSymSimpleConstrained (SOrdUpperBound a spec) a Source # 
Instance details

Defined in Grisette.Experimental.GenSymConstrained

Methods

simpleFreshConstrained :: (MonadFresh m, MonadError e m, MonadUnion m) => e -> SOrdUpperBound a spec -> m a Source #

data SOrdLowerBound a spec Source #

Inclusive bound, generates the values with the specification, then filters out the ones that are less than the bound

Constructors

SOrdLowerBound a spec 

Instances

Instances details
(SOrd a, Mergeable a, GenSym spec a) => GenSymConstrained (SOrdLowerBound a spec) a Source # 
Instance details

Defined in Grisette.Experimental.GenSymConstrained

Methods

freshConstrained :: (MonadFresh m, MonadError e m, MonadUnion m) => e -> SOrdLowerBound a spec -> m (UnionM a) Source #

(SOrd a, Mergeable a, GenSymSimple spec a) => GenSymSimpleConstrained (SOrdLowerBound a spec) a Source # 
Instance details

Defined in Grisette.Experimental.GenSymConstrained

Methods

simpleFreshConstrained :: (MonadFresh m, MonadError e m, MonadUnion m) => e -> SOrdLowerBound a spec -> m a Source #

data SOrdBound a spec Source #

Left-inclusive, right-exclusive bound, generates the values with the specification, then filters out the ones that are out-of-bound

Constructors

SOrdBound a a spec 

Instances

Instances details
GenSymConstrained (SOrdBound Integer ()) Integer Source # 
Instance details

Defined in Grisette.Experimental.GenSymConstrained

(SOrd a, Mergeable a, GenSym spec a) => GenSymConstrained (SOrdBound a spec) a Source # 
Instance details

Defined in Grisette.Experimental.GenSymConstrained

Methods

freshConstrained :: (MonadFresh m, MonadError e m, MonadUnion m) => e -> SOrdBound a spec -> m (UnionM a) Source #

(SOrd a, Mergeable a, GenSymSimple spec a) => GenSymSimpleConstrained (SOrdBound a spec) a Source # 
Instance details

Defined in Grisette.Experimental.GenSymConstrained

Methods

simpleFreshConstrained :: (MonadFresh m, MonadError e m, MonadUnion m) => e -> SOrdBound a spec -> m a Source #