4 #ifndef ILANG_MCM_TSO_MANUAL_H__
5 #define ILANG_MCM_TSO_MANUAL_H__
61 :
MemoryModel(ctx, _cstrlist, shared_states, private_states,
79 #endif // ILANG_MCM_TSO_MANUAL_H__
TraceStep::TraceStepPtrSet TraceStepPtrSet
Type of trace steps, we need to collect the set of trace steps (WRITE)
Definition: memory_model.h:206
Expr::ExprPtr ExprPtr
Pointer type for normal use of Expr.
Definition: expr.h:138
std::map< std::string, StateNameSet > ILANameStateNameSetMap
Type of map ila-name to state-set.
Definition: memory_model.h:222
virtual void RegisterSteps(size_t regIdx, const InstrVec &_inst_seq) override
The class for trace step (an instance of instruction) As in the unrolling, there may be multiple inst...
Definition: memory_model.h:28
virtual void ApplyAxioms() override
To apply the axioms, the complete program should be given.
Tso(z3::context &ctx, ZExprVec &_cstrlist, const StateNameSet &shared_states, const ILANameStateNameSetMap &private_states, const InstrLvlAbsPtr &global_ila_ptr)
Constructor.
Definition: tso_manual.h:58
std::function< MemoryModelPtr(z3::context &, ZExprVec &, const StateNameSet &, const ILANameStateNameSetMap &, const InstrLvlAbsPtr &)> MemoryModelCreator
Definition: inter_ila_unroller.h:64
z3::context & ctx() const
Return the context (for variable creation)
Definition: memory_model.h:260
TraceStep::ZExprVec ZExprVec
Type for containing a vector of z3::expr.
Definition: memory_model.h:202
Instr::InstrPtr InstrPtr
Pointer type for normal use of Instr.
Definition: instr.h:132
virtual void SetFinalProperty(const ExprPtr &property) override
Set the final property, this is implementation-specific.
InstrPtr inst() const
Return the associated instruction for facet / instruction event.
Class of TSO.
Definition: tso_manual.h:25
TraceStep::TraceStepPtr TraceStepPtr
Type of trace step shared pointers.
Definition: memory_model.h:204
std::vector< InstrPtr > InstrVec
Type of an instruction vector to represent a sequence.
Definition: memory_model.h:214
TsoTraceStep(const InstrPtr &inst, ZExprVec &cstr, z3::context &ctx, size_t pos)
To create a trace step (for inst, we don't need it for facet/init)
InstrLvlAbs::InstrLvlAbsPtr InstrLvlAbsPtr
Pointer type for normal use of InstrLvlAbs.
Definition: instr_lvl_abs.h:326
TraceStep::StateNameSet StateNameSet
Type of set of state names.
Definition: memory_model.h:210
std::shared_ptr< TsoTraceStep > TsoTraceStepPtr
Type of trace step pointer.
Definition: tso_manual.h:28
static InterIlaUnroller::MemoryModelCreator TsoModel
Declaration of memory model creator that chooses Tso.
Definition: tso_manual.h:34
z3::context & ctx()
Return the context (for variable creation)
Definition: memory_model.h:154
std::set< TsoTraceStepPtr > TsoTraceStepPtrSet
Type of trace steps, we need to collect the set of trace steps (WRITE)
Definition: tso_manual.h:30
std::shared_ptr< TraceStep > TraceStepPtr
Type of trace step pointer.
Definition: tso_manual.h:15
The base class for memory models.
Definition: memory_model.h:196
Class of TSO trace step.
Definition: tso_manual.h:12
std::shared_ptr< TraceStep > TraceStepPtr
Type of trace step pointer.
Definition: memory_model.h:38
std::vector< ZExpr > ZExprVec
Type for containing a set of z3::expr.
Definition: memory_model.h:36
virtual void FinishRegisterSteps() override