{-# LANGUAGE GeneralizedNewtypeDeriving #-}
module Z3.Monad
(
MonadZ3(..)
, Z3
, module Z3.Opts
, Logic(..)
, evalZ3
, evalZ3With
, Z3Env
, newEnv
, evalZ3WithEnv
, 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
, mkRecFuncDecl
, addRecDef
, mkVar
, mkBoolVar
, mkRealVar
, mkIntVar
, mkBvVar
, mkFreshVar
, mkFreshBoolVar
, mkFreshRealVar
, mkFreshIntVar
, mkFreshBvVar
, mkTrue
, mkFalse
, mkEq
, mkNot
, mkIte
, mkIff
, mkImplies
, mkXor
, mkAnd
, mkOr
, mkDistinct
, mkDistinct1
, mkBool
, mkAdd
, mkMul
, mkSub
, mkSub1
, mkUnaryMinus
, mkDiv
, mkMod
, mkRem
, mkPower
, 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
, mkSeqSort
, isSeqSort
, mkReSort
, isReSort
, mkStringSort
, isStringSort
, mkString
, isString
, getString
, mkSeqEmpty
, mkSeqUnit
, mkSeqConcat
, mkSeqPrefix
, mkSeqSuffix
, mkSeqContains
, mkStrLt
, mkStrLe
, mkSeqExtract
, mkSeqReplace
, mkSeqAt
, mkSeqLength
, mkSeqIndex
, mkStrToInt
, mkIntToStr
, mkSeqToRe
, mkSeqInRe
, mkRePlus
, mkReStar
, mkReOption
, mkReUnion
, mkReConcat
, mkReRange
, mkReLoop
, mkReIntersect
, mkReComplement
, mkReEmpty
, mkReFull
, mkPattern
, mkBound
, mkForall
, mkForallW
, mkExists
, mkExistsW
, mkForallConst
, mkForallWConst
, mkExistsConst
, mkExistsWConst
, getSymbolString
, getSortName
, getSortId
, sortToAst
, isEqSort
, getSortKind
, getBvSortSize
, getTupleSortMkDecl
, getTupleSortNumFields
, getTupleSortFieldDecl
, getDatatypeSortConstructors
, getDatatypeSortRecognizers
, getDatatypeSortConstructorAccessors
, mkAtMost
, mkAtLeast
, getDeclName
, getArity
, getDomain
, getRange
, appToAst
, getAppDecl
, getAppNumArgs
, getAppArg
, getAppArgs
, getSort
, getArraySortDomain
, getArraySortRange
, getBoolValue
, getAstKind
, isApp
, toApp
, getNumeralString
, getNumerator
, getDenominator
, simplify
, simplifyEx
, getIndexValue
, isQuantifierForall
, isQuantifierExists
, getQuantifierWeight
, getQuantifierNumPatterns
, getQuantifierPatternAST
, getQuantifierPatterns
, getQuantifierNumNoPatterns
, getQuantifierNoPatternAST
, getQuantifierNoPatterns
, getQuantifierNumBound
, getQuantifierBoundName
, getQuantifierBoundSort
, getQuantifierBoundVars
, getQuantifierBody
, getBool
, getInt
, getReal
, substituteVars
, substitute
, modelTranslate
, modelEval
, evalArray
, getConstInterp
, getFuncInterp
, hasInterp
, numConsts
, numFuncs
, getConstDecl
, getFuncDecl
, getConsts
, getFuncs
, isAsArray
, isEqAST
, 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
, tacticUsingParams
, repeatTactic
, mkQuantifierEliminationTactic
, mkAndInverterGraphTactic
, applyTactic
, applyResultToString
, getApplyResultNumSubgoals
, getApplyResultSubgoal
, getApplyResultSubgoals
, mkGoal
, goalAssert
, getGoalSize
, getGoalFormula
, getGoalFormulas
, goalToString
, convertModel
, ASTPrintMode(..)
, setASTPrintMode
, astToString
, patternToString
, sortToString
, funcDeclToString
, benchmarkToSMTLibString
, parseSMTLib2String
, parseSMTLib2File
, evalSMTLib2String
, Base.Z3Error(..)
, Base.Z3ErrorCode(..)
, Version(..)
, getVersion
, MonadFixedpoint(..)
, Fixedpoint
, fixedpointAddRule
, fixedpointSetParams
, fixedpointRegisterRelation
, fixedpointQueryRelations
, fixedpointGetAnswer
, fixedpointGetAssertions
, mkFpaRoundingModeSort
, mkFpaRoundNearestTiesToEven
, mkFpaRne
, mkFpaRoundNearestTiesToAway
, mkFpaRna
, mkFpaRoundTowardPositive
, mkFpaRtp
, mkFpaRoundTowardNegative
, mkFpaRtn
, mkFpaRoundTowardZero
, mkFpaRtz
, mkFpaSort
, mkFpaSortHalf
, mkFpaSort16
, mkFpaSortSingle
, mkFpaSort32
, mkFpaSortDouble
, mkFpaSort64
, mkFpaSortQuadruple
, mkFpaSort128
, mkFpaNaN
, mkFpaInf
, mkFpaZero
, mkFpaFp
, mkFpaNumeralFloat
, mkFpaNumeralDouble
, mkFpaNumeralInt
, mkFpaNumeralIntUInt
, mkFpaNumeralInt64UInt64
, mkFpaAbs
, mkFpaNeg
, mkFpaAdd
, mkFpaSub
, mkFpaMul
, mkFpaDiv
, mkFpaFma
, mkFpaSqrt
, mkFpaRem
, mkFpaRoundToIntegral
, mkFpaMin
, mkFpaMax
, mkFpaLeq
, mkFpaLt
, mkFpaGeq
, mkFpaGt
, mkFpaEq
, mkFpaIsNormal
, mkFpaIsSubnormal
, mkFpaIsZero
, mkFpaIsInfinite
, mkFpaIsNaN
, mkFpaIsNegative
, mkFpaIsPositive
, mkFpaToFpBv
, mkFpaToFpFloat
, mkFpaToFpReal
, mkFpaToFpSigned
, mkFpaToFpUnsigned
, mkFpaToUbv
, mkFpaToSbv
, mkFpaToReal
, fpaGetEbits
, fpaGetSbits
, fpaIsNumeralNaN
, fpaIsNumeralInf
, fpaIsNumeralZero
, fpaIsNumeralNormal
, fpaIsNumeralSubnormal
, fpaIsNumeralPositive
, fpaIsNumeralNegative
, fpaGetNumeralSignBv
, fpaGetNumeralSignificandBv
, fpaGetNumeralSignificandString
, fpaGetNumeralExponentString
, fpaGetNumeralExponentBv
, mkFpaToIEEEBv
, mkFpaToFpIntReal
, MonadOptimize(..)
, Optimize
, optimizeAssert
, optimizeAssertAndTrack
, optimizeAssertSoft
, optimizeMaximize
, optimizeMinimize
, optimizePush
, optimizePop
, optimizeCheck
, optimizeGetReasonUnknown
, optimizeGetModel
, optimizeGetUnsatCore
, optimizeSetParams
, optimizeGetLower
, optimizeGetUpper
, optimizeGetUpperAsVector
, optimizeGetLowerAsVector
, optimizeToString
, optimizeFromString
, optimizeFromFile
, optimizeGetHelp
, optimizeGetAssertions
, optimizeGetObjectives
, solverGetHelp
, solverSetParams
, solverPush
, solverPop
, solverReset
, solverGetNumScopes
, solverAssertCnstr
, solverAssertAndTrack
, solverGetAssertions
, solverCheck
, solverCheckAssumptions
, solverGetModel
, solverGetProof
, solverGetUnsatCore
, solverGetReasonUnknown
, solverToString
, solverFromString
, assert
, check
, checkAssumptions
, solverCheckAndGetModel
, getModel
, withModel
, getUnsatCore
, push
, pop
, local
, reset
, getNumScopes
)
where
import Z3.Opts
import Z3.Base
( Symbol
, AST
, Sort
, TupleType
, FuncDecl
, App
, Pattern
, Constructor
, Model
, FuncInterp
, FuncEntry
, FuncModel(..)
, Result(..)
, Logic(..)
, ASTPrintMode(..)
, Version(..)
, Params
, Solver
, Fixedpoint
, Optimize
, SortKind(..)
, ASTKind(..)
, Tactic
, ApplyResult
, Goal
)
import qualified Z3.Base as Base
import Control.Applicative ( Applicative )
import Data.Fixed ( Fixed, HasResolution )
import Control.Monad.Trans.Except (ExceptT)
import Control.Monad.Fail
import Control.Monad.IO.Class ( MonadIO, liftIO )
import Control.Monad.Trans.Class ( lift )
import Control.Monad.Trans.Reader ( ReaderT(..), runReaderT, asks )
import Control.Monad.Trans.State.Lazy as StLazy ( StateT(..) )
import Control.Monad.Trans.State.Strict as StStrict ( StateT(..) )
import Control.Monad.Fix ( MonadFix )
import Data.Int ( Int64 )
import Data.List.NonEmpty (NonEmpty)
import Data.Word ( Word, Word64 )
import Data.Traversable ( Traversable )
import qualified Data.Traversable as T
class (Applicative m, Monad m, MonadIO m) => MonadZ3 m where
getSolver :: m Base.Solver
getContext :: m Base.Context
instance MonadZ3 m => MonadZ3 (ReaderT r m) where
getSolver :: ReaderT r m Solver
getSolver = m Solver -> ReaderT r m Solver
forall (m :: * -> *) a. Monad m => m a -> ReaderT r m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift m Solver
forall (m :: * -> *). MonadZ3 m => m Solver
getSolver
getContext :: ReaderT r m Context
getContext = m Context -> ReaderT r m Context
forall (m :: * -> *) a. Monad m => m a -> ReaderT r m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift m Context
forall (m :: * -> *). MonadZ3 m => m Context
getContext
instance MonadZ3 m => MonadZ3 (ExceptT e m) where
getSolver :: ExceptT e m Solver
getSolver = m Solver -> ExceptT e m Solver
forall (m :: * -> *) a. Monad m => m a -> ExceptT e m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift m Solver
forall (m :: * -> *). MonadZ3 m => m Solver
getSolver
getContext :: ExceptT e m Context
getContext = m Context -> ExceptT e m Context
forall (m :: * -> *) a. Monad m => m a -> ExceptT e m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift m Context
forall (m :: * -> *). MonadZ3 m => m Context
getContext
instance MonadZ3 m => MonadZ3 (StLazy.StateT s m) where
getSolver :: StateT s m Solver
getSolver = m Solver -> StateT s m Solver
forall (m :: * -> *) a. Monad m => m a -> StateT s m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift m Solver
forall (m :: * -> *). MonadZ3 m => m Solver
getSolver
getContext :: StateT s m Context
getContext = m Context -> StateT s m Context
forall (m :: * -> *) a. Monad m => m a -> StateT s m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift m Context
forall (m :: * -> *). MonadZ3 m => m Context
getContext
instance MonadZ3 m => MonadZ3 (StStrict.StateT s m) where
getSolver :: StateT s m Solver
getSolver = m Solver -> StateT s m Solver
forall (m :: * -> *) a. Monad m => m a -> StateT s m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift m Solver
forall (m :: * -> *). MonadZ3 m => m Solver
getSolver
getContext :: StateT s m Context
getContext = m Context -> StateT s m Context
forall (m :: * -> *) a. Monad m => m a -> StateT s m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift m Context
forall (m :: * -> *). MonadZ3 m => m Context
getContext
liftScalar :: MonadZ3 z3 => (Base.Context -> IO b) -> z3 b
liftScalar :: forall (z3 :: * -> *) b. MonadZ3 z3 => (Context -> IO b) -> z3 b
liftScalar Context -> IO b
f = IO b -> z3 b
forall a. IO a -> z3 a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO b -> z3 b) -> (Context -> IO b) -> Context -> z3 b
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Context -> IO b
f (Context -> z3 b) -> z3 Context -> z3 b
forall (m :: * -> *) a b. Monad m => (a -> m b) -> m a -> m b
=<< z3 Context
forall (m :: * -> *). MonadZ3 m => m Context
getContext
liftFun1 :: MonadZ3 z3 => (Base.Context -> a -> IO b) -> a -> z3 b
liftFun1 :: forall (z3 :: * -> *) a b.
MonadZ3 z3 =>
(Context -> a -> IO b) -> a -> z3 b
liftFun1 Context -> a -> IO b
f a
a = z3 Context
forall (m :: * -> *). MonadZ3 m => m Context
getContext z3 Context -> (Context -> z3 b) -> z3 b
forall a b. z3 a -> (a -> z3 b) -> z3 b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= \Context
ctx -> IO b -> z3 b
forall a. IO a -> z3 a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (Context -> a -> IO b
f Context
ctx a
a)
liftFun2 :: MonadZ3 z3 => (Base.Context -> a -> b -> IO c) -> a -> b -> z3 c
liftFun2 :: forall (z3 :: * -> *) a b c.
MonadZ3 z3 =>
(Context -> a -> b -> IO c) -> a -> b -> z3 c
liftFun2 Context -> a -> b -> IO c
f a
a b
b = z3 Context
forall (m :: * -> *). MonadZ3 m => m Context
getContext z3 Context -> (Context -> z3 c) -> z3 c
forall a b. z3 a -> (a -> z3 b) -> z3 b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= \Context
ctx -> IO c -> z3 c
forall a. IO a -> z3 a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (Context -> a -> b -> IO c
f Context
ctx a
a b
b)
liftFun3 :: MonadZ3 z3 => (Base.Context -> a -> b -> c -> IO d)
-> a -> b -> c -> z3 d
liftFun3 :: forall (z3 :: * -> *) a b c d.
MonadZ3 z3 =>
(Context -> a -> b -> c -> IO d) -> a -> b -> c -> z3 d
liftFun3 Context -> a -> b -> c -> IO d
f a
a b
b c
c = z3 Context
forall (m :: * -> *). MonadZ3 m => m Context
getContext z3 Context -> (Context -> z3 d) -> z3 d
forall a b. z3 a -> (a -> z3 b) -> z3 b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= \Context
ctx -> IO d -> z3 d
forall a. IO a -> z3 a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (Context -> a -> b -> c -> IO d
f Context
ctx a
a b
b c
c)
liftFun4 :: MonadZ3 z3 => (Base.Context -> a -> b -> c -> d -> IO e)
-> a -> b -> c -> d -> z3 e
liftFun4 :: forall (z3 :: * -> *) a b c d e.
MonadZ3 z3 =>
(Context -> a -> b -> c -> d -> IO e) -> a -> b -> c -> d -> z3 e
liftFun4 Context -> a -> b -> c -> d -> IO e
f a
a b
b c
c d
d = z3 Context
forall (m :: * -> *). MonadZ3 m => m Context
getContext z3 Context -> (Context -> z3 e) -> z3 e
forall a b. z3 a -> (a -> z3 b) -> z3 b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= \Context
ctx -> IO e -> z3 e
forall a. IO a -> z3 a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (Context -> a -> b -> c -> d -> IO e
f Context
ctx a
a b
b c
c d
d)
liftFun5 :: MonadZ3 z3 =>
(Base.Context -> a1 -> a2 -> a3 -> a4 -> a5 -> IO b)
-> a1 -> a2 -> a3 -> a4 -> a5-> z3 b
liftFun5 :: forall (z3 :: * -> *) a1 a2 a3 a4 a5 b.
MonadZ3 z3 =>
(Context -> a1 -> a2 -> a3 -> a4 -> a5 -> IO b)
-> a1 -> a2 -> a3 -> a4 -> a5 -> z3 b
liftFun5 Context -> a1 -> a2 -> a3 -> a4 -> a5 -> IO b
f a1
x1 a2
x2 a3
x3 a4
x4 a5
x5 =
z3 Context
forall (m :: * -> *). MonadZ3 m => m Context
getContext z3 Context -> (Context -> z3 b) -> z3 b
forall a b. z3 a -> (a -> z3 b) -> z3 b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= \Context
ctx -> IO b -> z3 b
forall a. IO a -> z3 a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (Context -> a1 -> a2 -> a3 -> a4 -> a5 -> IO b
f Context
ctx a1
x1 a2
x2 a3
x3 a4
x4 a5
x5)
liftFun6 :: MonadZ3 z3 =>
(Base.Context -> a1 -> a2 -> a3 -> a4 -> a5 -> a6 -> IO b)
-> a1 -> a2 -> a3 -> a4 -> a5 -> a6 -> z3 b
liftFun6 :: forall (z3 :: * -> *) a1 a2 a3 a4 a5 a6 b.
MonadZ3 z3 =>
(Context -> a1 -> a2 -> a3 -> a4 -> a5 -> a6 -> IO b)
-> a1 -> a2 -> a3 -> a4 -> a5 -> a6 -> z3 b
liftFun6 Context -> a1 -> a2 -> a3 -> a4 -> a5 -> a6 -> IO b
f a1
x1 a2
x2 a3
x3 a4
x4 a5
x5 a6
x6 =
z3 Context
forall (m :: * -> *). MonadZ3 m => m Context
getContext z3 Context -> (Context -> z3 b) -> z3 b
forall a b. z3 a -> (a -> z3 b) -> z3 b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= \Context
ctx -> IO b -> z3 b
forall a. IO a -> z3 a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (Context -> a1 -> a2 -> a3 -> a4 -> a5 -> a6 -> IO b
f Context
ctx a1
x1 a2
x2 a3
x3 a4
x4 a5
x5 a6
x6)
liftSolver0 :: MonadZ3 z3 =>
(Base.Context -> Base.Solver -> IO b)
-> z3 b
liftSolver0 :: forall (z3 :: * -> *) b.
MonadZ3 z3 =>
(Context -> Solver -> IO b) -> z3 b
liftSolver0 Context -> Solver -> IO b
f_s =
do Context
ctx <- z3 Context
forall (m :: * -> *). MonadZ3 m => m Context
getContext
IO b -> z3 b
forall a. IO a -> z3 a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO b -> z3 b) -> (Solver -> IO b) -> Solver -> z3 b
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Context -> Solver -> IO b
f_s Context
ctx (Solver -> z3 b) -> z3 Solver -> z3 b
forall (m :: * -> *) a b. Monad m => (a -> m b) -> m a -> m b
=<< z3 Solver
forall (m :: * -> *). MonadZ3 m => m Solver
getSolver
liftSolver1 :: MonadZ3 z3 =>
(Base.Context -> Base.Solver -> a -> IO b)
-> a -> z3 b
liftSolver1 :: forall (z3 :: * -> *) a b.
MonadZ3 z3 =>
(Context -> Solver -> a -> IO b) -> a -> z3 b
liftSolver1 Context -> Solver -> a -> IO b
f_s a
a =
do Context
ctx <- z3 Context
forall (m :: * -> *). MonadZ3 m => m Context
getContext
IO b -> z3 b
forall a. IO a -> z3 a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO b -> z3 b) -> (Solver -> IO b) -> Solver -> z3 b
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (\Solver
s -> Context -> Solver -> a -> IO b
f_s Context
ctx Solver
s a
a) (Solver -> z3 b) -> z3 Solver -> z3 b
forall (m :: * -> *) a b. Monad m => (a -> m b) -> m a -> m b
=<< z3 Solver
forall (m :: * -> *). MonadZ3 m => m Solver
getSolver
liftSolver2 :: MonadZ3 z3 => (Base.Context -> Base.Solver -> a -> b -> IO c)
-> a -> b -> z3 c
liftSolver2 :: forall (z3 :: * -> *) a b c.
MonadZ3 z3 =>
(Context -> Solver -> a -> b -> IO c) -> a -> b -> z3 c
liftSolver2 Context -> Solver -> a -> b -> IO c
f a
a b
b = do
Context
ctx <- z3 Context
forall (m :: * -> *). MonadZ3 m => m Context
getContext
Solver
slv <- z3 Solver
forall (m :: * -> *). MonadZ3 m => m Solver
getSolver
IO c -> z3 c
forall a. IO a -> z3 a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO c -> z3 c) -> IO c -> z3 c
forall a b. (a -> b) -> a -> b
$ Context -> Solver -> a -> b -> IO c
f Context
ctx Solver
slv a
a b
b
liftFixedpoint0 :: MonadFixedpoint z3 =>
(Base.Context -> Base.Fixedpoint -> IO b)
-> z3 b
liftFixedpoint0 :: forall (z3 :: * -> *) b.
MonadFixedpoint z3 =>
(Context -> Fixedpoint -> IO b) -> z3 b
liftFixedpoint0 Context -> Fixedpoint -> IO b
f_s =
do Context
ctx <- z3 Context
forall (m :: * -> *). MonadZ3 m => m Context
getContext
IO b -> z3 b
forall a. IO a -> z3 a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO b -> z3 b) -> (Fixedpoint -> IO b) -> Fixedpoint -> z3 b
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Context -> Fixedpoint -> IO b
f_s Context
ctx (Fixedpoint -> z3 b) -> z3 Fixedpoint -> z3 b
forall (m :: * -> *) a b. Monad m => (a -> m b) -> m a -> m b
=<< z3 Fixedpoint
forall (m :: * -> *). MonadFixedpoint m => m Fixedpoint
getFixedpoint
liftFixedpoint1 :: MonadFixedpoint z3 =>
(Base.Context -> Base.Fixedpoint -> a -> IO b)
-> a -> z3 b
liftFixedpoint1 :: forall (z3 :: * -> *) a b.
MonadFixedpoint z3 =>
(Context -> Fixedpoint -> a -> IO b) -> a -> z3 b
liftFixedpoint1 Context -> Fixedpoint -> a -> IO b
f_s a
a =
do Context
ctx <- z3 Context
forall (m :: * -> *). MonadZ3 m => m Context
getContext
IO b -> z3 b
forall a. IO a -> z3 a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO b -> z3 b) -> (Fixedpoint -> IO b) -> Fixedpoint -> z3 b
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (\Fixedpoint
s -> Context -> Fixedpoint -> a -> IO b
f_s Context
ctx Fixedpoint
s a
a) (Fixedpoint -> z3 b) -> z3 Fixedpoint -> z3 b
forall (m :: * -> *) a b. Monad m => (a -> m b) -> m a -> m b
=<< z3 Fixedpoint
forall (m :: * -> *). MonadFixedpoint m => m Fixedpoint
getFixedpoint
liftFixedpoint2 :: MonadFixedpoint z3 => (Base.Context -> Base.Fixedpoint -> a -> b -> IO c)
-> a -> b -> z3 c
liftFixedpoint2 :: forall (z3 :: * -> *) a b c.
MonadFixedpoint z3 =>
(Context -> Fixedpoint -> a -> b -> IO c) -> a -> b -> z3 c
liftFixedpoint2 Context -> Fixedpoint -> a -> b -> IO c
f a
a b
b = do
Context
ctx <- z3 Context
forall (m :: * -> *). MonadZ3 m => m Context
getContext
Fixedpoint
slv <- z3 Fixedpoint
forall (m :: * -> *). MonadFixedpoint m => m Fixedpoint
getFixedpoint
IO c -> z3 c
forall a. IO a -> z3 a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO c -> z3 c) -> IO c -> z3 c
forall a b. (a -> b) -> a -> b
$ Context -> Fixedpoint -> a -> b -> IO c
f Context
ctx Fixedpoint
slv a
a b
b
liftOptimize0 :: MonadOptimize z3 =>
(Base.Context -> Base.Optimize -> IO b)
-> z3 b
liftOptimize0 :: forall (z3 :: * -> *) b.
MonadOptimize z3 =>
(Context -> Optimize -> IO b) -> z3 b
liftOptimize0 Context -> Optimize -> IO b
f_s =
do Context
ctx <- z3 Context
forall (m :: * -> *). MonadZ3 m => m Context
getContext
IO b -> z3 b
forall a. IO a -> z3 a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO b -> z3 b) -> (Optimize -> IO b) -> Optimize -> z3 b
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Context -> Optimize -> IO b
f_s Context
ctx (Optimize -> z3 b) -> z3 Optimize -> z3 b
forall (m :: * -> *) a b. Monad m => (a -> m b) -> m a -> m b
=<< z3 Optimize
forall (m :: * -> *). MonadOptimize m => m Optimize
getOptimize
liftOptimize1 :: MonadOptimize z3 =>
(Base.Context -> Base.Optimize -> a -> IO b)
-> a -> z3 b
liftOptimize1 :: forall (z3 :: * -> *) a b.
MonadOptimize z3 =>
(Context -> Optimize -> a -> IO b) -> a -> z3 b
liftOptimize1 Context -> Optimize -> a -> IO b
f_s a
a =
do Context
ctx <- z3 Context
forall (m :: * -> *). MonadZ3 m => m Context
getContext
IO b -> z3 b
forall a. IO a -> z3 a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO b -> z3 b) -> (Optimize -> IO b) -> Optimize -> z3 b
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (\Optimize
s -> Context -> Optimize -> a -> IO b
f_s Context
ctx Optimize
s a
a) (Optimize -> z3 b) -> z3 Optimize -> z3 b
forall (m :: * -> *) a b. Monad m => (a -> m b) -> m a -> m b
=<< z3 Optimize
forall (m :: * -> *). MonadOptimize m => m Optimize
getOptimize
liftOptimize2 :: MonadOptimize z3 => (Base.Context -> Base.Optimize -> a -> b -> IO c)
-> a -> b -> z3 c
liftOptimize2 :: forall (z3 :: * -> *) a b c.
MonadOptimize z3 =>
(Context -> Optimize -> a -> b -> IO c) -> a -> b -> z3 c
liftOptimize2 Context -> Optimize -> a -> b -> IO c
f a
a b
b = do
Context
ctx <- z3 Context
forall (m :: * -> *). MonadZ3 m => m Context
getContext
Optimize
slv <- z3 Optimize
forall (m :: * -> *). MonadOptimize m => m Optimize
getOptimize
IO c -> z3 c
forall a. IO a -> z3 a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO c -> z3 c) -> IO c -> z3 c
forall a b. (a -> b) -> a -> b
$ Context -> Optimize -> a -> b -> IO c
f Context
ctx Optimize
slv a
a b
b
liftOptimize3 :: MonadOptimize z3 => (Base.Context -> Base.Optimize -> a -> b -> c -> IO d)
-> a -> b -> c -> z3 d
liftOptimize3 :: forall (z3 :: * -> *) a b c d.
MonadOptimize z3 =>
(Context -> Optimize -> a -> b -> c -> IO d) -> a -> b -> c -> z3 d
liftOptimize3 Context -> Optimize -> a -> b -> c -> IO d
f a
a b
b c
c = do
Context
ctx <- z3 Context
forall (m :: * -> *). MonadZ3 m => m Context
getContext
Optimize
slv <- z3 Optimize
forall (m :: * -> *). MonadOptimize m => m Optimize
getOptimize
IO d -> z3 d
forall a. IO a -> z3 a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO d -> z3 d) -> IO d -> z3 d
forall a b. (a -> b) -> a -> b
$ Context -> Optimize -> a -> b -> c -> IO d
f Context
ctx Optimize
slv a
a b
b c
c
newtype Z3 a = Z3 { forall a. Z3 a -> ReaderT Z3Env IO a
_unZ3 :: ReaderT Z3Env IO a }
deriving ((forall a b. (a -> b) -> Z3 a -> Z3 b)
-> (forall a b. a -> Z3 b -> Z3 a) -> Functor Z3
forall a b. a -> Z3 b -> Z3 a
forall a b. (a -> b) -> Z3 a -> Z3 b
forall (f :: * -> *).
(forall a b. (a -> b) -> f a -> f b)
-> (forall a b. a -> f b -> f a) -> Functor f
$cfmap :: forall a b. (a -> b) -> Z3 a -> Z3 b
fmap :: forall a b. (a -> b) -> Z3 a -> Z3 b
$c<$ :: forall a b. a -> Z3 b -> Z3 a
<$ :: forall a b. a -> Z3 b -> Z3 a
Functor, Functor Z3
Functor Z3
-> (forall a. a -> Z3 a)
-> (forall a b. Z3 (a -> b) -> Z3 a -> Z3 b)
-> (forall a b c. (a -> b -> c) -> Z3 a -> Z3 b -> Z3 c)
-> (forall a b. Z3 a -> Z3 b -> Z3 b)
-> (forall a b. Z3 a -> Z3 b -> Z3 a)
-> Applicative Z3
forall a. a -> Z3 a
forall a b. Z3 a -> Z3 b -> Z3 a
forall a b. Z3 a -> Z3 b -> Z3 b
forall a b. Z3 (a -> b) -> Z3 a -> Z3 b
forall a b c. (a -> b -> c) -> Z3 a -> Z3 b -> Z3 c
forall (f :: * -> *).
Functor f
-> (forall a. a -> f a)
-> (forall a b. f (a -> b) -> f a -> f b)
-> (forall a b c. (a -> b -> c) -> f a -> f b -> f c)
-> (forall a b. f a -> f b -> f b)
-> (forall a b. f a -> f b -> f a)
-> Applicative f
$cpure :: forall a. a -> Z3 a
pure :: forall a. a -> Z3 a
$c<*> :: forall a b. Z3 (a -> b) -> Z3 a -> Z3 b
<*> :: forall a b. Z3 (a -> b) -> Z3 a -> Z3 b
$cliftA2 :: forall a b c. (a -> b -> c) -> Z3 a -> Z3 b -> Z3 c
liftA2 :: forall a b c. (a -> b -> c) -> Z3 a -> Z3 b -> Z3 c
$c*> :: forall a b. Z3 a -> Z3 b -> Z3 b
*> :: forall a b. Z3 a -> Z3 b -> Z3 b
$c<* :: forall a b. Z3 a -> Z3 b -> Z3 a
<* :: forall a b. Z3 a -> Z3 b -> Z3 a
Applicative, Applicative Z3
Applicative Z3
-> (forall a b. Z3 a -> (a -> Z3 b) -> Z3 b)
-> (forall a b. Z3 a -> Z3 b -> Z3 b)
-> (forall a. a -> Z3 a)
-> Monad Z3
forall a. a -> Z3 a
forall a b. Z3 a -> Z3 b -> Z3 b
forall a b. Z3 a -> (a -> Z3 b) -> Z3 b
forall (m :: * -> *).
Applicative m
-> (forall a b. m a -> (a -> m b) -> m b)
-> (forall a b. m a -> m b -> m b)
-> (forall a. a -> m a)
-> Monad m
$c>>= :: forall a b. Z3 a -> (a -> Z3 b) -> Z3 b
>>= :: forall a b. Z3 a -> (a -> Z3 b) -> Z3 b
$c>> :: forall a b. Z3 a -> Z3 b -> Z3 b
>> :: forall a b. Z3 a -> Z3 b -> Z3 b
$creturn :: forall a. a -> Z3 a
return :: forall a. a -> Z3 a
Monad, Monad Z3
Monad Z3 -> (forall a. IO a -> Z3 a) -> MonadIO Z3
forall a. IO a -> Z3 a
forall (m :: * -> *).
Monad m -> (forall a. IO a -> m a) -> MonadIO m
$cliftIO :: forall a. IO a -> Z3 a
liftIO :: forall a. IO a -> Z3 a
MonadIO, Monad Z3
Monad Z3 -> (forall a. (a -> Z3 a) -> Z3 a) -> MonadFix Z3
forall a. (a -> Z3 a) -> Z3 a
forall (m :: * -> *).
Monad m -> (forall a. (a -> m a) -> m a) -> MonadFix m
$cmfix :: forall a. (a -> Z3 a) -> Z3 a
mfix :: forall a. (a -> Z3 a) -> Z3 a
MonadFix, Monad Z3
Monad Z3 -> (forall a. String -> Z3 a) -> MonadFail Z3
forall a. String -> Z3 a
forall (m :: * -> *).
Monad m -> (forall a. String -> m a) -> MonadFail m
$cfail :: forall a. String -> Z3 a
fail :: forall a. String -> Z3 a
MonadFail)
data Z3Env
= Z3Env {
Z3Env -> Solver
envSolver :: Base.Solver
, Z3Env -> Context
envContext :: Base.Context
, Z3Env -> Fixedpoint
envFixedpoint :: Base.Fixedpoint
, Z3Env -> Optimize
envOptimize :: Base.Optimize
}
instance MonadZ3 Z3 where
getSolver :: Z3 Solver
getSolver = ReaderT Z3Env IO Solver -> Z3 Solver
forall a. ReaderT Z3Env IO a -> Z3 a
Z3 (ReaderT Z3Env IO Solver -> Z3 Solver)
-> ReaderT Z3Env IO Solver -> Z3 Solver
forall a b. (a -> b) -> a -> b
$ (Z3Env -> Solver) -> ReaderT Z3Env IO Solver
forall (m :: * -> *) r a. Monad m => (r -> a) -> ReaderT r m a
asks Z3Env -> Solver
envSolver
getContext :: Z3 Context
getContext = ReaderT Z3Env IO Context -> Z3 Context
forall a. ReaderT Z3Env IO a -> Z3 a
Z3 (ReaderT Z3Env IO Context -> Z3 Context)
-> ReaderT Z3Env IO Context -> Z3 Context
forall a b. (a -> b) -> a -> b
$ (Z3Env -> Context) -> ReaderT Z3Env IO Context
forall (m :: * -> *) r a. Monad m => (r -> a) -> ReaderT r m a
asks Z3Env -> Context
envContext
instance MonadFixedpoint Z3 where
getFixedpoint :: Z3 Fixedpoint
getFixedpoint = ReaderT Z3Env IO Fixedpoint -> Z3 Fixedpoint
forall a. ReaderT Z3Env IO a -> Z3 a
Z3 (ReaderT Z3Env IO Fixedpoint -> Z3 Fixedpoint)
-> ReaderT Z3Env IO Fixedpoint -> Z3 Fixedpoint
forall a b. (a -> b) -> a -> b
$ (Z3Env -> Fixedpoint) -> ReaderT Z3Env IO Fixedpoint
forall (m :: * -> *) r a. Monad m => (r -> a) -> ReaderT r m a
asks Z3Env -> Fixedpoint
envFixedpoint
instance MonadOptimize Z3 where
getOptimize :: Z3 Optimize
getOptimize = ReaderT Z3Env IO Optimize -> Z3 Optimize
forall a. ReaderT Z3Env IO a -> Z3 a
Z3 (ReaderT Z3Env IO Optimize -> Z3 Optimize)
-> ReaderT Z3Env IO Optimize -> Z3 Optimize
forall a b. (a -> b) -> a -> b
$ (Z3Env -> Optimize) -> ReaderT Z3Env IO Optimize
forall (m :: * -> *) r a. Monad m => (r -> a) -> ReaderT r m a
asks Z3Env -> Optimize
envOptimize
evalZ3With :: Maybe Logic -> Opts -> Z3 a -> IO a
evalZ3With :: forall a. Maybe Logic -> Opts -> Z3 a -> IO a
evalZ3With Maybe Logic
mbLogic Opts
opts (Z3 ReaderT Z3Env IO a
s) = do
Z3Env
env <- Maybe Logic -> Opts -> IO Z3Env
newEnv Maybe Logic
mbLogic Opts
opts
ReaderT Z3Env IO a -> Z3Env -> IO a
forall r (m :: * -> *) a. ReaderT r m a -> r -> m a
runReaderT ReaderT Z3Env IO a
s Z3Env
env
evalZ3 :: Z3 a -> IO a
evalZ3 :: forall a. Z3 a -> IO a
evalZ3 = Maybe Logic -> Opts -> Z3 a -> IO a
forall a. Maybe Logic -> Opts -> Z3 a -> IO a
evalZ3With Maybe Logic
forall a. Maybe a
Nothing Opts
stdOpts
newEnvWith :: (Base.Config -> IO Base.Context) -> Maybe Logic -> Opts -> IO Z3Env
newEnvWith :: (Config -> IO Context) -> Maybe Logic -> Opts -> IO Z3Env
newEnvWith Config -> IO Context
mkContext Maybe Logic
mbLogic Opts
opts =
(Config -> IO Z3Env) -> IO Z3Env
forall a. (Config -> IO a) -> IO a
Base.withConfig ((Config -> IO Z3Env) -> IO Z3Env)
-> (Config -> IO Z3Env) -> IO Z3Env
forall a b. (a -> b) -> a -> b
$ \Config
cfg -> do
Config -> Opts -> IO ()
setOpts Config
cfg Opts
opts
Context
ctx <- Config -> IO Context
mkContext Config
cfg
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
Optimize
optimize <- Context -> IO Optimize
Base.mkOptimize Context
ctx
Z3Env -> IO Z3Env
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return (Z3Env -> IO Z3Env) -> Z3Env -> IO Z3Env
forall a b. (a -> b) -> a -> b
$ Solver -> Context -> Fixedpoint -> Optimize -> Z3Env
Z3Env Solver
solver Context
ctx Fixedpoint
fixedpoint Optimize
optimize
newEnv :: Maybe Logic -> Opts -> IO Z3Env
newEnv :: Maybe Logic -> Opts -> IO Z3Env
newEnv = (Config -> IO Context) -> Maybe Logic -> Opts -> IO Z3Env
newEnvWith Config -> IO Context
Base.mkContext
evalZ3WithEnv :: Z3 a
-> Z3Env
-> IO a
evalZ3WithEnv :: forall a. Z3 a -> Z3Env -> IO a
evalZ3WithEnv (Z3 ReaderT Z3Env IO a
s) = ReaderT Z3Env IO a -> Z3Env -> IO a
forall r (m :: * -> *) a. ReaderT r m a -> r -> m a
runReaderT ReaderT Z3Env IO a
s
mkParams :: MonadZ3 z3 => z3 Params
mkParams :: forall (z3 :: * -> *). MonadZ3 z3 => z3 Params
mkParams = (Context -> IO Params) -> z3 Params
forall (z3 :: * -> *) b. MonadZ3 z3 => (Context -> IO b) -> z3 b
liftScalar Context -> IO Params
Base.mkParams
paramsSetBool :: MonadZ3 z3 => Params -> Symbol -> Bool -> z3 ()
paramsSetBool :: forall (z3 :: * -> *).
MonadZ3 z3 =>
Params -> Symbol -> Bool -> z3 ()
paramsSetBool = (Context -> Params -> Symbol -> Bool -> IO ())
-> Params -> Symbol -> Bool -> z3 ()
forall (z3 :: * -> *) a b c d.
MonadZ3 z3 =>
(Context -> a -> b -> c -> IO d) -> a -> b -> c -> z3 d
liftFun3 Context -> Params -> Symbol -> Bool -> IO ()
Base.paramsSetBool
paramsSetUInt :: MonadZ3 z3 => Params -> Symbol -> Word -> z3 ()
paramsSetUInt :: forall (z3 :: * -> *).
MonadZ3 z3 =>
Params -> Symbol -> Word -> z3 ()
paramsSetUInt = (Context -> Params -> Symbol -> Word -> IO ())
-> Params -> Symbol -> Word -> z3 ()
forall (z3 :: * -> *) a b c d.
MonadZ3 z3 =>
(Context -> a -> b -> c -> IO d) -> a -> b -> c -> z3 d
liftFun3 Context -> Params -> Symbol -> Word -> IO ()
Base.paramsSetUInt
paramsSetDouble :: MonadZ3 z3 => Params -> Symbol -> Double -> z3 ()
paramsSetDouble :: forall (z3 :: * -> *).
MonadZ3 z3 =>
Params -> Symbol -> Double -> z3 ()
paramsSetDouble = (Context -> Params -> Symbol -> Double -> IO ())
-> Params -> Symbol -> Double -> z3 ()
forall (z3 :: * -> *) a b c d.
MonadZ3 z3 =>
(Context -> a -> b -> c -> IO d) -> a -> b -> c -> z3 d
liftFun3 Context -> Params -> Symbol -> Double -> IO ()
Base.paramsSetDouble
paramsSetSymbol :: MonadZ3 z3 => Params -> Symbol -> Symbol -> z3 ()
paramsSetSymbol :: forall (z3 :: * -> *).
MonadZ3 z3 =>
Params -> Symbol -> Symbol -> z3 ()
paramsSetSymbol = (Context -> Params -> Symbol -> Symbol -> IO ())
-> Params -> Symbol -> Symbol -> z3 ()
forall (z3 :: * -> *) a b c d.
MonadZ3 z3 =>
(Context -> a -> b -> c -> IO d) -> a -> b -> c -> z3 d
liftFun3 Context -> Params -> Symbol -> Symbol -> IO ()
Base.paramsSetSymbol
paramsToString :: MonadZ3 z3 => Params -> z3 String
paramsToString :: forall (z3 :: * -> *). MonadZ3 z3 => Params -> z3 String
paramsToString = (Context -> Params -> IO String) -> Params -> z3 String
forall (z3 :: * -> *) a b.
MonadZ3 z3 =>
(Context -> a -> IO b) -> a -> z3 b
liftFun1 Context -> Params -> IO String
Base.paramsToString
mkIntSymbol :: (MonadZ3 z3, Integral i) => i -> z3 Symbol
mkIntSymbol :: forall (z3 :: * -> *) i. (MonadZ3 z3, Integral i) => i -> z3 Symbol
mkIntSymbol = (Context -> i -> IO Symbol) -> i -> z3 Symbol
forall (z3 :: * -> *) a b.
MonadZ3 z3 =>
(Context -> a -> IO b) -> a -> z3 b
liftFun1 Context -> i -> IO Symbol
forall int. Integral int => Context -> int -> IO Symbol
Base.mkIntSymbol
mkStringSymbol :: MonadZ3 z3 => String -> z3 Symbol
mkStringSymbol :: forall (z3 :: * -> *). MonadZ3 z3 => String -> z3 Symbol
mkStringSymbol = (Context -> String -> IO Symbol) -> String -> z3 Symbol
forall (z3 :: * -> *) a b.
MonadZ3 z3 =>
(Context -> a -> IO b) -> a -> z3 b
liftFun1 Context -> String -> IO Symbol
Base.mkStringSymbol
mkUninterpretedSort :: MonadZ3 z3 => Symbol -> z3 Sort
mkUninterpretedSort :: forall (z3 :: * -> *). MonadZ3 z3 => Symbol -> z3 Sort
mkUninterpretedSort = (Context -> Symbol -> IO Sort) -> Symbol -> z3 Sort
forall (z3 :: * -> *) a b.
MonadZ3 z3 =>
(Context -> a -> IO b) -> a -> z3 b
liftFun1 Context -> Symbol -> IO Sort
Base.mkUninterpretedSort
mkBoolSort :: MonadZ3 z3 => z3 Sort
mkBoolSort :: forall (z3 :: * -> *). MonadZ3 z3 => z3 Sort
mkBoolSort = (Context -> IO Sort) -> z3 Sort
forall (z3 :: * -> *) b. MonadZ3 z3 => (Context -> IO b) -> z3 b
liftScalar Context -> IO Sort
Base.mkBoolSort
mkIntSort :: MonadZ3 z3 => z3 Sort
mkIntSort :: forall (z3 :: * -> *). MonadZ3 z3 => z3 Sort
mkIntSort = (Context -> IO Sort) -> z3 Sort
forall (z3 :: * -> *) b. MonadZ3 z3 => (Context -> IO b) -> z3 b
liftScalar Context -> IO Sort
Base.mkIntSort
mkRealSort :: MonadZ3 z3 => z3 Sort
mkRealSort :: forall (z3 :: * -> *). MonadZ3 z3 => z3 Sort
mkRealSort = (Context -> IO Sort) -> z3 Sort
forall (z3 :: * -> *) b. MonadZ3 z3 => (Context -> IO b) -> z3 b
liftScalar Context -> IO Sort
Base.mkRealSort
mkBvSort :: MonadZ3 z3 => Int -> z3 Sort
mkBvSort :: forall (z3 :: * -> *). MonadZ3 z3 => Int -> z3 Sort
mkBvSort = (Context -> Int -> IO Sort) -> Int -> z3 Sort
forall (z3 :: * -> *) a b.
MonadZ3 z3 =>
(Context -> a -> IO b) -> a -> z3 b
liftFun1 Context -> Int -> IO Sort
forall int. Integral int => Context -> int -> IO Sort
Base.mkBvSort
mkFiniteDomainSort :: MonadZ3 z3 => Symbol -> Word64 -> z3 Sort
mkFiniteDomainSort :: forall (z3 :: * -> *). MonadZ3 z3 => Symbol -> Word64 -> z3 Sort
mkFiniteDomainSort = (Context -> Symbol -> Word64 -> IO Sort)
-> Symbol -> Word64 -> z3 Sort
forall (z3 :: * -> *) a b c.
MonadZ3 z3 =>
(Context -> a -> b -> IO c) -> a -> b -> z3 c
liftFun2 Context -> Symbol -> Word64 -> IO Sort
Base.mkFiniteDomainSort
mkArraySort :: MonadZ3 z3 => Sort -> Sort -> z3 Sort
mkArraySort :: forall (z3 :: * -> *). MonadZ3 z3 => Sort -> Sort -> z3 Sort
mkArraySort = (Context -> Sort -> Sort -> IO Sort) -> Sort -> Sort -> z3 Sort
forall (z3 :: * -> *) a b c.
MonadZ3 z3 =>
(Context -> a -> b -> IO c) -> a -> b -> z3 c
liftFun2 Context -> Sort -> Sort -> IO Sort
Base.mkArraySort
mkTupleSort :: MonadZ3 z3
=> Symbol
-> [(Symbol, Sort)]
-> z3 (Sort, FuncDecl, [FuncDecl])
mkTupleSort :: forall (z3 :: * -> *).
MonadZ3 z3 =>
Symbol -> [(Symbol, Sort)] -> z3 (Sort, FuncDecl, [FuncDecl])
mkTupleSort = (Context
-> Symbol -> [(Symbol, Sort)] -> IO (Sort, FuncDecl, [FuncDecl]))
-> Symbol -> [(Symbol, Sort)] -> z3 (Sort, FuncDecl, [FuncDecl])
forall (z3 :: * -> *) a b c.
MonadZ3 z3 =>
(Context -> a -> b -> IO c) -> a -> b -> z3 c
liftFun2 Context
-> Symbol -> [(Symbol, Sort)] -> IO (Sort, FuncDecl, [FuncDecl])
Base.mkTupleSort
mkConstructor :: MonadZ3 z3
=> Symbol
-> Symbol
-> [(Symbol, Maybe Sort, Int)]
-> z3 Constructor
mkConstructor :: forall (z3 :: * -> *).
MonadZ3 z3 =>
Symbol -> Symbol -> [(Symbol, Maybe Sort, Int)] -> z3 Constructor
mkConstructor = (Context
-> Symbol
-> Symbol
-> [(Symbol, Maybe Sort, Int)]
-> IO Constructor)
-> Symbol
-> Symbol
-> [(Symbol, Maybe Sort, Int)]
-> z3 Constructor
forall (z3 :: * -> *) a b c d.
MonadZ3 z3 =>
(Context -> a -> b -> c -> IO d) -> a -> b -> c -> z3 d
liftFun3 Context
-> Symbol
-> Symbol
-> [(Symbol, Maybe Sort, Int)]
-> IO Constructor
Base.mkConstructor
mkDatatype :: MonadZ3 z3
=> Symbol
-> [Constructor]
-> z3 Sort
mkDatatype :: forall (z3 :: * -> *).
MonadZ3 z3 =>
Symbol -> [Constructor] -> z3 Sort
mkDatatype = (Context -> Symbol -> [Constructor] -> IO Sort)
-> Symbol -> [Constructor] -> z3 Sort
forall (z3 :: * -> *) a b c.
MonadZ3 z3 =>
(Context -> a -> b -> IO c) -> a -> b -> z3 c
liftFun2 Context -> Symbol -> [Constructor] -> IO Sort
Base.mkDatatype
mkDatatypes :: MonadZ3 z3
=> [Symbol]
-> [[Constructor]]
-> z3 [Sort]
mkDatatypes :: forall (z3 :: * -> *).
MonadZ3 z3 =>
[Symbol] -> [[Constructor]] -> z3 [Sort]
mkDatatypes = (Context -> [Symbol] -> [[Constructor]] -> IO [Sort])
-> [Symbol] -> [[Constructor]] -> z3 [Sort]
forall (z3 :: * -> *) a b c.
MonadZ3 z3 =>
(Context -> a -> b -> IO c) -> a -> b -> z3 c
liftFun2 Context -> [Symbol] -> [[Constructor]] -> IO [Sort]
Base.mkDatatypes
mkSetSort :: MonadZ3 z3 => Sort -> z3 Sort
mkSetSort :: forall (z3 :: * -> *). MonadZ3 z3 => Sort -> z3 Sort
mkSetSort = (Context -> Sort -> IO Sort) -> Sort -> z3 Sort
forall (z3 :: * -> *) a b.
MonadZ3 z3 =>
(Context -> a -> IO b) -> a -> z3 b
liftFun1 Context -> Sort -> IO Sort
Base.mkSetSort
mkFuncDecl :: MonadZ3 z3 => Symbol -> [Sort] -> Sort -> z3 FuncDecl
mkFuncDecl :: forall (z3 :: * -> *).
MonadZ3 z3 =>
Symbol -> [Sort] -> Sort -> z3 FuncDecl
mkFuncDecl = (Context -> Symbol -> [Sort] -> Sort -> IO FuncDecl)
-> Symbol -> [Sort] -> Sort -> z3 FuncDecl
forall (z3 :: * -> *) a b c d.
MonadZ3 z3 =>
(Context -> a -> b -> c -> IO d) -> a -> b -> c -> z3 d
liftFun3 Context -> Symbol -> [Sort] -> Sort -> IO FuncDecl
Base.mkFuncDecl
mkApp :: MonadZ3 z3 => FuncDecl -> [AST] -> z3 AST
mkApp :: forall (z3 :: * -> *). MonadZ3 z3 => FuncDecl -> [AST] -> z3 AST
mkApp = (Context -> FuncDecl -> [AST] -> IO AST)
-> FuncDecl -> [AST] -> z3 AST
forall (z3 :: * -> *) a b c.
MonadZ3 z3 =>
(Context -> a -> b -> IO c) -> a -> b -> z3 c
liftFun2 Context -> FuncDecl -> [AST] -> IO AST
Base.mkApp
mkConst :: MonadZ3 z3 => Symbol -> Sort -> z3 AST
mkConst :: forall (z3 :: * -> *). MonadZ3 z3 => Symbol -> Sort -> z3 AST
mkConst = (Context -> Symbol -> Sort -> IO AST) -> Symbol -> Sort -> z3 AST
forall (z3 :: * -> *) a b c.
MonadZ3 z3 =>
(Context -> a -> b -> IO c) -> a -> b -> z3 c
liftFun2 Context -> Symbol -> Sort -> IO AST
Base.mkConst
mkFreshConst :: MonadZ3 z3 => String -> Sort -> z3 AST
mkFreshConst :: forall (z3 :: * -> *). MonadZ3 z3 => String -> Sort -> z3 AST
mkFreshConst = (Context -> String -> Sort -> IO AST) -> String -> Sort -> z3 AST
forall (z3 :: * -> *) a b c.
MonadZ3 z3 =>
(Context -> a -> b -> IO c) -> a -> b -> z3 c
liftFun2 Context -> String -> Sort -> IO AST
Base.mkFreshConst
mkFreshFuncDecl :: MonadZ3 z3 => String -> [Sort] -> Sort -> z3 FuncDecl
mkFreshFuncDecl :: forall (z3 :: * -> *).
MonadZ3 z3 =>
String -> [Sort] -> Sort -> z3 FuncDecl
mkFreshFuncDecl = (Context -> String -> [Sort] -> Sort -> IO FuncDecl)
-> String -> [Sort] -> Sort -> z3 FuncDecl
forall (z3 :: * -> *) a b c d.
MonadZ3 z3 =>
(Context -> a -> b -> c -> IO d) -> a -> b -> c -> z3 d
liftFun3 Context -> String -> [Sort] -> Sort -> IO FuncDecl
Base.mkFreshFuncDecl
mkRecFuncDecl :: MonadZ3 z3 => Symbol -> [Sort] -> Sort -> z3 FuncDecl
mkRecFuncDecl :: forall (z3 :: * -> *).
MonadZ3 z3 =>
Symbol -> [Sort] -> Sort -> z3 FuncDecl
mkRecFuncDecl = (Context -> Symbol -> [Sort] -> Sort -> IO FuncDecl)
-> Symbol -> [Sort] -> Sort -> z3 FuncDecl
forall (z3 :: * -> *) a b c d.
MonadZ3 z3 =>
(Context -> a -> b -> c -> IO d) -> a -> b -> c -> z3 d
liftFun3 Context -> Symbol -> [Sort] -> Sort -> IO FuncDecl
Base.mkRecFuncDecl
addRecDef :: MonadZ3 z3 => FuncDecl -> [AST] -> AST -> z3 ()
addRecDef :: forall (z3 :: * -> *).
MonadZ3 z3 =>
FuncDecl -> [AST] -> AST -> z3 ()
addRecDef = (Context -> FuncDecl -> [AST] -> AST -> IO ())
-> FuncDecl -> [AST] -> AST -> z3 ()
forall (z3 :: * -> *) a b c d.
MonadZ3 z3 =>
(Context -> a -> b -> c -> IO d) -> a -> b -> c -> z3 d
liftFun3 Context -> FuncDecl -> [AST] -> AST -> IO ()
Base.addRecDef
mkVar :: MonadZ3 z3 => Symbol -> Sort -> z3 AST
mkVar :: forall (z3 :: * -> *). MonadZ3 z3 => Symbol -> Sort -> z3 AST
mkVar = (Context -> Symbol -> Sort -> IO AST) -> Symbol -> Sort -> z3 AST
forall (z3 :: * -> *) a b c.
MonadZ3 z3 =>
(Context -> a -> b -> IO c) -> a -> b -> z3 c
liftFun2 Context -> Symbol -> Sort -> IO AST
Base.mkVar
mkBoolVar :: MonadZ3 z3 => Symbol -> z3 AST
mkBoolVar :: forall (z3 :: * -> *). MonadZ3 z3 => Symbol -> z3 AST
mkBoolVar = (Context -> Symbol -> IO AST) -> Symbol -> z3 AST
forall (z3 :: * -> *) a b.
MonadZ3 z3 =>
(Context -> a -> IO b) -> a -> z3 b
liftFun1 Context -> Symbol -> IO AST
Base.mkBoolVar
mkRealVar :: MonadZ3 z3 => Symbol -> z3 AST
mkRealVar :: forall (z3 :: * -> *). MonadZ3 z3 => Symbol -> z3 AST
mkRealVar = (Context -> Symbol -> IO AST) -> Symbol -> z3 AST
forall (z3 :: * -> *) a b.
MonadZ3 z3 =>
(Context -> a -> IO b) -> a -> z3 b
liftFun1 Context -> Symbol -> IO AST
Base.mkRealVar
mkIntVar :: MonadZ3 z3 => Symbol -> z3 AST
mkIntVar :: forall (z3 :: * -> *). MonadZ3 z3 => Symbol -> z3 AST
mkIntVar = (Context -> Symbol -> IO AST) -> Symbol -> z3 AST
forall (z3 :: * -> *) a b.
MonadZ3 z3 =>
(Context -> a -> IO b) -> a -> z3 b
liftFun1 Context -> Symbol -> IO AST
Base.mkIntVar
mkBvVar :: MonadZ3 z3 => Symbol
-> Int
-> z3 AST
mkBvVar :: forall (z3 :: * -> *). MonadZ3 z3 => Symbol -> Int -> z3 AST
mkBvVar = (Context -> Symbol -> Int -> IO AST) -> Symbol -> Int -> z3 AST
forall (z3 :: * -> *) a b c.
MonadZ3 z3 =>
(Context -> a -> b -> IO c) -> a -> b -> z3 c
liftFun2 Context -> Symbol -> Int -> IO AST
Base.mkBvVar
mkFreshVar :: MonadZ3 z3 => String -> Sort -> z3 AST
mkFreshVar :: forall (z3 :: * -> *). MonadZ3 z3 => String -> Sort -> z3 AST
mkFreshVar = (Context -> String -> Sort -> IO AST) -> String -> Sort -> z3 AST
forall (z3 :: * -> *) a b c.
MonadZ3 z3 =>
(Context -> a -> b -> IO c) -> a -> b -> z3 c
liftFun2 Context -> String -> Sort -> IO AST
Base.mkFreshConst
mkFreshBoolVar :: MonadZ3 z3 => String -> z3 AST
mkFreshBoolVar :: forall (z3 :: * -> *). MonadZ3 z3 => String -> z3 AST
mkFreshBoolVar = (Context -> String -> IO AST) -> String -> z3 AST
forall (z3 :: * -> *) a b.
MonadZ3 z3 =>
(Context -> a -> IO b) -> a -> z3 b
liftFun1 Context -> String -> IO AST
Base.mkFreshBoolVar
mkFreshRealVar :: MonadZ3 z3 => String -> z3 AST
mkFreshRealVar :: forall (z3 :: * -> *). MonadZ3 z3 => String -> z3 AST
mkFreshRealVar = (Context -> String -> IO AST) -> String -> z3 AST
forall (z3 :: * -> *) a b.
MonadZ3 z3 =>
(Context -> a -> IO b) -> a -> z3 b
liftFun1 Context -> String -> IO AST
Base.mkFreshRealVar
mkFreshIntVar :: MonadZ3 z3 => String -> z3 AST
mkFreshIntVar :: forall (z3 :: * -> *). MonadZ3 z3 => String -> z3 AST
mkFreshIntVar = (Context -> String -> IO AST) -> String -> z3 AST
forall (z3 :: * -> *) a b.
MonadZ3 z3 =>
(Context -> a -> IO b) -> a -> z3 b
liftFun1 Context -> String -> IO AST
Base.mkFreshIntVar
mkFreshBvVar :: MonadZ3 z3 => String
-> Int
-> z3 AST
mkFreshBvVar :: forall (z3 :: * -> *). MonadZ3 z3 => String -> Int -> z3 AST
mkFreshBvVar = (Context -> String -> Int -> IO AST) -> String -> Int -> z3 AST
forall (z3 :: * -> *) a b c.
MonadZ3 z3 =>
(Context -> a -> b -> IO c) -> a -> b -> z3 c
liftFun2 Context -> String -> Int -> IO AST
Base.mkFreshBvVar
mkTrue :: MonadZ3 z3 => z3 AST
mkTrue :: forall (z3 :: * -> *). MonadZ3 z3 => z3 AST
mkTrue = (Context -> IO AST) -> z3 AST
forall (z3 :: * -> *) b. MonadZ3 z3 => (Context -> IO b) -> z3 b
liftScalar Context -> IO AST
Base.mkTrue
mkFalse :: MonadZ3 z3 => z3 AST
mkFalse :: forall (z3 :: * -> *). MonadZ3 z3 => z3 AST
mkFalse = (Context -> IO AST) -> z3 AST
forall (z3 :: * -> *) b. MonadZ3 z3 => (Context -> IO b) -> z3 b
liftScalar Context -> IO AST
Base.mkFalse
mkEq :: MonadZ3 z3 => AST -> AST -> z3 AST
mkEq :: forall (z3 :: * -> *). MonadZ3 z3 => AST -> AST -> z3 AST
mkEq = (Context -> AST -> AST -> IO AST) -> AST -> AST -> z3 AST
forall (z3 :: * -> *) a b c.
MonadZ3 z3 =>
(Context -> a -> b -> IO c) -> a -> b -> z3 c
liftFun2 Context -> AST -> AST -> IO AST
Base.mkEq
mkDistinct :: MonadZ3 z3 => [AST] -> z3 AST
mkDistinct :: forall (z3 :: * -> *). MonadZ3 z3 => [AST] -> z3 AST
mkDistinct = (Context -> [AST] -> IO AST) -> [AST] -> z3 AST
forall (z3 :: * -> *) a b.
MonadZ3 z3 =>
(Context -> a -> IO b) -> a -> z3 b
liftFun1 Context -> [AST] -> IO AST
Base.mkDistinct
mkDistinct1 :: MonadZ3 z3 => NonEmpty AST -> z3 AST
mkDistinct1 :: forall (z3 :: * -> *). MonadZ3 z3 => NonEmpty AST -> z3 AST
mkDistinct1 = (Context -> NonEmpty AST -> IO AST) -> NonEmpty AST -> z3 AST
forall (z3 :: * -> *) a b.
MonadZ3 z3 =>
(Context -> a -> IO b) -> a -> z3 b
liftFun1 Context -> NonEmpty AST -> IO AST
Base.mkDistinct1
mkNot :: MonadZ3 z3 => AST -> z3 AST
mkNot :: forall (z3 :: * -> *). MonadZ3 z3 => AST -> z3 AST
mkNot = (Context -> AST -> IO AST) -> AST -> z3 AST
forall (z3 :: * -> *) a b.
MonadZ3 z3 =>
(Context -> a -> IO b) -> a -> z3 b
liftFun1 Context -> AST -> IO AST
Base.mkNot
mkIte :: MonadZ3 z3 => AST -> AST -> AST -> z3 AST
mkIte :: forall (z3 :: * -> *). MonadZ3 z3 => AST -> AST -> AST -> z3 AST
mkIte = (Context -> AST -> AST -> AST -> IO AST)
-> AST -> AST -> AST -> z3 AST
forall (z3 :: * -> *) a b c d.
MonadZ3 z3 =>
(Context -> a -> b -> c -> IO d) -> a -> b -> c -> z3 d
liftFun3 Context -> AST -> AST -> AST -> IO AST
Base.mkIte
mkIff :: MonadZ3 z3 => AST -> AST -> z3 AST
mkIff :: forall (z3 :: * -> *). MonadZ3 z3 => AST -> AST -> z3 AST
mkIff = (Context -> AST -> AST -> IO AST) -> AST -> AST -> z3 AST
forall (z3 :: * -> *) a b c.
MonadZ3 z3 =>
(Context -> a -> b -> IO c) -> a -> b -> z3 c
liftFun2 Context -> AST -> AST -> IO AST
Base.mkIff
mkImplies :: MonadZ3 z3 => AST -> AST -> z3 AST
mkImplies :: forall (z3 :: * -> *). MonadZ3 z3 => AST -> AST -> z3 AST
mkImplies = (Context -> AST -> AST -> IO AST) -> AST -> AST -> z3 AST
forall (z3 :: * -> *) a b c.
MonadZ3 z3 =>
(Context -> a -> b -> IO c) -> a -> b -> z3 c
liftFun2 Context -> AST -> AST -> IO AST
Base.mkImplies
mkXor :: MonadZ3 z3 => AST -> AST -> z3 AST
mkXor :: forall (z3 :: * -> *). MonadZ3 z3 => AST -> AST -> z3 AST
mkXor = (Context -> AST -> AST -> IO AST) -> AST -> AST -> z3 AST
forall (z3 :: * -> *) a b c.
MonadZ3 z3 =>
(Context -> a -> b -> IO c) -> a -> b -> z3 c
liftFun2 Context -> AST -> AST -> IO AST
Base.mkXor
mkAnd :: MonadZ3 z3 => [AST] -> z3 AST
mkAnd :: forall (z3 :: * -> *). MonadZ3 z3 => [AST] -> z3 AST
mkAnd = (Context -> [AST] -> IO AST) -> [AST] -> z3 AST
forall (z3 :: * -> *) a b.
MonadZ3 z3 =>
(Context -> a -> IO b) -> a -> z3 b
liftFun1 Context -> [AST] -> IO AST
Base.mkAnd
mkOr :: MonadZ3 z3 => [AST] -> z3 AST
mkOr :: forall (z3 :: * -> *). MonadZ3 z3 => [AST] -> z3 AST
mkOr = (Context -> [AST] -> IO AST) -> [AST] -> z3 AST
forall (z3 :: * -> *) a b.
MonadZ3 z3 =>
(Context -> a -> IO b) -> a -> z3 b
liftFun1 Context -> [AST] -> IO AST
Base.mkOr
mkBool :: MonadZ3 z3 => Bool -> z3 AST
mkBool :: forall (z3 :: * -> *). MonadZ3 z3 => Bool -> z3 AST
mkBool = (Context -> Bool -> IO AST) -> Bool -> z3 AST
forall (z3 :: * -> *) a b.
MonadZ3 z3 =>
(Context -> a -> IO b) -> a -> z3 b
liftFun1 Context -> Bool -> IO AST
Base.mkBool
mkAdd :: MonadZ3 z3 => [AST] -> z3 AST
mkAdd :: forall (z3 :: * -> *). MonadZ3 z3 => [AST] -> z3 AST
mkAdd = (Context -> [AST] -> IO AST) -> [AST] -> z3 AST
forall (z3 :: * -> *) a b.
MonadZ3 z3 =>
(Context -> a -> IO b) -> a -> z3 b
liftFun1 Context -> [AST] -> IO AST
Base.mkAdd
mkMul :: MonadZ3 z3 => [AST] -> z3 AST
mkMul :: forall (z3 :: * -> *). MonadZ3 z3 => [AST] -> z3 AST
mkMul = (Context -> [AST] -> IO AST) -> [AST] -> z3 AST
forall (z3 :: * -> *) a b.
MonadZ3 z3 =>
(Context -> a -> IO b) -> a -> z3 b
liftFun1 Context -> [AST] -> IO AST
Base.mkMul
mkSub :: MonadZ3 z3 => [AST] -> z3 AST
mkSub :: forall (z3 :: * -> *). MonadZ3 z3 => [AST] -> z3 AST
mkSub = (Context -> [AST] -> IO AST) -> [AST] -> z3 AST
forall (z3 :: * -> *) a b.
MonadZ3 z3 =>
(Context -> a -> IO b) -> a -> z3 b
liftFun1 Context -> [AST] -> IO AST
Base.mkSub
mkSub1 :: MonadZ3 z3 => NonEmpty AST -> z3 AST
mkSub1 :: forall (z3 :: * -> *). MonadZ3 z3 => NonEmpty AST -> z3 AST
mkSub1 = (Context -> NonEmpty AST -> IO AST) -> NonEmpty AST -> z3 AST
forall (z3 :: * -> *) a b.
MonadZ3 z3 =>
(Context -> a -> IO b) -> a -> z3 b
liftFun1 Context -> NonEmpty AST -> IO AST
Base.mkSub1
mkUnaryMinus :: MonadZ3 z3 => AST -> z3 AST
mkUnaryMinus :: forall (z3 :: * -> *). MonadZ3 z3 => AST -> z3 AST
mkUnaryMinus = (Context -> AST -> IO AST) -> AST -> z3 AST
forall (z3 :: * -> *) a b.
MonadZ3 z3 =>
(Context -> a -> IO b) -> a -> z3 b
liftFun1 Context -> AST -> IO AST
Base.mkUnaryMinus
mkDiv :: MonadZ3 z3 => AST -> AST -> z3 AST
mkDiv :: forall (z3 :: * -> *). MonadZ3 z3 => AST -> AST -> z3 AST
mkDiv = (Context -> AST -> AST -> IO AST) -> AST -> AST -> z3 AST
forall (z3 :: * -> *) a b c.
MonadZ3 z3 =>
(Context -> a -> b -> IO c) -> a -> b -> z3 c
liftFun2 Context -> AST -> AST -> IO AST
Base.mkDiv
mkMod :: MonadZ3 z3 => AST -> AST -> z3 AST
mkMod :: forall (z3 :: * -> *). MonadZ3 z3 => AST -> AST -> z3 AST
mkMod = (Context -> AST -> AST -> IO AST) -> AST -> AST -> z3 AST
forall (z3 :: * -> *) a b c.
MonadZ3 z3 =>
(Context -> a -> b -> IO c) -> a -> b -> z3 c
liftFun2 Context -> AST -> AST -> IO AST
Base.mkMod
mkRem :: MonadZ3 z3 => AST -> AST -> z3 AST
mkRem :: forall (z3 :: * -> *). MonadZ3 z3 => AST -> AST -> z3 AST
mkRem = (Context -> AST -> AST -> IO AST) -> AST -> AST -> z3 AST
forall (z3 :: * -> *) a b c.
MonadZ3 z3 =>
(Context -> a -> b -> IO c) -> a -> b -> z3 c
liftFun2 Context -> AST -> AST -> IO AST
Base.mkRem
mkPower :: MonadZ3 z3 => AST -> AST -> z3 AST
mkPower :: forall (z3 :: * -> *). MonadZ3 z3 => AST -> AST -> z3 AST
mkPower = (Context -> AST -> AST -> IO AST) -> AST -> AST -> z3 AST
forall (z3 :: * -> *) a b c.
MonadZ3 z3 =>
(Context -> a -> b -> IO c) -> a -> b -> z3 c
liftFun2 Context -> AST -> AST -> IO AST
Base.mkPower
mkLt :: MonadZ3 z3 => AST -> AST -> z3 AST
mkLt :: forall (z3 :: * -> *). MonadZ3 z3 => AST -> AST -> z3 AST
mkLt = (Context -> AST -> AST -> IO AST) -> AST -> AST -> z3 AST
forall (z3 :: * -> *) a b c.
MonadZ3 z3 =>
(Context -> a -> b -> IO c) -> a -> b -> z3 c
liftFun2 Context -> AST -> AST -> IO AST
Base.mkLt
mkLe :: MonadZ3 z3 => AST -> AST -> z3 AST
mkLe :: forall (z3 :: * -> *). MonadZ3 z3 => AST -> AST -> z3 AST
mkLe = (Context -> AST -> AST -> IO AST) -> AST -> AST -> z3 AST
forall (z3 :: * -> *) a b c.
MonadZ3 z3 =>
(Context -> a -> b -> IO c) -> a -> b -> z3 c
liftFun2 Context -> AST -> AST -> IO AST
Base.mkLe
mkGt :: MonadZ3 z3 => AST -> AST -> z3 AST
mkGt :: forall (z3 :: * -> *). MonadZ3 z3 => AST -> AST -> z3 AST
mkGt = (Context -> AST -> AST -> IO AST) -> AST -> AST -> z3 AST
forall (z3 :: * -> *) a b c.
MonadZ3 z3 =>
(Context -> a -> b -> IO c) -> a -> b -> z3 c
liftFun2 Context -> AST -> AST -> IO AST
Base.mkGt
mkGe :: MonadZ3 z3 => AST -> AST -> z3 AST
mkGe :: forall (z3 :: * -> *). MonadZ3 z3 => AST -> AST -> z3 AST
mkGe = (Context -> AST -> AST -> IO AST) -> AST -> AST -> z3 AST
forall (z3 :: * -> *) a b c.
MonadZ3 z3 =>
(Context -> a -> b -> IO c) -> a -> b -> z3 c
liftFun2 Context -> AST -> AST -> IO AST
Base.mkGe
mkInt2Real :: MonadZ3 z3 => AST -> z3 AST
mkInt2Real :: forall (z3 :: * -> *). MonadZ3 z3 => AST -> z3 AST
mkInt2Real = (Context -> AST -> IO AST) -> AST -> z3 AST
forall (z3 :: * -> *) a b.
MonadZ3 z3 =>
(Context -> a -> IO b) -> a -> z3 b
liftFun1 Context -> AST -> IO AST
Base.mkInt2Real
mkReal2Int :: MonadZ3 z3 => AST -> z3 AST
mkReal2Int :: forall (z3 :: * -> *). MonadZ3 z3 => AST -> z3 AST
mkReal2Int = (Context -> AST -> IO AST) -> AST -> z3 AST
forall (z3 :: * -> *) a b.
MonadZ3 z3 =>
(Context -> a -> IO b) -> a -> z3 b
liftFun1 Context -> AST -> IO AST
Base.mkReal2Int
mkIsInt :: MonadZ3 z3 => AST -> z3 AST
mkIsInt :: forall (z3 :: * -> *). MonadZ3 z3 => AST -> z3 AST
mkIsInt = (Context -> AST -> IO AST) -> AST -> z3 AST
forall (z3 :: * -> *) a b.
MonadZ3 z3 =>
(Context -> a -> IO b) -> a -> z3 b
liftFun1 Context -> AST -> IO AST
Base.mkIsInt
mkBvnot :: MonadZ3 z3 => AST -> z3 AST
mkBvnot :: forall (z3 :: * -> *). MonadZ3 z3 => AST -> z3 AST
mkBvnot = (Context -> AST -> IO AST) -> AST -> z3 AST
forall (z3 :: * -> *) a b.
MonadZ3 z3 =>
(Context -> a -> IO b) -> a -> z3 b
liftFun1 Context -> AST -> IO AST
Base.mkBvnot
mkBvredand :: MonadZ3 z3 => AST -> z3 AST
mkBvredand :: forall (z3 :: * -> *). MonadZ3 z3 => AST -> z3 AST
mkBvredand = (Context -> AST -> IO AST) -> AST -> z3 AST
forall (z3 :: * -> *) a b.
MonadZ3 z3 =>
(Context -> a -> IO b) -> a -> z3 b
liftFun1 Context -> AST -> IO AST
Base.mkBvredand
mkBvredor :: MonadZ3 z3 => AST -> z3 AST
mkBvredor :: forall (z3 :: * -> *). MonadZ3 z3 => AST -> z3 AST
mkBvredor = (Context -> AST -> IO AST) -> AST -> z3 AST
forall (z3 :: * -> *) a b.
MonadZ3 z3 =>
(Context -> a -> IO b) -> a -> z3 b
liftFun1 Context -> AST -> IO AST
Base.mkBvredor
mkBvand :: MonadZ3 z3 => AST -> AST -> z3 AST
mkBvand :: forall (z3 :: * -> *). MonadZ3 z3 => AST -> AST -> z3 AST
mkBvand = (Context -> AST -> AST -> IO AST) -> AST -> AST -> z3 AST
forall (z3 :: * -> *) a b c.
MonadZ3 z3 =>
(Context -> a -> b -> IO c) -> a -> b -> z3 c
liftFun2 Context -> AST -> AST -> IO AST
Base.mkBvand
mkBvor :: MonadZ3 z3 => AST -> AST -> z3 AST
mkBvor :: forall (z3 :: * -> *). MonadZ3 z3 => AST -> AST -> z3 AST
mkBvor = (Context -> AST -> AST -> IO AST) -> AST -> AST -> z3 AST
forall (z3 :: * -> *) a b c.
MonadZ3 z3 =>
(Context -> a -> b -> IO c) -> a -> b -> z3 c
liftFun2 Context -> AST -> AST -> IO AST
Base.mkBvor
mkBvxor :: MonadZ3 z3 => AST -> AST -> z3 AST
mkBvxor :: forall (z3 :: * -> *). MonadZ3 z3 => AST -> AST -> z3 AST
mkBvxor = (Context -> AST -> AST -> IO AST) -> AST -> AST -> z3 AST
forall (z3 :: * -> *) a b c.
MonadZ3 z3 =>
(Context -> a -> b -> IO c) -> a -> b -> z3 c
liftFun2 Context -> AST -> AST -> IO AST
Base.mkBvxor
mkBvnand :: MonadZ3 z3 => AST -> AST -> z3 AST
mkBvnand :: forall (z3 :: * -> *). MonadZ3 z3 => AST -> AST -> z3 AST
mkBvnand = (Context -> AST -> AST -> IO AST) -> AST -> AST -> z3 AST
forall (z3 :: * -> *) a b c.
MonadZ3 z3 =>
(Context -> a -> b -> IO c) -> a -> b -> z3 c
liftFun2 Context -> AST -> AST -> IO AST
Base.mkBvnand
mkBvnor :: MonadZ3 z3 => AST -> AST -> z3 AST
mkBvnor :: forall (z3 :: * -> *). MonadZ3 z3 => AST -> AST -> z3 AST
mkBvnor = (Context -> AST -> AST -> IO AST) -> AST -> AST -> z3 AST
forall (z3 :: * -> *) a b c.
MonadZ3 z3 =>
(Context -> a -> b -> IO c) -> a -> b -> z3 c
liftFun2 Context -> AST -> AST -> IO AST
Base.mkBvnor
mkBvxnor :: MonadZ3 z3 => AST -> AST -> z3 AST
mkBvxnor :: forall (z3 :: * -> *). MonadZ3 z3 => AST -> AST -> z3 AST
mkBvxnor = (Context -> AST -> AST -> IO AST) -> AST -> AST -> z3 AST
forall (z3 :: * -> *) a b c.
MonadZ3 z3 =>
(Context -> a -> b -> IO c) -> a -> b -> z3 c
liftFun2 Context -> AST -> AST -> IO AST
Base.mkBvxnor
mkBvneg :: MonadZ3 z3 => AST -> z3 AST
mkBvneg :: forall (z3 :: * -> *). MonadZ3 z3 => AST -> z3 AST
mkBvneg = (Context -> AST -> IO AST) -> AST -> z3 AST
forall (z3 :: * -> *) a b.
MonadZ3 z3 =>
(Context -> a -> IO b) -> a -> z3 b
liftFun1 Context -> AST -> IO AST
Base.mkBvneg
mkBvadd :: MonadZ3 z3 => AST -> AST -> z3 AST
mkBvadd :: forall (z3 :: * -> *). MonadZ3 z3 => AST -> AST -> z3 AST
mkBvadd = (Context -> AST -> AST -> IO AST) -> AST -> AST -> z3 AST
forall (z3 :: * -> *) a b c.
MonadZ3 z3 =>
(Context -> a -> b -> IO c) -> a -> b -> z3 c
liftFun2 Context -> AST -> AST -> IO AST
Base.mkBvadd
mkBvsub :: MonadZ3 z3 => AST -> AST -> z3 AST
mkBvsub :: forall (z3 :: * -> *). MonadZ3 z3 => AST -> AST -> z3 AST
mkBvsub = (Context -> AST -> AST -> IO AST) -> AST -> AST -> z3 AST
forall (z3 :: * -> *) a b c.
MonadZ3 z3 =>
(Context -> a -> b -> IO c) -> a -> b -> z3 c
liftFun2 Context -> AST -> AST -> IO AST
Base.mkBvsub
mkBvmul :: MonadZ3 z3 => AST -> AST -> z3 AST
mkBvmul :: forall (z3 :: * -> *). MonadZ3 z3 => AST -> AST -> z3 AST
mkBvmul = (Context -> AST -> AST -> IO AST) -> AST -> AST -> z3 AST
forall (z3 :: * -> *) a b c.
MonadZ3 z3 =>
(Context -> a -> b -> IO c) -> a -> b -> z3 c
liftFun2 Context -> AST -> AST -> IO AST
Base.mkBvmul
mkBvudiv :: MonadZ3 z3 => AST -> AST -> z3 AST
mkBvudiv :: forall (z3 :: * -> *). MonadZ3 z3 => AST -> AST -> z3 AST
mkBvudiv = (Context -> AST -> AST -> IO AST) -> AST -> AST -> z3 AST
forall (z3 :: * -> *) a b c.
MonadZ3 z3 =>
(Context -> a -> b -> IO c) -> a -> b -> z3 c
liftFun2 Context -> AST -> AST -> IO AST
Base.mkBvudiv
mkBvsdiv :: MonadZ3 z3 => AST -> AST -> z3 AST
mkBvsdiv :: forall (z3 :: * -> *). MonadZ3 z3 => AST -> AST -> z3 AST
mkBvsdiv = (Context -> AST -> AST -> IO AST) -> AST -> AST -> z3 AST
forall (z3 :: * -> *) a b c.
MonadZ3 z3 =>
(Context -> a -> b -> IO c) -> a -> b -> z3 c
liftFun2 Context -> AST -> AST -> IO AST
Base.mkBvsdiv
mkBvurem :: MonadZ3 z3 => AST -> AST -> z3 AST
mkBvurem :: forall (z3 :: * -> *). MonadZ3 z3 => AST -> AST -> z3 AST
mkBvurem = (Context -> AST -> AST -> IO AST) -> AST -> AST -> z3 AST
forall (z3 :: * -> *) a b c.
MonadZ3 z3 =>
(Context -> a -> b -> IO c) -> a -> b -> z3 c
liftFun2 Context -> AST -> AST -> IO AST
Base.mkBvurem
mkBvsrem :: MonadZ3 z3 => AST -> AST -> z3 AST
mkBvsrem :: forall (z3 :: * -> *). MonadZ3 z3 => AST -> AST -> z3 AST
mkBvsrem = (Context -> AST -> AST -> IO AST) -> AST -> AST -> z3 AST
forall (z3 :: * -> *) a b c.
MonadZ3 z3 =>
(Context -> a -> b -> IO c) -> a -> b -> z3 c
liftFun2 Context -> AST -> AST -> IO AST
Base.mkBvsrem
mkBvsmod :: MonadZ3 z3 => AST -> AST -> z3 AST
mkBvsmod :: forall (z3 :: * -> *). MonadZ3 z3 => AST -> AST -> z3 AST
mkBvsmod = (Context -> AST -> AST -> IO AST) -> AST -> AST -> z3 AST
forall (z3 :: * -> *) a b c.
MonadZ3 z3 =>
(Context -> a -> b -> IO c) -> a -> b -> z3 c
liftFun2 Context -> AST -> AST -> IO AST
Base.mkBvsmod
mkBvult :: MonadZ3 z3 => AST -> AST -> z3 AST
mkBvult :: forall (z3 :: * -> *). MonadZ3 z3 => AST -> AST -> z3 AST
mkBvult = (Context -> AST -> AST -> IO AST) -> AST -> AST -> z3 AST
forall (z3 :: * -> *) a b c.
MonadZ3 z3 =>
(Context -> a -> b -> IO c) -> a -> b -> z3 c
liftFun2 Context -> AST -> AST -> IO AST
Base.mkBvult
mkBvslt :: MonadZ3 z3 => AST -> AST -> z3 AST
mkBvslt :: forall (z3 :: * -> *). MonadZ3 z3 => AST -> AST -> z3 AST
mkBvslt = (Context -> AST -> AST -> IO AST) -> AST -> AST -> z3 AST
forall (z3 :: * -> *) a b c.
MonadZ3 z3 =>
(Context -> a -> b -> IO c) -> a -> b -> z3 c
liftFun2 Context -> AST -> AST -> IO AST
Base.mkBvslt
mkBvule :: MonadZ3 z3 => AST -> AST -> z3 AST
mkBvule :: forall (z3 :: * -> *). MonadZ3 z3 => AST -> AST -> z3 AST
mkBvule = (Context -> AST -> AST -> IO AST) -> AST -> AST -> z3 AST
forall (z3 :: * -> *) a b c.
MonadZ3 z3 =>
(Context -> a -> b -> IO c) -> a -> b -> z3 c
liftFun2 Context -> AST -> AST -> IO AST
Base.mkBvule
mkBvsle :: MonadZ3 z3 => AST -> AST -> z3 AST
mkBvsle :: forall (z3 :: * -> *). MonadZ3 z3 => AST -> AST -> z3 AST
mkBvsle = (Context -> AST -> AST -> IO AST) -> AST -> AST -> z3 AST
forall (z3 :: * -> *) a b c.
MonadZ3 z3 =>
(Context -> a -> b -> IO c) -> a -> b -> z3 c
liftFun2 Context -> AST -> AST -> IO AST
Base.mkBvsle
mkBvuge :: MonadZ3 z3 => AST -> AST -> z3 AST
mkBvuge :: forall (z3 :: * -> *). MonadZ3 z3 => AST -> AST -> z3 AST
mkBvuge = (Context -> AST -> AST -> IO AST) -> AST -> AST -> z3 AST
forall (z3 :: * -> *) a b c.
MonadZ3 z3 =>
(Context -> a -> b -> IO c) -> a -> b -> z3 c
liftFun2 Context -> AST -> AST -> IO AST
Base.mkBvuge
mkBvsge :: MonadZ3 z3 => AST -> AST -> z3 AST
mkBvsge :: forall (z3 :: * -> *). MonadZ3 z3 => AST -> AST -> z3 AST
mkBvsge = (Context -> AST -> AST -> IO AST) -> AST -> AST -> z3 AST
forall (z3 :: * -> *) a b c.
MonadZ3 z3 =>
(Context -> a -> b -> IO c) -> a -> b -> z3 c
liftFun2 Context -> AST -> AST -> IO AST
Base.mkBvsge
mkBvugt :: MonadZ3 z3 => AST -> AST -> z3 AST
mkBvugt :: forall (z3 :: * -> *). MonadZ3 z3 => AST -> AST -> z3 AST
mkBvugt = (Context -> AST -> AST -> IO AST) -> AST -> AST -> z3 AST
forall (z3 :: * -> *) a b c.
MonadZ3 z3 =>
(Context -> a -> b -> IO c) -> a -> b -> z3 c
liftFun2 Context -> AST -> AST -> IO AST
Base.mkBvugt
mkBvsgt :: MonadZ3 z3 => AST -> AST -> z3 AST
mkBvsgt :: forall (z3 :: * -> *). MonadZ3 z3 => AST -> AST -> z3 AST
mkBvsgt = (Context -> AST -> AST -> IO AST) -> AST -> AST -> z3 AST
forall (z3 :: * -> *) a b c.
MonadZ3 z3 =>
(Context -> a -> b -> IO c) -> a -> b -> z3 c
liftFun2 Context -> AST -> AST -> IO AST
Base.mkBvsgt
mkConcat :: MonadZ3 z3 => AST -> AST -> z3 AST
mkConcat :: forall (z3 :: * -> *). MonadZ3 z3 => AST -> AST -> z3 AST
mkConcat = (Context -> AST -> AST -> IO AST) -> AST -> AST -> z3 AST
forall (z3 :: * -> *) a b c.
MonadZ3 z3 =>
(Context -> a -> b -> IO c) -> a -> b -> z3 c
liftFun2 Context -> AST -> AST -> IO AST
Base.mkConcat
mkExtract :: MonadZ3 z3 => Int -> Int -> AST -> z3 AST
= (Context -> Int -> Int -> AST -> IO AST)
-> Int -> Int -> AST -> z3 AST
forall (z3 :: * -> *) a b c d.
MonadZ3 z3 =>
(Context -> a -> b -> c -> IO d) -> a -> b -> c -> z3 d
liftFun3 Context -> Int -> Int -> AST -> IO AST
Base.mkExtract
mkSignExt :: MonadZ3 z3 => Int -> AST -> z3 AST
mkSignExt :: forall (z3 :: * -> *). MonadZ3 z3 => Int -> AST -> z3 AST
mkSignExt = (Context -> Int -> AST -> IO AST) -> Int -> AST -> z3 AST
forall (z3 :: * -> *) a b c.
MonadZ3 z3 =>
(Context -> a -> b -> IO c) -> a -> b -> z3 c
liftFun2 Context -> Int -> AST -> IO AST
Base.mkSignExt
mkZeroExt :: MonadZ3 z3 => Int -> AST -> z3 AST
mkZeroExt :: forall (z3 :: * -> *). MonadZ3 z3 => Int -> AST -> z3 AST
mkZeroExt = (Context -> Int -> AST -> IO AST) -> Int -> AST -> z3 AST
forall (z3 :: * -> *) a b c.
MonadZ3 z3 =>
(Context -> a -> b -> IO c) -> a -> b -> z3 c
liftFun2 Context -> Int -> AST -> IO AST
Base.mkZeroExt
mkRepeat :: MonadZ3 z3 => Int -> AST -> z3 AST
mkRepeat :: forall (z3 :: * -> *). MonadZ3 z3 => Int -> AST -> z3 AST
mkRepeat = (Context -> Int -> AST -> IO AST) -> Int -> AST -> z3 AST
forall (z3 :: * -> *) a b c.
MonadZ3 z3 =>
(Context -> a -> b -> IO c) -> a -> b -> z3 c
liftFun2 Context -> Int -> AST -> IO AST
Base.mkRepeat
mkBvshl :: MonadZ3 z3 => AST -> AST -> z3 AST
mkBvshl :: forall (z3 :: * -> *). MonadZ3 z3 => AST -> AST -> z3 AST
mkBvshl = (Context -> AST -> AST -> IO AST) -> AST -> AST -> z3 AST
forall (z3 :: * -> *) a b c.
MonadZ3 z3 =>
(Context -> a -> b -> IO c) -> a -> b -> z3 c
liftFun2 Context -> AST -> AST -> IO AST
Base.mkBvshl
mkBvlshr :: MonadZ3 z3 => AST -> AST -> z3 AST
mkBvlshr :: forall (z3 :: * -> *). MonadZ3 z3 => AST -> AST -> z3 AST
mkBvlshr = (Context -> AST -> AST -> IO AST) -> AST -> AST -> z3 AST
forall (z3 :: * -> *) a b c.
MonadZ3 z3 =>
(Context -> a -> b -> IO c) -> a -> b -> z3 c
liftFun2 Context -> AST -> AST -> IO AST
Base.mkBvlshr
mkBvashr :: MonadZ3 z3 => AST -> AST -> z3 AST
mkBvashr :: forall (z3 :: * -> *). MonadZ3 z3 => AST -> AST -> z3 AST
mkBvashr = (Context -> AST -> AST -> IO AST) -> AST -> AST -> z3 AST
forall (z3 :: * -> *) a b c.
MonadZ3 z3 =>
(Context -> a -> b -> IO c) -> a -> b -> z3 c
liftFun2 Context -> AST -> AST -> IO AST
Base.mkBvashr
mkRotateLeft :: MonadZ3 z3 => Int -> AST -> z3 AST
mkRotateLeft :: forall (z3 :: * -> *). MonadZ3 z3 => Int -> AST -> z3 AST
mkRotateLeft = (Context -> Int -> AST -> IO AST) -> Int -> AST -> z3 AST
forall (z3 :: * -> *) a b c.
MonadZ3 z3 =>
(Context -> a -> b -> IO c) -> a -> b -> z3 c
liftFun2 Context -> Int -> AST -> IO AST
Base.mkRotateLeft
mkRotateRight :: MonadZ3 z3 => Int -> AST -> z3 AST
mkRotateRight :: forall (z3 :: * -> *). MonadZ3 z3 => Int -> AST -> z3 AST
mkRotateRight = (Context -> Int -> AST -> IO AST) -> Int -> AST -> z3 AST
forall (z3 :: * -> *) a b c.
MonadZ3 z3 =>
(Context -> a -> b -> IO c) -> a -> b -> z3 c
liftFun2 Context -> Int -> AST -> IO AST
Base.mkRotateRight
mkExtRotateLeft :: MonadZ3 z3 => AST -> AST -> z3 AST
mkExtRotateLeft :: forall (z3 :: * -> *). MonadZ3 z3 => AST -> AST -> z3 AST
mkExtRotateLeft = (Context -> AST -> AST -> IO AST) -> AST -> AST -> z3 AST
forall (z3 :: * -> *) a b c.
MonadZ3 z3 =>
(Context -> a -> b -> IO c) -> a -> b -> z3 c
liftFun2 Context -> AST -> AST -> IO AST
Base.mkExtRotateLeft
mkExtRotateRight :: MonadZ3 z3 => AST -> AST -> z3 AST
mkExtRotateRight :: forall (z3 :: * -> *). MonadZ3 z3 => AST -> AST -> z3 AST
mkExtRotateRight = (Context -> AST -> AST -> IO AST) -> AST -> AST -> z3 AST
forall (z3 :: * -> *) a b c.
MonadZ3 z3 =>
(Context -> a -> b -> IO c) -> a -> b -> z3 c
liftFun2 Context -> AST -> AST -> IO AST
Base.mkExtRotateRight
mkInt2bv :: MonadZ3 z3 => Int -> AST -> z3 AST
mkInt2bv :: forall (z3 :: * -> *). MonadZ3 z3 => Int -> AST -> z3 AST
mkInt2bv = (Context -> Int -> AST -> IO AST) -> Int -> AST -> z3 AST
forall (z3 :: * -> *) a b c.
MonadZ3 z3 =>
(Context -> a -> b -> IO c) -> a -> b -> z3 c
liftFun2 Context -> Int -> AST -> IO AST
Base.mkInt2bv
mkBv2int :: MonadZ3 z3 => AST -> Bool -> z3 AST
mkBv2int :: forall (z3 :: * -> *). MonadZ3 z3 => AST -> Bool -> z3 AST
mkBv2int = (Context -> AST -> Bool -> IO AST) -> AST -> Bool -> z3 AST
forall (z3 :: * -> *) a b c.
MonadZ3 z3 =>
(Context -> a -> b -> IO c) -> a -> b -> z3 c
liftFun2 Context -> AST -> Bool -> IO AST
Base.mkBv2int
mkBvaddNoOverflow :: MonadZ3 z3 => AST -> AST -> Bool -> z3 AST
mkBvaddNoOverflow :: forall (z3 :: * -> *). MonadZ3 z3 => AST -> AST -> Bool -> z3 AST
mkBvaddNoOverflow = (Context -> AST -> AST -> Bool -> IO AST)
-> AST -> AST -> Bool -> z3 AST
forall (z3 :: * -> *) a b c d.
MonadZ3 z3 =>
(Context -> a -> b -> c -> IO d) -> a -> b -> c -> z3 d
liftFun3 Context -> AST -> AST -> Bool -> IO AST
Base.mkBvaddNoOverflow
mkBvaddNoUnderflow :: MonadZ3 z3 => AST -> AST -> z3 AST
mkBvaddNoUnderflow :: forall (z3 :: * -> *). MonadZ3 z3 => AST -> AST -> z3 AST
mkBvaddNoUnderflow = (Context -> AST -> AST -> IO AST) -> AST -> AST -> z3 AST
forall (z3 :: * -> *) a b c.
MonadZ3 z3 =>
(Context -> a -> b -> IO c) -> a -> b -> z3 c
liftFun2 Context -> AST -> AST -> IO AST
Base.mkBvaddNoUnderflow
mkBvsubNoOverflow :: MonadZ3 z3 => AST -> AST -> z3 AST
mkBvsubNoOverflow :: forall (z3 :: * -> *). MonadZ3 z3 => AST -> AST -> z3 AST
mkBvsubNoOverflow = (Context -> AST -> AST -> IO AST) -> AST -> AST -> z3 AST
forall (z3 :: * -> *) a b c.
MonadZ3 z3 =>
(Context -> a -> b -> IO c) -> a -> b -> z3 c
liftFun2 Context -> AST -> AST -> IO AST
Base.mkBvsubNoOverflow
mkBvsubNoUnderflow :: MonadZ3 z3 => AST -> AST -> z3 AST
mkBvsubNoUnderflow :: forall (z3 :: * -> *). MonadZ3 z3 => AST -> AST -> z3 AST
mkBvsubNoUnderflow = (Context -> AST -> AST -> IO AST) -> AST -> AST -> z3 AST
forall (z3 :: * -> *) a b c.
MonadZ3 z3 =>
(Context -> a -> b -> IO c) -> a -> b -> z3 c
liftFun2 Context -> AST -> AST -> IO AST
Base.mkBvsubNoUnderflow
mkBvsdivNoOverflow :: MonadZ3 z3 => AST -> AST -> z3 AST
mkBvsdivNoOverflow :: forall (z3 :: * -> *). MonadZ3 z3 => AST -> AST -> z3 AST
mkBvsdivNoOverflow = (Context -> AST -> AST -> IO AST) -> AST -> AST -> z3 AST
forall (z3 :: * -> *) a b c.
MonadZ3 z3 =>
(Context -> a -> b -> IO c) -> a -> b -> z3 c
liftFun2 Context -> AST -> AST -> IO AST
Base.mkBvsdivNoOverflow
mkBvnegNoOverflow :: MonadZ3 z3 => AST -> z3 AST
mkBvnegNoOverflow :: forall (z3 :: * -> *). MonadZ3 z3 => AST -> z3 AST
mkBvnegNoOverflow = (Context -> AST -> IO AST) -> AST -> z3 AST
forall (z3 :: * -> *) a b.
MonadZ3 z3 =>
(Context -> a -> IO b) -> a -> z3 b
liftFun1 Context -> AST -> IO AST
Base.mkBvnegNoOverflow
mkBvmulNoOverflow :: MonadZ3 z3 => AST -> AST -> Bool -> z3 AST
mkBvmulNoOverflow :: forall (z3 :: * -> *). MonadZ3 z3 => AST -> AST -> Bool -> z3 AST
mkBvmulNoOverflow = (Context -> AST -> AST -> Bool -> IO AST)
-> AST -> AST -> Bool -> z3 AST
forall (z3 :: * -> *) a b c d.
MonadZ3 z3 =>
(Context -> a -> b -> c -> IO d) -> a -> b -> c -> z3 d
liftFun3 Context -> AST -> AST -> Bool -> IO AST
Base.mkBvmulNoOverflow
mkBvmulNoUnderflow :: MonadZ3 z3 => AST -> AST -> z3 AST
mkBvmulNoUnderflow :: forall (z3 :: * -> *). MonadZ3 z3 => AST -> AST -> z3 AST
mkBvmulNoUnderflow = (Context -> AST -> AST -> IO AST) -> AST -> AST -> z3 AST
forall (z3 :: * -> *) a b c.
MonadZ3 z3 =>
(Context -> a -> b -> IO c) -> a -> b -> z3 c
liftFun2 Context -> AST -> AST -> IO AST
Base.mkBvmulNoUnderflow
mkSelect :: MonadZ3 z3 => AST -> AST -> z3 AST
mkSelect :: forall (z3 :: * -> *). MonadZ3 z3 => AST -> AST -> z3 AST
mkSelect = (Context -> AST -> AST -> IO AST) -> AST -> AST -> z3 AST
forall (z3 :: * -> *) a b c.
MonadZ3 z3 =>
(Context -> a -> b -> IO c) -> a -> b -> z3 c
liftFun2 Context -> AST -> AST -> IO AST
Base.mkSelect
mkStore :: MonadZ3 z3 => AST -> AST -> AST -> z3 AST
mkStore :: forall (z3 :: * -> *). MonadZ3 z3 => AST -> AST -> AST -> z3 AST
mkStore = (Context -> AST -> AST -> AST -> IO AST)
-> AST -> AST -> AST -> z3 AST
forall (z3 :: * -> *) a b c d.
MonadZ3 z3 =>
(Context -> a -> b -> c -> IO d) -> a -> b -> c -> z3 d
liftFun3 Context -> AST -> AST -> AST -> IO AST
Base.mkStore
mkConstArray :: MonadZ3 z3 => Sort -> AST -> z3 AST
mkConstArray :: forall (z3 :: * -> *). MonadZ3 z3 => Sort -> AST -> z3 AST
mkConstArray = (Context -> Sort -> AST -> IO AST) -> Sort -> AST -> z3 AST
forall (z3 :: * -> *) a b c.
MonadZ3 z3 =>
(Context -> a -> b -> IO c) -> a -> b -> z3 c
liftFun2 Context -> Sort -> AST -> IO AST
Base.mkConstArray
mkMap :: MonadZ3 z3 => FuncDecl -> [AST] -> z3 AST
mkMap :: forall (z3 :: * -> *). MonadZ3 z3 => FuncDecl -> [AST] -> z3 AST
mkMap = (Context -> FuncDecl -> [AST] -> IO AST)
-> FuncDecl -> [AST] -> z3 AST
forall (z3 :: * -> *) a b c.
MonadZ3 z3 =>
(Context -> a -> b -> IO c) -> a -> b -> z3 c
liftFun2 Context -> FuncDecl -> [AST] -> IO AST
Base.mkMap
mkArrayDefault :: MonadZ3 z3 => AST -> z3 AST
mkArrayDefault :: forall (z3 :: * -> *). MonadZ3 z3 => AST -> z3 AST
mkArrayDefault = (Context -> AST -> IO AST) -> AST -> z3 AST
forall (z3 :: * -> *) a b.
MonadZ3 z3 =>
(Context -> a -> IO b) -> a -> z3 b
liftFun1 Context -> AST -> IO AST
Base.mkArrayDefault
mkEmptySet :: MonadZ3 z3 => Sort -> z3 AST
mkEmptySet :: forall (z3 :: * -> *). MonadZ3 z3 => Sort -> z3 AST
mkEmptySet = (Context -> Sort -> IO AST) -> Sort -> z3 AST
forall (z3 :: * -> *) a b.
MonadZ3 z3 =>
(Context -> a -> IO b) -> a -> z3 b
liftFun1 Context -> Sort -> IO AST
Base.mkEmptySet
mkFullSet :: MonadZ3 z3 => Sort -> z3 AST
mkFullSet :: forall (z3 :: * -> *). MonadZ3 z3 => Sort -> z3 AST
mkFullSet = (Context -> Sort -> IO AST) -> Sort -> z3 AST
forall (z3 :: * -> *) a b.
MonadZ3 z3 =>
(Context -> a -> IO b) -> a -> z3 b
liftFun1 Context -> Sort -> IO AST
Base.mkFullSet
mkSetAdd :: MonadZ3 z3 => AST -> AST -> z3 AST
mkSetAdd :: forall (z3 :: * -> *). MonadZ3 z3 => AST -> AST -> z3 AST
mkSetAdd = (Context -> AST -> AST -> IO AST) -> AST -> AST -> z3 AST
forall (z3 :: * -> *) a b c.
MonadZ3 z3 =>
(Context -> a -> b -> IO c) -> a -> b -> z3 c
liftFun2 Context -> AST -> AST -> IO AST
Base.mkSetAdd
mkSetDel :: MonadZ3 z3 => AST -> AST -> z3 AST
mkSetDel :: forall (z3 :: * -> *). MonadZ3 z3 => AST -> AST -> z3 AST
mkSetDel = (Context -> AST -> AST -> IO AST) -> AST -> AST -> z3 AST
forall (z3 :: * -> *) a b c.
MonadZ3 z3 =>
(Context -> a -> b -> IO c) -> a -> b -> z3 c
liftFun2 Context -> AST -> AST -> IO AST
Base.mkSetDel
mkSetUnion :: MonadZ3 z3 => [AST] -> z3 AST
mkSetUnion :: forall (z3 :: * -> *). MonadZ3 z3 => [AST] -> z3 AST
mkSetUnion = (Context -> [AST] -> IO AST) -> [AST] -> z3 AST
forall (z3 :: * -> *) a b.
MonadZ3 z3 =>
(Context -> a -> IO b) -> a -> z3 b
liftFun1 Context -> [AST] -> IO AST
Base.mkSetUnion
mkSetIntersect :: MonadZ3 z3 => [AST] -> z3 AST
mkSetIntersect :: forall (z3 :: * -> *). MonadZ3 z3 => [AST] -> z3 AST
mkSetIntersect = (Context -> [AST] -> IO AST) -> [AST] -> z3 AST
forall (z3 :: * -> *) a b.
MonadZ3 z3 =>
(Context -> a -> IO b) -> a -> z3 b
liftFun1 Context -> [AST] -> IO AST
Base.mkSetIntersect
mkSetDifference :: MonadZ3 z3 => AST -> AST -> z3 AST
mkSetDifference :: forall (z3 :: * -> *). MonadZ3 z3 => AST -> AST -> z3 AST
mkSetDifference = (Context -> AST -> AST -> IO AST) -> AST -> AST -> z3 AST
forall (z3 :: * -> *) a b c.
MonadZ3 z3 =>
(Context -> a -> b -> IO c) -> a -> b -> z3 c
liftFun2 Context -> AST -> AST -> IO AST
Base.mkSetDifference
mkSetComplement :: MonadZ3 z3 => AST -> z3 AST
mkSetComplement :: forall (z3 :: * -> *). MonadZ3 z3 => AST -> z3 AST
mkSetComplement = (Context -> AST -> IO AST) -> AST -> z3 AST
forall (z3 :: * -> *) a b.
MonadZ3 z3 =>
(Context -> a -> IO b) -> a -> z3 b
liftFun1 Context -> AST -> IO AST
Base.mkSetComplement
mkSetMember :: MonadZ3 z3 => AST -> AST -> z3 AST
mkSetMember :: forall (z3 :: * -> *). MonadZ3 z3 => AST -> AST -> z3 AST
mkSetMember = (Context -> AST -> AST -> IO AST) -> AST -> AST -> z3 AST
forall (z3 :: * -> *) a b c.
MonadZ3 z3 =>
(Context -> a -> b -> IO c) -> a -> b -> z3 c
liftFun2 Context -> AST -> AST -> IO AST
Base.mkSetMember
mkSetSubset :: MonadZ3 z3 => AST -> AST -> z3 AST
mkSetSubset :: forall (z3 :: * -> *). MonadZ3 z3 => AST -> AST -> z3 AST
mkSetSubset = (Context -> AST -> AST -> IO AST) -> AST -> AST -> z3 AST
forall (z3 :: * -> *) a b c.
MonadZ3 z3 =>
(Context -> a -> b -> IO c) -> a -> b -> z3 c
liftFun2 Context -> AST -> AST -> IO AST
Base.mkSetSubset
mkNumeral :: MonadZ3 z3 => String -> Sort -> z3 AST
mkNumeral :: forall (z3 :: * -> *). MonadZ3 z3 => String -> Sort -> z3 AST
mkNumeral = (Context -> String -> Sort -> IO AST) -> String -> Sort -> z3 AST
forall (z3 :: * -> *) a b c.
MonadZ3 z3 =>
(Context -> a -> b -> IO c) -> a -> b -> z3 c
liftFun2 Context -> String -> Sort -> IO AST
Base.mkNumeral
mkReal :: MonadZ3 z3 => Int -> Int -> z3 AST
mkReal :: forall (z3 :: * -> *). MonadZ3 z3 => Int -> Int -> z3 AST
mkReal = (Context -> Int -> Int -> IO AST) -> Int -> Int -> z3 AST
forall (z3 :: * -> *) a b c.
MonadZ3 z3 =>
(Context -> a -> b -> IO c) -> a -> b -> z3 c
liftFun2 Context -> Int -> Int -> IO AST
Base.mkReal
mkInt :: MonadZ3 z3 => Int -> Sort -> z3 AST
mkInt :: forall (z3 :: * -> *). MonadZ3 z3 => Int -> Sort -> z3 AST
mkInt = (Context -> Int -> Sort -> IO AST) -> Int -> Sort -> z3 AST
forall (z3 :: * -> *) a b c.
MonadZ3 z3 =>
(Context -> a -> b -> IO c) -> a -> b -> z3 c
liftFun2 Context -> Int -> Sort -> IO AST
Base.mkInt
mkUnsignedInt :: MonadZ3 z3 => Word -> Sort -> z3 AST
mkUnsignedInt :: forall (z3 :: * -> *). MonadZ3 z3 => Word -> Sort -> z3 AST
mkUnsignedInt = (Context -> Word -> Sort -> IO AST) -> Word -> Sort -> z3 AST
forall (z3 :: * -> *) a b c.
MonadZ3 z3 =>
(Context -> a -> b -> IO c) -> a -> b -> z3 c
liftFun2 Context -> Word -> Sort -> IO AST
Base.mkUnsignedInt
mkInt64 :: MonadZ3 z3 => Int64 -> Sort -> z3 AST
mkInt64 :: forall (z3 :: * -> *). MonadZ3 z3 => Int64 -> Sort -> z3 AST
mkInt64 = (Context -> Int64 -> Sort -> IO AST) -> Int64 -> Sort -> z3 AST
forall (z3 :: * -> *) a b c.
MonadZ3 z3 =>
(Context -> a -> b -> IO c) -> a -> b -> z3 c
liftFun2 Context -> Int64 -> Sort -> IO AST
Base.mkInt64
mkUnsignedInt64 :: MonadZ3 z3 => Word64 -> Sort -> z3 AST
mkUnsignedInt64 :: forall (z3 :: * -> *). MonadZ3 z3 => Word64 -> Sort -> z3 AST
mkUnsignedInt64 = (Context -> Word64 -> Sort -> IO AST) -> Word64 -> Sort -> z3 AST
forall (z3 :: * -> *) a b c.
MonadZ3 z3 =>
(Context -> a -> b -> IO c) -> a -> b -> z3 c
liftFun2 Context -> Word64 -> Sort -> IO AST
Base.mkUnsignedInt64
mkIntegral :: (MonadZ3 z3, Integral a) => a -> Sort -> z3 AST
mkIntegral :: forall (z3 :: * -> *) a.
(MonadZ3 z3, Integral a) =>
a -> Sort -> z3 AST
mkIntegral = (Context -> a -> Sort -> IO AST) -> a -> Sort -> z3 AST
forall (z3 :: * -> *) a b c.
MonadZ3 z3 =>
(Context -> a -> b -> IO c) -> a -> b -> z3 c
liftFun2 Context -> a -> Sort -> IO AST
forall a. Integral a => Context -> a -> Sort -> IO AST
Base.mkIntegral
mkRational :: MonadZ3 z3 => Rational -> z3 AST
mkRational :: forall (z3 :: * -> *). MonadZ3 z3 => Rational -> z3 AST
mkRational = (Context -> Rational -> IO AST) -> Rational -> z3 AST
forall (z3 :: * -> *) a b.
MonadZ3 z3 =>
(Context -> a -> IO b) -> a -> z3 b
liftFun1 Context -> Rational -> IO AST
Base.mkRational
mkFixed :: (MonadZ3 z3, HasResolution a) => Fixed a -> z3 AST
mkFixed :: forall (z3 :: * -> *) a.
(MonadZ3 z3, HasResolution a) =>
Fixed a -> z3 AST
mkFixed = (Context -> Fixed a -> IO AST) -> Fixed a -> z3 AST
forall (z3 :: * -> *) a b.
MonadZ3 z3 =>
(Context -> a -> IO b) -> a -> z3 b
liftFun1 Context -> Fixed a -> IO AST
forall a. HasResolution a => Context -> Fixed a -> IO AST
Base.mkFixed
mkRealNum :: (MonadZ3 z3, Real r) => r -> z3 AST
mkRealNum :: forall (z3 :: * -> *) r. (MonadZ3 z3, Real r) => r -> z3 AST
mkRealNum = (Context -> r -> IO AST) -> r -> z3 AST
forall (z3 :: * -> *) a b.
MonadZ3 z3 =>
(Context -> a -> IO b) -> a -> z3 b
liftFun1 Context -> r -> IO AST
forall r. Real r => Context -> r -> IO AST
Base.mkRealNum
mkInteger :: MonadZ3 z3 => Integer -> z3 AST
mkInteger :: forall (z3 :: * -> *). MonadZ3 z3 => Integer -> z3 AST
mkInteger = (Context -> Integer -> IO AST) -> Integer -> z3 AST
forall (z3 :: * -> *) a b.
MonadZ3 z3 =>
(Context -> a -> IO b) -> a -> z3 b
liftFun1 Context -> Integer -> IO AST
Base.mkInteger
mkIntNum :: (MonadZ3 z3, Integral a) => a -> z3 AST
mkIntNum :: forall (z3 :: * -> *) a. (MonadZ3 z3, Integral a) => a -> z3 AST
mkIntNum = (Context -> a -> IO AST) -> a -> z3 AST
forall (z3 :: * -> *) a b.
MonadZ3 z3 =>
(Context -> a -> IO b) -> a -> z3 b
liftFun1 Context -> a -> IO AST
forall a. Integral a => Context -> a -> IO AST
Base.mkIntNum
mkBitvector :: MonadZ3 z3 => Int
-> Integer
-> z3 AST
mkBitvector :: forall (z3 :: * -> *). MonadZ3 z3 => Int -> Integer -> z3 AST
mkBitvector = (Context -> Int -> Integer -> IO AST) -> Int -> Integer -> z3 AST
forall (z3 :: * -> *) a b c.
MonadZ3 z3 =>
(Context -> a -> b -> IO c) -> a -> b -> z3 c
liftFun2 Context -> Int -> Integer -> IO AST
Base.mkBitvector
mkBvNum :: (MonadZ3 z3, Integral i) => Int
-> i
-> z3 AST
mkBvNum :: forall (z3 :: * -> *) i.
(MonadZ3 z3, Integral i) =>
Int -> i -> z3 AST
mkBvNum = (Context -> Int -> i -> IO AST) -> Int -> i -> z3 AST
forall (z3 :: * -> *) a b c.
MonadZ3 z3 =>
(Context -> a -> b -> IO c) -> a -> b -> z3 c
liftFun2 Context -> Int -> i -> IO AST
forall i. Integral i => Context -> Int -> i -> IO AST
Base.mkBvNum
mkSeqSort :: MonadZ3 z3 => Sort -> z3 Sort
mkSeqSort :: forall (z3 :: * -> *). MonadZ3 z3 => Sort -> z3 Sort
mkSeqSort = (Context -> Sort -> IO Sort) -> Sort -> z3 Sort
forall (z3 :: * -> *) a b.
MonadZ3 z3 =>
(Context -> a -> IO b) -> a -> z3 b
liftFun1 Context -> Sort -> IO Sort
Base.mkSeqSort
isSeqSort :: MonadZ3 z3 => Sort -> z3 Bool
isSeqSort :: forall (z3 :: * -> *). MonadZ3 z3 => Sort -> z3 Bool
isSeqSort = (Context -> Sort -> IO Bool) -> Sort -> z3 Bool
forall (z3 :: * -> *) a b.
MonadZ3 z3 =>
(Context -> a -> IO b) -> a -> z3 b
liftFun1 Context -> Sort -> IO Bool
Base.isSeqSort
mkReSort :: MonadZ3 z3 => Sort -> z3 Sort
mkReSort :: forall (z3 :: * -> *). MonadZ3 z3 => Sort -> z3 Sort
mkReSort = (Context -> Sort -> IO Sort) -> Sort -> z3 Sort
forall (z3 :: * -> *) a b.
MonadZ3 z3 =>
(Context -> a -> IO b) -> a -> z3 b
liftFun1 Context -> Sort -> IO Sort
Base.mkReSort
isReSort :: MonadZ3 z3 => Sort -> z3 Bool
isReSort :: forall (z3 :: * -> *). MonadZ3 z3 => Sort -> z3 Bool
isReSort = (Context -> Sort -> IO Bool) -> Sort -> z3 Bool
forall (z3 :: * -> *) a b.
MonadZ3 z3 =>
(Context -> a -> IO b) -> a -> z3 b
liftFun1 Context -> Sort -> IO Bool
Base.isReSort
mkStringSort :: MonadZ3 z3 => z3 Sort
mkStringSort :: forall (z3 :: * -> *). MonadZ3 z3 => z3 Sort
mkStringSort = (Context -> IO Sort) -> z3 Sort
forall (z3 :: * -> *) b. MonadZ3 z3 => (Context -> IO b) -> z3 b
liftScalar Context -> IO Sort
Base.mkStringSort
isStringSort :: MonadZ3 z3 => Sort -> z3 Bool
isStringSort :: forall (z3 :: * -> *). MonadZ3 z3 => Sort -> z3 Bool
isStringSort = (Context -> Sort -> IO Bool) -> Sort -> z3 Bool
forall (z3 :: * -> *) a b.
MonadZ3 z3 =>
(Context -> a -> IO b) -> a -> z3 b
liftFun1 Context -> Sort -> IO Bool
Base.isStringSort
mkString :: MonadZ3 z3 => String -> z3 AST
mkString :: forall (z3 :: * -> *). MonadZ3 z3 => String -> z3 AST
mkString = (Context -> String -> IO AST) -> String -> z3 AST
forall (z3 :: * -> *) a b.
MonadZ3 z3 =>
(Context -> a -> IO b) -> a -> z3 b
liftFun1 Context -> String -> IO AST
Base.mkString
isString :: MonadZ3 z3 => AST -> z3 Bool
isString :: forall (z3 :: * -> *). MonadZ3 z3 => AST -> z3 Bool
isString = (Context -> AST -> IO Bool) -> AST -> z3 Bool
forall (z3 :: * -> *) a b.
MonadZ3 z3 =>
(Context -> a -> IO b) -> a -> z3 b
liftFun1 Context -> AST -> IO Bool
Base.isString
getString :: MonadZ3 z3 => AST -> z3 String
getString :: forall (z3 :: * -> *). MonadZ3 z3 => AST -> z3 String
getString = (Context -> AST -> IO String) -> AST -> z3 String
forall (z3 :: * -> *) a b.
MonadZ3 z3 =>
(Context -> a -> IO b) -> a -> z3 b
liftFun1 Context -> AST -> IO String
Base.getString
mkSeqEmpty :: MonadZ3 z3 => Sort -> z3 AST
mkSeqEmpty :: forall (z3 :: * -> *). MonadZ3 z3 => Sort -> z3 AST
mkSeqEmpty = (Context -> Sort -> IO AST) -> Sort -> z3 AST
forall (z3 :: * -> *) a b.
MonadZ3 z3 =>
(Context -> a -> IO b) -> a -> z3 b
liftFun1 Context -> Sort -> IO AST
Base.mkSeqEmpty
mkSeqUnit :: MonadZ3 z3 => AST -> z3 AST
mkSeqUnit :: forall (z3 :: * -> *). MonadZ3 z3 => AST -> z3 AST
mkSeqUnit = (Context -> AST -> IO AST) -> AST -> z3 AST
forall (z3 :: * -> *) a b.
MonadZ3 z3 =>
(Context -> a -> IO b) -> a -> z3 b
liftFun1 Context -> AST -> IO AST
Base.mkSeqUnit
mkSeqConcat :: MonadZ3 z3 => [AST] -> z3 AST
mkSeqConcat :: forall (z3 :: * -> *). MonadZ3 z3 => [AST] -> z3 AST
mkSeqConcat = (Context -> [AST] -> IO AST) -> [AST] -> z3 AST
forall (z3 :: * -> *) a b.
MonadZ3 z3 =>
(Context -> a -> IO b) -> a -> z3 b
liftFun1 Context -> [AST] -> IO AST
Base.mkSeqConcat
mkSeqPrefix :: MonadZ3 z3
=> AST
-> AST
-> z3 AST
mkSeqPrefix :: forall (z3 :: * -> *). MonadZ3 z3 => AST -> AST -> z3 AST
mkSeqPrefix = (Context -> AST -> AST -> IO AST) -> AST -> AST -> z3 AST
forall (z3 :: * -> *) a b c.
MonadZ3 z3 =>
(Context -> a -> b -> IO c) -> a -> b -> z3 c
liftFun2 Context -> AST -> AST -> IO AST
Base.mkSeqPrefix
mkSeqSuffix :: MonadZ3 z3
=> AST
-> AST
-> z3 AST
mkSeqSuffix :: forall (z3 :: * -> *). MonadZ3 z3 => AST -> AST -> z3 AST
mkSeqSuffix = (Context -> AST -> AST -> IO AST) -> AST -> AST -> z3 AST
forall (z3 :: * -> *) a b c.
MonadZ3 z3 =>
(Context -> a -> b -> IO c) -> a -> b -> z3 c
liftFun2 Context -> AST -> AST -> IO AST
Base.mkSeqSuffix
mkSeqContains :: MonadZ3 z3
=> AST
-> AST
-> z3 AST
mkSeqContains :: forall (z3 :: * -> *). MonadZ3 z3 => AST -> AST -> z3 AST
mkSeqContains = (Context -> AST -> AST -> IO AST) -> AST -> AST -> z3 AST
forall (z3 :: * -> *) a b c.
MonadZ3 z3 =>
(Context -> a -> b -> IO c) -> a -> b -> z3 c
liftFun2 Context -> AST -> AST -> IO AST
Base.mkSeqContains
mkStrLt :: MonadZ3 z3
=> AST
-> AST
-> z3 AST
mkStrLt :: forall (z3 :: * -> *). MonadZ3 z3 => AST -> AST -> z3 AST
mkStrLt = (Context -> AST -> AST -> IO AST) -> AST -> AST -> z3 AST
forall (z3 :: * -> *) a b c.
MonadZ3 z3 =>
(Context -> a -> b -> IO c) -> a -> b -> z3 c
liftFun2 Context -> AST -> AST -> IO AST
Base.mkStrLt
mkStrLe :: MonadZ3 z3
=> AST
-> AST
-> z3 AST
mkStrLe :: forall (z3 :: * -> *). MonadZ3 z3 => AST -> AST -> z3 AST
mkStrLe = (Context -> AST -> AST -> IO AST) -> AST -> AST -> z3 AST
forall (z3 :: * -> *) a b c.
MonadZ3 z3 =>
(Context -> a -> b -> IO c) -> a -> b -> z3 c
liftFun2 Context -> AST -> AST -> IO AST
Base.mkStrLe
mkSeqExtract :: MonadZ3 z3
=> AST
-> AST
-> AST
-> z3 AST
= (Context -> AST -> AST -> AST -> IO AST)
-> AST -> AST -> AST -> z3 AST
forall (z3 :: * -> *) a b c d.
MonadZ3 z3 =>
(Context -> a -> b -> c -> IO d) -> a -> b -> c -> z3 d
liftFun3 Context -> AST -> AST -> AST -> IO AST
Base.mkSeqExtract
mkSeqReplace :: MonadZ3 z3
=> AST
-> AST
-> AST
-> z3 AST
mkSeqReplace :: forall (z3 :: * -> *). MonadZ3 z3 => AST -> AST -> AST -> z3 AST
mkSeqReplace = (Context -> AST -> AST -> AST -> IO AST)
-> AST -> AST -> AST -> z3 AST
forall (z3 :: * -> *) a b c d.
MonadZ3 z3 =>
(Context -> a -> b -> c -> IO d) -> a -> b -> c -> z3 d
liftFun3 Context -> AST -> AST -> AST -> IO AST
Base.mkSeqReplace
mkSeqAt :: MonadZ3 z3
=> AST
-> AST
-> z3 AST
mkSeqAt :: forall (z3 :: * -> *). MonadZ3 z3 => AST -> AST -> z3 AST
mkSeqAt = (Context -> AST -> AST -> IO AST) -> AST -> AST -> z3 AST
forall (z3 :: * -> *) a b c.
MonadZ3 z3 =>
(Context -> a -> b -> IO c) -> a -> b -> z3 c
liftFun2 Context -> AST -> AST -> IO AST
Base.mkSeqAt
mkSeqLength :: MonadZ3 z3 => AST -> z3 AST
mkSeqLength :: forall (z3 :: * -> *). MonadZ3 z3 => AST -> z3 AST
mkSeqLength = (Context -> AST -> IO AST) -> AST -> z3 AST
forall (z3 :: * -> *) a b.
MonadZ3 z3 =>
(Context -> a -> IO b) -> a -> z3 b
liftFun1 Context -> AST -> IO AST
Base.mkSeqLength
mkSeqIndex :: MonadZ3 z3
=> AST
-> AST
-> AST
-> z3 AST
mkSeqIndex :: forall (z3 :: * -> *). MonadZ3 z3 => AST -> AST -> AST -> z3 AST
mkSeqIndex = (Context -> AST -> AST -> AST -> IO AST)
-> AST -> AST -> AST -> z3 AST
forall (z3 :: * -> *) a b c d.
MonadZ3 z3 =>
(Context -> a -> b -> c -> IO d) -> a -> b -> c -> z3 d
liftFun3 Context -> AST -> AST -> AST -> IO AST
Base.mkSeqIndex
mkStrToInt :: MonadZ3 z3 => AST -> z3 AST
mkStrToInt :: forall (z3 :: * -> *). MonadZ3 z3 => AST -> z3 AST
mkStrToInt = (Context -> AST -> IO AST) -> AST -> z3 AST
forall (z3 :: * -> *) a b.
MonadZ3 z3 =>
(Context -> a -> IO b) -> a -> z3 b
liftFun1 Context -> AST -> IO AST
Base.mkStrToInt
mkIntToStr :: MonadZ3 z3 => AST -> z3 AST
mkIntToStr :: forall (z3 :: * -> *). MonadZ3 z3 => AST -> z3 AST
mkIntToStr = (Context -> AST -> IO AST) -> AST -> z3 AST
forall (z3 :: * -> *) a b.
MonadZ3 z3 =>
(Context -> a -> IO b) -> a -> z3 b
liftFun1 Context -> AST -> IO AST
Base.mkIntToStr
mkSeqToRe :: MonadZ3 z3 => AST -> z3 AST
mkSeqToRe :: forall (z3 :: * -> *). MonadZ3 z3 => AST -> z3 AST
mkSeqToRe = (Context -> AST -> IO AST) -> AST -> z3 AST
forall (z3 :: * -> *) a b.
MonadZ3 z3 =>
(Context -> a -> IO b) -> a -> z3 b
liftFun1 Context -> AST -> IO AST
Base.mkSeqToRe
mkSeqInRe :: MonadZ3 z3
=> AST
-> AST
-> z3 AST
mkSeqInRe :: forall (z3 :: * -> *). MonadZ3 z3 => AST -> AST -> z3 AST
mkSeqInRe = (Context -> AST -> AST -> IO AST) -> AST -> AST -> z3 AST
forall (z3 :: * -> *) a b c.
MonadZ3 z3 =>
(Context -> a -> b -> IO c) -> a -> b -> z3 c
liftFun2 Context -> AST -> AST -> IO AST
Base.mkSeqInRe
mkRePlus :: MonadZ3 z3 => AST -> z3 AST
mkRePlus :: forall (z3 :: * -> *). MonadZ3 z3 => AST -> z3 AST
mkRePlus = (Context -> AST -> IO AST) -> AST -> z3 AST
forall (z3 :: * -> *) a b.
MonadZ3 z3 =>
(Context -> a -> IO b) -> a -> z3 b
liftFun1 Context -> AST -> IO AST
Base.mkRePlus
mkReStar :: MonadZ3 z3 => AST -> z3 AST
mkReStar :: forall (z3 :: * -> *). MonadZ3 z3 => AST -> z3 AST
mkReStar = (Context -> AST -> IO AST) -> AST -> z3 AST
forall (z3 :: * -> *) a b.
MonadZ3 z3 =>
(Context -> a -> IO b) -> a -> z3 b
liftFun1 Context -> AST -> IO AST
Base.mkReStar
mkReOption :: MonadZ3 z3 => AST -> z3 AST
mkReOption :: forall (z3 :: * -> *). MonadZ3 z3 => AST -> z3 AST
mkReOption = (Context -> AST -> IO AST) -> AST -> z3 AST
forall (z3 :: * -> *) a b.
MonadZ3 z3 =>
(Context -> a -> IO b) -> a -> z3 b
liftFun1 Context -> AST -> IO AST
Base.mkReOption
mkReUnion :: (Integral int, MonadZ3 z3) => int -> [AST] -> z3 AST
mkReUnion :: forall int (z3 :: * -> *).
(Integral int, MonadZ3 z3) =>
int -> [AST] -> z3 AST
mkReUnion = (Context -> int -> [AST] -> IO AST) -> int -> [AST] -> z3 AST
forall (z3 :: * -> *) a b c.
MonadZ3 z3 =>
(Context -> a -> b -> IO c) -> a -> b -> z3 c
liftFun2 Context -> int -> [AST] -> IO AST
forall int. Integral int => Context -> int -> [AST] -> IO AST
Base.mkReUnion
mkReConcat :: (Integral int, MonadZ3 z3) => int -> [AST] -> z3 AST
mkReConcat :: forall int (z3 :: * -> *).
(Integral int, MonadZ3 z3) =>
int -> [AST] -> z3 AST
mkReConcat = (Context -> int -> [AST] -> IO AST) -> int -> [AST] -> z3 AST
forall (z3 :: * -> *) a b c.
MonadZ3 z3 =>
(Context -> a -> b -> IO c) -> a -> b -> z3 c
liftFun2 Context -> int -> [AST] -> IO AST
forall int. Integral int => Context -> int -> [AST] -> IO AST
Base.mkReConcat
mkReRange :: MonadZ3 z3
=> AST
-> AST
-> z3 AST
mkReRange :: forall (z3 :: * -> *). MonadZ3 z3 => AST -> AST -> z3 AST
mkReRange = (Context -> AST -> AST -> IO AST) -> AST -> AST -> z3 AST
forall (z3 :: * -> *) a b c.
MonadZ3 z3 =>
(Context -> a -> b -> IO c) -> a -> b -> z3 c
liftFun2 Context -> AST -> AST -> IO AST
Base.mkReRange
mkReLoop :: (Integral int, MonadZ3 z3)
=> AST
-> int
-> int
-> z3 AST
mkReLoop :: forall int (z3 :: * -> *).
(Integral int, MonadZ3 z3) =>
AST -> int -> int -> z3 AST
mkReLoop = (Context -> AST -> int -> int -> IO AST)
-> AST -> int -> int -> z3 AST
forall (z3 :: * -> *) a b c d.
MonadZ3 z3 =>
(Context -> a -> b -> c -> IO d) -> a -> b -> c -> z3 d
liftFun3 Context -> AST -> int -> int -> IO AST
forall int. Integral int => Context -> AST -> int -> int -> IO AST
Base.mkReLoop
mkReIntersect :: (Integral int, MonadZ3 z3) => int -> [AST] -> z3 AST
mkReIntersect :: forall int (z3 :: * -> *).
(Integral int, MonadZ3 z3) =>
int -> [AST] -> z3 AST
mkReIntersect = (Context -> int -> [AST] -> IO AST) -> int -> [AST] -> z3 AST
forall (z3 :: * -> *) a b c.
MonadZ3 z3 =>
(Context -> a -> b -> IO c) -> a -> b -> z3 c
liftFun2 Context -> int -> [AST] -> IO AST
forall int. Integral int => Context -> int -> [AST] -> IO AST
Base.mkReIntersect
mkReComplement :: MonadZ3 z3 => AST -> z3 AST
mkReComplement :: forall (z3 :: * -> *). MonadZ3 z3 => AST -> z3 AST
mkReComplement = (Context -> AST -> IO AST) -> AST -> z3 AST
forall (z3 :: * -> *) a b.
MonadZ3 z3 =>
(Context -> a -> IO b) -> a -> z3 b
liftFun1 Context -> AST -> IO AST
Base.mkReComplement
mkReEmpty :: MonadZ3 z3 => Sort -> z3 AST
mkReEmpty :: forall (z3 :: * -> *). MonadZ3 z3 => Sort -> z3 AST
mkReEmpty = (Context -> Sort -> IO AST) -> Sort -> z3 AST
forall (z3 :: * -> *) a b.
MonadZ3 z3 =>
(Context -> a -> IO b) -> a -> z3 b
liftFun1 Context -> Sort -> IO AST
Base.mkReEmpty
mkReFull :: MonadZ3 z3 => Sort -> z3 AST
mkReFull :: forall (z3 :: * -> *). MonadZ3 z3 => Sort -> z3 AST
mkReFull = (Context -> Sort -> IO AST) -> Sort -> z3 AST
forall (z3 :: * -> *) a b.
MonadZ3 z3 =>
(Context -> a -> IO b) -> a -> z3 b
liftFun1 Context -> Sort -> IO AST
Base.mkReFull
mkPattern :: MonadZ3 z3 => [AST] -> z3 Pattern
mkPattern :: forall (z3 :: * -> *). MonadZ3 z3 => [AST] -> z3 Pattern
mkPattern = (Context -> [AST] -> IO Pattern) -> [AST] -> z3 Pattern
forall (z3 :: * -> *) a b.
MonadZ3 z3 =>
(Context -> a -> IO b) -> a -> z3 b
liftFun1 Context -> [AST] -> IO Pattern
Base.mkPattern
mkBound :: MonadZ3 z3 => Int -> Sort -> z3 AST
mkBound :: forall (z3 :: * -> *). MonadZ3 z3 => Int -> Sort -> z3 AST
mkBound = (Context -> Int -> Sort -> IO AST) -> Int -> Sort -> z3 AST
forall (z3 :: * -> *) a b c.
MonadZ3 z3 =>
(Context -> a -> b -> IO c) -> a -> b -> z3 c
liftFun2 Context -> Int -> Sort -> IO AST
Base.mkBound
mkForallW :: MonadZ3 z3 => Int -> [Pattern] -> [Symbol] -> [Sort] -> AST -> z3 AST
mkForallW :: forall (z3 :: * -> *).
MonadZ3 z3 =>
Int -> [Pattern] -> [Symbol] -> [Sort] -> AST -> z3 AST
mkForallW = (Context
-> Int -> [Pattern] -> [Symbol] -> [Sort] -> AST -> IO AST)
-> Int -> [Pattern] -> [Symbol] -> [Sort] -> AST -> z3 AST
forall (z3 :: * -> *) a1 a2 a3 a4 a5 b.
MonadZ3 z3 =>
(Context -> a1 -> a2 -> a3 -> a4 -> a5 -> IO b)
-> a1 -> a2 -> a3 -> a4 -> a5 -> z3 b
liftFun5 Context -> Int -> [Pattern] -> [Symbol] -> [Sort] -> AST -> IO AST
Base.mkForallW
mkForall :: MonadZ3 z3 => [Pattern] -> [Symbol] -> [Sort] -> AST -> z3 AST
mkForall :: forall (z3 :: * -> *).
MonadZ3 z3 =>
[Pattern] -> [Symbol] -> [Sort] -> AST -> z3 AST
mkForall = (Context -> [Pattern] -> [Symbol] -> [Sort] -> AST -> IO AST)
-> [Pattern] -> [Symbol] -> [Sort] -> AST -> z3 AST
forall (z3 :: * -> *) a b c d e.
MonadZ3 z3 =>
(Context -> a -> b -> c -> d -> IO e) -> a -> b -> c -> d -> z3 e
liftFun4 Context -> [Pattern] -> [Symbol] -> [Sort] -> AST -> IO AST
Base.mkForall
mkForallConst :: MonadZ3 z3 => [Pattern] -> [App] -> AST -> z3 AST
mkForallConst :: forall (z3 :: * -> *).
MonadZ3 z3 =>
[Pattern] -> [App] -> AST -> z3 AST
mkForallConst = (Context -> [Pattern] -> [App] -> AST -> IO AST)
-> [Pattern] -> [App] -> AST -> z3 AST
forall (z3 :: * -> *) a b c d.
MonadZ3 z3 =>
(Context -> a -> b -> c -> IO d) -> a -> b -> c -> z3 d
liftFun3 Context -> [Pattern] -> [App] -> AST -> IO AST
Base.mkForallConst
mkForallWConst :: MonadZ3 z3 => Int -> [Pattern] -> [App] -> AST -> z3 AST
mkForallWConst :: forall (z3 :: * -> *).
MonadZ3 z3 =>
Int -> [Pattern] -> [App] -> AST -> z3 AST
mkForallWConst = (Context -> Int -> [Pattern] -> [App] -> AST -> IO AST)
-> Int -> [Pattern] -> [App] -> AST -> z3 AST
forall (z3 :: * -> *) a b c d e.
MonadZ3 z3 =>
(Context -> a -> b -> c -> d -> IO e) -> a -> b -> c -> d -> z3 e
liftFun4 Context -> Int -> [Pattern] -> [App] -> AST -> IO AST
Base.mkForallWConst
mkExistsConst :: MonadZ3 z3 => [Pattern] -> [App] -> AST -> z3 AST
mkExistsConst :: forall (z3 :: * -> *).
MonadZ3 z3 =>
[Pattern] -> [App] -> AST -> z3 AST
mkExistsConst = (Context -> [Pattern] -> [App] -> AST -> IO AST)
-> [Pattern] -> [App] -> AST -> z3 AST
forall (z3 :: * -> *) a b c d.
MonadZ3 z3 =>
(Context -> a -> b -> c -> IO d) -> a -> b -> c -> z3 d
liftFun3 Context -> [Pattern] -> [App] -> AST -> IO AST
Base.mkExistsConst
mkExistsWConst :: MonadZ3 z3 => Int -> [Pattern] -> [App] -> AST -> z3 AST
mkExistsWConst :: forall (z3 :: * -> *).
MonadZ3 z3 =>
Int -> [Pattern] -> [App] -> AST -> z3 AST
mkExistsWConst = (Context -> Int -> [Pattern] -> [App] -> AST -> IO AST)
-> Int -> [Pattern] -> [App] -> AST -> z3 AST
forall (z3 :: * -> *) a b c d e.
MonadZ3 z3 =>
(Context -> a -> b -> c -> d -> IO e) -> a -> b -> c -> d -> z3 e
liftFun4 Context -> Int -> [Pattern] -> [App] -> AST -> IO AST
Base.mkExistsWConst
mkExistsW :: MonadZ3 z3 => Int -> [Pattern] -> [Symbol] -> [Sort] -> AST -> z3 AST
mkExistsW :: forall (z3 :: * -> *).
MonadZ3 z3 =>
Int -> [Pattern] -> [Symbol] -> [Sort] -> AST -> z3 AST
mkExistsW = (Context
-> Int -> [Pattern] -> [Symbol] -> [Sort] -> AST -> IO AST)
-> Int -> [Pattern] -> [Symbol] -> [Sort] -> AST -> z3 AST
forall (z3 :: * -> *) a1 a2 a3 a4 a5 b.
MonadZ3 z3 =>
(Context -> a1 -> a2 -> a3 -> a4 -> a5 -> IO b)
-> a1 -> a2 -> a3 -> a4 -> a5 -> z3 b
liftFun5 Context -> Int -> [Pattern] -> [Symbol] -> [Sort] -> AST -> IO AST
Base.mkExistsW
mkExists :: MonadZ3 z3 => [Pattern] -> [Symbol] -> [Sort] -> AST -> z3 AST
mkExists :: forall (z3 :: * -> *).
MonadZ3 z3 =>
[Pattern] -> [Symbol] -> [Sort] -> AST -> z3 AST
mkExists = (Context -> [Pattern] -> [Symbol] -> [Sort] -> AST -> IO AST)
-> [Pattern] -> [Symbol] -> [Sort] -> AST -> z3 AST
forall (z3 :: * -> *) a b c d e.
MonadZ3 z3 =>
(Context -> a -> b -> c -> d -> IO e) -> a -> b -> c -> d -> z3 e
liftFun4 Context -> [Pattern] -> [Symbol] -> [Sort] -> AST -> IO AST
Base.mkExists
getSymbolString :: MonadZ3 z3 => Symbol -> z3 String
getSymbolString :: forall (z3 :: * -> *). MonadZ3 z3 => Symbol -> z3 String
getSymbolString = (Context -> Symbol -> IO String) -> Symbol -> z3 String
forall (z3 :: * -> *) a b.
MonadZ3 z3 =>
(Context -> a -> IO b) -> a -> z3 b
liftFun1 Context -> Symbol -> IO String
Base.getSymbolString
getSortId :: MonadZ3 z3 => Sort -> z3 Int
getSortId :: forall (z3 :: * -> *). MonadZ3 z3 => Sort -> z3 Int
getSortId = (Context -> Sort -> IO Int) -> Sort -> z3 Int
forall (z3 :: * -> *) a b.
MonadZ3 z3 =>
(Context -> a -> IO b) -> a -> z3 b
liftFun1 Context -> Sort -> IO Int
Base.getSortId
getSortName :: MonadZ3 z3 => Sort -> z3 Symbol
getSortName :: forall (z3 :: * -> *). MonadZ3 z3 => Sort -> z3 Symbol
getSortName = (Context -> Sort -> IO Symbol) -> Sort -> z3 Symbol
forall (z3 :: * -> *) a b.
MonadZ3 z3 =>
(Context -> a -> IO b) -> a -> z3 b
liftFun1 Context -> Sort -> IO Symbol
Base.getSortName
sortToAst :: MonadZ3 z3 => Sort -> z3 AST
sortToAst :: forall (z3 :: * -> *). MonadZ3 z3 => Sort -> z3 AST
sortToAst = (Context -> Sort -> IO AST) -> Sort -> z3 AST
forall (z3 :: * -> *) a b.
MonadZ3 z3 =>
(Context -> a -> IO b) -> a -> z3 b
liftFun1 Context -> Sort -> IO AST
Base.sortToAst
isEqSort :: MonadZ3 z3 => Sort -> Sort -> z3 Bool
isEqSort :: forall (z3 :: * -> *). MonadZ3 z3 => Sort -> Sort -> z3 Bool
isEqSort = (Context -> Sort -> Sort -> IO Bool) -> Sort -> Sort -> z3 Bool
forall (z3 :: * -> *) a b c.
MonadZ3 z3 =>
(Context -> a -> b -> IO c) -> a -> b -> z3 c
liftFun2 Context -> Sort -> Sort -> IO Bool
Base.isEqSort
getSortKind :: MonadZ3 z3 => Sort -> z3 SortKind
getSortKind :: forall (z3 :: * -> *). MonadZ3 z3 => Sort -> z3 SortKind
getSortKind = (Context -> Sort -> IO SortKind) -> Sort -> z3 SortKind
forall (z3 :: * -> *) a b.
MonadZ3 z3 =>
(Context -> a -> IO b) -> a -> z3 b
liftFun1 Context -> Sort -> IO SortKind
Base.getSortKind
getBvSortSize :: MonadZ3 z3 => Sort -> z3 Int
getBvSortSize :: forall (z3 :: * -> *). MonadZ3 z3 => Sort -> z3 Int
getBvSortSize = (Context -> Sort -> IO Int) -> Sort -> z3 Int
forall (z3 :: * -> *) a b.
MonadZ3 z3 =>
(Context -> a -> IO b) -> a -> z3 b
liftFun1 Context -> Sort -> IO Int
Base.getBvSortSize
getTupleSortMkDecl :: MonadZ3 z3 => Sort -> z3 FuncDecl
getTupleSortMkDecl :: forall (z3 :: * -> *). MonadZ3 z3 => Sort -> z3 FuncDecl
getTupleSortMkDecl = (Context -> Sort -> IO FuncDecl) -> Sort -> z3 FuncDecl
forall (z3 :: * -> *) a b.
MonadZ3 z3 =>
(Context -> a -> IO b) -> a -> z3 b
liftFun1 Context -> Sort -> IO FuncDecl
Base.getTupleSortMkDecl
getTupleSortNumFields :: MonadZ3 z3 => Sort -> z3 Int
getTupleSortNumFields :: forall (z3 :: * -> *). MonadZ3 z3 => Sort -> z3 Int
getTupleSortNumFields = (Context -> Sort -> IO Int) -> Sort -> z3 Int
forall (z3 :: * -> *) a b.
MonadZ3 z3 =>
(Context -> a -> IO b) -> a -> z3 b
liftFun1 Context -> Sort -> IO Int
Base.getTupleSortNumFields
getTupleSortFieldDecl :: MonadZ3 z3 => Sort -> Int -> z3 FuncDecl
getTupleSortFieldDecl :: forall (z3 :: * -> *). MonadZ3 z3 => Sort -> Int -> z3 FuncDecl
getTupleSortFieldDecl = (Context -> Sort -> Int -> IO FuncDecl)
-> Sort -> Int -> z3 FuncDecl
forall (z3 :: * -> *) a b c.
MonadZ3 z3 =>
(Context -> a -> b -> IO c) -> a -> b -> z3 c
liftFun2 Context -> Sort -> Int -> IO FuncDecl
Base.getTupleSortFieldDecl
getDatatypeSortConstructors :: MonadZ3 z3
=> Sort
-> z3 [FuncDecl]
getDatatypeSortConstructors :: forall (z3 :: * -> *). MonadZ3 z3 => Sort -> z3 [FuncDecl]
getDatatypeSortConstructors = (Context -> Sort -> IO [FuncDecl]) -> Sort -> z3 [FuncDecl]
forall (z3 :: * -> *) a b.
MonadZ3 z3 =>
(Context -> a -> IO b) -> a -> z3 b
liftFun1 Context -> Sort -> IO [FuncDecl]
Base.getDatatypeSortConstructors
getDatatypeSortRecognizers :: MonadZ3 z3
=> Sort
-> z3 [FuncDecl]
getDatatypeSortRecognizers :: forall (z3 :: * -> *). MonadZ3 z3 => Sort -> z3 [FuncDecl]
getDatatypeSortRecognizers = (Context -> Sort -> IO [FuncDecl]) -> Sort -> z3 [FuncDecl]
forall (z3 :: * -> *) a b.
MonadZ3 z3 =>
(Context -> a -> IO b) -> a -> z3 b
liftFun1 Context -> Sort -> IO [FuncDecl]
Base.getDatatypeSortRecognizers
getDatatypeSortConstructorAccessors :: MonadZ3 z3
=> Sort
-> z3 [[FuncDecl]]
getDatatypeSortConstructorAccessors :: forall (z3 :: * -> *). MonadZ3 z3 => Sort -> z3 [[FuncDecl]]
getDatatypeSortConstructorAccessors = (Context -> Sort -> IO [[FuncDecl]]) -> Sort -> z3 [[FuncDecl]]
forall (z3 :: * -> *) a b.
MonadZ3 z3 =>
(Context -> a -> IO b) -> a -> z3 b
liftFun1 Context -> Sort -> IO [[FuncDecl]]
Base.getDatatypeSortConstructorAccessors
mkAtMost :: MonadZ3 z3 => [AST] -> Int -> z3 AST
mkAtMost :: forall (z3 :: * -> *). MonadZ3 z3 => [AST] -> Int -> z3 AST
mkAtMost = (Context -> [AST] -> Int -> IO AST) -> [AST] -> Int -> z3 AST
forall (z3 :: * -> *) a b c.
MonadZ3 z3 =>
(Context -> a -> b -> IO c) -> a -> b -> z3 c
liftFun2 Context -> [AST] -> Int -> IO AST
Base.mkAtMost
mkAtLeast :: MonadZ3 z3 => [AST] -> Int -> z3 AST
mkAtLeast :: forall (z3 :: * -> *). MonadZ3 z3 => [AST] -> Int -> z3 AST
mkAtLeast = (Context -> [AST] -> Int -> IO AST) -> [AST] -> Int -> z3 AST
forall (z3 :: * -> *) a b c.
MonadZ3 z3 =>
(Context -> a -> b -> IO c) -> a -> b -> z3 c
liftFun2 Context -> [AST] -> Int -> IO AST
Base.mkAtLeast
getDeclName :: MonadZ3 z3 => FuncDecl -> z3 Symbol
getDeclName :: forall (z3 :: * -> *). MonadZ3 z3 => FuncDecl -> z3 Symbol
getDeclName = (Context -> FuncDecl -> IO Symbol) -> FuncDecl -> z3 Symbol
forall (z3 :: * -> *) a b.
MonadZ3 z3 =>
(Context -> a -> IO b) -> a -> z3 b
liftFun1 Context -> FuncDecl -> IO Symbol
Base.getDeclName
getArity :: MonadZ3 z3 => FuncDecl -> z3 Int
getArity :: forall (z3 :: * -> *). MonadZ3 z3 => FuncDecl -> z3 Int
getArity = (Context -> FuncDecl -> IO Int) -> FuncDecl -> z3 Int
forall (z3 :: * -> *) a b.
MonadZ3 z3 =>
(Context -> a -> IO b) -> a -> z3 b
liftFun1 Context -> FuncDecl -> IO Int
Base.getArity
getDomain :: MonadZ3 z3
=> FuncDecl
-> Int
-> z3 Sort
getDomain :: forall (z3 :: * -> *). MonadZ3 z3 => FuncDecl -> Int -> z3 Sort
getDomain = (Context -> FuncDecl -> Int -> IO Sort)
-> FuncDecl -> Int -> z3 Sort
forall (z3 :: * -> *) a b c.
MonadZ3 z3 =>
(Context -> a -> b -> IO c) -> a -> b -> z3 c
liftFun2 Context -> FuncDecl -> Int -> IO Sort
Base.getDomain
getRange :: MonadZ3 z3 => FuncDecl -> z3 Sort
getRange :: forall (z3 :: * -> *). MonadZ3 z3 => FuncDecl -> z3 Sort
getRange = (Context -> FuncDecl -> IO Sort) -> FuncDecl -> z3 Sort
forall (z3 :: * -> *) a b.
MonadZ3 z3 =>
(Context -> a -> IO b) -> a -> z3 b
liftFun1 Context -> FuncDecl -> IO Sort
Base.getRange
appToAst :: MonadZ3 z3 => App -> z3 AST
appToAst :: forall (z3 :: * -> *). MonadZ3 z3 => App -> z3 AST
appToAst = (Context -> App -> IO AST) -> App -> z3 AST
forall (z3 :: * -> *) a b.
MonadZ3 z3 =>
(Context -> a -> IO b) -> a -> z3 b
liftFun1 Context -> App -> IO AST
Base.appToAst
getAppDecl :: MonadZ3 z3 => App -> z3 FuncDecl
getAppDecl :: forall (z3 :: * -> *). MonadZ3 z3 => App -> z3 FuncDecl
getAppDecl = (Context -> App -> IO FuncDecl) -> App -> z3 FuncDecl
forall (z3 :: * -> *) a b.
MonadZ3 z3 =>
(Context -> a -> IO b) -> a -> z3 b
liftFun1 Context -> App -> IO FuncDecl
Base.getAppDecl
getAppNumArgs :: MonadZ3 z3 => App -> z3 Int
getAppNumArgs :: forall (z3 :: * -> *). MonadZ3 z3 => App -> z3 Int
getAppNumArgs = (Context -> App -> IO Int) -> App -> z3 Int
forall (z3 :: * -> *) a b.
MonadZ3 z3 =>
(Context -> a -> IO b) -> a -> z3 b
liftFun1 Context -> App -> IO Int
Base.getAppNumArgs
getAppArg :: MonadZ3 z3 => App -> Int -> z3 AST
getAppArg :: forall (z3 :: * -> *). MonadZ3 z3 => App -> Int -> z3 AST
getAppArg = (Context -> App -> Int -> IO AST) -> App -> Int -> z3 AST
forall (z3 :: * -> *) a b c.
MonadZ3 z3 =>
(Context -> a -> b -> IO c) -> a -> b -> z3 c
liftFun2 Context -> App -> Int -> IO AST
Base.getAppArg
getAppArgs :: MonadZ3 z3 => App -> z3 [AST]
getAppArgs :: forall (z3 :: * -> *). MonadZ3 z3 => App -> z3 [AST]
getAppArgs = (Context -> App -> IO [AST]) -> App -> z3 [AST]
forall (z3 :: * -> *) a b.
MonadZ3 z3 =>
(Context -> a -> IO b) -> a -> z3 b
liftFun1 Context -> App -> IO [AST]
Base.getAppArgs
getSort :: MonadZ3 z3 => AST -> z3 Sort
getSort :: forall (z3 :: * -> *). MonadZ3 z3 => AST -> z3 Sort
getSort = (Context -> AST -> IO Sort) -> AST -> z3 Sort
forall (z3 :: * -> *) a b.
MonadZ3 z3 =>
(Context -> a -> IO b) -> a -> z3 b
liftFun1 Context -> AST -> IO Sort
Base.getSort
getArraySortDomain :: MonadZ3 z3 => Sort -> z3 Sort
getArraySortDomain :: forall (z3 :: * -> *). MonadZ3 z3 => Sort -> z3 Sort
getArraySortDomain = (Context -> Sort -> IO Sort) -> Sort -> z3 Sort
forall (z3 :: * -> *) a b.
MonadZ3 z3 =>
(Context -> a -> IO b) -> a -> z3 b
liftFun1 Context -> Sort -> IO Sort
Base.getArraySortDomain
getArraySortRange :: MonadZ3 z3 => Sort -> z3 Sort
getArraySortRange :: forall (z3 :: * -> *). MonadZ3 z3 => Sort -> z3 Sort
getArraySortRange = (Context -> Sort -> IO Sort) -> Sort -> z3 Sort
forall (z3 :: * -> *) a b.
MonadZ3 z3 =>
(Context -> a -> IO b) -> a -> z3 b
liftFun1 Context -> Sort -> IO Sort
Base.getArraySortRange
getBoolValue :: MonadZ3 z3 => AST -> z3 (Maybe Bool)
getBoolValue :: forall (z3 :: * -> *). MonadZ3 z3 => AST -> z3 (Maybe Bool)
getBoolValue = (Context -> AST -> IO (Maybe Bool)) -> AST -> z3 (Maybe Bool)
forall (z3 :: * -> *) a b.
MonadZ3 z3 =>
(Context -> a -> IO b) -> a -> z3 b
liftFun1 Context -> AST -> IO (Maybe Bool)
Base.getBoolValue
getAstKind :: MonadZ3 z3 => AST -> z3 ASTKind
getAstKind :: forall (z3 :: * -> *). MonadZ3 z3 => AST -> z3 ASTKind
getAstKind = (Context -> AST -> IO ASTKind) -> AST -> z3 ASTKind
forall (z3 :: * -> *) a b.
MonadZ3 z3 =>
(Context -> a -> IO b) -> a -> z3 b
liftFun1 Context -> AST -> IO ASTKind
Base.getAstKind
isApp :: MonadZ3 z3 => AST -> z3 Bool
isApp :: forall (z3 :: * -> *). MonadZ3 z3 => AST -> z3 Bool
isApp = (Context -> AST -> IO Bool) -> AST -> z3 Bool
forall (z3 :: * -> *) a b.
MonadZ3 z3 =>
(Context -> a -> IO b) -> a -> z3 b
liftFun1 Context -> AST -> IO Bool
Base.isApp
toApp :: MonadZ3 z3 => AST -> z3 App
toApp :: forall (z3 :: * -> *). MonadZ3 z3 => AST -> z3 App
toApp = (Context -> AST -> IO App) -> AST -> z3 App
forall (z3 :: * -> *) a b.
MonadZ3 z3 =>
(Context -> a -> IO b) -> a -> z3 b
liftFun1 Context -> AST -> IO App
Base.toApp
getNumeralString :: MonadZ3 z3 => AST -> z3 String
getNumeralString :: forall (z3 :: * -> *). MonadZ3 z3 => AST -> z3 String
getNumeralString = (Context -> AST -> IO String) -> AST -> z3 String
forall (z3 :: * -> *) a b.
MonadZ3 z3 =>
(Context -> a -> IO b) -> a -> z3 b
liftFun1 Context -> AST -> IO String
Base.getNumeralString
getNumerator :: MonadZ3 z3 => AST -> z3 AST
getNumerator :: forall (z3 :: * -> *). MonadZ3 z3 => AST -> z3 AST
getNumerator = (Context -> AST -> IO AST) -> AST -> z3 AST
forall (z3 :: * -> *) a b.
MonadZ3 z3 =>
(Context -> a -> IO b) -> a -> z3 b
liftFun1 Context -> AST -> IO AST
Base.getNumerator
getDenominator :: MonadZ3 z3 => AST -> z3 AST
getDenominator :: forall (z3 :: * -> *). MonadZ3 z3 => AST -> z3 AST
getDenominator = (Context -> AST -> IO AST) -> AST -> z3 AST
forall (z3 :: * -> *) a b.
MonadZ3 z3 =>
(Context -> a -> IO b) -> a -> z3 b
liftFun1 Context -> AST -> IO AST
Base.getDenominator
getIndexValue :: MonadZ3 z3 => AST -> z3 Int
getIndexValue :: forall (z3 :: * -> *). MonadZ3 z3 => AST -> z3 Int
getIndexValue = (Context -> AST -> IO Int) -> AST -> z3 Int
forall (z3 :: * -> *) a b.
MonadZ3 z3 =>
(Context -> a -> IO b) -> a -> z3 b
liftFun1 Context -> AST -> IO Int
Base.getIndexValue
isQuantifierForall :: MonadZ3 z3 => AST -> z3 Bool
isQuantifierForall :: forall (z3 :: * -> *). MonadZ3 z3 => AST -> z3 Bool
isQuantifierForall = (Context -> AST -> IO Bool) -> AST -> z3 Bool
forall (z3 :: * -> *) a b.
MonadZ3 z3 =>
(Context -> a -> IO b) -> a -> z3 b
liftFun1 Context -> AST -> IO Bool
Base.isQuantifierForall
isQuantifierExists :: MonadZ3 z3 => AST -> z3 Bool
isQuantifierExists :: forall (z3 :: * -> *). MonadZ3 z3 => AST -> z3 Bool
isQuantifierExists = (Context -> AST -> IO Bool) -> AST -> z3 Bool
forall (z3 :: * -> *) a b.
MonadZ3 z3 =>
(Context -> a -> IO b) -> a -> z3 b
liftFun1 Context -> AST -> IO Bool
Base.isQuantifierExists
getQuantifierWeight :: MonadZ3 z3 => AST -> z3 Int
getQuantifierWeight :: forall (z3 :: * -> *). MonadZ3 z3 => AST -> z3 Int
getQuantifierWeight = (Context -> AST -> IO Int) -> AST -> z3 Int
forall (z3 :: * -> *) a b.
MonadZ3 z3 =>
(Context -> a -> IO b) -> a -> z3 b
liftFun1 Context -> AST -> IO Int
Base.getQuantifierWeight
getQuantifierNumPatterns :: MonadZ3 z3 => AST -> z3 Int
getQuantifierNumPatterns :: forall (z3 :: * -> *). MonadZ3 z3 => AST -> z3 Int
getQuantifierNumPatterns = (Context -> AST -> IO Int) -> AST -> z3 Int
forall (z3 :: * -> *) a b.
MonadZ3 z3 =>
(Context -> a -> IO b) -> a -> z3 b
liftFun1 Context -> AST -> IO Int
Base.getQuantifierNumPatterns
getQuantifierPatternAST :: MonadZ3 z3 => AST -> Int -> z3 AST
getQuantifierPatternAST :: forall (z3 :: * -> *). MonadZ3 z3 => AST -> Int -> z3 AST
getQuantifierPatternAST = (Context -> AST -> Int -> IO AST) -> AST -> Int -> z3 AST
forall (z3 :: * -> *) a b c.
MonadZ3 z3 =>
(Context -> a -> b -> IO c) -> a -> b -> z3 c
liftFun2 Context -> AST -> Int -> IO AST
Base.getQuantifierPatternAST
getQuantifierPatterns :: MonadZ3 z3 => AST -> z3 [AST]
getQuantifierPatterns :: forall (z3 :: * -> *). MonadZ3 z3 => AST -> z3 [AST]
getQuantifierPatterns = (Context -> AST -> IO [AST]) -> AST -> z3 [AST]
forall (z3 :: * -> *) a b.
MonadZ3 z3 =>
(Context -> a -> IO b) -> a -> z3 b
liftFun1 Context -> AST -> IO [AST]
Base.getQuantifierPatterns
getQuantifierNumNoPatterns :: MonadZ3 z3 => AST -> z3 Int
getQuantifierNumNoPatterns :: forall (z3 :: * -> *). MonadZ3 z3 => AST -> z3 Int
getQuantifierNumNoPatterns = (Context -> AST -> IO Int) -> AST -> z3 Int
forall (z3 :: * -> *) a b.
MonadZ3 z3 =>
(Context -> a -> IO b) -> a -> z3 b
liftFun1 Context -> AST -> IO Int
Base.getQuantifierNumNoPatterns
getQuantifierNoPatternAST :: MonadZ3 z3 => AST -> Int -> z3 AST
getQuantifierNoPatternAST :: forall (z3 :: * -> *). MonadZ3 z3 => AST -> Int -> z3 AST
getQuantifierNoPatternAST = (Context -> AST -> Int -> IO AST) -> AST -> Int -> z3 AST
forall (z3 :: * -> *) a b c.
MonadZ3 z3 =>
(Context -> a -> b -> IO c) -> a -> b -> z3 c
liftFun2 Context -> AST -> Int -> IO AST
Base.getQuantifierNoPatternAST
getQuantifierNoPatterns :: MonadZ3 z3 => AST -> z3 [AST]
getQuantifierNoPatterns :: forall (z3 :: * -> *). MonadZ3 z3 => AST -> z3 [AST]
getQuantifierNoPatterns = (Context -> AST -> IO [AST]) -> AST -> z3 [AST]
forall (z3 :: * -> *) a b.
MonadZ3 z3 =>
(Context -> a -> IO b) -> a -> z3 b
liftFun1 Context -> AST -> IO [AST]
Base.getQuantifierNoPatterns
getQuantifierNumBound :: MonadZ3 z3 => AST -> z3 Int
getQuantifierNumBound :: forall (z3 :: * -> *). MonadZ3 z3 => AST -> z3 Int
getQuantifierNumBound = (Context -> AST -> IO Int) -> AST -> z3 Int
forall (z3 :: * -> *) a b.
MonadZ3 z3 =>
(Context -> a -> IO b) -> a -> z3 b
liftFun1 Context -> AST -> IO Int
Base.getQuantifierNumBound
getQuantifierBoundName :: MonadZ3 z3 => AST -> Int -> z3 Symbol
getQuantifierBoundName :: forall (z3 :: * -> *). MonadZ3 z3 => AST -> Int -> z3 Symbol
getQuantifierBoundName = (Context -> AST -> Int -> IO Symbol) -> AST -> Int -> z3 Symbol
forall (z3 :: * -> *) a b c.
MonadZ3 z3 =>
(Context -> a -> b -> IO c) -> a -> b -> z3 c
liftFun2 Context -> AST -> Int -> IO Symbol
Base.getQuantifierBoundName
getQuantifierBoundSort :: MonadZ3 z3 => AST -> Int -> z3 Sort
getQuantifierBoundSort :: forall (z3 :: * -> *). MonadZ3 z3 => AST -> Int -> z3 Sort
getQuantifierBoundSort = (Context -> AST -> Int -> IO Sort) -> AST -> Int -> z3 Sort
forall (z3 :: * -> *) a b c.
MonadZ3 z3 =>
(Context -> a -> b -> IO c) -> a -> b -> z3 c
liftFun2 Context -> AST -> Int -> IO Sort
Base.getQuantifierBoundSort
getQuantifierBoundVars :: MonadZ3 z3 => AST -> z3 [AST]
getQuantifierBoundVars :: forall (z3 :: * -> *). MonadZ3 z3 => AST -> z3 [AST]
getQuantifierBoundVars = (Context -> AST -> IO [AST]) -> AST -> z3 [AST]
forall (z3 :: * -> *) a b.
MonadZ3 z3 =>
(Context -> a -> IO b) -> a -> z3 b
liftFun1 Context -> AST -> IO [AST]
Base.getQuantifierBoundVars
getQuantifierBody :: MonadZ3 z3 => AST -> z3 AST
getQuantifierBody :: forall (z3 :: * -> *). MonadZ3 z3 => AST -> z3 AST
getQuantifierBody = (Context -> AST -> IO AST) -> AST -> z3 AST
forall (z3 :: * -> *) a b.
MonadZ3 z3 =>
(Context -> a -> IO b) -> a -> z3 b
liftFun1 Context -> AST -> IO AST
Base.getQuantifierBody
simplify :: MonadZ3 z3 => AST -> z3 AST
simplify :: forall (z3 :: * -> *). MonadZ3 z3 => AST -> z3 AST
simplify = (Context -> AST -> IO AST) -> AST -> z3 AST
forall (z3 :: * -> *) a b.
MonadZ3 z3 =>
(Context -> a -> IO b) -> a -> z3 b
liftFun1 Context -> AST -> IO AST
Base.simplify
simplifyEx :: MonadZ3 z3 => AST -> Params -> z3 AST
simplifyEx :: forall (z3 :: * -> *). MonadZ3 z3 => AST -> Params -> z3 AST
simplifyEx = (Context -> AST -> Params -> IO AST) -> AST -> Params -> z3 AST
forall (z3 :: * -> *) a b c.
MonadZ3 z3 =>
(Context -> a -> b -> IO c) -> a -> b -> z3 c
liftFun2 Context -> AST -> Params -> IO AST
Base.simplifyEx
getBool :: MonadZ3 z3 => AST -> z3 Bool
getBool :: forall (z3 :: * -> *). MonadZ3 z3 => AST -> z3 Bool
getBool = (Context -> AST -> IO Bool) -> AST -> z3 Bool
forall (z3 :: * -> *) a b.
MonadZ3 z3 =>
(Context -> a -> IO b) -> a -> z3 b
liftFun1 Context -> AST -> IO Bool
Base.getBool
getInt :: MonadZ3 z3 => AST -> z3 Integer
getInt :: forall (z3 :: * -> *). MonadZ3 z3 => AST -> z3 Integer
getInt = (Context -> AST -> IO Integer) -> AST -> z3 Integer
forall (z3 :: * -> *) a b.
MonadZ3 z3 =>
(Context -> a -> IO b) -> a -> z3 b
liftFun1 Context -> AST -> IO Integer
Base.getInt
getReal :: MonadZ3 z3 => AST -> z3 Rational
getReal :: forall (z3 :: * -> *). MonadZ3 z3 => AST -> z3 Rational
getReal = (Context -> AST -> IO Rational) -> AST -> z3 Rational
forall (z3 :: * -> *) a b.
MonadZ3 z3 =>
(Context -> a -> IO b) -> a -> z3 b
liftFun1 Context -> AST -> IO Rational
Base.getReal
substituteVars :: MonadZ3 z3 => AST -> [AST] -> z3 AST
substituteVars :: forall (z3 :: * -> *). MonadZ3 z3 => AST -> [AST] -> z3 AST
substituteVars = (Context -> AST -> [AST] -> IO AST) -> AST -> [AST] -> z3 AST
forall (z3 :: * -> *) a b c.
MonadZ3 z3 =>
(Context -> a -> b -> IO c) -> a -> b -> z3 c
liftFun2 Context -> AST -> [AST] -> IO AST
Base.substituteVars
substitute :: MonadZ3 z3 => AST -> [(AST, AST)] -> z3 AST
substitute :: forall (z3 :: * -> *). MonadZ3 z3 => AST -> [(AST, AST)] -> z3 AST
substitute = (Context -> AST -> [(AST, AST)] -> IO AST)
-> AST -> [(AST, AST)] -> z3 AST
forall (z3 :: * -> *) a b c.
MonadZ3 z3 =>
(Context -> a -> b -> IO c) -> a -> b -> z3 c
liftFun2 Context -> AST -> [(AST, AST)] -> IO AST
Base.substitute
modelEval :: MonadZ3 z3 => Model -> AST
-> Bool
-> z3 (Maybe AST)
modelEval :: forall (z3 :: * -> *).
MonadZ3 z3 =>
Model -> AST -> Bool -> z3 (Maybe AST)
modelEval = (Context -> Model -> AST -> Bool -> IO (Maybe AST))
-> Model -> AST -> Bool -> z3 (Maybe AST)
forall (z3 :: * -> *) a b c d.
MonadZ3 z3 =>
(Context -> a -> b -> c -> IO d) -> a -> b -> c -> z3 d
liftFun3 Context -> Model -> AST -> Bool -> IO (Maybe AST)
Base.modelEval
evalArray :: MonadZ3 z3 => Model -> AST -> z3 (Maybe FuncModel)
evalArray :: forall (z3 :: * -> *).
MonadZ3 z3 =>
Model -> AST -> z3 (Maybe FuncModel)
evalArray = (Context -> Model -> AST -> IO (Maybe FuncModel))
-> Model -> AST -> z3 (Maybe FuncModel)
forall (z3 :: * -> *) a b c.
MonadZ3 z3 =>
(Context -> a -> b -> IO c) -> a -> b -> z3 c
liftFun2 Context -> Model -> AST -> IO (Maybe FuncModel)
Base.evalArray
getConstInterp :: MonadZ3 z3 => Model -> FuncDecl -> z3 (Maybe AST)
getConstInterp :: forall (z3 :: * -> *).
MonadZ3 z3 =>
Model -> FuncDecl -> z3 (Maybe AST)
getConstInterp = (Context -> Model -> FuncDecl -> IO (Maybe AST))
-> Model -> FuncDecl -> z3 (Maybe AST)
forall (z3 :: * -> *) a b c.
MonadZ3 z3 =>
(Context -> a -> b -> IO c) -> a -> b -> z3 c
liftFun2 Context -> Model -> FuncDecl -> IO (Maybe AST)
Base.getConstInterp
getFuncInterp :: MonadZ3 z3 => Model -> FuncDecl -> z3 (Maybe FuncInterp)
getFuncInterp :: forall (z3 :: * -> *).
MonadZ3 z3 =>
Model -> FuncDecl -> z3 (Maybe FuncInterp)
getFuncInterp = (Context -> Model -> FuncDecl -> IO (Maybe FuncInterp))
-> Model -> FuncDecl -> z3 (Maybe FuncInterp)
forall (z3 :: * -> *) a b c.
MonadZ3 z3 =>
(Context -> a -> b -> IO c) -> a -> b -> z3 c
liftFun2 Context -> Model -> FuncDecl -> IO (Maybe FuncInterp)
Base.getFuncInterp
modelTranslate :: MonadZ3 z3 => Model -> Base.Context -> z3 Model
modelTranslate :: forall (z3 :: * -> *). MonadZ3 z3 => Model -> Context -> z3 Model
modelTranslate = (Context -> Model -> Context -> IO Model)
-> Model -> Context -> z3 Model
forall (z3 :: * -> *) a b c.
MonadZ3 z3 =>
(Context -> a -> b -> IO c) -> a -> b -> z3 c
liftFun2 Context -> Model -> Context -> IO Model
Base.modelTranslate
hasInterp :: MonadZ3 z3 => Model -> FuncDecl -> z3 Bool
hasInterp :: forall (z3 :: * -> *). MonadZ3 z3 => Model -> FuncDecl -> z3 Bool
hasInterp = (Context -> Model -> FuncDecl -> IO Bool)
-> Model -> FuncDecl -> z3 Bool
forall (z3 :: * -> *) a b c.
MonadZ3 z3 =>
(Context -> a -> b -> IO c) -> a -> b -> z3 c
liftFun2 Context -> Model -> FuncDecl -> IO Bool
Base.hasInterp
numConsts :: MonadZ3 z3 => Model -> z3 Word
numConsts :: forall (z3 :: * -> *). MonadZ3 z3 => Model -> z3 Word
numConsts = (Context -> Model -> IO Word) -> Model -> z3 Word
forall (z3 :: * -> *) a b.
MonadZ3 z3 =>
(Context -> a -> IO b) -> a -> z3 b
liftFun1 Context -> Model -> IO Word
Base.numConsts
numFuncs :: MonadZ3 z3 => Model -> z3 Word
numFuncs :: forall (z3 :: * -> *). MonadZ3 z3 => Model -> z3 Word
numFuncs = (Context -> Model -> IO Word) -> Model -> z3 Word
forall (z3 :: * -> *) a b.
MonadZ3 z3 =>
(Context -> a -> IO b) -> a -> z3 b
liftFun1 Context -> Model -> IO Word
Base.numFuncs
getConstDecl :: MonadZ3 z3 => Model -> Word -> z3 FuncDecl
getConstDecl :: forall (z3 :: * -> *). MonadZ3 z3 => Model -> Word -> z3 FuncDecl
getConstDecl = (Context -> Model -> Word -> IO FuncDecl)
-> Model -> Word -> z3 FuncDecl
forall (z3 :: * -> *) a b c.
MonadZ3 z3 =>
(Context -> a -> b -> IO c) -> a -> b -> z3 c
liftFun2 Context -> Model -> Word -> IO FuncDecl
Base.getConstDecl
getFuncDecl :: MonadZ3 z3 => Model -> Word -> z3 FuncDecl
getFuncDecl :: forall (z3 :: * -> *). MonadZ3 z3 => Model -> Word -> z3 FuncDecl
getFuncDecl = (Context -> Model -> Word -> IO FuncDecl)
-> Model -> Word -> z3 FuncDecl
forall (z3 :: * -> *) a b c.
MonadZ3 z3 =>
(Context -> a -> b -> IO c) -> a -> b -> z3 c
liftFun2 Context -> Model -> Word -> IO FuncDecl
Base.getFuncDecl
getConsts :: MonadZ3 z3 => Model -> z3 [FuncDecl]
getConsts :: forall (z3 :: * -> *). MonadZ3 z3 => Model -> z3 [FuncDecl]
getConsts = (Context -> Model -> IO [FuncDecl]) -> Model -> z3 [FuncDecl]
forall (z3 :: * -> *) a b.
MonadZ3 z3 =>
(Context -> a -> IO b) -> a -> z3 b
liftFun1 Context -> Model -> IO [FuncDecl]
Base.getConsts
getFuncs :: MonadZ3 z3 => Model -> z3 [FuncDecl]
getFuncs :: forall (z3 :: * -> *). MonadZ3 z3 => Model -> z3 [FuncDecl]
getFuncs = (Context -> Model -> IO [FuncDecl]) -> Model -> z3 [FuncDecl]
forall (z3 :: * -> *) a b.
MonadZ3 z3 =>
(Context -> a -> IO b) -> a -> z3 b
liftFun1 Context -> Model -> IO [FuncDecl]
Base.getFuncs
isAsArray :: MonadZ3 z3 => AST -> z3 Bool
isAsArray :: forall (z3 :: * -> *). MonadZ3 z3 => AST -> z3 Bool
isAsArray = (Context -> AST -> IO Bool) -> AST -> z3 Bool
forall (z3 :: * -> *) a b.
MonadZ3 z3 =>
(Context -> a -> IO b) -> a -> z3 b
liftFun1 Context -> AST -> IO Bool
Base.isAsArray
isEqAST :: MonadZ3 z3 => AST -> AST -> z3 Bool
isEqAST :: forall (z3 :: * -> *). MonadZ3 z3 => AST -> AST -> z3 Bool
isEqAST = (Context -> AST -> AST -> IO Bool) -> AST -> AST -> z3 Bool
forall (z3 :: * -> *) a b c.
MonadZ3 z3 =>
(Context -> a -> b -> IO c) -> a -> b -> z3 c
liftFun2 Context -> AST -> AST -> IO Bool
Base.isEqAST
addFuncInterp :: MonadZ3 z3 => Model -> FuncDecl -> AST -> z3 FuncInterp
addFuncInterp :: forall (z3 :: * -> *).
MonadZ3 z3 =>
Model -> FuncDecl -> AST -> z3 FuncInterp
addFuncInterp = (Context -> Model -> FuncDecl -> AST -> IO FuncInterp)
-> Model -> FuncDecl -> AST -> z3 FuncInterp
forall (z3 :: * -> *) a b c d.
MonadZ3 z3 =>
(Context -> a -> b -> c -> IO d) -> a -> b -> c -> z3 d
liftFun3 Context -> Model -> FuncDecl -> AST -> IO FuncInterp
Base.addFuncInterp
addConstInterp :: MonadZ3 z3 => Model -> FuncDecl -> AST -> z3 ()
addConstInterp :: forall (z3 :: * -> *).
MonadZ3 z3 =>
Model -> FuncDecl -> AST -> z3 ()
addConstInterp = (Context -> Model -> FuncDecl -> AST -> IO ())
-> Model -> FuncDecl -> AST -> z3 ()
forall (z3 :: * -> *) a b c d.
MonadZ3 z3 =>
(Context -> a -> b -> c -> IO d) -> a -> b -> c -> z3 d
liftFun3 Context -> Model -> FuncDecl -> AST -> IO ()
Base.addConstInterp
getAsArrayFuncDecl :: MonadZ3 z3 => AST -> z3 FuncDecl
getAsArrayFuncDecl :: forall (z3 :: * -> *). MonadZ3 z3 => AST -> z3 FuncDecl
getAsArrayFuncDecl = (Context -> AST -> IO FuncDecl) -> AST -> z3 FuncDecl
forall (z3 :: * -> *) a b.
MonadZ3 z3 =>
(Context -> a -> IO b) -> a -> z3 b
liftFun1 Context -> AST -> IO FuncDecl
Base.getAsArrayFuncDecl
funcInterpGetNumEntries :: MonadZ3 z3 => FuncInterp -> z3 Int
funcInterpGetNumEntries :: forall (z3 :: * -> *). MonadZ3 z3 => FuncInterp -> z3 Int
funcInterpGetNumEntries = (Context -> FuncInterp -> IO Int) -> FuncInterp -> z3 Int
forall (z3 :: * -> *) a b.
MonadZ3 z3 =>
(Context -> a -> IO b) -> a -> z3 b
liftFun1 Context -> FuncInterp -> IO Int
Base.funcInterpGetNumEntries
funcInterpGetEntry :: MonadZ3 z3 => FuncInterp -> Int -> z3 FuncEntry
funcInterpGetEntry :: forall (z3 :: * -> *).
MonadZ3 z3 =>
FuncInterp -> Int -> z3 FuncEntry
funcInterpGetEntry = (Context -> FuncInterp -> Int -> IO FuncEntry)
-> FuncInterp -> Int -> z3 FuncEntry
forall (z3 :: * -> *) a b c.
MonadZ3 z3 =>
(Context -> a -> b -> IO c) -> a -> b -> z3 c
liftFun2 Context -> FuncInterp -> Int -> IO FuncEntry
Base.funcInterpGetEntry
funcInterpGetElse :: MonadZ3 z3 => FuncInterp -> z3 AST
funcInterpGetElse :: forall (z3 :: * -> *). MonadZ3 z3 => FuncInterp -> z3 AST
funcInterpGetElse = (Context -> FuncInterp -> IO AST) -> FuncInterp -> z3 AST
forall (z3 :: * -> *) a b.
MonadZ3 z3 =>
(Context -> a -> IO b) -> a -> z3 b
liftFun1 Context -> FuncInterp -> IO AST
Base.funcInterpGetElse
funcInterpGetArity :: MonadZ3 z3 => FuncInterp -> z3 Int
funcInterpGetArity :: forall (z3 :: * -> *). MonadZ3 z3 => FuncInterp -> z3 Int
funcInterpGetArity = (Context -> FuncInterp -> IO Int) -> FuncInterp -> z3 Int
forall (z3 :: * -> *) a b.
MonadZ3 z3 =>
(Context -> a -> IO b) -> a -> z3 b
liftFun1 Context -> FuncInterp -> IO Int
Base.funcInterpGetArity
funcEntryGetValue :: MonadZ3 z3 => FuncEntry -> z3 AST
funcEntryGetValue :: forall (z3 :: * -> *). MonadZ3 z3 => FuncEntry -> z3 AST
funcEntryGetValue = (Context -> FuncEntry -> IO AST) -> FuncEntry -> z3 AST
forall (z3 :: * -> *) a b.
MonadZ3 z3 =>
(Context -> a -> IO b) -> a -> z3 b
liftFun1 Context -> FuncEntry -> IO AST
Base.funcEntryGetValue
funcEntryGetNumArgs :: MonadZ3 z3 => FuncEntry -> z3 Int
funcEntryGetNumArgs :: forall (z3 :: * -> *). MonadZ3 z3 => FuncEntry -> z3 Int
funcEntryGetNumArgs = (Context -> FuncEntry -> IO Int) -> FuncEntry -> z3 Int
forall (z3 :: * -> *) a b.
MonadZ3 z3 =>
(Context -> a -> IO b) -> a -> z3 b
liftFun1 Context -> FuncEntry -> IO Int
Base.funcEntryGetNumArgs
funcEntryGetArg :: MonadZ3 z3 => FuncEntry -> Int -> z3 AST
funcEntryGetArg :: forall (z3 :: * -> *). MonadZ3 z3 => FuncEntry -> Int -> z3 AST
funcEntryGetArg = (Context -> FuncEntry -> Int -> IO AST)
-> FuncEntry -> Int -> z3 AST
forall (z3 :: * -> *) a b c.
MonadZ3 z3 =>
(Context -> a -> b -> IO c) -> a -> b -> z3 c
liftFun2 Context -> FuncEntry -> Int -> IO AST
Base.funcEntryGetArg
modelToString :: MonadZ3 z3 => Model -> z3 String
modelToString :: forall (z3 :: * -> *). MonadZ3 z3 => Model -> z3 String
modelToString = (Context -> Model -> IO String) -> Model -> z3 String
forall (z3 :: * -> *) a b.
MonadZ3 z3 =>
(Context -> a -> IO b) -> a -> z3 b
liftFun1 Context -> Model -> IO String
Base.modelToString
showModel :: MonadZ3 z3 => Model -> z3 String
showModel :: forall (z3 :: * -> *). MonadZ3 z3 => Model -> z3 String
showModel = Model -> z3 String
forall (z3 :: * -> *). MonadZ3 z3 => Model -> z3 String
modelToString
type EvalAst m a = Model -> AST -> m (Maybe a)
eval :: MonadZ3 z3 => EvalAst z3 AST
eval :: forall (z3 :: * -> *). MonadZ3 z3 => EvalAst z3 AST
eval = (Context -> Model -> AST -> IO (Maybe AST))
-> Model -> AST -> z3 (Maybe AST)
forall (z3 :: * -> *) a b c.
MonadZ3 z3 =>
(Context -> a -> b -> IO c) -> a -> b -> z3 c
liftFun2 Context -> Model -> AST -> IO (Maybe AST)
Base.eval
evalBool :: MonadZ3 z3 => EvalAst z3 Bool
evalBool :: forall (z3 :: * -> *). MonadZ3 z3 => EvalAst z3 Bool
evalBool = (Context -> Model -> AST -> IO (Maybe Bool))
-> Model -> AST -> z3 (Maybe Bool)
forall (z3 :: * -> *) a b c.
MonadZ3 z3 =>
(Context -> a -> b -> IO c) -> a -> b -> z3 c
liftFun2 Context -> Model -> AST -> IO (Maybe Bool)
Base.evalBool
evalInt :: MonadZ3 z3 => EvalAst z3 Integer
evalInt :: forall (z3 :: * -> *). MonadZ3 z3 => EvalAst z3 Integer
evalInt = (Context -> Model -> AST -> IO (Maybe Integer))
-> Model -> AST -> z3 (Maybe Integer)
forall (z3 :: * -> *) a b c.
MonadZ3 z3 =>
(Context -> a -> b -> IO c) -> a -> b -> z3 c
liftFun2 Context -> Model -> AST -> IO (Maybe Integer)
Base.evalInt
evalReal :: MonadZ3 z3 => EvalAst z3 Rational
evalReal :: forall (z3 :: * -> *). MonadZ3 z3 => EvalAst z3 Rational
evalReal = (Context -> Model -> AST -> IO (Maybe Rational))
-> Model -> AST -> z3 (Maybe Rational)
forall (z3 :: * -> *) a b c.
MonadZ3 z3 =>
(Context -> a -> b -> IO c) -> a -> b -> z3 c
liftFun2 Context -> Model -> AST -> IO (Maybe Rational)
Base.evalReal
evalBv :: MonadZ3 z3 => Bool
-> EvalAst z3 Integer
evalBv :: forall (z3 :: * -> *). MonadZ3 z3 => Bool -> EvalAst z3 Integer
evalBv = (Context -> Bool -> Model -> AST -> IO (Maybe Integer))
-> Bool -> Model -> AST -> z3 (Maybe Integer)
forall (z3 :: * -> *) a b c d.
MonadZ3 z3 =>
(Context -> a -> b -> c -> IO d) -> a -> b -> c -> z3 d
liftFun3 Context -> Bool -> Model -> AST -> IO (Maybe Integer)
Base.evalBv
evalT :: (MonadZ3 z3,Traversable t) => Model -> t AST -> z3 (Maybe (t AST))
evalT :: forall (z3 :: * -> *) (t :: * -> *).
(MonadZ3 z3, Traversable t) =>
Model -> t AST -> z3 (Maybe (t AST))
evalT = (Context -> Model -> t AST -> IO (Maybe (t AST)))
-> Model -> t AST -> z3 (Maybe (t AST))
forall (z3 :: * -> *) a b c.
MonadZ3 z3 =>
(Context -> a -> b -> IO c) -> a -> b -> z3 c
liftFun2 Context -> Model -> t AST -> IO (Maybe (t AST))
forall (t :: * -> *).
Traversable t =>
Context -> Model -> t AST -> IO (Maybe (t AST))
Base.evalT
mapEval :: (MonadZ3 z3, Traversable t) => EvalAst z3 a
-> Model
-> t AST
-> z3 (Maybe (t a))
mapEval :: forall (z3 :: * -> *) (t :: * -> *) a.
(MonadZ3 z3, Traversable t) =>
EvalAst z3 a -> Model -> t AST -> z3 (Maybe (t a))
mapEval EvalAst z3 a
f Model
m = (t (Maybe a) -> Maybe (t a))
-> z3 (t (Maybe a)) -> z3 (Maybe (t a))
forall a b. (a -> b) -> z3 a -> z3 b
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)
forall (m :: * -> *) a. Monad m => t (m a) -> m (t a)
T.sequence (z3 (t (Maybe a)) -> z3 (Maybe (t a)))
-> (t AST -> z3 (t (Maybe a))) -> t AST -> z3 (Maybe (t a))
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (AST -> z3 (Maybe a)) -> t AST -> z3 (t (Maybe a))
forall (t :: * -> *) (m :: * -> *) a b.
(Traversable t, Monad m) =>
(a -> m b) -> t a -> m (t b)
forall (m :: * -> *) a b. Monad m => (a -> m b) -> t a -> m (t b)
T.mapM (EvalAst z3 a
f Model
m)
evalFunc :: MonadZ3 z3 => Model -> FuncDecl -> z3 (Maybe FuncModel)
evalFunc :: forall (z3 :: * -> *).
MonadZ3 z3 =>
Model -> FuncDecl -> z3 (Maybe FuncModel)
evalFunc = (Context -> Model -> FuncDecl -> IO (Maybe FuncModel))
-> Model -> FuncDecl -> z3 (Maybe FuncModel)
forall (z3 :: * -> *) a b c.
MonadZ3 z3 =>
(Context -> a -> b -> IO c) -> a -> b -> z3 c
liftFun2 Context -> Model -> FuncDecl -> IO (Maybe FuncModel)
Base.evalFunc
mkTactic :: MonadZ3 z3 => String -> z3 Tactic
mkTactic :: forall (z3 :: * -> *). MonadZ3 z3 => String -> z3 Tactic
mkTactic = (Context -> String -> IO Tactic) -> String -> z3 Tactic
forall (z3 :: * -> *) a b.
MonadZ3 z3 =>
(Context -> a -> IO b) -> a -> z3 b
liftFun1 Context -> String -> IO Tactic
Base.mkTactic
andThenTactic :: MonadZ3 z3 => Tactic -> Tactic -> z3 Tactic
andThenTactic :: forall (z3 :: * -> *). MonadZ3 z3 => Tactic -> Tactic -> z3 Tactic
andThenTactic = (Context -> Tactic -> Tactic -> IO Tactic)
-> Tactic -> Tactic -> z3 Tactic
forall (z3 :: * -> *) a b c.
MonadZ3 z3 =>
(Context -> a -> b -> IO c) -> a -> b -> z3 c
liftFun2 Context -> Tactic -> Tactic -> IO Tactic
Base.andThenTactic
orElseTactic :: MonadZ3 z3 => Tactic -> Tactic -> z3 Tactic
orElseTactic :: forall (z3 :: * -> *). MonadZ3 z3 => Tactic -> Tactic -> z3 Tactic
orElseTactic = (Context -> Tactic -> Tactic -> IO Tactic)
-> Tactic -> Tactic -> z3 Tactic
forall (z3 :: * -> *) a b c.
MonadZ3 z3 =>
(Context -> a -> b -> IO c) -> a -> b -> z3 c
liftFun2 Context -> Tactic -> Tactic -> IO Tactic
Base.orElseTactic
skipTactic :: MonadZ3 z3 => z3 Tactic
skipTactic :: forall (z3 :: * -> *). MonadZ3 z3 => z3 Tactic
skipTactic = (Context -> IO Tactic) -> z3 Tactic
forall (z3 :: * -> *) b. MonadZ3 z3 => (Context -> IO b) -> z3 b
liftScalar Context -> IO Tactic
Base.skipTactic
tryForTactic :: MonadZ3 z3 => Tactic -> Int -> z3 Tactic
tryForTactic :: forall (z3 :: * -> *). MonadZ3 z3 => Tactic -> Int -> z3 Tactic
tryForTactic = (Context -> Tactic -> Int -> IO Tactic)
-> Tactic -> Int -> z3 Tactic
forall (z3 :: * -> *) a b c.
MonadZ3 z3 =>
(Context -> a -> b -> IO c) -> a -> b -> z3 c
liftFun2 Context -> Tactic -> Int -> IO Tactic
Base.tryForTactic
tacticUsingParams :: MonadZ3 z3 => Tactic -> Params -> z3 Tactic
tacticUsingParams :: forall (z3 :: * -> *). MonadZ3 z3 => Tactic -> Params -> z3 Tactic
tacticUsingParams = (Context -> Tactic -> Params -> IO Tactic)
-> Tactic -> Params -> z3 Tactic
forall (z3 :: * -> *) a b c.
MonadZ3 z3 =>
(Context -> a -> b -> IO c) -> a -> b -> z3 c
liftFun2 Context -> Tactic -> Params -> IO Tactic
Base.tacticUsingParams
repeatTactic :: MonadZ3 z3 => Tactic -> Int -> z3 Tactic
repeatTactic :: forall (z3 :: * -> *). MonadZ3 z3 => Tactic -> Int -> z3 Tactic
repeatTactic = (Context -> Tactic -> Int -> IO Tactic)
-> Tactic -> Int -> z3 Tactic
forall (z3 :: * -> *) a b c.
MonadZ3 z3 =>
(Context -> a -> b -> IO c) -> a -> b -> z3 c
liftFun2 Context -> Tactic -> Int -> IO Tactic
Base.repeatTactic
mkQuantifierEliminationTactic :: MonadZ3 z3 => z3 Tactic
mkQuantifierEliminationTactic :: forall (z3 :: * -> *). MonadZ3 z3 => z3 Tactic
mkQuantifierEliminationTactic = (Context -> IO Tactic) -> z3 Tactic
forall (z3 :: * -> *) b. MonadZ3 z3 => (Context -> IO b) -> z3 b
liftScalar Context -> IO Tactic
Base.mkQuantifierEliminationTactic
mkAndInverterGraphTactic :: MonadZ3 z3 => z3 Tactic
mkAndInverterGraphTactic :: forall (z3 :: * -> *). MonadZ3 z3 => z3 Tactic
mkAndInverterGraphTactic = (Context -> IO Tactic) -> z3 Tactic
forall (z3 :: * -> *) b. MonadZ3 z3 => (Context -> IO b) -> z3 b
liftScalar Context -> IO Tactic
Base.mkAndInverterGraphTactic
applyTactic :: MonadZ3 z3 => Tactic -> Goal -> z3 ApplyResult
applyTactic :: forall (z3 :: * -> *).
MonadZ3 z3 =>
Tactic -> Goal -> z3 ApplyResult
applyTactic = (Context -> Tactic -> Goal -> IO ApplyResult)
-> Tactic -> Goal -> z3 ApplyResult
forall (z3 :: * -> *) a b c.
MonadZ3 z3 =>
(Context -> a -> b -> IO c) -> a -> b -> z3 c
liftFun2 Context -> Tactic -> Goal -> IO ApplyResult
Base.applyTactic
applyResultToString :: MonadZ3 z3 => ApplyResult -> z3 String
applyResultToString :: forall (z3 :: * -> *). MonadZ3 z3 => ApplyResult -> z3 String
applyResultToString = (Context -> ApplyResult -> IO String) -> ApplyResult -> z3 String
forall (z3 :: * -> *) a b.
MonadZ3 z3 =>
(Context -> a -> IO b) -> a -> z3 b
liftFun1 Context -> ApplyResult -> IO String
Base.applyResultToString
getApplyResultNumSubgoals :: MonadZ3 z3 => ApplyResult -> z3 Int
getApplyResultNumSubgoals :: forall (z3 :: * -> *). MonadZ3 z3 => ApplyResult -> z3 Int
getApplyResultNumSubgoals = (Context -> ApplyResult -> IO Int) -> ApplyResult -> z3 Int
forall (z3 :: * -> *) a b.
MonadZ3 z3 =>
(Context -> a -> IO b) -> a -> z3 b
liftFun1 Context -> ApplyResult -> IO Int
Base.getApplyResultNumSubgoals
getApplyResultSubgoal :: MonadZ3 z3 => ApplyResult -> Int -> z3 Goal
getApplyResultSubgoal :: forall (z3 :: * -> *). MonadZ3 z3 => ApplyResult -> Int -> z3 Goal
getApplyResultSubgoal = (Context -> ApplyResult -> Int -> IO Goal)
-> ApplyResult -> Int -> z3 Goal
forall (z3 :: * -> *) a b c.
MonadZ3 z3 =>
(Context -> a -> b -> IO c) -> a -> b -> z3 c
liftFun2 Context -> ApplyResult -> Int -> IO Goal
Base.getApplyResultSubgoal
getApplyResultSubgoals :: MonadZ3 z3 => ApplyResult -> z3 [Goal]
getApplyResultSubgoals :: forall (z3 :: * -> *). MonadZ3 z3 => ApplyResult -> z3 [Goal]
getApplyResultSubgoals = (Context -> ApplyResult -> IO [Goal]) -> ApplyResult -> z3 [Goal]
forall (z3 :: * -> *) a b.
MonadZ3 z3 =>
(Context -> a -> IO b) -> a -> z3 b
liftFun1 Context -> ApplyResult -> IO [Goal]
Base.getApplyResultSubgoals
mkGoal :: MonadZ3 z3 => Bool -> Bool -> Bool -> z3 Goal
mkGoal :: forall (z3 :: * -> *).
MonadZ3 z3 =>
Bool -> Bool -> Bool -> z3 Goal
mkGoal = (Context -> Bool -> Bool -> Bool -> IO Goal)
-> Bool -> Bool -> Bool -> z3 Goal
forall (z3 :: * -> *) a b c d.
MonadZ3 z3 =>
(Context -> a -> b -> c -> IO d) -> a -> b -> c -> z3 d
liftFun3 Context -> Bool -> Bool -> Bool -> IO Goal
Base.mkGoal
goalAssert :: MonadZ3 z3 => Goal -> AST -> z3 ()
goalAssert :: forall (z3 :: * -> *). MonadZ3 z3 => Goal -> AST -> z3 ()
goalAssert = (Context -> Goal -> AST -> IO ()) -> Goal -> AST -> z3 ()
forall (z3 :: * -> *) a b c.
MonadZ3 z3 =>
(Context -> a -> b -> IO c) -> a -> b -> z3 c
liftFun2 Context -> Goal -> AST -> IO ()
Base.goalAssert
getGoalSize :: MonadZ3 z3 => Goal -> z3 Int
getGoalSize :: forall (z3 :: * -> *). MonadZ3 z3 => Goal -> z3 Int
getGoalSize = (Context -> Goal -> IO Int) -> Goal -> z3 Int
forall (z3 :: * -> *) a b.
MonadZ3 z3 =>
(Context -> a -> IO b) -> a -> z3 b
liftFun1 Context -> Goal -> IO Int
Base.getGoalSize
getGoalFormula :: MonadZ3 z3 => Goal -> Int -> z3 AST
getGoalFormula :: forall (z3 :: * -> *). MonadZ3 z3 => Goal -> Int -> z3 AST
getGoalFormula = (Context -> Goal -> Int -> IO AST) -> Goal -> Int -> z3 AST
forall (z3 :: * -> *) a b c.
MonadZ3 z3 =>
(Context -> a -> b -> IO c) -> a -> b -> z3 c
liftFun2 Context -> Goal -> Int -> IO AST
Base.getGoalFormula
getGoalFormulas :: MonadZ3 z3 => Goal -> z3 [AST]
getGoalFormulas :: forall (z3 :: * -> *). MonadZ3 z3 => Goal -> z3 [AST]
getGoalFormulas = (Context -> Goal -> IO [AST]) -> Goal -> z3 [AST]
forall (z3 :: * -> *) a b.
MonadZ3 z3 =>
(Context -> a -> IO b) -> a -> z3 b
liftFun1 Context -> Goal -> IO [AST]
Base.getGoalFormulas
goalToString :: MonadZ3 z3 => Goal -> z3 String
goalToString :: forall (z3 :: * -> *). MonadZ3 z3 => Goal -> z3 String
goalToString = (Context -> Goal -> IO String) -> Goal -> z3 String
forall (z3 :: * -> *) a b.
MonadZ3 z3 =>
(Context -> a -> IO b) -> a -> z3 b
liftFun1 Context -> Goal -> IO String
Base.goalToString
convertModel :: MonadZ3 z3 => Goal -> Model -> z3 Model
convertModel :: forall (z3 :: * -> *). MonadZ3 z3 => Goal -> Model -> z3 Model
convertModel = (Context -> Goal -> Model -> IO Model) -> Goal -> Model -> z3 Model
forall (z3 :: * -> *) a b c.
MonadZ3 z3 =>
(Context -> a -> b -> IO c) -> a -> b -> z3 c
liftFun2 Context -> Goal -> Model -> IO Model
Base.convertModel
setASTPrintMode :: MonadZ3 z3 => ASTPrintMode -> z3 ()
setASTPrintMode :: forall (z3 :: * -> *). MonadZ3 z3 => ASTPrintMode -> z3 ()
setASTPrintMode = (Context -> ASTPrintMode -> IO ()) -> ASTPrintMode -> z3 ()
forall (z3 :: * -> *) a b.
MonadZ3 z3 =>
(Context -> a -> IO b) -> a -> z3 b
liftFun1 Context -> ASTPrintMode -> IO ()
Base.setASTPrintMode
astToString :: MonadZ3 z3 => AST -> z3 String
astToString :: forall (z3 :: * -> *). MonadZ3 z3 => AST -> z3 String
astToString = (Context -> AST -> IO String) -> AST -> z3 String
forall (z3 :: * -> *) a b.
MonadZ3 z3 =>
(Context -> a -> IO b) -> a -> z3 b
liftFun1 Context -> AST -> IO String
Base.astToString
patternToString :: MonadZ3 z3 => Pattern -> z3 String
patternToString :: forall (z3 :: * -> *). MonadZ3 z3 => Pattern -> z3 String
patternToString = (Context -> Pattern -> IO String) -> Pattern -> z3 String
forall (z3 :: * -> *) a b.
MonadZ3 z3 =>
(Context -> a -> IO b) -> a -> z3 b
liftFun1 Context -> Pattern -> IO String
Base.patternToString
sortToString :: MonadZ3 z3 => Sort -> z3 String
sortToString :: forall (z3 :: * -> *). MonadZ3 z3 => Sort -> z3 String
sortToString = (Context -> Sort -> IO String) -> Sort -> z3 String
forall (z3 :: * -> *) a b.
MonadZ3 z3 =>
(Context -> a -> IO b) -> a -> z3 b
liftFun1 Context -> Sort -> IO String
Base.sortToString
funcDeclToString :: MonadZ3 z3 => FuncDecl -> z3 String
funcDeclToString :: forall (z3 :: * -> *). MonadZ3 z3 => FuncDecl -> z3 String
funcDeclToString = (Context -> FuncDecl -> IO String) -> FuncDecl -> z3 String
forall (z3 :: * -> *) a b.
MonadZ3 z3 =>
(Context -> a -> IO b) -> a -> z3 b
liftFun1 Context -> FuncDecl -> IO String
Base.funcDeclToString
benchmarkToSMTLibString :: MonadZ3 z3 =>
String
-> String
-> String
-> String
-> [AST]
-> AST
-> z3 String
benchmarkToSMTLibString :: forall (z3 :: * -> *).
MonadZ3 z3 =>
String -> String -> String -> String -> [AST] -> AST -> z3 String
benchmarkToSMTLibString = (Context
-> String
-> String
-> String
-> String
-> [AST]
-> AST
-> IO String)
-> String
-> String
-> String
-> String
-> [AST]
-> AST
-> z3 String
forall (z3 :: * -> *) a1 a2 a3 a4 a5 a6 b.
MonadZ3 z3 =>
(Context -> a1 -> a2 -> a3 -> a4 -> a5 -> a6 -> IO b)
-> a1 -> a2 -> a3 -> a4 -> a5 -> a6 -> z3 b
liftFun6 Context
-> String
-> String
-> String
-> String
-> [AST]
-> AST
-> IO String
Base.benchmarkToSMTLibString
parseSMTLib2String :: MonadZ3 z3 =>
String
-> [Symbol]
-> [Sort]
-> [Symbol]
-> [FuncDecl]
-> z3 [AST]
parseSMTLib2String :: forall (z3 :: * -> *).
MonadZ3 z3 =>
String -> [Symbol] -> [Sort] -> [Symbol] -> [FuncDecl] -> z3 [AST]
parseSMTLib2String = (Context
-> String
-> [Symbol]
-> [Sort]
-> [Symbol]
-> [FuncDecl]
-> IO [AST])
-> String
-> [Symbol]
-> [Sort]
-> [Symbol]
-> [FuncDecl]
-> z3 [AST]
forall (z3 :: * -> *) a1 a2 a3 a4 a5 b.
MonadZ3 z3 =>
(Context -> a1 -> a2 -> a3 -> a4 -> a5 -> IO b)
-> a1 -> a2 -> a3 -> a4 -> a5 -> z3 b
liftFun5 Context
-> String
-> [Symbol]
-> [Sort]
-> [Symbol]
-> [FuncDecl]
-> IO [AST]
Base.parseSMTLib2String
parseSMTLib2File :: MonadZ3 z3 =>
String
-> [Symbol]
-> [Sort]
-> [Symbol]
-> [FuncDecl]
-> z3 [AST]
parseSMTLib2File :: forall (z3 :: * -> *).
MonadZ3 z3 =>
String -> [Symbol] -> [Sort] -> [Symbol] -> [FuncDecl] -> z3 [AST]
parseSMTLib2File = (Context
-> String
-> [Symbol]
-> [Sort]
-> [Symbol]
-> [FuncDecl]
-> IO [AST])
-> String
-> [Symbol]
-> [Sort]
-> [Symbol]
-> [FuncDecl]
-> z3 [AST]
forall (z3 :: * -> *) a1 a2 a3 a4 a5 b.
MonadZ3 z3 =>
(Context -> a1 -> a2 -> a3 -> a4 -> a5 -> IO b)
-> a1 -> a2 -> a3 -> a4 -> a5 -> z3 b
liftFun5 Context
-> String
-> [Symbol]
-> [Sort]
-> [Symbol]
-> [FuncDecl]
-> IO [AST]
Base.parseSMTLib2File
evalSMTLib2String :: MonadZ3 z3 =>
String
-> z3 String
evalSMTLib2String :: forall (z3 :: * -> *). MonadZ3 z3 => String -> z3 String
evalSMTLib2String = (Context -> String -> IO String) -> String -> z3 String
forall (z3 :: * -> *) a b.
MonadZ3 z3 =>
(Context -> a -> IO b) -> a -> z3 b
liftFun1 Context -> String -> IO String
Base.evalSMTLib2String
getVersion :: MonadZ3 z3 => z3 Version
getVersion :: forall (z3 :: * -> *). MonadZ3 z3 => z3 Version
getVersion = IO Version -> z3 Version
forall a. IO a -> z3 a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO IO Version
Base.getVersion
class MonadZ3 m => MonadFixedpoint m where
getFixedpoint :: m Base.Fixedpoint
fixedpointAddRule :: MonadFixedpoint z3 => AST -> Symbol -> z3 ()
fixedpointAddRule :: forall (z3 :: * -> *). MonadFixedpoint z3 => AST -> Symbol -> z3 ()
fixedpointAddRule = (Context -> Fixedpoint -> AST -> Symbol -> IO ())
-> AST -> Symbol -> z3 ()
forall (z3 :: * -> *) a b c.
MonadFixedpoint z3 =>
(Context -> Fixedpoint -> a -> b -> IO c) -> a -> b -> z3 c
liftFixedpoint2 Context -> Fixedpoint -> AST -> Symbol -> IO ()
Base.fixedpointAddRule
fixedpointSetParams :: MonadFixedpoint z3 => Params -> z3 ()
fixedpointSetParams :: forall (z3 :: * -> *). MonadFixedpoint z3 => Params -> z3 ()
fixedpointSetParams = (Context -> Fixedpoint -> Params -> IO ()) -> Params -> z3 ()
forall (z3 :: * -> *) a b.
MonadFixedpoint z3 =>
(Context -> Fixedpoint -> a -> IO b) -> a -> z3 b
liftFixedpoint1 Context -> Fixedpoint -> Params -> IO ()
Base.fixedpointSetParams
fixedpointRegisterRelation :: MonadFixedpoint z3 => FuncDecl -> z3 ()
fixedpointRegisterRelation :: forall (z3 :: * -> *). MonadFixedpoint z3 => FuncDecl -> z3 ()
fixedpointRegisterRelation = (Context -> Fixedpoint -> FuncDecl -> IO ()) -> FuncDecl -> z3 ()
forall (z3 :: * -> *) a b.
MonadFixedpoint z3 =>
(Context -> Fixedpoint -> a -> IO b) -> a -> z3 b
liftFixedpoint1 Context -> Fixedpoint -> FuncDecl -> IO ()
Base.fixedpointRegisterRelation
fixedpointQueryRelations :: MonadFixedpoint z3 => [FuncDecl] -> z3 Result
fixedpointQueryRelations :: forall (z3 :: * -> *).
MonadFixedpoint z3 =>
[FuncDecl] -> z3 Result
fixedpointQueryRelations = (Context -> Fixedpoint -> [FuncDecl] -> IO Result)
-> [FuncDecl] -> z3 Result
forall (z3 :: * -> *) a b.
MonadFixedpoint z3 =>
(Context -> Fixedpoint -> a -> IO b) -> a -> z3 b
liftFixedpoint1 Context -> Fixedpoint -> [FuncDecl] -> IO Result
Base.fixedpointQueryRelations
fixedpointGetAnswer :: MonadFixedpoint z3 => z3 AST
fixedpointGetAnswer :: forall (z3 :: * -> *). MonadFixedpoint z3 => z3 AST
fixedpointGetAnswer = (Context -> Fixedpoint -> IO AST) -> z3 AST
forall (z3 :: * -> *) b.
MonadFixedpoint z3 =>
(Context -> Fixedpoint -> IO b) -> z3 b
liftFixedpoint0 Context -> Fixedpoint -> IO AST
Base.fixedpointGetAnswer
fixedpointGetAssertions :: MonadFixedpoint z3 => z3 [AST]
fixedpointGetAssertions :: forall (z3 :: * -> *). MonadFixedpoint z3 => z3 [AST]
fixedpointGetAssertions = (Context -> Fixedpoint -> IO [AST]) -> z3 [AST]
forall (z3 :: * -> *) b.
MonadFixedpoint z3 =>
(Context -> Fixedpoint -> IO b) -> z3 b
liftFixedpoint0 Context -> Fixedpoint -> IO [AST]
Base.fixedpointGetAssertions
mkFpaRoundingModeSort :: MonadZ3 z3 => z3 Sort
mkFpaRoundingModeSort :: forall (z3 :: * -> *). MonadZ3 z3 => z3 Sort
mkFpaRoundingModeSort = (Context -> IO Sort) -> z3 Sort
forall (z3 :: * -> *) b. MonadZ3 z3 => (Context -> IO b) -> z3 b
liftScalar Context -> IO Sort
Base.mkFpaRoundingModeSort
mkFpaRoundNearestTiesToEven :: MonadZ3 z3 => z3 AST
mkFpaRoundNearestTiesToEven :: forall (z3 :: * -> *). MonadZ3 z3 => z3 AST
mkFpaRoundNearestTiesToEven = (Context -> IO AST) -> z3 AST
forall (z3 :: * -> *) b. MonadZ3 z3 => (Context -> IO b) -> z3 b
liftScalar Context -> IO AST
Base.mkFpaRoundNearestTiesToEven
mkFpaRne :: MonadZ3 z3 => z3 AST
mkFpaRne :: forall (z3 :: * -> *). MonadZ3 z3 => z3 AST
mkFpaRne = (Context -> IO AST) -> z3 AST
forall (z3 :: * -> *) b. MonadZ3 z3 => (Context -> IO b) -> z3 b
liftScalar Context -> IO AST
Base.mkFpaRne
mkFpaRoundNearestTiesToAway :: MonadZ3 z3 => z3 AST
mkFpaRoundNearestTiesToAway :: forall (z3 :: * -> *). MonadZ3 z3 => z3 AST
mkFpaRoundNearestTiesToAway = (Context -> IO AST) -> z3 AST
forall (z3 :: * -> *) b. MonadZ3 z3 => (Context -> IO b) -> z3 b
liftScalar Context -> IO AST
Base.mkFpaRoundNearestTiesToAway
mkFpaRna :: MonadZ3 z3 => z3 AST
mkFpaRna :: forall (z3 :: * -> *). MonadZ3 z3 => z3 AST
mkFpaRna = (Context -> IO AST) -> z3 AST
forall (z3 :: * -> *) b. MonadZ3 z3 => (Context -> IO b) -> z3 b
liftScalar Context -> IO AST
Base.mkFpaRna
mkFpaRoundTowardPositive :: MonadZ3 z3 => z3 AST
mkFpaRoundTowardPositive :: forall (z3 :: * -> *). MonadZ3 z3 => z3 AST
mkFpaRoundTowardPositive = (Context -> IO AST) -> z3 AST
forall (z3 :: * -> *) b. MonadZ3 z3 => (Context -> IO b) -> z3 b
liftScalar Context -> IO AST
Base.mkFpaRoundTowardPositive
mkFpaRtp :: MonadZ3 z3 => z3 AST
mkFpaRtp :: forall (z3 :: * -> *). MonadZ3 z3 => z3 AST
mkFpaRtp = (Context -> IO AST) -> z3 AST
forall (z3 :: * -> *) b. MonadZ3 z3 => (Context -> IO b) -> z3 b
liftScalar Context -> IO AST
Base.mkFpaRtp
mkFpaRoundTowardNegative :: MonadZ3 z3 => z3 AST
mkFpaRoundTowardNegative :: forall (z3 :: * -> *). MonadZ3 z3 => z3 AST
mkFpaRoundTowardNegative = (Context -> IO AST) -> z3 AST
forall (z3 :: * -> *) b. MonadZ3 z3 => (Context -> IO b) -> z3 b
liftScalar Context -> IO AST
Base.mkFpaRoundTowardNegative
mkFpaRtn :: MonadZ3 z3 => z3 AST
mkFpaRtn :: forall (z3 :: * -> *). MonadZ3 z3 => z3 AST
mkFpaRtn = (Context -> IO AST) -> z3 AST
forall (z3 :: * -> *) b. MonadZ3 z3 => (Context -> IO b) -> z3 b
liftScalar Context -> IO AST
Base.mkFpaRtn
mkFpaRoundTowardZero :: MonadZ3 z3 => z3 AST
mkFpaRoundTowardZero :: forall (z3 :: * -> *). MonadZ3 z3 => z3 AST
mkFpaRoundTowardZero = (Context -> IO AST) -> z3 AST
forall (z3 :: * -> *) b. MonadZ3 z3 => (Context -> IO b) -> z3 b
liftScalar Context -> IO AST
Base.mkFpaRoundTowardZero
mkFpaRtz :: MonadZ3 z3 => z3 AST
mkFpaRtz :: forall (z3 :: * -> *). MonadZ3 z3 => z3 AST
mkFpaRtz = (Context -> IO AST) -> z3 AST
forall (z3 :: * -> *) b. MonadZ3 z3 => (Context -> IO b) -> z3 b
liftScalar Context -> IO AST
Base.mkFpaRtz
mkFpaSort :: (MonadZ3 z3, Integral int)
=> int
-> int
-> z3 Sort
mkFpaSort :: forall (z3 :: * -> *) int.
(MonadZ3 z3, Integral int) =>
int -> int -> z3 Sort
mkFpaSort = (Context -> int -> int -> IO Sort) -> int -> int -> z3 Sort
forall (z3 :: * -> *) a b c.
MonadZ3 z3 =>
(Context -> a -> b -> IO c) -> a -> b -> z3 c
liftFun2 Context -> int -> int -> IO Sort
forall int. Integral int => Context -> int -> int -> IO Sort
Base.mkFpaSort
mkFpaSortHalf :: MonadZ3 z3 => z3 Sort
mkFpaSortHalf :: forall (z3 :: * -> *). MonadZ3 z3 => z3 Sort
mkFpaSortHalf = (Context -> IO Sort) -> z3 Sort
forall (z3 :: * -> *) b. MonadZ3 z3 => (Context -> IO b) -> z3 b
liftScalar Context -> IO Sort
Base.mkFpaSortHalf
mkFpaSort16 :: MonadZ3 z3 => z3 Sort
mkFpaSort16 :: forall (z3 :: * -> *). MonadZ3 z3 => z3 Sort
mkFpaSort16 = (Context -> IO Sort) -> z3 Sort
forall (z3 :: * -> *) b. MonadZ3 z3 => (Context -> IO b) -> z3 b
liftScalar Context -> IO Sort
Base.mkFpaSort16
mkFpaSortSingle :: MonadZ3 z3 => z3 Sort
mkFpaSortSingle :: forall (z3 :: * -> *). MonadZ3 z3 => z3 Sort
mkFpaSortSingle = (Context -> IO Sort) -> z3 Sort
forall (z3 :: * -> *) b. MonadZ3 z3 => (Context -> IO b) -> z3 b
liftScalar Context -> IO Sort
Base.mkFpaSortSingle
mkFpaSort32 :: MonadZ3 z3 => z3 Sort
mkFpaSort32 :: forall (z3 :: * -> *). MonadZ3 z3 => z3 Sort
mkFpaSort32 = (Context -> IO Sort) -> z3 Sort
forall (z3 :: * -> *) b. MonadZ3 z3 => (Context -> IO b) -> z3 b
liftScalar Context -> IO Sort
Base.mkFpaSort32
mkFpaSortDouble :: MonadZ3 z3 => z3 Sort
mkFpaSortDouble :: forall (z3 :: * -> *). MonadZ3 z3 => z3 Sort
mkFpaSortDouble = (Context -> IO Sort) -> z3 Sort
forall (z3 :: * -> *) b. MonadZ3 z3 => (Context -> IO b) -> z3 b
liftScalar Context -> IO Sort
Base.mkFpaSortDouble
mkFpaSort64 :: MonadZ3 z3 => z3 Sort
mkFpaSort64 :: forall (z3 :: * -> *). MonadZ3 z3 => z3 Sort
mkFpaSort64 = (Context -> IO Sort) -> z3 Sort
forall (z3 :: * -> *) b. MonadZ3 z3 => (Context -> IO b) -> z3 b
liftScalar Context -> IO Sort
Base.mkFpaSort64
mkFpaSortQuadruple :: MonadZ3 z3 => z3 Sort
mkFpaSortQuadruple :: forall (z3 :: * -> *). MonadZ3 z3 => z3 Sort
mkFpaSortQuadruple = (Context -> IO Sort) -> z3 Sort
forall (z3 :: * -> *) b. MonadZ3 z3 => (Context -> IO b) -> z3 b
liftScalar Context -> IO Sort
Base.mkFpaSortQuadruple
mkFpaSort128 :: MonadZ3 z3 => z3 Sort
mkFpaSort128 :: forall (z3 :: * -> *). MonadZ3 z3 => z3 Sort
mkFpaSort128 = (Context -> IO Sort) -> z3 Sort
forall (z3 :: * -> *) b. MonadZ3 z3 => (Context -> IO b) -> z3 b
liftScalar Context -> IO Sort
Base.mkFpaSort128
mkFpaNaN :: MonadZ3 z3 => Sort -> z3 AST
mkFpaNaN :: forall (z3 :: * -> *). MonadZ3 z3 => Sort -> z3 AST
mkFpaNaN = (Context -> Sort -> IO AST) -> Sort -> z3 AST
forall (z3 :: * -> *) a b.
MonadZ3 z3 =>
(Context -> a -> IO b) -> a -> z3 b
liftFun1 Context -> Sort -> IO AST
Base.mkFpaNaN
mkFpaInf :: MonadZ3 z3
=> Sort
-> Bool
-> z3 AST
mkFpaInf :: forall (z3 :: * -> *). MonadZ3 z3 => Sort -> Bool -> z3 AST
mkFpaInf = (Context -> Sort -> Bool -> IO AST) -> Sort -> Bool -> z3 AST
forall (z3 :: * -> *) a b c.
MonadZ3 z3 =>
(Context -> a -> b -> IO c) -> a -> b -> z3 c
liftFun2 Context -> Sort -> Bool -> IO AST
Base.mkFpaInf
mkFpaZero :: MonadZ3 z3
=> Sort
-> Bool
-> z3 AST
mkFpaZero :: forall (z3 :: * -> *). MonadZ3 z3 => Sort -> Bool -> z3 AST
mkFpaZero = (Context -> Sort -> Bool -> IO AST) -> Sort -> Bool -> z3 AST
forall (z3 :: * -> *) a b c.
MonadZ3 z3 =>
(Context -> a -> b -> IO c) -> a -> b -> z3 c
liftFun2 Context -> Sort -> Bool -> IO AST
Base.mkFpaZero
mkFpaFp :: MonadZ3 z3
=> AST
-> AST
-> AST
-> z3 AST
mkFpaFp :: forall (z3 :: * -> *). MonadZ3 z3 => AST -> AST -> AST -> z3 AST
mkFpaFp = (Context -> AST -> AST -> AST -> IO AST)
-> AST -> AST -> AST -> z3 AST
forall (z3 :: * -> *) a b c d.
MonadZ3 z3 =>
(Context -> a -> b -> c -> IO d) -> a -> b -> c -> z3 d
liftFun3 Context -> AST -> AST -> AST -> IO AST
Base.mkFpaFp
mkFpaNumeralFloat :: MonadZ3 z3 => Float -> Sort -> z3 AST
mkFpaNumeralFloat :: forall (z3 :: * -> *). MonadZ3 z3 => Float -> Sort -> z3 AST
mkFpaNumeralFloat = (Context -> Float -> Sort -> IO AST) -> Float -> Sort -> z3 AST
forall (z3 :: * -> *) a b c.
MonadZ3 z3 =>
(Context -> a -> b -> IO c) -> a -> b -> z3 c
liftFun2 Context -> Float -> Sort -> IO AST
Base.mkFpaNumeralFloat
mkFpaNumeralDouble :: MonadZ3 z3 => Double -> Sort -> z3 AST
mkFpaNumeralDouble :: forall (z3 :: * -> *). MonadZ3 z3 => Double -> Sort -> z3 AST
mkFpaNumeralDouble = (Context -> Double -> Sort -> IO AST) -> Double -> Sort -> z3 AST
forall (z3 :: * -> *) a b c.
MonadZ3 z3 =>
(Context -> a -> b -> IO c) -> a -> b -> z3 c
liftFun2 Context -> Double -> Sort -> IO AST
Base.mkFpaNumeralDouble
mkFpaNumeralInt :: (MonadZ3 z3, Integral int) => int -> Sort -> z3 AST
mkFpaNumeralInt :: forall (z3 :: * -> *) a.
(MonadZ3 z3, Integral a) =>
a -> Sort -> z3 AST
mkFpaNumeralInt = (Context -> int -> Sort -> IO AST) -> int -> Sort -> z3 AST
forall (z3 :: * -> *) a b c.
MonadZ3 z3 =>
(Context -> a -> b -> IO c) -> a -> b -> z3 c
liftFun2 Context -> int -> Sort -> IO AST
forall a. Integral a => Context -> a -> Sort -> IO AST
Base.mkFpaNumeralInt
mkFpaNumeralIntUInt :: (MonadZ3 z3, Integral int)
=> Bool
-> int
-> int
-> Sort
-> z3 AST
mkFpaNumeralIntUInt :: forall (z3 :: * -> *) int.
(MonadZ3 z3, Integral int) =>
Bool -> int -> int -> Sort -> z3 AST
mkFpaNumeralIntUInt = (Context -> Bool -> int -> int -> Sort -> IO AST)
-> Bool -> int -> int -> Sort -> z3 AST
forall (z3 :: * -> *) a b c d e.
MonadZ3 z3 =>
(Context -> a -> b -> c -> d -> IO e) -> a -> b -> c -> d -> z3 e
liftFun4 Context -> Bool -> int -> int -> Sort -> IO AST
forall int.
Integral int =>
Context -> Bool -> int -> int -> Sort -> IO AST
Base.mkFpaNumeralIntUInt
mkFpaNumeralInt64UInt64 :: (MonadZ3 z3, Integral int)
=> Bool
-> int
-> int
-> Sort
-> z3 AST
mkFpaNumeralInt64UInt64 :: forall (z3 :: * -> *) int.
(MonadZ3 z3, Integral int) =>
Bool -> int -> int -> Sort -> z3 AST
mkFpaNumeralInt64UInt64 = (Context -> Bool -> int -> int -> Sort -> IO AST)
-> Bool -> int -> int -> Sort -> z3 AST
forall (z3 :: * -> *) a b c d e.
MonadZ3 z3 =>
(Context -> a -> b -> c -> d -> IO e) -> a -> b -> c -> d -> z3 e
liftFun4 Context -> Bool -> int -> int -> Sort -> IO AST
forall int.
Integral int =>
Context -> Bool -> int -> int -> Sort -> IO AST
Base.mkFpaNumeralInt64UInt64
mkFpaAbs :: MonadZ3 z3 => AST -> z3 AST
mkFpaAbs :: forall (z3 :: * -> *). MonadZ3 z3 => AST -> z3 AST
mkFpaAbs = (Context -> AST -> IO AST) -> AST -> z3 AST
forall (z3 :: * -> *) a b.
MonadZ3 z3 =>
(Context -> a -> IO b) -> a -> z3 b
liftFun1 Context -> AST -> IO AST
Base.mkFpaAbs
mkFpaNeg :: MonadZ3 z3 => AST -> z3 AST
mkFpaNeg :: forall (z3 :: * -> *). MonadZ3 z3 => AST -> z3 AST
mkFpaNeg = (Context -> AST -> IO AST) -> AST -> z3 AST
forall (z3 :: * -> *) a b.
MonadZ3 z3 =>
(Context -> a -> IO b) -> a -> z3 b
liftFun1 Context -> AST -> IO AST
Base.mkFpaNeg
mkFpaAdd :: MonadZ3 z3
=> AST
-> AST
-> AST
-> z3 AST
mkFpaAdd :: forall (z3 :: * -> *). MonadZ3 z3 => AST -> AST -> AST -> z3 AST
mkFpaAdd = (Context -> AST -> AST -> AST -> IO AST)
-> AST -> AST -> AST -> z3 AST
forall (z3 :: * -> *) a b c d.
MonadZ3 z3 =>
(Context -> a -> b -> c -> IO d) -> a -> b -> c -> z3 d
liftFun3 Context -> AST -> AST -> AST -> IO AST
Base.mkFpaAdd
mkFpaSub :: MonadZ3 z3
=> AST
-> AST
-> AST
-> z3 AST
mkFpaSub :: forall (z3 :: * -> *). MonadZ3 z3 => AST -> AST -> AST -> z3 AST
mkFpaSub = (Context -> AST -> AST -> AST -> IO AST)
-> AST -> AST -> AST -> z3 AST
forall (z3 :: * -> *) a b c d.
MonadZ3 z3 =>
(Context -> a -> b -> c -> IO d) -> a -> b -> c -> z3 d
liftFun3 Context -> AST -> AST -> AST -> IO AST
Base.mkFpaSub
mkFpaMul :: MonadZ3 z3
=> AST
-> AST
-> AST
-> z3 AST
mkFpaMul :: forall (z3 :: * -> *). MonadZ3 z3 => AST -> AST -> AST -> z3 AST
mkFpaMul = (Context -> AST -> AST -> AST -> IO AST)
-> AST -> AST -> AST -> z3 AST
forall (z3 :: * -> *) a b c d.
MonadZ3 z3 =>
(Context -> a -> b -> c -> IO d) -> a -> b -> c -> z3 d
liftFun3 Context -> AST -> AST -> AST -> IO AST
Base.mkFpaMul
mkFpaDiv :: MonadZ3 z3
=> AST
-> AST
-> AST
-> z3 AST
mkFpaDiv :: forall (z3 :: * -> *). MonadZ3 z3 => AST -> AST -> AST -> z3 AST
mkFpaDiv = (Context -> AST -> AST -> AST -> IO AST)
-> AST -> AST -> AST -> z3 AST
forall (z3 :: * -> *) a b c d.
MonadZ3 z3 =>
(Context -> a -> b -> c -> IO d) -> a -> b -> c -> z3 d
liftFun3 Context -> AST -> AST -> AST -> IO AST
Base.mkFpaDiv
mkFpaFma :: MonadZ3 z3 => AST -> AST -> AST -> AST -> z3 AST
mkFpaFma :: forall (z3 :: * -> *).
MonadZ3 z3 =>
AST -> AST -> AST -> AST -> z3 AST
mkFpaFma = (Context -> AST -> AST -> AST -> AST -> IO AST)
-> AST -> AST -> AST -> AST -> z3 AST
forall (z3 :: * -> *) a b c d e.
MonadZ3 z3 =>
(Context -> a -> b -> c -> d -> IO e) -> a -> b -> c -> d -> z3 e
liftFun4 Context -> AST -> AST -> AST -> AST -> IO AST
Base.mkFpaFma
mkFpaSqrt :: MonadZ3 z3 => AST -> AST -> z3 AST
mkFpaSqrt :: forall (z3 :: * -> *). MonadZ3 z3 => AST -> AST -> z3 AST
mkFpaSqrt = (Context -> AST -> AST -> IO AST) -> AST -> AST -> z3 AST
forall (z3 :: * -> *) a b c.
MonadZ3 z3 =>
(Context -> a -> b -> IO c) -> a -> b -> z3 c
liftFun2 Context -> AST -> AST -> IO AST
Base.mkFpaSqrt
mkFpaRem :: MonadZ3 z3 => AST -> AST -> z3 AST
mkFpaRem :: forall (z3 :: * -> *). MonadZ3 z3 => AST -> AST -> z3 AST
mkFpaRem = (Context -> AST -> AST -> IO AST) -> AST -> AST -> z3 AST
forall (z3 :: * -> *) a b c.
MonadZ3 z3 =>
(Context -> a -> b -> IO c) -> a -> b -> z3 c
liftFun2 Context -> AST -> AST -> IO AST
Base.mkFpaRem
mkFpaRoundToIntegral :: MonadZ3 z3 => AST -> AST -> z3 AST
mkFpaRoundToIntegral :: forall (z3 :: * -> *). MonadZ3 z3 => AST -> AST -> z3 AST
mkFpaRoundToIntegral = (Context -> AST -> AST -> IO AST) -> AST -> AST -> z3 AST
forall (z3 :: * -> *) a b c.
MonadZ3 z3 =>
(Context -> a -> b -> IO c) -> a -> b -> z3 c
liftFun2 Context -> AST -> AST -> IO AST
Base.mkFpaRoundToIntegral
mkFpaMin :: MonadZ3 z3 => AST -> AST -> z3 AST
mkFpaMin :: forall (z3 :: * -> *). MonadZ3 z3 => AST -> AST -> z3 AST
mkFpaMin = (Context -> AST -> AST -> IO AST) -> AST -> AST -> z3 AST
forall (z3 :: * -> *) a b c.
MonadZ3 z3 =>
(Context -> a -> b -> IO c) -> a -> b -> z3 c
liftFun2 Context -> AST -> AST -> IO AST
Base.mkFpaMin
mkFpaMax :: MonadZ3 z3 => AST -> AST -> z3 AST
mkFpaMax :: forall (z3 :: * -> *). MonadZ3 z3 => AST -> AST -> z3 AST
mkFpaMax = (Context -> AST -> AST -> IO AST) -> AST -> AST -> z3 AST
forall (z3 :: * -> *) a b c.
MonadZ3 z3 =>
(Context -> a -> b -> IO c) -> a -> b -> z3 c
liftFun2 Context -> AST -> AST -> IO AST
Base.mkFpaMax
mkFpaLeq :: MonadZ3 z3 => AST -> AST -> z3 AST
mkFpaLeq :: forall (z3 :: * -> *). MonadZ3 z3 => AST -> AST -> z3 AST
mkFpaLeq = (Context -> AST -> AST -> IO AST) -> AST -> AST -> z3 AST
forall (z3 :: * -> *) a b c.
MonadZ3 z3 =>
(Context -> a -> b -> IO c) -> a -> b -> z3 c
liftFun2 Context -> AST -> AST -> IO AST
Base.mkFpaLeq
mkFpaLt :: MonadZ3 z3 => AST -> AST -> z3 AST
mkFpaLt :: forall (z3 :: * -> *). MonadZ3 z3 => AST -> AST -> z3 AST
mkFpaLt = (Context -> AST -> AST -> IO AST) -> AST -> AST -> z3 AST
forall (z3 :: * -> *) a b c.
MonadZ3 z3 =>
(Context -> a -> b -> IO c) -> a -> b -> z3 c
liftFun2 Context -> AST -> AST -> IO AST
Base.mkFpaLt
mkFpaGeq :: MonadZ3 z3 => AST -> AST -> z3 AST
mkFpaGeq :: forall (z3 :: * -> *). MonadZ3 z3 => AST -> AST -> z3 AST
mkFpaGeq = (Context -> AST -> AST -> IO AST) -> AST -> AST -> z3 AST
forall (z3 :: * -> *) a b c.
MonadZ3 z3 =>
(Context -> a -> b -> IO c) -> a -> b -> z3 c
liftFun2 Context -> AST -> AST -> IO AST
Base.mkFpaGeq
mkFpaGt :: MonadZ3 z3 => AST -> AST -> z3 AST
mkFpaGt :: forall (z3 :: * -> *). MonadZ3 z3 => AST -> AST -> z3 AST
mkFpaGt = (Context -> AST -> AST -> IO AST) -> AST -> AST -> z3 AST
forall (z3 :: * -> *) a b c.
MonadZ3 z3 =>
(Context -> a -> b -> IO c) -> a -> b -> z3 c
liftFun2 Context -> AST -> AST -> IO AST
Base.mkFpaGt
mkFpaEq :: MonadZ3 z3 => AST -> AST -> z3 AST
mkFpaEq :: forall (z3 :: * -> *). MonadZ3 z3 => AST -> AST -> z3 AST
mkFpaEq = (Context -> AST -> AST -> IO AST) -> AST -> AST -> z3 AST
forall (z3 :: * -> *) a b c.
MonadZ3 z3 =>
(Context -> a -> b -> IO c) -> a -> b -> z3 c
liftFun2 Context -> AST -> AST -> IO AST
Base.mkFpaEq
mkFpaIsNormal :: MonadZ3 z3 => AST -> z3 AST
mkFpaIsNormal :: forall (z3 :: * -> *). MonadZ3 z3 => AST -> z3 AST
mkFpaIsNormal = (Context -> AST -> IO AST) -> AST -> z3 AST
forall (z3 :: * -> *) a b.
MonadZ3 z3 =>
(Context -> a -> IO b) -> a -> z3 b
liftFun1 Context -> AST -> IO AST
Base.mkFpaIsNormal
mkFpaIsSubnormal :: MonadZ3 z3 => AST -> z3 AST
mkFpaIsSubnormal :: forall (z3 :: * -> *). MonadZ3 z3 => AST -> z3 AST
mkFpaIsSubnormal = (Context -> AST -> IO AST) -> AST -> z3 AST
forall (z3 :: * -> *) a b.
MonadZ3 z3 =>
(Context -> a -> IO b) -> a -> z3 b
liftFun1 Context -> AST -> IO AST
Base.mkFpaIsSubnormal
mkFpaIsZero :: MonadZ3 z3 => AST -> z3 AST
mkFpaIsZero :: forall (z3 :: * -> *). MonadZ3 z3 => AST -> z3 AST
mkFpaIsZero = (Context -> AST -> IO AST) -> AST -> z3 AST
forall (z3 :: * -> *) a b.
MonadZ3 z3 =>
(Context -> a -> IO b) -> a -> z3 b
liftFun1 Context -> AST -> IO AST
Base.mkFpaIsZero
mkFpaIsInfinite :: MonadZ3 z3 => AST -> z3 AST
mkFpaIsInfinite :: forall (z3 :: * -> *). MonadZ3 z3 => AST -> z3 AST
mkFpaIsInfinite = (Context -> AST -> IO AST) -> AST -> z3 AST
forall (z3 :: * -> *) a b.
MonadZ3 z3 =>
(Context -> a -> IO b) -> a -> z3 b
liftFun1 Context -> AST -> IO AST
Base.mkFpaIsInfinite
mkFpaIsNaN :: MonadZ3 z3 => AST -> z3 AST
mkFpaIsNaN :: forall (z3 :: * -> *). MonadZ3 z3 => AST -> z3 AST
mkFpaIsNaN = (Context -> AST -> IO AST) -> AST -> z3 AST
forall (z3 :: * -> *) a b.
MonadZ3 z3 =>
(Context -> a -> IO b) -> a -> z3 b
liftFun1 Context -> AST -> IO AST
Base.mkFpaIsNaN
mkFpaIsNegative :: MonadZ3 z3 => AST -> z3 AST
mkFpaIsNegative :: forall (z3 :: * -> *). MonadZ3 z3 => AST -> z3 AST
mkFpaIsNegative = (Context -> AST -> IO AST) -> AST -> z3 AST
forall (z3 :: * -> *) a b.
MonadZ3 z3 =>
(Context -> a -> IO b) -> a -> z3 b
liftFun1 Context -> AST -> IO AST
Base.mkFpaIsNegative
mkFpaIsPositive :: MonadZ3 z3 => AST -> z3 AST
mkFpaIsPositive :: forall (z3 :: * -> *). MonadZ3 z3 => AST -> z3 AST
mkFpaIsPositive = (Context -> AST -> IO AST) -> AST -> z3 AST
forall (z3 :: * -> *) a b.
MonadZ3 z3 =>
(Context -> a -> IO b) -> a -> z3 b
liftFun1 Context -> AST -> IO AST
Base.mkFpaIsPositive
mkFpaToFpBv :: MonadZ3 z3 => AST -> Sort -> z3 AST
mkFpaToFpBv :: forall (z3 :: * -> *). MonadZ3 z3 => AST -> Sort -> z3 AST
mkFpaToFpBv = (Context -> AST -> Sort -> IO AST) -> AST -> Sort -> z3 AST
forall (z3 :: * -> *) a b c.
MonadZ3 z3 =>
(Context -> a -> b -> IO c) -> a -> b -> z3 c
liftFun2 Context -> AST -> Sort -> IO AST
Base.mkFpaToFpBv
mkFpaToFpFloat :: MonadZ3 z3 => AST -> AST -> Sort -> z3 AST
mkFpaToFpFloat :: forall (z3 :: * -> *). MonadZ3 z3 => AST -> AST -> Sort -> z3 AST
mkFpaToFpFloat = (Context -> AST -> AST -> Sort -> IO AST)
-> AST -> AST -> Sort -> z3 AST
forall (z3 :: * -> *) a b c d.
MonadZ3 z3 =>
(Context -> a -> b -> c -> IO d) -> a -> b -> c -> z3 d
liftFun3 Context -> AST -> AST -> Sort -> IO AST
Base.mkFpaToFpFloat
mkFpaToFpReal :: MonadZ3 z3 => AST -> AST -> Sort -> z3 AST
mkFpaToFpReal :: forall (z3 :: * -> *). MonadZ3 z3 => AST -> AST -> Sort -> z3 AST
mkFpaToFpReal = (Context -> AST -> AST -> Sort -> IO AST)
-> AST -> AST -> Sort -> z3 AST
forall (z3 :: * -> *) a b c d.
MonadZ3 z3 =>
(Context -> a -> b -> c -> IO d) -> a -> b -> c -> z3 d
liftFun3 Context -> AST -> AST -> Sort -> IO AST
Base.mkFpaToFpReal
mkFpaToFpSigned :: MonadZ3 z3 => AST -> AST -> Sort -> z3 AST
mkFpaToFpSigned :: forall (z3 :: * -> *). MonadZ3 z3 => AST -> AST -> Sort -> z3 AST
mkFpaToFpSigned = (Context -> AST -> AST -> Sort -> IO AST)
-> AST -> AST -> Sort -> z3 AST
forall (z3 :: * -> *) a b c d.
MonadZ3 z3 =>
(Context -> a -> b -> c -> IO d) -> a -> b -> c -> z3 d
liftFun3 Context -> AST -> AST -> Sort -> IO AST
Base.mkFpaToFpSigned
mkFpaToFpUnsigned :: MonadZ3 z3 => AST -> AST -> Sort -> z3 AST
mkFpaToFpUnsigned :: forall (z3 :: * -> *). MonadZ3 z3 => AST -> AST -> Sort -> z3 AST
mkFpaToFpUnsigned = (Context -> AST -> AST -> Sort -> IO AST)
-> AST -> AST -> Sort -> z3 AST
forall (z3 :: * -> *) a b c d.
MonadZ3 z3 =>
(Context -> a -> b -> c -> IO d) -> a -> b -> c -> z3 d
liftFun3 Context -> AST -> AST -> Sort -> IO AST
Base.mkFpaToFpUnsigned
mkFpaToUbv :: (MonadZ3 z3, Integral int) => AST -> AST -> int -> z3 AST
mkFpaToUbv :: forall (z3 :: * -> *) int.
(MonadZ3 z3, Integral int) =>
AST -> AST -> int -> z3 AST
mkFpaToUbv = (Context -> AST -> AST -> int -> IO AST)
-> AST -> AST -> int -> z3 AST
forall (z3 :: * -> *) a b c d.
MonadZ3 z3 =>
(Context -> a -> b -> c -> IO d) -> a -> b -> c -> z3 d
liftFun3 Context -> AST -> AST -> int -> IO AST
forall int. Integral int => Context -> AST -> AST -> int -> IO AST
Base.mkFpaToUbv
mkFpaToSbv :: (MonadZ3 z3, Integral int) => AST -> AST -> int -> z3 AST
mkFpaToSbv :: forall (z3 :: * -> *) int.
(MonadZ3 z3, Integral int) =>
AST -> AST -> int -> z3 AST
mkFpaToSbv = (Context -> AST -> AST -> int -> IO AST)
-> AST -> AST -> int -> z3 AST
forall (z3 :: * -> *) a b c d.
MonadZ3 z3 =>
(Context -> a -> b -> c -> IO d) -> a -> b -> c -> z3 d
liftFun3 Context -> AST -> AST -> int -> IO AST
forall int. Integral int => Context -> AST -> AST -> int -> IO AST
Base.mkFpaToSbv
mkFpaToReal :: MonadZ3 z3 => AST -> z3 AST
mkFpaToReal :: forall (z3 :: * -> *). MonadZ3 z3 => AST -> z3 AST
mkFpaToReal = (Context -> AST -> IO AST) -> AST -> z3 AST
forall (z3 :: * -> *) a b.
MonadZ3 z3 =>
(Context -> a -> IO b) -> a -> z3 b
liftFun1 Context -> AST -> IO AST
Base.mkFpaToReal
fpaGetEbits :: (MonadZ3 z3, Integral int) => Sort -> z3 int
fpaGetEbits :: forall (z3 :: * -> *) int.
(MonadZ3 z3, Integral int) =>
Sort -> z3 int
fpaGetEbits = (Context -> Sort -> IO int) -> Sort -> z3 int
forall (z3 :: * -> *) a b.
MonadZ3 z3 =>
(Context -> a -> IO b) -> a -> z3 b
liftFun1 Context -> Sort -> IO int
forall int. Integral int => Context -> Sort -> IO int
Base.fpaGetEbits
fpaGetSbits :: (MonadZ3 z3, Integral int) => Sort -> z3 int
fpaGetSbits :: forall (z3 :: * -> *) int.
(MonadZ3 z3, Integral int) =>
Sort -> z3 int
fpaGetSbits = (Context -> Sort -> IO int) -> Sort -> z3 int
forall (z3 :: * -> *) a b.
MonadZ3 z3 =>
(Context -> a -> IO b) -> a -> z3 b
liftFun1 Context -> Sort -> IO int
forall int. Integral int => Context -> Sort -> IO int
Base.fpaGetSbits
fpaIsNumeralNaN :: MonadZ3 z3 => AST -> z3 Bool
fpaIsNumeralNaN :: forall (z3 :: * -> *). MonadZ3 z3 => AST -> z3 Bool
fpaIsNumeralNaN = (Context -> AST -> IO Bool) -> AST -> z3 Bool
forall (z3 :: * -> *) a b.
MonadZ3 z3 =>
(Context -> a -> IO b) -> a -> z3 b
liftFun1 Context -> AST -> IO Bool
Base.fpaIsNumeralNaN
fpaIsNumeralInf :: MonadZ3 z3 => AST -> z3 Bool
fpaIsNumeralInf :: forall (z3 :: * -> *). MonadZ3 z3 => AST -> z3 Bool
fpaIsNumeralInf = (Context -> AST -> IO Bool) -> AST -> z3 Bool
forall (z3 :: * -> *) a b.
MonadZ3 z3 =>
(Context -> a -> IO b) -> a -> z3 b
liftFun1 Context -> AST -> IO Bool
Base.fpaIsNumeralInf
fpaIsNumeralZero :: MonadZ3 z3 => AST -> z3 Bool
fpaIsNumeralZero :: forall (z3 :: * -> *). MonadZ3 z3 => AST -> z3 Bool
fpaIsNumeralZero = (Context -> AST -> IO Bool) -> AST -> z3 Bool
forall (z3 :: * -> *) a b.
MonadZ3 z3 =>
(Context -> a -> IO b) -> a -> z3 b
liftFun1 Context -> AST -> IO Bool
Base.fpaIsNumeralZero
fpaIsNumeralNormal :: MonadZ3 z3 => AST -> z3 Bool
fpaIsNumeralNormal :: forall (z3 :: * -> *). MonadZ3 z3 => AST -> z3 Bool
fpaIsNumeralNormal = (Context -> AST -> IO Bool) -> AST -> z3 Bool
forall (z3 :: * -> *) a b.
MonadZ3 z3 =>
(Context -> a -> IO b) -> a -> z3 b
liftFun1 Context -> AST -> IO Bool
Base.fpaIsNumeralNormal
fpaIsNumeralSubnormal :: MonadZ3 z3 => AST -> z3 Bool
fpaIsNumeralSubnormal :: forall (z3 :: * -> *). MonadZ3 z3 => AST -> z3 Bool
fpaIsNumeralSubnormal = (Context -> AST -> IO Bool) -> AST -> z3 Bool
forall (z3 :: * -> *) a b.
MonadZ3 z3 =>
(Context -> a -> IO b) -> a -> z3 b
liftFun1 Context -> AST -> IO Bool
Base.fpaIsNumeralSubnormal
fpaIsNumeralPositive :: MonadZ3 z3 => AST -> z3 Bool
fpaIsNumeralPositive :: forall (z3 :: * -> *). MonadZ3 z3 => AST -> z3 Bool
fpaIsNumeralPositive = (Context -> AST -> IO Bool) -> AST -> z3 Bool
forall (z3 :: * -> *) a b.
MonadZ3 z3 =>
(Context -> a -> IO b) -> a -> z3 b
liftFun1 Context -> AST -> IO Bool
Base.fpaIsNumeralPositive
fpaIsNumeralNegative :: MonadZ3 z3 => AST -> z3 Bool
fpaIsNumeralNegative :: forall (z3 :: * -> *). MonadZ3 z3 => AST -> z3 Bool
fpaIsNumeralNegative = (Context -> AST -> IO Bool) -> AST -> z3 Bool
forall (z3 :: * -> *) a b.
MonadZ3 z3 =>
(Context -> a -> IO b) -> a -> z3 b
liftFun1 Context -> AST -> IO Bool
Base.fpaIsNumeralNegative
fpaGetNumeralSignBv :: MonadZ3 z3 => AST -> z3 AST
fpaGetNumeralSignBv :: forall (z3 :: * -> *). MonadZ3 z3 => AST -> z3 AST
fpaGetNumeralSignBv = (Context -> AST -> IO AST) -> AST -> z3 AST
forall (z3 :: * -> *) a b.
MonadZ3 z3 =>
(Context -> a -> IO b) -> a -> z3 b
liftFun1 Context -> AST -> IO AST
Base.fpaGetNumeralSignBv
fpaGetNumeralSignificandBv :: MonadZ3 z3 => AST -> z3 AST
fpaGetNumeralSignificandBv :: forall (z3 :: * -> *). MonadZ3 z3 => AST -> z3 AST
fpaGetNumeralSignificandBv = (Context -> AST -> IO AST) -> AST -> z3 AST
forall (z3 :: * -> *) a b.
MonadZ3 z3 =>
(Context -> a -> IO b) -> a -> z3 b
liftFun1 Context -> AST -> IO AST
Base.fpaGetNumeralSignificandBv
fpaGetNumeralSignificandString :: MonadZ3 z3 => AST -> z3 String
fpaGetNumeralSignificandString :: forall (z3 :: * -> *). MonadZ3 z3 => AST -> z3 String
fpaGetNumeralSignificandString = (Context -> AST -> IO String) -> AST -> z3 String
forall (z3 :: * -> *) a b.
MonadZ3 z3 =>
(Context -> a -> IO b) -> a -> z3 b
liftFun1 Context -> AST -> IO String
Base.fpaGetNumeralSignificandString
fpaGetNumeralExponentString :: MonadZ3 z3 => AST -> Bool -> z3 String
fpaGetNumeralExponentString :: forall (z3 :: * -> *). MonadZ3 z3 => AST -> Bool -> z3 String
fpaGetNumeralExponentString = (Context -> AST -> Bool -> IO String) -> AST -> Bool -> z3 String
forall (z3 :: * -> *) a b c.
MonadZ3 z3 =>
(Context -> a -> b -> IO c) -> a -> b -> z3 c
liftFun2 Context -> AST -> Bool -> IO String
Base.fpaGetNumeralExponentString
fpaGetNumeralExponentBv :: MonadZ3 z3 => AST -> Bool -> z3 AST
fpaGetNumeralExponentBv :: forall (z3 :: * -> *). MonadZ3 z3 => AST -> Bool -> z3 AST
fpaGetNumeralExponentBv = (Context -> AST -> Bool -> IO AST) -> AST -> Bool -> z3 AST
forall (z3 :: * -> *) a b c.
MonadZ3 z3 =>
(Context -> a -> b -> IO c) -> a -> b -> z3 c
liftFun2 Context -> AST -> Bool -> IO AST
Base.fpaGetNumeralExponentBv
mkFpaToIEEEBv :: MonadZ3 z3 => AST -> z3 AST
mkFpaToIEEEBv :: forall (z3 :: * -> *). MonadZ3 z3 => AST -> z3 AST
mkFpaToIEEEBv = (Context -> AST -> IO AST) -> AST -> z3 AST
forall (z3 :: * -> *) a b.
MonadZ3 z3 =>
(Context -> a -> IO b) -> a -> z3 b
liftFun1 Context -> AST -> IO AST
Base.mkFpaToIEEEBv
mkFpaToFpIntReal :: MonadZ3 z3 => AST -> AST -> AST -> Sort -> z3 AST
mkFpaToFpIntReal :: forall (z3 :: * -> *).
MonadZ3 z3 =>
AST -> AST -> AST -> Sort -> z3 AST
mkFpaToFpIntReal = (Context -> AST -> AST -> AST -> Sort -> IO AST)
-> AST -> AST -> AST -> Sort -> z3 AST
forall (z3 :: * -> *) a b c d e.
MonadZ3 z3 =>
(Context -> a -> b -> c -> d -> IO e) -> a -> b -> c -> d -> z3 e
liftFun4 Context -> AST -> AST -> AST -> Sort -> IO AST
Base.mkFpaToFpIntReal
class MonadZ3 m => MonadOptimize m where
getOptimize :: m Base.Optimize
optimizeAssert :: MonadOptimize z3 => AST -> z3 ()
optimizeAssert :: forall (z3 :: * -> *). MonadOptimize z3 => AST -> z3 ()
optimizeAssert = (Context -> Optimize -> AST -> IO ()) -> AST -> z3 ()
forall (z3 :: * -> *) a b.
MonadOptimize z3 =>
(Context -> Optimize -> a -> IO b) -> a -> z3 b
liftOptimize1 Context -> Optimize -> AST -> IO ()
Base.optimizeAssert
optimizeAssertAndTrack :: MonadOptimize z3 => AST -> AST -> z3 ()
optimizeAssertAndTrack :: forall (z3 :: * -> *). MonadOptimize z3 => AST -> AST -> z3 ()
optimizeAssertAndTrack = (Context -> Optimize -> AST -> AST -> IO ()) -> AST -> AST -> z3 ()
forall (z3 :: * -> *) a b c.
MonadOptimize z3 =>
(Context -> Optimize -> a -> b -> IO c) -> a -> b -> z3 c
liftOptimize2 Context -> Optimize -> AST -> AST -> IO ()
Base.optimizeAssertAndTrack
optimizeAssertSoft :: MonadOptimize z3 => AST -> String -> Symbol -> z3 Int
optimizeAssertSoft :: forall (z3 :: * -> *).
MonadOptimize z3 =>
AST -> String -> Symbol -> z3 Int
optimizeAssertSoft = (Context -> Optimize -> AST -> String -> Symbol -> IO Int)
-> AST -> String -> Symbol -> z3 Int
forall (z3 :: * -> *) a b c d.
MonadOptimize z3 =>
(Context -> Optimize -> a -> b -> c -> IO d) -> a -> b -> c -> z3 d
liftOptimize3 Context -> Optimize -> AST -> String -> Symbol -> IO Int
Base.optimizeAssertSoft
optimizeMaximize :: MonadOptimize z3 => AST -> z3 Int
optimizeMaximize :: forall (z3 :: * -> *). MonadOptimize z3 => AST -> z3 Int
optimizeMaximize = (Context -> Optimize -> AST -> IO Int) -> AST -> z3 Int
forall (z3 :: * -> *) a b.
MonadOptimize z3 =>
(Context -> Optimize -> a -> IO b) -> a -> z3 b
liftOptimize1 Context -> Optimize -> AST -> IO Int
Base.optimizeMaximize
optimizeMinimize :: MonadOptimize z3 => AST -> z3 Int
optimizeMinimize :: forall (z3 :: * -> *). MonadOptimize z3 => AST -> z3 Int
optimizeMinimize = (Context -> Optimize -> AST -> IO Int) -> AST -> z3 Int
forall (z3 :: * -> *) a b.
MonadOptimize z3 =>
(Context -> Optimize -> a -> IO b) -> a -> z3 b
liftOptimize1 Context -> Optimize -> AST -> IO Int
Base.optimizeMinimize
optimizePush :: MonadOptimize z3 => z3 ()
optimizePush :: forall (z3 :: * -> *). MonadOptimize z3 => z3 ()
optimizePush = (Context -> Optimize -> IO ()) -> z3 ()
forall (z3 :: * -> *) b.
MonadOptimize z3 =>
(Context -> Optimize -> IO b) -> z3 b
liftOptimize0 Context -> Optimize -> IO ()
Base.optimizePush
optimizePop :: MonadOptimize z3 => z3 ()
optimizePop :: forall (z3 :: * -> *). MonadOptimize z3 => z3 ()
optimizePop = (Context -> Optimize -> IO ()) -> z3 ()
forall (z3 :: * -> *) b.
MonadOptimize z3 =>
(Context -> Optimize -> IO b) -> z3 b
liftOptimize0 Context -> Optimize -> IO ()
Base.optimizePop
optimizeCheck :: MonadOptimize z3 => [AST] -> z3 Result
optimizeCheck :: forall (z3 :: * -> *). MonadOptimize z3 => [AST] -> z3 Result
optimizeCheck = (Context -> Optimize -> [AST] -> IO Result) -> [AST] -> z3 Result
forall (z3 :: * -> *) a b.
MonadOptimize z3 =>
(Context -> Optimize -> a -> IO b) -> a -> z3 b
liftOptimize1 Context -> Optimize -> [AST] -> IO Result
Base.optimizeCheck
optimizeGetReasonUnknown :: MonadOptimize z3 => z3 String
optimizeGetReasonUnknown :: forall (z3 :: * -> *). MonadOptimize z3 => z3 String
optimizeGetReasonUnknown = (Context -> Optimize -> IO String) -> z3 String
forall (z3 :: * -> *) b.
MonadOptimize z3 =>
(Context -> Optimize -> IO b) -> z3 b
liftOptimize0 Context -> Optimize -> IO String
Base.optimizeGetReasonUnknown
optimizeGetModel :: MonadOptimize z3 => z3 Model
optimizeGetModel :: forall (z3 :: * -> *). MonadOptimize z3 => z3 Model
optimizeGetModel = (Context -> Optimize -> IO Model) -> z3 Model
forall (z3 :: * -> *) b.
MonadOptimize z3 =>
(Context -> Optimize -> IO b) -> z3 b
liftOptimize0 Context -> Optimize -> IO Model
Base.optimizeGetModel
optimizeGetUnsatCore :: MonadOptimize z3 => z3 [AST]
optimizeGetUnsatCore :: forall (z3 :: * -> *). MonadOptimize z3 => z3 [AST]
optimizeGetUnsatCore = (Context -> Optimize -> IO [AST]) -> z3 [AST]
forall (z3 :: * -> *) b.
MonadOptimize z3 =>
(Context -> Optimize -> IO b) -> z3 b
liftOptimize0 Context -> Optimize -> IO [AST]
Base.optimizeGetUnsatCore
optimizeSetParams :: MonadOptimize z3 => Params -> z3 ()
optimizeSetParams :: forall (z3 :: * -> *). MonadOptimize z3 => Params -> z3 ()
optimizeSetParams = (Context -> Optimize -> Params -> IO ()) -> Params -> z3 ()
forall (z3 :: * -> *) a b.
MonadOptimize z3 =>
(Context -> Optimize -> a -> IO b) -> a -> z3 b
liftOptimize1 Context -> Optimize -> Params -> IO ()
Base.optimizeSetParams
optimizeGetLower :: MonadOptimize z3 => Int -> z3 AST
optimizeGetLower :: forall (z3 :: * -> *). MonadOptimize z3 => Int -> z3 AST
optimizeGetLower = (Context -> Optimize -> Int -> IO AST) -> Int -> z3 AST
forall (z3 :: * -> *) a b.
MonadOptimize z3 =>
(Context -> Optimize -> a -> IO b) -> a -> z3 b
liftOptimize1 Context -> Optimize -> Int -> IO AST
Base.optimizeGetLower
optimizeGetUpper :: MonadOptimize z3 => Int -> z3 AST
optimizeGetUpper :: forall (z3 :: * -> *). MonadOptimize z3 => Int -> z3 AST
optimizeGetUpper = (Context -> Optimize -> Int -> IO AST) -> Int -> z3 AST
forall (z3 :: * -> *) a b.
MonadOptimize z3 =>
(Context -> Optimize -> a -> IO b) -> a -> z3 b
liftOptimize1 Context -> Optimize -> Int -> IO AST
Base.optimizeGetLower
optimizeGetUpperAsVector :: MonadOptimize z3 => Int -> z3 [AST]
optimizeGetUpperAsVector :: forall (z3 :: * -> *). MonadOptimize z3 => Int -> z3 [AST]
optimizeGetUpperAsVector = (Context -> Optimize -> Int -> IO [AST]) -> Int -> z3 [AST]
forall (z3 :: * -> *) a b.
MonadOptimize z3 =>
(Context -> Optimize -> a -> IO b) -> a -> z3 b
liftOptimize1 Context -> Optimize -> Int -> IO [AST]
Base.optimizeGetUpperAsVector
optimizeGetLowerAsVector :: MonadOptimize z3 => Int -> z3 [AST]
optimizeGetLowerAsVector :: forall (z3 :: * -> *). MonadOptimize z3 => Int -> z3 [AST]
optimizeGetLowerAsVector = (Context -> Optimize -> Int -> IO [AST]) -> Int -> z3 [AST]
forall (z3 :: * -> *) a b.
MonadOptimize z3 =>
(Context -> Optimize -> a -> IO b) -> a -> z3 b
liftOptimize1 Context -> Optimize -> Int -> IO [AST]
Base.optimizeGetLowerAsVector
optimizeToString :: MonadOptimize z3 => z3 String
optimizeToString :: forall (z3 :: * -> *). MonadOptimize z3 => z3 String
optimizeToString = (Context -> Optimize -> IO String) -> z3 String
forall (z3 :: * -> *) b.
MonadOptimize z3 =>
(Context -> Optimize -> IO b) -> z3 b
liftOptimize0 Context -> Optimize -> IO String
Base.optimizeToString
optimizeFromString :: MonadOptimize z3 => String -> z3 ()
optimizeFromString :: forall (z3 :: * -> *). MonadOptimize z3 => String -> z3 ()
optimizeFromString = (Context -> Optimize -> String -> IO ()) -> String -> z3 ()
forall (z3 :: * -> *) a b.
MonadOptimize z3 =>
(Context -> Optimize -> a -> IO b) -> a -> z3 b
liftOptimize1 Context -> Optimize -> String -> IO ()
Base.optimizeFromString
optimizeFromFile :: MonadOptimize z3 => String -> z3 ()
optimizeFromFile :: forall (z3 :: * -> *). MonadOptimize z3 => String -> z3 ()
optimizeFromFile = (Context -> Optimize -> String -> IO ()) -> String -> z3 ()
forall (z3 :: * -> *) a b.
MonadOptimize z3 =>
(Context -> Optimize -> a -> IO b) -> a -> z3 b
liftOptimize1 Context -> Optimize -> String -> IO ()
Base.optimizeFromFile
optimizeGetHelp :: MonadOptimize z3 => z3 String
optimizeGetHelp :: forall (z3 :: * -> *). MonadOptimize z3 => z3 String
optimizeGetHelp = (Context -> Optimize -> IO String) -> z3 String
forall (z3 :: * -> *) b.
MonadOptimize z3 =>
(Context -> Optimize -> IO b) -> z3 b
liftOptimize0 Context -> Optimize -> IO String
Base.optimizeGetHelp
optimizeGetAssertions :: MonadOptimize z3 => z3 [AST]
optimizeGetAssertions :: forall (z3 :: * -> *). MonadOptimize z3 => z3 [AST]
optimizeGetAssertions = (Context -> Optimize -> IO [AST]) -> z3 [AST]
forall (z3 :: * -> *) b.
MonadOptimize z3 =>
(Context -> Optimize -> IO b) -> z3 b
liftOptimize0 Context -> Optimize -> IO [AST]
Base.optimizeGetAssertions
optimizeGetObjectives :: MonadOptimize z3 => z3 [AST]
optimizeGetObjectives :: forall (z3 :: * -> *). MonadOptimize z3 => z3 [AST]
optimizeGetObjectives = (Context -> Optimize -> IO [AST]) -> z3 [AST]
forall (z3 :: * -> *) b.
MonadOptimize z3 =>
(Context -> Optimize -> IO b) -> z3 b
liftOptimize0 Context -> Optimize -> IO [AST]
Base.optimizeGetObjectives
solverGetHelp :: MonadZ3 z3 => z3 String
solverGetHelp :: forall (z3 :: * -> *). MonadZ3 z3 => z3 String
solverGetHelp = (Context -> Solver -> IO String) -> z3 String
forall (z3 :: * -> *) b.
MonadZ3 z3 =>
(Context -> Solver -> IO b) -> z3 b
liftSolver0 Context -> Solver -> IO String
Base.solverGetHelp
solverSetParams :: MonadZ3 z3 => Params -> z3 ()
solverSetParams :: forall (z3 :: * -> *). MonadZ3 z3 => Params -> z3 ()
solverSetParams = (Context -> Solver -> Params -> IO ()) -> Params -> z3 ()
forall (z3 :: * -> *) a b.
MonadZ3 z3 =>
(Context -> Solver -> a -> IO b) -> a -> z3 b
liftSolver1 Context -> Solver -> Params -> IO ()
Base.solverSetParams
solverPush :: MonadZ3 z3 => z3 ()
solverPush :: forall (z3 :: * -> *). MonadZ3 z3 => z3 ()
solverPush = (Context -> Solver -> IO ()) -> z3 ()
forall (z3 :: * -> *) b.
MonadZ3 z3 =>
(Context -> Solver -> IO b) -> z3 b
liftSolver0 Context -> Solver -> IO ()
Base.solverPush
solverPop :: MonadZ3 z3 => Int -> z3 ()
solverPop :: forall (z3 :: * -> *). MonadZ3 z3 => Int -> z3 ()
solverPop = (Context -> Solver -> Int -> IO ()) -> Int -> z3 ()
forall (z3 :: * -> *) a b.
MonadZ3 z3 =>
(Context -> Solver -> a -> IO b) -> a -> z3 b
liftSolver1 Context -> Solver -> Int -> IO ()
Base.solverPop
solverReset :: MonadZ3 z3 => z3 ()
solverReset :: forall (z3 :: * -> *). MonadZ3 z3 => z3 ()
solverReset = (Context -> Solver -> IO ()) -> z3 ()
forall (z3 :: * -> *) b.
MonadZ3 z3 =>
(Context -> Solver -> IO b) -> z3 b
liftSolver0 Context -> Solver -> IO ()
Base.solverReset
solverGetNumScopes :: MonadZ3 z3 => z3 Int
solverGetNumScopes :: forall (z3 :: * -> *). MonadZ3 z3 => z3 Int
solverGetNumScopes = (Context -> Solver -> IO Int) -> z3 Int
forall (z3 :: * -> *) b.
MonadZ3 z3 =>
(Context -> Solver -> IO b) -> z3 b
liftSolver0 Context -> Solver -> IO Int
Base.solverGetNumScopes
solverAssertCnstr :: MonadZ3 z3 => AST -> z3 ()
solverAssertCnstr :: forall (z3 :: * -> *). MonadZ3 z3 => AST -> z3 ()
solverAssertCnstr = (Context -> Solver -> AST -> IO ()) -> AST -> z3 ()
forall (z3 :: * -> *) a b.
MonadZ3 z3 =>
(Context -> Solver -> a -> IO b) -> a -> z3 b
liftSolver1 Context -> Solver -> AST -> IO ()
Base.solverAssertCnstr
solverAssertAndTrack :: MonadZ3 z3 => AST -> AST -> z3 ()
solverAssertAndTrack :: forall (z3 :: * -> *). MonadZ3 z3 => AST -> AST -> z3 ()
solverAssertAndTrack = (Context -> Solver -> AST -> AST -> IO ()) -> AST -> AST -> z3 ()
forall (z3 :: * -> *) a b c.
MonadZ3 z3 =>
(Context -> Solver -> a -> b -> IO c) -> a -> b -> z3 c
liftSolver2 Context -> Solver -> AST -> AST -> IO ()
Base.solverAssertAndTrack
solverGetAssertions :: MonadZ3 z3 => z3 [AST]
solverGetAssertions :: forall (z3 :: * -> *). MonadZ3 z3 => z3 [AST]
solverGetAssertions = (Context -> Solver -> IO [AST]) -> z3 [AST]
forall (z3 :: * -> *) b.
MonadZ3 z3 =>
(Context -> Solver -> IO b) -> z3 b
liftSolver0 Context -> Solver -> IO [AST]
Base.solverGetAssertions
solverCheck :: MonadZ3 z3 => z3 Result
solverCheck :: forall (z3 :: * -> *). MonadZ3 z3 => z3 Result
solverCheck = (Context -> Solver -> IO Result) -> z3 Result
forall (z3 :: * -> *) b.
MonadZ3 z3 =>
(Context -> Solver -> IO b) -> z3 b
liftSolver0 Context -> Solver -> IO Result
Base.solverCheck
solverCheckAssumptions :: MonadZ3 z3 => [AST] -> z3 Result
solverCheckAssumptions :: forall (z3 :: * -> *). MonadZ3 z3 => [AST] -> z3 Result
solverCheckAssumptions = (Context -> Solver -> [AST] -> IO Result) -> [AST] -> z3 Result
forall (z3 :: * -> *) a b.
MonadZ3 z3 =>
(Context -> Solver -> a -> IO b) -> a -> z3 b
liftSolver1 Context -> Solver -> [AST] -> IO Result
Base.solverCheckAssumptions
solverGetModel :: MonadZ3 z3 => z3 Model
solverGetModel :: forall (z3 :: * -> *). MonadZ3 z3 => z3 Model
solverGetModel = (Context -> Solver -> IO Model) -> z3 Model
forall (z3 :: * -> *) b.
MonadZ3 z3 =>
(Context -> Solver -> IO b) -> z3 b
liftSolver0 Context -> Solver -> IO Model
Base.solverGetModel
solverGetProof :: MonadZ3 z3 => z3 AST
solverGetProof :: forall (z3 :: * -> *). MonadZ3 z3 => z3 AST
solverGetProof = (Context -> Solver -> IO AST) -> z3 AST
forall (z3 :: * -> *) b.
MonadZ3 z3 =>
(Context -> Solver -> IO b) -> z3 b
liftSolver0 Context -> Solver -> IO AST
Base.solverGetProof
solverGetUnsatCore :: MonadZ3 z3 => z3 [AST]
solverGetUnsatCore :: forall (z3 :: * -> *). MonadZ3 z3 => z3 [AST]
solverGetUnsatCore = (Context -> Solver -> IO [AST]) -> z3 [AST]
forall (z3 :: * -> *) b.
MonadZ3 z3 =>
(Context -> Solver -> IO b) -> z3 b
liftSolver0 Context -> Solver -> IO [AST]
Base.solverGetUnsatCore
solverGetReasonUnknown :: MonadZ3 z3 => z3 String
solverGetReasonUnknown :: forall (z3 :: * -> *). MonadZ3 z3 => z3 String
solverGetReasonUnknown = (Context -> Solver -> IO String) -> z3 String
forall (z3 :: * -> *) b.
MonadZ3 z3 =>
(Context -> Solver -> IO b) -> z3 b
liftSolver0 Context -> Solver -> IO String
Base.solverGetReasonUnknown
solverToString :: MonadZ3 z3 => z3 String
solverToString :: forall (z3 :: * -> *). MonadZ3 z3 => z3 String
solverToString = (Context -> Solver -> IO String) -> z3 String
forall (z3 :: * -> *) b.
MonadZ3 z3 =>
(Context -> Solver -> IO b) -> z3 b
liftSolver0 Context -> Solver -> IO String
Base.solverToString
solverFromString :: MonadZ3 z3 => String -> z3 ()
solverFromString :: forall (z3 :: * -> *). MonadZ3 z3 => String -> z3 ()
solverFromString = (Context -> Solver -> String -> IO ()) -> String -> z3 ()
forall (z3 :: * -> *) a b.
MonadZ3 z3 =>
(Context -> Solver -> a -> IO b) -> a -> z3 b
liftSolver1 Context -> Solver -> String -> IO ()
Base.solverFromString
push :: MonadZ3 z3 => z3 ()
push :: forall (z3 :: * -> *). MonadZ3 z3 => z3 ()
push = z3 ()
forall (z3 :: * -> *). MonadZ3 z3 => z3 ()
solverPush
pop :: MonadZ3 z3 => Int -> z3 ()
pop :: forall (z3 :: * -> *). MonadZ3 z3 => Int -> z3 ()
pop Int
n = do
Int
scopes <- z3 Int
forall (z3 :: * -> *). MonadZ3 z3 => z3 Int
solverGetNumScopes
if Int
n Int -> Int -> Bool
forall a. Ord a => a -> a -> Bool
<= Int
scopes
then Int -> z3 ()
forall (z3 :: * -> *). MonadZ3 z3 => Int -> z3 ()
solverPop Int
n
else String -> z3 ()
forall a. HasCallStack => String -> a
error String
"Z3.Monad.safePop: too many scopes to backtrack"
local :: MonadZ3 z3 => z3 a -> z3 a
local :: forall (z3 :: * -> *) a. MonadZ3 z3 => z3 a -> z3 a
local z3 a
q = do
z3 ()
forall (z3 :: * -> *). MonadZ3 z3 => z3 ()
push
a
r <- z3 a
q
Int -> z3 ()
forall (z3 :: * -> *). MonadZ3 z3 => Int -> z3 ()
pop Int
1
a -> z3 a
forall a. a -> z3 a
forall (m :: * -> *) a. Monad m => a -> m a
return a
r
reset :: MonadZ3 z3 => z3 ()
reset :: forall (z3 :: * -> *). MonadZ3 z3 => z3 ()
reset = z3 ()
forall (z3 :: * -> *). MonadZ3 z3 => z3 ()
solverReset
getNumScopes :: MonadZ3 z3 => z3 Int
getNumScopes :: forall (z3 :: * -> *). MonadZ3 z3 => z3 Int
getNumScopes = (Context -> Solver -> IO Int) -> z3 Int
forall (z3 :: * -> *) b.
MonadZ3 z3 =>
(Context -> Solver -> IO b) -> z3 b
liftSolver0 Context -> Solver -> IO Int
Base.solverGetNumScopes
assert :: MonadZ3 z3 => AST -> z3 ()
assert :: forall (z3 :: * -> *). MonadZ3 z3 => AST -> z3 ()
assert = AST -> z3 ()
forall (z3 :: * -> *). MonadZ3 z3 => AST -> z3 ()
solverAssertCnstr
check :: MonadZ3 z3 => z3 Result
check :: forall (z3 :: * -> *). MonadZ3 z3 => z3 Result
check = z3 Result
forall (z3 :: * -> *). MonadZ3 z3 => z3 Result
solverCheck
checkAssumptions :: MonadZ3 z3 => [AST] -> z3 Result
checkAssumptions :: forall (z3 :: * -> *). MonadZ3 z3 => [AST] -> z3 Result
checkAssumptions = [AST] -> z3 Result
forall (z3 :: * -> *). MonadZ3 z3 => [AST] -> z3 Result
solverCheckAssumptions
solverCheckAndGetModel :: MonadZ3 z3 => z3 (Result, Maybe Model)
solverCheckAndGetModel :: forall (z3 :: * -> *). MonadZ3 z3 => z3 (Result, Maybe Model)
solverCheckAndGetModel = (Context -> Solver -> IO (Result, Maybe Model))
-> z3 (Result, Maybe Model)
forall (z3 :: * -> *) b.
MonadZ3 z3 =>
(Context -> Solver -> IO b) -> z3 b
liftSolver0 Context -> Solver -> IO (Result, Maybe Model)
Base.solverCheckAndGetModel
getModel :: MonadZ3 z3 => z3 (Result, Maybe Model)
getModel :: forall (z3 :: * -> *). MonadZ3 z3 => z3 (Result, Maybe Model)
getModel = z3 (Result, Maybe Model)
forall (z3 :: * -> *). MonadZ3 z3 => z3 (Result, Maybe Model)
solverCheckAndGetModel
withModel :: (Applicative z3, MonadZ3 z3) =>
(Base.Model -> z3 a) -> z3 (Result, Maybe a)
withModel :: forall (z3 :: * -> *) a.
(Applicative z3, MonadZ3 z3) =>
(Model -> z3 a) -> z3 (Result, Maybe a)
withModel Model -> z3 a
f = do
(Result
r,Maybe Model
mb_m) <- z3 (Result, Maybe Model)
forall (z3 :: * -> *). MonadZ3 z3 => z3 (Result, Maybe Model)
getModel
Maybe a
mb_e <- (Model -> z3 a) -> Maybe Model -> z3 (Maybe a)
forall (t :: * -> *) (f :: * -> *) a b.
(Traversable t, Applicative f) =>
(a -> f b) -> t a -> f (t b)
forall (f :: * -> *) a b.
Applicative f =>
(a -> f b) -> Maybe a -> f (Maybe b)
T.traverse Model -> z3 a
f Maybe Model
mb_m
(Result, Maybe a) -> z3 (Result, Maybe a)
forall a. a -> z3 a
forall (m :: * -> *) a. Monad m => a -> m a
return (Result
r, Maybe a
mb_e)
getUnsatCore :: MonadZ3 z3 => z3 [AST]
getUnsatCore :: forall (z3 :: * -> *). MonadZ3 z3 => z3 [AST]
getUnsatCore = z3 [AST]
forall (z3 :: * -> *). MonadZ3 z3 => z3 [AST]
solverGetUnsatCore