| Copyright | (c) Galois Inc 2018 |
|---|---|
| License | BSD3 |
| Maintainer | Ryan Scott <rscott@galois.com>, Langston Barrett <langston@galois.com> |
| Stability | provisional |
| Safe Haskell | None |
| Language | Haskell2010 |
Lang.Crucible.Simulator.PathSatisfiability
Description
Synopsis
- checkPathSatisfiability :: ConfigOption BaseBoolType
- pathSatisfiabilityFeature :: IsSymInterface sym => sym -> (Maybe ProgramLoc -> Pred sym -> IO BranchResult) -> IO (GenericExecutionFeature sym)
- checkSatToConsiderBranch :: IsSymInterface sym => sym -> (Pred sym -> IO (SatResult () ())) -> Pred sym -> IO BranchResult
- data BranchResult
Documentation
pathSatisfiabilityFeature Source #
Arguments
| :: IsSymInterface sym | |
| => sym | |
| -> (Maybe ProgramLoc -> Pred sym -> IO BranchResult) | An action for considering the satisfiability of a predicate. In the current state of the symbolic interface, indicate what we can determine about the given predicate. Usually, this is set to |
| -> IO (GenericExecutionFeature sym) |
Prune unsatisfiable execution traces during simulation.
At every symbolic branch point, an SMT solver is queried to determine if one or both symbolic branches are unsatisfiable. Only branches with satisfiable branch conditions are explored.
checkSatToConsiderBranch :: IsSymInterface sym => sym -> (Pred sym -> IO (SatResult () ())) -> Pred sym -> IO BranchResult Source #
data BranchResult Source #
Result of attempting to branch on a predicate.
Constructors
| IndeterminateBranchResult | The both branches of the predicate might be satisfiable (although satisfiablility of either branch is not guaranteed). |
| NoBranch !Bool | Commit to the branch where the given predicate is equal to the returned boolean. The opposite branch is unsatisfiable (although the given branch is not necessarily satisfiable). |
| UnsatisfiableContext | The context before considering the given predicate was already unsatisfiable. |