grisette-0.9.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 HaskellSafe-Inferred
LanguageHaskell2010

Grisette.Unified

Description

 
Synopsis

Evaluation mode

data EvalModeTag Source #

Evaluation mode for unified types. Con means concrete evaluation, Sym means symbolic evaluation.

Constructors

Con 
Sym 

Instances

Instances details
Lift EvalModeTag Source # 
Instance details

Defined in Grisette.Unified.Internal.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 Con.

Equations

IsConMode 'Con = 'True 
IsConMode 'Sym = '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 Con mode, and Union for Sym mode.

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 (Typeable mode, UnifiedBool mode, UnifiedPrimitive mode (GetBool mode), Monad (BaseMonad mode), TryMerge (BaseMonad mode), UnifiedBranching mode (BaseMonad mode), AllUnifiedData mode) => EvalModeBase mode 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 'Con Source # 
Instance details

Defined in Grisette.Unified.Internal.EvalMode

EvalModeBase 'Sym Source # 
Instance details

Defined in Grisette.Unified.Internal.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 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 'Con Source # 
Instance details

Defined in Grisette.Unified.Internal.EvalMode

EvalModeBV 'Sym Source # 
Instance details

Defined in Grisette.Unified.Internal.EvalMode

class (AllUnifiedFP mode, AllUnifiedFPFPConversion mode, AllUnifiedBVFPConversion mode) => EvalModeFP mode 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 'Con Source # 
Instance details

Defined in Grisette.Unified.Internal.EvalMode

EvalModeFP 'Sym Source # 
Instance details

Defined in Grisette.Unified.Internal.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 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 'Con Source # 
Instance details

Defined in Grisette.Unified.Internal.EvalMode

EvalModeAll 'Sym Source # 
Instance details

Defined in Grisette.Unified.Internal.EvalMode

type MonadEvalModeAll mode m = (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.

Unified operations

Unified simple mergeable

class Typeable mode => UnifiedBranching (mode :: EvalModeTag) m 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
(Typeable mode, If (IsConMode mode) (TryMerge m) (SymBranching m)) => UnifiedBranching mode m Source # 
Instance details

Defined in Grisette.Unified.Internal.Class.UnifiedSimpleMergeable

Methods

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

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

Defined in Grisette.Unified.Internal.Class.UnifiedSimpleMergeable

Methods

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

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

Defined in Grisette.Unified.Internal.Class.UnifiedSimpleMergeable

Methods

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

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

Defined in Grisette.Unified.Internal.Class.UnifiedSimpleMergeable

Methods

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

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

Defined in Grisette.Unified.Internal.Class.UnifiedSimpleMergeable

Methods

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

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

Defined in Grisette.Unified.Internal.Class.UnifiedSimpleMergeable

Methods

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

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

Defined in Grisette.Unified.Internal.Class.UnifiedSimpleMergeable

Methods

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

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

Defined in Grisette.Unified.Internal.Class.UnifiedSimpleMergeable

Methods

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

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

Defined in Grisette.Unified.Internal.Class.UnifiedSimpleMergeable

Methods

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

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

Defined in Grisette.Unified.Internal.Class.UnifiedSimpleMergeable

Methods

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

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

Defined in Grisette.Unified.Internal.Class.UnifiedSimpleMergeable

Methods

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

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

Defined in Grisette.Unified.Internal.Class.UnifiedSimpleMergeable

Methods

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

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

Defined in Grisette.Unified.Internal.Class.UnifiedSimpleMergeable

Methods

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

class UnifiedSimpleMergeable mode 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) (() :: Constraint) (SimpleMergeable a) => r) -> r Source #

Instances

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

Defined in Grisette.Unified.Internal.Class.UnifiedSimpleMergeable

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

Defined in Grisette.Unified.Internal.Class.UnifiedSimpleMergeable

Methods

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

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

Defined in Grisette.Unified.Internal.Class.UnifiedSimpleMergeable

Methods

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

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

Defined in Grisette.Unified.Internal.Class.UnifiedSimpleMergeable

Methods

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

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

Defined in Grisette.Unified.Internal.Class.UnifiedSimpleMergeable

Methods

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

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

Defined in Grisette.Unified.Internal.Class.UnifiedSimpleMergeable

Methods

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

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

Defined in Grisette.Unified.Internal.Class.UnifiedSimpleMergeable

Methods

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

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

Defined in Grisette.Unified.Internal.Class.UnifiedSimpleMergeable

Methods

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

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

Defined in Grisette.Unified.Internal.Class.UnifiedSimpleMergeable

Methods

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

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

Defined in Grisette.Unified.Internal.Class.UnifiedSimpleMergeable

Methods

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

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

Defined in Grisette.Unified.Internal.Class.UnifiedSimpleMergeable

Methods

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

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

Defined in Grisette.Unified.Internal.Class.UnifiedSimpleMergeable

Methods

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

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

Defined in Grisette.Unified.Internal.Class.UnifiedSimpleMergeable

Methods

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

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

Defined in Grisette.Unified.Internal.Class.UnifiedSimpleMergeable

Methods

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

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

Defined in Grisette.Unified.Internal.Class.UnifiedSimpleMergeable

Methods

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

(Typeable mode, UnifiedSimpleMergeable mode a, UnifiedSimpleMergeable mode b, UnifiedSimpleMergeable mode c) => UnifiedSimpleMergeable mode (a, b, c) Source # 
Instance details

Defined in Grisette.Unified.Internal.Class.UnifiedSimpleMergeable

Methods

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

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

Defined in Grisette.Unified.Internal.Class.UnifiedSimpleMergeable

Methods

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

(Typeable mode, UnifiedSimpleMergeable mode a, UnifiedSimpleMergeable mode b, UnifiedSimpleMergeable mode c, UnifiedSimpleMergeable mode d) => UnifiedSimpleMergeable mode (a, b, c, d) Source # 
Instance details

Defined in Grisette.Unified.Internal.Class.UnifiedSimpleMergeable

Methods

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

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

Defined in Grisette.Unified.Internal.Class.UnifiedSimpleMergeable

Methods

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

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

Defined in Grisette.Unified.Internal.Class.UnifiedSimpleMergeable

Methods

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

(Typeable mode, UnifiedSimpleMergeable mode a, UnifiedSimpleMergeable mode b, UnifiedSimpleMergeable mode c, UnifiedSimpleMergeable mode d, UnifiedSimpleMergeable mode e) => UnifiedSimpleMergeable mode (a, b, c, d, e) Source # 
Instance details

Defined in Grisette.Unified.Internal.Class.UnifiedSimpleMergeable

Methods

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

(Typeable mode, UnifiedSimpleMergeable mode a, UnifiedSimpleMergeable mode b, UnifiedSimpleMergeable mode c, UnifiedSimpleMergeable mode d, UnifiedSimpleMergeable mode e, UnifiedSimpleMergeable mode f) => UnifiedSimpleMergeable mode (a, b, c, d, e, f) Source # 
Instance details

Defined in Grisette.Unified.Internal.Class.UnifiedSimpleMergeable

Methods

withBaseSimpleMergeable :: (If (IsConMode mode) () (SimpleMergeable (a, b, c, d, e, f)) => r) -> r Source #

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

Defined in Grisette.Unified.Internal.Class.UnifiedSimpleMergeable

Methods

withBaseSimpleMergeable :: (If (IsConMode mode) () (SimpleMergeable (a, b, c, d, e, f, g)) => r) -> r Source #

(Typeable mode, UnifiedSimpleMergeable mode a, UnifiedSimpleMergeable mode b, UnifiedSimpleMergeable mode c, UnifiedSimpleMergeable mode d, UnifiedSimpleMergeable mode e, UnifiedSimpleMergeable mode f, UnifiedSimpleMergeable mode g, UnifiedSimpleMergeable mode h) => UnifiedSimpleMergeable mode (a, b, c, d, e, f, g, h) Source # 
Instance details

Defined in Grisette.Unified.Internal.Class.UnifiedSimpleMergeable

Methods

withBaseSimpleMergeable :: (If (IsConMode mode) () (SimpleMergeable (a, b, c, d, e, f, g, h)) => r) -> r Source #

(Typeable mode, UnifiedSimpleMergeable mode a, UnifiedSimpleMergeable mode b, UnifiedSimpleMergeable mode c, UnifiedSimpleMergeable mode d, UnifiedSimpleMergeable mode e, UnifiedSimpleMergeable mode f, UnifiedSimpleMergeable mode g, UnifiedSimpleMergeable mode h, UnifiedSimpleMergeable mode i) => UnifiedSimpleMergeable mode (a, b, c, d, e, f, g, h, i) Source # 
Instance details

Defined in Grisette.Unified.Internal.Class.UnifiedSimpleMergeable

Methods

withBaseSimpleMergeable :: (If (IsConMode mode) () (SimpleMergeable (a, b, c, d, e, f, g, h, i)) => r) -> r Source #

(Typeable mode, UnifiedSimpleMergeable mode a, UnifiedSimpleMergeable mode b, UnifiedSimpleMergeable mode c, UnifiedSimpleMergeable mode d, UnifiedSimpleMergeable mode e, UnifiedSimpleMergeable mode f, UnifiedSimpleMergeable mode g, UnifiedSimpleMergeable mode h, UnifiedSimpleMergeable mode i, UnifiedSimpleMergeable mode j) => UnifiedSimpleMergeable mode (a, b, c, d, e, f, g, h, i, j) Source # 
Instance details

Defined in Grisette.Unified.Internal.Class.UnifiedSimpleMergeable

Methods

withBaseSimpleMergeable :: (If (IsConMode mode) () (SimpleMergeable (a, b, c, d, e, f, g, h, i, j)) => r) -> r Source #

(Typeable mode, UnifiedSimpleMergeable mode a, UnifiedSimpleMergeable mode b, UnifiedSimpleMergeable mode c, UnifiedSimpleMergeable mode d, UnifiedSimpleMergeable mode e, UnifiedSimpleMergeable mode f, UnifiedSimpleMergeable mode g, UnifiedSimpleMergeable mode h, UnifiedSimpleMergeable mode i, UnifiedSimpleMergeable mode j, UnifiedSimpleMergeable mode k) => UnifiedSimpleMergeable mode (a, b, c, d, e, f, g, h, i, j, k) Source # 
Instance details

Defined in Grisette.Unified.Internal.Class.UnifiedSimpleMergeable

Methods

withBaseSimpleMergeable :: (If (IsConMode mode) () (SimpleMergeable (a, b, c, d, e, f, g, h, i, j, k)) => r) -> r Source #

(Typeable mode, UnifiedSimpleMergeable mode a, UnifiedSimpleMergeable mode b, UnifiedSimpleMergeable mode c, UnifiedSimpleMergeable mode d, UnifiedSimpleMergeable mode e, UnifiedSimpleMergeable mode f, UnifiedSimpleMergeable mode g, UnifiedSimpleMergeable mode h, UnifiedSimpleMergeable mode i, UnifiedSimpleMergeable mode j, UnifiedSimpleMergeable mode k, UnifiedSimpleMergeable mode l) => UnifiedSimpleMergeable mode (a, b, c, d, e, f, g, h, i, j, k, l) Source # 
Instance details

