Optimisations
This commit is contained in:
@@ -2,9 +2,9 @@
|
||||
|
||||
TMPINPUT="tmp_$RANDOM$RANDOM.rs"
|
||||
|
||||
CMD="./reactics -z -b -B"
|
||||
CMD="./reactics -zxbB"
|
||||
|
||||
for i in `seq 2 20`;do
|
||||
for i in `seq 2 9`;do
|
||||
|
||||
echo "[i] n=$i; generating input file"
|
||||
in/gen_drs_mutex.py $i > $TMPINPUT
|
||||
|
||||
@@ -40,8 +40,8 @@
|
||||
#define RSCTLK_AF_ACT 44
|
||||
#define RSCTLK_TF 50 // true/false
|
||||
|
||||
#define RSCTLK_UK 60 // Epistemic operators
|
||||
#define RSCTLK_NK 61
|
||||
#define RSCTLK_NK 61 // Epistemic operators
|
||||
#define RSCTLK_UK 71
|
||||
|
||||
/* For Boolean contexts: */
|
||||
#define BCTX_PV 80
|
||||
@@ -57,7 +57,7 @@
|
||||
#define RSCTLK_COND_ACT(a) ((a) > 30 && (a) < 45)
|
||||
#define RSCTLK_IS_VALID(a) (RSCTLK_COND_1ARG(a) || RSCTLK_COND_2ARG(a) || (a) == RSCTLK_PV || (a) == RSCTLK_TF)
|
||||
|
||||
#define RSCTLK_COND_IS_UNIVERSAL(a) (((a) > 20 && (a) < 25) || ((a) > 40 && (a) < 45))
|
||||
#define RSCTLK_COND_IS_UNIVERSAL(a) (((a) > 20 && (a) < 25) || ((a) > 40 && (a) < 45) || ((a) > 70 && (a) < 75))
|
||||
|
||||
#define BCTX_COND_1ARG(a) ((a) == BCTX_NOT)
|
||||
#define BCTX_COND_2ARG(a) ((a) == BCTX_AND || (a) == BCTX_OR || (a) == BCTX_XOR)
|
||||
|
||||
13
mc.cc
13
mc.cc
@@ -75,6 +75,7 @@ inline BDD ModelChecker::getSucc(const BDD &states)
|
||||
if (opts->part_tr_rel) {
|
||||
for (const auto &trans : *trp) {
|
||||
q *= states * trans;
|
||||
reorder();
|
||||
}
|
||||
}
|
||||
else {
|
||||
@@ -101,6 +102,7 @@ inline BDD ModelChecker::getPreE(const BDD &states)
|
||||
if (opts->part_tr_rel) {
|
||||
for (const auto &trans : *trp) {
|
||||
q *= x * trans;
|
||||
reorder();
|
||||
}
|
||||
}
|
||||
else {
|
||||
@@ -123,6 +125,7 @@ inline BDD ModelChecker::getPreEctx(const BDD &states, const BDD *contexts)
|
||||
if (opts->part_tr_rel) {
|
||||
for (const auto &trans : *trp) {
|
||||
q *= x * trans;
|
||||
reorder();
|
||||
}
|
||||
q *= *contexts;
|
||||
}
|
||||
@@ -619,6 +622,16 @@ bool ModelChecker::checkRSCTLKbmc(FormRSCTLK *form)
|
||||
return result;
|
||||
}
|
||||
|
||||
void ModelChecker::reorder(void)
|
||||
{
|
||||
if (opts->reorder_trans) {
|
||||
VERB_L2("Reordering START");
|
||||
// Cudd_ReduceHeap(cuddMgr->getManager(), CUDD_REORDER_SIFT, 100000);
|
||||
cuddMgr->ReduceHeap(CUDD_REORDER_GROUP_SIFT);
|
||||
VERB_L2("Reordering DONE");
|
||||
}
|
||||
}
|
||||
|
||||
void ModelChecker::cleanup(void)
|
||||
{
|
||||
delete reach;
|
||||
|
||||
2
mc.hh
2
mc.hh
@@ -66,6 +66,8 @@ class ModelChecker
|
||||
|
||||
void cleanup(void);
|
||||
|
||||
void reorder(void);
|
||||
|
||||
public:
|
||||
ModelChecker(SymRS *srs, Options *opts);
|
||||
|
||||
|
||||
3
symrs.cc
3
symrs.cc
@@ -946,7 +946,8 @@ void SymRS::reorder(void)
|
||||
{
|
||||
if (opts->reorder_trans) {
|
||||
VERB_L2("Reordering START");
|
||||
Cudd_ReduceHeap(cuddMgr->getManager(), CUDD_REORDER_SIFT, 10000);
|
||||
// Cudd_ReduceHeap(cuddMgr->getManager(), CUDD_REORDER_SIFT, 10000);
|
||||
cuddMgr->ReduceHeap(CUDD_REORDER_GROUP_SIFT);
|
||||
VERB_L2("Reordering DONE");
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user