grisette-0.11.0.0: Symbolic evaluation as a library
Copyright(c) Sirui Lu 2024
LicenseBSD-3-Clause (see the LICENSE file)
Maintainersiruilu@cs.washington.edu
StabilityExperimental
PortabilityGHC only
Safe HaskellNone
LanguageHaskell2010

Grisette.Unified

Description

 
Synopsis

Evaluation mode

data EvalModeTag Source #

Evaluation mode for unified types. C means concrete evaluation, S means symbolic evaluation.

Constructors

C 
S 

Instances

Instances details
Show EvalModeTag Source # 
Instance details

Defined in Grisette.Internal.Unified.EvalModeTag

Eq EvalModeTag Source # 
Instance details

Defined in Grisette.Internal.Unified.EvalModeTag

Lift EvalModeTag Source # 
Instance details

Defined in Grisette.Internal.Unified.EvalModeTag

Methods

lift :: Quote m => EvalModeTag -> m Exp #

liftTyped :: forall (m :: Type -> Type). Quote m => EvalModeTag -> Code m EvalModeTag #

type family IsConMode (mode :: EvalModeTag) = (r :: Bool) | r -> mode where ... Source #

Type family to check if a mode is C.

Equations

IsConMode 'C = 'True 
IsConMode 'S = 'False 

type family BaseMonad (mode :: EvalModeTag) = (r :: Type -> Type) | r -> mode where ... Source #

A type family that specifies the base monad for the evaluation mode.

Resolves to Identity for C mode, and Union for S mode.

Equations

BaseMonad 'C = Identity 
BaseMonad 'S = Union 

Aggregated constraints

genEvalMode :: String -> [TheoryToUnify] -> DecsQ Source #

This template haskell function generates an EvalMode constraint on demand.

For example, if in your system, you are only working on bit-vectors and booleans, but not floating points, integers, or real numbers, you can use this function to generate a constraint that only includes the necessary constraints:

genEvalMode "MyEvalMode" [UWordN, UIntN, UBool]
f :: MyEvalMode mode => GetBool mode -> GetWordN mode 8 -> GetWordN mode 8
f = ...

This may help with faster compilation times.

Another usage of this custom constraint is to working with uninterpreted functions. The uninterpreted functions aren't available even with EvalModeAll, and is only available with the constraint generated by this function. Note that you need to explicitly list all the uninterpreted function types you need in your system.

genEvalMode "MyEvalModeUF" [UFun [UWordN, UIntN], UFun [UBool, UBool, UWordN]]

This will give us a constraint that allows us to work with booleans and bit-vectors, and also the uninterpreted functions that

  • maps an unsigned bit-vector (any bitwidth) to an unsigned integer (any bitwidth), and
  • maps two booleans to an unsigned bit-vector (any bitwidth).

You can then use them in your code like this:

f :: MyEvalModeUF mode => GetFun mode (GetWordN mode 8) (GetIntN mode 8) -> GetIntN mode 8
f fun = f # 1

The function will also provide the constraint MonadMyEvalModeUF, which includes the constraints for the monad and the unified branching, similar to MonadEvalModeAll.

For compilers older than GHC 9.2.1, see the notes for EvalModeAll. This function will also generate constraints like MyEvalModeUFFunUWordNUIntN, which can be used to resolve the constraints for older compilers.

The naming conversion is the concatenation of the three parts:

  • The base name provided by the user (i.e., MyEvalModeUF),
  • Fun,
  • The concatenation of all the types in the uninterpreted function (i.e., UWordNUIntN).

The arguments to the type class is as follows:

  • The first argument is the mode,
  • The second to the end arguments are the natural number arguments for all the types. Here the second argument is the bitwidth of the unsigned bit-vector argument, and the third argument is the bitwidth of the signed bit-vector result.

data TheoryToUnify Source #

This data type is used to represent the theories that is unified.

The UFun constructor is used to represent a specific uninterpreted function type. The type is uncurried.

class (DecideEvalMode mode, UnifiedBool mode, UnifiedBasicPrim mode (GetBool mode), Monad (BaseMonad mode), TryMerge (BaseMonad mode), UnifiedBranching mode (BaseMonad mode), AllUnifiedData mode) => EvalModeBase (mode :: EvalModeTag) Source #

Provide the constraint that the mode is a valid evaluation mode, and provides the support for GetBool and GetData.

For compilers prior to GHC 9.2.1, see the notes for EvalModeAll.

Instances

Instances details
EvalModeBase 'C Source # 
Instance details

Defined in Grisette.Internal.Internal.Impl.Unified.EvalMode

EvalModeBase 'S Source # 
Instance details

Defined in Grisette.Internal.Internal.Impl.Unified.EvalMode

type EvalModeInteger = UnifiedInteger Source #

Provide the support for GetInteger.

For compilers prior to GHC 9.2.1, see the notes for EvalModeAll.

class (AllUnifiedBV mode, AllUnifiedBVBVConversion mode) => EvalModeBV (mode :: EvalModeTag) Source #

Provide the support for GetIntN, GetWordN, GetSomeIntN, and GetSomeWordN.

For compilers prior to GHC 9.2.1, see the notes for EvalModeAll.

Instances

Instances details
EvalModeBV 'C Source # 
Instance details

Defined in Grisette.Internal.Internal.Impl.Unified.EvalMode

EvalModeBV 'S Source # 
Instance details

Defined in Grisette.Internal.Internal.Impl.Unified.EvalMode

class (AllUnifiedFP mode, AllUnifiedFPFPConversion mode, AllUnifiedBVFPConversion mode) => EvalModeFP (mode :: EvalModeTag) Source #

Provide the support for GetFP and GetFPRoundingMode.

For compilers prior to GHC 9.2.1, see the notes for EvalModeAll.

Instances

Instances details
EvalModeFP 'C Source # 
Instance details

Defined in Grisette.Internal.Internal.Impl.Unified.EvalMode

EvalModeFP 'S Source # 
Instance details

Defined in Grisette.Internal.Internal.Impl.Unified.EvalMode

type EvalModeAlgReal = UnifiedAlgReal Source #

Provide the support for GetAlgReal.

For compilers prior to GHC 9.2.1, see the notes for EvalModeAll.

class (EvalModeBase mode, EvalModeInteger mode, EvalModeAlgReal mode, EvalModeBV mode, EvalModeFP mode) => EvalModeAll (mode :: EvalModeTag) Source #

A constraint that specifies that the mode is valid, and provide all the corresponding constraints for the operaions for the types.

Note for users with GHC prior to 9.2.1: the GHC compiler isn't able to resolve the operations for sized bitvectors and data types. In this case, you may need to provide UnifiedBV, SafeUnifiedBV, SafeUnifiedSomeBV, and UnifiedData constraints manually.

For example, the following code is valid for GHC 9.2.1 and later:

fbv ::
  forall mode n.
  (EvalMode mode, KnownNat n, 1 <= n) =>
  GetIntN mode n ->
  GetIntN mode n ->
  GetIntN mode n
fbv l r =
  mrgIte @mode
    (l .== r)
    (l + r)
    (symIte @mode (l .< r) l r)

But with older GHCs, you need to write:

fbv ::
  forall mode n.
  (EvalMode mode, KnownNat n, 1 <= n, UnifiedBV mode n) =>
  GetIntN mode n ->
  GetIntN mode n ->
  GetIntN mode n
fbv l r =
  mrgIte @mode
    (l .== r)
    (l + r)
    (symIte @mode (l .< r) l r)

Instances

Instances details
EvalModeAll 'C Source # 
Instance details

Defined in Grisette.Internal.Internal.Impl.Unified.EvalMode

EvalModeAll 'S Source # 
Instance details

Defined in Grisette.Internal.Internal.Impl.Unified.EvalMode

type MonadEvalModeAll (mode :: EvalModeTag) (m :: Type -> Type) = (EvalModeAll mode, Monad m, TryMerge m, UnifiedBranching mode m) Source #

A constraint that specifies that the mode is valid, and provide all the corresponding constraints for the operations for the types.

This also provide the branching constraints for the monad, and the safe operations: for example, SafeUnifiedInteger provides safeDiv for the integer type with in ExceptT ArithException m.

For users with GHC prior to 9.2.1, see notes in EvalModeAll.

class DecideEvalMode (mode :: EvalModeTag) where Source #

A class that provides the mode tag at runtime.

Instances

Instances details
DecideEvalMode 'C Source # 
Instance details

Defined in Grisette.Internal.Unified.Util

DecideEvalMode 'S Source # 
Instance details

Defined in Grisette.Internal.Unified.Util

withMode :: forall (mode :: EvalModeTag) r. DecideEvalMode mode => (mode ~ 'C => r) -> (mode ~ 'S => r) -> r Source #

Case analysis on the mode.

class (DecideEvalMode c, DecideEvalMode s) => EvalModeConvertible (c :: EvalModeTag) (s :: EvalModeTag) where Source #

A class saying that we can convert a value with one mode to another mode.

Allowed conversions:

Conversion from left to right uses ToSym class, and conversion from right to left uses ToCon class.

Methods

withModeConvertible :: (c ~ 'C => r) -> (s ~ 'S => r) -> r Source #

withModeConvertible' :: ((c ~ 'C, s ~ 'C) => r) -> ((c ~ 'C, s ~ 'S) => r) -> ((c ~ 'S, s ~ 'S) => r) -> r Source #

Instances

Instances details
DecideEvalMode s => EvalModeConvertible 'C s Source # 
Instance details

Defined in Grisette.Internal.Unified.Util

Methods

withModeConvertible :: ('C ~ 'C => r) -> (s ~ 'S => r) -> r Source #

withModeConvertible' :: (('C ~ 'C, s ~ 'C) => r) -> (('C ~ 'C, s ~ 'S) => r) -> (('C ~ 'S, s ~ 'S) => r) -> r Source #

DecideEvalMode c => EvalModeConvertible c 'S Source # 
Instance details

Defined in Grisette.Internal.Unified.Util

Methods

withModeConvertible :: (c ~ 'C => r) -> ('S ~ 'S => r) -> r Source #

withModeConvertible' :: ((c ~ 'C, 'S ~ 'C) => r) -> ((c ~ 'C, 'S ~ 'S) => r) -> ((c ~ 'S, 'S ~ 'S) => r) -> r Source #

DecideEvalMode c => EvalModeConvertible c c Source # 
Instance details

Defined in Grisette.Internal.Unified.Util

Methods

withModeConvertible :: (c ~ 'C => r) -> (c ~ 'S => r) -> r Source #

withModeConvertible' :: ((c ~ 'C, c ~ 'C) => r) -> ((c ~ 'C, c ~ 'S) => r) -> ((c ~ 'S, c ~ 'S) => r) -> r Source #

Unified operations

Unified simple mergeable

class (DecideEvalMode mode, TryMerge m) => UnifiedBranching (mode :: EvalModeTag) (m :: Type -> Type) where Source #

A class that provides a unified branching operation.

We use this type class to help resolve the constraints for SymBranching.

Methods

withBaseBranching :: (If (IsConMode mode) (TryMerge m) (SymBranching m) => r) -> r Source #

Instances

Instances details
(DecideEvalMode mode, TryMerge m, If (IsConMode mode) (TryMerge m) (SymBranching m)) => UnifiedBranching mode m Source # 
Instance details

Defined in Grisette.Internal.Internal.Impl.Unified.Class.UnifiedSimpleMergeable

Methods

withBaseBranching :: (If (IsConMode mode) (TryMerge m) (SymBranching m) => r) -> r Source #

(DecideEvalMode mode, UnifiedBranching mode m) => UnifiedBranching mode (FreshT m) Source # 
Instance details

Defined in Grisette.Internal.Internal.Impl.Unified.Class.UnifiedSimpleMergeable

Methods

withBaseBranching :: (If (IsConMode mode) (TryMerge (FreshT m)) (SymBranching (FreshT m)) => r) -> r Source #

(DecideEvalMode mode, UnifiedBranching mode m) => UnifiedBranching mode (MaybeT m) Source # 
Instance details

Defined in Grisette.Internal.Internal.Impl.Unified.Class.UnifiedSimpleMergeable

Methods

withBaseBranching :: (If (IsConMode mode) (TryMerge (MaybeT m)) (SymBranching (MaybeT m)) => r) -> r Source #

(DecideEvalMode mode, Mergeable e, UnifiedBranching mode m) => UnifiedBranching mode (ExceptT e m) Source # 
Instance details

Defined in Grisette.Internal.Internal.Impl.Unified.Class.UnifiedSimpleMergeable

Methods

withBaseBranching :: (If (IsConMode mode) (TryMerge (ExceptT e m)) (SymBranching (ExceptT e m)) => r) -> r Source #

(DecideEvalMode mode, UnifiedBranching mode m) => UnifiedBranching mode (IdentityT m) Source # 
Instance details

Defined in Grisette.Internal.Internal.Impl.Unified.Class.UnifiedSimpleMergeable

Methods

withBaseBranching :: (If (IsConMode mode) (TryMerge (IdentityT m)) (SymBranching (IdentityT m)) => r) -> r Source #

(DecideEvalMode mode, UnifiedBranching mode m) => UnifiedBranching mode (ReaderT r m) Source # 
Instance details

Defined in Grisette.Internal.Internal.Impl.Unified.Class.UnifiedSimpleMergeable

Methods

withBaseBranching :: (If (IsConMode mode) (TryMerge (ReaderT r m)) (SymBranching (ReaderT r m)) => r0) -> r0 Source #

(DecideEvalMode mode, UnifiedBranching mode m, Mergeable s) => UnifiedBranching mode (StateT s m) Source # 
Instance details

Defined in Grisette.Internal.Internal.Impl.Unified.Class.UnifiedSimpleMergeable

Methods

withBaseBranching :: (If (IsConMode mode) (TryMerge (StateT s m)) (SymBranching (StateT s m)) => r) -> r Source #

(DecideEvalMode mode, UnifiedBranching mode m, Mergeable s) => UnifiedBranching mode (StateT s m) Source # 
Instance details

Defined in Grisette.Internal.Internal.Impl.Unified.Class.UnifiedSimpleMergeable

Methods

withBaseBranching :: (If (IsConMode mode) (TryMerge (StateT s m)) (SymBranching (StateT s m)) => r) -> r Source #

(DecideEvalMode mode, UnifiedBranching mode m, Monoid w, Mergeable w) => UnifiedBranching mode (WriterT w m) Source # 
Instance details

Defined in Grisette.Internal.Internal.Impl.Unified.Class.UnifiedSimpleMergeable

Methods

withBaseBranching :: (If (IsConMode mode) (TryMerge (WriterT w m)) (SymBranching (WriterT w m)) => r) -> r Source #

(DecideEvalMode mode, UnifiedBranching mode m, Monoid w, Mergeable w, Mergeable1 m) => UnifiedBranching mode (WriterT w m) Source # 
Instance details

Defined in Grisette.Internal.Internal.Impl.Unified.Class.UnifiedSimpleMergeable

Methods

withBaseBranching :: (If (IsConMode mode) (TryMerge (WriterT w m)) (SymBranching (WriterT w m)) => r) -> r Source #

(DecideEvalMode mode, Mergeable r, UnifiedBranching mode m, Mergeable1 m) => UnifiedBranching mode (ContT r m) Source # 
Instance details

Defined in Grisette.Internal.Internal.Impl.Unified.Class.UnifiedSimpleMergeable

Methods

withBaseBranching :: (If (IsConMode mode) (TryMerge (ContT r m)) (SymBranching (ContT r m)) => r0) -> r0 Source #

(DecideEvalMode mode, UnifiedBranching mode m, Mergeable s, Monoid w, Mergeable w) => UnifiedBranching mode (RWST r w s m) Source # 
Instance details

Defined in Grisette.Internal.Internal.Impl.Unified.Class.UnifiedSimpleMergeable

Methods

withBaseBranching :: (If (IsConMode mode) (TryMerge (RWST r w s m)) (SymBranching (RWST r w s m)) => r0) -> r0 Source #

(DecideEvalMode mode, UnifiedBranching mode m, Mergeable s, Monoid w, Mergeable w) => UnifiedBranching mode (RWST r w s m) Source # 
Instance details

Defined in Grisette.Internal.Internal.Impl.Unified.Class.UnifiedSimpleMergeable

Methods

withBaseBranching :: (If (IsConMode mode) (TryMerge (RWST r w s m)) (SymBranching (RWST r w s m)) => r0) -> r0 Source #

class Mergeable a => UnifiedSimpleMergeable (mode :: EvalModeTag) a where Source #

A class that provides a unified simple merging.

We use this type class to help resolve the constraints for SimpleMergeable.

Methods

withBaseSimpleMergeable :: (If (IsConMode mode) () (SimpleMergeable a) => r) -> r Source #

Instances

Instances details
DecideEvalMode mode => UnifiedSimpleMergeable mode AssertionError Source # 
Instance details

Defined in Grisette.Internal.Internal.Impl.Unified.Class.UnifiedSimpleMergeable

DecideEvalMode mode => UnifiedSimpleMergeable mode () Source # 
Instance details

Defined in Grisette.Internal.Internal.Impl.Unified.Class.UnifiedSimpleMergeable

Methods

withBaseSimpleMergeable :: (If (IsConMode mode) () (SimpleMergeable ()) => r) -> r Source #

(DecideEvalMode mode, Mergeable m, If (IsConMode mode) () (SimpleMergeable m)) => UnifiedSimpleMergeable mode m Source # 
Instance details

Defined in Grisette.Internal.Internal.Impl.Unified.Class.UnifiedSimpleMergeable

Methods

withBaseSimpleMergeable :: (If (IsConMode mode) () (SimpleMergeable m) => r) -> r Source #

(DecideEvalMode mode, UnifiedSimpleMergeable mode a) => UnifiedSimpleMergeable mode (Identity a) Source # 
Instance details

Defined in Grisette.Internal.Internal.Impl.Unified.Class.UnifiedSimpleMergeable

Methods

withBaseSimpleMergeable :: (If (IsConMode mode) () (SimpleMergeable (Identity a)) => r) -> r Source #

(DecideEvalMode mode, UnifiedBranching mode m, Mergeable a, Mergeable1 m) => UnifiedSimpleMergeable mode (FreshT m a) Source # 
Instance details

Defined in Grisette.Internal.Internal.Impl.Unified.Class.UnifiedSimpleMergeable

Methods

withBaseSimpleMergeable :: (If (IsConMode mode) () (SimpleMergeable (FreshT m a)) => r) -> r Source #

(DecideEvalMode mode, UnifiedBranching mode m, Mergeable a, Mergeable1 m) => UnifiedSimpleMergeable mode (MaybeT m a) Source # 
Instance details

Defined in Grisette.Internal.Internal.Impl.Unified.Class.UnifiedSimpleMergeable

Methods

withBaseSimpleMergeable :: (If (IsConMode mode) () (SimpleMergeable (MaybeT m a)) => r) -> r Source #

(DecideEvalMode mode, UnifiedSimpleMergeable mode a1, UnifiedSimpleMergeable mode a2) => UnifiedSimpleMergeable mode (a1, a2) Source # 
Instance details

Defined in Grisette.Internal.Internal.Impl.Unified.Class.UnifiedSimpleMergeable

Methods

withBaseSimpleMergeable :: (If (IsConMode mode) () (SimpleMergeable (a1, a2)) => r) -> r Source #

(DecideEvalMode mode, UnifiedSimpleMergeable mode b) => UnifiedSimpleMergeable mode (a -> b) Source # 
Instance details

Defined in Grisette.Internal.Internal.Impl.Unified.Class.UnifiedSimpleMergeable

Methods

withBaseSimpleMergeable :: (If (IsConMode mode) () (SimpleMergeable (a -> b)) => r) -> r Source #

(DecideEvalMode mode, UnifiedBranching mode m, Mergeable e, Mergeable a, Mergeable1 m) => UnifiedSimpleMergeable mode (ExceptT e m a) Source # 
Instance details

Defined in Grisette.Internal.Internal.Impl.Unified.Class.UnifiedSimpleMergeable

Methods

withBaseSimpleMergeable :: (If (IsConMode mode) () (SimpleMergeable (ExceptT e m a)) => r) -> r Source #

(DecideEvalMode mode, UnifiedBranching mode m, Mergeable a, Mergeable1 m) => UnifiedSimpleMergeable mode (IdentityT m a) Source # 
Instance details

Defined in Grisette.Internal.Internal.Impl.Unified.Class.UnifiedSimpleMergeable

Methods

withBaseSimpleMergeable :: (If (IsConMode mode) () (SimpleMergeable (IdentityT m a)) => r) -> r Source #

(DecideEvalMode mode, UnifiedBranching mode m, Mergeable a, Mergeable1 m) => UnifiedSimpleMergeable mode (ReaderT r m a) Source # 
Instance details

Defined in Grisette.Internal.Internal.Impl.Unified.Class.UnifiedSimpleMergeable

Methods

withBaseSimpleMergeable :: (If (IsConMode mode) () (SimpleMergeable (ReaderT r m a)) => r0) -> r0 Source #

(DecideEvalMode mode, UnifiedBranching mode m, Mergeable s, Mergeable a, Mergeable1 m) => UnifiedSimpleMergeable mode (StateT s m a) Source # 
Instance details

Defined in Grisette.Internal.Internal.Impl.Unified.Class.UnifiedSimpleMergeable

Methods

withBaseSimpleMergeable :: (If (IsConMode mode) () (SimpleMergeable (StateT s m a)) => r) -> r Source #

(DecideEvalMode mode, UnifiedBranching mode m, Mergeable s, Mergeable a, Mergeable1 m) => UnifiedSimpleMergeable mode (StateT s m a) Source # 
Instance details

Defined in Grisette.Internal.Internal.Impl.Unified.Class.UnifiedSimpleMergeable

Methods

withBaseSimpleMergeable :: (If (IsConMode mode) () (SimpleMergeable (StateT s m a)) => r) -> r Source #

(DecideEvalMode mode, UnifiedBranching mode m, Mergeable w, Mergeable a, Monoid w, Mergeable1 m) => UnifiedSimpleMergeable mode (WriterT w m a) Source # 
Instance details

Defined in Grisette.Internal.Internal.Impl.Unified.Class.UnifiedSimpleMergeable

Methods

withBaseSimpleMergeable :: (If (IsConMode mode) () (SimpleMergeable (WriterT w m a)) => r) -> r Source #

(DecideEvalMode mode, UnifiedBranching mode m, Mergeable w, Mergeable a, Monoid w, Mergeable1 m) => UnifiedSimpleMergeable mode (WriterT w m a) Source # 
Instance details

Defined in Grisette.Internal.Internal.Impl.Unified.Class.UnifiedSimpleMergeable

Methods

withBaseSimpleMergeable :: (If (IsConMode mode) () (SimpleMergeable (WriterT w m a)) => r) -> r Source #

(DecideEvalMode mode, UnifiedSimpleMergeable mode a1, UnifiedSimpleMergeable mode a2, UnifiedSimpleMergeable mode a3) => UnifiedSimpleMergeable mode (a1, a2, a3) Source # 
Instance details

Defined in Grisette.Internal.Internal.Impl.Unified.Class.UnifiedSimpleMergeable

Methods

withBaseSimpleMergeable :: (If (IsConMode mode) () (SimpleMergeable (a1, a2, a3)) => r) -> r Source #

(DecideEvalMode mode, UnifiedBranching mode m, Mergeable r, Mergeable a, Mergeable1 m) => UnifiedSimpleMergeable mode (ContT r m a) Source # 
Instance details

Defined in Grisette.Internal.Internal.Impl.Unified.Class.UnifiedSimpleMergeable