Defined in Grisette.Unified.Internal.Class.UnifiedSimpleMergeable

Methods

withBaseSimpleMergeable :: (If (IsConMode mode) () (SimpleMergeable (a, b, c, d, e, f, g, h, i, j, k, l)) => r) -> r Source #

(Typeable mode, UnifiedSimpleMergeable mode a, UnifiedSimpleMergeable mode b, UnifiedSimpleMergeable mode c, UnifiedSimpleMergeable mode d, UnifiedSimpleMergeable mode e, UnifiedSimpleMergeable mode f, UnifiedSimpleMergeable mode g, UnifiedSimpleMergeable mode h, UnifiedSimpleMergeable mode i, UnifiedSimpleMergeable mode j, UnifiedSimpleMergeable mode k, UnifiedSimpleMergeable mode l, UnifiedSimpleMergeable mode m) => UnifiedSimpleMergeable mode (a, b, c, d, e, f, g, h, i, j, k, l, m) Source # 
Instance details

Defined in Grisette.Unified.Internal.Class.UnifiedSimpleMergeable

Methods

withBaseSimpleMergeable :: (If (IsConMode mode) () (SimpleMergeable (a, b, c, d, e, f, g, h, i, j, k, l, m)) => r) -> r Source #

(Typeable mode, UnifiedSimpleMergeable mode a, UnifiedSimpleMergeable mode b, UnifiedSimpleMergeable mode c, UnifiedSimpleMergeable mode d, UnifiedSimpleMergeable mode e, UnifiedSimpleMergeable mode f, UnifiedSimpleMergeable mode g, UnifiedSimpleMergeable mode h, UnifiedSimpleMergeable mode i, UnifiedSimpleMergeable mode j, UnifiedSimpleMergeable mode k, UnifiedSimpleMergeable mode l, UnifiedSimpleMergeable mode m, UnifiedSimpleMergeable mode n) => UnifiedSimpleMergeable mode (a, b, c, d, e, f, g, h, i, j, k, l, m, n) Source # 
Instance details

Defined in Grisette.Unified.Internal.Class.UnifiedSimpleMergeable

Methods

withBaseSimpleMergeable :: (If (IsConMode mode) () (SimpleMergeable (a, b, c, d, e, f, g, h, i, j, k, l, m, n)) => r) -> r Source #

(Typeable mode, UnifiedSimpleMergeable mode a, UnifiedSimpleMergeable mode b, UnifiedSimpleMergeable mode c, UnifiedSimpleMergeable mode d, UnifiedSimpleMergeable mode e, UnifiedSimpleMergeable mode f, UnifiedSimpleMergeable mode g, UnifiedSimpleMergeable mode h, UnifiedSimpleMergeable mode i, UnifiedSimpleMergeable mode j, UnifiedSimpleMergeable mode k, UnifiedSimpleMergeable mode l, UnifiedSimpleMergeable mode m, UnifiedSimpleMergeable mode n, UnifiedSimpleMergeable mode o) => UnifiedSimpleMergeable mode (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o) Source # 
Instance details

Defined in Grisette.Unified.Internal.Class.UnifiedSimpleMergeable

Methods

withBaseSimpleMergeable :: (If (IsConMode mode) () (SimpleMergeable (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o)) => r) -> r Source #

class UnifiedSimpleMergeable1 mode f 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) (() :: Constraint) (SimpleMergeable1 f) => r) -> r Source #

Instances

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

Defined in Grisette.Unified.Internal.Class.UnifiedSimpleMergeable

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

Defined in Grisette.Unified.Internal.Class.UnifiedSimpleMergeable

Methods

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

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

Defined in Grisette.Unified.Internal.Class.UnifiedSimpleMergeable

Methods

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

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

Defined in Grisette.Unified.Internal.Class.UnifiedSimpleMergeable

Methods

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

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

Defined in Grisette.Unified.Internal.Class.UnifiedSimpleMergeable

Methods

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

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

Defined in Grisette.Unified.Internal.Class.UnifiedSimpleMergeable

Methods

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

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

Defined in Grisette.Unified.Internal.Class.UnifiedSimpleMergeable

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

Defined in Grisette.Unified.Internal.Class.UnifiedSimpleMergeable

Methods

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

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

Defined in Grisette.Unified.Internal.Class.UnifiedSimpleMergeable

Methods

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

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

Defined in Grisette.Unified.Internal.Class.UnifiedSimpleMergeable

Methods

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

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

Defined in Grisette.Unified.Internal.Class.UnifiedSimpleMergeable

Methods

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

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

Defined in Grisette.Unified.Internal.Class.UnifiedSimpleMergeable

Methods

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

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

Defined in Grisette.Unified.Internal.Class.UnifiedSimpleMergeable

Methods

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

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

Defined in Grisette.Unified.Internal.Class.UnifiedSimpleMergeable

Methods

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

(Typeable mode, UnifiedSimpleMergeable mode a, UnifiedSimpleMergeable mode b, UnifiedSimpleMergeable mode c) => UnifiedSimpleMergeable1 mode ((,,,) a b c) Source # 
Instance details

Defined in Grisette.Unified.Internal.Class.UnifiedSimpleMergeable

Methods

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

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

Defined in Grisette.Unified.Internal.Class.UnifiedSimpleMergeable

Methods

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

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

Defined in Grisette.Unified.Internal.Class.UnifiedSimpleMergeable

Methods

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

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

Defined in Grisette.Unified.Internal.Class.UnifiedSimpleMergeable

Methods

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

(Typeable mode, UnifiedSimpleMergeable mode a, UnifiedSimpleMergeable mode b, UnifiedSimpleMergeable mode c, UnifiedSimpleMergeable mode d) => UnifiedSimpleMergeable1 mode ((,,,,) a b c d) Source # 
Instance details

Defined in Grisette.Unified.Internal.Class.UnifiedSimpleMergeable

Methods

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

(Typeable mode, UnifiedSimpleMergeable mode a, UnifiedSimpleMergeable mode b, UnifiedSimpleMergeable mode c, UnifiedSimpleMergeable mode d, UnifiedSimpleMergeable mode e) => UnifiedSimpleMergeable1 mode ((,,,,,) a b c d e) Source # 
Instance details

Defined in Grisette.Unified.Internal.Class.UnifiedSimpleMergeable

Methods

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

(Typeable mode, UnifiedSimpleMergeable mode a, UnifiedSimpleMergeable mode b, UnifiedSimpleMergeable mode c, UnifiedSimpleMergeable mode d, UnifiedSimpleMergeable mode e, UnifiedSimpleMergeable mode f) => UnifiedSimpleMergeable1 mode ((,,,,,,) a b c d e f) Source # 
Instance details

Defined in Grisette.Unified.Internal.Class.UnifiedSimpleMergeable

Methods

withBaseSimpleMergeable1 :: (If (IsConMode mode) () (SimpleMergeable1 ((,,,,,,) a b c d e f)) => r) -> r Source #

(Typeable mode, UnifiedSimpleMergeable mode a, UnifiedSimpleMergeable mode b, UnifiedSimpleMergeable mode c, UnifiedSimpleMergeable mode d, UnifiedSimpleMergeable mode e, UnifiedSimpleMergeable mode f, UnifiedSimpleMergeable mode g) => UnifiedSimpleMergeable1 mode ((,,,,,,,) a b c d e f g) Source # 
Instance details

Defined in Grisette.Unified.Internal.Class.UnifiedSimpleMergeable

Methods

withBaseSimpleMergeable1 :: (If (IsConMode mode) () (SimpleMergeable1 ((,,,,,,,) a b c d e f g)) => r) -> r Source #

(Typeable mode, UnifiedSimpleMergeable mode a, UnifiedSimpleMergeable mode b, UnifiedSimpleMergeable mode c, UnifiedSimpleMergeable mode d, UnifiedSimpleMergeable mode e, UnifiedSimpleMergeable mode f, UnifiedSimpleMergeable mode g, UnifiedSimpleMergeable mode h) => UnifiedSimpleMergeable1 mode ((,,,,,,,,) a b c d e f g h) Source # 
Instance details

Defined in Grisette.Unified.Internal.Class.UnifiedSimpleMergeable

Methods

withBaseSimpleMergeable1 :: (If (IsConMode mode) () (SimpleMergeable1 ((,,,,,,,,) a b c d e f g h)) => r) -> r Source #

(Typeable mode, UnifiedSimpleMergeable mode a, UnifiedSimpleMergeable mode b, UnifiedSimpleMergeable mode c, UnifiedSimpleMergeable mode d, UnifiedSimpleMergeable mode e, UnifiedSimpleMergeable mode f, UnifiedSimpleMergeable mode g, UnifiedSimpleMergeable mode h, UnifiedSimpleMergeable mode i) => UnifiedSimpleMergeable1 mode ((,,,,,,,,,) a b c d e f g h i) Source # 
Instance details

Defined in Grisette.Unified.Internal.Class.UnifiedSimpleMergeable

Methods

withBaseSimpleMergeable1 :: (If (IsConMode mode) () (SimpleMergeable1 ((,,,,,,,,,) a b c d e f g h i)) => r) -> r Source #

(Typeable mode, UnifiedSimpleMergeable mode a, UnifiedSimpleMergeable mode b, UnifiedSimpleMergeable mode c, UnifiedSimpleMergeable mode d, UnifiedSimpleMergeable mode e, UnifiedSimpleMergeable mode f, UnifiedSimpleMergeable mode g, UnifiedSimpleMergeable mode h, UnifiedSimpleMergeable mode i, UnifiedSimpleMergeable mode j) => UnifiedSimpleMergeable1 mode ((,,,,,,,,,,) a b c d e f g h i j) Source # 
Instance details

Defined in Grisette.Unified.Internal.Class.UnifiedSimpleMergeable

Methods

withBaseSimpleMergeable1 :: (If (IsConMode mode) () (SimpleMergeable1 ((,,,,,,,,,,) a b c d e f g h i j)) => r) -> r Source #

(Typeable mode, UnifiedSimpleMergeable mode a, UnifiedSimpleMergeable mode b, UnifiedSimpleMergeable mode c, UnifiedSimpleMergeable mode d, UnifiedSimpleMergeable mode e, UnifiedSimpleMergeable mode f, UnifiedSimpleMergeable mode g, UnifiedSimpleMergeable mode h, UnifiedSimpleMergeable mode i, UnifiedSimpleMergeable mode j, UnifiedSimpleMergeable mode k) => UnifiedSimpleMergeable1 mode ((,,,,,,,,,,,) a b c d e f g h i j k) Source # 
Instance details

Defined in Grisette.Unified.Internal.Class.UnifiedSimpleMergeable

Methods

withBaseSimpleMergeable1 :: (If (IsConMode mode) () (SimpleMergeable1 ((,,,,,,,,,,,) a b c d e f g h i j k)) => r) -> r Source #

