1#ifndef BACKENDS_P4TOOLS_MODULES_TESTGEN_LIB_CONCOLIC_H_
2#define BACKENDS_P4TOOLS_MODULES_TESTGEN_LIB_CONCOLIC_H_
13#include "backends/p4tools/common/lib/model.h"
16#include "ir/visitor.h"
17#include "lib/cstring.h"
18#include "lib/ordered_map.h"
20#include "backends/p4tools/modules/testgen/lib/execution_state.h"
22namespace P4::P4Tools::P4Testgen {
29using ConcolicVariableMap =
30 ordered_map<std::variant<IR::ConcolicVariable, const IR::Expression *>,
const IR::Expression *>;
35 using MethodImpl = std::function<void(
42 static bool matches(
const std::vector<cstring> ¶mNames,
46 using ImplList = std::list<std::tuple<cstring, std::vector<cstring>, MethodImpl>>;
50 bool exec(
cstring concolicMethodName,
const IR::ConcolicVariable *var,
54 void add(
const ImplList &implList);
69 bool preorder(
const IR::ConcolicVariable *var)
override;
75 const Model &evaluatedModel;
88 static const ConcolicMethodImpls::ImplList *getCoreConcolicMethodImpls();