Methods

withBaseSimpleMergeable :: (If (IsConMode mode) () (SimpleMergeable (ContT r m a)) => r0) -> r0 Source #

(DecideEvalMode mode, UnifiedSimpleMergeable mode a1, UnifiedSimpleMergeable mode a2, UnifiedSimpleMergeable mode a3, UnifiedSimpleMergeable mode a4) => UnifiedSimpleMergeable mode (a1, a2, a3, a4) Source # 
Instance details

Defined in Grisette.Internal.Internal.Impl.Unified.Class.UnifiedSimpleMergeable

Methods

withBaseSimpleMergeable :: (If (IsConMode mode) () (SimpleMergeable (a1, a2, a3, a4)) => r) -> r Source #

(DecideEvalMode mode, UnifiedBranching mode m, Mergeable w, Monoid w, Mergeable s, Mergeable a, Mergeable1 m) => UnifiedSimpleMergeable mode (RWST r w s m a) Source # 
Instance details

Defined in Grisette.Internal.Internal.Impl.Unified.Class.UnifiedSimpleMergeable

Methods

withBaseSimpleMergeable :: (If (IsConMode mode) () (SimpleMergeable (RWST r w s m a)) => r0) -> r0 Source #

(DecideEvalMode mode, UnifiedBranching mode m, Mergeable w, Monoid w, Mergeable s, Mergeable a, Mergeable1 m) => UnifiedSimpleMergeable mode (RWST r w s m a) Source # 
Instance details

Defined in Grisette.Internal.Internal.Impl.Unified.Class.UnifiedSimpleMergeable

Methods

withBaseSimpleMergeable :: (If (IsConMode mode) () (SimpleMergeable (RWST r w s m a)) => r0) -> r0 Source #

(DecideEvalMode mode, UnifiedSimpleMergeable mode a1, UnifiedSimpleMergeable mode a2, UnifiedSimpleMergeable mode a3, UnifiedSimpleMergeable mode a4, UnifiedSimpleMergeable mode a5) => UnifiedSimpleMergeable mode (a1, a2, a3, a4, a5) Source # 
Instance details

Defined in Grisette.Internal.Internal.Impl.Unified.Class.UnifiedSimpleMergeable

Methods

withBaseSimpleMergeable :: (If (IsConMode mode) () (SimpleMergeable (a1, a2, a3, a4, a5)) => r) -> r Source #

(DecideEvalMode mode, UnifiedSimpleMergeable mode a1, UnifiedSimpleMergeable mode a2, UnifiedSimpleMergeable mode a3, UnifiedSimpleMergeable mode a4, UnifiedSimpleMergeable mode a5, UnifiedSimpleMergeable mode a6) => UnifiedSimpleMergeable mode (a1, a2, a3, a4, a5, a6) Source # 
Instance details

Defined in Grisette.Internal.Internal.Impl.Unified.Class.UnifiedSimpleMergeable

Methods

withBaseSimpleMergeable :: (If (IsConMode mode) () (SimpleMergeable (a1, a2, a3, a4, a5, a6)) => r) -> r Source #

(DecideEvalMode mode, UnifiedSimpleMergeable mode a1, UnifiedSimpleMergeable mode a2, UnifiedSimpleMergeable mode a3, UnifiedSimpleMergeable mode a4, UnifiedSimpleMergeable mode a5, UnifiedSimpleMergeable mode a6, UnifiedSimpleMergeable mode a7) => UnifiedSimpleMergeable mode (a1, a2, a3, a4, a5, a6, a7) Source # 
Instance details

Defined in Grisette.Internal.Internal.Impl.Unified.Class.UnifiedSimpleMergeable

Methods

withBaseSimpleMergeable :: (If (IsConMode mode) () (SimpleMergeable (a1, a2, a3, a4, a5, a6, a7)) => r) -> r Source #

(DecideEvalMode mode, UnifiedSimpleMergeable mode a1, UnifiedSimpleMergeable mode a2, UnifiedSimpleMergeable mode a3, UnifiedSimpleMergeable mode a4, UnifiedSimpleMergeable mode a5, UnifiedSimpleMergeable mode a6, UnifiedSimpleMergeable mode a7, UnifiedSimpleMergeable mode a8) => UnifiedSimpleMergeable mode (a1, a2, a3, a4, a5, a6, a7, a8) Source # 
Instance details

Defined in Grisette.Internal.Internal.Impl.Unified.Class.UnifiedSimpleMergeable

Methods

withBaseSimpleMergeable :: (If (IsConMode mode) () (SimpleMergeable (a1, a2, a3, a4, a5, a6, a7, a8)) => r) -> r Source #

(DecideEvalMode mode, UnifiedSimpleMergeable mode a1, UnifiedSimpleMergeable mode a2, UnifiedSimpleMergeable mode a3, UnifiedSimpleMergeable mode a4, UnifiedSimpleMergeable mode a5, UnifiedSimpleMergeable mode a6, UnifiedSimpleMergeable mode a7, UnifiedSimpleMergeable mode a8, UnifiedSimpleMergeable mode a9) => UnifiedSimpleMergeable mode (a1, a2, a3, a4, a5, a6, a7, a8, a9) Source # 
Instance details

Defined in Grisette.Internal.Internal.Impl.Unified.Class.UnifiedSimpleMergeable

Methods

withBaseSimpleMergeable :: (If (IsConMode mode) () (SimpleMergeable (a1, a2, a3, a4, a5, a6, a7, a8, a9)) => r) -> r Source #

(DecideEvalMode mode, UnifiedSimpleMergeable mode a1, UnifiedSimpleMergeable mode a2, UnifiedSimpleMergeable mode a3, UnifiedSimpleMergeable mode a4, UnifiedSimpleMergeable mode a5, UnifiedSimpleMergeable mode a6, UnifiedSimpleMergeable mode a7, UnifiedSimpleMergeable mode a8, UnifiedSimpleMergeable mode a9, UnifiedSimpleMergeable mode a10) => UnifiedSimpleMergeable mode (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10) Source # 
Instance details

Defined in Grisette.Internal.Internal.Impl.Unified.Class.UnifiedSimpleMergeable

Methods

withBaseSimpleMergeable :: (If (IsConMode mode) () (SimpleMergeable (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10)) => r) -> r Source #

(DecideEvalMode mode, UnifiedSimpleMergeable mode a1, UnifiedSimpleMergeable mode a2, UnifiedSimpleMergeable mode a3, UnifiedSimpleMergeable mode a4, UnifiedSimpleMergeable mode a5, UnifiedSimpleMergeable mode a6, UnifiedSimpleMergeable mode a7, UnifiedSimpleMergeable mode a8, UnifiedSimpleMergeable mode a9, UnifiedSimpleMergeable mode a10, UnifiedSimpleMergeable mode a11) => UnifiedSimpleMergeable mode (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11) Source # 
Instance details

Defined in Grisette.Internal.Internal.Impl.Unified.Class.UnifiedSimpleMergeable

Methods

withBaseSimpleMergeable :: (If (IsConMode mode) () (SimpleMergeable (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11)) => r) -> r Source #

(DecideEvalMode mode, UnifiedSimpleMergeable mode a1, UnifiedSimpleMergeable mode a2, UnifiedSimpleMergeable mode a3, UnifiedSimpleMergeable mode a4, UnifiedSimpleMergeable mode a5, UnifiedSimpleMergeable mode a6, UnifiedSimpleMergeable mode a7, UnifiedSimpleMergeable mode a8, UnifiedSimpleMergeable mode a9, UnifiedSimpleMergeable mode a10, UnifiedSimpleMergeable mode a11, UnifiedSimpleMergeable mode a12) => UnifiedSimpleMergeable mode (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12) Source # 
Instance details

Defined in Grisette.Internal.Internal.Impl.Unified.Class.UnifiedSimpleMergeable

Methods

withBaseSimpleMergeable :: (If (IsConMode mode) () (SimpleMergeable (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12)) => r) -> r Source #

(DecideEvalMode mode, UnifiedSimpleMergeable mode a1, UnifiedSimpleMergeable mode a2, UnifiedSimpleMergeable mode a3, UnifiedSimpleMergeable mode a4, UnifiedSimpleMergeable mode a5, UnifiedSimpleMergeable mode a6, UnifiedSimpleMergeable mode a7, UnifiedSimpleMergeable mode a8, UnifiedSimpleMergeable mode a9, UnifiedSimpleMergeable mode a10, UnifiedSimpleMergeable mode a11, UnifiedSimpleMergeable mode a12, UnifiedSimpleMergeable mode a13) => UnifiedSimpleMergeable mode (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13) Source # 
Instance details

Defined in Grisette.Internal.Internal.Impl.Unified.Class.UnifiedSimpleMergeable

Methods

withBaseSimpleMergeable :: (If (IsConMode mode) () (SimpleMergeable (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13)) => r) -> r Source #

(DecideEvalMode mode, UnifiedSimpleMergeable mode a1, UnifiedSimpleMergeable mode a2, UnifiedSimpleMergeable mode a3, UnifiedSimpleMergeable mode a4, UnifiedSimpleMergeable mode a5, UnifiedSimpleMergeable mode a6, UnifiedSimpleMergeable mode a7, UnifiedSimpleMergeable mode a8, UnifiedSimpleMergeable mode a9, UnifiedSimpleMergeable mode a10, UnifiedSimpleMergeable mode a11, UnifiedSimpleMergeable mode a12, UnifiedSimpleMergeable mode a13, UnifiedSimpleMergeable mode a14) => UnifiedSimpleMergeable mode (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14) Source # 
Instance details

Defined in Grisette.Internal.Internal.Impl.Unified.Class.UnifiedSimpleMergeable

Methods

withBaseSimpleMergeable :: (If (IsConMode mode) () (SimpleMergeable (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14)) => r) -> r Source #

(DecideEvalMode mode, UnifiedSimpleMergeable mode a1, UnifiedSimpleMergeable mode a2, UnifiedSimpleMergeable mode a3, UnifiedSimpleMergeable mode a4, UnifiedSimpleMergeable mode a5, UnifiedSimpleMergeable mode a6, UnifiedSimpleMergeable mode a7, UnifiedSimpleMergeable mode a8, UnifiedSimpleMergeable mode a9, UnifiedSimpleMergeable mode a10, UnifiedSimpleMergeable mode a11, UnifiedSimpleMergeable mode a12, UnifiedSimpleMergeable mode a13, UnifiedSimpleMergeable mode a14, UnifiedSimpleMergeable mode a15) => UnifiedSimpleMergeable mode (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15) Source # 
Instance details

Defined in Grisette.Internal.Internal.Impl.Unified.Class.UnifiedSimpleMergeable

Methods

withBaseSimpleMergeable :: (If (IsConMode mode) () (SimpleMergeable (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15)) => r) -> r Source #

class UnifiedSimpleMergeable1 (mode :: EvalModeTag) (f :: Type -> Type) where Source #

A class that provides lifting of unified simple merging.

We use this type class to help resolve the constraints for SimpleMergeable1.

Methods

withBaseSimpleMergeable1 :: (If (IsConMode mode) () (SimpleMergeable1 f) => r) -> r Source #

Instances

Instances details
DecideEvalMode mode => UnifiedSimpleMergeable1 mode Identity Source # 
Instance details

Defined in Grisette.Internal.Internal.Impl.Unified.Class.UnifiedSimpleMergeable

(DecideEvalMode mode, If (IsConMode mode) () (SimpleMergeable1 m)) => UnifiedSimpleMergeable1 mode m Source # 
Instance details

Defined in Grisette.Internal.Internal.Impl.Unified.Class.UnifiedSimpleMergeable

Methods

withBaseSimpleMergeable1 :: (If (IsConMode mode) () (SimpleMergeable1 m) => r) -> r Source #

(DecideEvalMode mode, UnifiedBranching mode m) => UnifiedSimpleMergeable1 mode (FreshT m) Source # 
Instance details

Defined in Grisette.Internal.Internal.Impl.Unified.Class.UnifiedSimpleMergeable

Methods

withBaseSimpleMergeable1 :: (If (IsConMode mode) () (SimpleMergeable1 (FreshT m)) => r) -> r Source #

(DecideEvalMode mode, UnifiedBranching mode m) => UnifiedSimpleMergeable1 mode (MaybeT m) Source # 
Instance details

Defined in Grisette.Internal.Internal.Impl.Unified.Class.UnifiedSimpleMergeable

Methods

withBaseSimpleMergeable1 :: (If (IsConMode mode) () (SimpleMergeable1 (MaybeT m)) => r) -> r Source #

(DecideEvalMode mode, UnifiedSimpleMergeable mode a) => UnifiedSimpleMergeable1 mode ((,) a) Source # 
Instance details

Defined in Grisette.Internal.Internal.Impl.Unified.Class.UnifiedSimpleMergeable

Methods

withBaseSimpleMergeable1 :: (If (IsConMode mode) () (SimpleMergeable1 ((,) a)) => r) -> r Source #

(DecideEvalMode mode, UnifiedBranching mode m, Mergeable e, Mergeable1 m) => UnifiedSimpleMergeable1 mode (ExceptT e m) Source # 
Instance details

Defined in Grisette.Internal.Internal.Impl.Unified.Class.UnifiedSimpleMergeable

Methods

withBaseSimpleMergeable1 :: (If (IsConMode mode) () (SimpleMergeable1 (ExceptT e m)) => r) -> r Source #

(DecideEvalMode mode, UnifiedBranching mode m) => UnifiedSimpleMergeable1 mode (IdentityT m) Source # 
Instance details

Defined in Grisette.Internal.Internal.Impl.Unified.Class.UnifiedSimpleMergeable

(DecideEvalMode mode, UnifiedBranching mode m) => UnifiedSimpleMergeable1 mode (ReaderT r m) Source # 
Instance details

Defined in Grisette.Internal.Internal.Impl.Unified.Class.UnifiedSimpleMergeable

Methods

withBaseSimpleMergeable1 :: (If (IsConMode mode) () (SimpleMergeable1 (ReaderT r m)) => r0) -> r0 Source #

(DecideEvalMode mode, UnifiedBranching mode m, Mergeable s) => UnifiedSimpleMergeable1 mode (StateT s m) Source # 
Instance details

Defined in Grisette.Internal.Internal.Impl.Unified.Class.UnifiedSimpleMergeable

Methods

withBaseSimpleMergeable1 :: (If (IsConMode mode) () (SimpleMergeable1 (StateT s m)) => r) -> r Source #

(DecideEvalMode mode, UnifiedBranching mode m, Mergeable s) => UnifiedSimpleMergeable1 mode (StateT s m) Source # 
Instance details

Defined in Grisette.Internal.Internal.Impl.Unified.Class.UnifiedSimpleMergeable

Methods

withBaseSimpleMergeable1 :: (If (IsConMode mode) () (SimpleMergeable1 (StateT s m)) => r) -> r Source #

(DecideEvalMode mode, UnifiedBranching mode m, Mergeable w, Monoid w, Mergeable1 m) => UnifiedSimpleMergeable1 mode (WriterT w m) Source # 
Instance details

Defined in Grisette.Internal.Internal.Impl.Unified.Class.UnifiedSimpleMergeable

Methods

withBaseSimpleMergeable1 :: (If (IsConMode mode) () (SimpleMergeable1 (WriterT w m)) => r) -> r Source #

(DecideEvalMode mode, UnifiedBranching mode m, Mergeable w, Monoid w, Mergeable1 m) => UnifiedSimpleMergeable1 mode (WriterT w m) Source # 
Instance details

Defined in Grisette.Internal.Internal.Impl.Unified.Class.UnifiedSimpleMergeable

Methods

withBaseSimpleMergeable1 :: (If (IsConMode mode) () (SimpleMergeable1 (WriterT w m)) => r) -> r Source #

(DecideEvalMode mode, UnifiedSimpleMergeable mode a1, UnifiedSimpleMergeable mode a2) => UnifiedSimpleMergeable1 mode ((,,) a1 a2) Source # 
Instance details

Defined in Grisette.Internal.Internal.Impl.Unified.Class.UnifiedSimpleMergeable

Methods

withBaseSimpleMergeable1 :: (If (IsConMode mode) () (SimpleMergeable1 ((,,) a1 a2)) => r) -> r Source #

(DecideEvalMode mode, UnifiedBranching mode m, Mergeable r, Mergeable1 m) => UnifiedSimpleMergeable1 mode (ContT r m) Source # 
Instance details

Defined in Grisette.Internal.Internal.Impl.Unified.Class.UnifiedSimpleMergeable

Methods

withBaseSimpleMergeable1 :: (If (IsConMode mode) () (SimpleMergeable1 (ContT r m)) => r0) -> r0 Source #

(DecideEvalMode mode, UnifiedSimpleMergeable mode a1, UnifiedSimpleMergeable mode a2, UnifiedSimpleMergeable mode a3) => UnifiedSimpleMergeable1 mode ((,,,) a1 a2 a3) Source # 
Instance details

Defined in Grisette.Internal.Internal.Impl.Unified.Class.UnifiedSimpleMergeable

Methods

withBaseSimpleMergeable1 :: (If (IsConMode mode) () (SimpleMergeable1 ((,,,) a1 a2 a3)) => r) -> r Source #

DecideEvalMode mode => UnifiedSimpleMergeable1 mode ((->) a) Source # 
Instance details

Defined in Grisette.Internal.Internal.Impl.Unified.Class.UnifiedSimpleMergeable

Methods

withBaseSimpleMergeable1 :: (If (IsConMode mode) () (SimpleMergeable1 ((->) a)) => r) -> r Source #

(DecideEvalMode mode, UnifiedBranching mode m, Mergeable w, Monoid w, Mergeable s, Mergeable1 m) => UnifiedSimpleMergeable1 mode (RWST r w s m) Source # 
Instance details

Defined in Grisette.Internal.Internal.Impl.Unified.Class.UnifiedSimpleMergeable

Methods

withBaseSimpleMergeable1 :: (If (IsConMode mode) () (SimpleMergeable1 (RWST r w s m)) => r0) -> r0 Source #

(DecideEvalMode mode, UnifiedBranching mode m, Mergeable w, Monoid w, Mergeable s) => UnifiedSimpleMergeable1 mode (RWST r w s m) Source # 
Instance details

Defined in Grisette.Internal.Internal.Impl.Unified.Class.UnifiedSimpleMergeable

Methods

withBaseSimpleMergeable1 :: (If (IsConMode mode) () (SimpleMergeable1 (RWST r w s m)) => r0) -> r0 Source #

(DecideEvalMode mode, UnifiedSimpleMergeable mode a1, UnifiedSimpleMergeable mode a2, UnifiedSimpleMergeable mode a3, UnifiedSimpleMergeable mode a4) => UnifiedSimpleMergeable1 mode ((,,,,) a1 a2 a3 a4) Source # 
Instance details

Defined in Grisette.Internal.Internal.Impl.Unified.Class.UnifiedSimpleMergeable

Methods

withBaseSimpleMergeable1 :: (If (IsConMode mode) () (SimpleMergeable1 ((,,,,) a1 a2 a3 a4)) => r) -> r Source #

(DecideEvalMode mode, UnifiedSimpleMergeable mode a1, UnifiedSimpleMergeable mode a2, UnifiedSimpleMergeable mode a3, UnifiedSimpleMergeable mode a4, UnifiedSimpleMergeable mode a5) => UnifiedSimpleMergeable1 mode ((,,,,,) a1 a2 a3 a4 a5) Source # 
Instance details

Defined in Grisette.Internal.Internal.Impl.Unified.Class.UnifiedSimpleMergeable

Methods

withBaseSimpleMergeable1 :: (If (IsConMode mode) () (SimpleMergeable1 ((,,,,,) a1 a2 a3 a4 a5)) => r) -> r Source #

(DecideEvalMode mode, UnifiedSimpleMergeable mode a1, UnifiedSimpleMergeable mode a2, UnifiedSimpleMergeable mode a3, UnifiedSimpleMergeable mode a4, UnifiedSimpleMergeable mode a5, UnifiedSimpleMergeable mode a6) => UnifiedSimpleMergeable1 mode ((,,,,,,) a1 a2 a3 a4 a5 a6) Source # 
Instance details

Defined in Grisette.Internal.Internal.Impl.Unified.Class.UnifiedSimpleMergeable

Methods

withBaseSimpleMergeable1 :: (If (IsConMode mode) () (SimpleMergeable1 ((,,,,,,) a1 a2 a3 a4 a5 a6)) => r) -> r Source #

(DecideEvalMode mode, UnifiedSimpleMergeable mode a1, UnifiedSimpleMergeable mode a2, UnifiedSimpleMergeable mode a3, UnifiedSimpleMergeable mode a4, UnifiedSimpleMergeable mode a5, UnifiedSimpleMergeable mode a6, UnifiedSimpleMergeable mode a7) => UnifiedSimpleMergeable1 mode ((,,,,,,,) a1 a2 a3 a4 a5 a6 a7) Source # 
Instance details

Defined in Grisette.Internal.Internal.Impl.Unified.Class.UnifiedSimpleMergeable

Methods

withBaseSimpleMergeable1 :: (If (IsConMode mode) () (SimpleMergeable1 ((,,,,,,,) a1 a2 a3 a4 a5 a6 a7)) => r) -> r Source #

(DecideEvalMode mode, UnifiedSimpleMergeable mode a1, UnifiedSimpleMergeable mode a2, UnifiedSimpleMergeable mode a3, UnifiedSimpleMergeable mode a4, UnifiedSimpleMergeable mode a5, UnifiedSimpleMergeable mode a6, UnifiedSimpleMergeable mode a7, UnifiedSimpleMergeable mode a8) => UnifiedSimpleMergeable1 mode ((,,,,,,,,) a1 a2 a3 a4 a5 a6 a7 a8) Source # 
Instance details

Defined in Grisette.Internal.Internal.Impl.Unified.Class.UnifiedSimpleMergeable

Methods

withBaseSimpleMergeable1 :: (If (IsConMode mode) () (SimpleMergeable1 ((,,,,,,,,) a1 a2 a3 a4 a5 a6 a7 a8)) => r) -> r Source #

(DecideEvalMode mode, UnifiedSimpleMergeable mode a1, UnifiedSimpleMergeable mode a2, UnifiedSimpleMergeable mode a3, UnifiedSimpleMergeable mode a4, UnifiedSimpleMergeable mode a5, UnifiedSimpleMergeable mode a6, UnifiedSimpleMergeable mode a7, UnifiedSimpleMergeable mode a8, UnifiedSimpleMergeable mode a9) => UnifiedSimpleMergeable1 mode ((,,,,,,,,,) a1 a2 a3 a4 a5 a6 a7 a8 a9) Source # 
Instance details

Defined in Grisette.Internal.Internal.Impl.Unified.Class.UnifiedSimpleMergeable

Methods

withBaseSimpleMergeable1 :: (If (IsConMode mode) () (SimpleMergeable1 ((,,,,,,,,,) a1 a2 a3 a4 a5 a6 a7 a8 a9)) => r) -> r Source #

(DecideEvalMode mode, UnifiedSimpleMergeable mode a1, UnifiedSimpleMergeable mode a2, UnifiedSimpleMergeable mode a3, UnifiedSimpleMergeable mode a4, UnifiedSimpleMergeable mode a5, UnifiedSimpleMergeable mode a6, UnifiedSimpleMergeable mode a7, UnifiedSimpleMergeable mode a8, UnifiedSimpleMergeable mode a9, UnifiedSimpleMergeable mode a10) => UnifiedSimpleMergeable1 mode ((,,,,,,,,,,) a1 a2 a3 a4 a5 a6 a7 a8 a9 a10) Source # 
Instance details