(Typeable mode, UnifiedSimpleMergeable mode a, UnifiedSimpleMergeable mode b, UnifiedSimpleMergeable mode c, UnifiedSimpleMergeable mode d, UnifiedSimpleMergeable mode e, UnifiedSimpleMergeable mode f, UnifiedSimpleMergeable mode g, UnifiedSimpleMergeable mode h, UnifiedSimpleMergeable mode i, UnifiedSimpleMergeable mode j, UnifiedSimpleMergeable mode k, UnifiedSimpleMergeable mode l) => UnifiedSimpleMergeable1 mode ((,,,,,,,,,,,,) a b c d e f g h i j k l) Source # 
Instance details

Defined in Grisette.Unified.Internal.Class.UnifiedSimpleMergeable

Methods

withBaseSimpleMergeable1 :: (If (IsConMode mode) () (SimpleMergeable1 ((,,,,,,,,,,,,) a b c d e f g h i j k l)) => r) -> r Source #

(Typeable mode, UnifiedSimpleMergeable mode a, UnifiedSimpleMergeable mode b, UnifiedSimpleMergeable mode c, UnifiedSimpleMergeable mode d, UnifiedSimpleMergeable mode e, UnifiedSimpleMergeable mode f, UnifiedSimpleMergeable mode g, UnifiedSimpleMergeable mode h, UnifiedSimpleMergeable mode i, UnifiedSimpleMergeable mode j, UnifiedSimpleMergeable mode k, UnifiedSimpleMergeable mode l, UnifiedSimpleMergeable mode m) => UnifiedSimpleMergeable1 mode ((,,,,,,,,,,,,,) a b c d e f g h i j k l m) Source # 
Instance details

Defined in Grisette.Unified.Internal.Class.UnifiedSimpleMergeable

Methods

withBaseSimpleMergeable1 :: (If (IsConMode mode) () (SimpleMergeable1 ((,,,,,,,,,,,,,) a b c d e f g h i j k l m)) => r) -> r Source #

(Typeable mode, UnifiedSimpleMergeable mode a, UnifiedSimpleMergeable mode b, UnifiedSimpleMergeable mode c, UnifiedSimpleMergeable mode d, UnifiedSimpleMergeable mode e, UnifiedSimpleMergeable mode f, UnifiedSimpleMergeable mode g, UnifiedSimpleMergeable mode h, UnifiedSimpleMergeable mode i, UnifiedSimpleMergeable mode j, UnifiedSimpleMergeable mode k, UnifiedSimpleMergeable mode l, UnifiedSimpleMergeable mode m, UnifiedSimpleMergeable mode n) => UnifiedSimpleMergeable1 mode ((,,,,,,,,,,,,,,) a b c d e f g h i j k l m n) Source # 
Instance details

Defined in Grisette.Unified.Internal.Class.UnifiedSimpleMergeable

Methods

withBaseSimpleMergeable1 :: (If (IsConMode mode) () (SimpleMergeable1 ((,,,,,,,,,,,,,,) a b c d e f g h i j k l m n)) => r) -> r Source #

class UnifiedSimpleMergeable2 mode f 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) (() :: Constraint) (SimpleMergeable2 f) => r) -> r Source #

