grisette-0.7.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

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

Defined in Grisette.Unified.Internal.EvalMode

EvalMode 'Sym Source # 
Instance details

Defined in Grisette.Unified.Internal.EvalMode

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

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.

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 #

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 #

(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, 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.

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 #

(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, 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 safe ops

class UnifiedSafeDivision (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 SafeDivision.

Methods

withBaseSafeDivision :: (SafeDivision e a m => r) -> r Source #

Instances

Instances details
(MonadError ArithException m, UnifiedBranching 'Sym m) => UnifiedSafeDivision 'Sym ArithException SymInteger m Source # 
Instance details

Defined in Grisette.Unified.Internal.Class.UnifiedSafeDivision

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

Defined in Grisette.Unified.Internal.Class.UnifiedSafeDivision

(UnifiedBranching mode m, SafeDivision e a m) => UnifiedSafeDivision mode e a m Source # 
Instance details

Defined in Grisette.Unified.Internal.Class.UnifiedSafeDivision

Methods

withBaseSafeDivision :: (SafeDivision e a m => r) -> r Source #

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

Defined in Grisette.Unified.Internal.Class.UnifiedSafeDivision

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

Defined in Grisette.Unified.Internal.Class.UnifiedSafeDivision

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

Defined in Grisette.Unified.Internal.Class.UnifiedSafeDivision

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

Defined in Grisette.Unified.Internal.Class.UnifiedSafeDivision

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

Defined in Grisette.Unified.Internal.Class.UnifiedSafeDivision

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

Defined in Grisette.Unified.Internal.Class.UnifiedSafeDivision

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

Defined in Grisette.Unified.Internal.Class.UnifiedSafeDivision

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

Defined in Grisette.Unified.Internal.Class.UnifiedSafeDivision

safeDiv :: forall mode e a m. (MonadError e m, UnifiedSafeDivision 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, UnifiedSafeDivision 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, UnifiedSafeDivision 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, UnifiedSafeDivision 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, UnifiedSafeDivision 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, UnifiedSafeDivision 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 BitwidthMismatch ArithException) m, UnifiedBranching 'Sym m) => UnifiedSafeLinearArith 'Sym (Either BitwidthMismatch ArithException) SomeSymIntN m Source # 
Instance details

Defined in Grisette.Unified.Internal.Class.UnifiedSafeLinearArith

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

Defined in Grisette.Unified.Internal.Class.UnifiedSafeLinearArith

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

Defined in Grisette.Unified.Internal.Class.UnifiedSafeLinearArith

(MonadError (Either BitwidthMismatch ArithException) m, UnifiedBranching mode m) => UnifiedSafeLinearArith mode (Either BitwidthMismatch 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 BitwidthMismatch ArithException) m, UnifiedBranching 'Sym m) => UnifiedSafeSymRotate 'Sym (Either BitwidthMismatch ArithException) SomeSymIntN m Source # 
Instance details

Defined in Grisette.Unified.Internal.Class.UnifiedSafeSymRotate

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

Defined in Grisette.Unified.Internal.Class.UnifiedSafeSymRotate

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

Defined in Grisette.Unified.Internal.Class.UnifiedSafeSymRotate

(MonadError (Either BitwidthMismatch ArithException) m, UnifiedBranching mode m) => UnifiedSafeSymRotate mode (Either BitwidthMismatch 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 BitwidthMismatch ArithException) m, UnifiedBranching 'Sym m) => UnifiedSafeSymShift 'Sym (Either BitwidthMismatch ArithException) SomeSymIntN m Source # 
Instance details

Defined in Grisette.Unified.Internal.Class.UnifiedSafeSymShift

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

Defined in Grisette.Unified.Internal.Class.UnifiedSafeSymShift

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

Defined in Grisette.Unified.Internal.Class.UnifiedSafeSymShift

(MonadError (Either BitwidthMismatch ArithException) m, UnifiedBranching mode m) => UnifiedSafeSymShift mode (Either BitwidthMismatch 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

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

Data

type family GetData 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 = 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.