Started on encoding for CA

This commit is contained in:
Artur Meski
2018-03-26 13:10:26 +01:00
parent ee441ab390
commit fa587e6f2a
5 changed files with 82 additions and 18 deletions

43
mc.cc
View File

@@ -1,5 +1,47 @@
#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)
{
BDD q = BDD_TRUE;
@@ -502,3 +544,4 @@ void ModelChecker::cleanup(void)
reach = nullptr;
}
/** EOF **/

26
mc.hh
View File

@@ -29,6 +29,13 @@ class ModelChecker
BDD *reach;
vector<BDD> *trp;
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 totalStateVars;
@@ -46,24 +53,7 @@ class ModelChecker
void cleanup(void);
public:
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;
}
ModelChecker(SymRS *srs, Options *opts);
void printReach(void);
void printReachWithSucc(void);

2
rs.hh
View File

@@ -102,3 +102,5 @@ class RctSys
};
#endif
/** EOF **/

View File

@@ -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 **/

View File

@@ -137,7 +137,16 @@ public:
BDD encActStrEntity(std::string name) const;
BDD getBDDtrue(void) const { return BDD_TRUE; }
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
/** EOF **/