mrgIf :: forall mode a m. (Typeable 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 a m. (Applicative m, UnifiedBranching mode m, Mergeable a) => BaseMonad mode a -> m a Source #

Unified lifting of a base monad.

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

Unified mrgIte.

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

Unified mrgIte1.

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

Unified liftMrgIte.

mrgIte2 :: forall mode f a b. (Typeable 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 f a b. (Typeable 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 a. (Typeable 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 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) (() :: Constraint) (ITEOp v) => r) -> r Source #

Instances

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

Defined in Grisette.Unified.Internal.Class.UnifiedITEOp

Methods

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

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

Defined in Grisette.Unified.Internal.Class.UnifiedITEOp

Methods

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

symIte :: forall mode v. (Typeable 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 v. (Typeable 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 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
Typeable mode => UnifiedSymEq mode Int16 Source # 
Instance details

Defined in Grisette.Unified.Internal.Class.UnifiedSymEq

Methods

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

Typeable mode => UnifiedSymEq mode Int32 Source # 
Instance details

Defined in Grisette.Unified.Internal.Class.UnifiedSymEq

Methods

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

Typeable mode => UnifiedSymEq mode Int64 Source # 
Instance details

Defined in Grisette.Unified.Internal.Class.UnifiedSymEq

Methods

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

Typeable mode => UnifiedSymEq mode Int8 Source # 
Instance details

Defined in Grisette.Unified.Internal.Class.UnifiedSymEq

Methods

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

Typeable mode => UnifiedSymEq mode Word16 Source # 
Instance details

Defined in Grisette.Unified.Internal.Class.UnifiedSymEq

Methods

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

Typeable mode => UnifiedSymEq mode Word32 Source # 
Instance details

Defined in Grisette.Unified.Internal.Class.UnifiedSymEq

Methods

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

Typeable mode => UnifiedSymEq mode Word64 Source # 
Instance details

Defined in Grisette.Unified.Internal.Class.UnifiedSymEq

Methods

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

Typeable mode => UnifiedSymEq mode Word8 Source # 
Instance details

Defined in Grisette.Unified.Internal.Class.UnifiedSymEq

Methods

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

Typeable mode => UnifiedSymEq mode ByteString Source # 
Instance details

Defined in Grisette.Unified.Internal.Class.UnifiedSymEq

Methods

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

Typeable mode => UnifiedSymEq mode AssertionError Source # 
Instance details

Defined in Grisette.Unified.Internal.Class.UnifiedSymEq

Typeable mode => UnifiedSymEq mode VerificationConditions Source # 
Instance details

Defined in Grisette.Unified.Internal.Class.UnifiedSymEq

Typeable mode => UnifiedSymEq mode FPRoundingMode Source # 
Instance details

Defined in Grisette.Unified.Internal.Class.UnifiedSymEq

Typeable mode => UnifiedSymEq mode Text Source # 
Instance details

Defined in Grisette.Unified.Internal.Class.UnifiedSymEq

Methods

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

Typeable mode => UnifiedSymEq mode Integer Source # 
Instance details

Defined in Grisette.Unified.Internal.Class.UnifiedSymEq

Methods

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

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

Defined in Grisette.Unified.Internal.Class.UnifiedSymEq

Methods

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

Typeable mode => UnifiedSymEq mode Bool Source # 
Instance details

Defined in Grisette.Unified.Internal.Class.UnifiedSymEq

Methods

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

Typeable mode => UnifiedSymEq mode Char Source # 
Instance details

Defined in Grisette.Unified.Internal.Class.UnifiedSymEq

Methods

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

Typeable mode => UnifiedSymEq mode Double Source # 
Instance details

Defined in Grisette.Unified.Internal.Class.UnifiedSymEq

Methods

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

Typeable mode => UnifiedSymEq mode Float Source # 
Instance details

Defined in Grisette.Unified.Internal.Class.UnifiedSymEq

Methods

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

Typeable mode => UnifiedSymEq mode Int Source # 
Instance details

Defined in Grisette.Unified.Internal.Class.UnifiedSymEq

Methods

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

Typeable mode => UnifiedSymEq mode Word Source # 
Instance details

Defined in Grisette.Unified.Internal.Class.UnifiedSymEq

Methods

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

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

Defined in Grisette.Unified.Internal.Class.UnifiedSymEq

Methods

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

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

Defined in Grisette.Unified.Internal.Class.UnifiedSymEq

Methods

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

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

Defined in Grisette.Unified.Internal.Class.UnifiedSymEq

Methods

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

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

Defined in Grisette.Unified.Internal.Class.UnifiedSymEq

Methods

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

(Typeable mode, KnownNat n, 1 <= n) => UnifiedSymEq mode (IntN n) Source # 
Instance details

Defined in Grisette.Unified.Internal.Class.UnifiedSymEq

Methods

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

(Typeable mode, KnownNat n, 1 <= n) => UnifiedSymEq mode (WordN n) Source # 
Instance details

Defined in Grisette.Unified.Internal.Class.UnifiedSymEq

Methods

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

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

Defined in Grisette.Unified.Internal.Class.UnifiedSymEq

Methods

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

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

Defined in Grisette.Unified.Internal.Class.UnifiedSymEq

Methods

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

(Typeable mode, UnifiedSymEq mode a, UnifiedSymEq mode b) => UnifiedSymEq mode (Either a b) Source # 
Instance details

Defined in Grisette.Unified.Internal.Class.UnifiedSymEq

Methods

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

(Typeable mode, ValidFP eb sb) => UnifiedSymEq mode (FP eb sb) Source # 
Instance details

Defined in Grisette.Unified.Internal.Class.UnifiedSymEq

Methods

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

(Typeable mode, UnifiedSymEq1 mode m, UnifiedSymEq mode a) => UnifiedSymEq mode (MaybeT m a) Source # 
Instance details

Defined in Grisette.Unified.Internal.Class.UnifiedSymEq

Methods

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

(Typeable mode, UnifiedSymEq mode a, UnifiedSymEq mode b) => UnifiedSymEq mode (a, b) Source # 
Instance details

Defined in Grisette.Unified.Internal.Class.UnifiedSymEq

Methods

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

(Typeable mode, UnifiedSymEq mode e, UnifiedSymEq1 mode m, UnifiedSymEq mode a) => UnifiedSymEq mode (ExceptT e m a) Source # 
Instance details

Defined in Grisette.Unified.Internal.Class.UnifiedSymEq

Methods

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

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

Defined in Grisette.Unified.Internal.Class.UnifiedSymEq

Methods

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

(Typeable mode, UnifiedSymEq mode w, UnifiedSymEq1 mode m, UnifiedSymEq mode a) => UnifiedSymEq mode (WriterT w m a) Source # 
Instance details

Defined in Grisette.Unified.Internal.Class.UnifiedSymEq

Methods

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

(Typeable mode, UnifiedSymEq mode w, UnifiedSymEq1 mode m, UnifiedSymEq mode a) => UnifiedSymEq mode (WriterT w m a) Source # 
Instance details

Defined in Grisette.Unified.Internal.Class.UnifiedSymEq

Methods

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

(Typeable mode, UnifiedSymEq mode a, UnifiedSymEq mode b, UnifiedSymEq mode c) => UnifiedSymEq mode (a, b, c) Source # 
Instance details

Defined in Grisette.Unified.Internal.Class.UnifiedSymEq

Methods

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

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

Defined in Grisette.Unified.Internal.Class.UnifiedSymEq

Methods

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

(Typeable mode, UnifiedSymEq mode a, UnifiedSymEq mode b, UnifiedSymEq mode c, UnifiedSymEq mode d) => UnifiedSymEq mode (a, b, c, d) Source # 
Instance details

Defined in Grisette.Unified.Internal.Class.UnifiedSymEq

Methods

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

(Typeable mode, UnifiedSymEq mode a, UnifiedSymEq mode b, UnifiedSymEq mode c, UnifiedSymEq mode d, UnifiedSymEq mode e) => UnifiedSymEq mode (a, b, c, d, e) Source # 
Instance details

Defined in Grisette.Unified.Internal.Class.UnifiedSymEq

Methods

withBaseSymEq :: (If (IsConMode mode) (Eq (a, b, c, d, e)) (SymEq (a, b, c, d, e)) => r) -> r Source #

(Typeable mode, UnifiedSymEq mode a, UnifiedSymEq mode b, UnifiedSymEq mode c, UnifiedSymEq mode d, UnifiedSymEq mode e, UnifiedSymEq mode f) => UnifiedSymEq mode (a, b, c, d, e, f) Source # 
Instance details

Defined in Grisette.Unified.Internal.Class.UnifiedSymEq

Methods

withBaseSymEq :: (If (IsConMode mode) (Eq (a, b, c, d, e, f)) (SymEq (a, b, c, d, e, f)) => r) -> r Source #

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

Defined in Grisette.Unified.Internal.Class.UnifiedSymEq

Methods

withBaseSymEq :: (If (IsConMode mode) (Eq (a, b, c, d, e, f, g)) (SymEq (a, b, c, d, e, f, g)) => r) -> r Source #

(Typeable mode, UnifiedSymEq mode a, UnifiedSymEq mode b, UnifiedSymEq mode c, UnifiedSymEq mode d, UnifiedSymEq mode e, UnifiedSymEq mode f, UnifiedSymEq mode g, UnifiedSymEq mode h) => UnifiedSymEq mode (a, b, c, d, e, f, g, h) Source # 
Instance details

Defined in Grisette.Unified.Internal.Class.UnifiedSymEq

Methods

withBaseSymEq :: (If (IsConMode mode) (Eq (a, b, c, d, e, f, g, h)) (SymEq (a, b, c, d, e, f, g, h)) => r) -> r Source #

(Typeable mode, UnifiedSymEq mode a, UnifiedSymEq mode b, UnifiedSymEq mode c, UnifiedSymEq mode d, UnifiedSymEq mode e, UnifiedSymEq mode f, UnifiedSymEq mode g, UnifiedSymEq mode h, UnifiedSymEq mode i) => UnifiedSymEq mode (a, b, c, d, e, f, g, h, i) Source # 
Instance details

Defined in Grisette.Unified.Internal.Class.UnifiedSymEq

Methods

withBaseSymEq :: (If (IsConMode mode) (Eq (a, b, c, d, e, f, g, h, i)) (SymEq (a, b, c, d, e, f, g, h, i)) => r) -> r Source #

(Typeable mode, UnifiedSymEq mode a, UnifiedSymEq mode b, UnifiedSymEq mode c, UnifiedSymEq mode d, UnifiedSymEq mode e, UnifiedSymEq mode f, UnifiedSymEq mode g, UnifiedSymEq mode h, UnifiedSymEq mode i, UnifiedSymEq mode j) => UnifiedSymEq mode (a, b, c, d, e, f, g, h, i, j) Source # 
Instance details

Defined in Grisette.Unified.Internal.Class.UnifiedSymEq

Methods

withBaseSymEq :: (If (IsConMode mode) (Eq (a, b, c, d, e, f, g, h, i, j)) (SymEq (a, b, c, d, e, f, g, h, i, j)) => r) -> r Source #

(Typeable mode, UnifiedSymEq mode a, UnifiedSymEq mode b, UnifiedSymEq mode c, UnifiedSymEq mode d, UnifiedSymEq mode e, UnifiedSymEq mode f, UnifiedSymEq mode g, UnifiedSymEq mode h, UnifiedSymEq mode i, UnifiedSymEq mode j, UnifiedSymEq mode k) => UnifiedSymEq mode (a, b, c, d, e, f, g, h, i, j, k) Source # 
Instance details

Defined in Grisette.Unified.Internal.Class.UnifiedSymEq

Methods

withBaseSymEq :: (If (IsConMode mode) (Eq (a, b, c, d, e, f, g, h, i, j, k)) (SymEq (a, b, c, d, e, f, g, h, i, j, k)) => r) -> r Source #

(Typeable mode, UnifiedSymEq mode a, UnifiedSymEq mode b, UnifiedSymEq mode c, UnifiedSymEq mode d, UnifiedSymEq mode e, UnifiedSymEq mode f, UnifiedSymEq mode g, UnifiedSymEq mode h, UnifiedSymEq mode i, UnifiedSymEq mode j, UnifiedSymEq mode k, UnifiedSymEq mode l) => UnifiedSymEq mode (a, b, c, d, e, f, g, h, i, j, k, l) Source # 
Instance details

Defined in Grisette.Unified.Internal.Class.UnifiedSymEq

Methods

withBaseSymEq :: (If (IsConMode mode) (Eq (a, b, c, d, e, f, g, h, i, j, k, l)) (SymEq (a, b, c, d, e, f, g, h, i, j, k, l)) => r) -> r Source #

(Typeable mode, UnifiedSymEq mode a, UnifiedSymEq mode b, UnifiedSymEq mode c, UnifiedSymEq mode d, UnifiedSymEq mode e, UnifiedSymEq mode f, UnifiedSymEq mode g, UnifiedSymEq mode h, UnifiedSymEq mode i, UnifiedSymEq mode j, UnifiedSymEq mode k, UnifiedSymEq mode l, UnifiedSymEq mode m) => UnifiedSymEq mode (a, b, c, d, e, f, g, h, i, j, k, l, m) Source # 
Instance details

Defined in Grisette.Unified.Internal.Class.UnifiedSymEq

Methods

withBaseSymEq :: (If (IsConMode mode) (Eq (a, b, c, d, e, f, g, h, i, j, k, l, m)) (SymEq (a, b, c, d, e, f, g, h, i, j, k, l, m)) => r) -> r Source #

(Typeable mode, UnifiedSymEq mode a, UnifiedSymEq mode b, UnifiedSymEq mode c, UnifiedSymEq mode d, UnifiedSymEq mode e, UnifiedSymEq mode f, UnifiedSymEq mode g, UnifiedSymEq mode h, UnifiedSymEq mode i, UnifiedSymEq mode j, UnifiedSymEq mode k, UnifiedSymEq mode l, UnifiedSymEq mode m, UnifiedSymEq mode n) => UnifiedSymEq mode (a, b, c, d, e, f, g, h, i, j, k, l, m, n) Source # 
Instance details

Defined in Grisette.Unified.Internal.Class.UnifiedSymEq

Methods

withBaseSymEq :: (If (IsConMode mode) (Eq (a, b, c, d, e, f, g, h, i, j, k, l, m, n)) (SymEq (a, b, c, d, e, f, g, h, i, j, k, l, m, n)) => r) -> r Source #

(Typeable mode, UnifiedSymEq mode a, UnifiedSymEq mode b, UnifiedSymEq mode c, UnifiedSymEq mode d, UnifiedSymEq mode e, UnifiedSymEq mode f, UnifiedSymEq mode g, UnifiedSymEq mode h, UnifiedSymEq mode i, UnifiedSymEq mode j, UnifiedSymEq mode k, UnifiedSymEq mode l, UnifiedSymEq mode m, UnifiedSymEq mode n, UnifiedSymEq mode o) => UnifiedSymEq mode (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o) Source # 
Instance details

Defined in Grisette.Unified.Internal.Class.UnifiedSymEq

Methods

withBaseSymEq :: (If (IsConMode mode) (Eq (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o)) (SymEq (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o)) => r) -> r Source #

(.==) :: forall mode a. (Typeable 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 a. (Typeable 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 a. (Typeable 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 f a b. (Typeable mode, UnifiedSymEq1 mode f) => (a -> b -> GetBool mode) -> f a -> f b -> GetBool mode Source #

Unified liftSymEq.

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

Unified symEq1.

liftSymEq2 :: forall mode f a b c d. (Typeable 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 f a b. (Typeable 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 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
Typeable mode => UnifiedSymOrd mode Int16 Source # 
Instance details

Defined in Grisette.Unified.Internal.Class.UnifiedSymOrd

Methods

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

Typeable mode => UnifiedSymOrd mode Int32 Source # 
Instance details

Defined in Grisette.Unified.Internal.Class.UnifiedSymOrd

Methods

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

Typeable mode => UnifiedSymOrd mode Int64 Source # 
Instance details

Defined in Grisette.Unified.Internal.Class.UnifiedSymOrd

Methods

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

Typeable mode => UnifiedSymOrd mode Int8 Source # 
Instance details

Defined in Grisette.Unified.Internal.Class.UnifiedSymOrd

Methods

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

Typeable mode => UnifiedSymOrd mode Word16 Source # 
Instance details

Defined in Grisette.Unified.Internal.Class.UnifiedSymOrd

Methods

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

Typeable mode => UnifiedSymOrd mode Word32 Source # 
Instance details

Defined in Grisette.Unified.Internal.Class.UnifiedSymOrd

Methods

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

Typeable mode => UnifiedSymOrd mode Word64 Source # 
Instance details

Defined in Grisette.Unified.Internal.Class.UnifiedSymOrd

Methods

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

Typeable mode => UnifiedSymOrd mode Word8 Source # 
Instance details

Defined in Grisette.Unified.Internal.Class.UnifiedSymOrd

Methods

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

Typeable mode => UnifiedSymOrd mode ByteString Source # 
Instance details

Defined in Grisette.Unified.Internal.Class.UnifiedSymOrd

Methods

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

Typeable mode => UnifiedSymOrd mode AssertionError Source # 
Instance details

Defined in Grisette.Unified.Internal.Class.UnifiedSymOrd

Typeable mode => UnifiedSymOrd mode VerificationConditions Source # 
Instance details

Defined in Grisette.Unified.Internal.Class.UnifiedSymOrd

Typeable mode => UnifiedSymOrd mode FPRoundingMode Source # 
Instance details

Defined in Grisette.Unified.Internal.Class.UnifiedSymOrd

Typeable mode => UnifiedSymOrd mode Text Source # 
Instance details

Defined in Grisette.Unified.Internal.Class.UnifiedSymOrd

Methods

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

Typeable mode => UnifiedSymOrd mode Integer Source # 
Instance details

Defined in Grisette.Unified.Internal.Class.UnifiedSymOrd

Methods

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

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

Defined in Grisette.Unified.Internal.Class.UnifiedSymOrd

Methods

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

Typeable mode => UnifiedSymOrd mode Bool Source # 
Instance details

Defined in Grisette.Unified.Internal.Class.UnifiedSymOrd

Methods

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

Typeable mode => UnifiedSymOrd mode Char Source # 
Instance details

Defined in Grisette.Unified.Internal.Class.UnifiedSymOrd

Methods

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

Typeable mode => UnifiedSymOrd mode Double Source # 
Instance details

Defined in Grisette.Unified.Internal.Class.UnifiedSymOrd

Methods

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

Typeable mode => UnifiedSymOrd mode Float Source # 
Instance details

Defined in Grisette.Unified.Internal.Class.UnifiedSymOrd

Methods

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

Typeable mode => UnifiedSymOrd mode Int Source # 
Instance details

Defined in Grisette.Unified.Internal.Class.UnifiedSymOrd

Methods

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

Typeable mode => UnifiedSymOrd mode Word Source # 
Instance details

Defined in Grisette.Unified.Internal.Class.UnifiedSymOrd

Methods

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

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

Defined in Grisette.Unified.Internal.Class.UnifiedSymOrd

Methods

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

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

Defined in Grisette.Unified.Internal.Class.UnifiedSymOrd

Methods

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

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

Defined in Grisette.Unified.Internal.Class.UnifiedSymOrd

Methods

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

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

Defined in Grisette.Unified.Internal.Class.UnifiedSymOrd

Methods

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

(Typeable mode, KnownNat n, 1 <= n) => UnifiedSymOrd mode (IntN n) Source # 
Instance details

Defined in Grisette.Unified.Internal.Class.UnifiedSymOrd

Methods

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

(Typeable mode, KnownNat n, 1 <= n) => UnifiedSymOrd mode (WordN n) Source # 
Instance details

Defined in Grisette.Unified.Internal.Class.UnifiedSymOrd

Methods

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

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

Defined in Grisette.Unified.Internal.Class.UnifiedSymOrd

Methods

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

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

Defined in Grisette.Unified.Internal.Class.UnifiedSymOrd

Methods

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

(Typeable mode, UnifiedSymOrd mode a, UnifiedSymOrd mode b) => UnifiedSymOrd mode (Either a b) Source # 
Instance details

Defined in Grisette.Unified.Internal.Class.UnifiedSymOrd

Methods

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

(Typeable mode, ValidFP eb sb) => UnifiedSymOrd mode (FP eb sb) Source # 
Instance details

Defined in Grisette.Unified.Internal.Class.UnifiedSymOrd

Methods

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

(Typeable mode, UnifiedSymOrd1 mode m, UnifiedSymOrd mode a) => UnifiedSymOrd mode (MaybeT m a) Source # 
Instance details

Defined in Grisette.Unified.Internal.Class.UnifiedSymOrd

Methods

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

(Typeable mode, UnifiedSymOrd mode a, UnifiedSymOrd mode b) => UnifiedSymOrd mode (a, b) Source # 
Instance details

Defined in Grisette.Unified.Internal.Class.UnifiedSymOrd

Methods

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

(Typeable mode, UnifiedSymOrd mode e, UnifiedSymOrd1 mode m, UnifiedSymOrd mode a) => UnifiedSymOrd mode (ExceptT e m a) Source # 
Instance details

Defined in Grisette.Unified.Internal.Class.UnifiedSymOrd

Methods

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

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

Defined in Grisette.Unified.Internal.Class.UnifiedSymOrd

Methods

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

(Typeable mode, UnifiedSymOrd mode w, UnifiedSymOrd1 mode m, UnifiedSymOrd mode a) => UnifiedSymOrd mode (WriterT w m a) Source # 
Instance details

Defined in Grisette.Unified.Internal.Class.UnifiedSymOrd

Methods

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

(Typeable mode, UnifiedSymOrd mode w, UnifiedSymOrd1 mode m, UnifiedSymOrd mode a) => UnifiedSymOrd mode (WriterT w m a) Source # 
Instance details

Defined in Grisette.Unified.Internal.Class.UnifiedSymOrd

Methods

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

(Typeable mode, UnifiedSymOrd mode a, UnifiedSymOrd mode b, UnifiedSymOrd mode c) => UnifiedSymOrd mode (a, b, c) Source # 
Instance details

Defined in Grisette.Unified.Internal.Class.UnifiedSymOrd

Methods

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

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

Defined in Grisette.Unified.Internal.Class.UnifiedSymOrd

Methods

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

(Typeable mode, UnifiedSymOrd mode a, UnifiedSymOrd mode b, UnifiedSymOrd mode c, UnifiedSymOrd mode d) => UnifiedSymOrd mode (a, b, c, d) Source # 
Instance details

Defined in Grisette.Unified.Internal.Class.UnifiedSymOrd

Methods

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

(Typeable mode, UnifiedSymOrd mode a, UnifiedSymOrd mode b, UnifiedSymOrd mode c, UnifiedSymOrd mode d, UnifiedSymOrd mode e) => UnifiedSymOrd mode (a, b, c, d, e) Source # 
Instance details

Defined in Grisette.Unified.Internal.Class.UnifiedSymOrd

Methods

withBaseSymOrd :: (If (IsConMode mode) (Ord (a, b, c, d, e)) (SymOrd (a, b, c, d, e)) => r) -> r Source #

(Typeable mode, UnifiedSymOrd mode a, UnifiedSymOrd mode b, UnifiedSymOrd mode c, UnifiedSymOrd mode d, UnifiedSymOrd mode e, UnifiedSymOrd mode f) => UnifiedSymOrd mode (a, b, c, d, e, f) Source # 
Instance details

Defined in Grisette.Unified.Internal.Class.UnifiedSymOrd

Methods

withBaseSymOrd :: (If (IsConMode mode) (Ord (a, b, c, d, e, f)) (SymOrd (a, b, c, d, e, f)) => r) -> r Source #

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

Defined in Grisette.Unified.Internal.Class.UnifiedSymOrd

Methods

withBaseSymOrd :: (If (IsConMode mode) (Ord (a, b, c, d, e, f, g)) (SymOrd (a, b, c, d, e, f, g)) => r) -> r Source #

(Typeable mode, UnifiedSymOrd mode a, UnifiedSymOrd mode b, UnifiedSymOrd mode c, UnifiedSymOrd mode d, UnifiedSymOrd mode e, UnifiedSymOrd mode f, UnifiedSymOrd mode g, UnifiedSymOrd mode h) => UnifiedSymOrd mode (a, b, c, d, e, f, g, h) Source # 
Instance details

Defined in Grisette.Unified.Internal.Class.UnifiedSymOrd

Methods

withBaseSymOrd :: (If (IsConMode mode) (Ord (a, b, c, d, e, f, g, h)) (SymOrd (a, b, c, d, e, f, g, h)) => r) -> r Source #

(Typeable mode, UnifiedSymOrd mode a, UnifiedSymOrd mode b, UnifiedSymOrd mode c, UnifiedSymOrd mode d, UnifiedSymOrd mode e, UnifiedSymOrd mode f, UnifiedSymOrd mode g, UnifiedSymOrd mode h, UnifiedSymOrd mode i) => UnifiedSymOrd mode (a, b, c, d, e, f, g, h, i) Source # 
Instance details

Defined in Grisette.Unified.Internal.Class.UnifiedSymOrd

Methods

withBaseSymOrd :: (If (IsConMode mode) (Ord (a, b, c, d, e, f, g, h, i)) (SymOrd (a, b, c, d, e, f, g, h, i)) => r) -> r Source #

(Typeable mode, UnifiedSymOrd mode a, UnifiedSymOrd mode b, UnifiedSymOrd mode c, UnifiedSymOrd mode d, UnifiedSymOrd mode e, UnifiedSymOrd mode f, UnifiedSymOrd mode g, UnifiedSymOrd mode h, UnifiedSymOrd mode i, UnifiedSymOrd mode j) => UnifiedSymOrd mode (a, b, c, d, e, f, g, h, i, j) Source # 
Instance details

Defined in Grisette.Unified.Internal.Class.UnifiedSymOrd

Methods

withBaseSymOrd :: (If (IsConMode mode) (Ord (a, b, c, d, e, f, g, h, i, j)) (SymOrd (a, b, c, d, e, f, g, h, i, j)) => r) -> r Source #

(Typeable mode, UnifiedSymOrd mode a, UnifiedSymOrd mode b, UnifiedSymOrd mode c, UnifiedSymOrd mode d, UnifiedSymOrd mode e, UnifiedSymOrd mode f, UnifiedSymOrd mode g, UnifiedSymOrd mode h, UnifiedSymOrd mode i, UnifiedSymOrd mode j, UnifiedSymOrd mode k) => UnifiedSymOrd mode (a, b, c, d, e, f, g, h, i, j, k) Source # 
Instance details

Defined in Grisette.Unified.Internal.Class.UnifiedSymOrd

Methods

withBaseSymOrd :: (If (IsConMode mode) (Ord (a, b, c, d, e, f, g, h, i, j, k)) (SymOrd (a, b, c, d, e, f, g, h, i, j, k)) => r) -> r Source #

(Typeable mode, UnifiedSymOrd mode a, UnifiedSymOrd mode b, UnifiedSymOrd mode c, UnifiedSymOrd mode d, UnifiedSymOrd mode e, UnifiedSymOrd mode f, UnifiedSymOrd mode g, UnifiedSymOrd mode h, UnifiedSymOrd mode i, UnifiedSymOrd mode j, UnifiedSymOrd mode k, UnifiedSymOrd mode l) => UnifiedSymOrd mode (a, b, c, d, e, f, g, h, i, j, k, l) Source # 
Instance details

Defined in Grisette.Unified.Internal.Class.UnifiedSymOrd

Methods

withBaseSymOrd :: (If (IsConMode mode) (Ord (a, b, c, d, e, f, g, h, i, j, k, l)) (SymOrd (a, b, c, d, e, f, g, h, i, j, k, l)) => r) -> r Source #

(Typeable mode, UnifiedSymOrd mode a, UnifiedSymOrd mode b, UnifiedSymOrd mode c, UnifiedSymOrd mode d, UnifiedSymOrd mode e, UnifiedSymOrd mode f, UnifiedSymOrd mode g, UnifiedSymOrd mode h, UnifiedSymOrd mode i, UnifiedSymOrd mode j, UnifiedSymOrd mode k, UnifiedSymOrd mode l, UnifiedSymOrd mode m) => UnifiedSymOrd mode (a, b, c, d, e, f, g, h, i, j, k, l, m) Source # 
Instance details

Defined in Grisette.Unified.Internal.Class.UnifiedSymOrd

Methods

withBaseSymOrd :: (If (IsConMode mode) (Ord (a, b, c, d, e, f, g, h, i, j, k, l, m)) (SymOrd (a, b, c, d, e, f, g, h, i, j, k, l, m)) => r) -> r Source #

(Typeable mode, UnifiedSymOrd mode a, UnifiedSymOrd mode b, UnifiedSymOrd mode c, UnifiedSymOrd mode d, UnifiedSymOrd mode e, UnifiedSymOrd mode f, UnifiedSymOrd mode g, UnifiedSymOrd mode h, UnifiedSymOrd mode i, UnifiedSymOrd mode j, UnifiedSymOrd mode k, UnifiedSymOrd mode l, UnifiedSymOrd mode m, UnifiedSymOrd mode n) => UnifiedSymOrd mode (a, b, c, d, e, f, g, h, i, j, k, l, m, n) Source # 
Instance details

Defined in Grisette.Unified.Internal.Class.UnifiedSymOrd

Methods

withBaseSymOrd :: (If (IsConMode mode) (Ord (a, b, c, d, e, f, g, h, i, j, k, l, m, n)) (SymOrd (a, b, c, d, e, f, g, h, i, j, k, l, m, n)) => r) -> r Source #

(Typeable mode, UnifiedSymOrd mode a, UnifiedSymOrd mode b, UnifiedSymOrd mode c, UnifiedSymOrd mode d, UnifiedSymOrd mode e, UnifiedSymOrd mode f, UnifiedSymOrd mode g, UnifiedSymOrd mode h, UnifiedSymOrd mode i, UnifiedSymOrd mode j, UnifiedSymOrd mode k, UnifiedSymOrd mode l, UnifiedSymOrd mode m, UnifiedSymOrd mode n, UnifiedSymOrd mode o) => UnifiedSymOrd mode (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o) Source # 
Instance details

Defined in Grisette.Unified.Internal.Class.UnifiedSymOrd

Methods

withBaseSymOrd :: (If (IsConMode mode) (Ord (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o)) (SymOrd (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o)) => r) -> r Source #

(.<=) :: forall mode a. (Typeable 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 a. (Typeable mode, UnifiedSymOrd mode a) => a -> a -> GetBool mode Source #

Unified (.<).

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

Unified (.>=).

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

Unified (.>).

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

Unified symCompare.

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

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

Unified symCompare1.

liftSymCompare2 :: forall mode f a b c d. (Typeable 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 f a b. (Typeable 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 a. (UnifiedSymOrd mode a, UnifiedITEOp mode a, Typeable mode) => a -> a -> a Source #

Unified symMax.

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

Unified symMin.

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

Unified mrgMax.

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

Unified mrgMin.

Unified finite bits

class UnifiedFiniteBits mode 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 'Con SomeIntN Source # 
Instance details

Defined in Grisette.Unified.Internal.Class.UnifiedFiniteBits

UnifiedFiniteBits 'Con SomeWordN Source # 
Instance details

Defined in Grisette.Unified.Internal.Class.UnifiedFiniteBits

UnifiedFiniteBits 'Sym SomeSymIntN Source # 
Instance details

Defined in Grisette.Unified.Internal.Class.UnifiedFiniteBits

UnifiedFiniteBits 'Sym SomeSymWordN Source # 
Instance details

Defined in Grisette.Unified.Internal.Class.UnifiedFiniteBits

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

Defined in Grisette.Unified.Internal.Class.UnifiedFiniteBits

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

Defined in Grisette.Unified.Internal.Class.UnifiedFiniteBits

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

Defined in Grisette.Unified.Internal.Class.UnifiedFiniteBits

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

Defined in Grisette.Unified.Internal.Class.UnifiedFiniteBits

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

Unified symTestBit.

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

Unified symSetBitTo.

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

Unified symFromBits.

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

Unified symBitBlast.

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

Unified symLsb.

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

Unified symMsb.

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

Unified symPopCount.

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

symCountTrailingZeros :: forall mode a b. (Typeable mode, UnifiedFiniteBits mode a, Num b, UnifiedITEOp mode b) => a -> b 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 'Con Integer AlgReal Source # 
Instance details

Defined in Grisette.Unified.Internal.Class.UnifiedFromIntegral

UnifiedFromIntegral 'Con Integer Integer Source # 
Instance details

Defined in Grisette.Unified.Internal.Class.UnifiedFromIntegral

UnifiedFromIntegral 'Sym SymInteger SymAlgReal Source # 
Instance details

Defined in Grisette.Unified.Internal.Class.UnifiedFromIntegral

UnifiedFromIntegral 'Sym SymInteger SymInteger Source # 
Instance details

Defined in Grisette.Unified.Internal.Class.UnifiedFromIntegral

(Typeable mode, If (IsConMode mode) (Integral a, Num b) (SymFromIntegral a b)) => UnifiedFromIntegral mode a b Source # 
Instance details

Defined in Grisette.Unified.Internal.Class.UnifiedFromIntegral

Methods

withBaseFromIntegral :: (If (IsConMode mode) (Integral a, Num b) (SymFromIntegral a b) => r) -> r Source #

(KnownNat n, 1 <= n) => UnifiedFromIntegral 'Con Integer (IntN n) Source # 
Instance details

Defined in Grisette.Unified.Internal.Class.UnifiedFromIntegral

(KnownNat n, 1 <= n) => UnifiedFromIntegral 'Con Integer (WordN n) Source # 
Instance details

Defined in Grisette.Unified.Internal.Class.UnifiedFromIntegral

(KnownNat n, 1 <= n) => UnifiedFromIntegral 'Sym SymInteger (SymIntN n) Source # 
Instance details

Defined in Grisette.Unified.Internal.Class.UnifiedFromIntegral

(KnownNat n, 1 <= n) => UnifiedFromIntegral 'Sym SymInteger (SymWordN n) Source # 
Instance details

Defined in Grisette.Unified.Internal.Class.UnifiedFromIntegral

ValidFP eb sb => UnifiedFromIntegral 'Con Integer (FP eb sb) Source # 
Instance details

Defined in Grisette.Unified.Internal.Class.UnifiedFromIntegral

Methods

withBaseFromIntegral :: (If (IsConMode 'Con) (Integral Integer, Num (FP eb sb)) (SymFromIntegral Integer (FP eb sb)) => r) -> r Source #

ValidFP eb sb => UnifiedFromIntegral 'Sym SymInteger (SymFP eb sb) Source # 
Instance details

Defined in Grisette.Unified.Internal.Class.UnifiedFromIntegral

(KnownNat n', 1 <= n') => UnifiedFromIntegral 'Con (IntN n') AlgReal Source # 
Instance details

Defined in Grisette.Unified.Internal.Class.UnifiedFromIntegral

(KnownNat n', 1 <= n') => UnifiedFromIntegral 'Con (IntN n') Integer Source # 
Instance details

Defined in Grisette.Unified.Internal.Class.UnifiedFromIntegral

(KnownNat n', 1 <= n') => UnifiedFromIntegral 'Con (WordN n') AlgReal Source # 
Instance details

Defined in Grisette.Unified.Internal.Class.UnifiedFromIntegral

(KnownNat n', 1 <= n') => UnifiedFromIntegral 'Con (WordN n') Integer Source # 
Instance details

Defined in Grisette.Unified.Internal.Class.UnifiedFromIntegral

(KnownNat n', 1 <= n') => UnifiedFromIntegral 'Sym (SymIntN n') SymAlgReal Source # 
Instance details

Defined in Grisette.Unified.Internal.Class.UnifiedFromIntegral

(KnownNat n', 1 <= n') => UnifiedFromIntegral 'Sym (SymIntN n') SymInteger Source # 
Instance details

Defined in Grisette.Unified.Internal.Class.UnifiedFromIntegral

(KnownNat n', 1 <= n') => UnifiedFromIntegral 'Sym (SymWordN n') SymAlgReal Source # 
Instance details

Defined in Grisette.Unified.Internal.Class.UnifiedFromIntegral

(KnownNat n', 1 <= n') => UnifiedFromIntegral 'Sym (SymWordN n') SymInteger Source # 
Instance details

Defined in Grisette.Unified.Internal.Class.UnifiedFromIntegral

(KnownNat n', 1 <= n', KnownNat n, 1 <= n) => UnifiedFromIntegral 'Con (IntN n') (IntN n) Source # 
Instance details

Defined in Grisette.Unified.Internal.Class.UnifiedFromIntegral

Methods

withBaseFromIntegral :: (If (IsConMode 'Con) (Integral (IntN n'), Num (IntN n)) (SymFromIntegral (IntN n') (IntN n)) => r) -> r Source #

(KnownNat n', 1 <= n', KnownNat n, 1 <= n) => UnifiedFromIntegral 'Con (IntN n') (WordN n) Source # 
Instance details

Defined in Grisette.Unified.Internal.Class.UnifiedFromIntegral

Methods

withBaseFromIntegral :: (If (IsConMode 'Con) (Integral (IntN n'), Num (WordN n)) (SymFromIntegral (IntN n') (WordN n)) => r) -> r Source #

(KnownNat n', 1 <= n', KnownNat n, 1 <= n) => UnifiedFromIntegral 'Con (WordN n') (IntN n) Source # 
Instance details

Defined in Grisette.Unified.Internal.Class.UnifiedFromIntegral

Methods

withBaseFromIntegral :: (If (IsConMode 'Con) (Integral (WordN n'), Num (IntN n)) (SymFromIntegral (WordN n') (IntN n)) => r) -> r Source #

(KnownNat n', 1 <= n', KnownNat n, 1 <= n) => UnifiedFromIntegral 'Con (WordN n') (WordN n) Source # 
Instance details

Defined in Grisette.Unified.Internal.Class.UnifiedFromIntegral

Methods

withBaseFromIntegral :: (If (IsConMode 'Con) (Integral (WordN n'), Num (WordN n)) (SymFromIntegral (WordN n') (WordN n)) => r) -> r Source #

(KnownNat n', 1 <= n', KnownNat n, 1 <= n) => UnifiedFromIntegral 'Sym (SymIntN n') (SymIntN n) Source # 
Instance details

Defined in Grisette.Unified.Internal.Class.UnifiedFromIntegral

(KnownNat n', 1 <= n', KnownNat n, 1 <= n) => UnifiedFromIntegral 'Sym (SymIntN n') (SymWordN n) Source # 
Instance details

Defined in Grisette.Unified.Internal.Class.UnifiedFromIntegral

(KnownNat n', 1 <= n', KnownNat n, 1 <= n) => UnifiedFromIntegral 'Sym (SymWordN n') (SymIntN n) Source # 
Instance details

Defined in Grisette.Unified.Internal.Class.UnifiedFromIntegral

(KnownNat n', 1 <= n', KnownNat n, 1 <= n) => UnifiedFromIntegral 'Sym (SymWordN n') (SymWordN n) Source # 
Instance details

Defined in Grisette.Unified.Internal.Class.UnifiedFromIntegral

(KnownNat n', 1 <= n', ValidFP eb sb) => UnifiedFromIntegral 'Con (IntN n') (FP eb sb) Source # 
Instance details

Defined in Grisette.Unified.Internal.Class.UnifiedFromIntegral

Methods

withBaseFromIntegral :: (If (IsConMode 'Con) (Integral (IntN n'), Num (FP eb sb)) (SymFromIntegral (IntN n') (FP eb sb)) => r) -> r Source #

(KnownNat n', 1 <= n', ValidFP eb sb) => UnifiedFromIntegral 'Con (WordN n') (FP eb sb) Source # 
Instance details

Defined in Grisette.Unified.Internal.Class.UnifiedFromIntegral

Methods

withBaseFromIntegral :: (If (IsConMode 'Con) (Integral (WordN n'), Num (FP eb sb)) (SymFromIntegral (WordN n') (FP eb sb)) => r) -> r Source #

(KnownNat n', 1 <= n', ValidFP eb sb) => UnifiedFromIntegral 'Sym (SymIntN n') (SymFP eb sb) Source # 
Instance details

Defined in Grisette.Unified.Internal.Class.UnifiedFromIntegral

Methods

withBaseFromIntegral :: (If (IsConMode 'Sym) (Integral (SymIntN n'), Num (SymFP eb sb)) (SymFromIntegral (SymIntN n') (SymFP eb sb)) => r) -> r Source #

(KnownNat n', 1 <= n', ValidFP eb sb) => UnifiedFromIntegral 'Sym (SymWordN n') (SymFP eb sb) Source # 
Instance details

Defined in Grisette.Unified.Internal.Class.UnifiedFromIntegral

Methods

withBaseFromIntegral :: (If (IsConMode 'Sym) (Integral (SymWordN n'), Num (SymFP eb sb)) (SymFromIntegral (SymWordN n') (SymFP eb sb)) => r) -> r Source #

symFromIntegral :: forall mode a b. (Typeable 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 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.Unified.Internal.Class.UnifiedSafeBitCast

Methods

withBaseSafeBitCast :: (SafeBitCast e a b m => r) -> r Source #

(MonadError NotRepresentableFPError m, UnifiedBranching 'Sym m, ValidFP eb sb, KnownNat n, 1 <= n, n ~ (eb + sb)) => UnifiedSafeBitCast 'Sym NotRepresentableFPError (SymFP eb sb) (SymIntN n) m Source # 
Instance details

Defined in Grisette.Unified.Internal.Class.UnifiedSafeBitCast

(MonadError NotRepresentableFPError m, UnifiedBranching 'Sym m, ValidFP eb sb, KnownNat n, 1 <= n, n ~ (eb + sb)) => UnifiedSafeBitCast 'Sym NotRepresentableFPError (SymFP eb sb) (SymWordN n) m Source # 
Instance details

Defined in Grisette.Unified.Internal.Class.UnifiedSafeBitCast

(Typeable mode, 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.Unified.Internal.Class.UnifiedSafeBitCast

(Typeable mode, 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.Unified.Internal.Class.UnifiedSafeBitCast

safeBitCast :: forall mode 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 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.Unified.Internal.Class.UnifiedSafeFromFP

Methods

withBaseSafeFromFP :: (SafeFromFP e a fp fprd m => r) -> r Source #

(MonadError NotRepresentableFPError m, UnifiedBranching 'Sym m, ValidFP eb sb) => UnifiedSafeFromFP 'Sym NotRepresentableFPError SymAlgReal (SymFP eb sb) SymFPRoundingMode m Source # 
Instance details

Defined in Grisette.Unified.Internal.Class.UnifiedSafeFromFP

(MonadError NotRepresentableFPError m, UnifiedBranching 'Sym m, ValidFP eb sb) => UnifiedSafeFromFP 'Sym NotRepresentableFPError SymInteger (SymFP eb sb) SymFPRoundingMode m Source # 
Instance details

Defined in Grisette.Unified.Internal.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.Unified.Internal.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.Unified.Internal.Class.UnifiedSafeFromFP

(MonadError NotRepresentableFPError m, UnifiedBranching 'Sym m, ValidFP eb sb, KnownNat n, 1 <= n) => UnifiedSafeFromFP 'Sym NotRepresentableFPError (SymIntN n) (SymFP eb sb) SymFPRoundingMode m Source # 
Instance details

Defined in Grisette.Unified.Internal.Class.UnifiedSafeFromFP

(MonadError NotRepresentableFPError m, UnifiedBranching 'Sym m, ValidFP eb sb, KnownNat n, 1 <= n) => UnifiedSafeFromFP 'Sym NotRepresentableFPError (SymWordN n) (SymFP eb sb) SymFPRoundingMode m Source # 
Instance details

Defined in Grisette.Unified.Internal.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.Unified.Internal.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.Unified.Internal.Class.UnifiedSafeFromFP

safeFromFP :: forall mode 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 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 'Sym m) => UnifiedSafeDiv 'Sym ArithException SymInteger m Source # 
Instance details

Defined in Grisette.Unified.Internal.Class.UnifiedSafeDiv

(MonadError ArithException m, UnifiedBranching mode m) => UnifiedSafeDiv mode ArithException Integer m Source # 
Instance details

Defined in Grisette.Unified.Internal.Class.UnifiedSafeDiv

(UnifiedBranching mode m, SafeDiv e a m) => UnifiedSafeDiv mode e a m Source # 
Instance details

Defined in Grisette.Unified.Internal.Class.UnifiedSafeDiv

Methods

withBaseSafeDiv :: (SafeDiv e a m => r) -> r Source #

(MonadError ArithException m, UnifiedBranching 'Sym m, KnownNat n, 1 <= n) => UnifiedSafeDiv 'Sym ArithException (SymIntN n) m Source # 
Instance details

Defined in Grisette.Unified.Internal.Class.UnifiedSafeDiv

(MonadError ArithException m, UnifiedBranching 'Sym m, KnownNat n, 1 <= n) => UnifiedSafeDiv 'Sym ArithException (SymWordN n) m Source # 
Instance details

Defined in Grisette.Unified.Internal.Class.UnifiedSafeDiv

(MonadError ArithException m, UnifiedBranching mode m, KnownNat n, 1 <= n) => UnifiedSafeDiv mode ArithException (IntN n) m Source # 
Instance details

Defined in Grisette.Unified.Internal.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.Unified.Internal.Class.UnifiedSafeDiv

Methods

withBaseSafeDiv :: (SafeDiv ArithException (WordN n) m => r) -> r Source #

(MonadError (Either SomeBVException ArithException) m, UnifiedBranching 'Sym m) => UnifiedSafeDiv 'Sym (Either SomeBVException ArithException) SomeSymIntN m Source # 
Instance details

Defined in Grisette.Unified.Internal.Class.UnifiedSafeDiv

(MonadError (Either SomeBVException ArithException) m, UnifiedBranching 'Sym m) => UnifiedSafeDiv 'Sym (Either SomeBVException ArithException) SomeSymWordN m Source # 
Instance details

Defined in Grisette.Unified.Internal.Class.UnifiedSafeDiv

(MonadError (Either SomeBVException ArithException) m, UnifiedBranching mode m) => UnifiedSafeDiv mode (Either SomeBVException ArithException) SomeIntN m Source # 
Instance details

Defined in Grisette.Unified.Internal.Class.UnifiedSafeDiv

(MonadError (Either SomeBVException ArithException) m, UnifiedBranching mode m) => UnifiedSafeDiv mode (Either SomeBVException ArithException) SomeWordN m Source # 
Instance details

Defined in Grisette.Unified.Internal.Class.UnifiedSafeDiv

safeDiv :: forall mode 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 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 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 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 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 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 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 'Sym m) => UnifiedSafeLinearArith 'Sym ArithException SymInteger m Source # 
Instance details

Defined in Grisette.Unified.Internal.Class.UnifiedSafeLinearArith

(Typeable mode, MonadError ArithException m, UnifiedBranching mode m) => UnifiedSafeLinearArith mode ArithException Integer m Source # 
Instance details

Defined in Grisette.Unified.Internal.Class.UnifiedSafeLinearArith

(UnifiedBranching mode m, SafeLinearArith e a m) => UnifiedSafeLinearArith mode e a m Source # 
Instance details

Defined in Grisette.Unified.Internal.Class.UnifiedSafeLinearArith

Methods

withBaseSafeLinearArith :: (SafeLinearArith e a m => r) -> r Source #

(MonadError ArithException m, UnifiedBranching 'Sym m, KnownNat n, 1 <= n) => UnifiedSafeLinearArith 'Sym ArithException (SymIntN n) m Source # 
Instance details

Defined in Grisette.Unified.Internal.Class.UnifiedSafeLinearArith

(MonadError ArithException m, UnifiedBranching 'Sym m, KnownNat n, 1 <= n) => UnifiedSafeLinearArith 'Sym ArithException (SymWordN n) m Source # 
Instance details

Defined in Grisette.Unified.Internal.Class.UnifiedSafeLinearArith

(MonadError ArithException m, UnifiedBranching mode m, KnownNat n, 1 <= n) => UnifiedSafeLinearArith mode ArithException (IntN n) m Source # 
Instance details

Defined in Grisette.Unified.Internal.Class.UnifiedSafeLinearArith

(MonadError ArithException m, UnifiedBranching mode m, KnownNat n, 1 <= n) => UnifiedSafeLinearArith mode ArithException (WordN n) m Source # 
Instance details

Defined in Grisette.Unified.Internal.Class.UnifiedSafeLinearArith

(MonadError (Either SomeBVException ArithException) m, UnifiedBranching 'Sym m) => UnifiedSafeLinearArith 'Sym (Either SomeBVException ArithException) SomeSymIntN m Source # 
Instance details

Defined in Grisette.Unified.Internal.Class.UnifiedSafeLinearArith

(MonadError (Either SomeBVException ArithException) m, UnifiedBranching 'Sym m) => UnifiedSafeLinearArith 'Sym (Either SomeBVException ArithException) SomeSymWordN m Source # 
Instance details

Defined in Grisette.Unified.Internal.Class.UnifiedSafeLinearArith

(MonadError (Either SomeBVException ArithException) m, UnifiedBranching mode m) => UnifiedSafeLinearArith mode (Either SomeBVException ArithException) SomeIntN m Source # 
Instance details

Defined in Grisette.Unified.Internal.Class.UnifiedSafeLinearArith

(MonadError (Either SomeBVException ArithException) m, UnifiedBranching mode m) => UnifiedSafeLinearArith mode (Either SomeBVException ArithException) SomeWordN m Source # 
Instance details

Defined in Grisette.Unified.Internal.Class.UnifiedSafeLinearArith

safeAdd :: forall mode 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 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 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 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.Unified.Internal.Class.UnifiedSafeSymRotate

Methods

withBaseSafeSymRotate :: (SafeSymRotate e a m => r) -> r Source #

(MonadError ArithException m, UnifiedBranching 'Sym m, KnownNat n, 1 <= n) => UnifiedSafeSymRotate 'Sym ArithException (SymIntN n) m Source # 
Instance details

Defined in Grisette.Unified.Internal.Class.UnifiedSafeSymRotate

(MonadError ArithException m, UnifiedBranching 'Sym m, KnownNat n, 1 <= n) => UnifiedSafeSymRotate 'Sym ArithException (SymWordN n) m Source # 
Instance details

Defined in Grisette.Unified.Internal.Class.UnifiedSafeSymRotate

(MonadError ArithException m, UnifiedBranching mode m, KnownNat n, 1 <= n) => UnifiedSafeSymRotate mode ArithException (IntN n) m Source # 
Instance details

Defined in Grisette.Unified.Internal.Class.UnifiedSafeSymRotate

(MonadError ArithException m, UnifiedBranching mode m, KnownNat n, 1 <= n) => UnifiedSafeSymRotate mode ArithException (WordN n) m Source # 
Instance details

Defined in Grisette.Unified.Internal.Class.UnifiedSafeSymRotate

(MonadError (Either SomeBVException ArithException) m, UnifiedBranching 'Sym m) => UnifiedSafeSymRotate 'Sym (Either SomeBVException ArithException) SomeSymIntN m Source # 
Instance details

Defined in Grisette.Unified.Internal.Class.UnifiedSafeSymRotate

(MonadError (Either SomeBVException ArithException) m, UnifiedBranching 'Sym m) => UnifiedSafeSymRotate 'Sym (Either SomeBVException ArithException) SomeSymWordN m Source # 
Instance details

Defined in Grisette.Unified.Internal.Class.UnifiedSafeSymRotate

(MonadError (Either SomeBVException ArithException) m, UnifiedBranching mode m) => UnifiedSafeSymRotate mode (Either SomeBVException ArithException) SomeIntN m Source # 
Instance details

Defined in Grisette.Unified.Internal.Class.UnifiedSafeSymRotate

(MonadError (Either SomeBVException ArithException) m, UnifiedBranching mode m) => UnifiedSafeSymRotate mode (Either SomeBVException ArithException) SomeWordN m Source # 
Instance details

Defined in Grisette.Unified.Internal.Class.UnifiedSafeSymRotate

safeSymRotateL :: forall mode 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 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 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.Unified.Internal.Class.UnifiedSafeSymShift

Methods

withBaseSafeSymShift :: (SafeSymShift e a m => r) -> r Source #

(MonadError ArithException m, UnifiedBranching 'Sym m, KnownNat n, 1 <= n) => UnifiedSafeSymShift 'Sym ArithException (SymIntN n) m Source # 
Instance details

Defined in Grisette.Unified.Internal.Class.UnifiedSafeSymShift

(MonadError ArithException m, UnifiedBranching 'Sym m, KnownNat n, 1 <= n) => UnifiedSafeSymShift 'Sym ArithException (SymWordN n) m Source # 
Instance details

Defined in Grisette.Unified.Internal.Class.UnifiedSafeSymShift

(MonadError ArithException m, UnifiedBranching mode m, KnownNat n, 1 <= n) => UnifiedSafeSymShift mode ArithException (IntN n) m Source # 
Instance details

Defined in Grisette.Unified.Internal.Class.UnifiedSafeSymShift

(MonadError ArithException m, UnifiedBranching mode m, KnownNat n, 1 <= n) => UnifiedSafeSymShift mode ArithException (WordN n) m Source # 
Instance details

Defined in Grisette.Unified.Internal.Class.UnifiedSafeSymShift

(MonadError (Either SomeBVException ArithException) m, UnifiedBranching 'Sym m) => UnifiedSafeSymShift 'Sym (Either SomeBVException ArithException) SomeSymIntN m Source # 
Instance details

Defined in Grisette.Unified.Internal.Class.UnifiedSafeSymShift

(MonadError (Either SomeBVException ArithException) m, UnifiedBranching 'Sym m) => UnifiedSafeSymShift 'Sym (Either SomeBVException ArithException) SomeSymWordN m Source # 
Instance details

Defined in Grisette.Unified.Internal.Class.UnifiedSafeSymShift

(MonadError (Either SomeBVException ArithException) m, UnifiedBranching mode m) => UnifiedSafeSymShift mode (Either SomeBVException ArithException) SomeIntN m Source # 
Instance details

Defined in Grisette.Unified.Internal.Class.UnifiedSafeSymShift

(MonadError (Either SomeBVException ArithException) m, UnifiedBranching mode m) => UnifiedSafeSymShift mode (Either SomeBVException ArithException) SomeWordN m Source # 
Instance details

Defined in Grisette.Unified.Internal.Class.UnifiedSafeSymShift

safeSymShiftL :: forall mode 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 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 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 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 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 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

Unified types

Boolean

type family GetBool mode = bool | bool -> mode Source #

Get a unified Boolean type. Resolves to Bool in Con mode, and SymBool in Sym mode.

Instances

Instances details
type GetBool 'Con Source # 
Instance details

Defined in Grisette.Unified.Internal.UnifiedBool

type GetBool 'Con = Bool
type GetBool 'Sym Source # 
Instance details

Defined in Grisette.Unified.Internal.UnifiedBool

Bit-vector

type family GetIntN mode = (i :: Nat -> Type) | i -> mode Source #

Get a unified signed size-tagged bit vector type. Resolves to IntN in Con mode, and SymIntN in Sym mode.

Instances

Instances details
type GetIntN 'Con Source # 
Instance details

Defined in Grisette.Unified.Internal.UnifiedBV

type GetIntN 'Con = IntN
type GetIntN 'Sym Source # 
Instance details

Defined in Grisette.Unified.Internal.UnifiedBV

type family GetWordN mode = (w :: Nat -> Type) | w -> mode Source #

Get a unified unsigned size-tagged bit vector type. Resolves to WordN in Con mode, and SymWordN in Sym mode.

Instances

Instances details
type GetWordN 'Con Source # 
Instance details

Defined in Grisette.Unified.Internal.UnifiedBV

type GetWordN 'Sym Source # 
Instance details

Defined in Grisette.Unified.Internal.UnifiedBV

type family GetSomeWordN mode = sw | sw -> mode where ... Source #

Get a unified unsigned dynamic bit width bit vector type. Resolves to SomeWordN in Con mode, and SomeSymWordN in Sym mode.

Equations

GetSomeWordN mode = SomeBV (GetWordN mode) 

type family GetSomeIntN mode = sw | sw -> mode where ... Source #

Get a unified signed dynamic bit width bit vector type. Resolves to SomeIntN in Con mode, and SomeSymIntN in Sym mode.

Equations

GetSomeIntN mode = SomeBV (GetIntN mode) 

class UnifiedBVImpl mode (GetWordN mode) (GetIntN mode) n (GetWordN mode n) (GetIntN mode n) => UnifiedBV mode n 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.Unified.Internal.UnifiedBV

class SafeUnifiedBVImpl mode (GetWordN mode) (GetIntN mode) n (GetWordN mode n) (GetIntN mode n) m => SafeUnifiedBV mode n m 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.Unified.Internal.UnifiedBV

class SafeUnifiedSomeBVImpl mode (SomeBV (GetWordN mode)) (SomeBV (GetIntN mode)) m => SafeUnifiedSomeBV mode m 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.Unified.Internal.UnifiedBV

Integer

type family GetInteger mode = int | int -> mode Source #

Get a unified Integer type. Resolves to Integer in Con mode, and SymInteger in Sym mode.

Instances

Instances details
type GetInteger 'Con Source # 
Instance details

Defined in Grisette.Unified.Internal.UnifiedInteger

type GetInteger 'Sym Source # 
Instance details

Defined in Grisette.Unified.Internal.UnifiedInteger

class UnifiedIntegerImpl mode (GetInteger mode) => UnifiedInteger (mode :: EvalModeTag) Source #

Evaluation mode with unified Integer type.

Instances

Instances details
UnifiedInteger 'Con Source # 
Instance details

Defined in Grisette.Unified.Internal.UnifiedInteger

UnifiedInteger 'Sym Source # 
Instance details

Defined in Grisette.Unified.Internal.UnifiedInteger

FP

type family GetFP mode = (f :: Nat -> Nat -> Type) | f -> mode Source #

Get a unified floating point type. Resolves to FP in Con mode, and SymFP in Sym mode.

Instances

Instances details
type GetFP 'Con Source # 
Instance details

Defined in Grisette.Unified.Internal.UnifiedFP

type GetFP 'Con = FP
type GetFP 'Sym Source # 
Instance details

Defined in Grisette.Unified.Internal.UnifiedFP

type GetFP 'Sym = SymFP

type family GetFPRoundingMode mode = r | r -> mode Source #

Get a unified floating point rounding mode type. Resolves to FPRoundingMode in Con mode, and SymFPRoundingMode in Sym mode.

class UnifiedFPImpl mode (GetFP mode) eb sb (GetFP mode eb sb) (GetFPRoundingMode mode) => UnifiedFP mode eb sb 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.Unified.Internal.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 eb sb m 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.Unified.Internal.UnifiedFP

AlgReal

type family GetAlgReal mode = real | real -> mode Source #

Get a unified algebraic real type. Resolves to AlgReal in Con mode, and SymAlgReal in Sym mode.

Floating, LogBaseOr and SafeLogBase for SymAlgReal are not provided as they are not available for AlgReal.

Instances

Instances details
type GetAlgReal 'Con Source # 
Instance details

Defined in Grisette.Unified.Internal.UnifiedAlgReal

type GetAlgReal 'Sym Source # 
Instance details

Defined in Grisette.Unified.Internal.UnifiedAlgReal

class UnifiedAlgRealImpl mode (GetAlgReal mode) => UnifiedAlgReal (mode :: EvalModeTag) Source #

Evaluation mode with unified AlgReal type.

Instances

Instances details
UnifiedAlgReal 'Con Source # 
Instance details

Defined in Grisette.Unified.Internal.UnifiedAlgReal

UnifiedAlgReal 'Sym Source # 
Instance details

Defined in Grisette.Unified.Internal.UnifiedAlgReal

Data

type family GetData mode v = r | r -> mode v Source #

Get a unified data type. Resolves to v in Con mode, and Union v in Sym mode.

Instances

Instances details
type GetData 'Con v Source # 
Instance details

Defined in Grisette.Unified.Internal.UnifiedData

type GetData 'Con v = Identity v
type GetData 'Sym v Source # 
Instance details

Defined in Grisette.Unified.Internal.UnifiedData

type GetData 'Sym v = Union v

class UnifiedDataImpl mode v (GetData mode v) => UnifiedData mode 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.Unified.Internal.UnifiedData

extractData :: (UnifiedDataImpl mode v u, 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 = (fun :: Type -> Type -> Type) | fun -> mode Source #

Get a unified function type. Resolves to =-> in Con mode, and =~> in Sym mode.

Instances

Instances details
type GetFun 'Con Source # 
Instance details

Defined in Grisette.Unified.Internal.UnifiedFun

type GetFun 'Con = (=->)
type GetFun 'Sym Source # 
Instance details

Defined in Grisette.Unified.Internal.UnifiedFun

type GetFun 'Sym = (=~>)

type GetFun2 mode a b = GetFun mode a b Source #

The unified function type with 2 arguments.

type GetFun3 mode a b c = GetFun mode a (GetFun mode b c) Source #

The unified function type with 3 arguments.

type GetFun4 mode 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 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 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 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 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 'Con Source # 
Instance details

Defined in Grisette.Unified.Internal.UnifiedFun

Associated Types

type GetFun 'Con = (fun :: Type -> Type -> Type) Source #

UnifiedFun 'Sym Source # 
Instance details

Defined in Grisette.Unified.Internal.UnifiedFun

Associated Types

type GetFun 'Sym = (fun :: Type -> Type -> Type) Source #

type UnifiedFunConstraint mode a b ca cb sa sb = (Eq (GetFun mode a b), EvalSym (GetFun mode a b), ExtractSym (GetFun mode a b), PPrint (GetFun mode a b), Hashable (GetFun mode a b), Lift (GetFun mode a b), Mergeable (GetFun mode a b), NFData (GetFun mode a b), Show (GetFun mode a b), SubstSym (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 n1 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.Unified.Internal.BVBVConversion

class UnifiedBVFPConversionImpl (mode :: EvalModeTag) (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 #

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.Unified.Internal.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 n eb sb m 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.Unified.Internal.BVFPConversion

class UnifiedFPFPConversionImpl (mode :: EvalModeTag) (GetFP mode) eb0 sb0 eb1 sb1 (GetFP mode eb0 sb0) (GetFP mode eb1 sb1) (GetFPRoundingMode mode) => UnifiedFPFPConversion mode eb0 sb0 eb1 sb1 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.Unified.Internal.FPFPConversion