Copyright | (c) Galois Inc 2015-2020 |
---|---|
License | BSD3 |
Maintainer | Rob Dockins <rdockins@galois.com> |
Stability | provisional |
Safe Haskell | Safe-Inferred |
Language | Haskell2010 |
What4.Solver.Z3
Description
Z3-specific tweaks to the basic SMTLib2 solver interface.
Synopsis
- data Z3 = Z3
- z3Adapter :: SolverAdapter st
- z3Path :: ConfigOption (BaseStringType Unicode)
- z3Timeout :: ConfigOption BaseIntegerType
- z3Options :: [ConfigDesc]
- z3Tactic :: ConfigOption (BaseStringType Unicode)
- z3TacticDefault :: Text
- z3Features :: ProblemFeatures
- runZ3InOverride :: ExprBuilder t st fs -> LogData -> [BoolExpr t] -> (SatResult (GroundEvalFn t, Maybe (ExprRangeBindings t)) () -> IO a) -> IO a
- withZ3 :: ExprBuilder t st fs -> FilePath -> LogData -> (Session t Z3 -> IO a) -> IO a
- writeZ3SMT2File :: ExprBuilder t st fs -> Handle -> [BoolExpr t] -> IO ()
- runZ3Horn :: forall sym t st fs. sym ~ ExprBuilder t st fs => sym -> Bool -> LogData -> [SomeSymFn sym] -> [BoolExpr t] -> IO (SatResult (MapF (SymFnWrapper sym) (SymFnWrapper sym)) ())
- writeZ3HornSMT2File :: sym ~ ExprBuilder t st fs => sym -> Bool -> Handle -> [SomeSymFn sym] -> [BoolExpr t] -> IO ()
Documentation
Constructors
Z3 |
Instances
z3Adapter :: SolverAdapter st Source #
z3Path :: ConfigOption (BaseStringType Unicode) Source #
Path to Z3
z3Timeout :: ConfigOption BaseIntegerType Source #
Per-check timeout, in milliseconds (zero is none)
z3Options :: [ConfigDesc] Source #
z3Tactic :: ConfigOption (BaseStringType Unicode) Source #
Z3 tactic
runZ3InOverride :: ExprBuilder t st fs -> LogData -> [BoolExpr t] -> (SatResult (GroundEvalFn t, Maybe (ExprRangeBindings t)) () -> IO a) -> IO a Source #
Arguments
:: ExprBuilder t st fs | |
-> FilePath | Path to Z3 executable |
-> LogData | |
-> (Session t Z3 -> IO a) | Action to run |
-> IO a |
Run Z3 in a session. Z3 will be configured to produce models, but otherwise left with the default configuration.
writeZ3SMT2File :: ExprBuilder t st fs -> Handle -> [BoolExpr t] -> IO () Source #
runZ3Horn :: forall sym t st fs. sym ~ ExprBuilder t st fs => sym -> Bool -> LogData -> [SomeSymFn sym] -> [BoolExpr t] -> IO (SatResult (MapF (SymFnWrapper sym) (SymFnWrapper sym)) ()) Source #
Check the satisfiability of a set of constrained Horn clauses (CHCs).
CHCs are represented as pure SMT-LIB2 implications. For more information, see the Z3 guide.
There are two ways to solve the CHCs: either by directly solving the problem as is, or by transforming the problem into a set of linear integer arithmetic (LIA) CHCs and solving that instead. The latter is done by replacing all bitvector (BV) operations with LIA operations, and replacing all BV variables with LIA variables. This transformation is not sound, but in practice it is a useful heuristic. Then the result is transformed back into a BV result, and checked for satisfiability. The satisfiability check is necessary because the transformation is not sound, so LIA solution may not be a solution to the BV CHCs.
writeZ3HornSMT2File :: sym ~ ExprBuilder t st fs => sym -> Bool -> Handle -> [SomeSymFn sym] -> [BoolExpr t] -> IO () Source #