Defined in Grisette.Internal.Internal.Impl.Unified.Class.UnifiedSimpleMergeable

Methods

withBaseSimpleMergeable1 :: (If (IsConMode mode) () (SimpleMergeable1 ((,,,,,,,,,,) a1 a2 a3 a4 a5 a6 a7 a8 a9 a10)) => r) -> r Source #

(DecideEvalMode mode, UnifiedSimpleMergeable mode a1, UnifiedSimpleMergeable mode a2, UnifiedSimpleMergeable mode a3, UnifiedSimpleMergeable mode a4, UnifiedSimpleMergeable mode a5, UnifiedSimpleMergeable mode a6, UnifiedSimpleMergeable mode a7, UnifiedSimpleMergeable mode a8, UnifiedSimpleMergeable mode a9, UnifiedSimpleMergeable mode a10, UnifiedSimpleMergeable mode a11) => UnifiedSimpleMergeable1 mode ((,,,,,,,,,,,) a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11) Source # 
Instance details

Defined in Grisette.Internal.Internal.Impl.Unified.Class.UnifiedSimpleMergeable

Methods

withBaseSimpleMergeable1 :: (If (IsConMode mode) () (SimpleMergeable1 ((,,,,,,,,,,,) a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11)) => r) -> r Source #

(DecideEvalMode mode, UnifiedSimpleMergeable mode a1, UnifiedSimpleMergeable mode a2, UnifiedSimpleMergeable mode a3, UnifiedSimpleMergeable mode a4, UnifiedSimpleMergeable mode a5, UnifiedSimpleMergeable mode a6, UnifiedSimpleMergeable mode a7, UnifiedSimpleMergeable mode a8, UnifiedSimpleMergeable mode a9, UnifiedSimpleMergeable mode a10, UnifiedSimpleMergeable mode a11, UnifiedSimpleMergeable mode a12) => UnifiedSimpleMergeable1 mode ((,,,,,,,,,,,,) a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12) Source # 
Instance details

Defined in Grisette.Internal.Internal.Impl.Unified.Class.UnifiedSimpleMergeable

Methods

withBaseSimpleMergeable1 :: (If (IsConMode mode) () (SimpleMergeable1 ((,,,,,,,,,,,,) a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12)) => r) -> r Source #

(DecideEvalMode mode, UnifiedSimpleMergeable mode a1, UnifiedSimpleMergeable mode a2, UnifiedSimpleMergeable mode a3, UnifiedSimpleMergeable mode a4, UnifiedSimpleMergeable mode a5, UnifiedSimpleMergeable mode a6, UnifiedSimpleMergeable mode a7, UnifiedSimpleMergeable mode a8, UnifiedSimpleMergeable mode a9, UnifiedSimpleMergeable mode a10, UnifiedSimpleMergeable mode a11, UnifiedSimpleMergeable mode a12, UnifiedSimpleMergeable mode a13) => UnifiedSimpleMergeable1 mode ((,,,,,,,,,,,,,) a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12 a13) Source # 
Instance details

Defined in Grisette.Internal.Internal.Impl.Unified.Class.UnifiedSimpleMergeable

Methods

withBaseSimpleMergeable1 :: (If (IsConMode mode) () (SimpleMergeable1 ((,,,,,,,,,,,,,) a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12 a13)) => r) -> r Source #

(DecideEvalMode mode, UnifiedSimpleMergeable mode a1, UnifiedSimpleMergeable mode a2, UnifiedSimpleMergeable mode a3, UnifiedSimpleMergeable mode a4, UnifiedSimpleMergeable mode a5, UnifiedSimpleMergeable mode a6, UnifiedSimpleMergeable mode a7, UnifiedSimpleMergeable mode a8, UnifiedSimpleMergeable mode a9, UnifiedSimpleMergeable mode a10, UnifiedSimpleMergeable mode a11, UnifiedSimpleMergeable mode a12, UnifiedSimpleMergeable mode a13, UnifiedSimpleMergeable mode a14) => UnifiedSimpleMergeable1 mode ((,,,,,,,,,,,,,,) a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12 a13 a14) Source # 
Instance details

Defined in Grisette.Internal.Internal.Impl.Unified.Class.UnifiedSimpleMergeable

Methods

withBaseSimpleMergeable1 :: (If (IsConMode mode) () (SimpleMergeable1 ((,,,,,,,,,,,,,,) a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12 a13 a14)) => r) -> r Source #

class UnifiedSimpleMergeable2 (mode :: EvalModeTag) (f :: Type -> Type -> Type) where Source #

A class that provides lifting of unified simple merging.

We use this type class to help resolve the constraints for SimpleMergeable2.

Methods

withBaseSimpleMergeable2 :: (If (IsConMode mode) () (SimpleMergeable2 f) => r) -> r Source #

Instances

Instances details
DecideEvalMode mode => UnifiedSimpleMergeable2 mode (,) Source # 
Instance details

Defined in Grisette.Internal.Internal.Impl.Unified.Class.UnifiedSimpleMergeable

(DecideEvalMode mode, If (IsConMode mode) () (SimpleMergeable2 m)) => UnifiedSimpleMergeable2 mode m Source # 
Instance details

Defined in Grisette.Internal.Internal.Impl.Unified.Class.UnifiedSimpleMergeable

Methods

withBaseSimpleMergeable2 :: (If (IsConMode mode) () (SimpleMergeable2 m) => r) -> r Source #

(DecideEvalMode mode, UnifiedSimpleMergeable mode a) => UnifiedSimpleMergeable2 mode ((,,) a) Source # 
Instance details

Defined in Grisette.Internal.Internal.Impl.Unified.Class.UnifiedSimpleMergeable

Methods

withBaseSimpleMergeable2 :: (If (IsConMode mode) () (SimpleMergeable2 ((,,) a)) => r) -> r Source #

(DecideEvalMode mode, UnifiedSimpleMergeable mode a1, UnifiedSimpleMergeable mode a2) => UnifiedSimpleMergeable2 mode ((,,,) a1 a2) Source # 
Instance details

Defined in Grisette.Internal.Internal.Impl.Unified.Class.UnifiedSimpleMergeable

Methods

withBaseSimpleMergeable2 :: (If (IsConMode mode) () (SimpleMergeable2 ((,,,) a1 a2)) => r) -> r Source #

DecideEvalMode mode => UnifiedSimpleMergeable2 mode (->) Source # 
Instance details

Defined in Grisette.Internal.Internal.Impl.Unified.Class.UnifiedSimpleMergeable

Methods

withBaseSimpleMergeable2 :: (If (IsConMode mode) () (SimpleMergeable2 (->)) => r) -> r Source #

(DecideEvalMode mode, UnifiedSimpleMergeable mode a1, UnifiedSimpleMergeable mode a2, UnifiedSimpleMergeable mode a3) => UnifiedSimpleMergeable2 mode ((,,,,) a1 a2 a3) Source # 
Instance details

Defined in Grisette.Internal.Internal.Impl.Unified.Class.UnifiedSimpleMergeable

Methods

withBaseSimpleMergeable2 :: (If (IsConMode mode) () (SimpleMergeable2 ((,,,,) a1 a2 a3)) => r) -> r Source #

(DecideEvalMode mode, UnifiedSimpleMergeable mode a1, UnifiedSimpleMergeable mode a2, UnifiedSimpleMergeable mode a3, UnifiedSimpleMergeable mode a4) => UnifiedSimpleMergeable2 mode ((,,,,,) a1 a2 a3 a4) Source # 
Instance details

Defined in Grisette.Internal.Internal.Impl.Unified.Class.UnifiedSimpleMergeable

Methods

withBaseSimpleMergeable2 :: (If (IsConMode mode) () (SimpleMergeable2 ((,,,,,) a1 a2 a3 a4)) => r) -> r Source #

(DecideEvalMode mode, UnifiedSimpleMergeable mode a1, UnifiedSimpleMergeable mode a2, UnifiedSimpleMergeable mode a3, UnifiedSimpleMergeable mode a4, UnifiedSimpleMergeable mode a5) => UnifiedSimpleMergeable2 mode ((,,,,,,) a1 a2 a3 a4 a5) Source # 
Instance details

Defined in Grisette.Internal.Internal.Impl.Unified.Class.UnifiedSimpleMergeable

Methods

withBaseSimpleMergeable2 :: (If (IsConMode mode) () (SimpleMergeable2 ((,,,,,,) a1 a2 a3 a4 a5)) => r) -> r Source #

(DecideEvalMode mode, UnifiedSimpleMergeable mode a1, UnifiedSimpleMergeable mode a2, UnifiedSimpleMergeable mode a3, UnifiedSimpleMergeable mode a4, UnifiedSimpleMergeable mode a5, UnifiedSimpleMergeable mode a6) => UnifiedSimpleMergeable2 mode ((,,,,,,,) a1 a2 a3 a4 a5 a6) Source # 
Instance details

Defined in Grisette.Internal.Internal.Impl.Unified.Class.UnifiedSimpleMergeable

Methods

withBaseSimpleMergeable2 :: (If (IsConMode mode) () (SimpleMergeable2 ((,,,,,,,) a1 a2 a3 a4 a5 a6)) => r) -> r Source #

(DecideEvalMode mode, UnifiedSimpleMergeable mode a1, UnifiedSimpleMergeable mode a2, UnifiedSimpleMergeable mode a3, UnifiedSimpleMergeable mode a4, UnifiedSimpleMergeable mode a5, UnifiedSimpleMergeable mode a6, UnifiedSimpleMergeable mode a7) => UnifiedSimpleMergeable2 mode ((,,,,,,,,) a1 a2 a3 a4 a5 a6 a7) Source # 
Instance details

Defined in Grisette.Internal.Internal.Impl.Unified.Class.UnifiedSimpleMergeable

Methods

withBaseSimpleMergeable2 :: (If (IsConMode mode) () (SimpleMergeable2 ((,,,,,,,,) a1 a2 a3 a4 a5 a6 a7)) => r) -> r Source #

(DecideEvalMode mode, UnifiedSimpleMergeable mode a1, UnifiedSimpleMergeable mode a2, UnifiedSimpleMergeable mode a3, UnifiedSimpleMergeable mode a4, UnifiedSimpleMergeable mode a5, UnifiedSimpleMergeable mode a6, UnifiedSimpleMergeable mode a7, UnifiedSimpleMergeable mode a8) => UnifiedSimpleMergeable2 mode ((,,,,,,,,,) a1 a2 a3 a4 a5 a6 a7 a8) Source # 
Instance details

Defined in Grisette.Internal.Internal.Impl.Unified.Class.UnifiedSimpleMergeable

Methods

withBaseSimpleMergeable2 :: (If (IsConMode mode) () (SimpleMergeable2 ((,,,,,,,,,) a1 a2 a3 a4 a5 a6 a7 a8)) => r) -> r Source #

(DecideEvalMode mode, UnifiedSimpleMergeable mode a1, UnifiedSimpleMergeable mode a2, UnifiedSimpleMergeable mode a3, UnifiedSimpleMergeable mode a4, UnifiedSimpleMergeable mode a5, UnifiedSimpleMergeable mode a6, UnifiedSimpleMergeable mode a7, UnifiedSimpleMergeable mode a8, UnifiedSimpleMergeable mode a9) => UnifiedSimpleMergeable2 mode ((,,,,,,,,,,) a1 a2 a3 a4 a5 a6 a7 a8 a9) Source # 
Instance details

Defined in Grisette.Internal.Internal.Impl.Unified.Class.UnifiedSimpleMergeable

Methods

withBaseSimpleMergeable2 :: (If (IsConMode mode) () (SimpleMergeable2 ((,,,,,,,,,,) a1 a2 a3 a4 a5 a6 a7 a8 a9)) => r) -> r Source #

(DecideEvalMode mode, UnifiedSimpleMergeable mode a1, UnifiedSimpleMergeable mode a2, UnifiedSimpleMergeable mode a3, UnifiedSimpleMergeable mode a4, UnifiedSimpleMergeable mode a5, UnifiedSimpleMergeable mode a6, UnifiedSimpleMergeable mode a7, UnifiedSimpleMergeable mode a8, UnifiedSimpleMergeable mode a9, UnifiedSimpleMergeable mode a10) => UnifiedSimpleMergeable2 mode ((,,,,,,,,,,,) a1 a2 a3 a4 a5 a6 a7 a8 a9 a10) Source # 
Instance details

Defined in Grisette.Internal.Internal.Impl.Unified.Class.UnifiedSimpleMergeable

Methods

withBaseSimpleMergeable2 :: (If (IsConMode mode) () (SimpleMergeable2 ((,,,,,,,,,,,) a1 a2 a3 a4 a5 a6 a7 a8 a9 a10)) => r) -> r Source #

(DecideEvalMode mode, UnifiedSimpleMergeable mode a1, UnifiedSimpleMergeable mode a2, UnifiedSimpleMergeable mode a3, UnifiedSimpleMergeable mode a4, UnifiedSimpleMergeable mode a5, UnifiedSimpleMergeable mode a6, UnifiedSimpleMergeable mode a7, UnifiedSimpleMergeable mode a8, UnifiedSimpleMergeable mode a9, UnifiedSimpleMergeable mode a10, UnifiedSimpleMergeable mode a11) => UnifiedSimpleMergeable2 mode ((,,,,,,,,,,,,) a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11) Source # 
Instance details

Defined in Grisette.Internal.Internal.Impl.Unified.Class.UnifiedSimpleMergeable

Methods

withBaseSimpleMergeable2 :: (If (IsConMode mode) () (SimpleMergeable2 ((,,,,,,,,,,,,) a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11)) => r) -> r Source #

(DecideEvalMode mode, UnifiedSimpleMergeable mode a1, UnifiedSimpleMergeable mode a2, UnifiedSimpleMergeable mode a3, UnifiedSimpleMergeable mode a4, UnifiedSimpleMergeable mode a5, UnifiedSimpleMergeable mode a6, UnifiedSimpleMergeable mode a7, UnifiedSimpleMergeable mode a8, UnifiedSimpleMergeable mode a9, UnifiedSimpleMergeable mode a10, UnifiedSimpleMergeable mode a11, UnifiedSimpleMergeable mode a12) => UnifiedSimpleMergeable2 mode ((,,,,,,,,,,,,,) a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12) Source # 
Instance details

Defined in Grisette.Internal.Internal.Impl.Unified.Class.UnifiedSimpleMergeable

Methods

withBaseSimpleMergeable2 :: (If (IsConMode mode) () (SimpleMergeable2 ((,,,,,,,,,,,,,) a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12)) => r) -> r Source #

(DecideEvalMode mode, UnifiedSimpleMergeable mode a1, UnifiedSimpleMergeable mode a2, UnifiedSimpleMergeable mode a3, UnifiedSimpleMergeable mode a4, UnifiedSimpleMergeable mode a5, UnifiedSimpleMergeable mode a6, UnifiedSimpleMergeable mode a7, UnifiedSimpleMergeable mode a8, UnifiedSimpleMergeable mode a9, UnifiedSimpleMergeable mode a10, UnifiedSimpleMergeable mode a11, UnifiedSimpleMergeable mode a12, UnifiedSimpleMergeable mode a13) => UnifiedSimpleMergeable2 mode ((,,,,,,,,,,,,,,) a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12 a13) Source # 
Instance details

Defined in Grisette.Internal.Internal.Impl.Unified.Class.UnifiedSimpleMergeable

Methods

withBaseSimpleMergeable2 :: (If (IsConMode mode) () (SimpleMergeable2 ((,,,,,,,,,,,,,,) a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12 a13)) => r) -> r Source #

mrgIf :: forall (mode :: EvalModeTag) a m. (DecideEvalMode mode, Mergeable a, UnifiedBranching mode m) => GetBool mode -> m a -> m a -> m a Source #

Unified mrgIf.

This function isn't able to infer the mode of the boolean variable, so you need to provide the mode explicitly. For example:

mrgIf @mode (a .== b) ...
mrgIf (a .== b :: SymBool) ...
mrgIf (a .== b :: GetBool mode) ...

liftBaseMonad :: forall (mode :: EvalModeTag) a m. (Applicative m, UnifiedBranching mode m, Mergeable a) => BaseMonad mode a -> m a Source #

Unified lifting of a base monad.

mrgIte :: forall (mode :: EvalModeTag) a. (DecideEvalMode mode, UnifiedSimpleMergeable mode a) => GetBool mode -> a -> a -> a Source #

Unified mrgIte.

mrgIte1 :: forall (mode :: EvalModeTag) f a. (DecideEvalMode mode, UnifiedSimpleMergeable1 mode f, UnifiedSimpleMergeable mode a) => GetBool mode -> f a -> f a -> f a Source #

Unified mrgIte1.

liftMrgIte :: forall (mode :: EvalModeTag) f a. (DecideEvalMode mode, UnifiedSimpleMergeable1 mode f) => (GetBool mode -> a -> a -> a) -> GetBool mode -> f a -> f a -> f a Source #

Unified liftMrgIte.

mrgIte2 :: forall (mode :: EvalModeTag) f a b. (DecideEvalMode mode, UnifiedSimpleMergeable2 mode f, UnifiedSimpleMergeable mode a, UnifiedSimpleMergeable mode b) => GetBool mode -> f a b -> f a b -> f a b Source #

Unified mrgIte2.

liftMrgIte2 :: forall (mode :: EvalModeTag) f a b. (DecideEvalMode mode, UnifiedSimpleMergeable2 mode f) => (GetBool mode -> a -> a -> a) -> (GetBool mode -> b -> b -> b) -> GetBool mode -> f a b -> f a b -> f a b Source #

Unified liftMrgIte2.

simpleMerge :: forall (mode :: EvalModeTag) a. (DecideEvalMode mode, UnifiedSimpleMergeable mode a) => BaseMonad mode a -> a Source #

Unified merge of simply mergeable values in the base monad.

Unified ITE operator

class UnifiedITEOp (mode :: EvalModeTag) v where Source #

A class that provides unified equality comparison.

We use this type class to help resolve the constraints for ITEOp.

Methods

withBaseITEOp :: (If (IsConMode mode) () (ITEOp v) => r) -> r Source #

Instances

Instances details
(DecideEvalMode mode, If (IsConMode mode) () (ITEOp a)) => UnifiedITEOp mode a Source # 
Instance details

Defined in Grisette.Internal.Internal.Impl.Unified.Class.UnifiedITEOp

Methods

withBaseITEOp :: (If (IsConMode mode) () (ITEOp a) => r) -> r Source #

