{-# LANGUAGE RecordWildCards #-}
{-# LANGUAGE MonadComprehensions #-}
{-# LANGUAGE ScopedTypeVariables #-}
{-# LANGUAGE TypeApplications #-}
{-# LANGUAGE UnicodeSyntax #-}
module Z3.Tagged
(
Z3
, module Z3.Opts
, Logic(..)
, evalZ3
, evalZ3With
, Z3Env
, newEnv
, Symbol
, AST
, Sort
, FuncDecl
, App
, Pattern
, Constructor
, Model
, Base.Context
, FuncInterp
, FuncEntry
, Params
, Solver
, SortKind(..)
, ASTKind(..)
, Result(..)
, mkParams
, paramsSetBool
, paramsSetUInt
, paramsSetDouble
, paramsSetSymbol
, paramsToString
, mkIntSymbol
, mkStringSymbol
, mkUninterpretedSort
, mkBoolSort
, mkIntSort
, mkRealSort
, mkBvSort
, mkFiniteDomainSort
, mkArraySort
, mkTupleSort
, mkConstructor
, mkDatatype
, mkDatatypes
, mkSetSort
, mkFuncDecl
, mkApp
, mkConst
, mkFreshConst
, mkFreshFuncDecl
, mkVar
, mkBoolVar
, mkRealVar
, mkIntVar
, mkBvVar
, mkFreshVar
, mkFreshBoolVar
, mkFreshRealVar
, mkFreshIntVar
, mkFreshBvVar
, mkTrue
, mkFalse
, mkEq
, mkNot
, mkIte
, mkIff
, mkImplies
, mkXor
, mkAnd
, mkOr
, mkDistinct
, mkBool
, mkAdd
, mkMul
, mkSub
, mkUnaryMinus
, mkDiv
, mkMod
, mkRem
, mkLt
, mkLe
, mkGt
, mkGe
, mkInt2Real
, mkReal2Int
, mkIsInt
, mkBvnot
, mkBvredand
, mkBvredor
, mkBvand
, mkBvor
, mkBvxor
, mkBvnand
, mkBvnor
, mkBvxnor
, mkBvneg
, mkBvadd
, mkBvsub
, mkBvmul
, mkBvudiv
, mkBvsdiv
, mkBvurem
, mkBvsrem
, mkBvsmod
, mkBvult
, mkBvslt
, mkBvule
, mkBvsle
, mkBvuge
, mkBvsge
, mkBvugt
, mkBvsgt
, mkConcat
, mkExtract
, mkSignExt
, mkZeroExt
, mkRepeat
, mkBvshl
, mkBvlshr
, mkBvashr
, mkRotateLeft
, mkRotateRight
, mkExtRotateLeft
, mkExtRotateRight
, mkInt2bv
, mkBv2int
, mkBvnegNoOverflow
, mkBvaddNoOverflow
, mkBvaddNoUnderflow
, mkBvsubNoOverflow
, mkBvsubNoUnderflow
, mkBvmulNoOverflow
, mkBvmulNoUnderflow
, mkBvsdivNoOverflow
, mkSelect
, mkStore
, mkConstArray
, mkMap
, mkArrayDefault
, mkEmptySet
, mkFullSet
, mkSetAdd
, mkSetDel
, mkSetUnion
, mkSetIntersect
, mkSetDifference
, mkSetComplement
, mkSetMember
, mkSetSubset
, mkNumeral
, mkInt
, mkReal
, mkUnsignedInt
, mkInt64
, mkUnsignedInt64
, mkIntegral
, mkRational
, mkFixed
, mkRealNum
, mkInteger
, mkIntNum
, mkBitvector
, mkBvNum
, mkPattern
, mkBound
, mkForall
, mkExists
, mkForallConst
, mkExistsConst
, getSymbolString
, getSortKind
, getBvSortSize
, getDatatypeSortConstructors
, getDatatypeSortRecognizers
, getDatatypeSortConstructorAccessors
, getDeclName
, getArity
, getDomain
, getRange
, appToAst
, getAppDecl
, getAppNumArgs
, getAppArg
, getAppArgs
, getSort
, getArraySortDomain
, getArraySortRange
, getBoolValue
, getAstKind
, isApp
, toApp
, getNumeralString
, simplify
, simplifyEx
, getIndexValue
, isQuantifierForall
, isQuantifierExists
, getQuantifierWeight
, getQuantifierNumPatterns
, getQuantifierPatternAST
, getQuantifierPatterns
, getQuantifierNumNoPatterns
, getQuantifierNoPatternAST
, getQuantifierNoPatterns
, getQuantifierNumBound
, getQuantifierBoundName
, getQuantifierBoundSort
, getQuantifierBoundVars
, getQuantifierBody
, getBool
, getInt
, getReal
, getBv
, substituteVars
, modelEval
, evalArray
, getConstInterp
, getFuncInterp
, hasInterp
, numConsts
, numFuncs
, getConstDecl
, getFuncDecl
, getConsts
, getFuncs
, isAsArray
, addFuncInterp
, addConstInterp
, getAsArrayFuncDecl
, funcInterpGetNumEntries
, funcInterpGetEntry
, funcInterpGetElse
, funcInterpGetArity
, funcEntryGetValue
, funcEntryGetNumArgs
, funcEntryGetArg
, modelToString
, showModel
, EvalAst
, eval
, evalBool
, evalInt
, evalReal
, evalBv
, evalT
, mapEval
, FuncModel(..)
, evalFunc
, mkTactic
, andThenTactic
, orElseTactic
, skipTactic
, tryForTactic
, mkQuantifierEliminationTactic
, mkAndInverterGraphTactic
, applyTactic
, getApplyResultNumSubgoals
, getApplyResultSubgoal
, getApplyResultSubgoals
, mkGoal
, goalAssert
, getGoalSize
, getGoalFormula
, getGoalFormulas
, ASTPrintMode(..)
, setASTPrintMode
, astToString
, patternToString
, sortToString
, funcDeclToString
, benchmarkToSMTLibString
, parseSMTLib2String
, parseSMTLib2File
, Base.Z3Error(..)
, Base.Z3ErrorCode(..)
, Version(..)
, getVersion
, Fixedpoint
, fixedpointPush
, fixedpointPop
, fixedpointAddRule
, fixedpointSetParams
, fixedpointRegisterRelation
, fixedpointQueryRelations
, fixedpointGetAnswer
, fixedpointGetAssertions
, solverGetHelp
, solverSetParams
, solverPush
, solverPop
, solverReset
, solverGetNumScopes
, solverAssertCnstr
, solverAssertAndTrack
, solverCheck
, solverCheckAssumptions
, solverGetModel
, solverGetUnsatCore
, solverGetReasonUnknown
, solverToString
, assert
, check
, checkAssumptions
, solverCheckAndGetModel
, solverCheckAssumptionsAndGetModel
, getModel
, withModel
, getUnsatCore
, push
, pop
, local
, reset
, getNumScopes
)
where
import Z3.Opts
import Z3.Base
( FuncModel(..)
, Result(..)
, Logic(..)
, ASTPrintMode(..)
, Version(..)
, SortKind(..)
, ASTKind(..)
)
import qualified Z3.Base as Base
import Control.Monad ((>=>))
import Control.Monad.ST
import Control.Monad.ST.Unsafe
import Control.Monad.Trans.Class ( lift )
import Control.Monad.Trans.Reader ( ReaderT (..) )
import Data.Coerce ( Coercible, coerce )
import Data.Fixed ( Fixed, HasResolution )
import Data.Int ( Int64 )
import Data.List.NonEmpty ( NonEmpty (..) )
import Data.Traversable ( Traversable )
import qualified Data.Traversable as T
import Data.Word ( Word, Word64 )
import Foreign.Storable
liftF0 :: (Coercible a' a)
=> (Base.Context -> IO a') -> Z3 s a
liftF0 :: (Context -> IO a') -> Z3 s a
liftF0 f :: Context -> IO a'
f = (Z3Env s -> ST s a) -> Z3 s a
forall r (m :: * -> *) a. (r -> m a) -> ReaderT r m a
ReaderT ((Z3Env s -> ST s a) -> Z3 s a) -> (Z3Env s -> ST s a) -> Z3 s a
forall a b. (a -> b) -> a -> b
$ \ (Z3Env {..}) -> IO a -> ST s a
forall a s. IO a -> ST s a
unsafeIOToST (IO a -> ST s a) -> IO a -> ST s a
forall a b. (a -> b) -> a -> b
$ (Context -> IO a') -> Context s -> IO a
forall a b. Coercible a b => a -> b
coerce Context -> IO a'
f Context s
context
liftF1 :: (Coercible a' a, Coercible b' b)
=> (Base.Context -> a' -> IO b') -> a -> Z3 s b
liftF1 :: (Context -> a' -> IO b') -> a -> Z3 s b
liftF1 f :: Context -> a' -> IO b'
f a :: a
a = (Z3Env s -> ST s b) -> Z3 s b
forall r (m :: * -> *) a. (r -> m a) -> ReaderT r m a
ReaderT ((Z3Env s -> ST s b) -> Z3 s b) -> (Z3Env s -> ST s b) -> Z3 s b
forall a b. (a -> b) -> a -> b
$ \ (Z3Env {..}) -> IO b -> ST s b
forall a s. IO a -> ST s a
unsafeIOToST (IO b -> ST s b) -> IO b -> ST s b
forall a b. (a -> b) -> a -> b
$ (Context -> a' -> IO b') -> Context s -> a -> IO b
forall a b. Coercible a b => a -> b
coerce Context -> a' -> IO b'
f Context s
context a
a
liftF2 :: (Coercible a' a, Coercible b' b, Coercible c' c)
=> (Base.Context -> a' -> b' -> IO c') -> a -> b -> Z3 s c
liftF2 :: (Context -> a' -> b' -> IO c') -> a -> b -> Z3 s c
liftF2 f :: Context -> a' -> b' -> IO c'
f a :: a
a b :: b
b = (Z3Env s -> ST s c) -> Z3 s c
forall r (m :: * -> *) a. (r -> m a) -> ReaderT r m a
ReaderT ((Z3Env s -> ST s c) -> Z3 s c) -> (Z3Env s -> ST s c) -> Z3 s c
forall a b. (a -> b) -> a -> b
$ \ (Z3Env {..}) -> IO c -> ST s c
forall a s. IO a -> ST s a
unsafeIOToST (IO c -> ST s c) -> IO c -> ST s c
forall a b. (a -> b) -> a -> b
$ (Context -> a' -> b' -> IO c') -> Context s -> a -> b -> IO c
forall a b. Coercible a b => a -> b
coerce Context -> a' -> b' -> IO c'
f Context s
context a
a b
b
liftF3 :: (Coercible a' a, Coercible b' b, Coercible c' c, Coercible d' d)
=> (Base.Context -> a' -> b' -> c' -> IO d') -> a -> b -> c -> Z3 s d
liftF3 :: (Context -> a' -> b' -> c' -> IO d') -> a -> b -> c -> Z3 s d
liftF3 f :: Context -> a' -> b' -> c' -> IO d'
f a :: a
a b :: b
b c :: c
c = (Z3Env s -> ST s d) -> Z3 s d
forall r (m :: * -> *) a. (r -> m a) -> ReaderT r m a
ReaderT ((Z3Env s -> ST s d) -> Z3 s d) -> (Z3Env s -> ST s d) -> Z3 s d
forall a b. (a -> b) -> a -> b
$ \ (Z3Env {..}) -> IO d -> ST s d
forall a s. IO a -> ST s a
unsafeIOToST (IO d -> ST s d) -> IO d -> ST s d
forall a b. (a -> b) -> a -> b
$ (Context -> a' -> b' -> c' -> IO d')
-> Context s -> a -> b -> c -> IO d
forall a b. Coercible a b => a -> b
coerce Context -> a' -> b' -> c' -> IO d'
f Context s
context a
a b
b c
c
liftF4 :: (Coercible a' a, Coercible b' b, Coercible c' c, Coercible d' d, Coercible e' e)
=> (Base.Context -> a' -> b' -> c' -> d' -> IO e') -> a -> b -> c -> d -> Z3 s e
liftF4 :: (Context -> a' -> b' -> c' -> d' -> IO e')
-> a -> b -> c -> d -> Z3 s e
liftF4 f :: Context -> a' -> b' -> c' -> d' -> IO e'
f a :: a
a b :: b
b c :: c
c d :: d
d = (Z3Env s -> ST s e) -> Z3 s e
forall r (m :: * -> *) a. (r -> m a) -> ReaderT r m a
ReaderT ((Z3Env s -> ST s e) -> Z3 s e) -> (Z3Env s -> ST s e) -> Z3 s e
forall a b. (a -> b) -> a -> b
$ \ (Z3Env {..}) -> IO e -> ST s e
forall a s. IO a -> ST s a
unsafeIOToST (IO e -> ST s e) -> IO e -> ST s e
forall a b. (a -> b) -> a -> b
$ (Context -> a' -> b' -> c' -> d' -> IO e')
-> Context s -> a -> b -> c -> d -> IO e
forall a b. Coercible a b => a -> b
coerce Context -> a' -> b' -> c' -> d' -> IO e'
f Context s
context a
a b
b c
c d
d
liftF5 :: (Coercible a' a, Coercible b' b, Coercible c' c, Coercible d' d, Coercible e' e, Coercible f' f)
=> (Base.Context -> a' -> b' -> c' -> d' -> e' -> IO f') -> a -> b -> c -> d -> e -> Z3 s f
liftF5 :: (Context -> a' -> b' -> c' -> d' -> e' -> IO f')
-> a -> b -> c -> d -> e -> Z3 s f
liftF5 f :: Context -> a' -> b' -> c' -> d' -> e' -> IO f'
f a :: a
a b :: b
b c :: c
c d :: d
d e :: e
e = (Z3Env s -> ST s f) -> Z3 s f
forall r (m :: * -> *) a. (r -> m a) -> ReaderT r m a
ReaderT ((Z3Env s -> ST s f) -> Z3 s f) -> (Z3Env s -> ST s f) -> Z3 s f
forall a b. (a -> b) -> a -> b
$ \ (Z3Env {..}) -> IO f -> ST s f
forall a s. IO a -> ST s a
unsafeIOToST (IO f -> ST s f) -> IO f -> ST s f
forall a b. (a -> b) -> a -> b
$ (Context -> a' -> b' -> c' -> d' -> e' -> IO f')
-> Context s -> a -> b -> c -> d -> e -> IO f
forall a b. Coercible a b => a -> b
coerce Context -> a' -> b' -> c' -> d' -> e' -> IO f'
f Context s
context a
a b
b c
c d
d e
e
liftF6 :: (Coercible a' a, Coercible b' b, Coercible c' c, Coercible d' d, Coercible e' e, Coercible f' f, Coercible g' g)
=> (Base.Context -> a' -> b' -> c' -> d' -> e' -> f' -> IO g') -> a -> b -> c -> d -> e -> f -> Z3 s g
liftF6 :: (Context -> a' -> b' -> c' -> d' -> e' -> f' -> IO g')
-> a -> b -> c -> d -> e -> f -> Z3 s g
liftF6 φ :: Context -> a' -> b' -> c' -> d' -> e' -> f' -> IO g'
φ a :: a
a b :: b
b c :: c
c d :: d
d e :: e
e f :: f
f = (Z3Env s -> ST s g) -> Z3 s g
forall r (m :: * -> *) a. (r -> m a) -> ReaderT r m a
ReaderT ((Z3Env s -> ST s g) -> Z3 s g) -> (Z3Env s -> ST s g) -> Z3 s g
forall a b. (a -> b) -> a -> b
$ \ (Z3Env {..}) -> IO g -> ST s g
forall a s. IO a -> ST s a
unsafeIOToST (IO g -> ST s g) -> IO g -> ST s g
forall a b. (a -> b) -> a -> b
$ (Context -> a' -> b' -> c' -> d' -> e' -> f' -> IO g')
-> Context s -> a -> b -> c -> d -> e -> f -> IO g
forall a b. Coercible a b => a -> b
coerce Context -> a' -> b' -> c' -> d' -> e' -> f' -> IO g'
φ Context s
context a
a b
b c
c d
d e
e f
f
liftSolver0 :: (Coercible a' a)
=> (Base.Context -> Base.Solver -> IO a') -> Z3 s a
liftSolver0 :: (Context -> Solver -> IO a') -> Z3 s a
liftSolver0 f :: Context -> Solver -> IO a'
f = (Z3Env s -> ST s a) -> Z3 s a
forall r (m :: * -> *) a. (r -> m a) -> ReaderT r m a
ReaderT ((Z3Env s -> ST s a) -> Z3 s a) -> (Z3Env s -> ST s a) -> Z3 s a
forall a b. (a -> b) -> a -> b
$ \ (Z3Env {..}) -> IO a -> ST s a
forall a s. IO a -> ST s a
unsafeIOToST (IO a -> ST s a) -> IO a -> ST s a
forall a b. (a -> b) -> a -> b
$ (Context -> Solver -> IO a') -> Context s -> Solver s -> IO a
forall a b. Coercible a b => a -> b
coerce Context -> Solver -> IO a'
f Context s
context Solver s
solver
liftSolver1 :: (Coercible a' a, Coercible b' b)
=> (Base.Context -> Base.Solver -> a' -> IO b') -> a -> Z3 s b
liftSolver1 :: (Context -> Solver -> a' -> IO b') -> a -> Z3 s b
liftSolver1 f :: Context -> Solver -> a' -> IO b'
f a :: a
a = (Z3Env s -> ST s b) -> Z3 s b
forall r (m :: * -> *) a. (r -> m a) -> ReaderT r m a
ReaderT ((Z3Env s -> ST s b) -> Z3 s b) -> (Z3Env s -> ST s b) -> Z3 s b
forall a b. (a -> b) -> a -> b
$ \ (Z3Env {..}) -> IO b -> ST s b
forall a s. IO a -> ST s a
unsafeIOToST (IO b -> ST s b) -> IO b -> ST s b
forall a b. (a -> b) -> a -> b
$ (Context -> Solver -> a' -> IO b')
-> Context s -> Solver s -> a -> IO b
forall a b. Coercible a b => a -> b
coerce Context -> Solver -> a' -> IO b'
f Context s
context Solver s
solver a
a
liftSolver2 :: (Coercible a' a, Coercible b' b, Coercible c' c)
=> (Base.Context -> Base.Solver -> a' -> b' -> IO c') -> a -> b -> Z3 s c
liftSolver2 :: (Context -> Solver -> a' -> b' -> IO c') -> a -> b -> Z3 s c
liftSolver2 f :: Context -> Solver -> a' -> b' -> IO c'
f a :: a
a b :: b
b = (Z3Env s -> ST s c) -> Z3 s c
forall r (m :: * -> *) a. (r -> m a) -> ReaderT r m a
ReaderT ((Z3Env s -> ST s c) -> Z3 s c) -> (Z3Env s -> ST s c) -> Z3 s c
forall a b. (a -> b) -> a -> b
$ \ (Z3Env {..}) -> IO c -> ST s c
forall a s. IO a -> ST s a
unsafeIOToST (IO c -> ST s c) -> IO c -> ST s c
forall a b. (a -> b) -> a -> b
$ (Context -> Solver -> a' -> b' -> IO c')
-> Context s -> Solver s -> a -> b -> IO c
forall a b. Coercible a b => a -> b
coerce Context -> Solver -> a' -> b' -> IO c'
f Context s
context Solver s
solver a
a b
b
liftFixedpoint0 :: (Coercible a' a)
=> (Base.Context -> Base.Fixedpoint -> IO a') -> Z3 s a
liftFixedpoint0 :: (Context -> Fixedpoint -> IO a') -> Z3 s a
liftFixedpoint0 f :: Context -> Fixedpoint -> IO a'
f = (Z3Env s -> ST s a) -> Z3 s a
forall r (m :: * -> *) a. (r -> m a) -> ReaderT r m a
ReaderT ((Z3Env s -> ST s a) -> Z3 s a) -> (Z3Env s -> ST s a) -> Z3 s a
forall a b. (a -> b) -> a -> b
$ \ (Z3Env {..}) -> IO a -> ST s a
forall a s. IO a -> ST s a
unsafeIOToST (IO a -> ST s a) -> IO a -> ST s a
forall a b. (a -> b) -> a -> b
$ (Context -> Fixedpoint -> IO a')
-> Context s -> Fixedpoint s -> IO a
forall a b. Coercible a b => a -> b
coerce Context -> Fixedpoint -> IO a'
f Context s
context Fixedpoint s
fixedpoint
liftFixedpoint1 :: (Coercible a' a, Coercible b' b)
=> (Base.Context -> Base.Fixedpoint -> a' -> IO b') -> a -> Z3 s b
liftFixedpoint1 :: (Context -> Fixedpoint -> a' -> IO b') -> a -> Z3 s b
liftFixedpoint1 f :: Context -> Fixedpoint -> a' -> IO b'
f a :: a
a = (Z3Env s -> ST s b) -> Z3 s b
forall r (m :: * -> *) a. (r -> m a) -> ReaderT r m a
ReaderT ((Z3Env s -> ST s b) -> Z3 s b) -> (Z3Env s -> ST s b) -> Z3 s b
forall a b. (a -> b) -> a -> b
$ \ (Z3Env {..}) -> IO b -> ST s b
forall a s. IO a -> ST s a
unsafeIOToST (IO b -> ST s b) -> IO b -> ST s b
forall a b. (a -> b) -> a -> b
$ (Context -> Fixedpoint -> a' -> IO b')
-> Context s -> Fixedpoint s -> a -> IO b
forall a b. Coercible a b => a -> b
coerce Context -> Fixedpoint -> a' -> IO b'
f Context s
context Fixedpoint s
fixedpoint a
a
liftFixedpoint2 :: (Coercible a' a, Coercible b' b, Coercible c' c)
=> (Base.Context -> Base.Fixedpoint -> a' -> b' -> IO c') -> a -> b -> Z3 s c
liftFixedpoint2 :: (Context -> Fixedpoint -> a' -> b' -> IO c') -> a -> b -> Z3 s c
liftFixedpoint2 f :: Context -> Fixedpoint -> a' -> b' -> IO c'
f a :: a
a b :: b
b = (Z3Env s -> ST s c) -> Z3 s c
forall r (m :: * -> *) a. (r -> m a) -> ReaderT r m a
ReaderT ((Z3Env s -> ST s c) -> Z3 s c) -> (Z3Env s -> ST s c) -> Z3 s c
forall a b. (a -> b) -> a -> b
$ \ (Z3Env {..}) -> IO c -> ST s c
forall a s. IO a -> ST s a
unsafeIOToST (IO c -> ST s c) -> IO c -> ST s c
forall a b. (a -> b) -> a -> b
$ (Context -> Fixedpoint -> a' -> b' -> IO c')
-> Context s -> Fixedpoint s -> a -> b -> IO c
forall a b. Coercible a b => a -> b
coerce Context -> Fixedpoint -> a' -> b' -> IO c'
f Context s
context Fixedpoint s
fixedpoint a
a b
b
type Z3 s = ReaderT (Z3Env s) (ST s)
data Z3Env s = Z3Env { Z3Env s -> Solver s
solver :: Solver s, Z3Env s -> Context s
context :: Context s, Z3Env s -> Fixedpoint s
fixedpoint :: Fixedpoint s }
evalZ3With :: Maybe Logic -> Opts -> Z3 s a -> ST s a
evalZ3With :: Maybe Logic -> Opts -> Z3 s a -> ST s a
evalZ3With mbLogic :: Maybe Logic
mbLogic opts :: Opts
opts (ReaderT a :: Z3Env s -> ST s a
a) = Z3Env s -> ST s a
a (Z3Env s -> ST s a) -> ST s (Z3Env s) -> ST s a
forall (m :: * -> *) a b. Monad m => (a -> m b) -> m a -> m b
=<< Maybe Logic -> Opts -> ST s (Z3Env s)
forall s. Maybe Logic -> Opts -> ST s (Z3Env s)
newEnv Maybe Logic
mbLogic Opts
opts
evalZ3 :: Z3 s a -> ST s a
evalZ3 :: Z3 s a -> ST s a
evalZ3 = Maybe Logic -> Opts -> Z3 s a -> ST s a
forall s a. Maybe Logic -> Opts -> Z3 s a -> ST s a
evalZ3With Maybe Logic
forall a. Maybe a
Nothing Opts
stdOpts
newEnvWith :: (Base.Config -> IO Base.Context) -> Maybe Logic -> Opts -> ST s (Z3Env s)
newEnvWith :: (Config -> IO Context) -> Maybe Logic -> Opts -> ST s (Z3Env s)
newEnvWith mkContext :: Config -> IO Context
mkContext mbLogic :: Maybe Logic
mbLogic opts :: Opts
opts =
IO (Z3Env s) -> ST s (Z3Env s)
forall a s. IO a -> ST s a
unsafeIOToST (IO (Z3Env s) -> ST s (Z3Env s))
-> ((Config -> IO (Z3Env s)) -> IO (Z3Env s))
-> (Config -> IO (Z3Env s))
-> ST s (Z3Env s)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (Config -> IO (Z3Env s)) -> IO (Z3Env s)
forall a. (Config -> IO a) -> IO a
Base.withConfig ((Config -> IO (Z3Env s)) -> ST s (Z3Env s))
-> (Config -> IO (Z3Env s)) -> ST s (Z3Env s)
forall a b. (a -> b) -> a -> b
$ \cfg :: Config
cfg -> do
Config -> Opts -> IO ()
setOpts Config
cfg Opts
opts
Context
ctx <- Config -> IO Context
mkContext Config
cfg
[(Solver Any -> Context Any -> Fixedpoint Any -> Z3Env Any)
-> Solver -> Context -> Fixedpoint -> Z3Env s
forall a b. Coercible a b => a -> b
coerce Solver Any -> Context Any -> Fixedpoint Any -> Z3Env Any
forall k (s :: k). Solver s -> Context s -> Fixedpoint s -> Z3Env s
Z3Env Solver
solver Context
ctx Fixedpoint
fixedpoint
| Solver
solver <- IO Solver -> (Logic -> IO Solver) -> Maybe Logic -> IO Solver
forall b a. b -> (a -> b) -> Maybe a -> b
maybe (Context -> IO Solver
Base.mkSolver Context
ctx) (Context -> Logic -> IO Solver
Base.mkSolverForLogic Context
ctx) Maybe Logic
mbLogic
, Fixedpoint
fixedpoint <- Context -> IO Fixedpoint
Base.mkFixedpoint Context
ctx]
newEnv :: Maybe Logic -> Opts -> ST s (Z3Env s)
newEnv :: Maybe Logic -> Opts -> ST s (Z3Env s)
newEnv = (Config -> IO Context) -> Maybe Logic -> Opts -> ST s (Z3Env s)
forall s.
(Config -> IO Context) -> Maybe Logic -> Opts -> ST s (Z3Env s)
newEnvWith Config -> IO Context
Base.mkContext
mkParams :: Z3 s (Params s)
mkParams :: Z3 s (Params s)
mkParams = (Context -> IO Params) -> Z3 s (Params s)
forall a' a s. Coercible a' a => (Context -> IO a') -> Z3 s a
liftF0 Context -> IO Params
Base.mkParams
paramsSetBool :: Params s -> Symbol s -> Bool -> Z3 s ()
paramsSetBool :: Params s -> Symbol s -> Bool -> Z3 s ()
paramsSetBool = (Context -> Params -> Symbol -> Bool -> IO ())
-> Params s -> Symbol s -> Bool -> Z3 s ()
forall a' a b' b c' c d' d s.
(Coercible a' a, Coercible b' b, Coercible c' c, Coercible d' d) =>
(Context -> a' -> b' -> c' -> IO d') -> a -> b -> c -> Z3 s d
liftF3 Context -> Params -> Symbol -> Bool -> IO ()
Base.paramsSetBool
paramsSetUInt :: Params s -> Symbol s -> Word -> Z3 s ()
paramsSetUInt :: Params s -> Symbol s -> Word -> Z3 s ()
paramsSetUInt = (Context -> Params -> Symbol -> Word -> IO ())
-> Params s -> Symbol s -> Word -> Z3 s ()
forall a' a b' b c' c d' d s.
(Coercible a' a, Coercible b' b, Coercible c' c, Coercible d' d) =>
(Context -> a' -> b' -> c' -> IO d') -> a -> b -> c -> Z3 s d
liftF3 Context -> Params -> Symbol -> Word -> IO ()
Base.paramsSetUInt
paramsSetDouble :: Params s -> Symbol s -> Double -> Z3 s ()
paramsSetDouble :: Params s -> Symbol s -> Double -> Z3 s ()
paramsSetDouble = (Context -> Params -> Symbol -> Double -> IO ())
-> Params s -> Symbol s -> Double -> Z3 s ()
forall a' a b' b c' c d' d s.
(Coercible a' a, Coercible b' b, Coercible c' c, Coercible d' d) =>
(Context -> a' -> b' -> c' -> IO d') -> a -> b -> c -> Z3 s d
liftF3 Context -> Params -> Symbol -> Double -> IO ()
Base.paramsSetDouble
paramsSetSymbol :: Params s -> Symbol s -> Symbol s -> Z3 s ()
paramsSetSymbol :: Params s -> Symbol s -> Symbol s -> Z3 s ()
paramsSetSymbol = (Context -> Params -> Symbol -> Symbol -> IO ())
-> Params s -> Symbol s -> Symbol s -> Z3 s ()
forall a' a b' b c' c d' d s.
(Coercible a' a, Coercible b' b, Coercible c' c, Coercible d' d) =>
(Context -> a' -> b' -> c' -> IO d') -> a -> b -> c -> Z3 s d
liftF3 Context -> Params -> Symbol -> Symbol -> IO ()
Base.paramsSetSymbol
paramsToString :: Params s -> Z3 s String
paramsToString :: Params s -> Z3 s String
paramsToString = (Context -> Params -> IO String) -> Params s -> Z3 s String
forall a' a b' b s.
(Coercible a' a, Coercible b' b) =>
(Context -> a' -> IO b') -> a -> Z3 s b
liftF1 Context -> Params -> IO String
Base.paramsToString
mkIntSymbol :: ∀ i s . Integral i => i -> Z3 s (Symbol s)
mkIntSymbol :: i -> Z3 s (Symbol s)
mkIntSymbol = (Context -> i -> IO Symbol) -> i -> Z3 s (Symbol s)
forall a' a b' b s.
(Coercible a' a, Coercible b' b) =>
(Context -> a' -> IO b') -> a -> Z3 s b
liftF1 (Integral i => Context -> i -> IO Symbol
forall int. Integral int => Context -> int -> IO Symbol
Base.mkIntSymbol @i)
mkStringSymbol :: String -> Z3 s (Symbol s)
mkStringSymbol :: String -> Z3 s (Symbol s)
mkStringSymbol = (Context -> String -> IO Symbol) -> String -> Z3 s (Symbol s)
forall a' a b' b s.
(Coercible a' a, Coercible b' b) =>
(Context -> a' -> IO b') -> a -> Z3 s b
liftF1 Context -> String -> IO Symbol
Base.mkStringSymbol
mkUninterpretedSort :: Symbol s -> Z3 s (Sort s)
mkUninterpretedSort :: Symbol s -> Z3 s (Sort s)
mkUninterpretedSort = (Context -> Symbol -> IO Sort) -> Symbol s -> Z3 s (Sort s)
forall a' a b' b s.
(Coercible a' a, Coercible b' b) =>
(Context -> a' -> IO b') -> a -> Z3 s b
liftF1 Context -> Symbol -> IO Sort
Base.mkUninterpretedSort
mkBoolSort :: Z3 s (Sort s)
mkBoolSort :: Z3 s (Sort s)
mkBoolSort = (Context -> IO Sort) -> Z3 s (Sort s)
forall a' a s. Coercible a' a => (Context -> IO a') -> Z3 s a
liftF0 Context -> IO Sort
Base.mkBoolSort
mkIntSort :: Z3 s (Sort s)
mkIntSort :: Z3 s (Sort s)
mkIntSort = (Context -> IO Sort) -> Z3 s (Sort s)
forall a' a s. Coercible a' a => (Context -> IO a') -> Z3 s a
liftF0 Context -> IO Sort
Base.mkIntSort
mkRealSort :: Z3 s (Sort s)
mkRealSort :: Z3 s (Sort s)
mkRealSort = (Context -> IO Sort) -> Z3 s (Sort s)
forall a' a s. Coercible a' a => (Context -> IO a') -> Z3 s a
liftF0 Context -> IO Sort
Base.mkRealSort
mkBvSort :: ∀ i s . Integral i => i -> Z3 s (Sort s)
mkBvSort :: i -> Z3 s (Sort s)
mkBvSort = (Context -> i -> IO Sort) -> i -> Z3 s (Sort s)
forall a' a b' b s.
(Coercible a' a, Coercible b' b) =>
(Context -> a' -> IO b') -> a -> Z3 s b
liftF1 (Integral i => Context -> i -> IO Sort
forall int. Integral int => Context -> int -> IO Sort
Base.mkBvSort @i)
mkFiniteDomainSort :: Symbol s -> Word64 -> Z3 s (Sort s)
mkFiniteDomainSort :: Symbol s -> Word64 -> Z3 s (Sort s)
mkFiniteDomainSort = (Context -> Symbol -> Word64 -> IO Sort)
-> Symbol s -> Word64 -> Z3 s (Sort s)
forall a' a b' b c' c s.
(Coercible a' a, Coercible b' b, Coercible c' c) =>
(Context -> a' -> b' -> IO c') -> a -> b -> Z3 s c
liftF2 Context -> Symbol -> Word64 -> IO Sort
Base.mkFiniteDomainSort
mkArraySort :: Sort s -> Sort s -> Z3 s (Sort s)
mkArraySort :: Sort s -> Sort s -> Z3 s (Sort s)
mkArraySort = (Context -> Sort -> Sort -> IO Sort)
-> Sort s -> Sort s -> Z3 s (Sort s)
forall a' a b' b c' c s.
(Coercible a' a, Coercible b' b, Coercible c' c) =>
(Context -> a' -> b' -> IO c') -> a -> b -> Z3 s c
liftF2 Context -> Sort -> Sort -> IO Sort
Base.mkArraySort
mkTupleSort :: Symbol s
-> [(Symbol s, Sort s)]
-> Z3 s (Sort s, FuncDecl s, [FuncDecl s])
mkTupleSort :: Symbol s
-> [(Symbol s, Sort s)] -> Z3 s (Sort s, FuncDecl s, [FuncDecl s])
mkTupleSort = (Context
-> Symbol -> [(Symbol, Sort)] -> IO (Sort, FuncDecl, [FuncDecl]))
-> Symbol s
-> [(Symbol s, Sort s)]
-> Z3 s (Sort s, FuncDecl s, [FuncDecl s])
forall a' a b' b c' c s.
(Coercible a' a, Coercible b' b, Coercible c' c) =>
(Context -> a' -> b' -> IO c') -> a -> b -> Z3 s c
liftF2 Context
-> Symbol -> [(Symbol, Sort)] -> IO (Sort, FuncDecl, [FuncDecl])
Base.mkTupleSort
mkConstructor :: Symbol s
-> Symbol s
-> [(Symbol s, Maybe (Sort s), Int)]
-> Z3 s (Constructor s)
mkConstructor :: Symbol s
-> Symbol s
-> [(Symbol s, Maybe (Sort s), Int)]
-> Z3 s (Constructor s)
mkConstructor = (Context
-> Symbol
-> Symbol
-> [(Symbol, Maybe Sort, Int)]
-> IO Constructor)
-> Symbol s
-> Symbol s
-> [(Symbol s, Maybe (Sort s), Int)]
-> Z3 s (Constructor s)
forall a' a b' b c' c d' d s.
(Coercible a' a, Coercible b' b, Coercible c' c, Coercible d' d) =>
(Context -> a' -> b' -> c' -> IO d') -> a -> b -> c -> Z3 s d
liftF3 Context
-> Symbol
-> Symbol
-> [(Symbol, Maybe Sort, Int)]
-> IO Constructor
Base.mkConstructor
mkDatatype :: Symbol s
-> [Constructor s]
-> Z3 s (Sort s)
mkDatatype :: Symbol s -> [Constructor s] -> Z3 s (Sort s)
mkDatatype = (Context -> Symbol -> [Constructor] -> IO Sort)
-> Symbol s -> [Constructor s] -> Z3 s (Sort s)
forall a' a b' b c' c s.
(Coercible a' a, Coercible b' b, Coercible c' c) =>
(Context -> a' -> b' -> IO c') -> a -> b -> Z3 s c
liftF2 Context -> Symbol -> [Constructor] -> IO Sort
Base.mkDatatype
mkDatatypes :: [Symbol s]
-> [[Constructor s]]
-> Z3 s [Sort s]
mkDatatypes :: [Symbol s] -> [[Constructor s]] -> Z3 s [Sort s]
mkDatatypes = (Context -> [Symbol] -> [[Constructor]] -> IO [Sort])
-> [Symbol s] -> [[Constructor s]] -> Z3 s [Sort s]
forall a' a b' b c' c s.
(Coercible a' a, Coercible b' b, Coercible c' c) =>
(Context -> a' -> b' -> IO c') -> a -> b -> Z3 s c
liftF2 Context -> [Symbol] -> [[Constructor]] -> IO [Sort]
Base.mkDatatypes
mkSetSort :: Sort s -> Z3 s (Sort s)
mkSetSort :: Sort s -> Z3 s (Sort s)
mkSetSort = (Context -> Sort -> IO Sort) -> Sort s -> Z3 s (Sort s)
forall a' a b' b s.
(Coercible a' a, Coercible b' b) =>
(Context -> a' -> IO b') -> a -> Z3 s b
liftF1 Context -> Sort -> IO Sort
Base.mkSetSort
mkFuncDecl :: Symbol s -> [Sort s] -> Sort s -> Z3 s (FuncDecl s)
mkFuncDecl :: Symbol s -> [Sort s] -> Sort s -> Z3 s (FuncDecl s)
mkFuncDecl = (Context -> Symbol -> [Sort] -> Sort -> IO FuncDecl)
-> Symbol s -> [Sort s] -> Sort s -> Z3 s (FuncDecl s)
forall a' a b' b c' c d' d s.
(Coercible a' a, Coercible b' b, Coercible c' c, Coercible d' d) =>
(Context -> a' -> b' -> c' -> IO d') -> a -> b -> c -> Z3 s d
liftF3 Context -> Symbol -> [Sort] -> Sort -> IO FuncDecl
Base.mkFuncDecl
mkApp :: FuncDecl s -> [AST s] -> Z3 s (AST s)
mkApp :: FuncDecl s -> [AST s] -> Z3 s (AST s)
mkApp = (Context -> FuncDecl -> [AST] -> IO AST)
-> FuncDecl s -> [AST s] -> Z3 s (AST s)
forall a' a b' b c' c s.
(Coercible a' a, Coercible b' b, Coercible c' c) =>
(Context -> a' -> b' -> IO c') -> a -> b -> Z3 s c
liftF2 Context -> FuncDecl -> [AST] -> IO AST
Base.mkApp
mkConst :: Symbol s -> Sort s -> Z3 s (AST s)
mkConst :: Symbol s -> Sort s -> Z3 s (AST s)
mkConst = (Context -> Symbol -> Sort -> IO AST)
-> Symbol s -> Sort s -> Z3 s (AST s)
forall a' a b' b c' c s.
(Coercible a' a, Coercible b' b, Coercible c' c) =>
(Context -> a' -> b' -> IO c') -> a -> b -> Z3 s c
liftF2 Context -> Symbol -> Sort -> IO AST
Base.mkConst
mkFreshConst :: String -> Sort s -> Z3 s (AST s)
mkFreshConst :: String -> Sort s -> Z3 s (AST s)
mkFreshConst = (Context -> String -> Sort -> IO AST)
-> String -> Sort s -> Z3 s (AST s)
forall a' a b' b c' c s.
(Coercible a' a, Coercible b' b, Coercible c' c) =>
(Context -> a' -> b' -> IO c') -> a -> b -> Z3 s c
liftF2 Context -> String -> Sort -> IO AST
Base.mkFreshConst
mkFreshFuncDecl :: String -> [Sort s] -> Sort s -> Z3 s (FuncDecl s)
mkFreshFuncDecl :: String -> [Sort s] -> Sort s -> Z3 s (FuncDecl s)
mkFreshFuncDecl = (Context -> String -> [Sort] -> Sort -> IO FuncDecl)
-> String -> [Sort s] -> Sort s -> Z3 s (FuncDecl s)
forall a' a b' b c' c d' d s.
(Coercible a' a, Coercible b' b, Coercible c' c, Coercible d' d) =>
(Context -> a' -> b' -> c' -> IO d') -> a -> b -> c -> Z3 s d
liftF3 Context -> String -> [Sort] -> Sort -> IO FuncDecl
Base.mkFreshFuncDecl
mkVar :: Symbol s -> Sort s -> Z3 s (AST s)
mkVar :: Symbol s -> Sort s -> Z3 s (AST s)
mkVar = (Context -> Symbol -> Sort -> IO AST)
-> Symbol s -> Sort s -> Z3 s (AST s)
forall a' a b' b c' c s.
(Coercible a' a, Coercible b' b, Coercible c' c) =>
(Context -> a' -> b' -> IO c') -> a -> b -> Z3 s c
liftF2 Context -> Symbol -> Sort -> IO AST
Base.mkVar
mkBoolVar :: Symbol s -> Z3 s (AST s)
mkBoolVar :: Symbol s -> Z3 s (AST s)
mkBoolVar = (Context -> Symbol -> IO AST) -> Symbol s -> Z3 s (AST s)
forall a' a b' b s.
(Coercible a' a, Coercible b' b) =>
(Context -> a' -> IO b') -> a -> Z3 s b
liftF1 Context -> Symbol -> IO AST
Base.mkBoolVar
mkRealVar :: Symbol s -> Z3 s (AST s)
mkRealVar :: Symbol s -> Z3 s (AST s)
mkRealVar = (Context -> Symbol -> IO AST) -> Symbol s -> Z3 s (AST s)
forall a' a b' b s.
(Coercible a' a, Coercible b' b) =>
(Context -> a' -> IO b') -> a -> Z3 s b
liftF1 Context -> Symbol -> IO AST
Base.mkRealVar
mkIntVar :: Symbol s -> Z3 s (AST s)
mkIntVar :: Symbol s -> Z3 s (AST s)
mkIntVar = (Context -> Symbol -> IO AST) -> Symbol s -> Z3 s (AST s)
forall a' a b' b s.
(Coercible a' a, Coercible b' b) =>
(Context -> a' -> IO b') -> a -> Z3 s b
liftF1 Context -> Symbol -> IO AST
Base.mkIntVar
mkBvVar :: Symbol s
-> Int
-> Z3 s (AST s)
mkBvVar :: Symbol s -> Int -> Z3 s (AST s)
mkBvVar = (Context -> Symbol -> Int -> IO AST)
-> Symbol s -> Int -> Z3 s (AST s)
forall a' a b' b c' c s.
(Coercible a' a, Coercible b' b, Coercible c' c) =>
(Context -> a' -> b' -> IO c') -> a -> b -> Z3 s c
liftF2 Context -> Symbol -> Int -> IO AST
Base.mkBvVar
mkFreshVar :: String -> Sort s -> Z3 s (AST s)
mkFreshVar :: String -> Sort s -> Z3 s (AST s)
mkFreshVar = (Context -> String -> Sort -> IO AST)
-> String -> Sort s -> Z3 s (AST s)
forall a' a b' b c' c s.
(Coercible a' a, Coercible b' b, Coercible c' c) =>
(Context -> a' -> b' -> IO c') -> a -> b -> Z3 s c
liftF2 Context -> String -> Sort -> IO AST
Base.mkFreshConst
mkFreshBoolVar :: String -> Z3 s (AST s)
mkFreshBoolVar :: String -> Z3 s (AST s)
mkFreshBoolVar = (Context -> String -> IO AST) -> String -> Z3 s (AST s)
forall a' a b' b s.
(Coercible a' a, Coercible b' b) =>
(Context -> a' -> IO b') -> a -> Z3 s b
liftF1 Context -> String -> IO AST
Base.mkFreshBoolVar
mkFreshRealVar :: String -> Z3 s (AST s)
mkFreshRealVar :: String -> Z3 s (AST s)
mkFreshRealVar = (Context -> String -> IO AST) -> String -> Z3 s (AST s)
forall a' a b' b s.
(Coercible a' a, Coercible b' b) =>
(Context -> a' -> IO b') -> a -> Z3 s b
liftF1 Context -> String -> IO AST
Base.mkFreshRealVar
mkFreshIntVar :: String -> Z3 s (AST s)
mkFreshIntVar :: String -> Z3 s (AST s)
mkFreshIntVar = (Context -> String -> IO AST) -> String -> Z3 s (AST s)
forall a' a b' b s.
(Coercible a' a, Coercible b' b) =>
(Context -> a' -> IO b') -> a -> Z3 s b
liftF1 Context -> String -> IO AST
Base.mkFreshIntVar
mkFreshBvVar :: String
-> Int
-> Z3 s (AST s)
mkFreshBvVar :: String -> Int -> Z3 s (AST s)
mkFreshBvVar = (Context -> String -> Int -> IO AST)
-> String -> Int -> Z3 s (AST s)
forall a' a b' b c' c s.
(Coercible a' a, Coercible b' b, Coercible c' c) =>
(Context -> a' -> b' -> IO c') -> a -> b -> Z3 s c
liftF2 Context -> String -> Int -> IO AST
Base.mkFreshBvVar
mkTrue :: Z3 s (AST s)
mkTrue :: Z3 s (AST s)
mkTrue = (Context -> IO AST) -> Z3 s (AST s)
forall a' a s. Coercible a' a => (Context -> IO a') -> Z3 s a
liftF0 Context -> IO AST
Base.mkTrue
mkFalse :: Z3 s (AST s)
mkFalse :: Z3 s (AST s)
mkFalse = (Context -> IO AST) -> Z3 s (AST s)
forall a' a s. Coercible a' a => (Context -> IO a') -> Z3 s a
liftF0 Context -> IO AST
Base.mkFalse
mkEq :: AST s -> AST s -> Z3 s (AST s)
mkEq :: AST s -> AST s -> Z3 s (AST s)
mkEq = (Context -> AST -> AST -> IO AST) -> AST s -> AST s -> Z3 s (AST s)
forall a' a b' b c' c s.
(Coercible a' a, Coercible b' b, Coercible c' c) =>
(Context -> a' -> b' -> IO c') -> a -> b -> Z3 s c
liftF2 Context -> AST -> AST -> IO AST
Base.mkEq
mkDistinct :: NonEmpty (AST s) -> Z3 s (AST s)
mkDistinct :: NonEmpty (AST s) -> Z3 s (AST s)
mkDistinct = (Context -> NonEmpty AST -> IO AST)
-> NonEmpty (AST s) -> Z3 s (AST s)
forall a' a b' b s.
(Coercible a' a, Coercible b' b) =>
(Context -> a' -> IO b') -> a -> Z3 s b
liftF1 Context -> NonEmpty AST -> IO AST
Base.mkDistinct1
mkNot :: AST s -> Z3 s (AST s)
mkNot :: AST s -> Z3 s (AST s)
mkNot = (Context -> AST -> IO AST) -> AST s -> Z3 s (AST s)
forall a' a b' b s.
(Coercible a' a, Coercible b' b) =>
(Context -> a' -> IO b') -> a -> Z3 s b
liftF1 Context -> AST -> IO AST
Base.mkNot
mkIte :: AST s -> AST s -> AST s -> Z3 s (AST s)
mkIte :: AST s -> AST s -> AST s -> Z3 s (AST s)
mkIte = (Context -> AST -> AST -> AST -> IO AST)
-> AST s -> AST s -> AST s -> Z3 s (AST s)
forall a' a b' b c' c d' d s.
(Coercible a' a, Coercible b' b, Coercible c' c, Coercible d' d) =>
(Context -> a' -> b' -> c' -> IO d') -> a -> b -> c -> Z3 s d
liftF3 Context -> AST -> AST -> AST -> IO AST
Base.mkIte
mkIff :: AST s -> AST s -> Z3 s (AST s)
mkIff :: AST s -> AST s -> Z3 s (AST s)
mkIff = (Context -> AST -> AST -> IO AST) -> AST s -> AST s -> Z3 s (AST s)
forall a' a b' b c' c s.
(Coercible a' a, Coercible b' b, Coercible c' c) =>
(Context -> a' -> b' -> IO c') -> a -> b -> Z3 s c
liftF2 Context -> AST -> AST -> IO AST
Base.mkIff
mkImplies :: AST s -> AST s -> Z3 s (AST s)
mkImplies :: AST s -> AST s -> Z3 s (AST s)
mkImplies = (Context -> AST -> AST -> IO AST) -> AST s -> AST s -> Z3 s (AST s)
forall a' a b' b c' c s.
(Coercible a' a, Coercible b' b, Coercible c' c) =>
(Context -> a' -> b' -> IO c') -> a -> b -> Z3 s c
liftF2 Context -> AST -> AST -> IO AST
Base.mkImplies
mkXor :: AST s -> AST s -> Z3 s (AST s)
mkXor :: AST s -> AST s -> Z3 s (AST s)
mkXor = (Context -> AST -> AST -> IO AST) -> AST s -> AST s -> Z3 s (AST s)
forall a' a b' b c' c s.
(Coercible a' a, Coercible b' b, Coercible c' c) =>
(Context -> a' -> b' -> IO c') -> a -> b -> Z3 s c
liftF2 Context -> AST -> AST -> IO AST
Base.mkXor
mkAnd :: [AST s] -> Z3 s (AST s)
mkAnd :: [AST s] -> Z3 s (AST s)
mkAnd = (Context -> [AST] -> IO AST) -> [AST s] -> Z3 s (AST s)
forall a' a b' b s.
(Coercible a' a, Coercible b' b) =>
(Context -> a' -> IO b') -> a -> Z3 s b
liftF1 Context -> [AST] -> IO AST
Base.mkAnd
mkOr :: [AST s] -> Z3 s (AST s)
mkOr :: [AST s] -> Z3 s (AST s)
mkOr = (Context -> [AST] -> IO AST) -> [AST s] -> Z3 s (AST s)
forall a' a b' b s.
(Coercible a' a, Coercible b' b) =>
(Context -> a' -> IO b') -> a -> Z3 s b
liftF1 Context -> [AST] -> IO AST
Base.mkOr
mkBool :: Bool -> Z3 s (AST s)
mkBool :: Bool -> Z3 s (AST s)
mkBool = (Context -> Bool -> IO AST) -> Bool -> Z3 s (AST s)
forall a' a b' b s.
(Coercible a' a, Coercible b' b) =>
(Context -> a' -> IO b') -> a -> Z3 s b
liftF1 Context -> Bool -> IO AST
Base.mkBool
mkAdd :: [AST s] -> Z3 s (AST s)
mkAdd :: [AST s] -> Z3 s (AST s)
mkAdd = (Context -> [AST] -> IO AST) -> [AST s] -> Z3 s (AST s)
forall a' a b' b s.
(Coercible a' a, Coercible b' b) =>
(Context -> a' -> IO b') -> a -> Z3 s b
liftF1 Context -> [AST] -> IO AST
Base.mkAdd
mkMul :: [AST s] -> Z3 s (AST s)
mkMul :: [AST s] -> Z3 s (AST s)
mkMul = (Context -> [AST] -> IO AST) -> [AST s] -> Z3 s (AST s)
forall a' a b' b s.
(Coercible a' a, Coercible b' b) =>
(Context -> a' -> IO b') -> a -> Z3 s b
liftF1 Context -> [AST] -> IO AST
Base.mkMul
mkSub :: NonEmpty (AST s) -> Z3 s (AST s)
mkSub :: NonEmpty (AST s) -> Z3 s (AST s)
mkSub = (Context -> NonEmpty AST -> IO AST)
-> NonEmpty (AST s) -> Z3 s (AST s)
forall a' a b' b s.
(Coercible a' a, Coercible b' b) =>
(Context -> a' -> IO b') -> a -> Z3 s b
liftF1 Context -> NonEmpty AST -> IO AST
Base.mkSub1
mkUnaryMinus :: AST s -> Z3 s (AST s)
mkUnaryMinus :: AST s -> Z3 s (AST s)
mkUnaryMinus = (Context -> AST -> IO AST) -> AST s -> Z3 s (AST s)
forall a' a b' b s.
(Coercible a' a, Coercible b' b) =>
(Context -> a' -> IO b') -> a -> Z3 s b
liftF1 Context -> AST -> IO AST
Base.mkUnaryMinus
mkDiv :: AST s -> AST s -> Z3 s (AST s)
mkDiv :: AST s -> AST s -> Z3 s (AST s)
mkDiv = (Context -> AST -> AST -> IO AST) -> AST s -> AST s -> Z3 s (AST s)
forall a' a b' b c' c s.
(Coercible a' a, Coercible b' b, Coercible c' c) =>
(Context -> a' -> b' -> IO c') -> a -> b -> Z3 s c
liftF2 Context -> AST -> AST -> IO AST
Base.mkDiv
mkMod :: AST s -> AST s -> Z3 s (AST s)
mkMod :: AST s -> AST s -> Z3 s (AST s)
mkMod = (Context -> AST -> AST -> IO AST) -> AST s -> AST s -> Z3 s (AST s)
forall a' a b' b c' c s.
(Coercible a' a, Coercible b' b, Coercible c' c) =>
(Context -> a' -> b' -> IO c') -> a -> b -> Z3 s c
liftF2 Context -> AST -> AST -> IO AST
Base.mkMod
mkRem :: AST s -> AST s -> Z3 s (AST s)
mkRem :: AST s -> AST s -> Z3 s (AST s)
mkRem = (Context -> AST -> AST -> IO AST) -> AST s -> AST s -> Z3 s (AST s)
forall a' a b' b c' c s.
(Coercible a' a, Coercible b' b, Coercible c' c) =>
(Context -> a' -> b' -> IO c') -> a -> b -> Z3 s c
liftF2 Context -> AST -> AST -> IO AST
Base.mkRem
mkLt :: AST s -> AST s -> Z3 s (AST s)
mkLt :: AST s -> AST s -> Z3 s (AST s)
mkLt = (Context -> AST -> AST -> IO AST) -> AST s -> AST s -> Z3 s (AST s)
forall a' a b' b c' c s.
(Coercible a' a, Coercible b' b, Coercible c' c) =>
(Context -> a' -> b' -> IO c') -> a -> b -> Z3 s c
liftF2 Context -> AST -> AST -> IO AST
Base.mkLt
mkLe :: AST s -> AST s -> Z3 s (AST s)
mkLe :: AST s -> AST s -> Z3 s (AST s)
mkLe = (Context -> AST -> AST -> IO AST) -> AST s -> AST s -> Z3 s (AST s)
forall a' a b' b c' c s.
(Coercible a' a, Coercible b' b, Coercible c' c) =>
(Context -> a' -> b' -> IO c') -> a -> b -> Z3 s c
liftF2 Context -> AST -> AST -> IO AST
Base.mkLe
mkGt :: AST s -> AST s -> Z3 s (AST s)
mkGt :: AST s -> AST s -> Z3 s (AST s)
mkGt = (Context -> AST -> AST -> IO AST) -> AST s -> AST s -> Z3 s (AST s)
forall a' a b' b c' c s.
(Coercible a' a, Coercible b' b, Coercible c' c) =>
(Context -> a' -> b' -> IO c') -> a -> b -> Z3 s c
liftF2 Context -> AST -> AST -> IO AST
Base.mkGt
mkGe :: AST s -> AST s -> Z3 s (AST s)
mkGe :: AST s -> AST s -> Z3 s (AST s)
mkGe = (Context -> AST -> AST -> IO AST) -> AST s -> AST s -> Z3 s (AST s)
forall a' a b' b c' c s.
(Coercible a' a, Coercible b' b, Coercible c' c) =>
(Context -> a' -> b' -> IO c') -> a -> b -> Z3 s c
liftF2 Context -> AST -> AST -> IO AST
Base.mkGe
mkInt2Real :: AST s -> Z3 s (AST s)
mkInt2Real :: AST s -> Z3 s (AST s)
mkInt2Real = (Context -> AST -> IO AST) -> AST s -> Z3 s (AST s)
forall a' a b' b s.
(Coercible a' a, Coercible b' b) =>
(Context -> a' -> IO b') -> a -> Z3 s b
liftF1 Context -> AST -> IO AST
Base.mkInt2Real
mkReal2Int :: AST s -> Z3 s (AST s)
mkReal2Int :: AST s -> Z3 s (AST s)
mkReal2Int = (Context -> AST -> IO AST) -> AST s -> Z3 s (AST s)
forall a' a b' b s.
(Coercible a' a, Coercible b' b) =>
(Context -> a' -> IO b') -> a -> Z3 s b
liftF1 Context -> AST -> IO AST
Base.mkReal2Int
mkIsInt :: AST s -> Z3 s (AST s)
mkIsInt :: AST s -> Z3 s (AST s)
mkIsInt = (Context -> AST -> IO AST) -> AST s -> Z3 s (AST s)
forall a' a b' b s.
(Coercible a' a, Coercible b' b) =>
(Context -> a' -> IO b') -> a -> Z3 s b
liftF1 Context -> AST -> IO AST
Base.mkIsInt
mkBvnot :: AST s -> Z3 s (AST s)
mkBvnot :: AST s -> Z3 s (AST s)
mkBvnot = (Context -> AST -> IO AST) -> AST s -> Z3 s (AST s)
forall a' a b' b s.
(Coercible a' a, Coercible b' b) =>
(Context -> a' -> IO b') -> a -> Z3 s b
liftF1 Context -> AST -> IO AST
Base.mkBvnot
mkBvredand :: AST s -> Z3 s (AST s)
mkBvredand :: AST s -> Z3 s (AST s)
mkBvredand = (Context -> AST -> IO AST) -> AST s -> Z3 s (AST s)
forall a' a b' b s.
(Coercible a' a, Coercible b' b) =>
(Context -> a' -> IO b') -> a -> Z3 s b
liftF1 Context -> AST -> IO AST
Base.mkBvredand
mkBvredor :: AST s -> Z3 s (AST s)
mkBvredor :: AST s -> Z3 s (AST s)
mkBvredor = (Context -> AST -> IO AST) -> AST s -> Z3 s (AST s)
forall a' a b' b s.
(Coercible a' a, Coercible b' b) =>
(Context -> a' -> IO b') -> a -> Z3 s b
liftF1 Context -> AST -> IO AST
Base.mkBvredor
mkBvand :: AST s -> AST s -> Z3 s (AST s)
mkBvand :: AST s -> AST s -> Z3 s (AST s)
mkBvand = (Context -> AST -> AST -> IO AST) -> AST s -> AST s -> Z3 s (AST s)
forall a' a b' b c' c s.
(Coercible a' a, Coercible b' b, Coercible c' c) =>
(Context -> a' -> b' -> IO c') -> a -> b -> Z3 s c
liftF2 Context -> AST -> AST -> IO AST
Base.mkBvand
mkBvor :: AST s -> AST s -> Z3 s (AST s)
mkBvor :: AST s -> AST s -> Z3 s (AST s)
mkBvor = (Context -> AST -> AST -> IO AST) -> AST s -> AST s -> Z3 s (AST s)
forall a' a b' b c' c s.
(Coercible a' a, Coercible b' b, Coercible c' c) =>
(Context -> a' -> b' -> IO c') -> a -> b -> Z3 s c
liftF2 Context -> AST -> AST -> IO AST
Base.mkBvor
mkBvxor :: AST s -> AST s -> Z3 s (AST s)
mkBvxor :: AST s -> AST s -> Z3 s (AST s)
mkBvxor = (Context -> AST -> AST -> IO AST) -> AST s -> AST s -> Z3 s (AST s)
forall a' a b' b c' c s.
(Coercible a' a, Coercible b' b, Coercible c' c) =>
(Context -> a' -> b' -> IO c') -> a -> b -> Z3 s c
liftF2 Context -> AST -> AST -> IO AST
Base.mkBvxor
mkBvnand :: AST s -> AST s -> Z3 s (AST s)
mkBvnand :: AST s -> AST s -> Z3 s (AST s)
mkBvnand = (Context -> AST -> AST -> IO AST) -> AST s -> AST s -> Z3 s (AST s)
forall a' a b' b c' c s.
(Coercible a' a, Coercible b' b, Coercible c' c) =>
(Context -> a' -> b' -> IO c') -> a -> b -> Z3 s c
liftF2 Context -> AST -> AST -> IO AST
Base.mkBvnand
mkBvnor :: AST s -> AST s -> Z3 s (AST s)
mkBvnor :: AST s -> AST s -> Z3 s (AST s)
mkBvnor = (Context -> AST -> AST -> IO AST) -> AST s -> AST s -> Z3 s (AST s)
forall a' a b' b c' c s.
(Coercible a' a, Coercible b' b, Coercible c' c) =>
(Context -> a' -> b' -> IO c') -> a -> b -> Z3 s c
liftF2 Context -> AST -> AST -> IO AST
Base.mkBvnor
mkBvxnor :: AST s -> AST s -> Z3 s (AST s)
mkBvxnor :: AST s -> AST s -> Z3 s (AST s)
mkBvxnor = (Context -> AST -> AST -> IO AST) -> AST s -> AST s -> Z3 s (AST s)
forall a' a b' b c' c s.
(Coercible a' a, Coercible b' b, Coercible c' c) =>
(Context -> a' -> b' -> IO c') -> a -> b -> Z3 s c
liftF2 Context -> AST -> AST -> IO AST
Base.mkBvxnor
mkBvneg :: AST s -> Z3 s (AST s)
mkBvneg :: AST s -> Z3 s (AST s)
mkBvneg = (Context -> AST -> IO AST) -> AST s -> Z3 s (AST s)
forall a' a b' b s.
(Coercible a' a, Coercible b' b) =>
(Context -> a' -> IO b') -> a -> Z3 s b
liftF1 Context -> AST -> IO AST
Base.mkBvneg
mkBvadd :: AST s -> AST s -> Z3 s (AST s)
mkBvadd :: AST s -> AST s -> Z3 s (AST s)
mkBvadd = (Context -> AST -> AST -> IO AST) -> AST s -> AST s -> Z3 s (AST s)
forall a' a b' b c' c s.
(Coercible a' a, Coercible b' b, Coercible c' c) =>
(Context -> a' -> b' -> IO c') -> a -> b -> Z3 s c
liftF2 Context -> AST -> AST -> IO AST
Base.mkBvadd
mkBvsub :: AST s -> AST s -> Z3 s (AST s)
mkBvsub :: AST s -> AST s -> Z3 s (AST s)
mkBvsub = (Context -> AST -> AST -> IO AST) -> AST s -> AST s -> Z3 s (AST s)
forall a' a b' b c' c s.
(Coercible a' a, Coercible b' b, Coercible c' c) =>
(Context -> a' -> b' -> IO c') -> a -> b -> Z3 s c
liftF2 Context -> AST -> AST -> IO AST
Base.mkBvsub
mkBvmul :: AST s -> AST s -> Z3 s (AST s)
mkBvmul :: AST s -> AST s -> Z3 s (AST s)
mkBvmul = (Context -> AST -> AST -> IO AST) -> AST s -> AST s -> Z3 s (AST s)
forall a' a b' b c' c s.
(Coercible a' a, Coercible b' b, Coercible c' c) =>
(Context -> a' -> b' -> IO c') -> a -> b -> Z3 s c
liftF2 Context -> AST -> AST -> IO AST
Base.mkBvmul
mkBvudiv :: AST s -> AST s -> Z3 s (AST s)
mkBvudiv :: AST s -> AST s -> Z3 s (AST s)
mkBvudiv = (Context -> AST -> AST -> IO AST) -> AST s -> AST s -> Z3 s (AST s)
forall a' a b' b c' c s.
(Coercible a' a, Coercible b' b, Coercible c' c) =>
(Context -> a' -> b' -> IO c') -> a -> b -> Z3 s c
liftF2 Context -> AST -> AST -> IO AST
Base.mkBvudiv
mkBvsdiv :: AST s -> AST s -> Z3 s (AST s)
mkBvsdiv :: AST s -> AST s -> Z3 s (AST s)
mkBvsdiv = (Context -> AST -> AST -> IO AST) -> AST s -> AST s -> Z3 s (AST s)
forall a' a b' b c' c s.
(Coercible a' a, Coercible b' b, Coercible c' c) =>
(Context -> a' -> b' -> IO c') -> a -> b -> Z3 s c
liftF2 Context -> AST -> AST -> IO AST
Base.mkBvsdiv
mkBvurem :: AST s -> AST s -> Z3 s (AST s)
mkBvurem :: AST s -> AST s -> Z3 s (AST s)
mkBvurem = (Context -> AST -> AST -> IO AST) -> AST s -> AST s -> Z3 s (AST s)
forall a' a b' b c' c s.
(Coercible a' a, Coercible b' b, Coercible c' c) =>
(Context -> a' -> b' -> IO c') -> a -> b -> Z3 s c
liftF2 Context -> AST -> AST -> IO AST
Base.mkBvurem
mkBvsrem :: AST s -> AST s -> Z3 s (AST s)
mkBvsrem :: AST s -> AST s -> Z3 s (AST s)
mkBvsrem = (Context -> AST -> AST -> IO AST) -> AST s -> AST s -> Z3 s (AST s)
forall a' a b' b c' c s.
(Coercible a' a, Coercible b' b, Coercible c' c) =>
(Context -> a' -> b' -> IO c') -> a -> b -> Z3 s c
liftF2 Context -> AST -> AST -> IO AST
Base.mkBvsrem
mkBvsmod :: AST s -> AST s -> Z3 s (AST s)
mkBvsmod :: AST s -> AST s -> Z3 s (AST s)
mkBvsmod = (Context -> AST -> AST -> IO AST) -> AST s -> AST s -> Z3 s (AST s)
forall a' a b' b c' c s.
(Coercible a' a, Coercible b' b, Coercible c' c) =>
(Context -> a' -> b' -> IO c') -> a -> b -> Z3 s c
liftF2 Context -> AST -> AST -> IO AST
Base.mkBvsmod
mkBvult :: AST s -> AST s -> Z3 s (AST s)
mkBvult :: AST s -> AST s -> Z3 s (AST s)
mkBvult = (Context -> AST -> AST -> IO AST) -> AST s -> AST s -> Z3 s (AST s)
forall a' a b' b c' c s.
(Coercible a' a, Coercible b' b, Coercible c' c) =>
(Context -> a' -> b' -> IO c') -> a -> b -> Z3 s c
liftF2 Context -> AST -> AST -> IO AST
Base.mkBvult
mkBvslt :: AST s -> AST s -> Z3 s (AST s)
mkBvslt :: AST s -> AST s -> Z3 s (AST s)
mkBvslt = (Context -> AST -> AST -> IO AST) -> AST s -> AST s -> Z3 s (AST s)
forall a' a b' b c' c s.
(Coercible a' a, Coercible b' b, Coercible c' c) =>
(Context -> a' -> b' -> IO c') -> a -> b -> Z3 s c
liftF2 Context -> AST -> AST -> IO AST
Base.mkBvslt
mkBvule :: AST s -> AST s -> Z3 s (AST s)
mkBvule :: AST s -> AST s -> Z3 s (AST s)
mkBvule = (Context -> AST -> AST -> IO AST) -> AST s -> AST s -> Z3 s (AST s)
forall a' a b' b c' c s.
(Coercible a' a, Coercible b' b, Coercible c' c) =>
(Context -> a' -> b' -> IO c') -> a -> b -> Z3 s c
liftF2 Context -> AST -> AST -> IO AST
Base.mkBvule
mkBvsle :: AST s -> AST s -> Z3 s (AST s)
mkBvsle :: AST s -> AST s -> Z3 s (AST s)
mkBvsle = (Context -> AST -> AST -> IO AST) -> AST s -> AST s -> Z3 s (AST s)
forall a' a b' b c' c s.
(Coercible a' a, Coercible b' b, Coercible c' c) =>
(Context -> a' -> b' -> IO c') -> a -> b -> Z3 s c
liftF2 Context -> AST -> AST -> IO AST
Base.mkBvsle
mkBvuge :: AST s -> AST s -> Z3 s (AST s)
mkBvuge :: AST s -> AST s -> Z3 s (AST s)
mkBvuge = (Context -> AST -> AST -> IO AST) -> AST s -> AST s -> Z3 s (AST s)
forall a' a b' b c' c s.
(Coercible a' a, Coercible b' b, Coercible c' c) =>
(Context -> a' -> b' -> IO c') -> a -> b -> Z3 s c
liftF2 Context -> AST -> AST -> IO AST
Base.mkBvuge
mkBvsge :: AST s -> AST s -> Z3 s (AST s)
mkBvsge :: AST s -> AST s -> Z3 s (AST s)
mkBvsge = (Context -> AST -> AST -> IO AST) -> AST s -> AST s -> Z3 s (AST s)
forall a' a b' b c' c s.
(Coercible a' a, Coercible b' b, Coercible c' c) =>
(Context -> a' -> b' -> IO c') -> a -> b -> Z3 s c
liftF2 Context -> AST -> AST -> IO AST
Base.mkBvsge
mkBvugt :: AST s -> AST s -> Z3 s (AST s)
mkBvugt :: AST s -> AST s -> Z3 s (AST s)
mkBvugt = (Context -> AST -> AST -> IO AST) -> AST s -> AST s -> Z3 s (AST s)
forall a' a b' b c' c s.
(Coercible a' a, Coercible b' b, Coercible c' c) =>
(Context -> a' -> b' -> IO c') -> a -> b -> Z3 s c
liftF2 Context -> AST -> AST -> IO AST
Base.mkBvugt
mkBvsgt :: AST s -> AST s -> Z3 s (AST s)
mkBvsgt :: AST s -> AST s -> Z3 s (AST s)
mkBvsgt = (Context -> AST -> AST -> IO AST) -> AST s -> AST s -> Z3 s (AST s)
forall a' a b' b c' c s.
(Coercible a' a, Coercible b' b, Coercible c' c) =>
(Context -> a' -> b' -> IO c') -> a -> b -> Z3 s c
liftF2 Context -> AST -> AST -> IO AST
Base.mkBvsgt
mkConcat :: AST s -> AST s -> Z3 s (AST s)
mkConcat :: AST s -> AST s -> Z3 s (AST s)
mkConcat = (Context -> AST -> AST -> IO AST) -> AST s -> AST s -> Z3 s (AST s)
forall a' a b' b c' c s.
(Coercible a' a, Coercible b' b, Coercible c' c) =>
(Context -> a' -> b' -> IO c') -> a -> b -> Z3 s c
liftF2 Context -> AST -> AST -> IO AST
Base.mkConcat
mkExtract :: Int -> Int -> AST s -> Z3 s (AST s)
= (Context -> Int -> Int -> AST -> IO AST)
-> Int -> Int -> AST s -> Z3 s (AST s)
forall a' a b' b c' c d' d s.
(Coercible a' a, Coercible b' b, Coercible c' c, Coercible d' d) =>
(Context -> a' -> b' -> c' -> IO d') -> a -> b -> c -> Z3 s d
liftF3 Context -> Int -> Int -> AST -> IO AST
Base.mkExtract
mkSignExt :: Int -> AST s -> Z3 s (AST s)
mkSignExt :: Int -> AST s -> Z3 s (AST s)
mkSignExt = (Context -> Int -> AST -> IO AST) -> Int -> AST s -> Z3 s (AST s)
forall a' a b' b c' c s.
(Coercible a' a, Coercible b' b, Coercible c' c) =>
(Context -> a' -> b' -> IO c') -> a -> b -> Z3 s c
liftF2 Context -> Int -> AST -> IO AST
Base.mkSignExt
mkZeroExt :: Int -> AST s -> Z3 s (AST s)
mkZeroExt :: Int -> AST s -> Z3 s (AST s)
mkZeroExt = (Context -> Int -> AST -> IO AST) -> Int -> AST s -> Z3 s (AST s)
forall a' a b' b c' c s.
(Coercible a' a, Coercible b' b, Coercible c' c) =>
(Context -> a' -> b' -> IO c') -> a -> b -> Z3 s c
liftF2 Context -> Int -> AST -> IO AST
Base.mkZeroExt
mkRepeat :: Int -> AST s -> Z3 s (AST s)
mkRepeat :: Int -> AST s -> Z3 s (AST s)
mkRepeat = (Context -> Int -> AST -> IO AST) -> Int -> AST s -> Z3 s (AST s)
forall a' a b' b c' c s.
(Coercible a' a, Coercible b' b, Coercible c' c) =>
(Context -> a' -> b' -> IO c') -> a -> b -> Z3 s c
liftF2 Context -> Int -> AST -> IO AST
Base.mkRepeat
mkBvshl :: AST s -> AST s -> Z3 s (AST s)
mkBvshl :: AST s -> AST s -> Z3 s (AST s)
mkBvshl = (Context -> AST -> AST -> IO AST) -> AST s -> AST s -> Z3 s (AST s)
forall a' a b' b c' c s.
(Coercible a' a, Coercible b' b, Coercible c' c) =>
(Context -> a' -> b' -> IO c') -> a -> b -> Z3 s c
liftF2 Context -> AST -> AST -> IO AST
Base.mkBvshl
mkBvlshr :: AST s -> AST s -> Z3 s (AST s)
mkBvlshr :: AST s -> AST s -> Z3 s (AST s)
mkBvlshr = (Context -> AST -> AST -> IO AST) -> AST s -> AST s -> Z3 s (AST s)
forall a' a b' b c' c s.
(Coercible a' a, Coercible b' b, Coercible c' c) =>
(Context -> a' -> b' -> IO c') -> a -> b -> Z3 s c
liftF2 Context -> AST -> AST -> IO AST
Base.mkBvlshr
mkBvashr :: AST s -> AST s -> Z3 s (AST s)
mkBvashr :: AST s -> AST s -> Z3 s (AST s)
mkBvashr = (Context -> AST -> AST -> IO AST) -> AST s -> AST s -> Z3 s (AST s)
forall a' a b' b c' c s.
(Coercible a' a, Coercible b' b, Coercible c' c) =>
(Context -> a' -> b' -> IO c') -> a -> b -> Z3 s c
liftF2 Context -> AST -> AST -> IO AST
Base.mkBvashr
mkRotateLeft :: Int -> AST s -> Z3 s (AST s)
mkRotateLeft :: Int -> AST s -> Z3 s (AST s)
mkRotateLeft = (Context -> Int -> AST -> IO AST) -> Int -> AST s -> Z3 s (AST s)
forall a' a b' b c' c s.
(Coercible a' a, Coercible b' b, Coercible c' c) =>
(Context -> a' -> b' -> IO c') -> a -> b -> Z3 s c
liftF2 Context -> Int -> AST -> IO AST
Base.mkRotateLeft
mkRotateRight :: Int -> AST s -> Z3 s (AST s)
mkRotateRight :: Int -> AST s -> Z3 s (AST s)
mkRotateRight = (Context -> Int -> AST -> IO AST) -> Int -> AST s -> Z3 s (AST s)
forall a' a b' b c' c s.
(Coercible a' a, Coercible b' b, Coercible c' c) =>
(Context -> a' -> b' -> IO c') -> a -> b -> Z3 s c
liftF2 Context -> Int -> AST -> IO AST
Base.mkRotateRight
mkExtRotateLeft :: AST s -> AST s -> Z3 s (AST s)
mkExtRotateLeft :: AST s -> AST s -> Z3 s (AST s)
mkExtRotateLeft = (Context -> AST -> AST -> IO AST) -> AST s -> AST s -> Z3 s (AST s)
forall a' a b' b c' c s.
(Coercible a' a, Coercible b' b, Coercible c' c) =>
(Context -> a' -> b' -> IO c') -> a -> b -> Z3 s c
liftF2 Context -> AST -> AST -> IO AST
Base.mkExtRotateLeft
mkExtRotateRight :: AST s -> AST s -> Z3 s (AST s)
mkExtRotateRight :: AST s -> AST s -> Z3 s (AST s)
mkExtRotateRight = (Context -> AST -> AST -> IO AST) -> AST s -> AST s -> Z3 s (AST s)
forall a' a b' b c' c s.
(Coercible a' a, Coercible b' b, Coercible c' c) =>
(Context -> a' -> b' -> IO c') -> a -> b -> Z3 s c
liftF2 Context -> AST -> AST -> IO AST
Base.mkExtRotateRight
mkInt2bv :: Int -> AST s -> Z3 s (AST s)
mkInt2bv :: Int -> AST s -> Z3 s (AST s)
mkInt2bv = (Context -> Int -> AST -> IO AST) -> Int -> AST s -> Z3 s (AST s)
forall a' a b' b c' c s.
(Coercible a' a, Coercible b' b, Coercible c' c) =>
(Context -> a' -> b' -> IO c') -> a -> b -> Z3 s c
liftF2 Context -> Int -> AST -> IO AST
Base.mkInt2bv
mkBv2int :: AST s -> Bool -> Z3 s (AST s)
mkBv2int :: AST s -> Bool -> Z3 s (AST s)
mkBv2int = (Context -> AST -> Bool -> IO AST) -> AST s -> Bool -> Z3 s (AST s)
forall a' a b' b c' c s.
(Coercible a' a, Coercible b' b, Coercible c' c) =>
(Context -> a' -> b' -> IO c') -> a -> b -> Z3 s c
liftF2 Context -> AST -> Bool -> IO AST
Base.mkBv2int
mkBvaddNoOverflow :: AST s -> AST s -> Bool -> Z3 s (AST s)
mkBvaddNoOverflow :: AST s -> AST s -> Bool -> Z3 s (AST s)
mkBvaddNoOverflow = (Context -> AST -> AST -> Bool -> IO AST)
-> AST s -> AST s -> Bool -> Z3 s (AST s)
forall a' a b' b c' c d' d s.
(Coercible a' a, Coercible b' b, Coercible c' c, Coercible d' d) =>
(Context -> a' -> b' -> c' -> IO d') -> a -> b -> c -> Z3 s d
liftF3 Context -> AST -> AST -> Bool -> IO AST
Base.mkBvaddNoOverflow
mkBvaddNoUnderflow :: AST s -> AST s -> Z3 s (AST s)
mkBvaddNoUnderflow :: AST s -> AST s -> Z3 s (AST s)
mkBvaddNoUnderflow = (Context -> AST -> AST -> IO AST) -> AST s -> AST s -> Z3 s (AST s)
forall a' a b' b c' c s.
(Coercible a' a, Coercible b' b, Coercible c' c) =>
(Context -> a' -> b' -> IO c') -> a -> b -> Z3 s c
liftF2 Context -> AST -> AST -> IO AST
Base.mkBvaddNoUnderflow
mkBvsubNoOverflow :: AST s -> AST s -> Z3 s (AST s)
mkBvsubNoOverflow :: AST s -> AST s -> Z3 s (AST s)
mkBvsubNoOverflow = (Context -> AST -> AST -> IO AST) -> AST s -> AST s -> Z3 s (AST s)
forall a' a b' b c' c s.
(Coercible a' a, Coercible b' b, Coercible c' c) =>
(Context -> a' -> b' -> IO c') -> a -> b -> Z3 s c
liftF2 Context -> AST -> AST -> IO AST
Base.mkBvsubNoOverflow
mkBvsubNoUnderflow :: AST s -> AST s -> Z3 s (AST s)
mkBvsubNoUnderflow :: AST s -> AST s -> Z3 s (AST s)
mkBvsubNoUnderflow = (Context -> AST -> AST -> IO AST) -> AST s -> AST s -> Z3 s (AST s)
forall a' a b' b c' c s.
(Coercible a' a, Coercible b' b, Coercible c' c) =>
(Context -> a' -> b' -> IO c') -> a -> b -> Z3 s c
liftF2 Context -> AST -> AST -> IO AST
Base.mkBvsubNoUnderflow
mkBvsdivNoOverflow :: AST s -> AST s -> Z3 s (AST s)
mkBvsdivNoOverflow :: AST s -> AST s -> Z3 s (AST s)
mkBvsdivNoOverflow = (Context -> AST -> AST -> IO AST) -> AST s -> AST s -> Z3 s (AST s)
forall a' a b' b c' c s.
(Coercible a' a, Coercible b' b, Coercible c' c) =>
(Context -> a' -> b' -> IO c') -> a -> b -> Z3 s c
liftF2 Context -> AST -> AST -> IO AST
Base.mkBvsdivNoOverflow
mkBvnegNoOverflow :: AST s -> Z3 s (AST s)
mkBvnegNoOverflow :: AST s -> Z3 s (AST s)
mkBvnegNoOverflow = (Context -> AST -> IO AST) -> AST s -> Z3 s (AST s)
forall a' a b' b s.
(Coercible a' a, Coercible b' b) =>
(Context -> a' -> IO b') -> a -> Z3 s b
liftF1 Context -> AST -> IO AST
Base.mkBvnegNoOverflow
mkBvmulNoOverflow :: AST s -> AST s -> Bool -> Z3 s (AST s)
mkBvmulNoOverflow :: AST s -> AST s -> Bool -> Z3 s (AST s)
mkBvmulNoOverflow = (Context -> AST -> AST -> Bool -> IO AST)
-> AST s -> AST s -> Bool -> Z3 s (AST s)
forall a' a b' b c' c d' d s.
(Coercible a' a, Coercible b' b, Coercible c' c, Coercible d' d) =>
(Context -> a' -> b' -> c' -> IO d') -> a -> b -> c -> Z3 s d
liftF3 Context -> AST -> AST -> Bool -> IO AST
Base.mkBvmulNoOverflow
mkBvmulNoUnderflow :: AST s -> AST s -> Z3 s (AST s)
mkBvmulNoUnderflow :: AST s -> AST s -> Z3 s (AST s)
mkBvmulNoUnderflow = (Context -> AST -> AST -> IO AST) -> AST s -> AST s -> Z3 s (AST s)
forall a' a b' b c' c s.
(Coercible a' a, Coercible b' b, Coercible c' c) =>
(Context -> a' -> b' -> IO c') -> a -> b -> Z3 s c
liftF2 Context -> AST -> AST -> IO AST
Base.mkBvmulNoUnderflow
mkSelect :: AST s -> AST s -> Z3 s (AST s)
mkSelect :: AST s -> AST s -> Z3 s (AST s)
mkSelect = (Context -> AST -> AST -> IO AST) -> AST s -> AST s -> Z3 s (AST s)
forall a' a b' b c' c s.
(Coercible a' a, Coercible b' b, Coercible c' c) =>
(Context -> a' -> b' -> IO c') -> a -> b -> Z3 s c
liftF2 Context -> AST -> AST -> IO AST
Base.mkSelect
mkStore :: AST s -> AST s -> AST s -> Z3 s (AST s)
mkStore :: AST s -> AST s -> AST s -> Z3 s (AST s)
mkStore = (Context -> AST -> AST -> AST -> IO AST)
-> AST s -> AST s -> AST s -> Z3 s (AST s)
forall a' a b' b c' c d' d s.
(Coercible a' a, Coercible b' b, Coercible c' c, Coercible d' d) =>
(Context -> a' -> b' -> c' -> IO d') -> a -> b -> c -> Z3 s d
liftF3 Context -> AST -> AST -> AST -> IO AST
Base.mkStore
mkConstArray :: Sort s -> AST s -> Z3 s (AST s)
mkConstArray :: Sort s -> AST s -> Z3 s (AST s)
mkConstArray = (Context -> Sort -> AST -> IO AST)
-> Sort s -> AST s -> Z3 s (AST s)
forall a' a b' b c' c s.
(Coercible a' a, Coercible b' b, Coercible c' c) =>
(Context -> a' -> b' -> IO c') -> a -> b -> Z3 s c
liftF2 Context -> Sort -> AST -> IO AST
Base.mkConstArray
mkMap :: FuncDecl s -> [AST s] -> Z3 s (AST s)
mkMap :: FuncDecl s -> [AST s] -> Z3 s (AST s)
mkMap = (Context -> FuncDecl -> [AST] -> IO AST)
-> FuncDecl s -> [AST s] -> Z3 s (AST s)
forall a' a b' b c' c s.
(Coercible a' a, Coercible b' b, Coercible c' c) =>
(Context -> a' -> b' -> IO c') -> a -> b -> Z3 s c
liftF2 Context -> FuncDecl -> [AST] -> IO AST
Base.mkMap
mkArrayDefault :: AST s -> Z3 s (AST s)
mkArrayDefault :: AST s -> Z3 s (AST s)
mkArrayDefault = (Context -> AST -> IO AST) -> AST s -> Z3 s (AST s)
forall a' a b' b s.
(Coercible a' a, Coercible b' b) =>
(Context -> a' -> IO b') -> a -> Z3 s b
liftF1 Context -> AST -> IO AST
Base.mkArrayDefault
mkEmptySet :: Sort s -> Z3 s (AST s)
mkEmptySet :: Sort s -> Z3 s (AST s)
mkEmptySet = (Context -> Sort -> IO AST) -> Sort s -> Z3 s (AST s)
forall a' a b' b s.
(Coercible a' a, Coercible b' b) =>
(Context -> a' -> IO b') -> a -> Z3 s b
liftF1 Context -> Sort -> IO AST
Base.mkEmptySet
mkFullSet :: Sort s -> Z3 s (AST s)
mkFullSet :: Sort s -> Z3 s (AST s)
mkFullSet = (Context -> Sort -> IO AST) -> Sort s -> Z3 s (AST s)
forall a' a b' b s.
(Coercible a' a, Coercible b' b) =>
(Context -> a' -> IO b') -> a -> Z3 s b
liftF1 Context -> Sort -> IO AST
Base.mkFullSet
mkSetAdd :: AST s -> AST s -> Z3 s (AST s)
mkSetAdd :: AST s -> AST s -> Z3 s (AST s)
mkSetAdd = (Context -> AST -> AST -> IO AST) -> AST s -> AST s -> Z3 s (AST s)
forall a' a b' b c' c s.
(Coercible a' a, Coercible b' b, Coercible c' c) =>
(Context -> a' -> b' -> IO c') -> a -> b -> Z3 s c
liftF2 Context -> AST -> AST -> IO AST
Base.mkSetAdd
mkSetDel :: AST s -> AST s -> Z3 s (AST s)
mkSetDel :: AST s -> AST s -> Z3 s (AST s)
mkSetDel = (Context -> AST -> AST -> IO AST) -> AST s -> AST s -> Z3 s (AST s)
forall a' a b' b c' c s.
(Coercible a' a, Coercible b' b, Coercible c' c) =>
(Context -> a' -> b' -> IO c') -> a -> b -> Z3 s c
liftF2 Context -> AST -> AST -> IO AST
Base.mkSetDel
mkSetUnion :: [AST s] -> Z3 s (AST s)
mkSetUnion :: [AST s] -> Z3 s (AST s)
mkSetUnion = (Context -> [AST] -> IO AST) -> [AST s] -> Z3 s (AST s)
forall a' a b' b s.
(Coercible a' a, Coercible b' b) =>
(Context -> a' -> IO b') -> a -> Z3 s b
liftF1 Context -> [AST] -> IO AST
Base.mkSetUnion
mkSetIntersect :: [AST s] -> Z3 s (AST s)
mkSetIntersect :: [AST s] -> Z3 s (AST s)
mkSetIntersect = (Context -> [AST] -> IO AST) -> [AST s] -> Z3 s (AST s)
forall a' a b' b s.
(Coercible a' a, Coercible b' b) =>
(Context -> a' -> IO b') -> a -> Z3 s b
liftF1 Context -> [AST] -> IO AST
Base.mkSetIntersect
mkSetDifference :: AST s -> AST s -> Z3 s (AST s)
mkSetDifference :: AST s -> AST s -> Z3 s (AST s)
mkSetDifference = (Context -> AST -> AST -> IO AST) -> AST s -> AST s -> Z3 s (AST s)
forall a' a b' b c' c s.
(Coercible a' a, Coercible b' b, Coercible c' c) =>
(Context -> a' -> b' -> IO c') -> a -> b -> Z3 s c
liftF2 Context -> AST -> AST -> IO AST
Base.mkSetDifference
mkSetComplement :: AST s -> Z3 s (AST s)
mkSetComplement :: AST s -> Z3 s (AST s)
mkSetComplement = (Context -> AST -> IO AST) -> AST s -> Z3 s (AST s)
forall a' a b' b s.
(Coercible a' a, Coercible b' b) =>
(Context -> a' -> IO b') -> a -> Z3 s b
liftF1 Context -> AST -> IO AST
Base.mkSetComplement
mkSetMember :: AST s -> AST s -> Z3 s (AST s)
mkSetMember :: AST s -> AST s -> Z3 s (AST s)
mkSetMember = (Context -> AST -> AST -> IO AST) -> AST s -> AST s -> Z3 s (AST s)
forall a' a b' b c' c s.
(Coercible a' a, Coercible b' b, Coercible c' c) =>
(Context -> a' -> b' -> IO c') -> a -> b -> Z3 s c
liftF2 Context -> AST -> AST -> IO AST
Base.mkSetMember
mkSetSubset :: AST s -> AST s -> Z3 s (AST s)
mkSetSubset :: AST s -> AST s -> Z3 s (AST s)
mkSetSubset = (Context -> AST -> AST -> IO AST) -> AST s -> AST s -> Z3 s (AST s)
forall a' a b' b c' c s.
(Coercible a' a, Coercible b' b, Coercible c' c) =>
(Context -> a' -> b' -> IO c') -> a -> b -> Z3 s c
liftF2 Context -> AST -> AST -> IO AST
Base.mkSetSubset
mkNumeral :: String -> Sort s -> Z3 s (AST s)
mkNumeral :: String -> Sort s -> Z3 s (AST s)
mkNumeral = (Context -> String -> Sort -> IO AST)
-> String -> Sort s -> Z3 s (AST s)
forall a' a b' b c' c s.
(Coercible a' a, Coercible b' b, Coercible c' c) =>
(Context -> a' -> b' -> IO c') -> a -> b -> Z3 s c
liftF2 Context -> String -> Sort -> IO AST
Base.mkNumeral
mkReal :: Int -> Int -> Z3 s (AST s)
mkReal :: Int -> Int -> Z3 s (AST s)
mkReal = (Context -> Int -> Int -> IO AST) -> Int -> Int -> Z3 s (AST s)
forall a' a b' b c' c s.
(Coercible a' a, Coercible b' b, Coercible c' c) =>
(Context -> a' -> b' -> IO c') -> a -> b -> Z3 s c
liftF2 Context -> Int -> Int -> IO AST
Base.mkReal
mkInt :: Int -> Sort s -> Z3 s (AST s)
mkInt :: Int -> Sort s -> Z3 s (AST s)
mkInt = (Context -> Int -> Sort -> IO AST) -> Int -> Sort s -> Z3 s (AST s)
forall a' a b' b c' c s.
(Coercible a' a, Coercible b' b, Coercible c' c) =>
(Context -> a' -> b' -> IO c') -> a -> b -> Z3 s c
liftF2 Context -> Int -> Sort -> IO AST
Base.mkInt
mkUnsignedInt :: Word -> Sort s -> Z3 s (AST s)
mkUnsignedInt :: Word -> Sort s -> Z3 s (AST s)
mkUnsignedInt = (Context -> Word -> Sort -> IO AST)
-> Word -> Sort s -> Z3 s (AST s)
forall a' a b' b c' c s.
(Coercible a' a, Coercible b' b, Coercible c' c) =>
(Context -> a' -> b' -> IO c') -> a -> b -> Z3 s c
liftF2 Context -> Word -> Sort -> IO AST
Base.mkUnsignedInt
mkInt64 :: Int64 -> Sort s -> Z3 s (AST s)
mkInt64 :: Int64 -> Sort s -> Z3 s (AST s)
mkInt64 = (Context -> Int64 -> Sort -> IO AST)
-> Int64 -> Sort s -> Z3 s (AST s)
forall a' a b' b c' c s.
(Coercible a' a, Coercible b' b, Coercible c' c) =>
(Context -> a' -> b' -> IO c') -> a -> b -> Z3 s c
liftF2 Context -> Int64 -> Sort -> IO AST
Base.mkInt64
mkUnsignedInt64 :: Word64 -> Sort s -> Z3 s (AST s)
mkUnsignedInt64 :: Word64 -> Sort s -> Z3 s (AST s)
mkUnsignedInt64 = (Context -> Word64 -> Sort -> IO AST)
-> Word64 -> Sort s -> Z3 s (AST s)
forall a' a b' b c' c s.
(Coercible a' a, Coercible b' b, Coercible c' c) =>
(Context -> a' -> b' -> IO c') -> a -> b -> Z3 s c
liftF2 Context -> Word64 -> Sort -> IO AST
Base.mkUnsignedInt64
mkIntegral :: ∀ a s . (Integral a) => a -> Sort s -> Z3 s (AST s)
mkIntegral :: a -> Sort s -> Z3 s (AST s)
mkIntegral = (Context -> a -> Sort -> IO AST) -> a -> Sort s -> Z3 s (AST s)
forall a' a b' b c' c s.
(Coercible a' a, Coercible b' b, Coercible c' c) =>
(Context -> a' -> b' -> IO c') -> a -> b -> Z3 s c
liftF2 (Integral a => Context -> a -> Sort -> IO AST
forall a. Integral a => Context -> a -> Sort -> IO AST
Base.mkIntegral @a)
mkRational :: Rational -> Z3 s (AST s)
mkRational :: Rational -> Z3 s (AST s)
mkRational = (Context -> Rational -> IO AST) -> Rational -> Z3 s (AST s)
forall a' a b' b s.
(Coercible a' a, Coercible b' b) =>
(Context -> a' -> IO b') -> a -> Z3 s b
liftF1 Context -> Rational -> IO AST
Base.mkRational
mkFixed :: ∀ a s . (HasResolution a) => Fixed a -> Z3 s (AST s)
mkFixed :: Fixed a -> Z3 s (AST s)
mkFixed = (Context -> Fixed a -> IO AST) -> Fixed a -> Z3 s (AST s)
forall a' a b' b s.
(Coercible a' a, Coercible b' b) =>
(Context -> a' -> IO b') -> a -> Z3 s b
liftF1 (HasResolution a => Context -> Fixed a -> IO AST
forall a. HasResolution a => Context -> Fixed a -> IO AST
Base.mkFixed @a)
mkRealNum :: ∀ r s . (Real r) => r -> Z3 s (AST s)
mkRealNum :: r -> Z3 s (AST s)
mkRealNum = (Context -> r -> IO AST) -> r -> Z3 s (AST s)
forall a' a b' b s.
(Coercible a' a, Coercible b' b) =>
(Context -> a' -> IO b') -> a -> Z3 s b
liftF1 (Real r => Context -> r -> IO AST
forall r. Real r => Context -> r -> IO AST
Base.mkRealNum @r)
mkInteger :: Integer -> Z3 s (AST s)
mkInteger :: Integer -> Z3 s (AST s)
mkInteger = (Context -> Integer -> IO AST) -> Integer -> Z3 s (AST s)
forall a' a b' b s.
(Coercible a' a, Coercible b' b) =>
(Context -> a' -> IO b') -> a -> Z3 s b
liftF1 Context -> Integer -> IO AST
Base.mkInteger
mkIntNum :: ∀ a s . (Integral a) => a -> Z3 s (AST s)
mkIntNum :: a -> Z3 s (AST s)
mkIntNum = (Context -> a -> IO AST) -> a -> Z3 s (AST s)
forall a' a b' b s.
(Coercible a' a, Coercible b' b) =>
(Context -> a' -> IO b') -> a -> Z3 s b
liftF1 (Integral a => Context -> a -> IO AST
forall a. Integral a => Context -> a -> IO AST
Base.mkIntNum @a)
mkBitvector :: Int
-> Integer
-> Z3 s (AST s)
mkBitvector :: Int -> Integer -> Z3 s (AST s)
mkBitvector = (Context -> Int -> Integer -> IO AST)
-> Int -> Integer -> Z3 s (AST s)
forall a' a b' b c' c s.
(Coercible a' a, Coercible b' b, Coercible c' c) =>
(Context -> a' -> b' -> IO c') -> a -> b -> Z3 s c
liftF2 Context -> Int -> Integer -> IO AST
Base.mkBitvector
mkBvNum :: ∀ i s .
(Integral i) => Int
-> i
-> Z3 s (AST s)
mkBvNum :: Int -> i -> Z3 s (AST s)
mkBvNum = (Context -> Int -> i -> IO AST) -> Int -> i -> Z3 s (AST s)
forall a' a b' b c' c s.
(Coercible a' a, Coercible b' b, Coercible c' c) =>
(Context -> a' -> b' -> IO c') -> a -> b -> Z3 s c
liftF2 (Integral i => Context -> Int -> i -> IO AST
forall i. Integral i => Context -> Int -> i -> IO AST
Base.mkBvNum @i)
mkPattern :: [AST s] -> Z3 s (Pattern s)
mkPattern :: [AST s] -> Z3 s (Pattern s)
mkPattern = (Context -> [AST] -> IO Pattern) -> [AST s] -> Z3 s (Pattern s)
forall a' a b' b s.
(Coercible a' a, Coercible b' b) =>
(Context -> a' -> IO b') -> a -> Z3 s b
liftF1 Context -> [AST] -> IO Pattern
Base.mkPattern
mkBound :: Int -> Sort s -> Z3 s (AST s)
mkBound :: Int -> Sort s -> Z3 s (AST s)
mkBound = (Context -> Int -> Sort -> IO AST) -> Int -> Sort s -> Z3 s (AST s)
forall a' a b' b c' c s.
(Coercible a' a, Coercible b' b, Coercible c' c) =>
(Context -> a' -> b' -> IO c') -> a -> b -> Z3 s c
liftF2 Context -> Int -> Sort -> IO AST
Base.mkBound
mkForall :: [Pattern s] -> [Symbol s] -> [Sort s] -> AST s -> Z3 s (AST s)
mkForall :: [Pattern s] -> [Symbol s] -> [Sort s] -> AST s -> Z3 s (AST s)
mkForall = (Context -> [Pattern] -> [Symbol] -> [Sort] -> AST -> IO AST)
-> [Pattern s] -> [Symbol s] -> [Sort s] -> AST s -> Z3 s (AST s)
forall a' a b' b c' c d' d e' e s.
(Coercible a' a, Coercible b' b, Coercible c' c, Coercible d' d,
Coercible e' e) =>
(Context -> a' -> b' -> c' -> d' -> IO e')
-> a -> b -> c -> d -> Z3 s e
liftF4 Context -> [Pattern] -> [Symbol] -> [Sort] -> AST -> IO AST
Base.mkForall
mkForallConst :: [Pattern s] -> [App s] -> AST s -> Z3 s (AST s)
mkForallConst :: [Pattern s] -> [App s] -> AST s -> Z3 s (AST s)
mkForallConst = (Context -> [Pattern] -> [App] -> AST -> IO AST)
-> [Pattern s] -> [App s] -> AST s -> Z3 s (AST s)
forall a' a b' b c' c d' d s.
(Coercible a' a, Coercible b' b, Coercible c' c, Coercible d' d) =>
(Context -> a' -> b' -> c' -> IO d') -> a -> b -> c -> Z3 s d
liftF3 Context -> [Pattern] -> [App] -> AST -> IO AST
Base.mkForallConst
mkExistsConst :: [Pattern s] -> [App s] -> AST s -> Z3 s (AST s)
mkExistsConst :: [Pattern s] -> [App s] -> AST s -> Z3 s (AST s)
mkExistsConst = (Context -> [Pattern] -> [App] -> AST -> IO AST)
-> [Pattern s] -> [App s] -> AST s -> Z3 s (AST s)
forall a' a b' b c' c d' d s.
(Coercible a' a, Coercible b' b, Coercible c' c, Coercible d' d) =>
(Context -> a' -> b' -> c' -> IO d') -> a -> b -> c -> Z3 s d
liftF3 Context -> [Pattern] -> [App] -> AST -> IO AST
Base.mkExistsConst
mkExists :: [Pattern s] -> [Symbol s] -> [Sort s] -> AST s -> Z3 s (AST s)
mkExists :: [Pattern s] -> [Symbol s] -> [Sort s] -> AST s -> Z3 s (AST s)
mkExists = (Context -> [Pattern] -> [Symbol] -> [Sort] -> AST -> IO AST)
-> [Pattern s] -> [Symbol s] -> [Sort s] -> AST s -> Z3 s (AST s)
forall a' a b' b c' c d' d e' e s.
(Coercible a' a, Coercible b' b, Coercible c' c, Coercible d' d,
Coercible e' e) =>
(Context -> a' -> b' -> c' -> d' -> IO e')
-> a -> b -> c -> d -> Z3 s e
liftF4 Context -> [Pattern] -> [Symbol] -> [Sort] -> AST -> IO AST
Base.mkExists
getSymbolString :: Symbol s -> Z3 s String
getSymbolString :: Symbol s -> Z3 s String
getSymbolString = (Context -> Symbol -> IO String) -> Symbol s -> Z3 s String
forall a' a b' b s.
(Coercible a' a, Coercible b' b) =>
(Context -> a' -> IO b') -> a -> Z3 s b
liftF1 Context -> Symbol -> IO String
Base.getSymbolString
getSortKind :: Sort s -> Z3 s SortKind
getSortKind :: Sort s -> Z3 s SortKind
getSortKind = (Context -> Sort -> IO SortKind) -> Sort s -> Z3 s SortKind
forall a' a b' b s.
(Coercible a' a, Coercible b' b) =>
(Context -> a' -> IO b') -> a -> Z3 s b
liftF1 Context -> Sort -> IO SortKind
Base.getSortKind
getBvSortSize :: Sort s -> Z3 s Int
getBvSortSize :: Sort s -> Z3 s Int
getBvSortSize = (Context -> Sort -> IO Int) -> Sort s -> Z3 s Int
forall a' a b' b s.
(Coercible a' a, Coercible b' b) =>
(Context -> a' -> IO b') -> a -> Z3 s b
liftF1 Context -> Sort -> IO Int
Base.getBvSortSize
getDatatypeSortConstructors :: Sort s
-> Z3 s [FuncDecl s]
getDatatypeSortConstructors :: Sort s -> Z3 s [FuncDecl s]
getDatatypeSortConstructors = (Context -> Sort -> IO [FuncDecl]) -> Sort s -> Z3 s [FuncDecl s]
forall a' a b' b s.
(Coercible a' a, Coercible b' b) =>
(Context -> a' -> IO b') -> a -> Z3 s b
liftF1 Context -> Sort -> IO [FuncDecl]
Base.getDatatypeSortConstructors
getDatatypeSortRecognizers :: Sort s
-> Z3 s [FuncDecl s]
getDatatypeSortRecognizers :: Sort s -> Z3 s [FuncDecl s]
getDatatypeSortRecognizers = (Context -> Sort -> IO [FuncDecl]) -> Sort s -> Z3 s [FuncDecl s]
forall a' a b' b s.
(Coercible a' a, Coercible b' b) =>
(Context -> a' -> IO b') -> a -> Z3 s b
liftF1 Context -> Sort -> IO [FuncDecl]
Base.getDatatypeSortRecognizers
getDatatypeSortConstructorAccessors :: Sort s
-> Z3 s [[FuncDecl s]]
getDatatypeSortConstructorAccessors :: Sort s -> Z3 s [[FuncDecl s]]
getDatatypeSortConstructorAccessors = (Context -> Sort -> IO [[FuncDecl]])
-> Sort s -> Z3 s [[FuncDecl s]]
forall a' a b' b s.
(Coercible a' a, Coercible b' b) =>
(Context -> a' -> IO b') -> a -> Z3 s b
liftF1 Context -> Sort -> IO [[FuncDecl]]
Base.getDatatypeSortConstructorAccessors
getDeclName :: FuncDecl s -> Z3 s (Symbol s)
getDeclName :: FuncDecl s -> Z3 s (Symbol s)
getDeclName = (Context -> FuncDecl -> IO Symbol) -> FuncDecl s -> Z3 s (Symbol s)
forall a' a b' b s.
(Coercible a' a, Coercible b' b) =>
(Context -> a' -> IO b') -> a -> Z3 s b
liftF1 Context -> FuncDecl -> IO Symbol
Base.getDeclName
getArity :: FuncDecl s -> Z3 s Int
getArity :: FuncDecl s -> Z3 s Int
getArity = (Context -> FuncDecl -> IO Int) -> FuncDecl s -> Z3 s Int
forall a' a b' b s.
(Coercible a' a, Coercible b' b) =>
(Context -> a' -> IO b') -> a -> Z3 s b
liftF1 Context -> FuncDecl -> IO Int
Base.getArity
getDomain :: FuncDecl s
-> Int
-> Z3 s (Sort s)
getDomain :: FuncDecl s -> Int -> Z3 s (Sort s)
getDomain = (Context -> FuncDecl -> Int -> IO Sort)
-> FuncDecl s -> Int -> Z3 s (Sort s)
forall a' a b' b c' c s.
(Coercible a' a, Coercible b' b, Coercible c' c) =>
(Context -> a' -> b' -> IO c') -> a -> b -> Z3 s c
liftF2 Context -> FuncDecl -> Int -> IO Sort
Base.getDomain
getRange :: FuncDecl s -> Z3 s (Sort s)
getRange :: FuncDecl s -> Z3 s (Sort s)
getRange = (Context -> FuncDecl -> IO Sort) -> FuncDecl s -> Z3 s (Sort s)
forall a' a b' b s.
(Coercible a' a, Coercible b' b) =>
(Context -> a' -> IO b') -> a -> Z3 s b
liftF1 Context -> FuncDecl -> IO Sort
Base.getRange
appToAst :: App s -> Z3 s (AST s)
appToAst :: App s -> Z3 s (AST s)
appToAst = (Context -> App -> IO AST) -> App s -> Z3 s (AST s)
forall a' a b' b s.
(Coercible a' a, Coercible b' b) =>
(Context -> a' -> IO b') -> a -> Z3 s b
liftF1 Context -> App -> IO AST
Base.appToAst
getAppDecl :: App s -> Z3 s (FuncDecl s)
getAppDecl :: App s -> Z3 s (FuncDecl s)
getAppDecl = (Context -> App -> IO FuncDecl) -> App s -> Z3 s (FuncDecl s)
forall a' a b' b s.
(Coercible a' a, Coercible b' b) =>
(Context -> a' -> IO b') -> a -> Z3 s b
liftF1 Context -> App -> IO FuncDecl
Base.getAppDecl
getAppNumArgs :: App s -> Z3 s Int
getAppNumArgs :: App s -> Z3 s Int
getAppNumArgs = (Context -> App -> IO Int) -> App s -> Z3 s Int
forall a' a b' b s.
(Coercible a' a, Coercible b' b) =>
(Context -> a' -> IO b') -> a -> Z3 s b
liftF1 Context -> App -> IO Int
Base.getAppNumArgs
getAppArg :: App s -> Int -> Z3 s (AST s)
getAppArg :: App s -> Int -> Z3 s (AST s)
getAppArg = (Context -> App -> Int -> IO AST) -> App s -> Int -> Z3 s (AST s)
forall a' a b' b c' c s.
(Coercible a' a, Coercible b' b, Coercible c' c) =>
(Context -> a' -> b' -> IO c') -> a -> b -> Z3 s c
liftF2 Context -> App -> Int -> IO AST
Base.getAppArg
getAppArgs :: App s -> Z3 s [AST s]
getAppArgs :: App s -> Z3 s [AST s]
getAppArgs = (Context -> App -> IO [AST]) -> App s -> Z3 s [AST s]
forall a' a b' b s.
(Coercible a' a, Coercible b' b) =>
(Context -> a' -> IO b') -> a -> Z3 s b
liftF1 Context -> App -> IO [AST]
Base.getAppArgs
getSort :: AST s -> Z3 s (Sort s)
getSort :: AST s -> Z3 s (Sort s)
getSort = (Context -> AST -> IO Sort) -> AST s -> Z3 s (Sort s)
forall a' a b' b s.
(Coercible a' a, Coercible b' b) =>
(Context -> a' -> IO b') -> a -> Z3 s b
liftF1 Context -> AST -> IO Sort
Base.getSort
getArraySortDomain :: Sort s -> Z3 s (Sort s)
getArraySortDomain :: Sort s -> Z3 s (Sort s)
getArraySortDomain = (Context -> Sort -> IO Sort) -> Sort s -> Z3 s (Sort s)
forall a' a b' b s.
(Coercible a' a, Coercible b' b) =>
(Context -> a' -> IO b') -> a -> Z3 s b
liftF1 Context -> Sort -> IO Sort
Base.getArraySortDomain
getArraySortRange :: Sort s -> Z3 s (Sort s)
getArraySortRange :: Sort s -> Z3 s (Sort s)
getArraySortRange = (Context -> Sort -> IO Sort) -> Sort s -> Z3 s (Sort s)
forall a' a b' b s.
(Coercible a' a, Coercible b' b) =>
(Context -> a' -> IO b') -> a -> Z3 s b
liftF1 Context -> Sort -> IO Sort
Base.getArraySortRange
getBoolValue :: AST s -> Z3 s (Maybe Bool)
getBoolValue :: AST s -> Z3 s (Maybe Bool)
getBoolValue = (Context -> AST -> IO (Maybe Bool)) -> AST s -> Z3 s (Maybe Bool)
forall a' a b' b s.
(Coercible a' a, Coercible b' b) =>
(Context -> a' -> IO b') -> a -> Z3 s b
liftF1 Context -> AST -> IO (Maybe Bool)
Base.getBoolValue
getAstKind :: AST s -> Z3 s ASTKind
getAstKind :: AST s -> Z3 s ASTKind
getAstKind = (Context -> AST -> IO ASTKind) -> AST s -> Z3 s ASTKind
forall a' a b' b s.
(Coercible a' a, Coercible b' b) =>
(Context -> a' -> IO b') -> a -> Z3 s b
liftF1 Context -> AST -> IO ASTKind
Base.getAstKind
isApp :: AST s -> Z3 s Bool
isApp :: AST s -> Z3 s Bool
isApp = (Context -> AST -> IO Bool) -> AST s -> Z3 s Bool
forall a' a b' b s.
(Coercible a' a, Coercible b' b) =>
(Context -> a' -> IO b') -> a -> Z3 s b
liftF1 Context -> AST -> IO Bool
Base.isApp
toApp :: AST s -> Z3 s (App s)
toApp :: AST s -> Z3 s (App s)
toApp = (Context -> AST -> IO App) -> AST s -> Z3 s (App s)
forall a' a b' b s.
(Coercible a' a, Coercible b' b) =>
(Context -> a' -> IO b') -> a -> Z3 s b
liftF1 Context -> AST -> IO App
Base.toApp
getNumeralString :: AST s -> Z3 s String
getNumeralString :: AST s -> Z3 s String
getNumeralString = (Context -> AST -> IO String) -> AST s -> Z3 s String
forall a' a b' b s.
(Coercible a' a, Coercible b' b) =>
(Context -> a' -> IO b') -> a -> Z3 s b
liftF1 Context -> AST -> IO String
Base.getNumeralString
getIndexValue :: AST s -> Z3 s Int
getIndexValue :: AST s -> Z3 s Int
getIndexValue = (Context -> AST -> IO Int) -> AST s -> Z3 s Int
forall a' a b' b s.
(Coercible a' a, Coercible b' b) =>
(Context -> a' -> IO b') -> a -> Z3 s b
liftF1 Context -> AST -> IO Int
Base.getIndexValue
isQuantifierForall :: AST s -> Z3 s Bool
isQuantifierForall :: AST s -> Z3 s Bool
isQuantifierForall = (Context -> AST -> IO Bool) -> AST s -> Z3 s Bool
forall a' a b' b s.
(Coercible a' a, Coercible b' b) =>
(Context -> a' -> IO b') -> a -> Z3 s b
liftF1 Context -> AST -> IO Bool
Base.isQuantifierForall
isQuantifierExists :: AST s -> Z3 s Bool
isQuantifierExists :: AST s -> Z3 s Bool
isQuantifierExists = (Context -> AST -> IO Bool) -> AST s -> Z3 s Bool
forall a' a b' b s.
(Coercible a' a, Coercible b' b) =>
(Context -> a' -> IO b') -> a -> Z3 s b
liftF1 Context -> AST -> IO Bool
Base.isQuantifierExists
getQuantifierWeight :: AST s -> Z3 s Int
getQuantifierWeight :: AST s -> Z3 s Int
getQuantifierWeight = (Context -> AST -> IO Int) -> AST s -> Z3 s Int
forall a' a b' b s.
(Coercible a' a, Coercible b' b) =>
(Context -> a' -> IO b') -> a -> Z3 s b
liftF1 Context -> AST -> IO Int
Base.getQuantifierWeight
getQuantifierNumPatterns :: AST s -> Z3 s Int
getQuantifierNumPatterns :: AST s -> Z3 s Int
getQuantifierNumPatterns = (Context -> AST -> IO Int) -> AST s -> Z3 s Int
forall a' a b' b s.
(Coercible a' a, Coercible b' b) =>
(Context -> a' -> IO b') -> a -> Z3 s b
liftF1 Context -> AST -> IO Int
Base.getQuantifierNumPatterns
getQuantifierPatternAST :: AST s -> Int -> Z3 s (AST s)
getQuantifierPatternAST :: AST s -> Int -> Z3 s (AST s)
getQuantifierPatternAST = (Context -> AST -> Int -> IO AST) -> AST s -> Int -> Z3 s (AST s)
forall a' a b' b c' c s.
(Coercible a' a, Coercible b' b, Coercible c' c) =>
(Context -> a' -> b' -> IO c') -> a -> b -> Z3 s c
liftF2 Context -> AST -> Int -> IO AST
Base.getQuantifierPatternAST
getQuantifierPatterns :: AST s -> Z3 s [AST s]
getQuantifierPatterns :: AST s -> Z3 s [AST s]
getQuantifierPatterns = (Context -> AST -> IO [AST]) -> AST s -> Z3 s [AST s]
forall a' a b' b s.
(Coercible a' a, Coercible b' b) =>
(Context -> a' -> IO b') -> a -> Z3 s b
liftF1 Context -> AST -> IO [AST]
Base.getQuantifierPatterns
getQuantifierNumNoPatterns :: AST s -> Z3 s Int
getQuantifierNumNoPatterns :: AST s -> Z3 s Int
getQuantifierNumNoPatterns = (Context -> AST -> IO Int) -> AST s -> Z3 s Int
forall a' a b' b s.
(Coercible a' a, Coercible b' b) =>
(Context -> a' -> IO b') -> a -> Z3 s b
liftF1 Context -> AST -> IO Int
Base.getQuantifierNumNoPatterns
getQuantifierNoPatternAST :: AST s -> Int -> Z3 s (AST s)
getQuantifierNoPatternAST :: AST s -> Int -> Z3 s (AST s)
getQuantifierNoPatternAST = (Context -> AST -> Int -> IO AST) -> AST s -> Int -> Z3 s (AST s)
forall a' a b' b c' c s.
(Coercible a' a, Coercible b' b, Coercible c' c) =>
(Context -> a' -> b' -> IO c') -> a -> b -> Z3 s c
liftF2 Context -> AST -> Int -> IO AST
Base.getQuantifierNoPatternAST
getQuantifierNoPatterns :: AST s -> Z3 s [AST s]
getQuantifierNoPatterns :: AST s -> Z3 s [AST s]
getQuantifierNoPatterns = (Context -> AST -> IO [AST]) -> AST s -> Z3 s [AST s]
forall a' a b' b s.
(Coercible a' a, Coercible b' b) =>
(Context -> a' -> IO b') -> a -> Z3 s b
liftF1 Context -> AST -> IO [AST]
Base.getQuantifierNoPatterns
getQuantifierNumBound :: AST s -> Z3 s Int
getQuantifierNumBound :: AST s -> Z3 s Int
getQuantifierNumBound = (Context -> AST -> IO Int) -> AST s -> Z3 s Int
forall a' a b' b s.
(Coercible a' a, Coercible b' b) =>
(Context -> a' -> IO b') -> a -> Z3 s b
liftF1 Context -> AST -> IO Int
Base.getQuantifierNumBound
getQuantifierBoundName :: AST s -> Int -> Z3 s (Symbol s)
getQuantifierBoundName :: AST s -> Int -> Z3 s (Symbol s)
getQuantifierBoundName = (Context -> AST -> Int -> IO Symbol)
-> AST s -> Int -> Z3 s (Symbol s)
forall a' a b' b c' c s.
(Coercible a' a, Coercible b' b, Coercible c' c) =>
(Context -> a' -> b' -> IO c') -> a -> b -> Z3 s c
liftF2 Context -> AST -> Int -> IO Symbol
Base.getQuantifierBoundName
getQuantifierBoundSort :: AST s -> Int -> Z3 s (Sort s)
getQuantifierBoundSort :: AST s -> Int -> Z3 s (Sort s)
getQuantifierBoundSort = (Context -> AST -> Int -> IO Sort) -> AST s -> Int -> Z3 s (Sort s)
forall a' a b' b c' c s.
(Coercible a' a, Coercible b' b, Coercible c' c) =>
(Context -> a' -> b' -> IO c') -> a -> b -> Z3 s c
liftF2 Context -> AST -> Int -> IO Sort
Base.getQuantifierBoundSort
getQuantifierBoundVars :: AST s -> Z3 s [AST s]
getQuantifierBoundVars :: AST s -> Z3 s [AST s]
getQuantifierBoundVars = (Context -> AST -> IO [AST]) -> AST s -> Z3 s [AST s]
forall a' a b' b s.
(Coercible a' a, Coercible b' b) =>
(Context -> a' -> IO b') -> a -> Z3 s b
liftF1 Context -> AST -> IO [AST]
Base.getQuantifierBoundVars
getQuantifierBody :: AST s -> Z3 s (AST s)
getQuantifierBody :: AST s -> Z3 s (AST s)
getQuantifierBody = (Context -> AST -> IO AST) -> AST s -> Z3 s (AST s)
forall a' a b' b s.
(Coercible a' a, Coercible b' b) =>
(Context -> a' -> IO b') -> a -> Z3 s b
liftF1 Context -> AST -> IO AST
Base.getQuantifierBody
simplify :: AST s -> Z3 s (AST s)
simplify :: AST s -> Z3 s (AST s)
simplify = (Context -> AST -> IO AST) -> AST s -> Z3 s (AST s)
forall a' a b' b s.
(Coercible a' a, Coercible b' b) =>
(Context -> a' -> IO b') -> a -> Z3 s b
liftF1 Context -> AST -> IO AST
Base.simplify
simplifyEx :: AST s -> Params s -> Z3 s (AST s)
simplifyEx :: AST s -> Params s -> Z3 s (AST s)
simplifyEx = (Context -> AST -> Params -> IO AST)
-> AST s -> Params s -> Z3 s (AST s)
forall a' a b' b c' c s.
(Coercible a' a, Coercible b' b, Coercible c' c) =>
(Context -> a' -> b' -> IO c') -> a -> b -> Z3 s c
liftF2 Context -> AST -> Params -> IO AST
Base.simplifyEx
getBool :: AST s -> Z3 s Bool
getBool :: AST s -> Z3 s Bool
getBool = (Context -> AST -> IO Bool) -> AST s -> Z3 s Bool
forall a' a b' b s.
(Coercible a' a, Coercible b' b) =>
(Context -> a' -> IO b') -> a -> Z3 s b
liftF1 Context -> AST -> IO Bool
Base.getBool
getInt :: AST s -> Z3 s Integer
getInt :: AST s -> Z3 s Integer
getInt = (Context -> AST -> IO Integer) -> AST s -> Z3 s Integer
forall a' a b' b s.
(Coercible a' a, Coercible b' b) =>
(Context -> a' -> IO b') -> a -> Z3 s b
liftF1 Context -> AST -> IO Integer
Base.getInt
getReal :: AST s -> Z3 s Rational
getReal :: AST s -> Z3 s Rational
getReal = (Context -> AST -> IO Rational) -> AST s -> Z3 s Rational
forall a' a b' b s.
(Coercible a' a, Coercible b' b) =>
(Context -> a' -> IO b') -> a -> Z3 s b
liftF1 Context -> AST -> IO Rational
Base.getReal
getBv :: AST s
-> Bool
-> Z3 s Integer
getBv :: AST s -> Bool -> Z3 s Integer
getBv = (Context -> AST -> Bool -> IO Integer)
-> AST s -> Bool -> Z3 s Integer
forall a' a b' b c' c s.
(Coercible a' a, Coercible b' b, Coercible c' c) =>
(Context -> a' -> b' -> IO c') -> a -> b -> Z3 s c
liftF2 Context -> AST -> Bool -> IO Integer
Base.getBv
substituteVars :: AST s -> [AST s] -> Z3 s (AST s)
substituteVars :: AST s -> [AST s] -> Z3 s (AST s)
substituteVars = (Context -> AST -> [AST] -> IO AST)
-> AST s -> [AST s] -> Z3 s (AST s)
forall a' a b' b c' c s.
(Coercible a' a, Coercible b' b, Coercible c' c) =>
(Context -> a' -> b' -> IO c') -> a -> b -> Z3 s c
liftF2 Context -> AST -> [AST] -> IO AST
Base.substituteVars
modelEval :: Model s -> AST s
-> Bool
-> Z3 s (Maybe (AST s))
modelEval :: Model s -> AST s -> Bool -> Z3 s (Maybe (AST s))
modelEval = (Context -> Model -> AST -> Bool -> IO (Maybe AST))
-> Model s -> AST s -> Bool -> Z3 s (Maybe (AST s))
forall a' a b' b c' c d' d s.
(Coercible a' a, Coercible b' b, Coercible c' c, Coercible d' d) =>
(Context -> a' -> b' -> c' -> IO d') -> a -> b -> c -> Z3 s d
liftF3 Context -> Model -> AST -> Bool -> IO (Maybe AST)
Base.modelEval
evalArray :: Model s -> AST s -> Z3 s (Maybe FuncModel)
evalArray :: Model s -> AST s -> Z3 s (Maybe FuncModel)
evalArray = (Context -> Model -> AST -> IO (Maybe FuncModel))
-> Model s -> AST s -> Z3 s (Maybe FuncModel)
forall a' a b' b c' c s.
(Coercible a' a, Coercible b' b, Coercible c' c) =>
(Context -> a' -> b' -> IO c') -> a -> b -> Z3 s c
liftF2 Context -> Model -> AST -> IO (Maybe FuncModel)
Base.evalArray
getConstInterp :: Model s -> FuncDecl s -> Z3 s (Maybe (AST s))
getConstInterp :: Model s -> FuncDecl s -> Z3 s (Maybe (AST s))
getConstInterp = (Context -> Model -> FuncDecl -> IO (Maybe AST))
-> Model s -> FuncDecl s -> Z3 s (Maybe (AST s))
forall a' a b' b c' c s.
(Coercible a' a, Coercible b' b, Coercible c' c) =>
(Context -> a' -> b' -> IO c') -> a -> b -> Z3 s c
liftF2 Context -> Model -> FuncDecl -> IO (Maybe AST)
Base.getConstInterp
getFuncInterp :: Model s -> FuncDecl s -> Z3 s (Maybe (FuncInterp s))
getFuncInterp :: Model s -> FuncDecl s -> Z3 s (Maybe (FuncInterp s))
getFuncInterp = (Context -> Model -> FuncDecl -> IO (Maybe FuncInterp))
-> Model s -> FuncDecl s -> Z3 s (Maybe (FuncInterp s))
forall a' a b' b c' c s.
(Coercible a' a, Coercible b' b, Coercible c' c) =>
(Context -> a' -> b' -> IO c') -> a -> b -> Z3 s c
liftF2 Context -> Model -> FuncDecl -> IO (Maybe FuncInterp)
Base.getFuncInterp
hasInterp :: Model s -> FuncDecl s -> Z3 s Bool
hasInterp :: Model s -> FuncDecl s -> Z3 s Bool
hasInterp = (Context -> Model -> FuncDecl -> IO Bool)
-> Model s -> FuncDecl s -> Z3 s Bool
forall a' a b' b c' c s.
(Coercible a' a, Coercible b' b, Coercible c' c) =>
(Context -> a' -> b' -> IO c') -> a -> b -> Z3 s c
liftF2 Context -> Model -> FuncDecl -> IO Bool
Base.hasInterp
numConsts :: Model s -> Z3 s Word
numConsts :: Model s -> Z3 s Word
numConsts = (Context -> Model -> IO Word) -> Model s -> Z3 s Word
forall a' a b' b s.
(Coercible a' a, Coercible b' b) =>
(Context -> a' -> IO b') -> a -> Z3 s b
liftF1 Context -> Model -> IO Word
Base.numConsts
numFuncs :: Model s -> Z3 s Word
numFuncs :: Model s -> Z3 s Word
numFuncs = (Context -> Model -> IO Word) -> Model s -> Z3 s Word
forall a' a b' b s.
(Coercible a' a, Coercible b' b) =>
(Context -> a' -> IO b') -> a -> Z3 s b
liftF1 Context -> Model -> IO Word
Base.numFuncs
getConstDecl :: Model s -> Word -> Z3 s (FuncDecl s)
getConstDecl :: Model s -> Word -> Z3 s (FuncDecl s)
getConstDecl = (Context -> Model -> Word -> IO FuncDecl)
-> Model s -> Word -> Z3 s (FuncDecl s)
forall a' a b' b c' c s.
(Coercible a' a, Coercible b' b, Coercible c' c) =>
(Context -> a' -> b' -> IO c') -> a -> b -> Z3 s c
liftF2 Context -> Model -> Word -> IO FuncDecl
Base.getConstDecl
getFuncDecl :: Model s -> Word -> Z3 s (FuncDecl s)
getFuncDecl :: Model s -> Word -> Z3 s (FuncDecl s)
getFuncDecl = (Context -> Model -> Word -> IO FuncDecl)
-> Model s -> Word -> Z3 s (FuncDecl s)
forall a' a b' b c' c s.
(Coercible a' a, Coercible b' b, Coercible c' c) =>
(Context -> a' -> b' -> IO c') -> a -> b -> Z3 s c
liftF2 Context -> Model -> Word -> IO FuncDecl
Base.getFuncDecl
getConsts :: Model s -> Z3 s [FuncDecl s]
getConsts :: Model s -> Z3 s [FuncDecl s]
getConsts = (Context -> Model -> IO [FuncDecl]) -> Model s -> Z3 s [FuncDecl s]
forall a' a b' b s.
(Coercible a' a, Coercible b' b) =>
(Context -> a' -> IO b') -> a -> Z3 s b
liftF1 Context -> Model -> IO [FuncDecl]
Base.getConsts
getFuncs :: Model s -> Z3 s [FuncDecl s]
getFuncs :: Model s -> Z3 s [FuncDecl s]
getFuncs = (Context -> Model -> IO [FuncDecl]) -> Model s -> Z3 s [FuncDecl s]
forall a' a b' b s.
(Coercible a' a, Coercible b' b) =>
(Context -> a' -> IO b') -> a -> Z3 s b
liftF1 Context -> Model -> IO [FuncDecl]
Base.getFuncs
isAsArray :: AST s -> Z3 s Bool
isAsArray :: AST s -> Z3 s Bool
isAsArray = (Context -> AST -> IO Bool) -> AST s -> Z3 s Bool
forall a' a b' b s.
(Coercible a' a, Coercible b' b) =>
(Context -> a' -> IO b') -> a -> Z3 s b
liftF1 Context -> AST -> IO Bool
Base.isAsArray
addFuncInterp :: Model s -> FuncDecl s -> AST s -> Z3 s (FuncInterp s)
addFuncInterp :: Model s -> FuncDecl s -> AST s -> Z3 s (FuncInterp s)
addFuncInterp = (Context -> Model -> FuncDecl -> AST -> IO FuncInterp)
-> Model s -> FuncDecl s -> AST s -> Z3 s (FuncInterp s)
forall a' a b' b c' c d' d s.
(Coercible a' a, Coercible b' b, Coercible c' c, Coercible d' d) =>
(Context -> a' -> b' -> c' -> IO d') -> a -> b -> c -> Z3 s d
liftF3 Context -> Model -> FuncDecl -> AST -> IO FuncInterp
Base.addFuncInterp
addConstInterp :: Model s -> FuncDecl s -> AST s -> Z3 s ()
addConstInterp :: Model s -> FuncDecl s -> AST s -> Z3 s ()
addConstInterp = (Context -> Model -> FuncDecl -> AST -> IO ())
-> Model s -> FuncDecl s -> AST s -> Z3 s ()
forall a' a b' b c' c d' d s.
(Coercible a' a, Coercible b' b, Coercible c' c, Coercible d' d) =>
(Context -> a' -> b' -> c' -> IO d') -> a -> b -> c -> Z3 s d
liftF3 Context -> Model -> FuncDecl -> AST -> IO ()
Base.addConstInterp
getAsArrayFuncDecl :: AST s -> Z3 s (FuncDecl s)
getAsArrayFuncDecl :: AST s -> Z3 s (FuncDecl s)
getAsArrayFuncDecl = (Context -> AST -> IO FuncDecl) -> AST s -> Z3 s (FuncDecl s)
forall a' a b' b s.
(Coercible a' a, Coercible b' b) =>
(Context -> a' -> IO b') -> a -> Z3 s b
liftF1 Context -> AST -> IO FuncDecl
Base.getAsArrayFuncDecl
funcInterpGetNumEntries :: FuncInterp s -> Z3 s Int
funcInterpGetNumEntries :: FuncInterp s -> Z3 s Int
funcInterpGetNumEntries = (Context -> FuncInterp -> IO Int) -> FuncInterp s -> Z3 s Int
forall a' a b' b s.
(Coercible a' a, Coercible b' b) =>
(Context -> a' -> IO b') -> a -> Z3 s b
liftF1 Context -> FuncInterp -> IO Int
Base.funcInterpGetNumEntries
funcInterpGetEntry :: FuncInterp s -> Int -> Z3 s (FuncEntry s)
funcInterpGetEntry :: FuncInterp s -> Int -> Z3 s (FuncEntry s)
funcInterpGetEntry = (Context -> FuncInterp -> Int -> IO FuncEntry)
-> FuncInterp s -> Int -> Z3 s (FuncEntry s)
forall a' a b' b c' c s.
(Coercible a' a, Coercible b' b, Coercible c' c) =>
(Context -> a' -> b' -> IO c') -> a -> b -> Z3 s c
liftF2 Context -> FuncInterp -> Int -> IO FuncEntry
Base.funcInterpGetEntry
funcInterpGetElse :: FuncInterp s -> Z3 s (AST s)
funcInterpGetElse :: FuncInterp s -> Z3 s (AST s)
funcInterpGetElse = (Context -> FuncInterp -> IO AST) -> FuncInterp s -> Z3 s (AST s)
forall a' a b' b s.
(Coercible a' a, Coercible b' b) =>
(Context -> a' -> IO b') -> a -> Z3 s b
liftF1 Context -> FuncInterp -> IO AST
Base.funcInterpGetElse
funcInterpGetArity :: FuncInterp s -> Z3 s Int
funcInterpGetArity :: FuncInterp s -> Z3 s Int
funcInterpGetArity = (Context -> FuncInterp -> IO Int) -> FuncInterp s -> Z3 s Int
forall a' a b' b s.
(Coercible a' a, Coercible b' b) =>
(Context -> a' -> IO b') -> a -> Z3 s b
liftF1 Context -> FuncInterp -> IO Int
Base.funcInterpGetArity
funcEntryGetValue :: FuncEntry s -> Z3 s (AST s)
funcEntryGetValue :: FuncEntry s -> Z3 s (AST s)
funcEntryGetValue = (Context -> FuncEntry -> IO AST) -> FuncEntry s -> Z3 s (AST s)
forall a' a b' b s.
(Coercible a' a, Coercible b' b) =>
(Context -> a' -> IO b') -> a -> Z3 s b
liftF1 Context -> FuncEntry -> IO AST
Base.funcEntryGetValue
funcEntryGetNumArgs :: FuncEntry s -> Z3 s Int
funcEntryGetNumArgs :: FuncEntry s -> Z3 s Int
funcEntryGetNumArgs = (Context -> FuncEntry -> IO Int) -> FuncEntry s -> Z3 s Int
forall a' a b' b s.
(Coercible a' a, Coercible b' b) =>
(Context -> a' -> IO b') -> a -> Z3 s b
liftF1 Context -> FuncEntry -> IO Int
Base.funcEntryGetNumArgs
funcEntryGetArg :: FuncEntry s -> Int -> Z3 s (AST s)
funcEntryGetArg :: FuncEntry s -> Int -> Z3 s (AST s)
funcEntryGetArg = (Context -> FuncEntry -> Int -> IO AST)
-> FuncEntry s -> Int -> Z3 s (AST s)
forall a' a b' b c' c s.
(Coercible a' a, Coercible b' b, Coercible c' c) =>
(Context -> a' -> b' -> IO c') -> a -> b -> Z3 s c
liftF2 Context -> FuncEntry -> Int -> IO AST
Base.funcEntryGetArg
modelToString :: Model s -> Z3 s String
modelToString :: Model s -> Z3 s String
modelToString = (Context -> Model -> IO String) -> Model s -> Z3 s String
forall a' a b' b s.
(Coercible a' a, Coercible b' b) =>
(Context -> a' -> IO b') -> a -> Z3 s b
liftF1 Context -> Model -> IO String
Base.modelToString
showModel :: Model s -> Z3 s String
showModel :: Model s -> Z3 s String
showModel = Model s -> Z3 s String
forall s. Model s -> Z3 s String
modelToString
type EvalAst s a = Model s -> AST s -> Z3 s (Maybe a)
eval :: EvalAst s (AST s)
eval :: EvalAst s (AST s)
eval = (Context -> Model -> AST -> IO (Maybe AST)) -> EvalAst s (AST s)
forall a' a b' b c' c s.
(Coercible a' a, Coercible b' b, Coercible c' c) =>
(Context -> a' -> b' -> IO c') -> a -> b -> Z3 s c
liftF2 Context -> Model -> AST -> IO (Maybe AST)
Base.eval
evalBool :: EvalAst s Bool
evalBool :: EvalAst s Bool
evalBool = (Context -> Model -> AST -> IO (Maybe Bool)) -> EvalAst s Bool
forall a' a b' b c' c s.
(Coercible a' a, Coercible b' b, Coercible c' c) =>
(Context -> a' -> b' -> IO c') -> a -> b -> Z3 s c
liftF2 Context -> Model -> AST -> IO (Maybe Bool)
Base.evalBool
evalInt :: EvalAst s Integer
evalInt :: EvalAst s Integer
evalInt = (Context -> Model -> AST -> IO (Maybe Integer))
-> EvalAst s Integer
forall a' a b' b c' c s.
(Coercible a' a, Coercible b' b, Coercible c' c) =>
(Context -> a' -> b' -> IO c') -> a -> b -> Z3 s c
liftF2 Context -> Model -> AST -> IO (Maybe Integer)
Base.evalInt
evalReal :: EvalAst s Rational
evalReal :: EvalAst s Rational
evalReal = (Context -> Model -> AST -> IO (Maybe Rational))
-> EvalAst s Rational
forall a' a b' b c' c s.
(Coercible a' a, Coercible b' b, Coercible c' c) =>
(Context -> a' -> b' -> IO c') -> a -> b -> Z3 s c
liftF2 Context -> Model -> AST -> IO (Maybe Rational)
Base.evalReal
evalBv :: Bool
-> EvalAst s Integer
evalBv :: Bool -> EvalAst s Integer
evalBv = (Context -> Bool -> Model -> AST -> IO (Maybe Integer))
-> Bool -> EvalAst s Integer
forall a' a b' b c' c d' d s.
(Coercible a' a, Coercible b' b, Coercible c' c, Coercible d' d) =>
(Context -> a' -> b' -> c' -> IO d') -> a -> b -> c -> Z3 s d
liftF3 Context -> Bool -> Model -> AST -> IO (Maybe Integer)
Base.evalBv
evalT :: ∀ t s . (Traversable t) => Model s -> t (AST s) -> Z3 s (Maybe (t (AST s)))
evalT :: Model s -> t (AST s) -> Z3 s (Maybe (t (AST s)))
evalT model :: Model s
model asts :: t (AST s)
asts = ((Maybe (t AST) -> Maybe (t (AST s)))
-> ReaderT (Z3Env s) (ST s) (Maybe (t AST))
-> Z3 s (Maybe (t (AST s)))
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap ((Maybe (t AST) -> Maybe (t (AST s)))
-> ReaderT (Z3Env s) (ST s) (Maybe (t AST))
-> Z3 s (Maybe (t (AST s))))
-> ((AST -> AST s) -> Maybe (t AST) -> Maybe (t (AST s)))
-> (AST -> AST s)
-> ReaderT (Z3Env s) (ST s) (Maybe (t AST))
-> Z3 s (Maybe (t (AST s)))
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (t AST -> t (AST s)) -> Maybe (t AST) -> Maybe (t (AST s))
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap ((t AST -> t (AST s)) -> Maybe (t AST) -> Maybe (t (AST s)))
-> ((AST -> AST s) -> t AST -> t (AST s))
-> (AST -> AST s)
-> Maybe (t AST)
-> Maybe (t (AST s))
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (AST -> AST s) -> t AST -> t (AST s)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap) AST -> AST s
forall a b. Coercible a b => a -> b
coerce (ReaderT (Z3Env s) (ST s) (Maybe (t AST))
-> Z3 s (Maybe (t (AST s))))
-> ((Z3Env s -> ST s (Maybe (t AST)))
-> ReaderT (Z3Env s) (ST s) (Maybe (t AST)))
-> (Z3Env s -> ST s (Maybe (t AST)))
-> Z3 s (Maybe (t (AST s)))
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (Z3Env s -> ST s (Maybe (t AST)))
-> ReaderT (Z3Env s) (ST s) (Maybe (t AST))
forall r (m :: * -> *) a. (r -> m a) -> ReaderT r m a
ReaderT ((Z3Env s -> ST s (Maybe (t AST))) -> Z3 s (Maybe (t (AST s))))
-> (Z3Env s -> ST s (Maybe (t AST))) -> Z3 s (Maybe (t (AST s)))
forall a b. (a -> b) -> a -> b
$ \ (Z3Env {..}) -> IO (Maybe (t AST)) -> ST s (Maybe (t AST))
forall a s. IO a -> ST s a
unsafeIOToST (IO (Maybe (t AST)) -> ST s (Maybe (t AST)))
-> IO (Maybe (t AST)) -> ST s (Maybe (t AST))
forall a b. (a -> b) -> a -> b
$ Context -> Model -> t AST -> IO (Maybe (t AST))
forall (t :: * -> *).
Traversable t =>
Context -> Model -> t AST -> IO (Maybe (t AST))
Base.evalT (Context s -> Context
forall a b. Coercible a b => a -> b
coerce Context s
context) (Model s -> Model
forall a b. Coercible a b => a -> b
coerce Model s
model) (AST s -> AST
forall a b. Coercible a b => a -> b
coerce (AST s -> AST) -> t (AST s) -> t AST
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> t (AST s)
asts)
mapEval :: (Traversable t) => EvalAst s a
-> Model s
-> t (AST s)
-> Z3 s (Maybe (t a))
mapEval :: EvalAst s a -> Model s -> t (AST s) -> Z3 s (Maybe (t a))
mapEval f :: EvalAst s a
f m :: Model s
m = (t (Maybe a) -> Maybe (t a))
-> ReaderT (Z3Env s) (ST s) (t (Maybe a)) -> Z3 s (Maybe (t a))
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap t (Maybe a) -> Maybe (t a)
forall (t :: * -> *) (m :: * -> *) a.
(Traversable t, Monad m) =>
t (m a) -> m (t a)
T.sequence (ReaderT (Z3Env s) (ST s) (t (Maybe a)) -> Z3 s (Maybe (t a)))
-> (t (AST s) -> ReaderT (Z3Env s) (ST s) (t (Maybe a)))
-> t (AST s)
-> Z3 s (Maybe (t a))
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (AST s -> ReaderT (Z3Env s) (ST s) (Maybe a))
-> t (AST s) -> ReaderT (Z3Env s) (ST s) (t (Maybe a))
forall (t :: * -> *) (m :: * -> *) a b.
(Traversable t, Monad m) =>
(a -> m b) -> t a -> m (t b)
T.mapM (EvalAst s a
f Model s
m)
evalFunc :: Model s -> FuncDecl s -> Z3 s (Maybe FuncModel)
evalFunc :: Model s -> FuncDecl s -> Z3 s (Maybe FuncModel)
evalFunc = (Context -> Model -> FuncDecl -> IO (Maybe FuncModel))
-> Model s -> FuncDecl s -> Z3 s (Maybe FuncModel)
forall a' a b' b c' c s.
(Coercible a' a, Coercible b' b, Coercible c' c) =>
(Context -> a' -> b' -> IO c') -> a -> b -> Z3 s c
liftF2 Context -> Model -> FuncDecl -> IO (Maybe FuncModel)
Base.evalFunc
mkTactic :: String -> Z3 s (Tactic s)
mkTactic :: String -> Z3 s (Tactic s)
mkTactic = (Context -> String -> IO Tactic) -> String -> Z3 s (Tactic s)
forall a' a b' b s.
(Coercible a' a, Coercible b' b) =>
(Context -> a' -> IO b') -> a -> Z3 s b
liftF1 Context -> String -> IO Tactic
Base.mkTactic
andThenTactic ::Tactic s ->Tactic s -> Z3 s (Tactic s)
andThenTactic :: Tactic s -> Tactic s -> Z3 s (Tactic s)
andThenTactic = (Context -> Tactic -> Tactic -> IO Tactic)
-> Tactic s -> Tactic s -> Z3 s (Tactic s)
forall a' a b' b c' c s.
(Coercible a' a, Coercible b' b, Coercible c' c) =>
(Context -> a' -> b' -> IO c') -> a -> b -> Z3 s c
liftF2 Context -> Tactic -> Tactic -> IO Tactic
Base.andThenTactic
orElseTactic ::Tactic s ->Tactic s -> Z3 s (Tactic s)
orElseTactic :: Tactic s -> Tactic s -> Z3 s (Tactic s)
orElseTactic = (Context -> Tactic -> Tactic -> IO Tactic)
-> Tactic s -> Tactic s -> Z3 s (Tactic s)
forall a' a b' b c' c s.
(Coercible a' a, Coercible b' b, Coercible c' c) =>
(Context -> a' -> b' -> IO c') -> a -> b -> Z3 s c
liftF2 Context -> Tactic -> Tactic -> IO Tactic
Base.andThenTactic
skipTactic :: Z3 s (Tactic s)
skipTactic :: Z3 s (Tactic s)
skipTactic = (Context -> IO Tactic) -> Z3 s (Tactic s)
forall a' a s. Coercible a' a => (Context -> IO a') -> Z3 s a
liftF0 Context -> IO Tactic
Base.skipTactic
tryForTactic ::Tactic s -> Int -> Z3 s (Tactic s)
tryForTactic :: Tactic s -> Int -> Z3 s (Tactic s)
tryForTactic = (Context -> Tactic -> Int -> IO Tactic)
-> Tactic s -> Int -> Z3 s (Tactic s)
forall a' a b' b c' c s.
(Coercible a' a, Coercible b' b, Coercible c' c) =>
(Context -> a' -> b' -> IO c') -> a -> b -> Z3 s c
liftF2 Context -> Tactic -> Int -> IO Tactic
Base.tryForTactic
mkQuantifierEliminationTactic :: Z3 s (Tactic s)
mkQuantifierEliminationTactic :: Z3 s (Tactic s)
mkQuantifierEliminationTactic = (Context -> IO Tactic) -> Z3 s (Tactic s)
forall a' a s. Coercible a' a => (Context -> IO a') -> Z3 s a
liftF0 Context -> IO Tactic
Base.mkQuantifierEliminationTactic
mkAndInverterGraphTactic :: Z3 s (Tactic s)
mkAndInverterGraphTactic :: Z3 s (Tactic s)
mkAndInverterGraphTactic = (Context -> IO Tactic) -> Z3 s (Tactic s)
forall a' a s. Coercible a' a => (Context -> IO a') -> Z3 s a
liftF0 Context -> IO Tactic
Base.mkAndInverterGraphTactic
applyTactic ::Tactic s ->Goal s -> Z3 s( ApplyResult s)
applyTactic :: Tactic s -> Goal s -> Z3 s (ApplyResult s)
applyTactic = (Context -> Tactic -> Goal -> IO ApplyResult)
-> Tactic s -> Goal s -> Z3 s (ApplyResult s)
forall a' a b' b c' c s.
(Coercible a' a, Coercible b' b, Coercible c' c) =>
(Context -> a' -> b' -> IO c') -> a -> b -> Z3 s c
liftF2 Context -> Tactic -> Goal -> IO ApplyResult
Base.applyTactic
getApplyResultNumSubgoals ::ApplyResult s -> Z3 s Int
getApplyResultNumSubgoals :: ApplyResult s -> Z3 s Int
getApplyResultNumSubgoals = (Context -> ApplyResult -> IO Int) -> ApplyResult s -> Z3 s Int
forall a' a b' b s.
(Coercible a' a, Coercible b' b) =>
(Context -> a' -> IO b') -> a -> Z3 s b
liftF1 Context -> ApplyResult -> IO Int
Base.getApplyResultNumSubgoals
getApplyResultSubgoal ::ApplyResult s -> Int -> Z3 s (Goal s)
getApplyResultSubgoal :: ApplyResult s -> Int -> Z3 s (Goal s)
getApplyResultSubgoal = (Context -> ApplyResult -> Int -> IO Goal)
-> ApplyResult s -> Int -> Z3 s (Goal s)
forall a' a b' b c' c s.
(Coercible a' a, Coercible b' b, Coercible c' c) =>
(Context -> a' -> b' -> IO c') -> a -> b -> Z3 s c
liftF2 Context -> ApplyResult -> Int -> IO Goal
Base.getApplyResultSubgoal
getApplyResultSubgoals ::ApplyResult s -> Z3 s [Goal s]
getApplyResultSubgoals :: ApplyResult s -> Z3 s [Goal s]
getApplyResultSubgoals = (Context -> ApplyResult -> IO [Goal])
-> ApplyResult s -> Z3 s [Goal s]
forall a' a b' b s.
(Coercible a' a, Coercible b' b) =>
(Context -> a' -> IO b') -> a -> Z3 s b
liftF1 Context -> ApplyResult -> IO [Goal]
Base.getApplyResultSubgoals
mkGoal :: Bool -> Bool -> Bool -> Z3 s( Goal s)
mkGoal :: Bool -> Bool -> Bool -> Z3 s (Goal s)
mkGoal = (Context -> Bool -> Bool -> Bool -> IO Goal)
-> Bool -> Bool -> Bool -> Z3 s (Goal s)
forall a' a b' b c' c d' d s.
(Coercible a' a, Coercible b' b, Coercible c' c, Coercible d' d) =>
(Context -> a' -> b' -> c' -> IO d') -> a -> b -> c -> Z3 s d
liftF3 Context -> Bool -> Bool -> Bool -> IO Goal
Base.mkGoal
goalAssert ::Goal s -> AST s -> Z3 s ()
goalAssert :: Goal s -> AST s -> Z3 s ()
goalAssert = (Context -> Goal -> AST -> IO ()) -> Goal s -> AST s -> Z3 s ()
forall a' a b' b c' c s.
(Coercible a' a, Coercible b' b, Coercible c' c) =>
(Context -> a' -> b' -> IO c') -> a -> b -> Z3 s c
liftF2 Context -> Goal -> AST -> IO ()
Base.goalAssert
getGoalSize ::Goal s -> Z3 s Int
getGoalSize :: Goal s -> Z3 s Int
getGoalSize = (Context -> Goal -> IO Int) -> Goal s -> Z3 s Int
forall a' a b' b s.
(Coercible a' a, Coercible b' b) =>
(Context -> a' -> IO b') -> a -> Z3 s b
liftF1 Context -> Goal -> IO Int
Base.getGoalSize
getGoalFormula ::Goal s -> Int -> Z3 s (AST s)
getGoalFormula :: Goal s -> Int -> Z3 s (AST s)
getGoalFormula = (Context -> Goal -> Int -> IO AST) -> Goal s -> Int -> Z3 s (AST s)
forall a' a b' b c' c s.
(Coercible a' a, Coercible b' b, Coercible c' c) =>
(Context -> a' -> b' -> IO c') -> a -> b -> Z3 s c
liftF2 Context -> Goal -> Int -> IO AST
Base.getGoalFormula
getGoalFormulas ::Goal s -> Z3 s [AST s]
getGoalFormulas :: Goal s -> Z3 s [AST s]
getGoalFormulas = (Context -> Goal -> IO [AST]) -> Goal s -> Z3 s [AST s]
forall a' a b' b s.
(Coercible a' a, Coercible b' b) =>
(Context -> a' -> IO b') -> a -> Z3 s b
liftF1 Context -> Goal -> IO [AST]
Base.getGoalFormulas
setASTPrintMode :: ASTPrintMode -> Z3 s ()
setASTPrintMode :: ASTPrintMode -> Z3 s ()
setASTPrintMode = (Context -> ASTPrintMode -> IO ()) -> ASTPrintMode -> Z3 s ()
forall a' a b' b s.
(Coercible a' a, Coercible b' b) =>
(Context -> a' -> IO b') -> a -> Z3 s b
liftF1 Context -> ASTPrintMode -> IO ()
Base.setASTPrintMode
astToString :: AST s -> Z3 s String
astToString :: AST s -> Z3 s String
astToString = (Context -> AST -> IO String) -> AST s -> Z3 s String
forall a' a b' b s.
(Coercible a' a, Coercible b' b) =>
(Context -> a' -> IO b') -> a -> Z3 s b
liftF1 Context -> AST -> IO String
Base.astToString
patternToString :: Pattern s -> Z3 s String
patternToString :: Pattern s -> Z3 s String
patternToString = (Context -> Pattern -> IO String) -> Pattern s -> Z3 s String
forall a' a b' b s.
(Coercible a' a, Coercible b' b) =>
(Context -> a' -> IO b') -> a -> Z3 s b
liftF1 Context -> Pattern -> IO String
Base.patternToString
sortToString :: Sort s -> Z3 s String
sortToString :: Sort s -> Z3 s String
sortToString = (Context -> Sort -> IO String) -> Sort s -> Z3 s String
forall a' a b' b s.
(Coercible a' a, Coercible b' b) =>
(Context -> a' -> IO b') -> a -> Z3 s b
liftF1 Context -> Sort -> IO String
Base.sortToString
funcDeclToString :: FuncDecl s -> Z3 s String
funcDeclToString :: FuncDecl s -> Z3 s String
funcDeclToString = (Context -> FuncDecl -> IO String) -> FuncDecl s -> Z3 s String
forall a' a b' b s.
(Coercible a' a, Coercible b' b) =>
(Context -> a' -> IO b') -> a -> Z3 s b
liftF1 Context -> FuncDecl -> IO String
Base.funcDeclToString
benchmarkToSMTLibString ::
String
-> String
-> String
-> String
-> [AST s]
-> AST s
-> Z3 s String
benchmarkToSMTLibString :: String
-> String -> String -> String -> [AST s] -> AST s -> Z3 s String
benchmarkToSMTLibString = (Context
-> String
-> String
-> String
-> String
-> [AST]
-> AST
-> IO String)
-> String
-> String
-> String
-> String
-> [AST s]
-> AST s
-> Z3 s String
forall a' a b' b c' c d' d e' e f' f g' g s.
(Coercible a' a, Coercible b' b, Coercible c' c, Coercible d' d,
Coercible e' e, Coercible f' f, Coercible g' g) =>
(Context -> a' -> b' -> c' -> d' -> e' -> f' -> IO g')
-> a -> b -> c -> d -> e -> f -> Z3 s g
liftF6 Context
-> String
-> String
-> String
-> String
-> [AST]
-> AST
-> IO String
Base.benchmarkToSMTLibString
parseSMTLib2String ::
String
-> [Symbol s]
-> [Sort s]
-> [Symbol s]
-> [FuncDecl s]
-> Z3 s (AST s)
parseSMTLib2String :: String
-> [Symbol s]
-> [Sort s]
-> [Symbol s]
-> [FuncDecl s]
-> Z3 s (AST s)
parseSMTLib2String = (Context
-> String
-> [Symbol]
-> [Sort]
-> [Symbol]
-> [FuncDecl]
-> IO AST)
-> String
-> [Symbol s]
-> [Sort s]
-> [Symbol s]
-> [FuncDecl s]
-> Z3 s (AST s)
forall a' a b' b c' c d' d e' e f' f s.
(Coercible a' a, Coercible b' b, Coercible c' c, Coercible d' d,
Coercible e' e, Coercible f' f) =>
(Context -> a' -> b' -> c' -> d' -> e' -> IO f')
-> a -> b -> c -> d -> e -> Z3 s f
liftF5 Context
-> String -> [Symbol] -> [Sort] -> [Symbol] -> [FuncDecl] -> IO AST
Base.parseSMTLib2String
parseSMTLib2File ::
String
-> [Symbol s]
-> [Sort s]
-> [Symbol s]
-> [FuncDecl s]
-> Z3 s (AST s)
parseSMTLib2File :: String
-> [Symbol s]
-> [Sort s]
-> [Symbol s]
-> [FuncDecl s]
-> Z3 s (AST s)
parseSMTLib2File = (Context
-> String
-> [Symbol]
-> [Sort]
-> [Symbol]
-> [FuncDecl]
-> IO AST)
-> String
-> [Symbol s]
-> [Sort s]
-> [Symbol s]
-> [FuncDecl s]
-> Z3 s (AST s)
forall a' a b' b c' c d' d e' e f' f s.
(Coercible a' a, Coercible b' b, Coercible c' c, Coercible d' d,
Coercible e' e, Coercible f' f) =>
(Context -> a' -> b' -> c' -> d' -> e' -> IO f')
-> a -> b -> c -> d -> e -> Z3 s f
liftF5 Context
-> String -> [Symbol] -> [Sort] -> [Symbol] -> [FuncDecl] -> IO AST
Base.parseSMTLib2File
getVersion :: Z3 s Version
getVersion :: Z3 s Version
getVersion = ST s Version -> Z3 s Version
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (ST s Version -> Z3 s Version)
-> (IO Version -> ST s Version) -> IO Version -> Z3 s Version
forall b c a. (b -> c) -> (a -> b) -> a -> c
. IO Version -> ST s Version
forall a s. IO a -> ST s a
unsafeIOToST (IO Version -> Z3 s Version) -> IO Version -> Z3 s Version
forall a b. (a -> b) -> a -> b
$ IO Version
Base.getVersion
fixedpointPush :: Z3 s ()
fixedpointPush :: Z3 s ()
fixedpointPush = (Context -> Fixedpoint -> IO ()) -> Z3 s ()
forall a' a s.
Coercible a' a =>
(Context -> Fixedpoint -> IO a') -> Z3 s a
liftFixedpoint0 Context -> Fixedpoint -> IO ()
Base.fixedpointPush
fixedpointPop :: Z3 s ()
fixedpointPop :: Z3 s ()
fixedpointPop = (Context -> Fixedpoint -> IO ()) -> Z3 s ()
forall a' a s.
Coercible a' a =>
(Context -> Fixedpoint -> IO a') -> Z3 s a
liftFixedpoint0 Context -> Fixedpoint -> IO ()
Base.fixedpointPush
fixedpointAddRule :: AST s -> Symbol s -> Z3 s ()
fixedpointAddRule :: AST s -> Symbol s -> Z3 s ()
fixedpointAddRule = (Context -> Fixedpoint -> AST -> Symbol -> IO ())
-> AST s -> Symbol s -> Z3 s ()
forall a' a b' b c' c s.
(Coercible a' a, Coercible b' b, Coercible c' c) =>
(Context -> Fixedpoint -> a' -> b' -> IO c') -> a -> b -> Z3 s c
liftFixedpoint2 Context -> Fixedpoint -> AST -> Symbol -> IO ()
Base.fixedpointAddRule
fixedpointSetParams :: Params s -> Z3 s ()
fixedpointSetParams :: Params s -> Z3 s ()
fixedpointSetParams = (Context -> Fixedpoint -> Params -> IO ()) -> Params s -> Z3 s ()
forall a' a b' b s.
(Coercible a' a, Coercible b' b) =>
(Context -> Fixedpoint -> a' -> IO b') -> a -> Z3 s b
liftFixedpoint1 Context -> Fixedpoint -> Params -> IO ()
Base.fixedpointSetParams
fixedpointRegisterRelation :: FuncDecl s -> Z3 s ()
fixedpointRegisterRelation :: FuncDecl s -> Z3 s ()
fixedpointRegisterRelation = (Context -> Fixedpoint -> FuncDecl -> IO ())
-> FuncDecl s -> Z3 s ()
forall a' a b' b s.
(Coercible a' a, Coercible b' b) =>
(Context -> Fixedpoint -> a' -> IO b') -> a -> Z3 s b
liftFixedpoint1 Context -> Fixedpoint -> FuncDecl -> IO ()
Base.fixedpointRegisterRelation
fixedpointQueryRelations :: [FuncDecl s] -> Z3 s Result
fixedpointQueryRelations :: [FuncDecl s] -> Z3 s Result
fixedpointQueryRelations = (Context -> Fixedpoint -> [FuncDecl] -> IO Result)
-> [FuncDecl s] -> Z3 s Result
forall a' a b' b s.
(Coercible a' a, Coercible b' b) =>
(Context -> Fixedpoint -> a' -> IO b') -> a -> Z3 s b
liftFixedpoint1 Context -> Fixedpoint -> [FuncDecl] -> IO Result
Base.fixedpointQueryRelations
fixedpointGetAnswer :: Z3 s (AST s)
fixedpointGetAnswer :: Z3 s (AST s)
fixedpointGetAnswer = (Context -> Fixedpoint -> IO AST) -> Z3 s (AST s)
forall a' a s.
Coercible a' a =>
(Context -> Fixedpoint -> IO a') -> Z3 s a
liftFixedpoint0 Context -> Fixedpoint -> IO AST
Base.fixedpointGetAnswer
fixedpointGetAssertions :: Z3 s [AST s]
fixedpointGetAssertions :: Z3 s [AST s]
fixedpointGetAssertions = (Context -> Fixedpoint -> IO [AST]) -> Z3 s [AST s]
forall a' a s.
Coercible a' a =>
(Context -> Fixedpoint -> IO a') -> Z3 s a
liftFixedpoint0 Context -> Fixedpoint -> IO [AST]
Base.fixedpointGetAssertions
solverGetHelp :: Z3 s String
solverGetHelp :: Z3 s String
solverGetHelp = (Context -> Solver -> IO String) -> Z3 s String
forall a' a s.
Coercible a' a =>
(Context -> Solver -> IO a') -> Z3 s a
liftSolver0 Context -> Solver -> IO String
Base.solverGetHelp
solverSetParams :: Params s -> Z3 s ()
solverSetParams :: Params s -> Z3 s ()
solverSetParams = (Context -> Solver -> Params -> IO ()) -> Params s -> Z3 s ()
forall a' a b' b s.
(Coercible a' a, Coercible b' b) =>
(Context -> Solver -> a' -> IO b') -> a -> Z3 s b
liftSolver1 Context -> Solver -> Params -> IO ()
Base.solverSetParams
solverPush :: Z3 s ()
solverPush :: Z3 s ()
solverPush = (Context -> Solver -> IO ()) -> Z3 s ()
forall a' a s.
Coercible a' a =>
(Context -> Solver -> IO a') -> Z3 s a
liftSolver0 Context -> Solver -> IO ()
Base.solverPush
solverPop :: Int -> Z3 s ()
solverPop :: Int -> Z3 s ()
solverPop = (Context -> Solver -> Int -> IO ()) -> Int -> Z3 s ()
forall a' a b' b s.
(Coercible a' a, Coercible b' b) =>
(Context -> Solver -> a' -> IO b') -> a -> Z3 s b
liftSolver1 Context -> Solver -> Int -> IO ()
Base.solverPop
solverReset :: Z3 s ()
solverReset :: Z3 s ()
solverReset = (Context -> Solver -> IO ()) -> Z3 s ()
forall a' a s.
Coercible a' a =>
(Context -> Solver -> IO a') -> Z3 s a
liftSolver0 Context -> Solver -> IO ()
Base.solverReset
solverGetNumScopes :: Z3 s Int
solverGetNumScopes :: Z3 s Int
solverGetNumScopes = (Context -> Solver -> IO Int) -> Z3 s Int
forall a' a s.
Coercible a' a =>
(Context -> Solver -> IO a') -> Z3 s a
liftSolver0 Context -> Solver -> IO Int
Base.solverGetNumScopes
solverAssertCnstr :: AST s -> Z3 s ()
solverAssertCnstr :: AST s -> Z3 s ()
solverAssertCnstr = (Context -> Solver -> AST -> IO ()) -> AST s -> Z3 s ()
forall a' a b' b s.
(Coercible a' a, Coercible b' b) =>
(Context -> Solver -> a' -> IO b') -> a -> Z3 s b
liftSolver1 Context -> Solver -> AST -> IO ()
Base.solverAssertCnstr
solverAssertAndTrack :: AST s -> AST s -> Z3 s ()
solverAssertAndTrack :: AST s -> AST s -> Z3 s ()
solverAssertAndTrack = (Context -> Solver -> AST -> AST -> IO ())
-> AST s -> AST s -> Z3 s ()
forall a' a b' b c' c s.
(Coercible a' a, Coercible b' b, Coercible c' c) =>
(Context -> Solver -> a' -> b' -> IO c') -> a -> b -> Z3 s c
liftSolver2 Context -> Solver -> AST -> AST -> IO ()
Base.solverAssertAndTrack
solverCheck :: Z3 s Result
solverCheck :: Z3 s Result
solverCheck = (Context -> Solver -> IO Result) -> Z3 s Result
forall a' a s.
Coercible a' a =>
(Context -> Solver -> IO a') -> Z3 s a
liftSolver0 Context -> Solver -> IO Result
Base.solverCheck
solverCheckAssumptions :: [AST s] -> Z3 s Result
solverCheckAssumptions :: [AST s] -> Z3 s Result
solverCheckAssumptions = (Context -> Solver -> [AST] -> IO Result) -> [AST s] -> Z3 s Result
forall a' a b' b s.
(Coercible a' a, Coercible b' b) =>
(Context -> Solver -> a' -> IO b') -> a -> Z3 s b
liftSolver1 Context -> Solver -> [AST] -> IO Result
Base.solverCheckAssumptions
solverGetModel :: Z3 s (Model s)
solverGetModel :: Z3 s (Model s)
solverGetModel = (Context -> Solver -> IO Model) -> Z3 s (Model s)
forall a' a s.
Coercible a' a =>
(Context -> Solver -> IO a') -> Z3 s a
liftSolver0 Context -> Solver -> IO Model
Base.solverGetModel
solverGetUnsatCore :: Z3 s [AST s]
solverGetUnsatCore :: Z3 s [AST s]
solverGetUnsatCore = (Context -> Solver -> IO [AST]) -> Z3 s [AST s]
forall a' a s.
Coercible a' a =>
(Context -> Solver -> IO a') -> Z3 s a
liftSolver0 Context -> Solver -> IO [AST]
Base.solverGetUnsatCore
solverGetReasonUnknown :: Z3 s String
solverGetReasonUnknown :: Z3 s String
solverGetReasonUnknown = (Context -> Solver -> IO String) -> Z3 s String
forall a' a s.
Coercible a' a =>
(Context -> Solver -> IO a') -> Z3 s a
liftSolver0 Context -> Solver -> IO String
Base.solverGetReasonUnknown
solverToString :: Z3 s String
solverToString :: Z3 s String
solverToString = (Context -> Solver -> IO String) -> Z3 s String
forall a' a s.
Coercible a' a =>
(Context -> Solver -> IO a') -> Z3 s a
liftSolver0 Context -> Solver -> IO String
Base.solverToString
push :: Z3 s ()
push :: Z3 s ()
push = Z3 s ()
forall s. Z3 s ()
solverPush
pop :: Int -> Z3 s ()
pop :: Int -> Z3 s ()
pop n :: Int
n = do
Int
scopes <- Z3 s Int
forall s. Z3 s Int
solverGetNumScopes
if Int
n Int -> Int -> Bool
forall a. Ord a => a -> a -> Bool
<= Int
scopes
then Int -> Z3 s ()
forall s. Int -> Z3 s ()
solverPop Int
n
else String -> Z3 s ()
forall a. HasCallStack => String -> a
error "Z3.Monad.safePop: too many scopes to backtrack"
local :: Z3 s a -> Z3 s a
local :: Z3 s a -> Z3 s a
local q :: Z3 s a
q = Z3 s ()
forall s. Z3 s ()
push Z3 s () -> Z3 s a -> Z3 s a
forall (f :: * -> *) a b. Applicative f => f a -> f b -> f b
*> Z3 s a
q Z3 s a -> Z3 s () -> Z3 s a
forall (f :: * -> *) a b. Applicative f => f a -> f b -> f a
<* Int -> Z3 s ()
forall s. Int -> Z3 s ()
pop 1
reset :: Z3 s ()
reset :: Z3 s ()
reset = Z3 s ()
forall s. Z3 s ()
solverReset
getNumScopes :: Z3 s Int
getNumScopes :: Z3 s Int
getNumScopes = (Context -> Solver -> IO Int) -> Z3 s Int
forall a' a s.
Coercible a' a =>
(Context -> Solver -> IO a') -> Z3 s a
liftSolver0 Context -> Solver -> IO Int
Base.solverGetNumScopes
assert :: AST s -> Z3 s ()
assert :: AST s -> Z3 s ()
assert = AST s -> Z3 s ()
forall s. AST s -> Z3 s ()
solverAssertCnstr
check :: Z3 s Result
check :: Z3 s Result
check = Z3 s Result
forall s. Z3 s Result
solverCheck
checkAssumptions :: [AST s] -> Z3 s Result
checkAssumptions :: [AST s] -> Z3 s Result
checkAssumptions = [AST s] -> Z3 s Result
forall s. [AST s] -> Z3 s Result
solverCheckAssumptions
solverCheckAndGetModel :: Z3 s (Result, Maybe (Model s))
solverCheckAndGetModel :: Z3 s (Result, Maybe (Model s))
solverCheckAndGetModel = (Context -> Solver -> IO (Result, Maybe Model))
-> Z3 s (Result, Maybe (Model s))
forall a' a s.
Coercible a' a =>
(Context -> Solver -> IO a') -> Z3 s a
liftSolver0 Context -> Solver -> IO (Result, Maybe Model)
Base.solverCheckAndGetModel
solverCheckAssumptionsAndGetModel :: [AST s] -> Z3 s (Maybe (Either [AST s] (Model s)))
solverCheckAssumptionsAndGetModel :: [AST s] -> Z3 s (Maybe (Either [AST s] (Model s)))
solverCheckAssumptionsAndGetModel = [AST s] -> Z3 s Result
forall s. [AST s] -> Z3 s Result
checkAssumptions ([AST s] -> Z3 s Result)
-> (Result -> Z3 s (Maybe (Either [AST s] (Model s))))
-> [AST s]
-> Z3 s (Maybe (Either [AST s] (Model s)))
forall (m :: * -> *) a b c.
Monad m =>
(a -> m b) -> (b -> m c) -> a -> m c
>=> \ case
Undef -> Maybe (Either [AST s] (Model s))
-> Z3 s (Maybe (Either [AST s] (Model s)))
forall (f :: * -> *) a. Applicative f => a -> f a
pure Maybe (Either [AST s] (Model s))
forall a. Maybe a
Nothing
Unsat -> Either [AST s] (Model s) -> Maybe (Either [AST s] (Model s))
forall a. a -> Maybe a
Just (Either [AST s] (Model s) -> Maybe (Either [AST s] (Model s)))
-> ([AST s] -> Either [AST s] (Model s))
-> [AST s]
-> Maybe (Either [AST s] (Model s))
forall b c a. (b -> c) -> (a -> b) -> a -> c
. [AST s] -> Either [AST s] (Model s)
forall a b. a -> Either a b
Left ([AST s] -> Maybe (Either [AST s] (Model s)))
-> ReaderT (Z3Env s) (ST s) [AST s]
-> Z3 s (Maybe (Either [AST s] (Model s)))
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> ReaderT (Z3Env s) (ST s) [AST s]
forall s. Z3 s [AST s]
getUnsatCore
Sat -> Either [AST s] (Model s) -> Maybe (Either [AST s] (Model s))
forall a. a -> Maybe a
Just (Either [AST s] (Model s) -> Maybe (Either [AST s] (Model s)))
-> (Model s -> Either [AST s] (Model s))
-> Model s
-> Maybe (Either [AST s] (Model s))
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Model s -> Either [AST s] (Model s)
forall a b. b -> Either a b
Right (Model s -> Maybe (Either [AST s] (Model s)))
-> ReaderT (Z3Env s) (ST s) (Model s)
-> Z3 s (Maybe (Either [AST s] (Model s)))
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> ReaderT (Z3Env s) (ST s) (Model s)
forall s. Z3 s (Model s)
solverGetModel
getModel :: Z3 s (Result, Maybe (Model s))
getModel :: Z3 s (Result, Maybe (Model s))
getModel = Z3 s (Result, Maybe (Model s))
forall s. Z3 s (Result, Maybe (Model s))
solverCheckAndGetModel
withModel :: (Model s -> Z3 s a) -> Z3 s (Result, Maybe a)
withModel :: (Model s -> Z3 s a) -> Z3 s (Result, Maybe a)
withModel f :: Model s -> Z3 s a
f = do
(r :: Result
r,mb_m :: Maybe (Model s)
mb_m) <- Z3 s (Result, Maybe (Model s))
forall s. Z3 s (Result, Maybe (Model s))
getModel
Maybe a
mb_e <- (Model s -> Z3 s a)
-> Maybe (Model s) -> ReaderT (Z3Env s) (ST s) (Maybe a)
forall (t :: * -> *) (f :: * -> *) a b.
(Traversable t, Applicative f) =>
(a -> f b) -> t a -> f (t b)
T.traverse Model s -> Z3 s a
f Maybe (Model s)
mb_m
(Result, Maybe a) -> Z3 s (Result, Maybe a)
forall (m :: * -> *) a. Monad m => a -> m a
return (Result
r, Maybe a
mb_e)
getUnsatCore :: Z3 s [AST s]
getUnsatCore :: Z3 s [AST s]
getUnsatCore = Z3 s [AST s]
forall s. Z3 s [AST s]
solverGetUnsatCore
newtype Config s = Config { Config s -> Config
_unConfig :: Base.Config } deriving (Config s -> Config s -> Bool
(Config s -> Config s -> Bool)
-> (Config s -> Config s -> Bool) -> Eq (Config s)
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
forall k (s :: k). Config s -> Config s -> Bool
/= :: Config s -> Config s -> Bool
$c/= :: forall k (s :: k). Config s -> Config s -> Bool
== :: Config s -> Config s -> Bool
$c== :: forall k (s :: k). Config s -> Config s -> Bool
Eq)
newtype Context s = Context { Context s -> Context
_unContext :: Base.Context } deriving (Context s -> Context s -> Bool
(Context s -> Context s -> Bool)
-> (Context s -> Context s -> Bool) -> Eq (Context s)
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
forall k (s :: k). Context s -> Context s -> Bool
/= :: Context s -> Context s -> Bool
$c/= :: forall k (s :: k). Context s -> Context s -> Bool
== :: Context s -> Context s -> Bool
$c== :: forall k (s :: k). Context s -> Context s -> Bool
Eq)
newtype Symbol s = Symbol { Symbol s -> Symbol
_unSymbol :: Base.Symbol } deriving (Symbol s -> Symbol s -> Bool
(Symbol s -> Symbol s -> Bool)
-> (Symbol s -> Symbol s -> Bool) -> Eq (Symbol s)
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
forall k (s :: k). Symbol s -> Symbol s -> Bool
/= :: Symbol s -> Symbol s -> Bool
$c/= :: forall k (s :: k). Symbol s -> Symbol s -> Bool
== :: Symbol s -> Symbol s -> Bool
$c== :: forall k (s :: k). Symbol s -> Symbol s -> Bool
Eq, Eq (Symbol s)
Eq (Symbol s) =>
(Symbol s -> Symbol s -> Ordering)
-> (Symbol s -> Symbol s -> Bool)
-> (Symbol s -> Symbol s -> Bool)
-> (Symbol s -> Symbol s -> Bool)
-> (Symbol s -> Symbol s -> Bool)
-> (Symbol s -> Symbol s -> Symbol s)
-> (Symbol s -> Symbol s -> Symbol s)
-> Ord (Symbol s)
Symbol s -> Symbol s -> Bool
Symbol s -> Symbol s -> Ordering
Symbol s -> Symbol s -> Symbol s
forall a.
Eq a =>
(a -> a -> Ordering)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> a)
-> (a -> a -> a)
-> Ord a
forall k (s :: k). Eq (Symbol s)
forall k (s :: k). Symbol s -> Symbol s -> Bool
forall k (s :: k). Symbol s -> Symbol s -> Ordering
forall k (s :: k). Symbol s -> Symbol s -> Symbol s
min :: Symbol s -> Symbol s -> Symbol s
$cmin :: forall k (s :: k). Symbol s -> Symbol s -> Symbol s
max :: Symbol s -> Symbol s -> Symbol s
$cmax :: forall k (s :: k). Symbol s -> Symbol s -> Symbol s
>= :: Symbol s -> Symbol s -> Bool
$c>= :: forall k (s :: k). Symbol s -> Symbol s -> Bool
> :: Symbol s -> Symbol s -> Bool
$c> :: forall k (s :: k). Symbol s -> Symbol s -> Bool
<= :: Symbol s -> Symbol s -> Bool
$c<= :: forall k (s :: k). Symbol s -> Symbol s -> Bool
< :: Symbol s -> Symbol s -> Bool
$c< :: forall k (s :: k). Symbol s -> Symbol s -> Bool
compare :: Symbol s -> Symbol s -> Ordering
$ccompare :: forall k (s :: k). Symbol s -> Symbol s -> Ordering
$cp1Ord :: forall k (s :: k). Eq (Symbol s)
Ord, Int -> Symbol s -> ShowS
[Symbol s] -> ShowS
Symbol s -> String
(Int -> Symbol s -> ShowS)
-> (Symbol s -> String) -> ([Symbol s] -> ShowS) -> Show (Symbol s)
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
forall k (s :: k). Int -> Symbol s -> ShowS
forall k (s :: k). [Symbol s] -> ShowS
forall k (s :: k). Symbol s -> String
showList :: [Symbol s] -> ShowS
$cshowList :: forall k (s :: k). [Symbol s] -> ShowS
show :: Symbol s -> String
$cshow :: forall k (s :: k). Symbol s -> String
showsPrec :: Int -> Symbol s -> ShowS
$cshowsPrec :: forall k (s :: k). Int -> Symbol s -> ShowS
Show, Ptr b -> Int -> IO (Symbol s)
Ptr b -> Int -> Symbol s -> IO ()
Ptr (Symbol s) -> IO (Symbol s)
Ptr (Symbol s) -> Int -> IO (Symbol s)
Ptr (Symbol s) -> Int -> Symbol s -> IO ()
Ptr (Symbol s) -> Symbol s -> IO ()
Symbol s -> Int
(Symbol s -> Int)
-> (Symbol s -> Int)
-> (Ptr (Symbol s) -> Int -> IO (Symbol s))
-> (Ptr (Symbol s) -> Int -> Symbol s -> IO ())
-> (forall b. Ptr b -> Int -> IO (Symbol s))
-> (forall b. Ptr b -> Int -> Symbol s -> IO ())
-> (Ptr (Symbol s) -> IO (Symbol s))
-> (Ptr (Symbol s) -> Symbol s -> IO ())
-> Storable (Symbol s)
forall b. Ptr b -> Int -> IO (Symbol s)
forall b. Ptr b -> Int -> Symbol s -> IO ()
forall a.
(a -> Int)
-> (a -> Int)
-> (Ptr a -> Int -> IO a)
-> (Ptr a -> Int -> a -> IO ())
-> (forall b. Ptr b -> Int -> IO a)
-> (forall b. Ptr b -> Int -> a -> IO ())
-> (Ptr a -> IO a)
-> (Ptr a -> a -> IO ())
-> Storable a
forall k (s :: k). Ptr (Symbol s) -> IO (Symbol s)
forall k (s :: k). Ptr (Symbol s) -> Int -> IO (Symbol s)
forall k (s :: k). Ptr (Symbol s) -> Int -> Symbol s -> IO ()
forall k (s :: k). Ptr (Symbol s) -> Symbol s -> IO ()
forall k (s :: k). Symbol s -> Int
forall k (s :: k) b. Ptr b -> Int -> IO (Symbol s)
forall k (s :: k) b. Ptr b -> Int -> Symbol s -> IO ()
poke :: Ptr (Symbol s) -> Symbol s -> IO ()
$cpoke :: forall k (s :: k). Ptr (Symbol s) -> Symbol s -> IO ()
peek :: Ptr (Symbol s) -> IO (Symbol s)
$cpeek :: forall k (s :: k). Ptr (Symbol s) -> IO (Symbol s)
pokeByteOff :: Ptr b -> Int -> Symbol s -> IO ()
$cpokeByteOff :: forall k (s :: k) b. Ptr b -> Int -> Symbol s -> IO ()
peekByteOff :: Ptr b -> Int -> IO (Symbol s)
$cpeekByteOff :: forall k (s :: k) b. Ptr b -> Int -> IO (Symbol s)
pokeElemOff :: Ptr (Symbol s) -> Int -> Symbol s -> IO ()
$cpokeElemOff :: forall k (s :: k). Ptr (Symbol s) -> Int -> Symbol s -> IO ()
peekElemOff :: Ptr (Symbol s) -> Int -> IO (Symbol s)
$cpeekElemOff :: forall k (s :: k). Ptr (Symbol s) -> Int -> IO (Symbol s)
alignment :: Symbol s -> Int
$calignment :: forall k (s :: k). Symbol s -> Int
sizeOf :: Symbol s -> Int
$csizeOf :: forall k (s :: k). Symbol s -> Int
Storable)
newtype AST s = AST { AST s -> AST
_unAST :: Base.AST } deriving (AST s -> AST s -> Bool
(AST s -> AST s -> Bool) -> (AST s -> AST s -> Bool) -> Eq (AST s)
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
forall k (s :: k). AST s -> AST s -> Bool
/= :: AST s -> AST s -> Bool
$c/= :: forall k (s :: k). AST s -> AST s -> Bool
== :: AST s -> AST s -> Bool
$c== :: forall k (s :: k). AST s -> AST s -> Bool
Eq, Eq (AST s)
Eq (AST s) =>
(AST s -> AST s -> Ordering)
-> (AST s -> AST s -> Bool)
-> (AST s -> AST s -> Bool)
-> (AST s -> AST s -> Bool)
-> (AST s -> AST s -> Bool)
-> (AST s -> AST s -> AST s)
-> (AST s -> AST s -> AST s)
-> Ord (AST s)
AST s -> AST s -> Bool
AST s -> AST s -> Ordering
AST s -> AST s -> AST s
forall a.
Eq a =>
(a -> a -> Ordering)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> a)
-> (a -> a -> a)
-> Ord a
forall k (s :: k). Eq (AST s)
forall k (s :: k). AST s -> AST s -> Bool
forall k (s :: k). AST s -> AST s -> Ordering
forall k (s :: k). AST s -> AST s -> AST s
min :: AST s -> AST s -> AST s
$cmin :: forall k (s :: k). AST s -> AST s -> AST s
max :: AST s -> AST s -> AST s
$cmax :: forall k (s :: k). AST s -> AST s -> AST s
>= :: AST s -> AST s -> Bool
$c>= :: forall k (s :: k). AST s -> AST s -> Bool
> :: AST s -> AST s -> Bool
$c> :: forall k (s :: k). AST s -> AST s -> Bool
<= :: AST s -> AST s -> Bool
$c<= :: forall k (s :: k). AST s -> AST s -> Bool
< :: AST s -> AST s -> Bool
$c< :: forall k (s :: k). AST s -> AST s -> Bool
compare :: AST s -> AST s -> Ordering
$ccompare :: forall k (s :: k). AST s -> AST s -> Ordering
$cp1Ord :: forall k (s :: k). Eq (AST s)
Ord, Int -> AST s -> ShowS
[AST s] -> ShowS
AST s -> String
(Int -> AST s -> ShowS)
-> (AST s -> String) -> ([AST s] -> ShowS) -> Show (AST s)
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
forall k (s :: k). Int -> AST s -> ShowS
forall k (s :: k). [AST s] -> ShowS
forall k (s :: k). AST s -> String
showList :: [AST s] -> ShowS
$cshowList :: forall k (s :: k). [AST s] -> ShowS
show :: AST s -> String
$cshow :: forall k (s :: k). AST s -> String
showsPrec :: Int -> AST s -> ShowS
$cshowsPrec :: forall k (s :: k). Int -> AST s -> ShowS
Show)
newtype Sort s = Sort { Sort s -> Sort
_unSort :: Base.Sort } deriving (Sort s -> Sort s -> Bool
(Sort s -> Sort s -> Bool)
-> (Sort s -> Sort s -> Bool) -> Eq (Sort s)
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
forall k (s :: k). Sort s -> Sort s -> Bool
/= :: Sort s -> Sort s -> Bool
$c/= :: forall k (s :: k). Sort s -> Sort s -> Bool
== :: Sort s -> Sort s -> Bool
$c== :: forall k (s :: k). Sort s -> Sort s -> Bool
Eq, Eq (Sort s)
Eq (Sort s) =>
(Sort s -> Sort s -> Ordering)
-> (Sort s -> Sort s -> Bool)
-> (Sort s -> Sort s -> Bool)
-> (Sort s -> Sort s -> Bool)
-> (Sort s -> Sort s -> Bool)
-> (Sort s -> Sort s -> Sort s)
-> (Sort s -> Sort s -> Sort s)
-> Ord (Sort s)
Sort s -> Sort s -> Bool
Sort s -> Sort s -> Ordering
Sort s -> Sort s -> Sort s
forall a.
Eq a =>
(a -> a -> Ordering)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> a)
-> (a -> a -> a)
-> Ord a
forall k (s :: k). Eq (Sort s)
forall k (s :: k). Sort s -> Sort s -> Bool
forall k (s :: k). Sort s -> Sort s -> Ordering
forall k (s :: k). Sort s -> Sort s -> Sort s
min :: Sort s -> Sort s -> Sort s
$cmin :: forall k (s :: k). Sort s -> Sort s -> Sort s
max :: Sort s -> Sort s -> Sort s
$cmax :: forall k (s :: k). Sort s -> Sort s -> Sort s
>= :: Sort s -> Sort s -> Bool
$c>= :: forall k (s :: k). Sort s -> Sort s -> Bool
> :: Sort s -> Sort s -> Bool
$c> :: forall k (s :: k). Sort s -> Sort s -> Bool
<= :: Sort s -> Sort s -> Bool
$c<= :: forall k (s :: k). Sort s -> Sort s -> Bool
< :: Sort s -> Sort s -> Bool
$c< :: forall k (s :: k). Sort s -> Sort s -> Bool
compare :: Sort s -> Sort s -> Ordering
$ccompare :: forall k (s :: k). Sort s -> Sort s -> Ordering
$cp1Ord :: forall k (s :: k). Eq (Sort s)
Ord, Int -> Sort s -> ShowS
[Sort s] -> ShowS
Sort s -> String
(Int -> Sort s -> ShowS)
-> (Sort s -> String) -> ([Sort s] -> ShowS) -> Show (Sort s)
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
forall k (s :: k). Int -> Sort s -> ShowS
forall k (s :: k). [Sort s] -> ShowS
forall k (s :: k). Sort s -> String
showList :: [Sort s] -> ShowS
$cshowList :: forall k (s :: k). [Sort s] -> ShowS
show :: Sort s -> String
$cshow :: forall k (s :: k). Sort s -> String
showsPrec :: Int -> Sort s -> ShowS
$cshowsPrec :: forall k (s :: k). Int -> Sort s -> ShowS
Show)
newtype FuncDecl s = FuncDecl { FuncDecl s -> FuncDecl
_unFuncDecl :: Base.FuncDecl } deriving (FuncDecl s -> FuncDecl s -> Bool
(FuncDecl s -> FuncDecl s -> Bool)
-> (FuncDecl s -> FuncDecl s -> Bool) -> Eq (FuncDecl s)
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
forall k (s :: k). FuncDecl s -> FuncDecl s -> Bool
/= :: FuncDecl s -> FuncDecl s -> Bool
$c/= :: forall k (s :: k). FuncDecl s -> FuncDecl s -> Bool
== :: FuncDecl s -> FuncDecl s -> Bool
$c== :: forall k (s :: k). FuncDecl s -> FuncDecl s -> Bool
Eq, Eq (FuncDecl s)
Eq (FuncDecl s) =>
(FuncDecl s -> FuncDecl s -> Ordering)
-> (FuncDecl s -> FuncDecl s -> Bool)
-> (FuncDecl s -> FuncDecl s -> Bool)
-> (FuncDecl s -> FuncDecl s -> Bool)
-> (FuncDecl s -> FuncDecl s -> Bool)
-> (FuncDecl s -> FuncDecl s -> FuncDecl s)
-> (FuncDecl s -> FuncDecl s -> FuncDecl s)
-> Ord (FuncDecl s)
FuncDecl s -> FuncDecl s -> Bool
FuncDecl s -> FuncDecl s -> Ordering
FuncDecl s -> FuncDecl s -> FuncDecl s
forall a.
Eq a =>
(a -> a -> Ordering)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> a)
-> (a -> a -> a)
-> Ord a
forall k (s :: k). Eq (FuncDecl s)
forall k (s :: k). FuncDecl s -> FuncDecl s -> Bool
forall k (s :: k). FuncDecl s -> FuncDecl s -> Ordering
forall k (s :: k). FuncDecl s -> FuncDecl s -> FuncDecl s
min :: FuncDecl s -> FuncDecl s -> FuncDecl s
$cmin :: forall k (s :: k). FuncDecl s -> FuncDecl s -> FuncDecl s
max :: FuncDecl s -> FuncDecl s -> FuncDecl s
$cmax :: forall k (s :: k). FuncDecl s -> FuncDecl s -> FuncDecl s
>= :: FuncDecl s -> FuncDecl s -> Bool
$c>= :: forall k (s :: k). FuncDecl s -> FuncDecl s -> Bool
> :: FuncDecl s -> FuncDecl s -> Bool
$c> :: forall k (s :: k). FuncDecl s -> FuncDecl s -> Bool
<= :: FuncDecl s -> FuncDecl s -> Bool
$c<= :: forall k (s :: k). FuncDecl s -> FuncDecl s -> Bool
< :: FuncDecl s -> FuncDecl s -> Bool
$c< :: forall k (s :: k). FuncDecl s -> FuncDecl s -> Bool
compare :: FuncDecl s -> FuncDecl s -> Ordering
$ccompare :: forall k (s :: k). FuncDecl s -> FuncDecl s -> Ordering
$cp1Ord :: forall k (s :: k). Eq (FuncDecl s)
Ord, Int -> FuncDecl s -> ShowS
[FuncDecl s] -> ShowS
FuncDecl s -> String
(Int -> FuncDecl s -> ShowS)
-> (FuncDecl s -> String)
-> ([FuncDecl s] -> ShowS)
-> Show (FuncDecl s)
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
forall k (s :: k). Int -> FuncDecl s -> ShowS
forall k (s :: k). [FuncDecl s] -> ShowS
forall k (s :: k). FuncDecl s -> String
showList :: [FuncDecl s] -> ShowS
$cshowList :: forall k (s :: k). [FuncDecl s] -> ShowS
show :: FuncDecl s -> String
$cshow :: forall k (s :: k). FuncDecl s -> String
showsPrec :: Int -> FuncDecl s -> ShowS
$cshowsPrec :: forall k (s :: k). Int -> FuncDecl s -> ShowS
Show)
newtype App s = App { App s -> App
_unApp :: Base.App } deriving (App s -> App s -> Bool
(App s -> App s -> Bool) -> (App s -> App s -> Bool) -> Eq (App s)
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
forall k (s :: k). App s -> App s -> Bool
/= :: App s -> App s -> Bool
$c/= :: forall k (s :: k). App s -> App s -> Bool
== :: App s -> App s -> Bool
$c== :: forall k (s :: k). App s -> App s -> Bool
Eq, Eq (App s)
Eq (App s) =>
(App s -> App s -> Ordering)
-> (App s -> App s -> Bool)
-> (App s -> App s -> Bool)
-> (App s -> App s -> Bool)
-> (App s -> App s -> Bool)
-> (App s -> App s -> App s)
-> (App s -> App s -> App s)
-> Ord (App s)
App s -> App s -> Bool
App s -> App s -> Ordering
App s -> App s -> App s
forall a.
Eq a =>
(a -> a -> Ordering)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> a)
-> (a -> a -> a)
-> Ord a
forall k (s :: k). Eq (App s)
forall k (s :: k). App s -> App s -> Bool
forall k (s :: k). App s -> App s -> Ordering
forall k (s :: k). App s -> App s -> App s
min :: App s -> App s -> App s
$cmin :: forall k (s :: k). App s -> App s -> App s
max :: App s -> App s -> App s
$cmax :: forall k (s :: k). App s -> App s -> App s
>= :: App s -> App s -> Bool
$c>= :: forall k (s :: k). App s -> App s -> Bool
> :: App s -> App s -> Bool
$c> :: forall k (s :: k). App s -> App s -> Bool
<= :: App s -> App s -> Bool
$c<= :: forall k (s :: k). App s -> App s -> Bool
< :: App s -> App s -> Bool
$c< :: forall k (s :: k). App s -> App s -> Bool
compare :: App s -> App s -> Ordering
$ccompare :: forall k (s :: k). App s -> App s -> Ordering
$cp1Ord :: forall k (s :: k). Eq (App s)
Ord, Int -> App s -> ShowS
[App s] -> ShowS
App s -> String
(Int -> App s -> ShowS)
-> (App s -> String) -> ([App s] -> ShowS) -> Show (App s)
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
forall k (s :: k). Int -> App s -> ShowS
forall k (s :: k). [App s] -> ShowS
forall k (s :: k). App s -> String
showList :: [App s] -> ShowS
$cshowList :: forall k (s :: k). [App s] -> ShowS
show :: App s -> String
$cshow :: forall k (s :: k). App s -> String
showsPrec :: Int -> App s -> ShowS
$cshowsPrec :: forall k (s :: k). Int -> App s -> ShowS
Show)
newtype Pattern s = Pattern { Pattern s -> Pattern
_unPattern :: Base.Pattern } deriving (Pattern s -> Pattern s -> Bool
(Pattern s -> Pattern s -> Bool)
-> (Pattern s -> Pattern s -> Bool) -> Eq (Pattern s)
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
forall k (s :: k). Pattern s -> Pattern s -> Bool
/= :: Pattern s -> Pattern s -> Bool
$c/= :: forall k (s :: k). Pattern s -> Pattern s -> Bool
== :: Pattern s -> Pattern s -> Bool
$c== :: forall k (s :: k). Pattern s -> Pattern s -> Bool
Eq, Eq (Pattern s)
Eq (Pattern s) =>
(Pattern s -> Pattern s -> Ordering)
-> (Pattern s -> Pattern s -> Bool)
-> (Pattern s -> Pattern s -> Bool)
-> (Pattern s -> Pattern s -> Bool)
-> (Pattern s -> Pattern s -> Bool)
-> (Pattern s -> Pattern s -> Pattern s)
-> (Pattern s -> Pattern s -> Pattern s)
-> Ord (Pattern s)
Pattern s -> Pattern s -> Bool
Pattern s -> Pattern s -> Ordering
Pattern s -> Pattern s -> Pattern s
forall a.
Eq a =>
(a -> a -> Ordering)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> a)
-> (a -> a -> a)
-> Ord a
forall k (s :: k). Eq (Pattern s)
forall k (s :: k). Pattern s -> Pattern s -> Bool
forall k (s :: k). Pattern s -> Pattern s -> Ordering
forall k (s :: k). Pattern s -> Pattern s -> Pattern s
min :: Pattern s -> Pattern s -> Pattern s
$cmin :: forall k (s :: k). Pattern s -> Pattern s -> Pattern s
max :: Pattern s -> Pattern s -> Pattern s
$cmax :: forall k (s :: k). Pattern s -> Pattern s -> Pattern s
>= :: Pattern s -> Pattern s -> Bool
$c>= :: forall k (s :: k). Pattern s -> Pattern s -> Bool
> :: Pattern s -> Pattern s -> Bool
$c> :: forall k (s :: k). Pattern s -> Pattern s -> Bool
<= :: Pattern s -> Pattern s -> Bool
$c<= :: forall k (s :: k). Pattern s -> Pattern s -> Bool
< :: Pattern s -> Pattern s -> Bool
$c< :: forall k (s :: k). Pattern s -> Pattern s -> Bool
compare :: Pattern s -> Pattern s -> Ordering
$ccompare :: forall k (s :: k). Pattern s -> Pattern s -> Ordering
$cp1Ord :: forall k (s :: k). Eq (Pattern s)
Ord, Int -> Pattern s -> ShowS
[Pattern s] -> ShowS
Pattern s -> String
(Int -> Pattern s -> ShowS)
-> (Pattern s -> String)
-> ([Pattern s] -> ShowS)
-> Show (Pattern s)
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
forall k (s :: k). Int -> Pattern s -> ShowS
forall k (s :: k). [Pattern s] -> ShowS
forall k (s :: k). Pattern s -> String
showList :: [Pattern s] -> ShowS
$cshowList :: forall k (s :: k). [Pattern s] -> ShowS
show :: Pattern s -> String
$cshow :: forall k (s :: k). Pattern s -> String
showsPrec :: Int -> Pattern s -> ShowS
$cshowsPrec :: forall k (s :: k). Int -> Pattern s -> ShowS
Show)
newtype Constructor s = Constructor { Constructor s -> Constructor
_unConstructor :: Base.Constructor } deriving (Constructor s -> Constructor s -> Bool
(Constructor s -> Constructor s -> Bool)
-> (Constructor s -> Constructor s -> Bool) -> Eq (Constructor s)
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
forall k (s :: k). Constructor s -> Constructor s -> Bool
/= :: Constructor s -> Constructor s -> Bool
$c/= :: forall k (s :: k). Constructor s -> Constructor s -> Bool
== :: Constructor s -> Constructor s -> Bool
$c== :: forall k (s :: k). Constructor s -> Constructor s -> Bool
Eq, Eq (Constructor s)
Eq (Constructor s) =>
(Constructor s -> Constructor s -> Ordering)
-> (Constructor s -> Constructor s -> Bool)
-> (Constructor s -> Constructor s -> Bool)
-> (Constructor s -> Constructor s -> Bool)
-> (Constructor s -> Constructor s -> Bool)
-> (Constructor s -> Constructor s -> Constructor s)
-> (Constructor s -> Constructor s -> Constructor s)
-> Ord (Constructor s)
Constructor s -> Constructor s -> Bool
Constructor s -> Constructor s -> Ordering
Constructor s -> Constructor s -> Constructor s
forall a.
Eq a =>
(a -> a -> Ordering)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> a)
-> (a -> a -> a)
-> Ord a
forall k (s :: k). Eq (Constructor s)
forall k (s :: k). Constructor s -> Constructor s -> Bool
forall k (s :: k). Constructor s -> Constructor s -> Ordering
forall k (s :: k). Constructor s -> Constructor s -> Constructor s
min :: Constructor s -> Constructor s -> Constructor s
$cmin :: forall k (s :: k). Constructor s -> Constructor s -> Constructor s
max :: Constructor s -> Constructor s -> Constructor s
$cmax :: forall k (s :: k). Constructor s -> Constructor s -> Constructor s
>= :: Constructor s -> Constructor s -> Bool
$c>= :: forall k (s :: k). Constructor s -> Constructor s -> Bool
> :: Constructor s -> Constructor s -> Bool
$c> :: forall k (s :: k). Constructor s -> Constructor s -> Bool
<= :: Constructor s -> Constructor s -> Bool
$c<= :: forall k (s :: k). Constructor s -> Constructor s -> Bool
< :: Constructor s -> Constructor s -> Bool
$c< :: forall k (s :: k). Constructor s -> Constructor s -> Bool
compare :: Constructor s -> Constructor s -> Ordering
$ccompare :: forall k (s :: k). Constructor s -> Constructor s -> Ordering
$cp1Ord :: forall k (s :: k). Eq (Constructor s)
Ord, Int -> Constructor s -> ShowS
[Constructor s] -> ShowS
Constructor s -> String
(Int -> Constructor s -> ShowS)
-> (Constructor s -> String)
-> ([Constructor s] -> ShowS)
-> Show (Constructor s)
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
forall k (s :: k). Int -> Constructor s -> ShowS
forall k (s :: k). [Constructor s] -> ShowS
forall k (s :: k). Constructor s -> String
showList :: [Constructor s] -> ShowS
$cshowList :: forall k (s :: k). [Constructor s] -> ShowS
show :: Constructor s -> String
$cshow :: forall k (s :: k). Constructor s -> String
showsPrec :: Int -> Constructor s -> ShowS
$cshowsPrec :: forall k (s :: k). Int -> Constructor s -> ShowS
Show)
newtype Model s = Model { Model s -> Model
_unModel :: Base.Model } deriving (Model s -> Model s -> Bool
(Model s -> Model s -> Bool)
-> (Model s -> Model s -> Bool) -> Eq (Model s)
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
forall k (s :: k). Model s -> Model s -> Bool
/= :: Model s -> Model s -> Bool
$c/= :: forall k (s :: k). Model s -> Model s -> Bool
== :: Model s -> Model s -> Bool
$c== :: forall k (s :: k). Model s -> Model s -> Bool
Eq)
newtype FuncInterp s = FuncInterp { FuncInterp s -> FuncInterp
_unFuncInterp :: Base.FuncInterp } deriving (FuncInterp s -> FuncInterp s -> Bool
(FuncInterp s -> FuncInterp s -> Bool)
-> (FuncInterp s -> FuncInterp s -> Bool) -> Eq (FuncInterp s)
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
forall k (s :: k). FuncInterp s -> FuncInterp s -> Bool
/= :: FuncInterp s -> FuncInterp s -> Bool
$c/= :: forall k (s :: k). FuncInterp s -> FuncInterp s -> Bool
== :: FuncInterp s -> FuncInterp s -> Bool
$c== :: forall k (s :: k). FuncInterp s -> FuncInterp s -> Bool
Eq)
newtype FuncEntry s = FuncEntry { FuncEntry s -> FuncEntry
_unFuncEntry :: Base.FuncEntry } deriving (FuncEntry s -> FuncEntry s -> Bool
(FuncEntry s -> FuncEntry s -> Bool)
-> (FuncEntry s -> FuncEntry s -> Bool) -> Eq (FuncEntry s)
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
forall k (s :: k). FuncEntry s -> FuncEntry s -> Bool
/= :: FuncEntry s -> FuncEntry s -> Bool
$c/= :: forall k (s :: k). FuncEntry s -> FuncEntry s -> Bool
== :: FuncEntry s -> FuncEntry s -> Bool
$c== :: forall k (s :: k). FuncEntry s -> FuncEntry s -> Bool
Eq)
newtype Tactic s = Tactic { Tactic s -> Tactic
_unTactic :: Base.Tactic } deriving (Tactic s -> Tactic s -> Bool
(Tactic s -> Tactic s -> Bool)
-> (Tactic s -> Tactic s -> Bool) -> Eq (Tactic s)
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
forall k (s :: k). Tactic s -> Tactic s -> Bool
/= :: Tactic s -> Tactic s -> Bool
$c/= :: forall k (s :: k). Tactic s -> Tactic s -> Bool
== :: Tactic s -> Tactic s -> Bool
$c== :: forall k (s :: k). Tactic s -> Tactic s -> Bool
Eq)
newtype Goal s = Goal { Goal s -> Goal
_unGoal :: Base.Goal } deriving (Goal s -> Goal s -> Bool
(Goal s -> Goal s -> Bool)
-> (Goal s -> Goal s -> Bool) -> Eq (Goal s)
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
forall k (s :: k). Goal s -> Goal s -> Bool
/= :: Goal s -> Goal s -> Bool
$c/= :: forall k (s :: k). Goal s -> Goal s -> Bool
== :: Goal s -> Goal s -> Bool
$c== :: forall k (s :: k). Goal s -> Goal s -> Bool
Eq)
newtype ApplyResult s = ApplyResult { ApplyResult s -> ApplyResult
_unApplyResult :: Base.ApplyResult } deriving (ApplyResult s -> ApplyResult s -> Bool
(ApplyResult s -> ApplyResult s -> Bool)
-> (ApplyResult s -> ApplyResult s -> Bool) -> Eq (ApplyResult s)
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
forall k (s :: k). ApplyResult s -> ApplyResult s -> Bool
/= :: ApplyResult s -> ApplyResult s -> Bool
$c/= :: forall k (s :: k). ApplyResult s -> ApplyResult s -> Bool
== :: ApplyResult s -> ApplyResult s -> Bool
$c== :: forall k (s :: k). ApplyResult s -> ApplyResult s -> Bool
Eq)
newtype Params s = Params { Params s -> Params
_unParams :: Base.Params } deriving (Params s -> Params s -> Bool
(Params s -> Params s -> Bool)
-> (Params s -> Params s -> Bool) -> Eq (Params s)
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
forall k (s :: k). Params s -> Params s -> Bool
/= :: Params s -> Params s -> Bool
$c/= :: forall k (s :: k). Params s -> Params s -> Bool
== :: Params s -> Params s -> Bool
$c== :: forall k (s :: k). Params s -> Params s -> Bool
Eq)
newtype Solver s = Solver { Solver s -> Solver
_unSolver :: Base.Solver } deriving (Solver s -> Solver s -> Bool
(Solver s -> Solver s -> Bool)
-> (Solver s -> Solver s -> Bool) -> Eq (Solver s)
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
forall k (s :: k). Solver s -> Solver s -> Bool
/= :: Solver s -> Solver s -> Bool
$c/= :: forall k (s :: k). Solver s -> Solver s -> Bool
== :: Solver s -> Solver s -> Bool
$c== :: forall k (s :: k). Solver s -> Solver s -> Bool
Eq)
newtype Fixedpoint s = Fixedpoint { Fixedpoint s -> Fixedpoint
_unFixedpoint :: Base.Fixedpoint } deriving (Fixedpoint s -> Fixedpoint s -> Bool
(Fixedpoint s -> Fixedpoint s -> Bool)
-> (Fixedpoint s -> Fixedpoint s -> Bool) -> Eq (Fixedpoint s)
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
forall k (s :: k). Fixedpoint s -> Fixedpoint s -> Bool
/= :: Fixedpoint s -> Fixedpoint s -> Bool
$c/= :: forall k (s :: k). Fixedpoint s -> Fixedpoint s -> Bool
== :: Fixedpoint s -> Fixedpoint s -> Bool
$c== :: forall k (s :: k). Fixedpoint s -> Fixedpoint s -> Bool
Eq)