1 #ifndef ROSE_BinaryAnalysis_ModelChecker_Path_H
2 #define ROSE_BinaryAnalysis_ModelChecker_Path_H
3 #include <featureTests.h>
4 #ifdef ROSE_ENABLE_MODEL_CHECKER
6 #include <Rose/BinaryAnalysis/ModelChecker/Types.h>
8 #include <Rose/BinaryAnalysis/InstructionSemantics/BaseSemantics/BasicTypes.h>
9 #include <Rose/BinaryAnalysis/SmtSolver.h>
10 #include <Rose/BinaryAnalysis/SymbolicExpression.h>
11 #include <Combinatorics.h>
14 namespace BinaryAnalysis {
15 namespace ModelChecker {
30 explicit Path(
const PathNodePtr &end);
40 static Ptr instance(
const ExecutionUnitPtr&);
71 size_t nSteps()
const;
80 double processingTime()
const;
90 uint64_t
hash()
const;
91 void hash(Combinatorics::Hasher&)
const;
99 bool executionFailed()
const;
106 std::vector<SymbolicExpression::Ptr> assertions()
const;
113 PathNodePtr lastNode()
const;
123 std::vector<PathNodePtr> nodes()
const;
128 std::string printableName()
const;
136 void print(
const SettingsPtr&, std::ostream&,
const std::string &prefix,
size_t maxSteps)
const;
144 void toYaml(
const SettingsPtr&, std::ostream&,
const std::string &prefix,
size_t maxSteps)
const;
boost::filesystem::path Path
Name of entities in a filesystem.
Main namespace for the ROSE library.
boost::shared_ptr< State > StatePtr
Shared-ownership pointer to a semantic state.
void print(const StackVariables &, const Partitioner2::PartitionerConstPtr &, std::ostream &out, const std::string &prefix="")
Print info about multiple local variables.
Sawyer::Container::Map< std::string, SymbolicExpression::Ptr > Evidence
Evidence of satisfiability.
Sawyer::SharedPointer< Node > Ptr
Reference counting pointer.
uint64_t nNodes(InputIterator begin, InputIterator end)
Counts the number of nodes.
Hash hash(const std::vector< Ptr > &)
Hash zero or more expressions.