(UnifiedITEOp 'S v, Mergeable v) => UnifiedITEOp 'S (Union v) Source # 
Instance details

Defined in Grisette.Internal.Internal.Impl.Unified.Class.UnifiedITEOp

Methods

withBaseITEOp :: (If (IsConMode 'S) () (ITEOp (Union v)) => r) -> r Source #

symIte :: forall (mode :: EvalModeTag) v. (DecideEvalMode mode, UnifiedITEOp mode v) => GetBool mode -> v -> v -> v Source #

Unified symIte operation.

This function isn't able to infer the mode of the boolean variable, so you need to provide the mode explicitly. For example:

symIte @mode (a .== b) ...
symIte (a .== b :: SymBool) ...
symIte (a .== b :: GetBool mode) ...

symIteMerge :: forall (mode :: EvalModeTag) v. (DecideEvalMode mode, UnifiedITEOp mode v, Mergeable v) => BaseMonad mode v -> v Source #

Unified symIteMerge operation.

This function isn't able to infer the mode of the base monad from the result, so you need to provide the mode explicitly. For example:

symIteMerge @mode ...
symIteMerge (... :: BaseMonad mode v) ...

Unified SymEq

class UnifiedSymEq (mode :: EvalModeTag) a where Source #

A class that provides unified equality comparison.

We use this type class to help resolve the constraints for Eq and SymEq.

Methods

withBaseSymEq :: (If (IsConMode mode) (Eq a) (SymEq a) => r) -> r Source #

Instances

Instances details
DecideEvalMode mode => UnifiedSymEq mode ByteString Source # 
Instance details

Defined in Grisette.Internal.Internal.Impl.Unified.Class.UnifiedSymEq

Methods

withBaseSymEq :: (If (IsConMode mode) (Eq ByteString) (SymEq ByteString) => r) -> r Source #

DecideEvalMode mode => UnifiedSymEq mode Int16 Source # 
Instance details

Defined in Grisette.Internal.Internal.Impl.Unified.Class.UnifiedSymEq

Methods

withBaseSymEq :: (If (IsConMode mode) (Eq Int16) (SymEq Int16) => r) -> r Source #

DecideEvalMode mode => UnifiedSymEq mode Int32 Source # 
Instance details

Defined in Grisette.Internal.Internal.Impl.Unified.Class.UnifiedSymEq

Methods

withBaseSymEq :: (If (IsConMode mode) (Eq Int32) (SymEq Int32) => r) -> r Source #

DecideEvalMode mode => UnifiedSymEq mode Int64 Source # 
Instance details

Defined in Grisette.Internal.Internal.Impl.Unified.Class.UnifiedSymEq

Methods

withBaseSymEq :: (If (IsConMode mode) (Eq Int64) (SymEq Int64) => r) -> r Source #

DecideEvalMode mode => UnifiedSymEq mode Int8 Source # 
Instance details

Defined in Grisette.Internal.Internal.Impl.Unified.Class.UnifiedSymEq

Methods

withBaseSymEq :: (If (IsConMode mode) (Eq Int8) (SymEq Int8) => r) -> r Source #

DecideEvalMode mode => UnifiedSymEq mode Word16 Source # 
Instance details

Defined in Grisette.Internal.Internal.Impl.Unified.Class.UnifiedSymEq

Methods

withBaseSymEq :: (If (IsConMode mode) (Eq Word16) (SymEq Word16) => r) -> r Source #

DecideEvalMode mode => UnifiedSymEq mode Word32 Source # 
Instance details

Defined in Grisette.Internal.Internal.Impl.Unified.Class.UnifiedSymEq

Methods

withBaseSymEq :: (If (IsConMode mode) (Eq Word32) (SymEq Word32) => r) -> r Source #

DecideEvalMode mode => UnifiedSymEq mode Word64 Source # 
Instance details

Defined in Grisette.Internal.Internal.Impl.Unified.Class.UnifiedSymEq

Methods

withBaseSymEq :: (If (IsConMode mode) (Eq Word64) (SymEq Word64) => r) -> r Source #

DecideEvalMode mode => UnifiedSymEq mode Word8 Source # 
Instance details

Defined in Grisette.Internal.Internal.Impl.Unified.Class.UnifiedSymEq

Methods

withBaseSymEq :: (If (IsConMode mode) (Eq Word8) (SymEq Word8) => r) -> r Source #

DecideEvalMode mode => UnifiedSymEq mode AssertionError Source # 
Instance details

Defined in Grisette.Internal.Internal.Impl.Unified.Class.UnifiedSymEq

DecideEvalMode mode => UnifiedSymEq mode VerificationConditions Source # 
Instance details

Defined in Grisette.Internal.Internal.Impl.Unified.Class.UnifiedSymEq

DecideEvalMode mode => UnifiedSymEq mode FPRoundingMode Source # 
Instance details

Defined in Grisette.Internal.Internal.Impl.Unified.Class.UnifiedSymEq

DecideEvalMode mode => UnifiedSymEq mode Text Source # 
Instance details

Defined in Grisette.Internal.Internal.Impl.Unified.Class.UnifiedSymEq

Methods

withBaseSymEq :: (If (IsConMode mode) (Eq Text) (SymEq Text) => r) -> r Source #

DecideEvalMode mode => UnifiedSymEq mode Integer Source # 
Instance details

Defined in Grisette.Internal.Internal.Impl.Unified.Class.UnifiedSymEq

Methods

withBaseSymEq :: (If (IsConMode mode) (Eq Integer) (SymEq Integer) => r) -> r Source #

DecideEvalMode mode => UnifiedSymEq mode () Source # 
Instance details

Defined in Grisette.Internal.Internal.Impl.Unified.Class.UnifiedSymEq

Methods

withBaseSymEq :: (If (IsConMode mode) (Eq ()) (SymEq ()) => r) -> r Source #

DecideEvalMode mode => UnifiedSymEq mode Bool Source # 
Instance details

Defined in Grisette.Internal.Internal.Impl.Unified.Class.UnifiedSymEq

Methods

withBaseSymEq :: (If (IsConMode mode) (Eq Bool) (SymEq Bool) => r) -> r Source #

DecideEvalMode mode => UnifiedSymEq mode Char Source # 
Instance details

Defined in Grisette.Internal.Internal.Impl.Unified.Class.UnifiedSymEq

Methods

withBaseSymEq :: (If (IsConMode mode) (Eq Char) (SymEq Char) => r) -> r Source #

DecideEvalMode mode => UnifiedSymEq mode Double Source # 
Instance details

Defined in Grisette.Internal.Internal.Impl.Unified.Class.UnifiedSymEq

Methods

withBaseSymEq :: (If (IsConMode mode) (Eq Double) (SymEq Double) => r) -> r Source #

DecideEvalMode mode => UnifiedSymEq mode Float Source # 
Instance details

Defined in Grisette.Internal.Internal.Impl.Unified.Class.UnifiedSymEq

Methods

withBaseSymEq :: (If (IsConMode mode) (Eq Float) (SymEq Float) => r) -> r Source #

DecideEvalMode mode => UnifiedSymEq mode Int Source # 
Instance details

Defined in Grisette.Internal.Internal.Impl.Unified.Class.UnifiedSymEq

Methods

withBaseSymEq :: (If (IsConMode mode) (Eq Int) (SymEq Int) => r) -> r Source #

DecideEvalMode mode => UnifiedSymEq mode Word Source # 
Instance details

Defined in Grisette.Internal.Internal.Impl.Unified.Class.UnifiedSymEq

Methods

withBaseSymEq :: (If (IsConMode mode) (Eq Word) (SymEq Word) => r) -> r Source #

(DecideEvalMode mode, If (IsConMode mode) (Eq a) (SymEq a)) => UnifiedSymEq mode a Source # 
Instance details

Defined in Grisette.Internal.Internal.Impl.Unified.Class.UnifiedSymEq

Methods

withBaseSymEq :: (If (IsConMode mode) (Eq a) (SymEq a) => r) -> r Source #

UnifiedSymEq 'S v => UnifiedSymEq 'S (Union v) Source # 
Instance details

Defined in Grisette.Internal.Internal.Impl.Unified.Class.UnifiedSymEq

Methods

withBaseSymEq :: (If (IsConMode 'S) (Eq (Union v)) (SymEq (Union v)) => r) -> r Source #

(DecideEvalMode mode, UnifiedSymEq mode a) => UnifiedSymEq mode (Identity a) Source # 
Instance details

Defined in Grisette.Internal.Internal.Impl.Unified.Class.UnifiedSymEq

Methods

withBaseSymEq :: (If (IsConMode mode) (Eq (Identity a)) (SymEq (Identity a)) => r) -> r Source #

(DecideEvalMode mode, UnifiedSymEq mode a) => UnifiedSymEq mode (Ratio a) Source # 
Instance details

Defined in Grisette.Internal.Internal.Impl.Unified.Class.UnifiedSymEq

Methods

withBaseSymEq :: (If (IsConMode mode) (Eq (Ratio a)) (SymEq (Ratio a)) => r) -> r Source #

(DecideEvalMode mode, KnownNat a, 1 <= a) => UnifiedSymEq mode (IntN a) Source # 
Instance details

Defined in Grisette.Internal.Internal.Impl.Unified.Class.UnifiedSymEq

Methods

withBaseSymEq :: (If (IsConMode mode) (Eq (IntN a)) (SymEq (IntN a)) => r) -> r Source #

(DecideEvalMode mode, KnownNat a, 1 <= a) => UnifiedSymEq mode (WordN a) Source # 
Instance details

Defined in Grisette.Internal.Internal.Impl.Unified.Class.UnifiedSymEq

Methods

withBaseSymEq :: (If (IsConMode mode) (Eq (WordN a)) (SymEq (WordN a)) => r) -> r Source #

(DecideEvalMode mode, UnifiedSymEq mode a) => UnifiedSymEq mode (Maybe a) Source # 
Instance details

Defined in Grisette.Internal.Internal.Impl.Unified.Class.UnifiedSymEq

Methods

withBaseSymEq :: (If (IsConMode mode) (Eq (Maybe a)) (SymEq (Maybe a)) => r) -> r Source #

(DecideEvalMode mode, UnifiedSymEq mode a) => UnifiedSymEq mode [a] Source # 
Instance details

Defined in Grisette.Internal.Internal.Impl.Unified.Class.UnifiedSymEq

Methods

withBaseSymEq :: (If (IsConMode mode) (Eq [a]) (SymEq [a]) => r) -> r Source #

(DecideEvalMode mode, UnifiedSymEq mode a1, UnifiedSymEq mode a2) => UnifiedSymEq mode (Either a1 a2) Source # 
Instance details

Defined in Grisette.Internal.Internal.Impl.Unified.Class.UnifiedSymEq

Methods

withBaseSymEq :: (If (IsConMode mode) (Eq (Either a1 a2)) (SymEq (Either a1 a2)) => r) -> r Source #

(DecideEvalMode mode, ValidFP a1 a2) => UnifiedSymEq mode (FP a1 a2) Source # 
Instance details

Defined in Grisette.Internal.Internal.Impl.Unified.Class.UnifiedSymEq

Methods

withBaseSymEq :: (If (IsConMode mode) (Eq (FP a1 a2)) (SymEq (FP a1 a2)) => r) -> r Source #

(DecideEvalMode mode, UnifiedSymEq1 mode a1, UnifiedSymEq mode a2) => UnifiedSymEq mode (MaybeT a1 a2) Source # 
Instance details

Defined in Grisette.Internal.Internal.Impl.Unified.Class.UnifiedSymEq

Methods

withBaseSymEq :: (If (IsConMode mode) (Eq (MaybeT a1 a2)) (SymEq (MaybeT a1 a2)) => r) -> r Source #

(DecideEvalMode mode, UnifiedSymEq mode a1, UnifiedSymEq mode a2) => UnifiedSymEq mode (a1, a2) Source # 
Instance details

Defined in Grisette.Internal.Internal.Impl.Unified.Class.UnifiedSymEq

Methods

withBaseSymEq :: (If (IsConMode mode) (Eq (a1, a2)) (SymEq (a1, a2)) => r) -> r Source #

(DecideEvalMode mode, UnifiedSymEq mode a1, UnifiedSymEq1 mode a2, UnifiedSymEq mode a3) => UnifiedSymEq mode (ExceptT a1 a2 a3) Source # 
Instance details

Defined in Grisette.Internal.Internal.Impl.Unified.Class.UnifiedSymEq

Methods

withBaseSymEq :: (If (IsConMode mode) (Eq (ExceptT a1 a2 a3)) (SymEq (ExceptT a1 a2 a3)) => r) -> r Source #

(DecideEvalMode mode, UnifiedSymEq1 mode m, UnifiedSymEq mode a) => UnifiedSymEq mode (IdentityT m a) Source # 
Instance details

Defined in Grisette.Internal.Internal.Impl.Unified.Class.UnifiedSymEq

Methods

withBaseSymEq :: (If (IsConMode mode) (Eq (IdentityT m a)) (SymEq (IdentityT m a)) => r) -> r Source #

(DecideEvalMode mode, UnifiedSymEq mode a1, UnifiedSymEq1 mode a2, UnifiedSymEq mode a3) => UnifiedSymEq mode (WriterT a1 a2 a3) Source # 
Instance details

Defined in Grisette.Internal.Internal.Impl.Unified.Class.UnifiedSymEq

Methods

withBaseSymEq :: (If (IsConMode mode) (Eq (WriterT a1 a2 a3)) (SymEq (WriterT a1 a2 a3)) => r) -> r Source #

(DecideEvalMode mode, UnifiedSymEq mode a1, UnifiedSymEq1 mode a2, UnifiedSymEq mode a3) => UnifiedSymEq mode (WriterT a1 a2 a3) Source # 
Instance details

Defined in Grisette.Internal.Internal.Impl.Unified.Class.UnifiedSymEq

Methods

withBaseSymEq :: (If (IsConMode mode) (Eq (WriterT a1 a2 a3)) (SymEq (WriterT a1 a2 a3)) => r) -> r Source #

(DecideEvalMode mode, UnifiedSymEq mode a1, UnifiedSymEq mode a2, UnifiedSymEq mode a3) => UnifiedSymEq mode (a1, a2, a3) Source # 
Instance details

Defined in Grisette.Internal.Internal.Impl.Unified.Class.UnifiedSymEq

Methods

withBaseSymEq :: (If (IsConMode mode) (Eq (a1, a2, a3)) (SymEq (a1, a2, a3)) => r) -> r Source #

(DecideEvalMode mode, UnifiedSymEq1 mode f, UnifiedSymEq1 mode g, UnifiedSymEq mode a) => UnifiedSymEq mode (Sum f g a) Source # 
Instance details

Defined in Grisette.Internal.Internal.Impl.Unified.Class.UnifiedSymEq

Methods

withBaseSymEq :: (If (IsConMode mode) (Eq (Sum f g a)) (SymEq (Sum f g a)) => r) -> r Source #

(DecideEvalMode mode, UnifiedSymEq mode a1, UnifiedSymEq mode a2, UnifiedSymEq mode a3, UnifiedSymEq mode a4) => UnifiedSymEq mode (a1, a2, a3, a4) Source # 
Instance details

Defined in Grisette.Internal.Internal.Impl.Unified.Class.UnifiedSymEq

Methods

withBaseSymEq :: (If (IsConMode mode) (Eq (a1, a2, a3, a4)) (SymEq (a1, a2, a3, a4)) => r) -> r Source #

(DecideEvalMode mode, UnifiedSymEq mode a1, UnifiedSymEq mode a2, UnifiedSymEq mode a3, UnifiedSymEq mode a4, UnifiedSymEq mode a5) => UnifiedSymEq mode (a1, a2, a3, a4, a5) Source # 
Instance details

Defined in Grisette.Internal.Internal.Impl.Unified.Class.UnifiedSymEq

Methods

withBaseSymEq :: (If (IsConMode mode) (Eq (a1, a2, a3, a4, a5)) (SymEq (a1, a2, a3, a4, a5)) => r) -> r Source #

(DecideEvalMode mode, UnifiedSymEq mode a1, UnifiedSymEq mode a2, UnifiedSymEq mode a3, UnifiedSymEq mode a4, UnifiedSymEq mode a5, UnifiedSymEq mode a6) => UnifiedSymEq mode (a1, a2, a3, a4, a5, a6) Source # 
Instance details

Defined in Grisette.Internal.Internal.Impl.Unified.Class.UnifiedSymEq

Methods

withBaseSymEq :: (If (IsConMode mode) (Eq (a1, a2, a3, a4, a5, a6)) (SymEq (a1, a2, a3, a4, a5, a6)) => r) -> r Source #

(DecideEvalMode mode, UnifiedSymEq mode a1, UnifiedSymEq mode a2, UnifiedSymEq mode a3, UnifiedSymEq mode a4, UnifiedSymEq mode a5, UnifiedSymEq mode a6, UnifiedSymEq mode a7) => UnifiedSymEq mode (a1, a2, a3, a4, a5, a6, a7) Source # 
Instance details

Defined in Grisette.Internal.Internal.Impl.Unified.Class.UnifiedSymEq

Methods

withBaseSymEq :: (If (IsConMode mode) (Eq (a1, a2, a3, a4, a5, a6, a7)) (SymEq (a1, a2, a3, a4, a5, a6, a7)) => r) -> r Source #

(DecideEvalMode mode, UnifiedSymEq mode a1, UnifiedSymEq mode a2, UnifiedSymEq mode a3, UnifiedSymEq mode a4, UnifiedSymEq mode a5, UnifiedSymEq mode a6, UnifiedSymEq mode a7, UnifiedSymEq mode a8) => UnifiedSymEq mode (a1, a2, a3, a4, a5, a6, a7, a8) Source # 
Instance details

Defined in Grisette.Internal.Internal.Impl.Unified.Class.UnifiedSymEq

Methods

withBaseSymEq :: (If (IsConMode mode) (Eq (a1, a2, a3, a4, a5, a6, a7, a8)) (SymEq (a1, a2, a3, a4, a5, a6, a7, a8)) => r) -> r Source #

(DecideEvalMode mode, UnifiedSymEq mode a1, UnifiedSymEq mode a2, UnifiedSymEq mode a3, UnifiedSymEq mode a4, UnifiedSymEq mode a5, UnifiedSymEq mode a6, UnifiedSymEq mode a7, UnifiedSymEq mode a8, UnifiedSymEq mode a9) => UnifiedSymEq mode (a1, a2, a3, a4, a5, a6, a7, a8, a9) Source # 
Instance details

Defined in Grisette.Internal.Internal.Impl.Unified.Class.UnifiedSymEq

Methods

withBaseSymEq :: (If (IsConMode mode) (Eq (a1, a2, a3, a4, a5, a6, a7, a8, a9)) (SymEq (a1, a2, a3, a4, a5, a6, a7, a8, a9)) => r) -> r Source #

(DecideEvalMode mode, UnifiedSymEq mode a1, UnifiedSymEq mode a2, UnifiedSymEq mode a3, UnifiedSymEq mode a4, UnifiedSymEq mode a5, UnifiedSymEq mode a6, UnifiedSymEq mode a7, UnifiedSymEq mode a8, UnifiedSymEq mode a9, UnifiedSymEq mode a10) => UnifiedSymEq mode (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10) Source # 
Instance details

Defined in Grisette.Internal.Internal.Impl.Unified.Class.UnifiedSymEq

Methods

withBaseSymEq :: (If (IsConMode mode) (Eq (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10)) (SymEq (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10)) => r) -> r Source #

(DecideEvalMode mode, UnifiedSymEq mode a1, UnifiedSymEq mode a2, UnifiedSymEq mode a3, UnifiedSymEq mode a4, UnifiedSymEq mode a5, UnifiedSymEq mode a6, UnifiedSymEq mode a7, UnifiedSymEq mode a8, UnifiedSymEq mode a9, UnifiedSymEq mode a10, UnifiedSymEq mode a11) => UnifiedSymEq mode (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11) Source # 
Instance details

Defined in Grisette.Internal.Internal.Impl.Unified.Class.UnifiedSymEq

Methods

withBaseSymEq :: (If (IsConMode mode) (Eq (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11)) (SymEq (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11)) => r) -> r Source #

(DecideEvalMode mode, UnifiedSymEq mode a1, UnifiedSymEq mode a2, UnifiedSymEq mode a3, UnifiedSymEq mode a4, UnifiedSymEq mode a5, UnifiedSymEq mode a6, UnifiedSymEq mode a7, UnifiedSymEq mode a8, UnifiedSymEq mode a9, UnifiedSymEq mode a10, UnifiedSymEq mode a11, UnifiedSymEq mode a12) => UnifiedSymEq mode (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12) Source # 
Instance details

Defined in Grisette.Internal.Internal.Impl.Unified.Class.UnifiedSymEq

Methods

withBaseSymEq :: (If (IsConMode mode) (Eq (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12)) (SymEq (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12)) => r) -> r Source #

(DecideEvalMode mode, UnifiedSymEq mode a1, UnifiedSymEq mode a2, UnifiedSymEq mode a3, UnifiedSymEq mode a4, UnifiedSymEq mode a5, UnifiedSymEq mode a6, UnifiedSymEq mode a7, UnifiedSymEq mode a8, UnifiedSymEq mode a9, UnifiedSymEq mode a10, UnifiedSymEq mode a11, UnifiedSymEq mode a12, UnifiedSymEq mode a13) => UnifiedSymEq mode (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13) Source # 
Instance details

Defined in Grisette.Internal.Internal.Impl.Unified.Class.UnifiedSymEq

Methods

withBaseSymEq :: (If (IsConMode mode) (Eq (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13)) (SymEq (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13)) => r) -> r Source #

(DecideEvalMode mode, UnifiedSymEq mode a1, UnifiedSymEq mode a2, UnifiedSymEq mode a3, UnifiedSymEq mode a4, UnifiedSymEq mode a5, UnifiedSymEq mode a6, UnifiedSymEq mode a7, UnifiedSymEq mode a8, UnifiedSymEq mode a9, UnifiedSymEq mode a10, UnifiedSymEq mode a11, UnifiedSymEq mode a12, UnifiedSymEq mode a13, UnifiedSymEq mode a14) => UnifiedSymEq mode (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14) Source # 
Instance details

Defined in Grisette.Internal.Internal.Impl.Unified.Class.UnifiedSymEq

Methods

withBaseSymEq :: (If (IsConMode mode) (Eq (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14)) (SymEq (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14)) => r) -> r Source #

(DecideEvalMode mode, UnifiedSymEq mode a1, UnifiedSymEq mode a2, UnifiedSymEq mode a3, UnifiedSymEq mode a4, UnifiedSymEq mode a5, UnifiedSymEq mode a6, UnifiedSymEq mode a7, UnifiedSymEq mode a8, UnifiedSymEq mode a9, UnifiedSymEq mode a10, UnifiedSymEq mode a11, UnifiedSymEq mode a12, UnifiedSymEq mode a13, UnifiedSymEq mode a14, UnifiedSymEq mode a15) => UnifiedSymEq mode (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15) Source # 
Instance details

Defined in Grisette.Internal.Internal.Impl.Unified.Class.UnifiedSymEq

Methods

withBaseSymEq :: (If (IsConMode mode) (Eq (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15)) (SymEq (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15)) => r) -> r Source #

class (forall a. UnifiedSymEq mode a => UnifiedSymEq mode (f a)) => UnifiedSymEq1 (mode :: EvalModeTag) (f :: Type -> Type) where Source #

A class that provides unified lifting of equality comparison.

We use this type class to help resolve the constraints for Eq1 and SymEq1.

Methods

withBaseSymEq1 :: (If (IsConMode mode) (Eq1 f) (SymEq1 f) => r) -> r Source #

Instances

Instances details
DecideEvalMode mode => UnifiedSymEq1 mode Identity Source # 
Instance details

Defined in Grisette.Internal.Internal.Impl.Unified.Class.UnifiedSymEq

Methods

withBaseSymEq1 :: (If (IsConMode mode) (Eq1 Identity) (SymEq1 Identity) => r) -> r Source #

DecideEvalMode mode => UnifiedSymEq1 mode Maybe Source # 
Instance details

Defined in Grisette.Internal.Internal.Impl.Unified.Class.UnifiedSymEq

Methods

withBaseSymEq1 :: (If (IsConMode mode) (Eq1 Maybe) (SymEq1 Maybe) => r) -> r Source #

DecideEvalMode mode => UnifiedSymEq1 mode [] Source # 
Instance details

Defined in Grisette.Internal.Internal.Impl.Unified.Class.UnifiedSymEq

Methods

withBaseSymEq1 :: (If (IsConMode mode) (Eq1 []) (SymEq1 []) => r) -> r Source #

(DecideEvalMode mode, If (IsConMode mode) (Eq1 f) (SymEq1 f), forall a. UnifiedSymEq mode a => UnifiedSymEq mode (f a)) => UnifiedSymEq1 mode f Source # 
Instance details

Defined in Grisette.Internal.Internal.Impl.Unified.Class.UnifiedSymEq

Methods

withBaseSymEq1 :: (If (IsConMode mode) (Eq1 f) (SymEq1 f) => r) -> r Source #

(DecideEvalMode mode, UnifiedSymEq mode a) => UnifiedSymEq1 mode (Either a) Source # 
Instance details

Defined in Grisette.Internal.Internal.Impl.Unified.Class.UnifiedSymEq

Methods

withBaseSymEq1 :: (If (IsConMode mode) (Eq1 (Either a)) (SymEq1 (Either a)) => r) -> r Source #

(DecideEvalMode mode, UnifiedSymEq1 mode a) => UnifiedSymEq1 mode (MaybeT a) Source # 
Instance details

Defined in Grisette.Internal.Internal.Impl.Unified.Class.UnifiedSymEq

Methods

withBaseSymEq1 :: (If (IsConMode mode) (Eq1 (MaybeT a)) (SymEq1 (MaybeT a)) => r) -> r Source #

(DecideEvalMode mode, UnifiedSymEq mode a) => UnifiedSymEq1 mode ((,) a) Source # 
Instance details

Defined in Grisette.Internal.Internal.Impl.Unified.Class.UnifiedSymEq

Methods

withBaseSymEq1 :: (If (IsConMode mode) (Eq1 ((,) a)) (SymEq1 ((,) a)) => r) -> r Source #

(DecideEvalMode mode, UnifiedSymEq mode a1, UnifiedSymEq1 mode a2) => UnifiedSymEq1 mode (ExceptT a1 a2) Source # 
Instance details

Defined in Grisette.Internal.Internal.Impl.Unified.Class.UnifiedSymEq

Methods

withBaseSymEq1 :: (If (IsConMode mode) (Eq1 (ExceptT a1 a2)) (SymEq1 (ExceptT a1 a2)) => r) -> r Source #

(DecideEvalMode mode, UnifiedSymEq1 mode m) => UnifiedSymEq1 mode (IdentityT m) Source # 
Instance details

Defined in Grisette.Internal.Internal.Impl.Unified.Class.UnifiedSymEq

Methods

withBaseSymEq1 :: (If (IsConMode mode) (Eq1 (IdentityT m)) (SymEq1 (IdentityT m)) => r) -> r Source #

(DecideEvalMode mode, UnifiedSymEq mode a1, UnifiedSymEq1 mode a2) => UnifiedSymEq1 mode (WriterT a1 a2) Source # 
Instance details

Defined in Grisette.Internal.Internal.Impl.Unified.Class.UnifiedSymEq

Methods

withBaseSymEq1 :: (If (IsConMode mode) (Eq1 (WriterT a1 a2)) (SymEq1 (WriterT a1 a2)) => r) -> r Source #

(DecideEvalMode mode, UnifiedSymEq mode a1, UnifiedSymEq1 mode a2) => UnifiedSymEq1 mode (WriterT a1 a2) Source # 
Instance details

Defined in Grisette.Internal.Internal.Impl.Unified.Class.UnifiedSymEq

Methods

withBaseSymEq1 :: (If (IsConMode mode) (Eq1 (WriterT a1 a2)) (SymEq1 (WriterT a1 a2)) => r) -> r Source #

(DecideEvalMode mode, UnifiedSymEq mode a1, UnifiedSymEq mode a2) => UnifiedSymEq1 mode ((,,) a1 a2) Source # 
Instance details

Defined in Grisette.Internal.Internal.Impl.Unified.Class.UnifiedSymEq

Methods

withBaseSymEq1 :: (If (IsConMode mode) (Eq1 ((,,) a1 a2)) (SymEq1 ((,,) a1 a2)) => r) -> r Source #

(DecideEvalMode mode, UnifiedSymEq1 mode f, UnifiedSymEq1 mode g) => UnifiedSymEq1 mode (Sum f g) Source # 
Instance details

Defined in Grisette.Internal.Internal.Impl.Unified.Class.UnifiedSymEq

Methods

withBaseSymEq1 :: (If (IsConMode mode) (Eq1 (Sum f g)) (SymEq1 (Sum f g)) => r) -> r Source #

(DecideEvalMode mode, UnifiedSymEq mode a1, UnifiedSymEq mode a2, UnifiedSymEq mode a3) => UnifiedSymEq1 mode ((,,,) a1 a2 a3) Source # 
Instance details

Defined in Grisette.Internal.Internal.Impl.Unified.Class.UnifiedSymEq

Methods

withBaseSymEq1 :: (If (IsConMode mode) (Eq1 ((,,,) a1 a2 a3)) (SymEq1 ((,,,) a1 a2 a3)) => r) -> r Source #

class (forall a. UnifiedSymEq mode a => UnifiedSymEq1 mode (f a)) => UnifiedSymEq2 (mode :: EvalModeTag) (f :: Type -> Type -> Type) where Source #

A class that provides unified lifting of equality comparison.

We use this type class to help resolve the constraints for Eq2 and SymEq2.

Methods

withBaseSymEq2 :: (If (IsConMode mode) (Eq2 f) (SymEq2 f) => r) -> r Source #

Instances

Instances details
DecideEvalMode mode => UnifiedSymEq2 mode Either Source # 
Instance details

Defined in Grisette.Internal.Internal.Impl.Unified.Class.UnifiedSymEq

Methods

withBaseSymEq2 :: (If (IsConMode mode) (Eq2 Either) (SymEq2 Either) => r) -> r Source #

DecideEvalMode mode => UnifiedSymEq2 mode (,) Source # 
Instance details

Defined in Grisette.Internal.Internal.Impl.Unified.Class.UnifiedSymEq

Methods

withBaseSymEq2 :: (If (IsConMode mode) (Eq2 (,)) (SymEq2 (,)) => r) -> r Source #

(DecideEvalMode mode, If (IsConMode mode) (Eq2 f) (SymEq2 f), forall a. UnifiedSymEq mode a => UnifiedSymEq1 mode (f a)) => UnifiedSymEq2 mode f Source # 
Instance details

Defined in Grisette.Internal.Internal.Impl.Unified.Class.UnifiedSymEq

Methods

withBaseSymEq2 :: (If (IsConMode mode) (Eq2 f) (SymEq2 f) => r) -> r Source #

(DecideEvalMode mode, UnifiedSymEq mode a) => UnifiedSymEq2 mode ((,,) a) Source # 
Instance details

Defined in Grisette.Internal.Internal.Impl.Unified.Class.UnifiedSymEq

Methods

withBaseSymEq2 :: (If (IsConMode mode) (Eq2 ((,,) a)) (SymEq2 ((,,) a)) => r) -> r Source #

(DecideEvalMode mode, UnifiedSymEq mode a1, UnifiedSymEq mode a2) => UnifiedSymEq2 mode ((,,,) a1 a2) Source # 
Instance details

Defined in Grisette.Internal.Internal.Impl.Unified.Class.UnifiedSymEq

Methods

withBaseSymEq2 :: (If (IsConMode mode) (Eq2 ((,,,) a1 a2)) (SymEq2 ((,,,) a1 a2)) => r) -> r Source #

(.==) :: forall (mode :: EvalModeTag) a. (DecideEvalMode mode, UnifiedSymEq mode a) => a -> a -> GetBool mode Source #

Unified (.==).

Note that you may sometimes need to write type annotations for the result when the mode isn't clear:

a .== b :: GetBool mode

One example when it isn't clear is when this is used in unified mrgIf.

(./=) :: forall (mode :: EvalModeTag) a. (DecideEvalMode mode, UnifiedSymEq mode a) => a -> a -> GetBool mode Source #

Unified (./=).

Note that you may sometimes need to write type annotations for the result when the mode isn't clear:

a ./= b :: GetBool mode

One example when it isn't clear is when this is used in unified mrgIf.

symDistinct :: forall (mode :: EvalModeTag) a. (DecideEvalMode mode, UnifiedSymEq mode a) => [a] -> GetBool mode Source #

Unified symDistinct.

Note that you may sometimes need to write type annotations for the result when the mode isn't clear:

symDistinct l :: GetBool mode

One example when it isn't clear is when this is used in unified mrgIf.

liftSymEq :: forall (mode :: EvalModeTag) f a b. (DecideEvalMode mode, UnifiedSymEq1 mode f) => (a -> b -> GetBool mode) -> f a -> f b -> GetBool mode Source #

Unified liftSymEq.

symEq1 :: forall (mode :: EvalModeTag) f a. (DecideEvalMode mode, UnifiedSymEq mode a, UnifiedSymEq1 mode f) => f a -> f a -> GetBool mode Source #

Unified symEq1.

liftSymEq2 :: forall (mode :: EvalModeTag) f a b c d. (DecideEvalMode mode, UnifiedSymEq2 mode f) => (a -> b -> GetBool mode) -> (c -> d -> GetBool mode) -> f a c -> f b d -> GetBool mode Source #

Unified liftSymEq2.

symEq2 :: forall (mode :: EvalModeTag) f a b. (DecideEvalMode mode, UnifiedSymEq mode a, UnifiedSymEq mode b, UnifiedSymEq2 mode f) => f a b -> f a b -> GetBool mode Source #

Unified symEq2.

Unified SymOrd

class UnifiedSymOrd (mode :: EvalModeTag) a where Source #

A class that provides unified comparison.

We use this type class to help resolve the constraints for Ord and SymOrd.

Methods

withBaseSymOrd :: (If (IsConMode mode) (Ord a) (SymOrd a) => r) -> r Source #

Instances

Instances details
DecideEvalMode mode => UnifiedSymOrd mode ByteString Source # 
Instance details

Defined in Grisette.Internal.Internal.Impl.Unified.Class.UnifiedSymOrd

Methods

withBaseSymOrd :: (If (IsConMode mode) (Ord ByteString) (SymOrd ByteString) => r) -> r Source #

DecideEvalMode mode => UnifiedSymOrd mode Int16 Source # 
Instance details

Defined in Grisette.Internal.Internal.Impl.Unified.Class.UnifiedSymOrd

Methods

withBaseSymOrd :: (If (IsConMode mode) (Ord Int16) (SymOrd Int16) => r) -> r Source #

DecideEvalMode mode => UnifiedSymOrd mode Int32 Source # 
Instance details

Defined in Grisette.Internal.Internal.Impl.Unified.Class.UnifiedSymOrd

Methods

withBaseSymOrd :: (If (IsConMode mode) (Ord Int32) (SymOrd Int32) => r) -> r Source #

DecideEvalMode mode => UnifiedSymOrd mode Int64 Source # 
Instance details

Defined in Grisette.Internal.Internal.Impl.Unified.Class.UnifiedSymOrd

Methods

withBaseSymOrd :: (If (IsConMode mode) (Ord Int64) (SymOrd Int64) => r) -> r Source #

DecideEvalMode mode => UnifiedSymOrd mode Int8 Source # 
Instance details

Defined in Grisette.Internal.Internal.Impl.Unified.Class.UnifiedSymOrd

Methods

withBaseSymOrd :: (If (IsConMode mode) (Ord Int8) (SymOrd Int8) => r) -> r Source #

DecideEvalMode mode => UnifiedSymOrd mode Word16 Source # 
Instance details

Defined in Grisette.Internal.Internal.Impl.Unified.Class.UnifiedSymOrd

Methods

withBaseSymOrd :: (If (IsConMode mode) (Ord Word16) (SymOrd Word16) => r) -> r Source #

DecideEvalMode mode => UnifiedSymOrd mode Word32 Source # 
Instance details

Defined in Grisette.Internal.Internal.Impl.Unified.Class.UnifiedSymOrd

Methods

withBaseSymOrd :: (If (IsConMode mode) (Ord Word32) (SymOrd Word32) => r) -> r Source #

DecideEvalMode mode => UnifiedSymOrd mode Word64 Source # 
Instance details

Defined in Grisette.Internal.Internal.Impl.Unified.Class.UnifiedSymOrd

Methods

withBaseSymOrd :: (If (IsConMode mode) (Ord Word64) (SymOrd Word64) => r) -> r Source #

DecideEvalMode mode => UnifiedSymOrd mode Word8 Source # 
Instance details

Defined in Grisette.Internal.Internal.Impl.Unified.Class.UnifiedSymOrd

Methods

withBaseSymOrd :: (If (IsConMode mode) (Ord Word8) (SymOrd Word8) => r) -> r Source #

DecideEvalMode mode => UnifiedSymOrd mode AssertionError Source # 
Instance details

Defined in Grisette.Internal.Internal.Impl.Unified.Class.UnifiedSymOrd

DecideEvalMode mode => UnifiedSymOrd mode VerificationConditions Source # 
Instance details

Defined in Grisette.Internal.Internal.Impl.Unified.Class.UnifiedSymOrd

DecideEvalMode mode => UnifiedSymOrd mode FPRoundingMode Source # 
Instance details

Defined in Grisette.Internal.Internal.Impl.Unified.Class.UnifiedSymOrd

DecideEvalMode mode => UnifiedSymOrd mode Text Source # 
Instance details

Defined in Grisette.Internal.Internal.Impl.Unified.Class.UnifiedSymOrd

Methods

withBaseSymOrd :: (If (IsConMode mode) (Ord Text) (SymOrd Text) => r) -> r Source #

DecideEvalMode mode => UnifiedSymOrd mode Integer Source # 
Instance details

Defined in Grisette.Internal.Internal.Impl.Unified.Class.UnifiedSymOrd

Methods

withBaseSymOrd :: (If (IsConMode mode) (Ord Integer) (SymOrd Integer) => r) -> r Source #

DecideEvalMode mode => UnifiedSymOrd mode () Source # 
Instance details

Defined in Grisette.Internal.Internal.Impl.Unified.Class.UnifiedSymOrd

Methods

withBaseSymOrd :: (If (IsConMode mode) (Ord ()) (SymOrd ()) => r) -> r Source #

DecideEvalMode mode => UnifiedSymOrd mode Bool Source # 
Instance details

Defined in Grisette.Internal.Internal.Impl.Unified.Class.UnifiedSymOrd

Methods

withBaseSymOrd :: (If (IsConMode mode) (Ord Bool) (SymOrd Bool) => r) -> r Source #

DecideEvalMode mode => UnifiedSymOrd mode Char Source # 
Instance details

Defined in Grisette.Internal.Internal.Impl.Unified.Class.UnifiedSymOrd

Methods

withBaseSymOrd :: (If (IsConMode mode) (Ord Char) (SymOrd Char) => r) -> r Source #

DecideEvalMode mode => UnifiedSymOrd mode Double Source # 
Instance details

Defined in Grisette.Internal.Internal.Impl.Unified.Class.UnifiedSymOrd

Methods

withBaseSymOrd :: (If (IsConMode mode) (Ord Double) (SymOrd Double) => r) -> r Source #

DecideEvalMode mode => UnifiedSymOrd mode Float Source # 
Instance details

Defined in Grisette.Internal.Internal.Impl.Unified.Class.UnifiedSymOrd

Methods

withBaseSymOrd :: (If (IsConMode mode) (Ord Float) (SymOrd Float) => r) -> r Source #

DecideEvalMode mode => UnifiedSymOrd mode Int Source # 
Instance details

Defined in Grisette.Internal.Internal.Impl.Unified.Class.UnifiedSymOrd

Methods

withBaseSymOrd :: (If (IsConMode mode) (Ord Int) (SymOrd Int) => r) -> r Source #

DecideEvalMode mode => UnifiedSymOrd mode Word Source # 
Instance details

Defined in Grisette.Internal.Internal.Impl.Unified.Class.UnifiedSymOrd

Methods

withBaseSymOrd :: (If (IsConMode mode) (Ord Word) (SymOrd Word) => r) -> r Source #

(DecideEvalMode mode, If (IsConMode mode) (Ord a) (SymOrd a)) => UnifiedSymOrd mode a Source # 
Instance details

Defined in Grisette.Internal.Internal.Impl.Unified.Class.UnifiedSymOrd

Methods

withBaseSymOrd :: (If (IsConMode mode) (Ord a) (SymOrd a) => r) -> r Source #

UnifiedSymOrd 'S v => UnifiedSymOrd 'S (Union v) Source # 
Instance details

Defined in Grisette.Internal.Internal.Impl.Unified.Class.UnifiedSymOrd

Methods

withBaseSymOrd :: (If (IsConMode 'S) (Ord (Union v)) (SymOrd (Union v)) => r) -> r Source #

(DecideEvalMode mode, UnifiedSymOrd mode a) => UnifiedSymOrd mode (Identity a) Source # 
Instance details

Defined in Grisette.Internal.Internal.Impl.Unified.Class.UnifiedSymOrd

Methods

withBaseSymOrd :: (If (IsConMode mode) (Ord (Identity a)) (SymOrd (Identity a)) => r) -> r Source #

(DecideEvalMode mode, UnifiedSymOrd mode a, Integral a) => UnifiedSymOrd mode (Ratio a) Source # 
Instance details

Defined in Grisette.Internal.Internal.Impl.Unified.Class.UnifiedSymOrd

Methods

withBaseSymOrd :: (If (IsConMode mode) (Ord (Ratio a)) (SymOrd (Ratio a)) => r) -> r Source #

(DecideEvalMode mode, KnownNat a, 1 <= a) => UnifiedSymOrd mode (IntN a) Source # 
Instance details

Defined in Grisette.Internal.Internal.Impl.Unified.Class.UnifiedSymOrd

Methods

withBaseSymOrd :: (If (IsConMode mode) (Ord (IntN a)) (SymOrd (IntN a)) => r) -> r Source #

(DecideEvalMode mode, KnownNat a, 1 <= a) => UnifiedSymOrd mode (WordN a) Source # 
Instance details

Defined in Grisette.Internal.Internal.Impl.Unified.Class.UnifiedSymOrd

Methods

withBaseSymOrd :: (If (IsConMode mode) (Ord (WordN a)) (SymOrd (WordN a)) => r) -> r Source #

(DecideEvalMode mode, UnifiedSymOrd mode a) => UnifiedSymOrd mode (Maybe a) Source # 
Instance details

Defined in Grisette.Internal.Internal.Impl.Unified.Class.UnifiedSymOrd

Methods

withBaseSymOrd :: (If (IsConMode mode) (Ord (Maybe a)) (SymOrd (Maybe a)) => r) -> r Source #

(DecideEvalMode mode, UnifiedSymOrd mode a) => UnifiedSymOrd mode [a] Source # 
Instance details

Defined in Grisette.Internal.Internal.Impl.Unified.Class.UnifiedSymOrd

Methods

withBaseSymOrd :: (If (IsConMode mode) (Ord [a]) (SymOrd [a]) => r) -> r Source #

(DecideEvalMode mode, UnifiedSymOrd mode a1, UnifiedSymOrd mode a2) => UnifiedSymOrd mode (Either a1 a2) Source # 
Instance details

Defined in Grisette.Internal.Internal.Impl.Unified.Class.UnifiedSymOrd

Methods

withBaseSymOrd :: (If (IsConMode mode) (Ord (Either a1 a2)) (SymOrd (Either a1 a2)) => r) -> r Source #

(DecideEvalMode mode, ValidFP a1 a2) => UnifiedSymOrd mode (FP a1 a2) Source # 
Instance details

Defined in Grisette.Internal.Internal.Impl.Unified.Class.UnifiedSymOrd

Methods

withBaseSymOrd :: (If (IsConMode mode) (Ord (FP a1 a2)) (SymOrd (FP a1 a2)) => r) -> r Source #

(DecideEvalMode mode, UnifiedSymOrd1 mode a1, UnifiedSymOrd mode a2) => UnifiedSymOrd mode (MaybeT a1 a2) Source # 
Instance details

Defined in Grisette.Internal.Internal.Impl.Unified.Class.UnifiedSymOrd

Methods

withBaseSymOrd :: (If (IsConMode mode) (Ord (MaybeT a1 a2)) (SymOrd (MaybeT a1 a2)) => r) -> r Source #

(DecideEvalMode mode, UnifiedSymOrd mode a1, UnifiedSymOrd mode a2) => UnifiedSymOrd mode (a1, a2) Source # 
Instance details

Defined in Grisette.Internal.Internal.Impl.Unified.Class.UnifiedSymOrd

Methods

withBaseSymOrd :: (If (IsConMode mode) (Ord (a1, a2)) (SymOrd (a1, a2)) => r) -> r Source #

(DecideEvalMode mode, UnifiedSymOrd mode a1, UnifiedSymOrd1 mode a2, UnifiedSymOrd mode a3) => UnifiedSymOrd mode (ExceptT a1 a2 a3) Source # 
Instance details

Defined in Grisette.Internal.Internal.Impl.Unified.Class.UnifiedSymOrd

Methods

withBaseSymOrd :: (If (IsConMode mode) (Ord (ExceptT a1 a2 a3)) (SymOrd (ExceptT a1 a2 a3)) => r) -> r Source #

(DecideEvalMode mode, UnifiedSymOrd1 mode m, UnifiedSymOrd mode a) => UnifiedSymOrd mode (IdentityT m a) Source # 
Instance details

Defined in Grisette.Internal.Internal.Impl.Unified.Class.UnifiedSymOrd

Methods

withBaseSymOrd :: (If (IsConMode mode) (Ord (IdentityT m a)) (SymOrd (IdentityT m a)) => r) -> r Source #

(DecideEvalMode mode, UnifiedSymOrd mode a1, UnifiedSymOrd1 mode a2, UnifiedSymOrd mode a3) => UnifiedSymOrd mode (WriterT a1 a2 a3) Source # 
Instance details

Defined in Grisette.Internal.Internal.Impl.Unified.Class.UnifiedSymOrd

Methods

withBaseSymOrd :: (If (IsConMode mode) (Ord (WriterT a1 a2 a3)) (SymOrd (WriterT a1 a2 a3)) => r) -> r Source #

(DecideEvalMode mode, UnifiedSymOrd mode a1, UnifiedSymOrd1 mode a2, UnifiedSymOrd mode a3) => UnifiedSymOrd mode (WriterT a1 a2 a3) Source # 
Instance details

Defined in Grisette.Internal.Internal.Impl.Unified.Class.UnifiedSymOrd

Methods

withBaseSymOrd :: (If (IsConMode mode) (Ord (WriterT a1 a2 a3)) (SymOrd (WriterT a1 a2 a3)) => r) -> r Source #

(DecideEvalMode mode, UnifiedSymOrd mode a1, UnifiedSymOrd mode a2, UnifiedSymOrd mode a3) => UnifiedSymOrd mode (a1, a2, a3) Source # 
Instance details

Defined in Grisette.Internal.Internal.Impl.Unified.Class.UnifiedSymOrd

Methods

withBaseSymOrd :: (If (IsConMode mode) (Ord (a1, a2, a3)) (SymOrd (a1, a2, a3)) => r) -> r Source #

(DecideEvalMode mode, UnifiedSymOrd1 mode f, UnifiedSymOrd1 mode g, UnifiedSymOrd mode a) => UnifiedSymOrd mode (Sum f g a) Source # 
Instance details

Defined in Grisette.Internal.Internal.Impl.Unified.Class.UnifiedSymOrd

Methods

withBaseSymOrd :: (If (IsConMode mode) (Ord (Sum f g a)) (SymOrd (Sum f g a)) => r) -> r Source #

(DecideEvalMode mode, UnifiedSymOrd mode a1, UnifiedSymOrd mode a2, UnifiedSymOrd mode a3, UnifiedSymOrd mode a4) => UnifiedSymOrd mode (a1, a2, a3, a4) Source # 
Instance details

Defined in Grisette.Internal.Internal.Impl.Unified.Class.UnifiedSymOrd

Methods

withBaseSymOrd :: (If (IsConMode mode) (Ord (a1, a2, a3, a4)) (SymOrd (a1, a2, a3, a4)) => r) -> r Source #

(DecideEvalMode mode, UnifiedSymOrd mode a1, UnifiedSymOrd mode a2, UnifiedSymOrd mode a3, UnifiedSymOrd mode a4, UnifiedSymOrd mode a5) => UnifiedSymOrd mode (a1, a2, a3, a4, a5) Source # 
Instance details

Defined in Grisette.Internal.Internal.Impl.Unified.Class.UnifiedSymOrd

Methods

withBaseSymOrd :: (If (IsConMode mode) (Ord (a1, a2, a3, a4, a5)) (SymOrd (a1, a2, a3, a4, a5)) => r) -> r Source #

(DecideEvalMode mode, UnifiedSymOrd mode a1, UnifiedSymOrd mode a2, UnifiedSymOrd mode a3, UnifiedSymOrd mode a4, UnifiedSymOrd mode a5, UnifiedSymOrd mode a6) => UnifiedSymOrd mode (a1, a2, a3, a4, a5, a6) Source # 
Instance details

Defined in Grisette.Internal.Internal.Impl.Unified.Class.UnifiedSymOrd

Methods

withBaseSymOrd :: (If (IsConMode mode) (Ord (a1, a2, a3, a4, a5, a6)) (SymOrd (a1, a2, a3, a4, a5, a6)) => r) -> r Source #

(DecideEvalMode mode, UnifiedSymOrd mode a1, UnifiedSymOrd mode a2, UnifiedSymOrd mode a3, UnifiedSymOrd mode a4, UnifiedSymOrd mode a5, UnifiedSymOrd mode a6, UnifiedSymOrd mode a7) => UnifiedSymOrd mode (a1, a2, a3, a4, a5, a6, a7) Source # 
Instance details

Defined in Grisette.Internal.Internal.Impl.Unified.Class.UnifiedSymOrd

Methods

withBaseSymOrd :: (If (IsConMode mode) (Ord (a1, a2, a3, a4, a5, a6, a7)) (SymOrd (a1, a2, a3, a4, a5, a6, a7)) => r) -> r Source #

(DecideEvalMode mode, UnifiedSymOrd mode a1, UnifiedSymOrd mode a2, UnifiedSymOrd mode a3, UnifiedSymOrd mode a4, UnifiedSymOrd mode a5, UnifiedSymOrd mode a6, UnifiedSymOrd mode a7, UnifiedSymOrd mode a8) => UnifiedSymOrd mode (a1, a2, a3, a4, a5, a6, a7, a8) Source # 
Instance details

Defined in Grisette.Internal.Internal.Impl.Unified.Class.UnifiedSymOrd

Methods

withBaseSymOrd :: (If (IsConMode mode) (Ord (a1, a2, a3, a4, a5, a6, a7, a8)) (SymOrd (a1, a2, a3, a4, a5, a6, a7, a8)) => r) -> r Source #

(DecideEvalMode mode, UnifiedSymOrd mode a1, UnifiedSymOrd mode a2, UnifiedSymOrd mode a3, UnifiedSymOrd mode a4, UnifiedSymOrd mode a5, UnifiedSymOrd mode a6, UnifiedSymOrd mode a7, UnifiedSymOrd mode a8, UnifiedSymOrd mode a9) => UnifiedSymOrd mode (a1, a2, a3, a4, a5, a6, a7, a8, a9) Source # 
Instance details

Defined in Grisette.Internal.Internal.Impl.Unified.Class.UnifiedSymOrd

Methods

withBaseSymOrd :: (If (IsConMode mode) (Ord (a1, a2, a3, a4, a5, a6, a7, a8, a9)) (SymOrd (a1, a2, a3, a4, a5, a6, a7, a8, a9)) => r) -> r Source #

(DecideEvalMode mode, UnifiedSymOrd mode a1, UnifiedSymOrd mode a2, UnifiedSymOrd mode a3, UnifiedSymOrd mode a4, UnifiedSymOrd mode a5, UnifiedSymOrd mode a6, UnifiedSymOrd mode a7, UnifiedSymOrd mode a8, UnifiedSymOrd mode a9, UnifiedSymOrd mode a10) => UnifiedSymOrd mode (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10) Source # 
Instance details

Defined in Grisette.Internal.Internal.Impl.Unified.Class.UnifiedSymOrd

Methods

withBaseSymOrd :: (If (IsConMode mode) (Ord (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10)) (SymOrd (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10)) => r) -> r Source #

(DecideEvalMode mode, UnifiedSymOrd mode a1, UnifiedSymOrd mode a2, UnifiedSymOrd mode a3, UnifiedSymOrd mode a4, UnifiedSymOrd mode a5, UnifiedSymOrd mode a6, UnifiedSymOrd mode a7, UnifiedSymOrd mode a8, UnifiedSymOrd mode a9, UnifiedSymOrd mode a10, UnifiedSymOrd mode a11) => UnifiedSymOrd mode (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11) Source # 
Instance details

Defined in Grisette.Internal.Internal.Impl.Unified.Class.UnifiedSymOrd

Methods

withBaseSymOrd :: (If (IsConMode mode) (Ord (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11)) (SymOrd (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11)) => r) -> r Source #

(DecideEvalMode mode, UnifiedSymOrd mode a1, UnifiedSymOrd mode a2, UnifiedSymOrd mode a3, UnifiedSymOrd mode a4, UnifiedSymOrd mode a5, UnifiedSymOrd mode a6, UnifiedSymOrd mode a7, UnifiedSymOrd mode a8, UnifiedSymOrd mode a9, UnifiedSymOrd mode a10, UnifiedSymOrd mode a11, UnifiedSymOrd mode a12) => UnifiedSymOrd mode (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12) Source # 
Instance details

Defined in Grisette.Internal.Internal.Impl.Unified.Class.UnifiedSymOrd

Methods

withBaseSymOrd :: (If (IsConMode mode) (Ord (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12)) (SymOrd (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12)) => r) -> r Source #

(DecideEvalMode mode, UnifiedSymOrd mode a1, UnifiedSymOrd mode a2, UnifiedSymOrd mode a3, UnifiedSymOrd mode a4, UnifiedSymOrd mode a5, UnifiedSymOrd mode a6, UnifiedSymOrd mode a7, UnifiedSymOrd mode a8, UnifiedSymOrd mode a9, UnifiedSymOrd mode a10, UnifiedSymOrd mode a11, UnifiedSymOrd mode a12, UnifiedSymOrd mode a13) => UnifiedSymOrd mode (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13) Source # 
Instance details

Defined in Grisette.Internal.Internal.Impl.Unified.Class.UnifiedSymOrd

Methods

withBaseSymOrd :: (If (IsConMode mode) (Ord (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13)) (SymOrd (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13)) => r) -> r Source #

(DecideEvalMode mode, UnifiedSymOrd mode a1, UnifiedSymOrd mode a2, UnifiedSymOrd mode a3, UnifiedSymOrd mode a4, UnifiedSymOrd mode a5, UnifiedSymOrd mode a6, UnifiedSymOrd mode a7, UnifiedSymOrd mode a8, UnifiedSymOrd mode a9, UnifiedSymOrd mode a10, UnifiedSymOrd mode a11, UnifiedSymOrd mode a12, UnifiedSymOrd mode a13, UnifiedSymOrd mode a14) => UnifiedSymOrd mode (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14) Source # 
Instance details

Defined in Grisette.Internal.Internal.Impl.Unified.Class.UnifiedSymOrd

Methods

withBaseSymOrd :: (If (IsConMode mode) (Ord (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14)) (SymOrd (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14)) => r) -> r Source #

(DecideEvalMode mode, UnifiedSymOrd mode a1, UnifiedSymOrd mode a2, UnifiedSymOrd mode a3, UnifiedSymOrd mode a4, UnifiedSymOrd mode a5, UnifiedSymOrd mode a6, UnifiedSymOrd mode a7, UnifiedSymOrd mode a8, UnifiedSymOrd mode a9, UnifiedSymOrd mode a10, UnifiedSymOrd mode a11, UnifiedSymOrd mode a12, UnifiedSymOrd mode a13, UnifiedSymOrd mode a14, UnifiedSymOrd mode a15) => UnifiedSymOrd mode (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15) Source # 
Instance details

Defined in Grisette.Internal.Internal.Impl.Unified.Class.UnifiedSymOrd

Methods

withBaseSymOrd :: (If (IsConMode mode) (Ord (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15)) (SymOrd (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15)) => r) -> r Source #

class UnifiedSymOrd1 (mode :: EvalModeTag) (f :: Type -> Type) where Source #

A class that provides unified lifting of comparison.

We use this type class to help resolve the constraints for Ord1 and SymOrd1.

Methods

withBaseSymOrd1 :: (If (IsConMode mode) (Ord1 f) (SymOrd1 f) => r) -> r Source #

Instances

Instances details
DecideEvalMode mode => UnifiedSymOrd1 mode Identity Source # 
Instance details

Defined in Grisette.Internal.Internal.Impl.Unified.Class.UnifiedSymOrd

Methods

withBaseSymOrd1 :: (If (IsConMode mode) (Ord1 Identity) (SymOrd1 Identity) => r) -> r Source #

DecideEvalMode mode => UnifiedSymOrd1 mode Maybe Source # 
Instance details

Defined in Grisette.Internal.Internal.Impl.Unified.Class.UnifiedSymOrd

Methods

withBaseSymOrd1 :: (If (IsConMode mode) (Ord1 Maybe) (SymOrd1 Maybe) => r) -> r Source #

DecideEvalMode mode => UnifiedSymOrd1 mode [] Source # 
Instance details

Defined in Grisette.Internal.Internal.Impl.Unified.Class.UnifiedSymOrd

Methods

withBaseSymOrd1 :: (If (IsConMode mode) (Ord1 []) (SymOrd1 []) => r) -> r Source #

(DecideEvalMode mode, If (IsConMode mode) (Ord1 f) (SymOrd1 f), forall a. UnifiedSymOrd mode a => UnifiedSymOrd mode (f a)) => UnifiedSymOrd1 mode f Source # 
Instance details

Defined in Grisette.Internal.Internal.Impl.Unified.Class.UnifiedSymOrd

Methods

withBaseSymOrd1 :: (If (IsConMode mode) (Ord1 f) (SymOrd1 f) => r) -> r Source #

(DecideEvalMode mode, UnifiedSymOrd mode a) => UnifiedSymOrd1 mode (Either a) Source # 
Instance details

Defined in Grisette.Internal.Internal.Impl.Unified.Class.UnifiedSymOrd

Methods

withBaseSymOrd1 :: (If (IsConMode mode) (Ord1 (Either a)) (SymOrd1 (Either a)) => r) -> r Source #

(DecideEvalMode mode, UnifiedSymOrd1 mode a) => UnifiedSymOrd1 mode (MaybeT a) Source # 
Instance details

Defined in Grisette.Internal.Internal.Impl.Unified.Class.UnifiedSymOrd

Methods

withBaseSymOrd1 :: (If (IsConMode mode) (Ord1 (MaybeT a)) (SymOrd1 (MaybeT a)) => r) -> r Source #

(DecideEvalMode mode, UnifiedSymOrd mode a) => UnifiedSymOrd1 mode ((,) a) Source # 
Instance details

Defined in Grisette.Internal.Internal.Impl.Unified.Class.UnifiedSymOrd

Methods

withBaseSymOrd1 :: (If (IsConMode mode) (Ord1 ((,) a)) (SymOrd1 ((,) a)) => r) -> r Source #

(DecideEvalMode mode, UnifiedSymOrd mode a1, UnifiedSymOrd1 mode a2) => UnifiedSymOrd1 mode (ExceptT a1 a2) Source # 
Instance details

Defined in Grisette.Internal.Internal.Impl.Unified.Class.UnifiedSymOrd

Methods

withBaseSymOrd1 :: (If (IsConMode mode) (Ord1 (ExceptT a1 a2)) (SymOrd1 (ExceptT a1 a2)) => r) -> r Source #

(DecideEvalMode mode, UnifiedSymOrd1 mode m) => UnifiedSymOrd1 mode (IdentityT m) Source # 
Instance details

Defined in Grisette.Internal.Internal.Impl.Unified.Class.UnifiedSymOrd

Methods

withBaseSymOrd1 :: (If (IsConMode mode) (Ord1 (IdentityT m)) (SymOrd1 (IdentityT m)) => r) -> r Source #

(DecideEvalMode mode, UnifiedSymOrd mode a1, UnifiedSymOrd1 mode a2) => UnifiedSymOrd1 mode (WriterT a1 a2) Source # 
Instance details

Defined in Grisette.Internal.Internal.Impl.Unified.Class.UnifiedSymOrd

Methods

withBaseSymOrd1 :: (If (IsConMode mode) (Ord1 (WriterT a1 a2)) (SymOrd1 (WriterT a1 a2)) => r) -> r Source #

(DecideEvalMode mode, UnifiedSymOrd mode a1, UnifiedSymOrd1 mode a2) => UnifiedSymOrd1 mode (WriterT a1 a2) Source # 
Instance details

Defined in Grisette.Internal.Internal.Impl.Unified.Class.UnifiedSymOrd

Methods

withBaseSymOrd1 :: (If (IsConMode mode) (Ord1 (WriterT a1 a2)) (SymOrd1 (WriterT a1 a2)) => r) -> r Source #

(DecideEvalMode mode, UnifiedSymOrd mode a1, UnifiedSymOrd mode a2) => UnifiedSymOrd1 mode ((,,) a1 a2) Source # 
Instance details

Defined in Grisette.Internal.Internal.Impl.Unified.Class.UnifiedSymOrd

Methods

withBaseSymOrd1 :: (If (IsConMode mode) (Ord1 ((,,) a1 a2)) (SymOrd1 ((,,) a1 a2)) => r) -> r Source #

(DecideEvalMode mode, UnifiedSymOrd1 mode f, UnifiedSymOrd1 mode g) => UnifiedSymOrd1 mode (Sum f g) Source # 
Instance details

Defined in Grisette.Internal.Internal.Impl.Unified.Class.UnifiedSymOrd

Methods

withBaseSymOrd1 :: (If (IsConMode mode) (Ord1 (Sum f g)) (SymOrd1 (Sum f g)) => r) -> r Source #

(DecideEvalMode mode, UnifiedSymOrd mode a1, UnifiedSymOrd mode a2, UnifiedSymOrd mode a3) => UnifiedSymOrd1 mode ((,,,) a1 a2 a3) Source # 
Instance details

Defined in Grisette.Internal.Internal.Impl.Unified.Class.UnifiedSymOrd

Methods

withBaseSymOrd1 :: (If (IsConMode mode) (Ord1 ((,,,) a1 a2 a3)) (SymOrd1 ((,,,) a1 a2 a3)) => r) -> r Source #

class UnifiedSymOrd2 (mode :: EvalModeTag) (f :: Type -> Type -> Type) where Source #

A class that provides unified lifting of comparison.

We use this type class to help resolve the constraints for Ord2 and SymOrd2.

Methods

withBaseSymOrd2 :: (If (IsConMode mode) (Ord2 f) (SymOrd2 f) => r) -> r Source #

Instances

Instances details
DecideEvalMode mode => UnifiedSymOrd2 mode Either Source # 
Instance details

Defined in Grisette.Internal.Internal.Impl.Unified.Class.UnifiedSymOrd

Methods

withBaseSymOrd2 :: (If (IsConMode mode) (Ord2 Either) (SymOrd2 Either) => r) -> r Source #

DecideEvalMode mode => UnifiedSymOrd2 mode (,) Source # 
Instance details

Defined in Grisette.Internal.Internal.Impl.Unified.Class.UnifiedSymOrd

Methods

withBaseSymOrd2 :: (If (IsConMode mode) (Ord2 (,)) (SymOrd2 (,)) => r) -> r Source #

(DecideEvalMode mode, If (IsConMode mode) (Ord2 f) (SymOrd2 f), forall a. UnifiedSymOrd mode a => UnifiedSymOrd1 mode (f a)) => UnifiedSymOrd2 mode f Source # 
Instance details

Defined in Grisette.Internal.Internal.Impl.Unified.Class.UnifiedSymOrd

Methods

withBaseSymOrd2 :: (If (IsConMode mode) (Ord2 f) (SymOrd2 f) => r) -> r Source #

(DecideEvalMode mode, UnifiedSymOrd mode a) => UnifiedSymOrd2 mode ((,,) a) Source # 
Instance details

Defined in Grisette.Internal.Internal.Impl.Unified.Class.UnifiedSymOrd

Methods

withBaseSymOrd2 :: (If (IsConMode mode) (Ord2 ((,,) a)) (SymOrd2 ((,,) a)) => r) -> r Source #

(DecideEvalMode mode, UnifiedSymOrd mode a1, UnifiedSymOrd mode a2) => UnifiedSymOrd2 mode ((,,,) a1 a2) Source # 
Instance details

Defined in Grisette.Internal.Internal.Impl.Unified.Class.UnifiedSymOrd

Methods

withBaseSymOrd2 :: (If (IsConMode mode) (Ord2 ((,,,) a1 a2)) (SymOrd2 ((,,,) a1 a2)) => r) -> r Source #

(.<=) :: forall (mode :: EvalModeTag) a. (DecideEvalMode mode, UnifiedSymOrd mode a) => a -> a -> GetBool mode Source #

Unified (.<=).

Note that you may sometimes need to write type annotations for the result when the mode isn't clear:

a .<= b :: GetBool mode

One example when it isn't clear is when this is used in unified mrgIf.

(.<) :: forall (mode :: EvalModeTag) a. (DecideEvalMode mode, UnifiedSymOrd mode a) => a -> a -> GetBool mode Source #

Unified (.<).

(.>=) :: forall (mode :: EvalModeTag) a. (DecideEvalMode mode, UnifiedSymOrd mode a) => a -> a -> GetBool mode Source #

Unified (.>=).

(.>) :: forall (mode :: EvalModeTag) a. (DecideEvalMode mode, UnifiedSymOrd mode a) => a -> a -> GetBool mode Source #

Unified (.>).

symCompare :: forall (mode :: EvalModeTag) a (ctx :: Type -> Type). (DecideEvalMode mode, UnifiedSymOrd mode a, Monad ctx) => a -> a -> BaseMonad mode Ordering Source #

Unified symCompare.

liftSymCompare :: forall (mode :: EvalModeTag) f a b. (DecideEvalMode mode, UnifiedSymOrd1 mode f) => (a -> b -> BaseMonad mode Ordering) -> f a -> f b -> BaseMonad mode Ordering Source #

symCompare1 :: forall (mode :: EvalModeTag) f a. (DecideEvalMode mode, UnifiedSymOrd mode a, UnifiedSymOrd1 mode f) => f a -> f a -> BaseMonad mode Ordering Source #

Unified symCompare1.

liftSymCompare2 :: forall (mode :: EvalModeTag) f a b c d. (DecideEvalMode mode, UnifiedSymOrd2 mode f) => (a -> b -> BaseMonad mode Ordering) -> (c -> d -> BaseMonad mode Ordering) -> f a c -> f b d -> BaseMonad mode Ordering Source #

symCompare2 :: forall (mode :: EvalModeTag) f a b. (DecideEvalMode mode, UnifiedSymOrd mode a, UnifiedSymOrd mode b, UnifiedSymOrd2 mode f) => f a b -> f a b -> BaseMonad mode Ordering Source #

Unified symCompare2.

symMax :: forall (mode :: EvalModeTag) a. (UnifiedSymOrd mode a, UnifiedITEOp mode a, DecideEvalMode mode) => a -> a -> a Source #

Unified symMax.

symMin :: forall (mode :: EvalModeTag) a. (UnifiedSymOrd mode a, UnifiedITEOp mode a, DecideEvalMode mode) => a -> a -> a Source #

Unified symMin.

mrgMax :: forall (mode :: EvalModeTag) a m. (UnifiedSymOrd mode a, UnifiedBranching mode m, DecideEvalMode mode, Applicative m, Mergeable a) => a -> a -> m a Source #

Unified mrgMax.

mrgMin :: forall (mode :: EvalModeTag) a m. (UnifiedSymOrd mode a, UnifiedBranching mode m, DecideEvalMode mode, Applicative m, Mergeable a) => a -> a -> m a Source #

Unified mrgMin.

Unified finite bits

class UnifiedFiniteBits (mode :: EvalModeTag) a where Source #

A class that provides unified equality comparison.

We use this type class to help resolve the constraints for FiniteBits, FromBits and SymFiniteBits.

Methods

withBaseFiniteBits :: (If (IsConMode mode) (FiniteBits a, FromBits a) (SymFiniteBits a) => r) -> r Source #

Instances

Instances details
UnifiedFiniteBits 'C SomeIntN Source # 
Instance details

Defined in Grisette.Internal.Unified.Class.UnifiedFiniteBits

UnifiedFiniteBits 'C SomeWordN Source # 
Instance details

Defined in Grisette.Internal.Unified.Class.UnifiedFiniteBits

UnifiedFiniteBits 'S SomeSymIntN Source # 
Instance details

Defined in Grisette.Internal.Unified.Class.UnifiedFiniteBits

UnifiedFiniteBits 'S SomeSymWordN Source # 
Instance details

Defined in Grisette.Internal.Unified.Class.UnifiedFiniteBits

(KnownNat n, 1 <= n) => UnifiedFiniteBits 'C (IntN n) Source # 
Instance details

Defined in Grisette.Internal.Unified.Class.UnifiedFiniteBits

(KnownNat n, 1 <= n) => UnifiedFiniteBits 'C (WordN n) Source # 
Instance details

Defined in Grisette.Internal.Unified.Class.UnifiedFiniteBits

(KnownNat n, 1 <= n) => UnifiedFiniteBits 'S (SymIntN n) Source # 
Instance details

Defined in Grisette.Internal.Unified.Class.UnifiedFiniteBits

(KnownNat n, 1 <= n) => UnifiedFiniteBits 'S (SymWordN n) Source # 
Instance details

Defined in Grisette.Internal.Unified.Class.UnifiedFiniteBits

symTestBit :: forall (mode :: EvalModeTag) a. (DecideEvalMode mode, UnifiedFiniteBits mode a) => a -> Int -> GetBool mode Source #

Unified symTestBit.

symSetBitTo :: forall (mode :: EvalModeTag) a. (DecideEvalMode mode, UnifiedFiniteBits mode a) => a -> Int -> GetBool mode -> a Source #

Unified symSetBitTo.

symFromBits :: forall (mode :: EvalModeTag) a. (DecideEvalMode mode, UnifiedFiniteBits mode a) => [GetBool mode] -> a Source #

Unified symFromBits.

symBitBlast :: forall (mode :: EvalModeTag) a. (DecideEvalMode mode, UnifiedFiniteBits mode a) => a -> [GetBool mode] Source #

Unified symBitBlast.

symLsb :: forall (mode :: EvalModeTag) a. (DecideEvalMode mode, UnifiedFiniteBits mode a) => a -> GetBool mode Source #

Unified symLsb.

symMsb :: forall (mode :: EvalModeTag) a. (DecideEvalMode mode, UnifiedFiniteBits mode a) => a -> GetBool mode Source #

Unified symMsb.

symPopCount :: forall (mode :: EvalModeTag) a. (DecideEvalMode mode, UnifiedFiniteBits mode a, Num a, UnifiedITEOp mode a) => a -> a Source #

Unified symPopCount.

symCountLeadingZeros :: forall (mode :: EvalModeTag) a. (DecideEvalMode mode, UnifiedFiniteBits mode a, Num a, UnifiedITEOp mode a) => a -> a Source #

symCountTrailingZeros :: forall (mode :: EvalModeTag) a. (DecideEvalMode mode, UnifiedFiniteBits mode a, Num a, UnifiedITEOp mode a) => a -> a Source #

Unified conversions

class UnifiedFromIntegral (mode :: EvalModeTag) a b where Source #

A class that provides unified conversion from integral types.

We use this type class to help resolve the constraints for SymFromIntegral.

Methods

withBaseFromIntegral :: (If (IsConMode mode) (Integral a, Num b) (SymFromIntegral a b) => r) -> r Source #

Instances

Instances details
UnifiedFromIntegral 'C Integer AlgReal Source # 
Instance details

Defined in Grisette.Internal.Unified.Class.UnifiedFromIntegral

UnifiedFromIntegral 'C Integer Integer Source # 
Instance details

Defined in Grisette.Internal.Unified.Class.UnifiedFromIntegral

UnifiedFromIntegral 'S SymInteger SymAlgReal Source # 
Instance details

Defined in Grisette.Internal.Unified.Class.UnifiedFromIntegral

UnifiedFromIntegral 'S SymInteger SymInteger Source # 
Instance details

Defined in Grisette.Internal.Unified.Class.UnifiedFromIntegral

(DecideEvalMode mode, If (IsConMode mode) (Integral a, Num b) (SymFromIntegral a b)) => UnifiedFromIntegral mode a b Source # 
Instance details

Defined in Grisette.Internal.Unified.Class.UnifiedFromIntegral

Methods

withBaseFromIntegral :: (If (IsConMode mode) (Integral a, Num b) (SymFromIntegral a b) => r) -> r Source #

(KnownNat n, 1 <= n) => UnifiedFromIntegral 'C Integer (IntN n) Source # 
Instance details

Defined in Grisette.Internal.Unified.Class.UnifiedFromIntegral

(KnownNat n, 1 <= n) => UnifiedFromIntegral 'C Integer (WordN n) Source # 
Instance details

Defined in Grisette.Internal.Unified.Class.UnifiedFromIntegral

(KnownNat n, 1 <= n) => UnifiedFromIntegral 'S SymInteger (SymIntN n) Source # 
Instance details

Defined in Grisette.Internal.Unified.Class.UnifiedFromIntegral

(KnownNat n, 1 <= n) => UnifiedFromIntegral 'S SymInteger (SymWordN n) Source # 
Instance details

Defined in Grisette.Internal.Unified.Class.UnifiedFromIntegral

ValidFP eb sb => UnifiedFromIntegral 'C Integer (FP eb sb) Source # 
Instance details

Defined in Grisette.Internal.Unified.Class.UnifiedFromIntegral

Methods

withBaseFromIntegral :: (If (IsConMode 'C) (Integral Integer, Num (FP eb sb)) (SymFromIntegral Integer (FP eb sb)) => r) -> r Source #

ValidFP eb sb => UnifiedFromIntegral 'S SymInteger (SymFP eb sb) Source # 
Instance details

Defined in Grisette.Internal.Unified.Class.UnifiedFromIntegral

(KnownNat n', 1 <= n') => UnifiedFromIntegral 'C (IntN n') AlgReal Source # 
Instance details

Defined in Grisette.Internal.Unified.Class.UnifiedFromIntegral

(KnownNat n', 1 <= n') => UnifiedFromIntegral 'C (IntN n') Integer Source # 
Instance details

Defined in Grisette.Internal.Unified.Class.UnifiedFromIntegral

(KnownNat n', 1 <= n') => UnifiedFromIntegral 'C (WordN n') AlgReal Source # 
Instance details

Defined in Grisette.Internal.Unified.Class.UnifiedFromIntegral

(KnownNat n', 1 <= n') => UnifiedFromIntegral 'C (WordN n') Integer Source # 
Instance details

Defined in Grisette.Internal.Unified.Class.UnifiedFromIntegral

(KnownNat n', 1 <= n') => UnifiedFromIntegral 'S (SymIntN n') SymAlgReal Source # 
Instance details

Defined in Grisette.Internal.Unified.Class.UnifiedFromIntegral

(KnownNat n', 1 <= n') => UnifiedFromIntegral 'S (SymIntN n') SymInteger Source # 
Instance details

Defined in Grisette.Internal.Unified.Class.UnifiedFromIntegral

(KnownNat n', 1 <= n') => UnifiedFromIntegral 'S (SymWordN n') SymAlgReal Source # 
Instance details

Defined in Grisette.Internal.Unified.Class.UnifiedFromIntegral

(KnownNat n', 1 <= n') => UnifiedFromIntegral 'S (SymWordN n') SymInteger Source # 
Instance details

Defined in Grisette.Internal.Unified.Class.UnifiedFromIntegral

(KnownNat n', 1 <= n', KnownNat n, 1 <= n) => UnifiedFromIntegral 'C (IntN n') (IntN n) Source # 
Instance details

