7#ifndef BACKENDS_P4TOOLS_MODULES_TESTGEN_CORE_SYMBOLIC_EXECUTOR_SYMBOLIC_EXECUTOR_H_
8#define BACKENDS_P4TOOLS_MODULES_TESTGEN_CORE_SYMBOLIC_EXECUTOR_SYMBOLIC_EXECUTOR_H_
15#include "midend/coverage.h"
17#include "backends/p4tools/modules/testgen/core/program_info.h"
18#include "backends/p4tools/modules/testgen/core/small_step/small_step.h"
19#include "backends/p4tools/modules/testgen/lib/execution_state.h"
20#include "backends/p4tools/modules/testgen/lib/final_state.h"
22namespace P4::P4Tools::P4Testgen {
27class SymbolicExecutor {
29 virtual ~SymbolicExecutor() =
default;
31 SymbolicExecutor(
const SymbolicExecutor &) =
default;
33 SymbolicExecutor(SymbolicExecutor &&) =
delete;
35 SymbolicExecutor &operator=(
const SymbolicExecutor &) =
delete;
37 SymbolicExecutor &operator=(SymbolicExecutor &&) =
delete;
46 using StepResult = SmallStepEvaluator::Result;
53 virtual void runImpl(
const Callback &callBack, ExecutionStateReference executionState) = 0;
96 std::vector<SymbolicExecutor::Branch> &candidateBranches);
Provides a higher-level interface for an SMT solver.
Definition solver.h:30
std::set< const IR::Node *, SourceIdCmp > CoverageSet
Definition coverage.h:47
Definition phv/solver/action_constraint_solver.cpp:33