Started on encoding for CA
This commit is contained in:
43
mc.cc
43
mc.cc
@@ -1,5 +1,47 @@
|
|||||||
#include "mc.hh"
|
#include "mc.hh"
|
||||||
|
|
||||||
|
ModelChecker::ModelChecker(SymRS *srs, Options *opts)
|
||||||
|
{
|
||||||
|
this->srs = srs;
|
||||||
|
this->opts = opts;
|
||||||
|
|
||||||
|
cuddMgr = srs->getCuddMgr();
|
||||||
|
|
||||||
|
if (srs->usingContextAutomaton())
|
||||||
|
initStates = srs->getEncInitStates();
|
||||||
|
|
||||||
|
totalStateVars = srs->getTotalStateVars();
|
||||||
|
|
||||||
|
pv = srs->getEncPV();
|
||||||
|
pv_succ = srs->getEncPVsucc();
|
||||||
|
pv_E = srs->getEncPV_E();
|
||||||
|
pv_succ_E = srs->getEncPVsucc_E();
|
||||||
|
pv_act_E = srs->getEncPVact_E();
|
||||||
|
|
||||||
|
//
|
||||||
|
// Transition relations
|
||||||
|
//
|
||||||
|
// If we use trp, then trm is going to be nullptr (same for trm)
|
||||||
|
//
|
||||||
|
trp = srs->getEncPartTrans();
|
||||||
|
if (trp == nullptr)
|
||||||
|
trp_size = 0;
|
||||||
|
else
|
||||||
|
trp_size = trp->size();
|
||||||
|
trm = srs->getEncMonoTrans();
|
||||||
|
|
||||||
|
if (srs->usingContextAutomaton())
|
||||||
|
{
|
||||||
|
ca_init_state = srs->getEncCA_InitState();
|
||||||
|
pv_ca = srs->getEncCA_PV();
|
||||||
|
pv_ca_succ = srs->getEncCA_PVsucc();
|
||||||
|
ca_tr = srs->getEncCA_Trans();
|
||||||
|
}
|
||||||
|
|
||||||
|
// Initialise the set of reachable states
|
||||||
|
reach = nullptr;
|
||||||
|
}
|
||||||
|
|
||||||
inline BDD ModelChecker::getSucc(const BDD &states)
|
inline BDD ModelChecker::getSucc(const BDD &states)
|
||||||
{
|
{
|
||||||
BDD q = BDD_TRUE;
|
BDD q = BDD_TRUE;
|
||||||
@@ -502,3 +544,4 @@ void ModelChecker::cleanup(void)
|
|||||||
reach = nullptr;
|
reach = nullptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** EOF **/
|
||||||
26
mc.hh
26
mc.hh
@@ -29,6 +29,13 @@ class ModelChecker
|
|||||||
BDD *reach;
|
BDD *reach;
|
||||||
vector<BDD> *trp;
|
vector<BDD> *trp;
|
||||||
BDD *trm;
|
BDD *trm;
|
||||||
|
|
||||||
|
// Context Automaton
|
||||||
|
BDD *ca_init_state;
|
||||||
|
vector<BDD> *pv_ca;
|
||||||
|
vector<BDD> *pv_ca_succ;
|
||||||
|
BDD *ca_tr;
|
||||||
|
|
||||||
unsigned int trp_size;
|
unsigned int trp_size;
|
||||||
unsigned int totalStateVars;
|
unsigned int totalStateVars;
|
||||||
|
|
||||||
@@ -46,24 +53,7 @@ class ModelChecker
|
|||||||
void cleanup(void);
|
void cleanup(void);
|
||||||
|
|
||||||
public:
|
public:
|
||||||
ModelChecker(SymRS *srs, Options *opts)
|
ModelChecker(SymRS *srs, Options *opts);
|
||||||
{
|
|
||||||
this->srs = srs;
|
|
||||||
this->opts = opts;
|
|
||||||
cuddMgr = srs->getCuddMgr();
|
|
||||||
initStates = srs->getEncInitStates();
|
|
||||||
totalStateVars = srs->getTotalStateVars();
|
|
||||||
pv = srs->getEncPV();
|
|
||||||
pv_succ = srs->getEncPVsucc();
|
|
||||||
pv_E = srs->getEncPV_E();
|
|
||||||
pv_succ_E = srs->getEncPVsucc_E();
|
|
||||||
pv_act_E = srs->getEncPVact_E();
|
|
||||||
trp = srs->getEncPartTrans();
|
|
||||||
if (trp == nullptr) trp_size = 0;
|
|
||||||
else trp_size = trp->size();
|
|
||||||
trm = srs->getEncMonoTrans();
|
|
||||||
reach = nullptr;
|
|
||||||
}
|
|
||||||
|
|
||||||
void printReach(void);
|
void printReach(void);
|
||||||
void printReachWithSucc(void);
|
void printReachWithSucc(void);
|
||||||
|
|||||||
20
symrs.cc
20
symrs.cc
@@ -408,4 +408,24 @@ BDD SymRS::encActStrEntity(std::string name) const
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
BDD *SymRS::getEncCA_InitState(void)
|
||||||
|
{
|
||||||
|
return new BDD(BDD_TRUE);
|
||||||
|
}
|
||||||
|
|
||||||
|
vector<BDD> *SymRS::getEncCA_PV(void)
|
||||||
|
{
|
||||||
|
return new vector<BDD>();
|
||||||
|
}
|
||||||
|
|
||||||
|
vector<BDD> *SymRS::getEncCA_PVsucc(void)
|
||||||
|
{
|
||||||
|
return new vector<BDD>();
|
||||||
|
}
|
||||||
|
|
||||||
|
BDD *SymRS::getEncCA_Trans(void)
|
||||||
|
{
|
||||||
|
return new BDD(BDD_TRUE);
|
||||||
|
}
|
||||||
|
|
||||||
/** EOF **/
|
/** EOF **/
|
||||||
|
|||||||
9
symrs.hh
9
symrs.hh
@@ -137,7 +137,16 @@ public:
|
|||||||
BDD encActStrEntity(std::string name) const;
|
BDD encActStrEntity(std::string name) const;
|
||||||
BDD getBDDtrue(void) const { return BDD_TRUE; }
|
BDD getBDDtrue(void) const { return BDD_TRUE; }
|
||||||
BDD getBDDfalse(void) const { return BDD_FALSE; }
|
BDD getBDDfalse(void) const { return BDD_FALSE; }
|
||||||
|
|
||||||
|
bool usingContextAutomaton(void) { return rs->ctx_aut != nullptr; }
|
||||||
|
|
||||||
|
BDD *getEncCA_InitState(void);
|
||||||
|
vector<BDD> *getEncCA_PV(void);
|
||||||
|
vector<BDD> *getEncCA_PVsucc(void);
|
||||||
|
BDD *getEncCA_Trans(void);
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
/** EOF **/
|
||||||
Reference in New Issue
Block a user