Defined in Grisette.Internal.Unified.Class.UnifiedFromIntegral

Methods

withBaseFromIntegral :: (If (IsConMode 'C) (Integral (IntN n'), Num (IntN n)) (SymFromIntegral (IntN n') (IntN n)) => r) -> r Source #

(KnownNat n', 1 <= n', KnownNat n, 1 <= n) => UnifiedFromIntegral 'C (IntN n') (WordN n) Source # 
Instance details

Defined in Grisette.Internal.Unified.Class.UnifiedFromIntegral

Methods

withBaseFromIntegral :: (If (IsConMode 'C) (Integral (IntN n'), Num (WordN n)) (SymFromIntegral (IntN n') (WordN n)) => r) -> r Source #

(KnownNat n', 1 <= n', KnownNat n, 1 <= n) => UnifiedFromIntegral 'C (WordN n') (IntN n) Source # 
Instance details

Defined in Grisette.Internal.Unified.Class.UnifiedFromIntegral

Methods

withBaseFromIntegral :: (If (IsConMode 'C) (Integral (WordN n'), Num (IntN n)) (SymFromIntegral (WordN n') (IntN n)) => r) -> r Source #

(KnownNat n', 1 <= n', KnownNat n, 1 <= n) => UnifiedFromIntegral 'C (WordN n') (WordN n) Source # 
Instance details

Defined in Grisette.Internal.Unified.Class.UnifiedFromIntegral

Methods

withBaseFromIntegral :: (If (IsConMode 'C) (Integral (WordN n'), Num (WordN n)) (SymFromIntegral (WordN n') (WordN n)) => r) -> r Source #

(KnownNat n', 1 <= n', KnownNat n, 1 <= n) => UnifiedFromIntegral 'S (SymIntN n') (SymIntN n) Source # 
Instance details

Defined in Grisette.Internal.Unified.Class.UnifiedFromIntegral

(KnownNat n', 1 <= n', KnownNat n, 1 <= n) => UnifiedFromIntegral 'S (SymIntN n') (SymWordN n) Source # 
Instance details

Defined in Grisette.Internal.Unified.Class.UnifiedFromIntegral

(KnownNat n', 1 <= n', KnownNat n, 1 <= n) => UnifiedFromIntegral 'S (SymWordN n') (SymIntN n) Source # 
Instance details

Defined in Grisette.Internal.Unified.Class.UnifiedFromIntegral

(KnownNat n', 1 <= n', KnownNat n, 1 <= n) => UnifiedFromIntegral 'S (SymWordN n') (SymWordN n) Source # 
Instance details

Defined in Grisette.Internal.Unified.Class.UnifiedFromIntegral

(KnownNat n', 1 <= n', ValidFP eb sb) => UnifiedFromIntegral 'C (IntN n') (FP eb sb) Source # 
Instance details

Defined in Grisette.Internal.Unified.Class.UnifiedFromIntegral

Methods

withBaseFromIntegral :: (If (IsConMode 'C) (Integral (IntN n'), Num (FP eb sb)) (SymFromIntegral (IntN n') (FP eb sb)) => r) -> r Source #

(KnownNat n', 1 <= n', ValidFP eb sb) => UnifiedFromIntegral 'C (WordN n') (FP eb sb) Source # 
Instance details

Defined in Grisette.Internal.Unified.Class.UnifiedFromIntegral

Methods

withBaseFromIntegral :: (If (IsConMode 'C) (Integral (WordN n'), Num (FP eb sb)) (SymFromIntegral (WordN n') (FP eb sb)) => r) -> r Source #

(KnownNat n', 1 <= n', ValidFP eb sb) => UnifiedFromIntegral 'S (SymIntN n') (SymFP eb sb) Source # 
Instance details

Defined in Grisette.Internal.Unified.Class.UnifiedFromIntegral

Methods

withBaseFromIntegral :: (If (IsConMode 'S) (Integral (SymIntN n'), Num (SymFP eb sb)) (SymFromIntegral (SymIntN n') (SymFP eb sb)) => r) -> r Source #

(KnownNat n', 1 <= n', ValidFP eb sb) => UnifiedFromIntegral 'S (SymWordN n') (SymFP eb sb) Source # 
Instance details

Defined in Grisette.Internal.Unified.Class.UnifiedFromIntegral

Methods

withBaseFromIntegral :: (If (IsConMode 'S) (Integral (SymWordN n'), Num (SymFP eb sb)) (SymFromIntegral (SymWordN n') (SymFP eb sb)) => r) -> r Source #

symFromIntegral :: forall (mode :: EvalModeTag) a b. (DecideEvalMode mode, UnifiedFromIntegral mode a b) => a -> b Source #

Unified symFromIntegral operation.

This function isn't able to infer the mode, so you need to provide the mode explicitly. For example:

symFromIntegral @mode a

class UnifiedSafeBitCast (mode :: EvalModeTag) e a b (m :: Type -> Type) where Source #

A class that provides unified safe bitcast operations.

We use this type class to help resolve the constraints for SafeBitCast.

Methods

withBaseSafeBitCast :: (SafeBitCast e a b m => r) -> r Source #

Instances

Instances details
(UnifiedBranching mode m, SafeBitCast e a b m) => UnifiedSafeBitCast mode e a b m Source # 
Instance details

Defined in Grisette.Internal.Unified.Class.UnifiedSafeBitCast

Methods

withBaseSafeBitCast :: (SafeBitCast e a b m => r) -> r Source #

(MonadError NotRepresentableFPError m, UnifiedBranching 'S m, ValidFP eb sb, KnownNat n, 1 <= n, n ~ (eb + sb)) => UnifiedSafeBitCast 'S NotRepresentableFPError (SymFP eb sb) (SymIntN n) m Source # 
Instance details

Defined in Grisette.Internal.Unified.Class.UnifiedSafeBitCast

(MonadError NotRepresentableFPError m, UnifiedBranching 'S m, ValidFP eb sb, KnownNat n, 1 <= n, n ~ (eb + sb)) => UnifiedSafeBitCast 'S NotRepresentableFPError (SymFP eb sb) (SymWordN n) m Source # 
Instance details

Defined in Grisette.Internal.Unified.Class.UnifiedSafeBitCast

(MonadError NotRepresentableFPError m, UnifiedBranching mode m, ValidFP eb sb, KnownNat n, 1 <= n, n ~ (eb + sb)) => UnifiedSafeBitCast mode NotRepresentableFPError (FP eb sb) (IntN n) m Source # 
Instance details

Defined in Grisette.Internal.Unified.Class.UnifiedSafeBitCast

(MonadError NotRepresentableFPError m, UnifiedBranching mode m, ValidFP eb sb, KnownNat n, 1 <= n, n ~ (eb + sb)) => UnifiedSafeBitCast mode NotRepresentableFPError (FP eb sb) (WordN n) m Source # 
Instance details

Defined in Grisette.Internal.Unified.Class.UnifiedSafeBitCast

safeBitCast :: forall (mode :: EvalModeTag) e a b m. (MonadError e m, UnifiedSafeBitCast mode e a b m) => a -> m b Source #

Unified safeSub operation.

This function isn't able to infer the mode, so you need to provide the mode explicitly. For example:

safeSub @mode a b

class UnifiedSafeFromFP (mode :: EvalModeTag) e a fp fprd (m :: Type -> Type) where Source #

A class that provides unified safe conversion from floating points.

We use this type class to help resolve the constraints for SafeFromFP.

Methods

withBaseSafeFromFP :: (SafeFromFP e a fp fprd m => r) -> r Source #

Instances

Instances details
(UnifiedBranching mode m, SafeFromFP e a fp fprd m) => UnifiedSafeFromFP mode e a fp fprd m Source # 
Instance details

Defined in Grisette.Internal.Unified.Class.UnifiedSafeFromFP

Methods

withBaseSafeFromFP :: (SafeFromFP e a fp fprd m => r) -> r Source #

(MonadError NotRepresentableFPError m, UnifiedBranching 'S m, ValidFP eb sb) => UnifiedSafeFromFP 'S NotRepresentableFPError SymAlgReal (SymFP eb sb) SymFPRoundingMode m Source # 
Instance details

Defined in Grisette.Internal.Unified.Class.UnifiedSafeFromFP

(MonadError NotRepresentableFPError m, UnifiedBranching 'S m, ValidFP eb sb) => UnifiedSafeFromFP 'S NotRepresentableFPError SymInteger (SymFP eb sb) SymFPRoundingMode m Source # 
Instance details

Defined in Grisette.Internal.Unified.Class.UnifiedSafeFromFP

(MonadError NotRepresentableFPError m, UnifiedBranching mode m, ValidFP eb sb) => UnifiedSafeFromFP mode NotRepresentableFPError AlgReal (FP eb sb) FPRoundingMode m Source # 
Instance details

Defined in Grisette.Internal.Unified.Class.UnifiedSafeFromFP

(MonadError NotRepresentableFPError m, UnifiedBranching mode m, ValidFP eb sb) => UnifiedSafeFromFP mode NotRepresentableFPError Integer (FP eb sb) FPRoundingMode m Source # 
Instance details

Defined in Grisette.Internal.Unified.Class.UnifiedSafeFromFP

(MonadError NotRepresentableFPError m, UnifiedBranching 'S m, ValidFP eb sb, KnownNat n, 1 <= n) => UnifiedSafeFromFP 'S NotRepresentableFPError (SymIntN n) (SymFP eb sb) SymFPRoundingMode m Source # 
Instance details

Defined in Grisette.Internal.Unified.Class.UnifiedSafeFromFP

(MonadError NotRepresentableFPError m, UnifiedBranching 'S m, ValidFP eb sb, KnownNat n, 1 <= n) => UnifiedSafeFromFP 'S NotRepresentableFPError (SymWordN n) (SymFP eb sb) SymFPRoundingMode m Source # 
Instance details

Defined in Grisette.Internal.Unified.Class.UnifiedSafeFromFP

(MonadError NotRepresentableFPError m, UnifiedBranching mode m, ValidFP eb sb, KnownNat n, 1 <= n) => UnifiedSafeFromFP mode NotRepresentableFPError (IntN n) (FP eb sb) FPRoundingMode m Source # 
Instance details

Defined in Grisette.Internal.Unified.Class.UnifiedSafeFromFP

(MonadError NotRepresentableFPError m, UnifiedBranching mode m, ValidFP eb sb, KnownNat n, 1 <= n) => UnifiedSafeFromFP mode NotRepresentableFPError (WordN n) (FP eb sb) FPRoundingMode m Source # 
Instance details

Defined in Grisette.Internal.Unified.Class.UnifiedSafeFromFP

safeFromFP :: forall (mode :: EvalModeTag) e a fp fprd m. (UnifiedSafeFromFP mode e a fp fprd m, MonadError e m) => fprd -> fp -> m a Source #

Unified safeFromFP operation.

This function isn't able to infer the mode, so you need to provide the mode explicitly. For example:

safeFromFP @mode mode fp

Unified safe ops

class UnifiedSafeDiv (mode :: EvalModeTag) e a (m :: Type -> Type) where Source #

A class that provides unified division operations.

We use this type class to help resolve the constraints for SafeDiv.

Methods

withBaseSafeDiv :: (SafeDiv e a m => r) -> r Source #

Instances

Instances details
(MonadError ArithException m, UnifiedBranching 'S m) => UnifiedSafeDiv 'S ArithException SymInteger m Source # 
Instance details

Defined in Grisette.Internal.Unified.Class.UnifiedSafeDiv

(MonadError ArithException m, UnifiedBranching mode m) => UnifiedSafeDiv mode ArithException Integer m Source # 
Instance details

Defined in Grisette.Internal.Unified.Class.UnifiedSafeDiv

(UnifiedBranching mode m, SafeDiv e a m) => UnifiedSafeDiv mode e a m Source # 
Instance details

Defined in Grisette.Internal.Unified.Class.UnifiedSafeDiv

Methods

withBaseSafeDiv :: (SafeDiv e a m => r) -> r Source #

(MonadError ArithException m, UnifiedBranching 'S m, KnownNat n, 1 <= n) => UnifiedSafeDiv 'S ArithException (SymIntN n) m Source # 
Instance details

Defined in Grisette.Internal.Unified.Class.UnifiedSafeDiv

(MonadError ArithException m, UnifiedBranching 'S m, KnownNat n, 1 <= n) => UnifiedSafeDiv 'S ArithException (SymWordN n) m Source # 
Instance details

Defined in Grisette.Internal.Unified.Class.UnifiedSafeDiv

(MonadError ArithException m, UnifiedBranching mode m, KnownNat n, 1 <= n) => UnifiedSafeDiv mode ArithException (IntN n) m Source # 
Instance details

Defined in Grisette.Internal.Unified.Class.UnifiedSafeDiv

Methods

withBaseSafeDiv :: (SafeDiv ArithException (IntN n) m => r) -> r Source #

(MonadError ArithException m, UnifiedBranching mode m, KnownNat n, 1 <= n) => UnifiedSafeDiv mode ArithException (WordN n) m Source # 
Instance details

Defined in Grisette.Internal.Unified.Class.UnifiedSafeDiv

Methods

withBaseSafeDiv :: (SafeDiv ArithException (WordN n) m => r) -> r Source #

(MonadError (Either SomeBVException ArithException) m, UnifiedBranching 'S m) => UnifiedSafeDiv 'S (Either SomeBVException ArithException) SomeSymIntN m Source # 
Instance details

Defined in Grisette.Internal.Unified.Class.UnifiedSafeDiv

(MonadError (Either SomeBVException ArithException) m, UnifiedBranching 'S m) => UnifiedSafeDiv 'S (Either SomeBVException ArithException) SomeSymWordN m Source # 
Instance details

Defined in Grisette.Internal.Unified.Class.UnifiedSafeDiv

(MonadError (Either SomeBVException ArithException) m, UnifiedBranching mode m) => UnifiedSafeDiv mode (Either SomeBVException ArithException) SomeIntN m Source # 
Instance details

Defined in Grisette.Internal.Unified.Class.UnifiedSafeDiv

(MonadError (Either SomeBVException ArithException) m, UnifiedBranching mode m) => UnifiedSafeDiv mode (Either SomeBVException ArithException) SomeWordN m Source # 
Instance details

Defined in Grisette.Internal.Unified.Class.UnifiedSafeDiv

safeDiv :: forall (mode :: EvalModeTag) e a m. (MonadError e m, UnifiedSafeDiv mode e a m) => a -> a -> m a Source #

Unified safeDiv operation.

This function isn't able to infer the mode, so you need to provide the mode explicitly. For example:

safeDiv @mode a b

safeMod :: forall (mode :: EvalModeTag) e a m. (MonadError e m, UnifiedSafeDiv mode e a m) => a -> a -> m a Source #

Unified safeMod operation.

This function isn't able to infer the mode, so you need to provide the mode explicitly. For example:

safeMod @mode a b

safeDivMod :: forall (mode :: EvalModeTag) e a m. (MonadError e m, UnifiedSafeDiv mode e a m) => a -> a -> m (a, a) Source #

Unified safeDivMod operation.

This function isn't able to infer the mode, so you need to provide the mode explicitly. For example:

safeDivMod @mode a b

safeQuot :: forall (mode :: EvalModeTag) e a m. (MonadError e m, UnifiedSafeDiv mode e a m) => a -> a -> m a Source #

Unified safeQuot operation.

This function isn't able to infer the mode, so you need to provide the mode explicitly. For example:

safeQuot @mode a b

safeRem :: forall (mode :: EvalModeTag) e a m. (MonadError e m, UnifiedSafeDiv mode e a m) => a -> a -> m a Source #

Unified safeRem operation.

This function isn't able to infer the mode, so you need to provide the mode explicitly. For example:

safeRem @mode a b

safeQuotRem :: forall (mode :: EvalModeTag) e a m. (MonadError e m, UnifiedSafeDiv mode e a m) => a -> a -> m (a, a) Source #

Unified safeQuotRem operation.

This function isn't able to infer the mode, so you need to provide the mode explicitly. For example:

safeQuotRem @mode a b

class UnifiedSafeLinearArith (mode :: EvalModeTag) e a (m :: Type -> Type) where Source #

A class that provides unified linear arithmetic operations.

We use this type class to help resolve the constraints for SafeLinearArith.

Methods

withBaseSafeLinearArith :: (SafeLinearArith e a m => r) -> r Source #

Instances

Instances details
(MonadError ArithException m, UnifiedBranching 'S m) => UnifiedSafeLinearArith 'S ArithException SymInteger m Source # 
Instance details

Defined in Grisette.Internal.Unified.Class.UnifiedSafeLinearArith

(MonadError ArithException m, UnifiedBranching mode m) => UnifiedSafeLinearArith mode ArithException Integer m Source # 
Instance details

Defined in Grisette.Internal.Unified.Class.UnifiedSafeLinearArith

(UnifiedBranching mode m, SafeLinearArith e a m) => UnifiedSafeLinearArith mode e a m Source # 
Instance details

Defined in Grisette.Internal.Unified.Class.UnifiedSafeLinearArith

Methods

withBaseSafeLinearArith :: (SafeLinearArith e a m => r) -> r Source #

(MonadError ArithException m, UnifiedBranching 'S m, KnownNat n, 1 <= n) => UnifiedSafeLinearArith 'S ArithException (SymIntN n) m Source # 
Instance details

Defined in Grisette.Internal.Unified.Class.UnifiedSafeLinearArith

(MonadError ArithException m, UnifiedBranching 'S m, KnownNat n, 1 <= n) => UnifiedSafeLinearArith 'S ArithException (SymWordN n) m Source # 
Instance details

Defined in Grisette.Internal.Unified.Class.UnifiedSafeLinearArith

(MonadError ArithException m, UnifiedBranching mode m, KnownNat n, 1 <= n) => UnifiedSafeLinearArith mode ArithException (IntN n) m Source # 
Instance details

Defined in Grisette.Internal.Unified.Class.UnifiedSafeLinearArith

(MonadError ArithException m, UnifiedBranching mode m, KnownNat n, 1 <= n) => UnifiedSafeLinearArith mode ArithException (WordN n) m Source # 
Instance details

Defined in Grisette.Internal.Unified.Class.UnifiedSafeLinearArith

(MonadError (Either SomeBVException ArithException) m, UnifiedBranching 'S m) => UnifiedSafeLinearArith 'S (Either SomeBVException ArithException) SomeSymIntN m Source # 
Instance details

Defined in Grisette.Internal.Unified.Class.UnifiedSafeLinearArith

(MonadError (Either SomeBVException ArithException) m, UnifiedBranching 'S m) => UnifiedSafeLinearArith 'S (Either SomeBVException ArithException) SomeSymWordN m Source # 
Instance details

Defined in Grisette.Internal.Unified.Class.UnifiedSafeLinearArith

(MonadError (Either SomeBVException ArithException) m, UnifiedBranching mode m) => UnifiedSafeLinearArith mode (Either SomeBVException ArithException) SomeIntN m Source # 
Instance details

Defined in Grisette.Internal.Unified.Class.UnifiedSafeLinearArith

(MonadError (Either SomeBVException ArithException) m, UnifiedBranching mode m) => UnifiedSafeLinearArith mode (Either SomeBVException ArithException) SomeWordN m Source # 
Instance details

Defined in Grisette.Internal.Unified.Class.UnifiedSafeLinearArith

safeAdd :: forall (mode :: EvalModeTag) e a m. (MonadError e m, UnifiedSafeLinearArith mode e a m) => a -> a -> m a Source #

Unified safeAdd operation.

This function isn't able to infer the mode, so you need to provide the mode explicitly. For example:

safeAdd @mode a b

safeNeg :: forall (mode :: EvalModeTag) e a m. (MonadError e m, UnifiedSafeLinearArith mode e a m) => a -> m a Source #

Unified safeNeg operation.

This function isn't able to infer the mode, so you need to provide the mode explicitly. For example:

safeNeg @mode a

safeSub :: forall (mode :: EvalModeTag) e a m. (MonadError e m, UnifiedSafeLinearArith mode e a m) => a -> a -> m a Source #

Unified safeSub operation.

This function isn't able to infer the mode, so you need to provide the mode explicitly. For example:

safeSub @mode a b

class UnifiedSafeSymRotate (mode :: EvalModeTag) e a (m :: Type -> Type) where Source #

A class that provides unified safe symbolic rotation operations.

We use this type class to help resolve the constraints for SafeSymRotate.

Methods

withBaseSafeSymRotate :: (SafeSymRotate e a m => r) -> r Source #

Instances

Instances details
(UnifiedBranching mode m, SafeSymRotate e a m) => UnifiedSafeSymRotate mode e a m Source # 
Instance details

Defined in Grisette.Internal.Unified.Class.UnifiedSafeSymRotate

Methods

withBaseSafeSymRotate :: (SafeSymRotate e a m => r) -> r Source #

(MonadError ArithException m, UnifiedBranching 'S m, KnownNat n, 1 <= n) => UnifiedSafeSymRotate 'S ArithException (SymIntN n) m Source # 
Instance details

Defined in Grisette.Internal.Unified.Class.UnifiedSafeSymRotate

(MonadError ArithException m, UnifiedBranching 'S m, KnownNat n, 1 <= n) => UnifiedSafeSymRotate 'S ArithException (SymWordN n) m Source # 
Instance details

Defined in Grisette.Internal.Unified.Class.UnifiedSafeSymRotate

(MonadError ArithException m, UnifiedBranching mode m, KnownNat n, 1 <= n) => UnifiedSafeSymRotate mode ArithException (IntN n) m Source # 
Instance details

Defined in Grisette.Internal.Unified.Class.UnifiedSafeSymRotate

(MonadError ArithException m, UnifiedBranching mode m, KnownNat n, 1 <= n) => UnifiedSafeSymRotate mode ArithException (WordN n) m Source # 
Instance details

Defined in Grisette.Internal.Unified.Class.UnifiedSafeSymRotate

(MonadError (Either SomeBVException ArithException) m, UnifiedBranching 'S m) => UnifiedSafeSymRotate 'S (Either SomeBVException ArithException) SomeSymIntN m Source # 
Instance details

Defined in Grisette.Internal.Unified.Class.UnifiedSafeSymRotate

(MonadError (Either SomeBVException ArithException) m, UnifiedBranching 'S m) => UnifiedSafeSymRotate 'S (Either SomeBVException ArithException) SomeSymWordN m Source # 
Instance details

Defined in Grisette.Internal.Unified.Class.UnifiedSafeSymRotate

(MonadError (Either SomeBVException ArithException) m, UnifiedBranching mode m) => UnifiedSafeSymRotate mode (Either SomeBVException ArithException) SomeIntN m Source # 
Instance details

Defined in Grisette.Internal.Unified.Class.UnifiedSafeSymRotate

(MonadError (Either SomeBVException ArithException) m, UnifiedBranching mode m) => UnifiedSafeSymRotate mode (Either SomeBVException ArithException) SomeWordN m Source # 
Instance details

Defined in Grisette.Internal.Unified.Class.UnifiedSafeSymRotate

safeSymRotateL :: forall (mode :: EvalModeTag) e a m. (MonadError e m, UnifiedSafeSymRotate mode e a m) => a -> a -> m a Source #

Unified safeSymRotateL operation.

This function isn't able to infer the mode, so you need to provide the mode explicitly. For example:

safeSymRotateL @mode a b

safeSymRotateR :: forall (mode :: EvalModeTag) e a m. (MonadError e m, UnifiedSafeSymRotate mode e a m) => a -> a -> m a Source #

Unified safeSymRotateR operation.

This function isn't able to infer the mode, so you need to provide the mode explicitly. For example:

safeSymRotateR @mode a b

class UnifiedSafeSymShift (mode :: EvalModeTag) e a (m :: Type -> Type) where Source #

A class that provides unified safe symbolic rotation operations.

We use this type class to help resolve the constraints for SafeSymShift.

Methods

withBaseSafeSymShift :: (SafeSymShift e a m => r) -> r Source #

Instances

Instances details
(UnifiedBranching mode m, SafeSymShift e a m) => UnifiedSafeSymShift mode e a m Source # 
Instance details

Defined in Grisette.Internal.Unified.Class.UnifiedSafeSymShift

Methods

withBaseSafeSymShift :: (SafeSymShift e a m => r) -> r Source #

(MonadError ArithException m, UnifiedBranching 'S m, KnownNat n, 1 <= n) => UnifiedSafeSymShift 'S ArithException (SymIntN n) m Source # 
Instance details

Defined in Grisette.Internal.Unified.Class.UnifiedSafeSymShift

(MonadError ArithException m, UnifiedBranching 'S m, KnownNat n, 1 <= n) => UnifiedSafeSymShift 'S ArithException (SymWordN n) m Source # 
Instance details

Defined in Grisette.Internal.Unified.Class.UnifiedSafeSymShift

(MonadError ArithException m, UnifiedBranching mode m, KnownNat n, 1 <= n) => UnifiedSafeSymShift mode ArithException (IntN n) m Source # 
Instance details

Defined in Grisette.Internal.Unified.Class.UnifiedSafeSymShift

(MonadError ArithException m, UnifiedBranching mode m, KnownNat n, 1 <= n) => UnifiedSafeSymShift mode ArithException (WordN n) m Source # 
Instance details

Defined in Grisette.Internal.Unified.Class.UnifiedSafeSymShift

(MonadError (Either SomeBVException ArithException) m, UnifiedBranching 'S m) => UnifiedSafeSymShift 'S (Either SomeBVException ArithException) SomeSymIntN m Source # 
Instance details

Defined in Grisette.Internal.Unified.Class.UnifiedSafeSymShift

(MonadError (Either SomeBVException ArithException) m, UnifiedBranching 'S m) => UnifiedSafeSymShift 'S (Either SomeBVException ArithException) SomeSymWordN m Source # 
Instance details

Defined in Grisette.Internal.Unified.Class.UnifiedSafeSymShift

(MonadError (Either SomeBVException ArithException) m, UnifiedBranching mode m) => UnifiedSafeSymShift mode (Either SomeBVException ArithException) SomeIntN m Source # 
Instance details

Defined in Grisette.Internal.Unified.Class.UnifiedSafeSymShift

(MonadError (Either SomeBVException ArithException) m, UnifiedBranching mode m) => UnifiedSafeSymShift mode (Either SomeBVException ArithException) SomeWordN m Source # 
Instance details

Defined in Grisette.Internal.Unified.Class.UnifiedSafeSymShift

safeSymShiftL :: forall (mode :: EvalModeTag) e a m. (MonadError e m, UnifiedSafeSymShift mode e a m) => a -> a -> m a Source #

Unified safeSymShiftL operation.

This function isn't able to infer the mode, so you need to provide the mode explicitly. For example:

safeSymShiftL @mode a b

safeSymShiftR :: forall (mode :: EvalModeTag) e a m. (MonadError e m, UnifiedSafeSymShift mode e a m) => a -> a -> m a Source #

Unified safeSymShiftR operation.

This function isn't able to infer the mode, so you need to provide the mode explicitly. For example:

safeSymShiftR @mode a b

safeSymStrictShiftL :: forall (mode :: EvalModeTag) e a m. (MonadError e m, UnifiedSafeSymShift mode e a m) => a -> a -> m a Source #

Unified safeSymStrictShiftL operation.

This function isn't able to infer the mode, so you need to provide the mode explicitly. For example:

safeSymStrictShiftL @mode a b

safeSymStrictShiftR :: forall (mode :: EvalModeTag) e a m. (MonadError e m, UnifiedSafeSymShift mode e a m) => a -> a -> m a Source #

Unified safeSymStrictShiftR operation.

This function isn't able to infer the mode, so you need to provide the mode explicitly. For example:

safeSymStrictShiftR @mode a b

class UnifiedSafeFdiv (mode :: EvalModeTag) e a (m :: Type -> Type) where Source #

A class that provides unified floating division operations.

We use this type class to help resolve the constraints for SafeFdiv.

Methods

withBaseUnifiedSafeFdiv :: (SafeFdiv e a m => r) -> r Source #

safeFdiv :: forall (mode :: EvalModeTag) e a m. (MonadError e m, UnifiedSafeFdiv mode e a m) => a -> a -> m a Source #

Unified safeFdiv operation.

This function isn't able to infer the mode, so you need to provide the mode explicitly. For example:

safeFdiv @mode a b

Shared constraints

type UnifiedPrim (mode :: EvalModeTag) a = (Prim a, UnifiedITEOp mode a, UnifiedSymEq mode a, UnifiedSymOrd mode a) Source #

A type that is used as a constraint for all the (unified) primitive types in Grisette.

type UnifiedBasicPrim (mode :: EvalModeTag) a = (UnifiedPrim mode a, UnifiedSimpleMergeable mode a, UnifiedConRep a, UnifiedSymRep a, UnifiedSolvable mode a (ConType a), ConSymConversion (ConType a) (SymType a) a) Source #

A type that is used as a constraint for all the basic (unified) primitive types in Grisette.

GetSomeWordN is not considered as a basic (unified) primitive type.

Unified types

Boolean

type family GetBool (mode :: EvalModeTag) = (bool :: Type) | bool -> mode Source #

Get a unified Boolean type. Resolves to Bool in C mode, and SymBool in S mode.

Instances

Instances details
type GetBool 'C Source # 
Instance details

Defined in Grisette.Internal.Internal.Impl.Unified.UnifiedBool

type GetBool 'C = Bool
type GetBool 'S Source # 
Instance details

Defined in Grisette.Internal.Internal.Impl.Unified.UnifiedBool

type GetBool 'S = SymBool

Bit-vector

type family GetIntN (mode :: EvalModeTag) = (i :: Nat -> Type) | i -> mode Source #

Get a unified signed size-tagged bit vector type. Resolves to IntN in C mode, and SymIntN in S mode.

Instances

Instances details
type GetIntN 'C Source # 
Instance details

Defined in Grisette.Internal.Internal.Impl.Unified.UnifiedBV

type GetIntN 'C = IntN
type GetIntN 'S Source # 
Instance details

Defined in Grisette.Internal.Internal.Impl.Unified.UnifiedBV

type GetIntN 'S = SymIntN

type family GetWordN (mode :: EvalModeTag) = (w :: Nat -> Type) | w -> mode Source #

Get a unified unsigned size-tagged bit vector type. Resolves to WordN in C mode, and SymWordN in S mode.

Instances

Instances details
type GetWordN 'C Source # 
Instance details

Defined in Grisette.Internal.Internal.Impl.Unified.UnifiedBV

type GetWordN 'C = WordN
type GetWordN 'S Source # 
Instance details

Defined in Grisette.Internal.Internal.Impl.Unified.UnifiedBV

type family GetSomeWordN (mode :: EvalModeTag) = (sw :: Type) | sw -> mode where ... Source #

Get a unified unsigned dynamic bit width bit vector type. Resolves to SomeWordN in C mode, and SomeSymWordN in S mode.

Equations

GetSomeWordN mode = SomeBV (GetWordN mode) 

type family GetSomeIntN (mode :: EvalModeTag) = (sw :: Type) | sw -> mode where ... Source #

Get a unified signed dynamic bit width bit vector type. Resolves to SomeIntN in C mode, and SomeSymIntN in S mode.

Equations

GetSomeIntN mode = SomeBV (GetIntN mode) 

class UnifiedBVImpl mode (GetWordN mode) (GetIntN mode) n (GetWordN mode n) (GetIntN mode n) => UnifiedBV (mode :: EvalModeTag) (n :: Nat) Source #

This class is needed as constraint in user code prior to GHC 9.2.1. See the notes in EvalMode.

Instances

Instances details
UnifiedBVImpl mode (GetWordN mode) (GetIntN mode) n (GetWordN mode n) (GetIntN mode n) => UnifiedBV mode n Source # 
Instance details

Defined in Grisette.Internal.Internal.Impl.Unified.UnifiedBV

class SafeUnifiedBVImpl mode (GetWordN mode) (GetIntN mode) n (GetWordN mode n) (GetIntN mode n) m => SafeUnifiedBV (mode :: EvalModeTag) (n :: Nat) (m :: Type -> Type) Source #

This class is needed as constraint in user code prior to GHC 9.2.1. See the notes in EvalMode.

Instances

Instances details
SafeUnifiedBVImpl mode (GetWordN mode) (GetIntN mode) n (GetWordN mode n) (GetIntN mode n) m => SafeUnifiedBV mode n m Source # 
Instance details

Defined in Grisette.Internal.Internal.Impl.Unified.UnifiedBV

class SafeUnifiedSomeBVImpl mode (SomeBV (GetWordN mode)) (SomeBV (GetIntN mode)) m => SafeUnifiedSomeBV (mode :: EvalModeTag) (m :: Type -> Type) Source #

This class is needed as constraint in user code prior to GHC 9.2.1. See the notes in EvalMode.

Instances

Instances details
SafeUnifiedSomeBVImpl mode (SomeBV (GetWordN mode)) (SomeBV (GetIntN mode)) m => SafeUnifiedSomeBV mode m Source # 
Instance details

Defined in Grisette.Internal.Internal.Impl.Unified.UnifiedBV

Integer

type family GetInteger (mode :: EvalModeTag) = (int :: Type) | int -> mode Source #

Get a unified Integer type. Resolves to Integer in C mode, and SymInteger in S mode.

Instances

Instances details
type GetInteger 'C Source # 
Instance details

Defined in Grisette.Internal.Unified.UnifiedInteger

type GetInteger 'S Source # 
Instance details

Defined in Grisette.Internal.Unified.UnifiedInteger

class UnifiedIntegerImpl mode (GetInteger mode) => UnifiedInteger (mode :: EvalModeTag) Source #

Evaluation mode with unified Integer type.

Instances

Instances details
UnifiedInteger 'C Source # 
Instance details

Defined in Grisette.Internal.Unified.UnifiedInteger

UnifiedInteger 'S Source # 
Instance details

Defined in Grisette.Internal.Unified.UnifiedInteger

FP

type family GetFP (mode :: EvalModeTag) = (f :: Nat -> Nat -> Type) | f -> mode Source #

Get a unified floating point type. Resolves to FP in C mode, and SymFP in S mode.

Instances

Instances details
type GetFP 'C Source # 
Instance details

Defined in Grisette.Internal.Internal.Impl.Unified.UnifiedFP

type GetFP 'C = FP
type GetFP 'S Source # 
Instance details

Defined in Grisette.Internal.Internal.Impl.Unified.UnifiedFP

type GetFP 'S = SymFP

type family GetFPRoundingMode (mode :: EvalModeTag) = (r :: Type) | r -> mode Source #

Get a unified floating point rounding mode type. Resolves to FPRoundingMode in C mode, and SymFPRoundingMode in S mode.

class UnifiedFPImpl mode (GetFP mode) eb sb (GetFP mode eb sb) (GetFPRoundingMode mode) => UnifiedFP (mode :: EvalModeTag) (eb :: Nat) (sb :: Nat) Source #

Evaluation mode with unified FP type.

Instances

Instances details
UnifiedFPImpl mode (GetFP mode) eb sb (GetFP mode eb sb) (GetFPRoundingMode mode) => UnifiedFP mode eb sb Source # 
Instance details

Defined in Grisette.Internal.Internal.Impl.Unified.UnifiedFP

class (SafeUnifiedFPImpl mode (GetFP mode) eb sb (GetFP mode eb sb) (GetFPRoundingMode mode) m, UnifiedSafeFromFP mode NotRepresentableFPError (GetInteger mode) (GetFP mode eb sb) (GetFPRoundingMode mode) m) => SafeUnifiedFP (mode :: EvalModeTag) (eb :: Nat) (sb :: Nat) (m :: Type -> Type) Source #

This class is needed as constraint in user code prior to GHC 9.2.1. See the notes in EvalMode.

Instances

Instances details
(SafeUnifiedFPImpl mode (GetFP mode) eb sb (GetFP mode eb sb) (GetFPRoundingMode mode) m, UnifiedSafeFromFP mode NotRepresentableFPError (GetInteger mode) (GetFP mode eb sb) (GetFPRoundingMode mode) m) => SafeUnifiedFP mode eb sb m Source # 
Instance details

Defined in Grisette.Internal.Internal.Impl.Unified.UnifiedFP

AlgReal

type family GetAlgReal (mode :: EvalModeTag) = (real :: Type) | real -> mode Source #

Get a unified algebraic real type. Resolves to AlgReal in C mode, and SymAlgReal in S mode.

Floating, LogBaseOr and SafeLogBase for SymAlgReal are not provided as they are not available for AlgReal.

Instances

Instances details
type GetAlgReal 'C Source # 
Instance details

Defined in Grisette.Internal.Unified.UnifiedAlgReal

type GetAlgReal 'S Source # 
Instance details

Defined in Grisette.Internal.Unified.UnifiedAlgReal

class UnifiedAlgRealImpl mode (GetAlgReal mode) => UnifiedAlgReal (mode :: EvalModeTag) Source #

Evaluation mode with unified AlgReal type.

Instances

Instances details
UnifiedAlgReal 'C Source # 
Instance details

Defined in Grisette.Internal.Unified.UnifiedAlgReal

UnifiedAlgReal 'S Source # 
Instance details

Defined in Grisette.Internal.Unified.UnifiedAlgReal

Data

type family GetData (mode :: EvalModeTag) v = (r :: Type) | r -> mode v Source #

Get a unified data type. Resolves to v in C mode, and Union v in S mode.

Instances

Instances details
type GetData 'C v Source # 
Instance details

Defined in Grisette.Internal.Unified.UnifiedData

type GetData 'C v = Identity v
type GetData 'S v Source # 
Instance details

Defined in Grisette.Internal.Unified.UnifiedData

type GetData 'S v = Union v

class UnifiedDataImpl mode v (GetData mode v) => UnifiedData (mode :: EvalModeTag) v Source #

This class is needed as constraint in user code prior to GHC 9.2.1. See the notes in IsMode.

Instances

Instances details
UnifiedDataImpl bool v (GetData bool v) => UnifiedData bool v Source # 
Instance details

Defined in Grisette.Internal.Unified.UnifiedData

extractData :: (UnifiedDataImpl mode v u, Mergeable v, Monad m, UnifiedBranching mode m) => u -> m v Source #

Extracts a value from the unified data type.

wrapData :: UnifiedDataImpl mode v u => v -> u Source #

Wraps a value into the unified data type.

Functions

type family GetFun (mode :: EvalModeTag) = (fun :: Type -> Type -> Type) | fun -> mode Source #

Get a unified function type. Resolves to =-> in C mode, and =~> in S mode.

Instances

Instances details
type GetFun 'C Source # 
Instance details

Defined in Grisette.Internal.Unified.UnifiedFun

type GetFun 'C = (=->)
type GetFun 'S Source # 
Instance details

Defined in Grisette.Internal.Unified.UnifiedFun

type GetFun 'S = (=~>)

type GetFun2 (mode :: EvalModeTag) a b = GetFun mode a b Source #

The unified function type with 2 arguments.

type GetFun3 (mode :: EvalModeTag) a b c = GetFun mode a (GetFun mode b c) Source #

The unified function type with 3 arguments.

type GetFun4 (mode :: EvalModeTag) a b c d = GetFun mode a (GetFun mode b (GetFun mode c d)) Source #

The unified function type with 4 arguments.

type GetFun5 (mode :: EvalModeTag) a b c d e = GetFun mode a (GetFun mode b (GetFun mode c (GetFun mode d e))) Source #

The unified function type with 5 arguments.

type GetFun6 (mode :: EvalModeTag) a b c d e f = GetFun mode a (GetFun mode b (GetFun mode c (GetFun mode d (GetFun mode e f)))) Source #

The unified function type with 6 arguments.

type GetFun7 (mode :: EvalModeTag) a b c d e f g = GetFun mode a (GetFun mode b (GetFun mode c (GetFun mode d (GetFun mode e (GetFun mode f g))))) Source #

The unified function type with 7 arguments.

type GetFun8 (mode :: EvalModeTag) a b c d e f g h = GetFun mode a (GetFun mode b (GetFun mode c (GetFun mode d (GetFun mode e (GetFun mode f (GetFun mode g h)))))) Source #

The unified function type with 8 arguments.

class UnifiedFun (mode :: EvalModeTag) Source #

Provide unified function types.

Instances

Instances details
UnifiedFun 'C Source # 
Instance details

Defined in Grisette.Internal.Unified.UnifiedFun

Associated Types

type GetFun 'C 
Instance details

Defined in Grisette.Internal.Unified.UnifiedFun

type GetFun 'C = (=->)
UnifiedFun 'S Source # 
Instance details

Defined in Grisette.Internal.Unified.UnifiedFun

Associated Types

type GetFun 'S 
Instance details

Defined in Grisette.Internal.Unified.UnifiedFun

type GetFun 'S = (=~>)

type UnifiedFunConstraint (mode :: EvalModeTag) a b ca cb sa sb = (Show (GetFun mode a b), Binary (GetFun mode a b), Serial (GetFun mode a b), Serialize (GetFun mode a b), NFData (GetFun mode a b), Eq (GetFun mode a b), EvalSym (GetFun mode a b), ExtractSym (GetFun mode a b), Mergeable (GetFun mode a b), PPrint (GetFun mode a b), SubstSym (GetFun mode a b), Hashable (GetFun mode a b), Lift (GetFun mode a b), Typeable (GetFun mode a b), ToCon (GetFun mode a b) (ca =-> cb), ToCon (sa =~> sb) (GetFun mode a b), ToSym (GetFun mode a b) (sa =~> sb), ToSym (ca =-> cb) (GetFun mode a b), Function (GetFun mode a b) a b, Apply (GetFun mode a b), FunType (GetFun mode a b) ~ (a -> b)) Source #

The constraint for a unified function.

unifiedFunInstanceName :: String -> [TheoryToUnify] -> String Source #

Generate unified function instance names.

genUnifiedFunInstance :: String -> [TheoryToUnify] -> DecsQ Source #

Generate unified function instances.

Supplemental conversions

class (UnifiedBVBVConversionImpl mode (GetWordN mode) (GetWordN mode) n0 n1 (GetWordN mode n0) (GetWordN mode n1), UnifiedBVBVConversionImpl mode (GetWordN mode) (GetIntN mode) n0 n1 (GetWordN mode n0) (GetIntN mode n1), UnifiedBVBVConversionImpl mode (GetIntN mode) (GetWordN mode) n0 n1 (GetIntN mode n0) (GetWordN mode n1), UnifiedBVBVConversionImpl mode (GetIntN mode) (GetIntN mode) n0 n1 (GetIntN mode n0) (GetIntN mode n1)) => UnifiedBVBVConversion (mode :: EvalModeTag) (n0 :: Nat) (n1 :: Nat) Source #

Unified constraints for conversion between bit-vectors.

Instances

Instances details
(UnifiedBVBVConversionImpl mode (GetWordN mode) (GetWordN mode) n0 n1 (GetWordN mode n0) (GetWordN mode n1), UnifiedBVBVConversionImpl mode (GetWordN mode) (GetIntN mode) n0 n1 (GetWordN mode n0) (GetIntN mode n1), UnifiedBVBVConversionImpl mode (GetIntN mode) (GetWordN mode) n0 n1 (GetIntN mode n0) (GetWordN mode n1), UnifiedBVBVConversionImpl mode (GetIntN mode) (GetIntN mode) n0 n1 (GetIntN mode n0) (GetIntN mode n1)) => UnifiedBVBVConversion mode n0 n1 Source # 
Instance details

Defined in Grisette.Internal.Unified.BVBVConversion

class UnifiedBVFPConversionImpl mode (GetWordN mode) (GetIntN mode) (GetFP mode) n eb sb (GetWordN mode n) (GetIntN mode n) (GetFP mode eb sb) (GetFPRoundingMode mode) => UnifiedBVFPConversion (mode :: EvalModeTag) (n :: Nat) (eb :: Nat) (sb :: Nat) Source #

Unified constraints for conversion from bit-vectors to floating point numbers.

Instances

Instances details
UnifiedBVFPConversionImpl mode (GetWordN mode) (GetIntN mode) (GetFP mode) n eb sb (GetWordN mode n) (GetIntN mode n) (GetFP mode eb sb) (GetFPRoundingMode mode) => UnifiedBVFPConversion mode n eb sb Source # 
Instance details

Defined in Grisette.Internal.Internal.Impl.Unified.BVFPConversion

class SafeUnifiedBVFPConversionImpl mode (GetWordN mode) (GetIntN mode) (GetFP mode) n eb sb (GetWordN mode n) (GetIntN mode n) (GetFP mode eb sb) (GetFPRoundingMode mode) m => SafeUnifiedBVFPConversion (mode :: EvalModeTag) (n :: Nat) (eb :: Nat) (sb :: Nat) (m :: Type -> Type) Source #

Unified constraints for safe conversion from bit-vectors to floating point numbers.

Instances

Instances details
SafeUnifiedBVFPConversionImpl mode (GetWordN mode) (GetIntN mode) (GetFP mode) n eb sb (GetWordN mode n) (GetIntN mode n) (GetFP mode eb sb) (GetFPRoundingMode mode) m => SafeUnifiedBVFPConversion mode n eb sb m Source # 
Instance details

Defined in Grisette.Internal.Internal.Impl.Unified.BVFPConversion

class UnifiedFPFPConversionImpl mode (GetFP mode) eb0 sb0 eb1 sb1 (GetFP mode eb0 sb0) (GetFP mode eb1 sb1) (GetFPRoundingMode mode) => UnifiedFPFPConversion (mode :: EvalModeTag) (eb0 :: Nat) (sb0 :: Nat) (eb1 :: Nat) (sb1 :: Nat) Source #

Unified constraints for conversion from floating point numbers to floating point numbers.

Instances

Instances details
UnifiedFPFPConversionImpl mode (GetFP mode) eb0 sb0 eb1 sb1 (GetFP mode eb0 sb0) (GetFP mode eb1 sb1) (GetFPRoundingMode mode) => UnifiedFPFPConversion mode eb0 sb0 eb1 sb1 Source # 
Instance details

Defined in Grisette.Internal.Internal.Impl.Unified.FPFPConversion