twaalgos: Set 'dicho' algo as default for SAT-based minimization

* python/spot/__init__.py: Handle options.
* spot/twaalgos/dtwasat.cc: Handle options.
* spot/twaalgos/postproc.cc: Handle options.
* spot/twaalgos/postproc.hh: Handle options.
* tests/core/satmin.test: Update tests.
Now use 'sat-minimize=4' to use the naive algo.
* tests/core/satmin2.test: Update tests.
Now use --sat-minimize='naive' to use the naive algo.
* tests/python/satmin.py: Update tests.
Now use 'naive=True' to use the naive algo.
This commit is contained in:
Alexandre GBAGUIDI AISSE 2016-12-20 12:08:32 +01:00
parent 67e3a4f28e
commit ef2355a542
7 changed files with 365 additions and 376 deletions

View file

@ -858,8 +858,8 @@ for fun in ['remove_x', 'relabel', 'relabel_bse',
# Better interface to the corresponding C++ function. # Better interface to the corresponding C++ function.
def sat_minimize(aut, acc=None, colored=False, def sat_minimize(aut, acc=None, colored=False,
state_based=False, states=0, state_based=False, states=0,
max_states=0, dicho=False, max_states=0, sat_naive=False, sat_langmap=False,
param=0, incr=False, assume=False): sat_incr=0, sat_incr_steps=0):
args='' args=''
if acc is not None: if acc is not None:
if type(acc) is not str: if type(acc) is not str:
@ -875,14 +875,14 @@ def sat_minimize(aut, acc=None, colored=False,
if type(max_states) is not int or max_states < 0: if type(max_states) is not int or max_states < 0:
raise ValueError("argument 'states' should be a positive integer") raise ValueError("argument 'states' should be a positive integer")
args += ',max-states=' + str(max_states) args += ',max-states=' + str(max_states)
if dicho: if sat_naive:
args += ',dicho'; args += ',sat-naive'
if param: if sat_langmap:
args += ',param=' + str(param) args += ',sat-langmap'
if incr: if sat_incr:
args += ',incr' args += ',sat-incr=' + str(sat_incr)
if assume: args += ',sat-incr-steps=' + str(sat_incr_steps)
args += ',assume'
from spot.impl import sat_minimize as sm from spot.impl import sat_minimize as sm
return sm(aut, args, state_based) return sm(aut, args, state_based)

View file

@ -1391,17 +1391,23 @@ namespace spot
throw std::runtime_error throw std::runtime_error
("SAT-based minimization only works with deterministic automata"); ("SAT-based minimization only works with deterministic automata");
bool incr = om.get("incr", 0); int sat_incr = om.get("sat-incr", 0);
bool assume = om.get("assume", 0); int sat_incr_steps = om.get("sat-incr-steps", 0);
int param = om.get("param", 0); bool sat_naive = om.get("sat-naive", 0);
bool dicho = om.get("dicho", 0); bool sat_langmap = om.get("sat-langmap", 0);
bool dicho_langmap = om.get("langmap", 0);
int states = om.get("states", -1); int states = om.get("states", -1);
int max_states = om.get("max-states", -1); int max_states = om.get("max-states", -1);
auto accstr = om.get_str("acc"); auto accstr = om.get_str("acc");
bool colored = om.get("colored", 0); bool colored = om.get("colored", 0);
int preproc = om.get("preproc", 3); int preproc = om.get("preproc", 3);
// Set default sat-incr-steps value if not provided and used.
if (sat_incr == 1 && !sat_incr_steps) // Assume
sat_incr_steps = 6;
else if (sat_incr == 2 && !sat_incr_steps) // Incremental
sat_incr_steps = 2;
// No more om.get() below this. // No more om.get() below this.
om.report_unused_options(); om.report_unused_options();
@ -1494,36 +1500,39 @@ namespace spot
auto orig = a; auto orig = a;
if (!target_is_buchi || !a->acc().is_buchi() || colored) if (!target_is_buchi || !a->acc().is_buchi() || colored)
{ {
if (incr) if (sat_naive)
a = dtwa_sat_minimize_incr(a, nacc, target_acc, state_based,
max_states, colored, param);
else if (assume)
a = dtwa_sat_minimize_assume(a, nacc, target_acc, state_based,
max_states, colored, param);
else if (dicho)
a = dtwa_sat_minimize_dichotomy
(a, nacc, target_acc, state_based, dicho_langmap, max_states,
colored);
else
a = dtwa_sat_minimize a = dtwa_sat_minimize
(a, nacc, target_acc, state_based, max_states, colored); (a, nacc, target_acc, state_based, max_states, colored);
else if (sat_incr == 1)
a = dtwa_sat_minimize_assume(a, nacc, target_acc, state_based,
max_states, colored, sat_incr_steps);
else if (sat_incr == 2)
a = dtwa_sat_minimize_incr(a, nacc, target_acc, state_based,
max_states, colored, sat_incr_steps);
else
a = dtwa_sat_minimize_dichotomy
(a, nacc, target_acc, state_based, sat_langmap, max_states,
colored);
} }
else else
{ {
if (incr) if (sat_naive)
a = dtba_sat_minimize_incr(a, state_based, max_states, param); a = dtba_sat_minimize(a, state_based, max_states);
else if (assume) else if (sat_incr == 1)
a = dtba_sat_minimize_assume(a, state_based, max_states, assume); a = dtba_sat_minimize_assume(a, state_based, max_states,
sat_incr_steps);
else if (dicho) else if (sat_incr == 2)
a = dtba_sat_minimize_dichotomy a = dtba_sat_minimize_incr(a, state_based, max_states,
(a, state_based, dicho_langmap, max_states); sat_incr_steps);
else else
a = dtba_sat_minimize(a, state_based, max_states); a = dtba_sat_minimize_dichotomy
(a, state_based, sat_langmap, max_states);
} }
if (!a && !user_supplied_acc) if (!a && !user_supplied_acc)

View file

@ -70,15 +70,15 @@ namespace spot
ba_simul_ = opt->get("ba-simul", -1); ba_simul_ = opt->get("ba-simul", -1);
tba_determinisation_ = opt->get("tba-det", 0); tba_determinisation_ = opt->get("tba-det", 0);
sat_minimize_ = opt->get("sat-minimize", 0); sat_minimize_ = opt->get("sat-minimize", 0);
param_ = opt->get("param", 0); sat_incr_steps_ = opt->get("sat-incr-steps", -2); // -2 or any num < -1
dicho_langmap_ = opt->get("langmap", 0); sat_langmap_ = opt->get("sat-langmap", 0);
sat_acc_ = opt->get("sat-acc", 0); sat_acc_ = opt->get("sat-acc", 0);
sat_states_ = opt->get("sat-states", 0); sat_states_ = opt->get("sat-states", 0);
state_based_ = opt->get("state-based", 0); state_based_ = opt->get("state-based", 0);
wdba_minimize_ = opt->get("wdba-minimize", 1); wdba_minimize_ = opt->get("wdba-minimize", 1);
if (sat_acc_ && sat_minimize_ == 0) if (sat_acc_ && sat_minimize_ == 0)
sat_minimize_ = 1; // 2? sat_minimize_ = 1; // Dicho.
if (sat_states_ && sat_minimize_ == 0) if (sat_states_ && sat_minimize_ == 0)
sat_minimize_ = 1; sat_minimize_ = 1;
if (sat_minimize_) if (sat_minimize_)
@ -89,6 +89,12 @@ namespace spot
if (sat_states_ <= 0) if (sat_states_ <= 0)
sat_states_ = -1; sat_states_ = -1;
} }
// Set default param value if not provided and used.
if (sat_minimize_ == 2 && sat_incr_steps_ < 0) // Assume algorithm.
sat_incr_steps_ = 6;
else if (sat_minimize_ == 3 && sat_incr_steps_ < -1) // Incr algorithm.
sat_incr_steps_ = 2;
} }
} }
@ -427,15 +433,17 @@ namespace spot
{ {
if (sat_states_ != -1) if (sat_states_ != -1)
res = dtba_sat_synthetize(res, sat_states_, state_based_); res = dtba_sat_synthetize(res, sat_states_, state_based_);
else if (sat_minimize_ == 1 || sat_minimize_ == -1) else if (sat_minimize_ == 1)
res = dtba_sat_minimize(res, state_based_);
else if (sat_minimize_ == 2)
res = dtba_sat_minimize_dichotomy res = dtba_sat_minimize_dichotomy
(res, state_based_, dicho_langmap_); (res, state_based_, sat_langmap_);
else if (sat_minimize_ == 2)
res = dtba_sat_minimize_assume(res, state_based_, -1,
sat_incr_steps_);
else if (sat_minimize_ == 3) else if (sat_minimize_ == 3)
res = dtba_sat_minimize_incr(res, state_based_, -1, param_); res = dtba_sat_minimize_incr(res, state_based_, -1,
else // if (sat_minimize == 4) sat_incr_steps_);
res = dtba_sat_minimize_assume(res, state_based_, -1, param_); else // if (sat_minimize == 4 || sat_minimize == -1)
res = dtba_sat_minimize(res, state_based_);
} }
else else
{ {
@ -444,26 +452,26 @@ namespace spot
(res, target_acc, (res, target_acc,
acc_cond::acc_code::generalized_buchi(target_acc), acc_cond::acc_code::generalized_buchi(target_acc),
sat_states_, state_based_); sat_states_, state_based_);
else if (sat_minimize_ == 1 || sat_minimize_ == -1) else if (sat_minimize_ == 1)
res = dtwa_sat_minimize
(res, target_acc,
acc_cond::acc_code::generalized_buchi(target_acc),
state_based_);
else if (sat_minimize_ == 2)
res = dtwa_sat_minimize_dichotomy res = dtwa_sat_minimize_dichotomy
(res, target_acc, (res, target_acc,
acc_cond::acc_code::generalized_buchi(target_acc), acc_cond::acc_code::generalized_buchi(target_acc),
state_based_, dicho_langmap_); state_based_, sat_langmap_);
else if (sat_minimize_ == 2)
res = dtwa_sat_minimize_assume
(res, target_acc,
acc_cond::acc_code::generalized_buchi(target_acc),
state_based_, -1, false, sat_incr_steps_);
else if (sat_minimize_ == 3) else if (sat_minimize_ == 3)
res = dtwa_sat_minimize_incr res = dtwa_sat_minimize_incr
(res, target_acc, (res, target_acc,
acc_cond::acc_code::generalized_buchi(target_acc), acc_cond::acc_code::generalized_buchi(target_acc),
state_based_, -1, false, param_); state_based_, -1, false, sat_incr_steps_);
else // if (sat_minimize_ == 4) else // if (sat_minimize_ == 4 || sat_minimize_ == -1)
res = dtwa_sat_minimize_assume res = dtwa_sat_minimize
(res, target_acc, (res, target_acc,
acc_cond::acc_code::generalized_buchi(target_acc), acc_cond::acc_code::generalized_buchi(target_acc),
state_based_, -1, false, param_); state_based_);
} }
if (res) if (res)

View file

@ -189,8 +189,8 @@ namespace spot
int ba_simul_ = -1; int ba_simul_ = -1;
bool tba_determinisation_ = false; bool tba_determinisation_ = false;
int sat_minimize_ = 0; int sat_minimize_ = 0;
int param_ = 0; int sat_incr_steps_ = 0;
bool dicho_langmap_ = false; bool sat_langmap_ = false;
int sat_acc_ = 0; int sat_acc_ = 0;
int sat_states_ = 0; int sat_states_ = 0;
bool state_based_ = false; bool state_based_ = false;

View file

@ -102,18 +102,17 @@ $ltlcross -F formulas \
"{4} $ltl2tgba --det --lbtt -x sat-acc=3 %f >%T" \ "{4} $ltl2tgba --det --lbtt -x sat-acc=3 %f >%T" \
"{5} $ltl2tgba --det --lbtt -x sat-states=3 %f >%T" \ "{5} $ltl2tgba --det --lbtt -x sat-states=3 %f >%T" \
"{6} $ltl2tgba --det --lbtt -x sat-minimize %f >%T" \ "{6} $ltl2tgba --det --lbtt -x sat-minimize %f >%T" \
"{7} $ltl2tgba --det --lbtt -x sat-minimize=2 %f >%T" \ "{7} $ltl2tgba --det --lbtt -x 'sat-minimize, sat-langmap' %f >%T" \
"{8} $ltl2tgba --det --lbtt -x 'sat-minimize=2,langmap' %f >%T" \ "{8} $ltl2tgba --det --lbtt -x 'sat-minimize=2, sat-incr-steps=0' %f >%T" \
"{9} $ltl2tgba --det --lbtt -x sat-minimize=3 %f >%T" \ "{9} $ltl2tgba --det --lbtt -x 'sat-minimize=2, sat-incr-steps=1' %f >%T" \
"{10} $ltl2tgba --det --lbtt -x 'sat-minimize=3, param=-1' %f >%T" \ "{10} $ltl2tgba --det --lbtt -x 'sat-minimize=2, sat-incr-steps=2' %f >%T" \
"{11} $ltl2tgba --det --lbtt -x 'sat-minimize=3, param=0' %f >%T" \ "{11} $ltl2tgba --det --lbtt -x 'sat-minimize=2, sat-incr-steps=50' %f >%T" \
"{12} $ltl2tgba --det --lbtt -x 'sat-minimize=3, param=1' %f >%T" \ "{12} $ltl2tgba --det --lbtt -x 'sat-minimize=3, sat-incr-steps=-1' %f >%T" \
"{13} $ltl2tgba --det --lbtt -x 'sat-minimize=3, param=2' %f >%T" \ "{13} $ltl2tgba --det --lbtt -x 'sat-minimize=3, sat-incr-steps=0' %f >%T" \
"{14} $ltl2tgba --det --lbtt -x 'sat-minimize=3, param=50' %f >%T" \ "{14} $ltl2tgba --det --lbtt -x 'sat-minimize=3, sat-incr-steps=1' %f >%T" \
"{15} $ltl2tgba --det --lbtt -x 'sat-minimize=4, param=0' %f >%T" \ "{15} $ltl2tgba --det --lbtt -x 'sat-minimize=3, sat-incr-steps=2' %f >%T" \
"{16} $ltl2tgba --det --lbtt -x 'sat-minimize=4, param=1' %f >%T" \ "{16} $ltl2tgba --det --lbtt -x 'sat-minimize=3, sat-incr-steps=50' %f >%T" \
"{17} $ltl2tgba --det --lbtt -x 'sat-minimize=4, param=2' %f >%T" \ "{17} $ltl2tgba --det --lbtt -x sat-minimize=4 %f >%T" \
"{18} $ltl2tgba --det --lbtt -x 'sat-minimize=4, param=50' %f >%T" \
--csv=det.csv --csv=det.csv
grep -v ',\"5\",' det.csv | cut -d ',' -f '1,2,6' > output grep -v ',\"5\",' det.csv | cut -d ',' -f '1,2,6' > output
@ -136,7 +135,6 @@ cat >expected <<'EOF'
"X(X(p0))","15",4 "X(X(p0))","15",4
"X(X(p0))","16",4 "X(X(p0))","16",4
"X(X(p0))","17",4 "X(X(p0))","17",4
"X(X(p0))","18",4
"!(X(X(p0)))","1",4 "!(X(X(p0)))","1",4
"!(X(X(p0)))","2",4 "!(X(X(p0)))","2",4
"!(X(X(p0)))","3",4 "!(X(X(p0)))","3",4
@ -153,7 +151,6 @@ cat >expected <<'EOF'
"!(X(X(p0)))","15",4 "!(X(X(p0)))","15",4
"!(X(X(p0)))","16",4 "!(X(X(p0)))","16",4
"!(X(X(p0)))","17",4 "!(X(X(p0)))","17",4
"!(X(X(p0)))","18",4
"G(F((p0) -> (X(X(X(p1))))))","1",1 "G(F((p0) -> (X(X(X(p1))))))","1",1
"G(F((p0) -> (X(X(X(p1))))))","2",1 "G(F((p0) -> (X(X(X(p1))))))","2",1
"G(F((p0) -> (X(X(X(p1))))))","3",1 "G(F((p0) -> (X(X(X(p1))))))","3",1
@ -170,7 +167,6 @@ cat >expected <<'EOF'
"G(F((p0) -> (X(X(X(p1))))))","15",1 "G(F((p0) -> (X(X(X(p1))))))","15",1
"G(F((p0) -> (X(X(X(p1))))))","16",1 "G(F((p0) -> (X(X(X(p1))))))","16",1
"G(F((p0) -> (X(X(X(p1))))))","17",1 "G(F((p0) -> (X(X(X(p1))))))","17",1
"G(F((p0) -> (X(X(X(p1))))))","18",1
"!(G(F((p0) -> (X(X(X(p1)))))))","1",2 "!(G(F((p0) -> (X(X(X(p1)))))))","1",2
"!(G(F((p0) -> (X(X(X(p1)))))))","2",2 "!(G(F((p0) -> (X(X(X(p1)))))))","2",2
"!(G(F((p0) -> (X(X(X(p1)))))))","3",2 "!(G(F((p0) -> (X(X(X(p1)))))))","3",2
@ -187,7 +183,6 @@ cat >expected <<'EOF'
"!(G(F((p0) -> (X(X(X(p1)))))))","15",2 "!(G(F((p0) -> (X(X(X(p1)))))))","15",2
"!(G(F((p0) -> (X(X(X(p1)))))))","16",2 "!(G(F((p0) -> (X(X(X(p1)))))))","16",2
"!(G(F((p0) -> (X(X(X(p1)))))))","17",2 "!(G(F((p0) -> (X(X(X(p1)))))))","17",2
"!(G(F((p0) -> (X(X(X(p1)))))))","18",2
"F((p0) & (X(F((p1) & (X(F((p2) & (X(F(p3))))))))))","1",5 "F((p0) & (X(F((p1) & (X(F((p2) & (X(F(p3))))))))))","1",5
"F((p0) & (X(F((p1) & (X(F((p2) & (X(F(p3))))))))))","2",5 "F((p0) & (X(F((p1) & (X(F((p2) & (X(F(p3))))))))))","2",5
"F((p0) & (X(F((p1) & (X(F((p2) & (X(F(p3))))))))))","3",5 "F((p0) & (X(F((p1) & (X(F((p2) & (X(F(p3))))))))))","3",5
@ -204,7 +199,6 @@ cat >expected <<'EOF'
"F((p0) & (X(F((p1) & (X(F((p2) & (X(F(p3))))))))))","15",5 "F((p0) & (X(F((p1) & (X(F((p2) & (X(F(p3))))))))))","15",5
"F((p0) & (X(F((p1) & (X(F((p2) & (X(F(p3))))))))))","16",5 "F((p0) & (X(F((p1) & (X(F((p2) & (X(F(p3))))))))))","16",5
"F((p0) & (X(F((p1) & (X(F((p2) & (X(F(p3))))))))))","17",5 "F((p0) & (X(F((p1) & (X(F((p2) & (X(F(p3))))))))))","17",5
"F((p0) & (X(F((p1) & (X(F((p2) & (X(F(p3))))))))))","18",5
"!(F((p0) & (X(F((p1) & (X(F((p2) & (X(F(p3)))))))))))","1",4 "!(F((p0) & (X(F((p1) & (X(F((p2) & (X(F(p3)))))))))))","1",4
"!(F((p0) & (X(F((p1) & (X(F((p2) & (X(F(p3)))))))))))","2",4 "!(F((p0) & (X(F((p1) & (X(F((p2) & (X(F(p3)))))))))))","2",4
"!(F((p0) & (X(F((p1) & (X(F((p2) & (X(F(p3)))))))))))","3",4 "!(F((p0) & (X(F((p1) & (X(F((p2) & (X(F(p3)))))))))))","3",4
@ -221,7 +215,6 @@ cat >expected <<'EOF'
"!(F((p0) & (X(F((p1) & (X(F((p2) & (X(F(p3)))))))))))","15",4 "!(F((p0) & (X(F((p1) & (X(F((p2) & (X(F(p3)))))))))))","15",4
"!(F((p0) & (X(F((p1) & (X(F((p2) & (X(F(p3)))))))))))","16",4 "!(F((p0) & (X(F((p1) & (X(F((p2) & (X(F(p3)))))))))))","16",4
"!(F((p0) & (X(F((p1) & (X(F((p2) & (X(F(p3)))))))))))","17",4 "!(F((p0) & (X(F((p1) & (X(F((p2) & (X(F(p3)))))))))))","17",4
"!(F((p0) & (X(F((p1) & (X(F((p2) & (X(F(p3)))))))))))","18",4
"F((p0) & (X((p1) U (p2))))","1",3 "F((p0) & (X((p1) U (p2))))","1",3
"F((p0) & (X((p1) U (p2))))","2",3 "F((p0) & (X((p1) U (p2))))","2",3
"F((p0) & (X((p1) U (p2))))","3",3 "F((p0) & (X((p1) U (p2))))","3",3
@ -238,7 +231,6 @@ cat >expected <<'EOF'
"F((p0) & (X((p1) U (p2))))","15",3 "F((p0) & (X((p1) U (p2))))","15",3
"F((p0) & (X((p1) U (p2))))","16",3 "F((p0) & (X((p1) U (p2))))","16",3
"F((p0) & (X((p1) U (p2))))","17",3 "F((p0) & (X((p1) U (p2))))","17",3
"F((p0) & (X((p1) U (p2))))","18",3
"!(F((p0) & (X((p1) U (p2)))))","1",2 "!(F((p0) & (X((p1) U (p2)))))","1",2
"!(F((p0) & (X((p1) U (p2)))))","2",2 "!(F((p0) & (X((p1) U (p2)))))","2",2
"!(F((p0) & (X((p1) U (p2)))))","3",2 "!(F((p0) & (X((p1) U (p2)))))","3",2
@ -255,7 +247,6 @@ cat >expected <<'EOF'
"!(F((p0) & (X((p1) U (p2)))))","15",2 "!(F((p0) & (X((p1) U (p2)))))","15",2
"!(F((p0) & (X((p1) U (p2)))))","16",2 "!(F((p0) & (X((p1) U (p2)))))","16",2
"!(F((p0) & (X((p1) U (p2)))))","17",2 "!(F((p0) & (X((p1) U (p2)))))","17",2
"!(F((p0) & (X((p1) U (p2)))))","18",2
"F((p0) & (X((p1) & (X(F(p2))))))","1",4 "F((p0) & (X((p1) & (X(F(p2))))))","1",4
"F((p0) & (X((p1) & (X(F(p2))))))","2",4 "F((p0) & (X((p1) & (X(F(p2))))))","2",4
"F((p0) & (X((p1) & (X(F(p2))))))","3",4 "F((p0) & (X((p1) & (X(F(p2))))))","3",4
@ -272,7 +263,6 @@ cat >expected <<'EOF'
"F((p0) & (X((p1) & (X(F(p2))))))","15",4 "F((p0) & (X((p1) & (X(F(p2))))))","15",4
"F((p0) & (X((p1) & (X(F(p2))))))","16",4 "F((p0) & (X((p1) & (X(F(p2))))))","16",4
"F((p0) & (X((p1) & (X(F(p2))))))","17",4 "F((p0) & (X((p1) & (X(F(p2))))))","17",4
"F((p0) & (X((p1) & (X(F(p2))))))","18",4
"!(F((p0) & (X((p1) & (X(F(p2)))))))","1",3 "!(F((p0) & (X((p1) & (X(F(p2)))))))","1",3
"!(F((p0) & (X((p1) & (X(F(p2)))))))","2",3 "!(F((p0) & (X((p1) & (X(F(p2)))))))","2",3
"!(F((p0) & (X((p1) & (X(F(p2)))))))","3",3 "!(F((p0) & (X((p1) & (X(F(p2)))))))","3",3
@ -289,7 +279,6 @@ cat >expected <<'EOF'
"!(F((p0) & (X((p1) & (X(F(p2)))))))","15",3 "!(F((p0) & (X((p1) & (X(F(p2)))))))","15",3
"!(F((p0) & (X((p1) & (X(F(p2)))))))","16",3 "!(F((p0) & (X((p1) & (X(F(p2)))))))","16",3
"!(F((p0) & (X((p1) & (X(F(p2)))))))","17",3 "!(F((p0) & (X((p1) & (X(F(p2)))))))","17",3
"!(F((p0) & (X((p1) & (X(F(p2)))))))","18",3
"(p0) U ((p1) & (X((p2) U (p3))))","1",4 "(p0) U ((p1) & (X((p2) U (p3))))","1",4
"(p0) U ((p1) & (X((p2) U (p3))))","2",4 "(p0) U ((p1) & (X((p2) U (p3))))","2",4
"(p0) U ((p1) & (X((p2) U (p3))))","3",4 "(p0) U ((p1) & (X((p2) U (p3))))","3",4
@ -306,7 +295,6 @@ cat >expected <<'EOF'
"(p0) U ((p1) & (X((p2) U (p3))))","15",4 "(p0) U ((p1) & (X((p2) U (p3))))","15",4
"(p0) U ((p1) & (X((p2) U (p3))))","16",4 "(p0) U ((p1) & (X((p2) U (p3))))","16",4
"(p0) U ((p1) & (X((p2) U (p3))))","17",4 "(p0) U ((p1) & (X((p2) U (p3))))","17",4
"(p0) U ((p1) & (X((p2) U (p3))))","18",4
"!((p0) U ((p1) & (X((p2) U (p3)))))","1",4 "!((p0) U ((p1) & (X((p2) U (p3)))))","1",4
"!((p0) U ((p1) & (X((p2) U (p3)))))","2",4 "!((p0) U ((p1) & (X((p2) U (p3)))))","2",4
"!((p0) U ((p1) & (X((p2) U (p3)))))","3",4 "!((p0) U ((p1) & (X((p2) U (p3)))))","3",4
@ -323,7 +311,6 @@ cat >expected <<'EOF'
"!((p0) U ((p1) & (X((p2) U (p3)))))","15",4 "!((p0) U ((p1) & (X((p2) U (p3)))))","15",4
"!((p0) U ((p1) & (X((p2) U (p3)))))","16",4 "!((p0) U ((p1) & (X((p2) U (p3)))))","16",4
"!((p0) U ((p1) & (X((p2) U (p3)))))","17",4 "!((p0) U ((p1) & (X((p2) U (p3)))))","17",4
"!((p0) U ((p1) & (X((p2) U (p3)))))","18",4
"(G((p0) -> (F(p1)))) & (G((p2) -> (F(p3))))","1",4 "(G((p0) -> (F(p1)))) & (G((p2) -> (F(p3))))","1",4
"(G((p0) -> (F(p1)))) & (G((p2) -> (F(p3))))","2",4 "(G((p0) -> (F(p1)))) & (G((p2) -> (F(p3))))","2",4
"(G((p0) -> (F(p1)))) & (G((p2) -> (F(p3))))","3",4 "(G((p0) -> (F(p1)))) & (G((p2) -> (F(p3))))","3",4
@ -340,7 +327,6 @@ cat >expected <<'EOF'
"(G((p0) -> (F(p1)))) & (G((p2) -> (F(p3))))","15",4 "(G((p0) -> (F(p1)))) & (G((p2) -> (F(p3))))","15",4
"(G((p0) -> (F(p1)))) & (G((p2) -> (F(p3))))","16",4 "(G((p0) -> (F(p1)))) & (G((p2) -> (F(p3))))","16",4
"(G((p0) -> (F(p1)))) & (G((p2) -> (F(p3))))","17",4 "(G((p0) -> (F(p1)))) & (G((p2) -> (F(p3))))","17",4
"(G((p0) -> (F(p1)))) & (G((p2) -> (F(p3))))","18",4
"!((G((p0) -> (F(p1)))) & (G((p2) -> (F(p3)))))","1",3 "!((G((p0) -> (F(p1)))) & (G((p2) -> (F(p3)))))","1",3
"!((G((p0) -> (F(p1)))) & (G((p2) -> (F(p3)))))","2",3 "!((G((p0) -> (F(p1)))) & (G((p2) -> (F(p3)))))","2",3
"!((G((p0) -> (F(p1)))) & (G((p2) -> (F(p3)))))","3",3 "!((G((p0) -> (F(p1)))) & (G((p2) -> (F(p3)))))","3",3
@ -357,7 +343,6 @@ cat >expected <<'EOF'
"!((G((p0) -> (F(p1)))) & (G((p2) -> (F(p3)))))","15",3 "!((G((p0) -> (F(p1)))) & (G((p2) -> (F(p3)))))","15",3
"!((G((p0) -> (F(p1)))) & (G((p2) -> (F(p3)))))","16",3 "!((G((p0) -> (F(p1)))) & (G((p2) -> (F(p3)))))","16",3
"!((G((p0) -> (F(p1)))) & (G((p2) -> (F(p3)))))","17",3 "!((G((p0) -> (F(p1)))) & (G((p2) -> (F(p3)))))","17",3
"!((G((p0) -> (F(p1)))) & (G((p2) -> (F(p3)))))","18",3
"(G(F(p0))) & (G(F(p1)))","1",1 "(G(F(p0))) & (G(F(p1)))","1",1
"(G(F(p0))) & (G(F(p1)))","2",1 "(G(F(p0))) & (G(F(p1)))","2",1
"(G(F(p0))) & (G(F(p1)))","3",1 "(G(F(p0))) & (G(F(p1)))","3",1
@ -374,7 +359,6 @@ cat >expected <<'EOF'
"(G(F(p0))) & (G(F(p1)))","15",1 "(G(F(p0))) & (G(F(p1)))","15",1
"(G(F(p0))) & (G(F(p1)))","16",1 "(G(F(p0))) & (G(F(p1)))","16",1
"(G(F(p0))) & (G(F(p1)))","17",1 "(G(F(p0))) & (G(F(p1)))","17",1
"(G(F(p0))) & (G(F(p1)))","18",1
"!((G(F(p0))) & (G(F(p1))))","1",3 "!((G(F(p0))) & (G(F(p1))))","1",3
"!((G(F(p0))) & (G(F(p1))))","2",3 "!((G(F(p0))) & (G(F(p1))))","2",3
"!((G(F(p0))) & (G(F(p1))))","3",3 "!((G(F(p0))) & (G(F(p1))))","3",3
@ -391,7 +375,6 @@ cat >expected <<'EOF'
"!((G(F(p0))) & (G(F(p1))))","15",3 "!((G(F(p0))) & (G(F(p1))))","15",3
"!((G(F(p0))) & (G(F(p1))))","16",3 "!((G(F(p0))) & (G(F(p1))))","16",3
"!((G(F(p0))) & (G(F(p1))))","17",3 "!((G(F(p0))) & (G(F(p1))))","17",3
"!((G(F(p0))) & (G(F(p1))))","18",3
"(G(F(p0))) | (G(F(p1))) | (G(F(p2)))","1",1 "(G(F(p0))) | (G(F(p1))) | (G(F(p2)))","1",1
"(G(F(p0))) | (G(F(p1))) | (G(F(p2)))","2",1 "(G(F(p0))) | (G(F(p1))) | (G(F(p2)))","2",1
"(G(F(p0))) | (G(F(p1))) | (G(F(p2)))","3",1 "(G(F(p0))) | (G(F(p1))) | (G(F(p2)))","3",1
@ -408,7 +391,6 @@ cat >expected <<'EOF'
"(G(F(p0))) | (G(F(p1))) | (G(F(p2)))","15",1 "(G(F(p0))) | (G(F(p1))) | (G(F(p2)))","15",1
"(G(F(p0))) | (G(F(p1))) | (G(F(p2)))","16",1 "(G(F(p0))) | (G(F(p1))) | (G(F(p2)))","16",1
"(G(F(p0))) | (G(F(p1))) | (G(F(p2)))","17",1 "(G(F(p0))) | (G(F(p1))) | (G(F(p2)))","17",1
"(G(F(p0))) | (G(F(p1))) | (G(F(p2)))","18",1
"!((G(F(p0))) | (G(F(p1))) | (G(F(p2))))","1",2 "!((G(F(p0))) | (G(F(p1))) | (G(F(p2))))","1",2
"!((G(F(p0))) | (G(F(p1))) | (G(F(p2))))","2",2 "!((G(F(p0))) | (G(F(p1))) | (G(F(p2))))","2",2
"!((G(F(p0))) | (G(F(p1))) | (G(F(p2))))","3",2 "!((G(F(p0))) | (G(F(p1))) | (G(F(p2))))","3",2
@ -425,7 +407,6 @@ cat >expected <<'EOF'
"!((G(F(p0))) | (G(F(p1))) | (G(F(p2))))","15",2 "!((G(F(p0))) | (G(F(p1))) | (G(F(p2))))","15",2
"!((G(F(p0))) | (G(F(p1))) | (G(F(p2))))","16",2 "!((G(F(p0))) | (G(F(p1))) | (G(F(p2))))","16",2
"!((G(F(p0))) | (G(F(p1))) | (G(F(p2))))","17",2 "!((G(F(p0))) | (G(F(p1))) | (G(F(p2))))","17",2
"!((G(F(p0))) | (G(F(p1))) | (G(F(p2))))","18",2
"G(F(p0))","1",1 "G(F(p0))","1",1
"G(F(p0))","2",1 "G(F(p0))","2",1
"G(F(p0))","3",1 "G(F(p0))","3",1
@ -442,7 +423,6 @@ cat >expected <<'EOF'
"G(F(p0))","15",1 "G(F(p0))","15",1
"G(F(p0))","16",1 "G(F(p0))","16",1
"G(F(p0))","17",1 "G(F(p0))","17",1
"G(F(p0))","18",1
"!(G(F(p0)))","1",2 "!(G(F(p0)))","1",2
"!(G(F(p0)))","2",2 "!(G(F(p0)))","2",2
"!(G(F(p0)))","3",2 "!(G(F(p0)))","3",2
@ -459,7 +439,6 @@ cat >expected <<'EOF'
"!(G(F(p0)))","15",2 "!(G(F(p0)))","15",2
"!(G(F(p0)))","16",2 "!(G(F(p0)))","16",2
"!(G(F(p0)))","17",2 "!(G(F(p0)))","17",2
"!(G(F(p0)))","18",2
"(p0) U ((p1) U ((p2) U (p3)))","1",4 "(p0) U ((p1) U ((p2) U (p3)))","1",4
"(p0) U ((p1) U ((p2) U (p3)))","2",4 "(p0) U ((p1) U ((p2) U (p3)))","2",4
"(p0) U ((p1) U ((p2) U (p3)))","3",4 "(p0) U ((p1) U ((p2) U (p3)))","3",4
@ -476,7 +455,6 @@ cat >expected <<'EOF'
"(p0) U ((p1) U ((p2) U (p3)))","15",4 "(p0) U ((p1) U ((p2) U (p3)))","15",4
"(p0) U ((p1) U ((p2) U (p3)))","16",4 "(p0) U ((p1) U ((p2) U (p3)))","16",4
"(p0) U ((p1) U ((p2) U (p3)))","17",4 "(p0) U ((p1) U ((p2) U (p3)))","17",4
"(p0) U ((p1) U ((p2) U (p3)))","18",4
"!((p0) U ((p1) U ((p2) U (p3))))","1",4 "!((p0) U ((p1) U ((p2) U (p3))))","1",4
"!((p0) U ((p1) U ((p2) U (p3))))","2",4 "!((p0) U ((p1) U ((p2) U (p3))))","2",4
"!((p0) U ((p1) U ((p2) U (p3))))","3",4 "!((p0) U ((p1) U ((p2) U (p3))))","3",4
@ -493,7 +471,6 @@ cat >expected <<'EOF'
"!((p0) U ((p1) U ((p2) U (p3))))","15",4 "!((p0) U ((p1) U ((p2) U (p3))))","15",4
"!((p0) U ((p1) U ((p2) U (p3))))","16",4 "!((p0) U ((p1) U ((p2) U (p3))))","16",4
"!((p0) U ((p1) U ((p2) U (p3))))","17",4 "!((p0) U ((p1) U ((p2) U (p3))))","17",4
"!((p0) U ((p1) U ((p2) U (p3))))","18",4
"(G((p0) -> (F(p1)))) & (G(p2))","1",2 "(G((p0) -> (F(p1)))) & (G(p2))","1",2
"(G((p0) -> (F(p1)))) & (G(p2))","2",2 "(G((p0) -> (F(p1)))) & (G(p2))","2",2
"(G((p0) -> (F(p1)))) & (G(p2))","3",2 "(G((p0) -> (F(p1)))) & (G(p2))","3",2
@ -510,7 +487,6 @@ cat >expected <<'EOF'
"(G((p0) -> (F(p1)))) & (G(p2))","15",2 "(G((p0) -> (F(p1)))) & (G(p2))","15",2
"(G((p0) -> (F(p1)))) & (G(p2))","16",2 "(G((p0) -> (F(p1)))) & (G(p2))","16",2
"(G((p0) -> (F(p1)))) & (G(p2))","17",2 "(G((p0) -> (F(p1)))) & (G(p2))","17",2
"(G((p0) -> (F(p1)))) & (G(p2))","18",2
"!((G((p0) -> (F(p1)))) & (G(p2)))","1",3 "!((G((p0) -> (F(p1)))) & (G(p2)))","1",3
"!((G((p0) -> (F(p1)))) & (G(p2)))","2",3 "!((G((p0) -> (F(p1)))) & (G(p2)))","2",3
"!((G((p0) -> (F(p1)))) & (G(p2)))","3",3 "!((G((p0) -> (F(p1)))) & (G(p2)))","3",3
@ -527,7 +503,6 @@ cat >expected <<'EOF'
"!((G((p0) -> (F(p1)))) & (G(p2)))","15",3 "!((G((p0) -> (F(p1)))) & (G(p2)))","15",3
"!((G((p0) -> (F(p1)))) & (G(p2)))","16",3 "!((G((p0) -> (F(p1)))) & (G(p2)))","16",3
"!((G((p0) -> (F(p1)))) & (G(p2)))","17",3 "!((G((p0) -> (F(p1)))) & (G(p2)))","17",3
"!((G((p0) -> (F(p1)))) & (G(p2)))","18",3
"((G(p0)) -> (F(p1))) & ((G(!(p0))) -> (F(!(p1))))","1",4 "((G(p0)) -> (F(p1))) & ((G(!(p0))) -> (F(!(p1))))","1",4
"((G(p0)) -> (F(p1))) & ((G(!(p0))) -> (F(!(p1))))","2",4 "((G(p0)) -> (F(p1))) & ((G(!(p0))) -> (F(!(p1))))","2",4
"((G(p0)) -> (F(p1))) & ((G(!(p0))) -> (F(!(p1))))","3",4 "((G(p0)) -> (F(p1))) & ((G(!(p0))) -> (F(!(p1))))","3",4
@ -544,7 +519,6 @@ cat >expected <<'EOF'
"((G(p0)) -> (F(p1))) & ((G(!(p0))) -> (F(!(p1))))","15",4 "((G(p0)) -> (F(p1))) & ((G(!(p0))) -> (F(!(p1))))","15",4
"((G(p0)) -> (F(p1))) & ((G(!(p0))) -> (F(!(p1))))","16",4 "((G(p0)) -> (F(p1))) & ((G(!(p0))) -> (F(!(p1))))","16",4
"((G(p0)) -> (F(p1))) & ((G(!(p0))) -> (F(!(p1))))","17",4 "((G(p0)) -> (F(p1))) & ((G(!(p0))) -> (F(!(p1))))","17",4
"((G(p0)) -> (F(p1))) & ((G(!(p0))) -> (F(!(p1))))","18",4
"!(((G(p0)) -> (F(p1))) & ((G(!(p0))) -> (F(!(p1)))))","1",3 "!(((G(p0)) -> (F(p1))) & ((G(!(p0))) -> (F(!(p1)))))","1",3
"!(((G(p0)) -> (F(p1))) & ((G(!(p0))) -> (F(!(p1)))))","2",3 "!(((G(p0)) -> (F(p1))) & ((G(!(p0))) -> (F(!(p1)))))","2",3
"!(((G(p0)) -> (F(p1))) & ((G(!(p0))) -> (F(!(p1)))))","3",3 "!(((G(p0)) -> (F(p1))) & ((G(!(p0))) -> (F(!(p1)))))","3",3
@ -561,7 +535,6 @@ cat >expected <<'EOF'
"!(((G(p0)) -> (F(p1))) & ((G(!(p0))) -> (F(!(p1)))))","15",3 "!(((G(p0)) -> (F(p1))) & ((G(!(p0))) -> (F(!(p1)))))","15",3
"!(((G(p0)) -> (F(p1))) & ((G(!(p0))) -> (F(!(p1)))))","16",3 "!(((G(p0)) -> (F(p1))) & ((G(!(p0))) -> (F(!(p1)))))","16",3
"!(((G(p0)) -> (F(p1))) & ((G(!(p0))) -> (F(!(p1)))))","17",3 "!(((G(p0)) -> (F(p1))) & ((G(!(p0))) -> (F(!(p1)))))","17",3
"!(((G(p0)) -> (F(p1))) & ((G(!(p0))) -> (F(!(p1)))))","18",3
"(G((p0) -> (F(p1)))) & (G((p1) -> (F(p2))))","1",4 "(G((p0) -> (F(p1)))) & (G((p1) -> (F(p2))))","1",4
"(G((p0) -> (F(p1)))) & (G((p1) -> (F(p2))))","2",4 "(G((p0) -> (F(p1)))) & (G((p1) -> (F(p2))))","2",4
"(G((p0) -> (F(p1)))) & (G((p1) -> (F(p2))))","3",4 "(G((p0) -> (F(p1)))) & (G((p1) -> (F(p2))))","3",4
@ -578,7 +551,6 @@ cat >expected <<'EOF'
"(G((p0) -> (F(p1)))) & (G((p1) -> (F(p2))))","15",3 "(G((p0) -> (F(p1)))) & (G((p1) -> (F(p2))))","15",3
"(G((p0) -> (F(p1)))) & (G((p1) -> (F(p2))))","16",3 "(G((p0) -> (F(p1)))) & (G((p1) -> (F(p2))))","16",3
"(G((p0) -> (F(p1)))) & (G((p1) -> (F(p2))))","17",3 "(G((p0) -> (F(p1)))) & (G((p1) -> (F(p2))))","17",3
"(G((p0) -> (F(p1)))) & (G((p1) -> (F(p2))))","18",3
"!((G((p0) -> (F(p1)))) & (G((p1) -> (F(p2)))))","1",3 "!((G((p0) -> (F(p1)))) & (G((p1) -> (F(p2)))))","1",3
"!((G((p0) -> (F(p1)))) & (G((p1) -> (F(p2)))))","2",3 "!((G((p0) -> (F(p1)))) & (G((p1) -> (F(p2)))))","2",3
"!((G((p0) -> (F(p1)))) & (G((p1) -> (F(p2)))))","3",3 "!((G((p0) -> (F(p1)))) & (G((p1) -> (F(p2)))))","3",3
@ -595,7 +567,6 @@ cat >expected <<'EOF'
"!((G((p0) -> (F(p1)))) & (G((p1) -> (F(p2)))))","15",3 "!((G((p0) -> (F(p1)))) & (G((p1) -> (F(p2)))))","15",3
"!((G((p0) -> (F(p1)))) & (G((p1) -> (F(p2)))))","16",3 "!((G((p0) -> (F(p1)))) & (G((p1) -> (F(p2)))))","16",3
"!((G((p0) -> (F(p1)))) & (G((p1) -> (F(p2)))))","17",3 "!((G((p0) -> (F(p1)))) & (G((p1) -> (F(p2)))))","17",3
"!((G((p0) -> (F(p1)))) & (G((p1) -> (F(p2)))))","18",3
"(G((p0) -> (F(p1)))) & (G((!(p0)) -> (F(!(p1)))))","1",3 "(G((p0) -> (F(p1)))) & (G((!(p0)) -> (F(!(p1)))))","1",3
"(G((p0) -> (F(p1)))) & (G((!(p0)) -> (F(!(p1)))))","2",3 "(G((p0) -> (F(p1)))) & (G((!(p0)) -> (F(!(p1)))))","2",3
"(G((p0) -> (F(p1)))) & (G((!(p0)) -> (F(!(p1)))))","3",3 "(G((p0) -> (F(p1)))) & (G((!(p0)) -> (F(!(p1)))))","3",3
@ -612,7 +583,6 @@ cat >expected <<'EOF'
"(G((p0) -> (F(p1)))) & (G((!(p0)) -> (F(!(p1)))))","15",3 "(G((p0) -> (F(p1)))) & (G((!(p0)) -> (F(!(p1)))))","15",3
"(G((p0) -> (F(p1)))) & (G((!(p0)) -> (F(!(p1)))))","16",3 "(G((p0) -> (F(p1)))) & (G((!(p0)) -> (F(!(p1)))))","16",3
"(G((p0) -> (F(p1)))) & (G((!(p0)) -> (F(!(p1)))))","17",3 "(G((p0) -> (F(p1)))) & (G((!(p0)) -> (F(!(p1)))))","17",3
"(G((p0) -> (F(p1)))) & (G((!(p0)) -> (F(!(p1)))))","18",3
"!((G((p0) -> (F(p1)))) & (G((!(p0)) -> (F(!(p1))))))","1",3 "!((G((p0) -> (F(p1)))) & (G((!(p0)) -> (F(!(p1))))))","1",3
"!((G((p0) -> (F(p1)))) & (G((!(p0)) -> (F(!(p1))))))","2",3 "!((G((p0) -> (F(p1)))) & (G((!(p0)) -> (F(!(p1))))))","2",3
"!((G((p0) -> (F(p1)))) & (G((!(p0)) -> (F(!(p1))))))","3",3 "!((G((p0) -> (F(p1)))) & (G((!(p0)) -> (F(!(p1))))))","3",3
@ -629,7 +599,6 @@ cat >expected <<'EOF'
"!((G((p0) -> (F(p1)))) & (G((!(p0)) -> (F(!(p1))))))","15",3 "!((G((p0) -> (F(p1)))) & (G((!(p0)) -> (F(!(p1))))))","15",3
"!((G((p0) -> (F(p1)))) & (G((!(p0)) -> (F(!(p1))))))","16",3 "!((G((p0) -> (F(p1)))) & (G((!(p0)) -> (F(!(p1))))))","16",3
"!((G((p0) -> (F(p1)))) & (G((!(p0)) -> (F(!(p1))))))","17",3 "!((G((p0) -> (F(p1)))) & (G((!(p0)) -> (F(!(p1))))))","17",3
"!((G((p0) -> (F(p1)))) & (G((!(p0)) -> (F(!(p1))))))","18",3
"(G(F(p0))) & (G(F(p1))) & (G(F(p2))) & (G(F(p3)))","1",1 "(G(F(p0))) & (G(F(p1))) & (G(F(p2))) & (G(F(p3)))","1",1
"(G(F(p0))) & (G(F(p1))) & (G(F(p2))) & (G(F(p3)))","2",1 "(G(F(p0))) & (G(F(p1))) & (G(F(p2))) & (G(F(p3)))","2",1
"(G(F(p0))) & (G(F(p1))) & (G(F(p2))) & (G(F(p3)))","3",1 "(G(F(p0))) & (G(F(p1))) & (G(F(p2))) & (G(F(p3)))","3",1
@ -646,7 +615,6 @@ cat >expected <<'EOF'
"(G(F(p0))) & (G(F(p1))) & (G(F(p2))) & (G(F(p3)))","15",1 "(G(F(p0))) & (G(F(p1))) & (G(F(p2))) & (G(F(p3)))","15",1
"(G(F(p0))) & (G(F(p1))) & (G(F(p2))) & (G(F(p3)))","16",1 "(G(F(p0))) & (G(F(p1))) & (G(F(p2))) & (G(F(p3)))","16",1
"(G(F(p0))) & (G(F(p1))) & (G(F(p2))) & (G(F(p3)))","17",1 "(G(F(p0))) & (G(F(p1))) & (G(F(p2))) & (G(F(p3)))","17",1
"(G(F(p0))) & (G(F(p1))) & (G(F(p2))) & (G(F(p3)))","18",1
"!((G(F(p0))) & (G(F(p1))) & (G(F(p2))) & (G(F(p3))))","1",5 "!((G(F(p0))) & (G(F(p1))) & (G(F(p2))) & (G(F(p3))))","1",5
"!((G(F(p0))) & (G(F(p1))) & (G(F(p2))) & (G(F(p3))))","2",5 "!((G(F(p0))) & (G(F(p1))) & (G(F(p2))) & (G(F(p3))))","2",5
"!((G(F(p0))) & (G(F(p1))) & (G(F(p2))) & (G(F(p3))))","3",5 "!((G(F(p0))) & (G(F(p1))) & (G(F(p2))) & (G(F(p3))))","3",5
@ -663,7 +631,6 @@ cat >expected <<'EOF'
"!((G(F(p0))) & (G(F(p1))) & (G(F(p2))) & (G(F(p3))))","15",5 "!((G(F(p0))) & (G(F(p1))) & (G(F(p2))) & (G(F(p3))))","15",5
"!((G(F(p0))) & (G(F(p1))) & (G(F(p2))) & (G(F(p3))))","16",5 "!((G(F(p0))) & (G(F(p1))) & (G(F(p2))) & (G(F(p3))))","16",5
"!((G(F(p0))) & (G(F(p1))) & (G(F(p2))) & (G(F(p3))))","17",5 "!((G(F(p0))) & (G(F(p1))) & (G(F(p2))) & (G(F(p3))))","17",5
"!((G(F(p0))) & (G(F(p1))) & (G(F(p2))) & (G(F(p3))))","18",5
"G((p0) -> ((p1) U (p2)))","1",2 "G((p0) -> ((p1) U (p2)))","1",2
"G((p0) -> ((p1) U (p2)))","2",2 "G((p0) -> ((p1) U (p2)))","2",2
"G((p0) -> ((p1) U (p2)))","3",2 "G((p0) -> ((p1) U (p2)))","3",2
@ -680,7 +647,6 @@ cat >expected <<'EOF'
"G((p0) -> ((p1) U (p2)))","15",2 "G((p0) -> ((p1) U (p2)))","15",2
"G((p0) -> ((p1) U (p2)))","16",2 "G((p0) -> ((p1) U (p2)))","16",2
"G((p0) -> ((p1) U (p2)))","17",2 "G((p0) -> ((p1) U (p2)))","17",2
"G((p0) -> ((p1) U (p2)))","18",2
"!(G((p0) -> ((p1) U (p2))))","1",3 "!(G((p0) -> ((p1) U (p2))))","1",3
"!(G((p0) -> ((p1) U (p2))))","2",3 "!(G((p0) -> ((p1) U (p2))))","2",3
"!(G((p0) -> ((p1) U (p2))))","3",3 "!(G((p0) -> ((p1) U (p2))))","3",3
@ -697,7 +663,6 @@ cat >expected <<'EOF'
"!(G((p0) -> ((p1) U (p2))))","15",3 "!(G((p0) -> ((p1) U (p2))))","15",3
"!(G((p0) -> ((p1) U (p2))))","16",3 "!(G((p0) -> ((p1) U (p2))))","16",3
"!(G((p0) -> ((p1) U (p2))))","17",3 "!(G((p0) -> ((p1) U (p2))))","17",3
"!(G((p0) -> ((p1) U (p2))))","18",3
"G(F((p0) <-> (X(X(p1)))))","1",9 "G(F((p0) <-> (X(X(p1)))))","1",9
"G(F((p0) <-> (X(X(p1)))))","2",7 "G(F((p0) <-> (X(X(p1)))))","2",7
"G(F((p0) <-> (X(X(p1)))))","3",4 "G(F((p0) <-> (X(X(p1)))))","3",4
@ -714,7 +679,6 @@ cat >expected <<'EOF'
"G(F((p0) <-> (X(X(p1)))))","15",4 "G(F((p0) <-> (X(X(p1)))))","15",4
"G(F((p0) <-> (X(X(p1)))))","16",4 "G(F((p0) <-> (X(X(p1)))))","16",4
"G(F((p0) <-> (X(X(p1)))))","17",4 "G(F((p0) <-> (X(X(p1)))))","17",4
"G(F((p0) <-> (X(X(p1)))))","18",4
"!(G(F((p0) <-> (X(X(p1))))))","1",7 "!(G(F((p0) <-> (X(X(p1))))))","1",7
"!(G(F((p0) <-> (X(X(p1))))))","2",7 "!(G(F((p0) <-> (X(X(p1))))))","2",7
"!(G(F((p0) <-> (X(X(p1))))))","3",7 "!(G(F((p0) <-> (X(X(p1))))))","3",7
@ -731,7 +695,6 @@ cat >expected <<'EOF'
"!(G(F((p0) <-> (X(X(p1))))))","15",7 "!(G(F((p0) <-> (X(X(p1))))))","15",7
"!(G(F((p0) <-> (X(X(p1))))))","16",7 "!(G(F((p0) <-> (X(X(p1))))))","16",7
"!(G(F((p0) <-> (X(X(p1))))))","17",7 "!(G(F((p0) <-> (X(X(p1))))))","17",7
"!(G(F((p0) <-> (X(X(p1))))))","18",7
"(G(!(p0))) & (G((p1) -> (F(p2)))) & (G((p2) -> (F(p0))))","1",1 "(G(!(p0))) & (G((p1) -> (F(p2)))) & (G((p2) -> (F(p0))))","1",1
"(G(!(p0))) & (G((p1) -> (F(p2)))) & (G((p2) -> (F(p0))))","2",1 "(G(!(p0))) & (G((p1) -> (F(p2)))) & (G((p2) -> (F(p0))))","2",1
"(G(!(p0))) & (G((p1) -> (F(p2)))) & (G((p2) -> (F(p0))))","3",1 "(G(!(p0))) & (G((p1) -> (F(p2)))) & (G((p2) -> (F(p0))))","3",1
@ -748,7 +711,6 @@ cat >expected <<'EOF'
"(G(!(p0))) & (G((p1) -> (F(p2)))) & (G((p2) -> (F(p0))))","15",1 "(G(!(p0))) & (G((p1) -> (F(p2)))) & (G((p2) -> (F(p0))))","15",1
"(G(!(p0))) & (G((p1) -> (F(p2)))) & (G((p2) -> (F(p0))))","16",1 "(G(!(p0))) & (G((p1) -> (F(p2)))) & (G((p2) -> (F(p0))))","16",1
"(G(!(p0))) & (G((p1) -> (F(p2)))) & (G((p2) -> (F(p0))))","17",1 "(G(!(p0))) & (G((p1) -> (F(p2)))) & (G((p2) -> (F(p0))))","17",1
"(G(!(p0))) & (G((p1) -> (F(p2)))) & (G((p2) -> (F(p0))))","18",1
"!((G(!(p0))) & (G((p1) -> (F(p2)))) & (G((p2) -> (F(p0)))))","1",2 "!((G(!(p0))) & (G((p1) -> (F(p2)))) & (G((p2) -> (F(p0)))))","1",2
"!((G(!(p0))) & (G((p1) -> (F(p2)))) & (G((p2) -> (F(p0)))))","2",2 "!((G(!(p0))) & (G((p1) -> (F(p2)))) & (G((p2) -> (F(p0)))))","2",2
"!((G(!(p0))) & (G((p1) -> (F(p2)))) & (G((p2) -> (F(p0)))))","3",2 "!((G(!(p0))) & (G((p1) -> (F(p2)))) & (G((p2) -> (F(p0)))))","3",2
@ -765,7 +727,6 @@ cat >expected <<'EOF'
"!((G(!(p0))) & (G((p1) -> (F(p2)))) & (G((p2) -> (F(p0)))))","15",2 "!((G(!(p0))) & (G((p1) -> (F(p2)))) & (G((p2) -> (F(p0)))))","15",2
"!((G(!(p0))) & (G((p1) -> (F(p2)))) & (G((p2) -> (F(p0)))))","16",2 "!((G(!(p0))) & (G((p1) -> (F(p2)))) & (G((p2) -> (F(p0)))))","16",2
"!((G(!(p0))) & (G((p1) -> (F(p2)))) & (G((p2) -> (F(p0)))))","17",2 "!((G(!(p0))) & (G((p1) -> (F(p2)))) & (G((p2) -> (F(p0)))))","17",2
"!((G(!(p0))) & (G((p1) -> (F(p2)))) & (G((p2) -> (F(p0)))))","18",2
"G((p0) -> (X(X(X(p1)))))","1",8 "G((p0) -> (X(X(X(p1)))))","1",8
"G((p0) -> (X(X(X(p1)))))","2",8 "G((p0) -> (X(X(X(p1)))))","2",8
"G((p0) -> (X(X(X(p1)))))","3",8 "G((p0) -> (X(X(X(p1)))))","3",8
@ -782,7 +743,6 @@ cat >expected <<'EOF'
"G((p0) -> (X(X(X(p1)))))","15",8 "G((p0) -> (X(X(X(p1)))))","15",8
"G((p0) -> (X(X(X(p1)))))","16",8 "G((p0) -> (X(X(X(p1)))))","16",8
"G((p0) -> (X(X(X(p1)))))","17",8 "G((p0) -> (X(X(X(p1)))))","17",8
"G((p0) -> (X(X(X(p1)))))","18",8
"!(G((p0) -> (X(X(X(p1))))))","1",9 "!(G((p0) -> (X(X(X(p1))))))","1",9
"!(G((p0) -> (X(X(X(p1))))))","2",9 "!(G((p0) -> (X(X(X(p1))))))","2",9
"!(G((p0) -> (X(X(X(p1))))))","3",9 "!(G((p0) -> (X(X(X(p1))))))","3",9
@ -799,7 +759,6 @@ cat >expected <<'EOF'
"!(G((p0) -> (X(X(X(p1))))))","15",9 "!(G((p0) -> (X(X(X(p1))))))","15",9
"!(G((p0) -> (X(X(X(p1))))))","16",9 "!(G((p0) -> (X(X(X(p1))))))","16",9
"!(G((p0) -> (X(X(X(p1))))))","17",9 "!(G((p0) -> (X(X(X(p1))))))","17",9
"!(G((p0) -> (X(X(X(p1))))))","18",9
"G((p0) -> (F(p1)))","1",2 "G((p0) -> (F(p1)))","1",2
"G((p0) -> (F(p1)))","2",2 "G((p0) -> (F(p1)))","2",2
"G((p0) -> (F(p1)))","3",2 "G((p0) -> (F(p1)))","3",2
@ -816,7 +775,6 @@ cat >expected <<'EOF'
"G((p0) -> (F(p1)))","15",2 "G((p0) -> (F(p1)))","15",2
"G((p0) -> (F(p1)))","16",2 "G((p0) -> (F(p1)))","16",2
"G((p0) -> (F(p1)))","17",2 "G((p0) -> (F(p1)))","17",2
"G((p0) -> (F(p1)))","18",2
"!(G((p0) -> (F(p1))))","1",2 "!(G((p0) -> (F(p1))))","1",2
"!(G((p0) -> (F(p1))))","2",2 "!(G((p0) -> (F(p1))))","2",2
"!(G((p0) -> (F(p1))))","3",2 "!(G((p0) -> (F(p1))))","3",2
@ -833,7 +791,6 @@ cat >expected <<'EOF'
"!(G((p0) -> (F(p1))))","15",2 "!(G((p0) -> (F(p1))))","15",2
"!(G((p0) -> (F(p1))))","16",2 "!(G((p0) -> (F(p1))))","16",2
"!(G((p0) -> (F(p1))))","17",2 "!(G((p0) -> (F(p1))))","17",2
"!(G((p0) -> (F(p1))))","18",2
"G((p0) U ((p1) U ((!(p0)) U (!(p1)))))","1",1 "G((p0) U ((p1) U ((!(p0)) U (!(p1)))))","1",1
"G((p0) U ((p1) U ((!(p0)) U (!(p1)))))","2",1 "G((p0) U ((p1) U ((!(p0)) U (!(p1)))))","2",1
"G((p0) U ((p1) U ((!(p0)) U (!(p1)))))","3",1 "G((p0) U ((p1) U ((!(p0)) U (!(p1)))))","3",1
@ -850,7 +807,6 @@ cat >expected <<'EOF'
"G((p0) U ((p1) U ((!(p0)) U (!(p1)))))","15",1 "G((p0) U ((p1) U ((!(p0)) U (!(p1)))))","15",1
"G((p0) U ((p1) U ((!(p0)) U (!(p1)))))","16",1 "G((p0) U ((p1) U ((!(p0)) U (!(p1)))))","16",1
"G((p0) U ((p1) U ((!(p0)) U (!(p1)))))","17",1 "G((p0) U ((p1) U ((!(p0)) U (!(p1)))))","17",1
"G((p0) U ((p1) U ((!(p0)) U (!(p1)))))","18",1
"!(G((p0) U ((p1) U ((!(p0)) U (!(p1))))))","1",2 "!(G((p0) U ((p1) U ((!(p0)) U (!(p1))))))","1",2
"!(G((p0) U ((p1) U ((!(p0)) U (!(p1))))))","2",2 "!(G((p0) U ((p1) U ((!(p0)) U (!(p1))))))","2",2
"!(G((p0) U ((p1) U ((!(p0)) U (!(p1))))))","3",2 "!(G((p0) U ((p1) U ((!(p0)) U (!(p1))))))","3",2
@ -867,7 +823,6 @@ cat >expected <<'EOF'
"!(G((p0) U ((p1) U ((!(p0)) U (!(p1))))))","15",2 "!(G((p0) U ((p1) U ((!(p0)) U (!(p1))))))","15",2
"!(G((p0) U ((p1) U ((!(p0)) U (!(p1))))))","16",2 "!(G((p0) U ((p1) U ((!(p0)) U (!(p1))))))","16",2
"!(G((p0) U ((p1) U ((!(p0)) U (!(p1))))))","17",2 "!(G((p0) U ((p1) U ((!(p0)) U (!(p1))))))","17",2
"!(G((p0) U ((p1) U ((!(p0)) U (!(p1))))))","18",2
"X((((p0) & (p1)) R ((!(p0)) U (!(p2)))) R (p1))","1",4 "X((((p0) & (p1)) R ((!(p0)) U (!(p2)))) R (p1))","1",4
"X((((p0) & (p1)) R ((!(p0)) U (!(p2)))) R (p1))","2",5 "X((((p0) & (p1)) R ((!(p0)) U (!(p2)))) R (p1))","2",5
"X((((p0) & (p1)) R ((!(p0)) U (!(p2)))) R (p1))","3",5 "X((((p0) & (p1)) R ((!(p0)) U (!(p2)))) R (p1))","3",5
@ -884,7 +839,6 @@ cat >expected <<'EOF'
"X((((p0) & (p1)) R ((!(p0)) U (!(p2)))) R (p1))","15",5 "X((((p0) & (p1)) R ((!(p0)) U (!(p2)))) R (p1))","15",5
"X((((p0) & (p1)) R ((!(p0)) U (!(p2)))) R (p1))","16",5 "X((((p0) & (p1)) R ((!(p0)) U (!(p2)))) R (p1))","16",5
"X((((p0) & (p1)) R ((!(p0)) U (!(p2)))) R (p1))","17",5 "X((((p0) & (p1)) R ((!(p0)) U (!(p2)))) R (p1))","17",5
"X((((p0) & (p1)) R ((!(p0)) U (!(p2)))) R (p1))","18",5
"!(X((((p0) & (p1)) R ((!(p0)) U (!(p2)))) R (p1)))","1",6 "!(X((((p0) & (p1)) R ((!(p0)) U (!(p2)))) R (p1)))","1",6
"!(X((((p0) & (p1)) R ((!(p0)) U (!(p2)))) R (p1)))","2",6 "!(X((((p0) & (p1)) R ((!(p0)) U (!(p2)))) R (p1)))","2",6
"!(X((((p0) & (p1)) R ((!(p0)) U (!(p2)))) R (p1)))","3",6 "!(X((((p0) & (p1)) R ((!(p0)) U (!(p2)))) R (p1)))","3",6
@ -901,7 +855,6 @@ cat >expected <<'EOF'
"!(X((((p0) & (p1)) R ((!(p0)) U (!(p2)))) R (p1)))","15",6 "!(X((((p0) & (p1)) R ((!(p0)) U (!(p2)))) R (p1)))","15",6
"!(X((((p0) & (p1)) R ((!(p0)) U (!(p2)))) R (p1)))","16",6 "!(X((((p0) & (p1)) R ((!(p0)) U (!(p2)))) R (p1)))","16",6
"!(X((((p0) & (p1)) R ((!(p0)) U (!(p2)))) R (p1)))","17",6 "!(X((((p0) & (p1)) R ((!(p0)) U (!(p2)))) R (p1)))","17",6
"!(X((((p0) & (p1)) R ((!(p0)) U (!(p2)))) R (p1)))","18",6
"((!(p0)) M (!(p1))) W (F(!(p2)))","1",4 "((!(p0)) M (!(p1))) W (F(!(p2)))","1",4
"((!(p0)) M (!(p1))) W (F(!(p2)))","2",5 "((!(p0)) M (!(p1))) W (F(!(p2)))","2",5
"((!(p0)) M (!(p1))) W (F(!(p2)))","3",3 "((!(p0)) M (!(p1))) W (F(!(p2)))","3",3
@ -918,7 +871,6 @@ cat >expected <<'EOF'
"((!(p0)) M (!(p1))) W (F(!(p2)))","15",3 "((!(p0)) M (!(p1))) W (F(!(p2)))","15",3
"((!(p0)) M (!(p1))) W (F(!(p2)))","16",3 "((!(p0)) M (!(p1))) W (F(!(p2)))","16",3
"((!(p0)) M (!(p1))) W (F(!(p2)))","17",3 "((!(p0)) M (!(p1))) W (F(!(p2)))","17",3
"((!(p0)) M (!(p1))) W (F(!(p2)))","18",3
"!(((!(p0)) M (!(p1))) W (F(!(p2))))","1",3 "!(((!(p0)) M (!(p1))) W (F(!(p2))))","1",3
"!(((!(p0)) M (!(p1))) W (F(!(p2))))","2",3 "!(((!(p0)) M (!(p1))) W (F(!(p2))))","2",3
"!(((!(p0)) M (!(p1))) W (F(!(p2))))","3",3 "!(((!(p0)) M (!(p1))) W (F(!(p2))))","3",3
@ -935,7 +887,6 @@ cat >expected <<'EOF'
"!(((!(p0)) M (!(p1))) W (F(!(p2))))","15",3 "!(((!(p0)) M (!(p1))) W (F(!(p2))))","15",3
"!(((!(p0)) M (!(p1))) W (F(!(p2))))","16",3 "!(((!(p0)) M (!(p1))) W (F(!(p2))))","16",3
"!(((!(p0)) M (!(p1))) W (F(!(p2))))","17",3 "!(((!(p0)) M (!(p1))) W (F(!(p2))))","17",3
"!(((!(p0)) M (!(p1))) W (F(!(p2))))","18",3
"((p0) & (F(p1)) & (G(F(p2)))) R (p1)","1",2 "((p0) & (F(p1)) & (G(F(p2)))) R (p1)","1",2
"((p0) & (F(p1)) & (G(F(p2)))) R (p1)","2",3 "((p0) & (F(p1)) & (G(F(p2)))) R (p1)","2",3
"((p0) & (F(p1)) & (G(F(p2)))) R (p1)","3",3 "((p0) & (F(p1)) & (G(F(p2)))) R (p1)","3",3
@ -952,7 +903,6 @@ cat >expected <<'EOF'
"((p0) & (F(p1)) & (G(F(p2)))) R (p1)","15",3 "((p0) & (F(p1)) & (G(F(p2)))) R (p1)","15",3
"((p0) & (F(p1)) & (G(F(p2)))) R (p1)","16",3 "((p0) & (F(p1)) & (G(F(p2)))) R (p1)","16",3
"((p0) & (F(p1)) & (G(F(p2)))) R (p1)","17",3 "((p0) & (F(p1)) & (G(F(p2)))) R (p1)","17",3
"((p0) & (F(p1)) & (G(F(p2)))) R (p1)","18",3
"!(((p0) & (F(p1)) & (G(F(p2)))) R (p1))","1",5 "!(((p0) & (F(p1)) & (G(F(p2)))) R (p1))","1",5
"!(((p0) & (F(p1)) & (G(F(p2)))) R (p1))","2",5 "!(((p0) & (F(p1)) & (G(F(p2)))) R (p1))","2",5
"!(((p0) & (F(p1)) & (G(F(p2)))) R (p1))","3",5 "!(((p0) & (F(p1)) & (G(F(p2)))) R (p1))","3",5
@ -969,7 +919,6 @@ cat >expected <<'EOF'
"!(((p0) & (F(p1)) & (G(F(p2)))) R (p1))","15",5 "!(((p0) & (F(p1)) & (G(F(p2)))) R (p1))","15",5
"!(((p0) & (F(p1)) & (G(F(p2)))) R (p1))","16",5 "!(((p0) & (F(p1)) & (G(F(p2)))) R (p1))","16",5
"!(((p0) & (F(p1)) & (G(F(p2)))) R (p1))","17",5 "!(((p0) & (F(p1)) & (G(F(p2)))) R (p1))","17",5
"!(((p0) & (F(p1)) & (G(F(p2)))) R (p1))","18",5
"((p0) R ((p1) W (p0))) W (G((!(p0)) M ((p1) | (p2))))","1",3 "((p0) R ((p1) W (p0))) W (G((!(p0)) M ((p1) | (p2))))","1",3
"((p0) R ((p1) W (p0))) W (G((!(p0)) M ((p1) | (p2))))","2",2 "((p0) R ((p1) W (p0))) W (G((!(p0)) M ((p1) | (p2))))","2",2
"((p0) R ((p1) W (p0))) W (G((!(p0)) M ((p1) | (p2))))","3",2 "((p0) R ((p1) W (p0))) W (G((!(p0)) M ((p1) | (p2))))","3",2
@ -986,7 +935,6 @@ cat >expected <<'EOF'
"((p0) R ((p1) W (p0))) W (G((!(p0)) M ((p1) | (p2))))","15",2 "((p0) R ((p1) W (p0))) W (G((!(p0)) M ((p1) | (p2))))","15",2
"((p0) R ((p1) W (p0))) W (G((!(p0)) M ((p1) | (p2))))","16",2 "((p0) R ((p1) W (p0))) W (G((!(p0)) M ((p1) | (p2))))","16",2
"((p0) R ((p1) W (p0))) W (G((!(p0)) M ((p1) | (p2))))","17",2 "((p0) R ((p1) W (p0))) W (G((!(p0)) M ((p1) | (p2))))","17",2
"((p0) R ((p1) W (p0))) W (G((!(p0)) M ((p1) | (p2))))","18",2
"!(((p0) R ((p1) W (p0))) W (G((!(p0)) M ((p1) | (p2)))))","1",4 "!(((p0) R ((p1) W (p0))) W (G((!(p0)) M ((p1) | (p2)))))","1",4
"!(((p0) R ((p1) W (p0))) W (G((!(p0)) M ((p1) | (p2)))))","2",4 "!(((p0) R ((p1) W (p0))) W (G((!(p0)) M ((p1) | (p2)))))","2",4
"!(((p0) R ((p1) W (p0))) W (G((!(p0)) M ((p1) | (p2)))))","3",4 "!(((p0) R ((p1) W (p0))) W (G((!(p0)) M ((p1) | (p2)))))","3",4
@ -1003,7 +951,6 @@ cat >expected <<'EOF'
"!(((p0) R ((p1) W (p0))) W (G((!(p0)) M ((p1) | (p2)))))","15",4 "!(((p0) R ((p1) W (p0))) W (G((!(p0)) M ((p1) | (p2)))))","15",4
"!(((p0) R ((p1) W (p0))) W (G((!(p0)) M ((p1) | (p2)))))","16",4 "!(((p0) R ((p1) W (p0))) W (G((!(p0)) M ((p1) | (p2)))))","16",4
"!(((p0) R ((p1) W (p0))) W (G((!(p0)) M ((p1) | (p2)))))","17",4 "!(((p0) R ((p1) W (p0))) W (G((!(p0)) M ((p1) | (p2)))))","17",4
"!(((p0) R ((p1) W (p0))) W (G((!(p0)) M ((p1) | (p2)))))","18",4
"X((G((!(p0)) M (!(p1)))) | (G((p0) | (G(!(p0))))))","1",5 "X((G((!(p0)) M (!(p1)))) | (G((p0) | (G(!(p0))))))","1",5
"X((G((!(p0)) M (!(p1)))) | (G((p0) | (G(!(p0))))))","2",7 "X((G((!(p0)) M (!(p1)))) | (G((p0) | (G(!(p0))))))","2",7
"X((G((!(p0)) M (!(p1)))) | (G((p0) | (G(!(p0))))))","3",6 "X((G((!(p0)) M (!(p1)))) | (G((p0) | (G(!(p0))))))","3",6
@ -1020,7 +967,6 @@ cat >expected <<'EOF'
"X((G((!(p0)) M (!(p1)))) | (G((p0) | (G(!(p0))))))","15",6 "X((G((!(p0)) M (!(p1)))) | (G((p0) | (G(!(p0))))))","15",6
"X((G((!(p0)) M (!(p1)))) | (G((p0) | (G(!(p0))))))","16",6 "X((G((!(p0)) M (!(p1)))) | (G((p0) | (G(!(p0))))))","16",6
"X((G((!(p0)) M (!(p1)))) | (G((p0) | (G(!(p0))))))","17",6 "X((G((!(p0)) M (!(p1)))) | (G((p0) | (G(!(p0))))))","17",6
"X((G((!(p0)) M (!(p1)))) | (G((p0) | (G(!(p0))))))","18",6
"!(X((G((!(p0)) M (!(p1)))) | (G((p0) | (G(!(p0)))))))","1",8 "!(X((G((!(p0)) M (!(p1)))) | (G((p0) | (G(!(p0)))))))","1",8
"!(X((G((!(p0)) M (!(p1)))) | (G((p0) | (G(!(p0)))))))","2",8 "!(X((G((!(p0)) M (!(p1)))) | (G((p0) | (G(!(p0)))))))","2",8
"!(X((G((!(p0)) M (!(p1)))) | (G((p0) | (G(!(p0)))))))","3",8 "!(X((G((!(p0)) M (!(p1)))) | (G((p0) | (G(!(p0)))))))","3",8
@ -1037,7 +983,6 @@ cat >expected <<'EOF'
"!(X((G((!(p0)) M (!(p1)))) | (G((p0) | (G(!(p0)))))))","15",8 "!(X((G((!(p0)) M (!(p1)))) | (G((p0) | (G(!(p0)))))))","15",8
"!(X((G((!(p0)) M (!(p1)))) | (G((p0) | (G(!(p0)))))))","16",8 "!(X((G((!(p0)) M (!(p1)))) | (G((p0) | (G(!(p0)))))))","16",8
"!(X((G((!(p0)) M (!(p1)))) | (G((p0) | (G(!(p0)))))))","17",8 "!(X((G((!(p0)) M (!(p1)))) | (G((p0) | (G(!(p0)))))))","17",8
"!(X((G((!(p0)) M (!(p1)))) | (G((p0) | (G(!(p0)))))))","18",8
"(F(p0)) W (G(p1))","1",3 "(F(p0)) W (G(p1))","1",3
"(F(p0)) W (G(p1))","2",2 "(F(p0)) W (G(p1))","2",2
"(F(p0)) W (G(p1))","3",2 "(F(p0)) W (G(p1))","3",2
@ -1054,7 +999,6 @@ cat >expected <<'EOF'
"(F(p0)) W (G(p1))","15",2 "(F(p0)) W (G(p1))","15",2
"(F(p0)) W (G(p1))","16",2 "(F(p0)) W (G(p1))","16",2
"(F(p0)) W (G(p1))","17",2 "(F(p0)) W (G(p1))","17",2
"(F(p0)) W (G(p1))","18",2
"!((F(p0)) W (G(p1)))","1",2 "!((F(p0)) W (G(p1)))","1",2
"!((F(p0)) W (G(p1)))","2",2 "!((F(p0)) W (G(p1)))","2",2
"!((F(p0)) W (G(p1)))","3",2 "!((F(p0)) W (G(p1)))","3",2
@ -1071,7 +1015,6 @@ cat >expected <<'EOF'
"!((F(p0)) W (G(p1)))","15",2 "!((F(p0)) W (G(p1)))","15",2
"!((F(p0)) W (G(p1)))","16",2 "!((F(p0)) W (G(p1)))","16",2
"!((F(p0)) W (G(p1)))","17",2 "!((F(p0)) W (G(p1)))","17",2
"!((F(p0)) W (G(p1)))","18",2
"(G(F(p1))) | (G(p0))","1",3 "(G(F(p1))) | (G(p0))","1",3
"(G(F(p1))) | (G(p0))","2",3 "(G(F(p1))) | (G(p0))","2",3
"(G(F(p1))) | (G(p0))","3",2 "(G(F(p1))) | (G(p0))","3",2
@ -1088,7 +1031,6 @@ cat >expected <<'EOF'
"(G(F(p1))) | (G(p0))","15",2 "(G(F(p1))) | (G(p0))","15",2
"(G(F(p1))) | (G(p0))","16",2 "(G(F(p1))) | (G(p0))","16",2
"(G(F(p1))) | (G(p0))","17",2 "(G(F(p1))) | (G(p0))","17",2
"(G(F(p1))) | (G(p0))","18",2
"!((G(F(p1))) | (G(p0)))","1",3 "!((G(F(p1))) | (G(p0)))","1",3
"!((G(F(p1))) | (G(p0)))","2",3 "!((G(F(p1))) | (G(p0)))","2",3
"!((G(F(p1))) | (G(p0)))","3",3 "!((G(F(p1))) | (G(p0)))","3",3
@ -1105,7 +1047,6 @@ cat >expected <<'EOF'
"!((G(F(p1))) | (G(p0)))","15",3 "!((G(F(p1))) | (G(p0)))","15",3
"!((G(F(p1))) | (G(p0)))","16",3 "!((G(F(p1))) | (G(p0)))","16",3
"!((G(F(p1))) | (G(p0)))","17",3 "!((G(F(p1))) | (G(p0)))","17",3
"!((G(F(p1))) | (G(p0)))","18",3
"(p0) M (G((F(!(p1))) | (X(!(p0)))))","1",5 "(p0) M (G((F(!(p1))) | (X(!(p0)))))","1",5
"(p0) M (G((F(!(p1))) | (X(!(p0)))))","2",5 "(p0) M (G((F(!(p1))) | (X(!(p0)))))","2",5
"(p0) M (G((F(!(p1))) | (X(!(p0)))))","3",5 "(p0) M (G((F(!(p1))) | (X(!(p0)))))","3",5
@ -1122,7 +1063,6 @@ cat >expected <<'EOF'
"(p0) M (G((F(!(p1))) | (X(!(p0)))))","15",5 "(p0) M (G((F(!(p1))) | (X(!(p0)))))","15",5
"(p0) M (G((F(!(p1))) | (X(!(p0)))))","16",5 "(p0) M (G((F(!(p1))) | (X(!(p0)))))","16",5
"(p0) M (G((F(!(p1))) | (X(!(p0)))))","17",5 "(p0) M (G((F(!(p1))) | (X(!(p0)))))","17",5
"(p0) M (G((F(!(p1))) | (X(!(p0)))))","18",5
"!((p0) M (G((F(!(p1))) | (X(!(p0))))))","1",4 "!((p0) M (G((F(!(p1))) | (X(!(p0))))))","1",4
"!((p0) M (G((F(!(p1))) | (X(!(p0))))))","2",4 "!((p0) M (G((F(!(p1))) | (X(!(p0))))))","2",4
"!((p0) M (G((F(!(p1))) | (X(!(p0))))))","3",4 "!((p0) M (G((F(!(p1))) | (X(!(p0))))))","3",4
@ -1139,7 +1079,6 @@ cat >expected <<'EOF'
"!((p0) M (G((F(!(p1))) | (X(!(p0))))))","15",4 "!((p0) M (G((F(!(p1))) | (X(!(p0))))))","15",4
"!((p0) M (G((F(!(p1))) | (X(!(p0))))))","16",4 "!((p0) M (G((F(!(p1))) | (X(!(p0))))))","16",4
"!((p0) M (G((F(!(p1))) | (X(!(p0))))))","17",4 "!((p0) M (G((F(!(p1))) | (X(!(p0))))))","17",4
"!((p0) M (G((F(!(p1))) | (X(!(p0))))))","18",4
"(G(!(p0))) R (X(F(p1)))","1",4 "(G(!(p0))) R (X(F(p1)))","1",4
"(G(!(p0))) R (X(F(p1)))","2",4 "(G(!(p0))) R (X(F(p1)))","2",4
"(G(!(p0))) R (X(F(p1)))","3",3 "(G(!(p0))) R (X(F(p1)))","3",3
@ -1156,7 +1095,6 @@ cat >expected <<'EOF'
"(G(!(p0))) R (X(F(p1)))","15",3 "(G(!(p0))) R (X(F(p1)))","15",3
"(G(!(p0))) R (X(F(p1)))","16",3 "(G(!(p0))) R (X(F(p1)))","16",3
"(G(!(p0))) R (X(F(p1)))","17",3 "(G(!(p0))) R (X(F(p1)))","17",3
"(G(!(p0))) R (X(F(p1)))","18",3
"!((G(!(p0))) R (X(F(p1))))","1",3 "!((G(!(p0))) R (X(F(p1))))","1",3
"!((G(!(p0))) R (X(F(p1))))","2",3 "!((G(!(p0))) R (X(F(p1))))","2",3
"!((G(!(p0))) R (X(F(p1))))","3",3 "!((G(!(p0))) R (X(F(p1))))","3",3
@ -1173,7 +1111,6 @@ cat >expected <<'EOF'
"!((G(!(p0))) R (X(F(p1))))","15",3 "!((G(!(p0))) R (X(F(p1))))","15",3
"!((G(!(p0))) R (X(F(p1))))","16",3 "!((G(!(p0))) R (X(F(p1))))","16",3
"!((G(!(p0))) R (X(F(p1))))","17",3 "!((G(!(p0))) R (X(F(p1))))","17",3
"!((G(!(p0))) R (X(F(p1))))","18",3
"X(F((!(p0)) | (G(F(p1)))))","1",4 "X(F((!(p0)) | (G(F(p1)))))","1",4
"X(F((!(p0)) | (G(F(p1)))))","2",4 "X(F((!(p0)) | (G(F(p1)))))","2",4
"X(F((!(p0)) | (G(F(p1)))))","3",3 "X(F((!(p0)) | (G(F(p1)))))","3",3
@ -1190,7 +1127,6 @@ cat >expected <<'EOF'
"X(F((!(p0)) | (G(F(p1)))))","15",3 "X(F((!(p0)) | (G(F(p1)))))","15",3
"X(F((!(p0)) | (G(F(p1)))))","16",3 "X(F((!(p0)) | (G(F(p1)))))","16",3
"X(F((!(p0)) | (G(F(p1)))))","17",3 "X(F((!(p0)) | (G(F(p1)))))","17",3
"X(F((!(p0)) | (G(F(p1)))))","18",3
"!(X(F((!(p0)) | (G(F(p1))))))","1",3 "!(X(F((!(p0)) | (G(F(p1))))))","1",3
"!(X(F((!(p0)) | (G(F(p1))))))","2",3 "!(X(F((!(p0)) | (G(F(p1))))))","2",3
"!(X(F((!(p0)) | (G(F(p1))))))","3",3 "!(X(F((!(p0)) | (G(F(p1))))))","3",3
@ -1207,7 +1143,6 @@ cat >expected <<'EOF'
"!(X(F((!(p0)) | (G(F(p1))))))","15",3 "!(X(F((!(p0)) | (G(F(p1))))))","15",3
"!(X(F((!(p0)) | (G(F(p1))))))","16",3 "!(X(F((!(p0)) | (G(F(p1))))))","16",3
"!(X(F((!(p0)) | (G(F(p1))))))","17",3 "!(X(F((!(p0)) | (G(F(p1))))))","17",3
"!(X(F((!(p0)) | (G(F(p1))))))","18",3
"(G((F(!(p0))) U (!(p0)))) U (X(p0))","1",6 "(G((F(!(p0))) U (!(p0)))) U (X(p0))","1",6
"(G((F(!(p0))) U (!(p0)))) U (X(p0))","2",6 "(G((F(!(p0))) U (!(p0)))) U (X(p0))","2",6
"(G((F(!(p0))) U (!(p0)))) U (X(p0))","3",5 "(G((F(!(p0))) U (!(p0)))) U (X(p0))","3",5
@ -1224,7 +1159,6 @@ cat >expected <<'EOF'
"(G((F(!(p0))) U (!(p0)))) U (X(p0))","15",5 "(G((F(!(p0))) U (!(p0)))) U (X(p0))","15",5
"(G((F(!(p0))) U (!(p0)))) U (X(p0))","16",5 "(G((F(!(p0))) U (!(p0)))) U (X(p0))","16",5
"(G((F(!(p0))) U (!(p0)))) U (X(p0))","17",5 "(G((F(!(p0))) U (!(p0)))) U (X(p0))","17",5
"(G((F(!(p0))) U (!(p0)))) U (X(p0))","18",5
"!((G((F(!(p0))) U (!(p0)))) U (X(p0)))","1",5 "!((G((F(!(p0))) U (!(p0)))) U (X(p0)))","1",5
"!((G((F(!(p0))) U (!(p0)))) U (X(p0)))","2",5 "!((G((F(!(p0))) U (!(p0)))) U (X(p0)))","2",5
"!((G((F(!(p0))) U (!(p0)))) U (X(p0)))","3",5 "!((G((F(!(p0))) U (!(p0)))) U (X(p0)))","3",5
@ -1241,7 +1175,6 @@ cat >expected <<'EOF'
"!((G((F(!(p0))) U (!(p0)))) U (X(p0)))","15",5 "!((G((F(!(p0))) U (!(p0)))) U (X(p0)))","15",5
"!((G((F(!(p0))) U (!(p0)))) U (X(p0)))","16",5 "!((G((F(!(p0))) U (!(p0)))) U (X(p0)))","16",5
"!((G((F(!(p0))) U (!(p0)))) U (X(p0)))","17",5 "!((G((F(!(p0))) U (!(p0)))) U (X(p0)))","17",5
"!((G((F(!(p0))) U (!(p0)))) U (X(p0)))","18",5
"((p0) | (G((p0) M (!(p1))))) W (F(p2))","1",4 "((p0) | (G((p0) M (!(p1))))) W (F(p2))","1",4
"((p0) | (G((p0) M (!(p1))))) W (F(p2))","2",5 "((p0) | (G((p0) M (!(p1))))) W (F(p2))","2",5
"((p0) | (G((p0) M (!(p1))))) W (F(p2))","3",4 "((p0) | (G((p0) M (!(p1))))) W (F(p2))","3",4
@ -1258,7 +1191,6 @@ cat >expected <<'EOF'
"((p0) | (G((p0) M (!(p1))))) W (F(p2))","15",4 "((p0) | (G((p0) M (!(p1))))) W (F(p2))","15",4
"((p0) | (G((p0) M (!(p1))))) W (F(p2))","16",4 "((p0) | (G((p0) M (!(p1))))) W (F(p2))","16",4
"((p0) | (G((p0) M (!(p1))))) W (F(p2))","17",4 "((p0) | (G((p0) M (!(p1))))) W (F(p2))","17",4
"((p0) | (G((p0) M (!(p1))))) W (F(p2))","18",4
"!(((p0) | (G((p0) M (!(p1))))) W (F(p2)))","1",4 "!(((p0) | (G((p0) M (!(p1))))) W (F(p2)))","1",4
"!(((p0) | (G((p0) M (!(p1))))) W (F(p2)))","2",4 "!(((p0) | (G((p0) M (!(p1))))) W (F(p2)))","2",4
"!(((p0) | (G((p0) M (!(p1))))) W (F(p2)))","3",4 "!(((p0) | (G((p0) M (!(p1))))) W (F(p2)))","3",4
@ -1275,7 +1207,6 @@ cat >expected <<'EOF'
"!(((p0) | (G((p0) M (!(p1))))) W (F(p2)))","15",4 "!(((p0) | (G((p0) M (!(p1))))) W (F(p2)))","15",4
"!(((p0) | (G((p0) M (!(p1))))) W (F(p2)))","16",4 "!(((p0) | (G((p0) M (!(p1))))) W (F(p2)))","16",4
"!(((p0) | (G((p0) M (!(p1))))) W (F(p2)))","17",4 "!(((p0) | (G((p0) M (!(p1))))) W (F(p2)))","17",4
"!(((p0) | (G((p0) M (!(p1))))) W (F(p2)))","18",4
"(F(p0)) W (X(p1))","1",6 "(F(p0)) W (X(p1))","1",6
"(F(p0)) W (X(p1))","2",6 "(F(p0)) W (X(p1))","2",6
"(F(p0)) W (X(p1))","3",6 "(F(p0)) W (X(p1))","3",6
@ -1292,7 +1223,6 @@ cat >expected <<'EOF'
"(F(p0)) W (X(p1))","15",6 "(F(p0)) W (X(p1))","15",6
"(F(p0)) W (X(p1))","16",6 "(F(p0)) W (X(p1))","16",6
"(F(p0)) W (X(p1))","17",6 "(F(p0)) W (X(p1))","17",6
"(F(p0)) W (X(p1))","18",6
"!((F(p0)) W (X(p1)))","1",4 "!((F(p0)) W (X(p1)))","1",4
"!((F(p0)) W (X(p1)))","2",4 "!((F(p0)) W (X(p1)))","2",4
"!((F(p0)) W (X(p1)))","3",4 "!((F(p0)) W (X(p1)))","3",4
@ -1309,7 +1239,6 @@ cat >expected <<'EOF'
"!((F(p0)) W (X(p1)))","15",4 "!((F(p0)) W (X(p1)))","15",4
"!((F(p0)) W (X(p1)))","16",4 "!((F(p0)) W (X(p1)))","16",4
"!((F(p0)) W (X(p1)))","17",4 "!((F(p0)) W (X(p1)))","17",4
"!((F(p0)) W (X(p1)))","18",4
"(X(G(!(p0)))) R (F(p1))","1",2 "(X(G(!(p0)))) R (F(p1))","1",2
"(X(G(!(p0)))) R (F(p1))","2",2 "(X(G(!(p0)))) R (F(p1))","2",2
"(X(G(!(p0)))) R (F(p1))","3",2 "(X(G(!(p0)))) R (F(p1))","3",2
@ -1326,7 +1255,6 @@ cat >expected <<'EOF'
"(X(G(!(p0)))) R (F(p1))","15",2 "(X(G(!(p0)))) R (F(p1))","15",2
"(X(G(!(p0)))) R (F(p1))","16",2 "(X(G(!(p0)))) R (F(p1))","16",2
"(X(G(!(p0)))) R (F(p1))","17",2 "(X(G(!(p0)))) R (F(p1))","17",2
"(X(G(!(p0)))) R (F(p1))","18",2
"!((X(G(!(p0)))) R (F(p1)))","1",3 "!((X(G(!(p0)))) R (F(p1)))","1",3
"!((X(G(!(p0)))) R (F(p1)))","2",3 "!((X(G(!(p0)))) R (F(p1)))","2",3
"!((X(G(!(p0)))) R (F(p1)))","3",3 "!((X(G(!(p0)))) R (F(p1)))","3",3
@ -1343,7 +1271,6 @@ cat >expected <<'EOF'
"!((X(G(!(p0)))) R (F(p1)))","15",3 "!((X(G(!(p0)))) R (F(p1)))","15",3
"!((X(G(!(p0)))) R (F(p1)))","16",3 "!((X(G(!(p0)))) R (F(p1)))","16",3
"!((X(G(!(p0)))) R (F(p1)))","17",3 "!((X(G(!(p0)))) R (F(p1)))","17",3
"!((X(G(!(p0)))) R (F(p1)))","18",3
"(G(F(p0))) | ((p1) & (F(p2)))","1",4 "(G(F(p0))) | ((p1) & (F(p2)))","1",4
"(G(F(p0))) | ((p1) & (F(p2)))","2",4 "(G(F(p0))) | ((p1) & (F(p2)))","2",4
"(G(F(p0))) | ((p1) & (F(p2)))","3",4 "(G(F(p0))) | ((p1) & (F(p2)))","3",4
@ -1360,7 +1287,6 @@ cat >expected <<'EOF'
"(G(F(p0))) | ((p1) & (F(p2)))","15",4 "(G(F(p0))) | ((p1) & (F(p2)))","15",4
"(G(F(p0))) | ((p1) & (F(p2)))","16",4 "(G(F(p0))) | ((p1) & (F(p2)))","16",4
"(G(F(p0))) | ((p1) & (F(p2)))","17",4 "(G(F(p0))) | ((p1) & (F(p2)))","17",4
"(G(F(p0))) | ((p1) & (F(p2)))","18",4
"!((G(F(p0))) | ((p1) & (F(p2))))","1",5 "!((G(F(p0))) | ((p1) & (F(p2))))","1",5
"!((G(F(p0))) | ((p1) & (F(p2))))","2",5 "!((G(F(p0))) | ((p1) & (F(p2))))","2",5
"!((G(F(p0))) | ((p1) & (F(p2))))","3",5 "!((G(F(p0))) | ((p1) & (F(p2))))","3",5
@ -1377,7 +1303,6 @@ cat >expected <<'EOF'
"!((G(F(p0))) | ((p1) & (F(p2))))","15",5 "!((G(F(p0))) | ((p1) & (F(p2))))","15",5
"!((G(F(p0))) | ((p1) & (F(p2))))","16",5 "!((G(F(p0))) | ((p1) & (F(p2))))","16",5
"!((G(F(p0))) | ((p1) & (F(p2))))","17",5 "!((G(F(p0))) | ((p1) & (F(p2))))","17",5
"!((G(F(p0))) | ((p1) & (F(p2))))","18",5
"X((p0) R ((F(p1)) R (F(!(p1)))))","1",6 "X((p0) R ((F(p1)) R (F(!(p1)))))","1",6
"X((p0) R ((F(p1)) R (F(!(p1)))))","2",6 "X((p0) R ((F(p1)) R (F(!(p1)))))","2",6
"X((p0) R ((F(p1)) R (F(!(p1)))))","3",4 "X((p0) R ((F(p1)) R (F(!(p1)))))","3",4
@ -1394,7 +1319,6 @@ cat >expected <<'EOF'
"X((p0) R ((F(p1)) R (F(!(p1)))))","15",4 "X((p0) R ((F(p1)) R (F(!(p1)))))","15",4
"X((p0) R ((F(p1)) R (F(!(p1)))))","16",4 "X((p0) R ((F(p1)) R (F(!(p1)))))","16",4
"X((p0) R ((F(p1)) R (F(!(p1)))))","17",4 "X((p0) R ((F(p1)) R (F(!(p1)))))","17",4
"X((p0) R ((F(p1)) R (F(!(p1)))))","18",4
"!(X((p0) R ((F(p1)) R (F(!(p1))))))","1",3 "!(X((p0) R ((F(p1)) R (F(!(p1))))))","1",3
"!(X((p0) R ((F(p1)) R (F(!(p1))))))","2",3 "!(X((p0) R ((F(p1)) R (F(!(p1))))))","2",3
"!(X((p0) R ((F(p1)) R (F(!(p1))))))","3",3 "!(X((p0) R ((F(p1)) R (F(!(p1))))))","3",3
@ -1411,7 +1335,6 @@ cat >expected <<'EOF'
"!(X((p0) R ((F(p1)) R (F(!(p1))))))","15",3 "!(X((p0) R ((F(p1)) R (F(!(p1))))))","15",3
"!(X((p0) R ((F(p1)) R (F(!(p1))))))","16",3 "!(X((p0) R ((F(p1)) R (F(!(p1))))))","16",3
"!(X((p0) R ((F(p1)) R (F(!(p1))))))","17",3 "!(X((p0) R ((F(p1)) R (F(!(p1))))))","17",3
"!(X((p0) R ((F(p1)) R (F(!(p1))))))","18",3
"G((X(p0)) M (F(p0)))","1",2 "G((X(p0)) M (F(p0)))","1",2
"G((X(p0)) M (F(p0)))","2",2 "G((X(p0)) M (F(p0)))","2",2
"G((X(p0)) M (F(p0)))","3",1 "G((X(p0)) M (F(p0)))","3",1
@ -1428,7 +1351,6 @@ cat >expected <<'EOF'
"G((X(p0)) M (F(p0)))","15",1 "G((X(p0)) M (F(p0)))","15",1
"G((X(p0)) M (F(p0)))","16",1 "G((X(p0)) M (F(p0)))","16",1
"G((X(p0)) M (F(p0)))","17",1 "G((X(p0)) M (F(p0)))","17",1
"G((X(p0)) M (F(p0)))","18",1
"!(G((X(p0)) M (F(p0))))","1",2 "!(G((X(p0)) M (F(p0))))","1",2
"!(G((X(p0)) M (F(p0))))","2",2 "!(G((X(p0)) M (F(p0))))","2",2
"!(G((X(p0)) M (F(p0))))","3",2 "!(G((X(p0)) M (F(p0))))","3",2
@ -1445,7 +1367,6 @@ cat >expected <<'EOF'
"!(G((X(p0)) M (F(p0))))","15",2 "!(G((X(p0)) M (F(p0))))","15",2
"!(G((X(p0)) M (F(p0))))","16",2 "!(G((X(p0)) M (F(p0))))","16",2
"!(G((X(p0)) M (F(p0))))","17",2 "!(G((X(p0)) M (F(p0))))","17",2
"!(G((X(p0)) M (F(p0))))","18",2
"X((G(F(p1))) | (G(p0)))","1",4 "X((G(F(p1))) | (G(p0)))","1",4
"X((G(F(p1))) | (G(p0)))","2",4 "X((G(F(p1))) | (G(p0)))","2",4
"X((G(F(p1))) | (G(p0)))","3",3 "X((G(F(p1))) | (G(p0)))","3",3
@ -1462,7 +1383,6 @@ cat >expected <<'EOF'
"X((G(F(p1))) | (G(p0)))","15",3 "X((G(F(p1))) | (G(p0)))","15",3
"X((G(F(p1))) | (G(p0)))","16",3 "X((G(F(p1))) | (G(p0)))","16",3
"X((G(F(p1))) | (G(p0)))","17",3 "X((G(F(p1))) | (G(p0)))","17",3
"X((G(F(p1))) | (G(p0)))","18",3
"!(X((G(F(p1))) | (G(p0))))","1",4 "!(X((G(F(p1))) | (G(p0))))","1",4
"!(X((G(F(p1))) | (G(p0))))","2",4 "!(X((G(F(p1))) | (G(p0))))","2",4
"!(X((G(F(p1))) | (G(p0))))","3",4 "!(X((G(F(p1))) | (G(p0))))","3",4
@ -1479,7 +1399,6 @@ cat >expected <<'EOF'
"!(X((G(F(p1))) | (G(p0))))","15",4 "!(X((G(F(p1))) | (G(p0))))","15",4
"!(X((G(F(p1))) | (G(p0))))","16",4 "!(X((G(F(p1))) | (G(p0))))","16",4
"!(X((G(F(p1))) | (G(p0))))","17",4 "!(X((G(F(p1))) | (G(p0))))","17",4
"!(X((G(F(p1))) | (G(p0))))","18",4
"(G(p0)) R (F(p1))","1",2 "(G(p0)) R (F(p1))","1",2
"(G(p0)) R (F(p1))","2",2 "(G(p0)) R (F(p1))","2",2
"(G(p0)) R (F(p1))","3",2 "(G(p0)) R (F(p1))","3",2
@ -1496,7 +1415,6 @@ cat >expected <<'EOF'
"(G(p0)) R (F(p1))","15",2 "(G(p0)) R (F(p1))","15",2
"(G(p0)) R (F(p1))","16",2 "(G(p0)) R (F(p1))","16",2
"(G(p0)) R (F(p1))","17",2 "(G(p0)) R (F(p1))","17",2
"(G(p0)) R (F(p1))","18",2
"!((G(p0)) R (F(p1)))","1",3 "!((G(p0)) R (F(p1)))","1",3
"!((G(p0)) R (F(p1)))","2",3 "!((G(p0)) R (F(p1)))","2",3
"!((G(p0)) R (F(p1)))","3",3 "!((G(p0)) R (F(p1)))","3",3
@ -1513,7 +1431,6 @@ cat >expected <<'EOF'
"!((G(p0)) R (F(p1)))","15",3 "!((G(p0)) R (F(p1)))","15",3
"!((G(p0)) R (F(p1)))","16",3 "!((G(p0)) R (F(p1)))","16",3
"!((G(p0)) R (F(p1)))","17",3 "!((G(p0)) R (F(p1)))","17",3
"!((G(p0)) R (F(p1)))","18",3
"G((p0) U ((p1) | (X(((!(p0)) & (!(p2))) | ((p0) & (p2))))))","1",2 "G((p0) U ((p1) | (X(((!(p0)) & (!(p2))) | ((p0) & (p2))))))","1",2
"G((p0) U ((p1) | (X(((!(p0)) & (!(p2))) | ((p0) & (p2))))))","2",3 "G((p0) U ((p1) | (X(((!(p0)) & (!(p2))) | ((p0) & (p2))))))","2",3
"G((p0) U ((p1) | (X(((!(p0)) & (!(p2))) | ((p0) & (p2))))))","3",2 "G((p0) U ((p1) | (X(((!(p0)) & (!(p2))) | ((p0) & (p2))))))","3",2
@ -1530,7 +1447,6 @@ cat >expected <<'EOF'
"G((p0) U ((p1) | (X(((!(p0)) & (!(p2))) | ((p0) & (p2))))))","15",2 "G((p0) U ((p1) | (X(((!(p0)) & (!(p2))) | ((p0) & (p2))))))","15",2
"G((p0) U ((p1) | (X(((!(p0)) & (!(p2))) | ((p0) & (p2))))))","16",2 "G((p0) U ((p1) | (X(((!(p0)) & (!(p2))) | ((p0) & (p2))))))","16",2
"G((p0) U ((p1) | (X(((!(p0)) & (!(p2))) | ((p0) & (p2))))))","17",2 "G((p0) U ((p1) | (X(((!(p0)) & (!(p2))) | ((p0) & (p2))))))","17",2
"G((p0) U ((p1) | (X(((!(p0)) & (!(p2))) | ((p0) & (p2))))))","18",2
"!(G((p0) U ((p1) | (X(((!(p0)) & (!(p2))) | ((p0) & (p2)))))))","1",4 "!(G((p0) U ((p1) | (X(((!(p0)) & (!(p2))) | ((p0) & (p2)))))))","1",4
"!(G((p0) U ((p1) | (X(((!(p0)) & (!(p2))) | ((p0) & (p2)))))))","2",4 "!(G((p0) U ((p1) | (X(((!(p0)) & (!(p2))) | ((p0) & (p2)))))))","2",4
"!(G((p0) U ((p1) | (X(((!(p0)) & (!(p2))) | ((p0) & (p2)))))))","3",4 "!(G((p0) U ((p1) | (X(((!(p0)) & (!(p2))) | ((p0) & (p2)))))))","3",4
@ -1547,7 +1463,6 @@ cat >expected <<'EOF'
"!(G((p0) U ((p1) | (X(((!(p0)) & (!(p2))) | ((p0) & (p2)))))))","15",4 "!(G((p0) U ((p1) | (X(((!(p0)) & (!(p2))) | ((p0) & (p2)))))))","15",4
"!(G((p0) U ((p1) | (X(((!(p0)) & (!(p2))) | ((p0) & (p2)))))))","16",4 "!(G((p0) U ((p1) | (X(((!(p0)) & (!(p2))) | ((p0) & (p2)))))))","16",4
"!(G((p0) U ((p1) | (X(((!(p0)) & (!(p2))) | ((p0) & (p2)))))))","17",4 "!(G((p0) U ((p1) | (X(((!(p0)) & (!(p2))) | ((p0) & (p2)))))))","17",4
"!(G((p0) U ((p1) | (X(((!(p0)) & (!(p2))) | ((p0) & (p2)))))))","18",4
"X(G(((G(!(p0))) & (F(!(p1)))) | ((F(p0)) & ((p0) | (G(p1))))))","1",4 "X(G(((G(!(p0))) & (F(!(p1)))) | ((F(p0)) & ((p0) | (G(p1))))))","1",4
"X(G(((G(!(p0))) & (F(!(p1)))) | ((F(p0)) & ((p0) | (G(p1))))))","2",5 "X(G(((G(!(p0))) & (F(!(p1)))) | ((F(p0)) & ((p0) | (G(p1))))))","2",5
"X(G(((G(!(p0))) & (F(!(p1)))) | ((F(p0)) & ((p0) | (G(p1))))))","3",5 "X(G(((G(!(p0))) & (F(!(p1)))) | ((F(p0)) & ((p0) | (G(p1))))))","3",5
@ -1564,7 +1479,6 @@ cat >expected <<'EOF'
"X(G(((G(!(p0))) & (F(!(p1)))) | ((F(p0)) & ((p0) | (G(p1))))))","15",5 "X(G(((G(!(p0))) & (F(!(p1)))) | ((F(p0)) & ((p0) | (G(p1))))))","15",5
"X(G(((G(!(p0))) & (F(!(p1)))) | ((F(p0)) & ((p0) | (G(p1))))))","16",5 "X(G(((G(!(p0))) & (F(!(p1)))) | ((F(p0)) & ((p0) | (G(p1))))))","16",5
"X(G(((G(!(p0))) & (F(!(p1)))) | ((F(p0)) & ((p0) | (G(p1))))))","17",5 "X(G(((G(!(p0))) & (F(!(p1)))) | ((F(p0)) & ((p0) | (G(p1))))))","17",5
"X(G(((G(!(p0))) & (F(!(p1)))) | ((F(p0)) & ((p0) | (G(p1))))))","18",5
"!(X(G(((G(!(p0))) & (F(!(p1)))) | ((F(p0)) & ((p0) | (G(p1)))))))","1",7 "!(X(G(((G(!(p0))) & (F(!(p1)))) | ((F(p0)) & ((p0) | (G(p1)))))))","1",7
"!(X(G(((G(!(p0))) & (F(!(p1)))) | ((F(p0)) & ((p0) | (G(p1)))))))","2",7 "!(X(G(((G(!(p0))) & (F(!(p1)))) | ((F(p0)) & ((p0) | (G(p1)))))))","2",7
"!(X(G(((G(!(p0))) & (F(!(p1)))) | ((F(p0)) & ((p0) | (G(p1)))))))","3",7 "!(X(G(((G(!(p0))) & (F(!(p1)))) | ((F(p0)) & ((p0) | (G(p1)))))))","3",7
@ -1581,7 +1495,6 @@ cat >expected <<'EOF'
"!(X(G(((G(!(p0))) & (F(!(p1)))) | ((F(p0)) & ((p0) | (G(p1)))))))","15",7 "!(X(G(((G(!(p0))) & (F(!(p1)))) | ((F(p0)) & ((p0) | (G(p1)))))))","15",7
"!(X(G(((G(!(p0))) & (F(!(p1)))) | ((F(p0)) & ((p0) | (G(p1)))))))","16",7 "!(X(G(((G(!(p0))) & (F(!(p1)))) | ((F(p0)) & ((p0) | (G(p1)))))))","16",7
"!(X(G(((G(!(p0))) & (F(!(p1)))) | ((F(p0)) & ((p0) | (G(p1)))))))","17",7 "!(X(G(((G(!(p0))) & (F(!(p1)))) | ((F(p0)) & ((p0) | (G(p1)))))))","17",7
"!(X(G(((G(!(p0))) & (F(!(p1)))) | ((F(p0)) & ((p0) | (G(p1)))))))","18",7
"X((G(F(p0))) | (G(!(p0))))","1",4 "X((G(F(p0))) | (G(!(p0))))","1",4
"X((G(F(p0))) | (G(!(p0))))","2",4 "X((G(F(p0))) | (G(!(p0))))","2",4
"X((G(F(p0))) | (G(!(p0))))","3",3 "X((G(F(p0))) | (G(!(p0))))","3",3
@ -1598,7 +1511,6 @@ cat >expected <<'EOF'
"X((G(F(p0))) | (G(!(p0))))","15",3 "X((G(F(p0))) | (G(!(p0))))","15",3
"X((G(F(p0))) | (G(!(p0))))","16",3 "X((G(F(p0))) | (G(!(p0))))","16",3
"X((G(F(p0))) | (G(!(p0))))","17",3 "X((G(F(p0))) | (G(!(p0))))","17",3
"X((G(F(p0))) | (G(!(p0))))","18",3
"!(X((G(F(p0))) | (G(!(p0)))))","1",4 "!(X((G(F(p0))) | (G(!(p0)))))","1",4
"!(X((G(F(p0))) | (G(!(p0)))))","2",4 "!(X((G(F(p0))) | (G(!(p0)))))","2",4
"!(X((G(F(p0))) | (G(!(p0)))))","3",4 "!(X((G(F(p0))) | (G(!(p0)))))","3",4
@ -1615,7 +1527,6 @@ cat >expected <<'EOF'
"!(X((G(F(p0))) | (G(!(p0)))))","15",4 "!(X((G(F(p0))) | (G(!(p0)))))","15",4
"!(X((G(F(p0))) | (G(!(p0)))))","16",4 "!(X((G(F(p0))) | (G(!(p0)))))","16",4
"!(X((G(F(p0))) | (G(!(p0)))))","17",4 "!(X((G(F(p0))) | (G(!(p0)))))","17",4
"!(X((G(F(p0))) | (G(!(p0)))))","18",4
"G((G(!(p0))) | (F(!(p1))) | (G(!(p2))))","1",4 "G((G(!(p0))) | (F(!(p1))) | (G(!(p2))))","1",4
"G((G(!(p0))) | (F(!(p1))) | (G(!(p2))))","2",4 "G((G(!(p0))) | (F(!(p1))) | (G(!(p2))))","2",4
"G((G(!(p0))) | (F(!(p1))) | (G(!(p2))))","3",4 "G((G(!(p0))) | (F(!(p1))) | (G(!(p2))))","3",4
@ -1632,7 +1543,6 @@ cat >expected <<'EOF'
"G((G(!(p0))) | (F(!(p1))) | (G(!(p2))))","15",4 "G((G(!(p0))) | (F(!(p1))) | (G(!(p2))))","15",4
"G((G(!(p0))) | (F(!(p1))) | (G(!(p2))))","16",4 "G((G(!(p0))) | (F(!(p1))) | (G(!(p2))))","16",4
"G((G(!(p0))) | (F(!(p1))) | (G(!(p2))))","17",4 "G((G(!(p0))) | (F(!(p1))) | (G(!(p2))))","17",4
"G((G(!(p0))) | (F(!(p1))) | (G(!(p2))))","18",4
"!(G((G(!(p0))) | (F(!(p1))) | (G(!(p2)))))","1",4 "!(G((G(!(p0))) | (F(!(p1))) | (G(!(p2)))))","1",4
"!(G((G(!(p0))) | (F(!(p1))) | (G(!(p2)))))","2",4 "!(G((G(!(p0))) | (F(!(p1))) | (G(!(p2)))))","2",4
"!(G((G(!(p0))) | (F(!(p1))) | (G(!(p2)))))","3",4 "!(G((G(!(p0))) | (F(!(p1))) | (G(!(p2)))))","3",4
@ -1649,7 +1559,6 @@ cat >expected <<'EOF'
"!(G((G(!(p0))) | (F(!(p1))) | (G(!(p2)))))","15",4 "!(G((G(!(p0))) | (F(!(p1))) | (G(!(p2)))))","15",4
"!(G((G(!(p0))) | (F(!(p1))) | (G(!(p2)))))","16",4 "!(G((G(!(p0))) | (F(!(p1))) | (G(!(p2)))))","16",4
"!(G((G(!(p0))) | (F(!(p1))) | (G(!(p2)))))","17",4 "!(G((G(!(p0))) | (F(!(p1))) | (G(!(p2)))))","17",4
"!(G((G(!(p0))) | (F(!(p1))) | (G(!(p2)))))","18",4
"G((p0) | (F(p0)))","1",1 "G((p0) | (F(p0)))","1",1
"G((p0) | (F(p0)))","2",1 "G((p0) | (F(p0)))","2",1
"G((p0) | (F(p0)))","3",1 "G((p0) | (F(p0)))","3",1
@ -1666,7 +1575,6 @@ cat >expected <<'EOF'
"G((p0) | (F(p0)))","15",1 "G((p0) | (F(p0)))","15",1
"G((p0) | (F(p0)))","16",1 "G((p0) | (F(p0)))","16",1
"G((p0) | (F(p0)))","17",1 "G((p0) | (F(p0)))","17",1
"G((p0) | (F(p0)))","18",1
"!(G((p0) | (F(p0))))","1",2 "!(G((p0) | (F(p0))))","1",2
"!(G((p0) | (F(p0))))","2",2 "!(G((p0) | (F(p0))))","2",2
"!(G((p0) | (F(p0))))","3",2 "!(G((p0) | (F(p0))))","3",2
@ -1683,7 +1591,6 @@ cat >expected <<'EOF'
"!(G((p0) | (F(p0))))","15",2 "!(G((p0) | (F(p0))))","15",2
"!(G((p0) | (F(p0))))","16",2 "!(G((p0) | (F(p0))))","16",2
"!(G((p0) | (F(p0))))","17",2 "!(G((p0) | (F(p0))))","17",2
"!(G((p0) | (F(p0))))","18",2
EOF EOF
diff expected output diff expected output

View file

@ -61,37 +61,37 @@ diff output expected
ltl2tgba -BD -x sat-minimize "GF(a <-> XXb)" -H >out ltl2tgba -BD -x sat-minimize "GF(a <-> XXb)" -H >out
grep 'properties:.*state-acc' out grep 'properties:.*state-acc' out
grep 'properties:.*deterministic' out grep 'properties:.*deterministic' out
ltl2tgba -BD -x sat-minimize=2 "GF(a <-> XXb)" -H >out ltl2tgba -BD -x 'sat-minimize,sat-langmap' "GF(a <-> XXb)" -H >out
grep 'properties:.*state-acc' out grep 'properties:.*state-acc' out
grep 'properties:.*deterministic' out grep 'properties:.*deterministic' out
ltl2tgba -BD -x 'sat-minimize=2,langmap' "GF(a <-> XXb)" -H >out ltl2tgba -BD -x 'sat-minimize=2, sat-incr-steps=0' "GF(a <-> XXb)" -H >out
grep 'properties:.*state-acc' out grep 'properties:.*state-acc' out
grep 'properties:.*deterministic' out grep 'properties:.*deterministic' out
ltl2tgba -BD -x 'sat-minimize=4,param=0' "GF(a <-> XXb)" -H >out ltl2tgba -BD -x 'sat-minimize=2, sat-incr-steps=1' "GF(a <-> XXb)" -H >out
grep 'properties:.*state-acc' out grep 'properties:.*state-acc' out
grep 'properties:.*deterministic' out grep 'properties:.*deterministic' out
ltl2tgba -BD -x 'sat-minimize=4,param=1' "GF(a <-> XXb)" -H >out ltl2tgba -BD -x 'sat-minimize=2, sat-incr-steps=2' "GF(a <-> XXb)" -H >out
grep 'properties:.*state-acc' out grep 'properties:.*state-acc' out
grep 'properties:.*deterministic' out grep 'properties:.*deterministic' out
ltl2tgba -BD -x 'sat-minimize=4,param=2' "GF(a <-> XXb)" -H >out ltl2tgba -BD -x 'sat-minimize=2, sat-incr-steps=50' "GF(a <-> XXb)" -H >out
grep 'properties:.*state-acc' out grep 'properties:.*state-acc' out
grep 'properties:.*deterministic' out grep 'properties:.*deterministic' out
ltl2tgba -BD -x 'sat-minimize=4,param=50' "GF(a <-> XXb)" -H >out ltl2tgba -BD -x 'sat-minimize=3, sat-incr-steps=-1' "GF(a <-> XXb)" -H >out
grep 'properties:.*state-acc' out grep 'properties:.*state-acc' out
grep 'properties:.*deterministic' out grep 'properties:.*deterministic' out
ltl2tgba -BD -x 'sat-minimize=3,param=-1' "GF(a <-> XXb)" -H >out ltl2tgba -BD -x 'sat-minimize=3, sat-incr-steps=0' "GF(a <-> XXb)" -H >out
grep 'properties:.*state-acc' out grep 'properties:.*state-acc' out
grep 'properties:.*deterministic' out grep 'properties:.*deterministic' out
ltl2tgba -BD -x 'sat-minimize=3,param=-0' "GF(a <-> XXb)" -H >out ltl2tgba -BD -x 'sat-minimize=3, sat-incr-steps=1' "GF(a <-> XXb)" -H >out
grep 'properties:.*state-acc' out grep 'properties:.*state-acc' out
grep 'properties:.*deterministic' out grep 'properties:.*deterministic' out
ltl2tgba -BD -x 'sat-minimize=3,param=1' "GF(a <-> XXb)" -H >out ltl2tgba -BD -x 'sat-minimize=3, sat-incr-steps=2' "GF(a <-> XXb)" -H >out
grep 'properties:.*state-acc' out grep 'properties:.*state-acc' out
grep 'properties:.*deterministic' out grep 'properties:.*deterministic' out
ltl2tgba -BD -x 'sat-minimize=3,param=2' "GF(a <-> XXb)" -H >out ltl2tgba -BD -x 'sat-minimize=3, sat-incr-steps=50' "GF(a <-> XXb)" -H >out
grep 'properties:.*state-acc' out grep 'properties:.*state-acc' out
grep 'properties:.*deterministic' out grep 'properties:.*deterministic' out
ltl2tgba -BD -x 'sat-minimize=3,param=50' "GF(a <-> XXb)" -H >out ltl2tgba -BD -x sat-minimize=4 "GF(a <-> XXb)" -H >out
grep 'properties:.*state-acc' out grep 'properties:.*state-acc' out
grep 'properties:.*deterministic' out grep 'properties:.*deterministic' out
@ -134,77 +134,78 @@ EOF
# automata. # automata.
$autfilt --sat-minimize='acc="Fin(0)|Inf(1)"' test.hoa --stats=%s >output $autfilt --sat-minimize='acc="Fin(0)|Inf(1)"' test.hoa --stats=%s >output
test `cat output` = 1 test `cat output` = 1
$autfilt --sat-minimize='dicho,acc="Fin(0)|Inf(1)"' test.hoa --stats=%s >output $autfilt --sat-minimize='sat-langmap,acc="Fin(0)|Inf(1)"' test.hoa --stats=%s \
>output
test `cat output` = 1 test `cat output` = 1
$autfilt --sat-minimize='dicho,langmap,acc="Fin(0)|Inf(1)"' test.hoa \ $autfilt --sat-minimize='acc="Fin(0)|Inf(1)",sat-incr=1,sat-incr-steps=0' \
--stats=%s >output test.hoa --stats=%s >output
test `cat output` = 1 test `cat output` = 1
$autfilt --sat-minimize='acc="Fin(0)|Inf(1)",assume,param=0' test.hoa \ $autfilt --sat-minimize='acc="Fin(0)|Inf(1)",sat-incr=1,sat-incr-steps=1' \
--stats=%s >output test.hoa --stats=%s >output
test `cat output` = 1 test `cat output` = 1
$autfilt --sat-minimize='acc="Fin(0)|Inf(1)",assume,param=1' test.hoa \ $autfilt --sat-minimize='acc="Fin(0)|Inf(1)",sat-incr=1,sat-incr-steps=2' \
--stats=%s >output test.hoa --stats=%s >output
test `cat output` = 1 test `cat output` = 1
$autfilt --sat-minimize='acc="Fin(0)|Inf(1)",assume,param=2' test.hoa \ $autfilt --sat-minimize='acc="Fin(0)|Inf(1)",sat-incr=1,sat-incr-steps=50' \
--stats=%s >output test.hoa --stats=%s >output
test `cat output` = 1 test `cat output` = 1
$autfilt --sat-minimize='acc="Fin(0)|Inf(1)",assume,param=50' test.hoa \ $autfilt --sat-minimize='acc="Fin(0)|Inf(1)"sat-incr=2,sat-incr-steps=-1' \
--stats=%s >output test.hoa --stats=%s >output
test `cat output` = 1 test `cat output` = 1
$autfilt --sat-minimize='acc="Fin(0)|Inf(1)",incr,param=-1' test.hoa \ $autfilt --sat-minimize='acc="Fin(0)|Inf(1)"sat-incr=2,sat-incr-steps=0' \
--stats=%s >output test.hoa --stats=%s >output
test `cat output` = 1 test `cat output` = 1
$autfilt --sat-minimize='acc="Fin(0)|Inf(1)",incr,param=0' test.hoa \ $autfilt --sat-minimize='acc="Fin(0)|Inf(1)"sat-incr=2,sat-incr-steps=1' \
--stats=%s >output test.hoa --stats=%s >output
test `cat output` = 1 test `cat output` = 1
$autfilt --sat-minimize='acc="Fin(0)|Inf(1)",incr,param=1' test.hoa \ $autfilt --sat-minimize='acc="Fin(0)|Inf(1)"sat-incr=2,sat-incr-steps=2' \
--stats=%s >output test.hoa --stats=%s >output
test `cat output` = 1 test `cat output` = 1
$autfilt --sat-minimize='acc="Fin(0)|Inf(1)",incr,param=2' test.hoa \ $autfilt --sat-minimize='acc="Fin(0)|Inf(1)"sat-incr=2,sat-incr-steps=50' \
--stats=%s >output test.hoa --stats=%s >output
test `cat output` = 1 test `cat output` = 1
$autfilt --sat-minimize='acc="Fin(0)|Inf(1)",incr,param=50' test.hoa \ $autfilt --sat-minimize='sat-naive,acc="Fin(0)|Inf(1)"' test.hoa \
--stats=%s >output --stats=%s >output
test `cat output` = 1 test `cat output` = 1
# How about a state-based DSA? # How about a state-based DSA ?
$autfilt -S --sat-minimize='acc="Fin(0)|Inf(1)"' test.hoa \ $autfilt -S --sat-minimize='acc="Fin(0)|Inf(1)"' test.hoa \
--stats=%s > output --stats=%s > output
test `cat output` = 3 test `cat output` = 3
$autfilt -S --sat-minimize='dicho,acc="Fin(0)|Inf(1)"' test.hoa \ $autfilt -S --sat-minimize='sat-langmap,acc="Fin(0)|Inf(1)"' test.hoa \
--stats=%s > output
test `cat output` = 3
$autfilt -S --sat-minimize='dicho,langmap,acc="Fin(0)|Inf(1)"' test.hoa \
--stats=%s > output
test `cat output` = 3
$autfilt -S --sat-minimize='acc="Fin(0)|Inf(1)",assume,param=0' test.hoa \
--stats=%s > output
test `cat output` = 3
$autfilt -S --sat-minimize='acc="Fin(0)|Inf(1)",assume,param=1' test.hoa \
--stats=%s > output
test `cat output` = 3
$autfilt -S --sat-minimize='acc="Fin(0)|Inf(1)",assume,param=2' test.hoa \
--stats=%s > output
test `cat output` = 3
$autfilt -S --sat-minimize='acc="Fin(0)|Inf(1)",assume,param=50' test.hoa \
--stats=%s > output
test `cat output` = 3
$autfilt -S --sat-minimize='acc="Fin(0)|Inf(1)",incr,param=-1' test.hoa \
--stats=%s > output
test `cat output` = 3
$autfilt -S --sat-minimize='acc="Fin(0)|Inf(1)",incr,param=0' test.hoa \
--stats=%s > output
test `cat output` = 3
$autfilt -S --sat-minimize='acc="Fin(0)|Inf(1)",incr,param=1' test.hoa \
--stats=%s > output
test `cat output` = 3
$autfilt -S --sat-minimize='acc="Fin(0)|Inf(1)",incr,param=2' test.hoa \
--stats=%s > output
test `cat output` = 3
$autfilt -S --sat-minimize='acc="Fin(0)|Inf(1)",incr,param=50' test.hoa \
--stats=%s > output --stats=%s > output
test `cat output` = 3 test `cat output` = 3
$autfilt --sat-minimize='acc="Fin(0)|Inf(1)",sat-incr=1,sat-incr-steps=0' \
test.hoa --stats=%s >output
test `cat output` = 1
$autfilt --sat-minimize='acc="Fin(0)|Inf(1)",sat-incr=1,sat-incr-steps=1' \
test.hoa --stats=%s >output
test `cat output` = 1
$autfilt --sat-minimize='acc="Fin(0)|Inf(1)",sat-incr=1,sat-incr-steps=2' \
test.hoa --stats=%s >output
test `cat output` = 1
$autfilt --sat-minimize='acc="Fin(0)|Inf(1)",sat-incr=1,sat-incr-steps=50' \
test.hoa --stats=%s >output
test `cat output` = 1
$autfilt --sat-minimize='acc="Fin(0)|Inf(1)"sat-incr=2,sat-incr-steps=-1' \
test.hoa --stats=%s >output
test `cat output` = 1
$autfilt --sat-minimize='acc="Fin(0)|Inf(1)"sat-incr=2,sat-incr-steps=0' \
test.hoa --stats=%s >output
test `cat output` = 1
$autfilt --sat-minimize='acc="Fin(0)|Inf(1)"sat-incr=2,sat-incr-steps=1' \
test.hoa --stats=%s >output
test `cat output` = 1
$autfilt --sat-minimize='acc="Fin(0)|Inf(1)"sat-incr=2,sat-incr-steps=2' \
test.hoa --stats=%s >output
test `cat output` = 1
$autfilt --sat-minimize='acc="Fin(0)|Inf(1)"sat-incr=2,sat-incr-steps=50' \
test.hoa --stats=%s >output
test `cat output` = 1
$autfilt --sat-minimize='acc="Fin(0)|Inf(1)",sat-naive' test.hoa \
--stats=%s >output
test `cat output` = 1
# How about a state-based DPA? # How about a state-based DPA?
@ -216,7 +217,7 @@ grep 'States: 3' output
grep 'acc-name: parity max even 3' output grep 'acc-name: parity max even 3' output
grep 'Acceptance: 3 Inf(2) | (Fin(1) & Inf(0))' output grep 'Acceptance: 3 Inf(2) | (Fin(1) & Inf(0))' output
test 3 = `grep -c 'State: [012] {[012]}' output` test 3 = `grep -c 'State: [012] {[012]}' output`
$autfilt -S --sat-minimize='acc="parity max even 3",colored,dicho' -H \ $autfilt -S --sat-minimize='acc="parity max even 3",colored,sat-langmap' -H \
test.hoa > output test.hoa > output
cat output cat output
grep 'properties:.*colored' output grep 'properties:.*colored' output
@ -224,15 +225,8 @@ grep 'States: 3' output
grep 'acc-name: parity max even 3' output grep 'acc-name: parity max even 3' output
grep 'Acceptance: 3 Inf(2) | (Fin(1) & Inf(0))' output grep 'Acceptance: 3 Inf(2) | (Fin(1) & Inf(0))' output
test 3 = `grep -c 'State: [012] {[012]}' output` test 3 = `grep -c 'State: [012] {[012]}' output`
$autfilt -S --sat-minimize='acc="parity max even 3",colored,dicho,langmap' -H \ $autfilt -S \
test.hoa > output --sat-minimize='acc="parity max even 3",colored,sat-incr=1,sat-incr-steps=0' \
cat output
grep 'properties:.*colored' output
grep 'States: 3' output
grep 'acc-name: parity max even 3' output
grep 'Acceptance: 3 Inf(2) | (Fin(1) & Inf(0))' output
test 3 = `grep -c 'State: [012] {[012]}' output`
$autfilt -S --sat-minimize='acc="parity max even 3",colored,assume,param=0' \
-H test.hoa > output -H test.hoa > output
cat output cat output
grep 'properties:.*colored' output grep 'properties:.*colored' output
@ -240,7 +234,8 @@ grep 'States: 3' output
grep 'acc-name: parity max even 3' output grep 'acc-name: parity max even 3' output
grep 'Acceptance: 3 Inf(2) | (Fin(1) & Inf(0))' output grep 'Acceptance: 3 Inf(2) | (Fin(1) & Inf(0))' output
test 3 = `grep -c 'State: [012] {[012]}' output` test 3 = `grep -c 'State: [012] {[012]}' output`
$autfilt -S --sat-minimize='acc="parity max even 3",colored,assume,param=1' \ $autfilt -S \
--sat-minimize='acc="parity max even 3",colored,sat-incr=1,sat-incr-steps=1' \
-H test.hoa > output -H test.hoa > output
cat output cat output
grep 'properties:.*colored' output grep 'properties:.*colored' output
@ -248,7 +243,8 @@ grep 'States: 3' output
grep 'acc-name: parity max even 3' output grep 'acc-name: parity max even 3' output
grep 'Acceptance: 3 Inf(2) | (Fin(1) & Inf(0))' output grep 'Acceptance: 3 Inf(2) | (Fin(1) & Inf(0))' output
test 3 = `grep -c 'State: [012] {[012]}' output` test 3 = `grep -c 'State: [012] {[012]}' output`
$autfilt -S --sat-minimize='acc="parity max even 3",colored,assume,param=2' \ $autfilt -S \
--sat-minimize='acc="parity max even 3",colored,sat-incr=1,sat-incr-steps=2' \
-H test.hoa > output -H test.hoa > output
cat output cat output
grep 'properties:.*colored' output grep 'properties:.*colored' output
@ -256,7 +252,8 @@ grep 'States: 3' output
grep 'acc-name: parity max even 3' output grep 'acc-name: parity max even 3' output
grep 'Acceptance: 3 Inf(2) | (Fin(1) & Inf(0))' output grep 'Acceptance: 3 Inf(2) | (Fin(1) & Inf(0))' output
test 3 = `grep -c 'State: [012] {[012]}' output` test 3 = `grep -c 'State: [012] {[012]}' output`
$autfilt -S --sat-minimize='acc="parity max even 3",colored,assume,param=50' \ $autfilt -S \
--sat-minimize='acc="parity max even 3",colored,sat-incr=1,sat-incr-steps=50'\
-H test.hoa > output -H test.hoa > output
cat output cat output
grep 'properties:.*colored' output grep 'properties:.*colored' output
@ -264,7 +261,8 @@ grep 'States: 3' output
grep 'acc-name: parity max even 3' output grep 'acc-name: parity max even 3' output
grep 'Acceptance: 3 Inf(2) | (Fin(1) & Inf(0))' output grep 'Acceptance: 3 Inf(2) | (Fin(1) & Inf(0))' output
test 3 = `grep -c 'State: [012] {[012]}' output` test 3 = `grep -c 'State: [012] {[012]}' output`
$autfilt -S --sat-minimize='acc="parity max even 3",colored,incr,param=-1' \ $autfilt -S \
--sat-minimize='acc="parity max even 3",colored,sat-incr=2,sat-incr-steps=-1'\
-H test.hoa > output -H test.hoa > output
cat output cat output
grep 'properties:.*colored' output grep 'properties:.*colored' output
@ -272,7 +270,8 @@ grep 'States: 3' output
grep 'acc-name: parity max even 3' output grep 'acc-name: parity max even 3' output
grep 'Acceptance: 3 Inf(2) | (Fin(1) & Inf(0))' output grep 'Acceptance: 3 Inf(2) | (Fin(1) & Inf(0))' output
test 3 = `grep -c 'State: [012] {[012]}' output` test 3 = `grep -c 'State: [012] {[012]}' output`
$autfilt -S --sat-minimize='acc="parity max even 3",colored,incr,param=0' \ $autfilt -S \
--sat-minimize='acc="parity max even 3",colored,sat-incr=2,sat-incr-steps=0' \
-H test.hoa > output -H test.hoa > output
cat output cat output
grep 'properties:.*colored' output grep 'properties:.*colored' output
@ -280,7 +279,8 @@ grep 'States: 3' output
grep 'acc-name: parity max even 3' output grep 'acc-name: parity max even 3' output
grep 'Acceptance: 3 Inf(2) | (Fin(1) & Inf(0))' output grep 'Acceptance: 3 Inf(2) | (Fin(1) & Inf(0))' output
test 3 = `grep -c 'State: [012] {[012]}' output` test 3 = `grep -c 'State: [012] {[012]}' output`
$autfilt -S --sat-minimize='acc="parity max even 3",colored,incr,param=1' \ $autfilt -S \
--sat-minimize='acc="parity max even 3",colored,sat-incr=2,sat-incr-steps=1' \
-H test.hoa > output -H test.hoa > output
cat output cat output
grep 'properties:.*colored' output grep 'properties:.*colored' output
@ -288,7 +288,8 @@ grep 'States: 3' output
grep 'acc-name: parity max even 3' output grep 'acc-name: parity max even 3' output
grep 'Acceptance: 3 Inf(2) | (Fin(1) & Inf(0))' output grep 'Acceptance: 3 Inf(2) | (Fin(1) & Inf(0))' output
test 3 = `grep -c 'State: [012] {[012]}' output` test 3 = `grep -c 'State: [012] {[012]}' output`
$autfilt -S --sat-minimize='acc="parity max even 3",colored,incr,param=2' \ $autfilt -S \
--sat-minimize='acc="parity max even 3",colored,sat-incr=2,sat-incr-steps=2' \
-H test.hoa > output -H test.hoa > output
cat output cat output
grep 'properties:.*colored' output grep 'properties:.*colored' output
@ -296,7 +297,16 @@ grep 'States: 3' output
grep 'acc-name: parity max even 3' output grep 'acc-name: parity max even 3' output
grep 'Acceptance: 3 Inf(2) | (Fin(1) & Inf(0))' output grep 'Acceptance: 3 Inf(2) | (Fin(1) & Inf(0))' output
test 3 = `grep -c 'State: [012] {[012]}' output` test 3 = `grep -c 'State: [012] {[012]}' output`
$autfilt -S --sat-minimize='acc="parity max even 3",colored,incr,param=50' \ $autfilt -S \
--sat-minimize='acc="parity max even 3",colored,sat-incr=2,sat-incr-steps=50'\
-H test.hoa > output
cat output
grep 'properties:.*colored' output
grep 'States: 3' output
grep 'acc-name: parity max even 3' output
grep 'Acceptance: 3 Inf(2) | (Fin(1) & Inf(0))' output
test 3 = `grep -c 'State: [012] {[012]}' output`
$autfilt -S --sat-minimize='acc="parity max even 3",colored,sat-naive' \
-H test.hoa > output -H test.hoa > output
cat output cat output
grep 'properties:.*colored' output grep 'properties:.*colored' output
@ -339,27 +349,27 @@ State: 0
EOF EOF
$autfilt -H --sat-minimize special.hoa > output $autfilt -H --sat-minimize special.hoa > output
diff output expected diff output expected
$autfilt -H --sat-minimize='dicho' special.hoa > output $autfilt -H --sat-minimize='sat-langmap' special.hoa > output
diff output expected diff output expected
$autfilt -H --sat-minimize='dicho,langmap' special.hoa > output $autfilt -H --sat-minimize='sat-incr=1,sat-incr-steps=0' special.hoa > output
diff output expected diff output expected
$autfilt -H --sat-minimize='assume,param=0' special.hoa > output $autfilt -H --sat-minimize='sat-incr=1,sat-incr-steps=1' special.hoa > output
diff output expected diff output expected
$autfilt -H --sat-minimize='assume,param=1' special.hoa > output $autfilt -H --sat-minimize='sat-incr=1,sat-incr-steps=2' special.hoa > output
diff output expected diff output expected
$autfilt -H --sat-minimize='assume,param=2' special.hoa > output $autfilt -H --sat-minimize='sat-incr=1,sat-incr-steps=50' special.hoa > output
diff output expected diff output expected
$autfilt -H --sat-minimize='assume,param=50' special.hoa > output $autfilt -H --sat-minimize='sat-incr=2,sat-incr-steps=-1' special.hoa > output
diff output expected diff output expected
$autfilt -H --sat-minimize='incr,param=-1' special.hoa > output $autfilt -H --sat-minimize='sat-incr=2,sat-incr-steps=0' special.hoa > output
diff output expected diff output expected
$autfilt -H --sat-minimize='incr,param=0' special.hoa > output $autfilt -H --sat-minimize='sat-incr=2,sat-incr-steps=1' special.hoa > output
diff output expected diff output expected
$autfilt -H --sat-minimize='incr,param=1' special.hoa > output $autfilt -H --sat-minimize='sat-incr=2,sat-incr-steps=2' special.hoa > output
diff output expected diff output expected
$autfilt -H --sat-minimize='incr,param=2' special.hoa > output $autfilt -H --sat-minimize='sat-incr=2,sat-incr-steps=50' special.hoa > output
diff output expected diff output expected
$autfilt -H --sat-minimize='incr,param=50' special.hoa > output $autfilt -H --sat-minimize='sat-naive' special.hoa > output
diff output expected diff output expected
@ -380,37 +390,46 @@ EOF
$autfilt --sat-minimize='acc="Streett 1",max-states=2' foo.hoa \ $autfilt --sat-minimize='acc="Streett 1",max-states=2' foo.hoa \
--stats=%s >out --stats=%s >out
test "`cat out`" = 1 test "`cat out`" = 1
$autfilt --sat-minimize='acc="Streett 1",max-states=2,dicho' foo.hoa \ $autfilt --sat-minimize='acc="Streett 1",max-states=2,sat-langmap' foo.hoa \
--stats=%s >out --stats=%s >out
test "`cat out`" = 1 test "`cat out`" = 1
$autfilt --sat-minimize='acc="Streett 1",max-states=2,dicho,langmap' foo.hoa \ $autfilt \
--stats=%s >out --sat-minimize='acc="Streett 1",max-states=2,sat-incr=1,sat-incr-steps=0' \
foo.hoa --stats=%s >out
test "`cat out`" = 1 test "`cat out`" = 1
$autfilt --sat-minimize='acc="Streett 1",max-states=2,assume,param=0' foo.hoa \ $autfilt \
--stats=%s >out --sat-minimize='acc="Streett 1",max-states=2,sat-incr=1,sat-incr-steps=1' \
foo.hoa --stats=%s >out
test "`cat out`" = 1 test "`cat out`" = 1
$autfilt --sat-minimize='acc="Streett 1",max-states=2,assume,param=1' foo.hoa \ $autfilt \
--stats=%s >out --sat-minimize='acc="Streett 1",max-states=2,sat-incr=1,sat-incr-steps=2' \
foo.hoa --stats=%s >out
test "`cat out`" = 1 test "`cat out`" = 1
$autfilt --sat-minimize='acc="Streett 1",max-states=2,assume,param=2' foo.hoa \ $autfilt \
--stats=%s >out --sat-minimize='acc="Streett 1",max-states=2,sat-incr=1,sat-incr-steps=50' \
foo.hoa --stats=%s >out
test "`cat out`" = 1 test "`cat out`" = 1
$autfilt --sat-minimize='acc="Streett 1",max-states=2,assume,param=50' foo.hoa \ $autfilt \
--stats=%s >out --sat-minimize='acc="Streett 1",max-states=2,sat-incr=2,sat-incr-steps=-1' \
foo.hoa --stats=%s >out
test "`cat out`" = 1 test "`cat out`" = 1
$autfilt --sat-minimize='acc="Streett 1",max-states=2,incr,param=-1' foo.hoa \ $autfilt \
--stats=%s >out --sat-minimize='acc="Streett 1",max-states=2,sat-incr=2,sat-incr-steps=0' \
foo.hoa --stats=%s >out
test "`cat out`" = 1 test "`cat out`" = 1
$autfilt --sat-minimize='acc="Streett 1",max-states=2,incr,param=0' foo.hoa \ $autfilt \
--stats=%s >out --sat-minimize='acc="Streett 1",max-states=2,sat-incr=2,sat-incr-steps=1' \
foo.hoa --stats=%s >out
test "`cat out`" = 1 test "`cat out`" = 1
$autfilt --sat-minimize='acc="Streett 1",max-states=2,incr,param=1' foo.hoa \ $autfilt \
--stats=%s >out --sat-minimize='acc="Streett 1",max-states=2,sat-incr=2,sat-incr-steps=2' \
foo.hoa --stats=%s >out
test "`cat out`" = 1 test "`cat out`" = 1
$autfilt --sat-minimize='acc="Streett 1",max-states=2,incr,param=2' foo.hoa \ $autfilt \
--stats=%s >out --sat-minimize='acc="Streett 1",max-states=2,sat-incr=2,sat-incr-steps=50' \
foo.hoa --stats=%s >out
test "`cat out`" = 1 test "`cat out`" = 1
$autfilt --sat-minimize='acc="Streett 1",max-states=2,incr,param=50' foo.hoa \ $autfilt --sat-minimize='acc="Streett 1",max-states=2,sat-naive' foo.hoa \
--stats=%s >out --stats=%s >out
test "`cat out`" = 1 test "`cat out`" = 1
@ -418,74 +437,86 @@ test "`cat out`" = 1
$autfilt --sat-minimize='acc="Rabin 1",max-states=4' foo.hoa \ $autfilt --sat-minimize='acc="Rabin 1",max-states=4' foo.hoa \
--stats=%s >out && exit 1 --stats=%s >out && exit 1
test -z "`cat out`" test -z "`cat out`"
$autfilt --sat-minimize='acc="Rabin 1",max-states=4,dicho' foo.hoa \ $autfilt --sat-minimize='acc="Rabin 1",max-states=4,sat-langmap' foo.hoa \
--stats=%s >out && exit 1 --stats=%s >out && exit 1
test -z "`cat out`" test -z "`cat out`"
$autfilt --sat-minimize='acc="Rabin 1",max-states=4,dicho,langmap' foo.hoa \ $autfilt \
--sat-minimize='acc="Rabin 1",max-states=4,sat-incr=1,sat-incr-steps=0' \
foo.hoa --stats=%s >out && exit 1
test -z "`cat out`"
$autfilt \
--sat-minimize='acc="Rabin 1",max-states=4,sat-incr=1,sat-incr-steps=1' \
foo.hoa --stats=%s >out && exit 1
test -z "`cat out`"
$autfilt \
--sat-minimize='acc="Rabin 1",max-states=4,sat-incr=1,sat-incr-steps=2' \
foo.hoa --stats=%s >out && exit 1
test -z "`cat out`"
$autfilt \
--sat-minimize='acc="Rabin 1",max-states=4,sat-incr=1,sat-incr-steps=50' \
foo.hoa --stats=%s >out && exit 1
test -z "`cat out`"
$autfilt \
--sat-minimize='acc="Rabin 1",max-states=4sat-incr=2,sat-incr-steps=-1' \
foo.hoa --stats=%s >out && exit 1
test -z "`cat out`"
$autfilt \
--sat-minimize='acc="Rabin 1",max-states=4sat-incr=2,sat-incr-steps=0' \
foo.hoa --stats=%s >out && exit 1
test -z "`cat out`"
$autfilt \
--sat-minimize='acc="Rabin 1",max-states=4sat-incr=2,sat-incr-steps=1' \
foo.hoa --stats=%s >out && exit 1
test -z "`cat out`"
$autfilt \
--sat-minimize='acc="Rabin 1",max-states=4sat-incr=2,sat-incr-steps=2' \
foo.hoa --stats=%s >out && exit 1
test -z "`cat out`"
$autfilt \
--sat-minimize='acc="Rabin 1",max-states=4sat-incr=2,sat-incr-steps=50' \
foo.hoa --stats=%s >out && exit 1
test -z "`cat out`"
$autfilt --sat-minimize='acc="Rabin 1",max-states=4,sat-naive' foo.hoa \
--stats=%s >out && exit 1 --stats=%s >out && exit 1
test -z "`cat out`" test -z "`cat out`"
$autfilt --sat-minimize='acc="Rabin 1",max-states=4,assume,param=0' foo.hoa \
--stats=%s >out && exit 1
test -z "`cat out`"
$autfilt --sat-minimize='acc="Rabin 1",max-states=4,assume,param=1' foo.hoa \
--stats=%s >out && exit 1
test -z "`cat out`"
$autfilt --sat-minimize='acc="Rabin 1",max-states=4,assume,param=2' foo.hoa \
--stats=%s >out && exit 1
test -z "`cat out`"
$autfilt --sat-minimize='acc="Rabin 1",max-states=4,assume,param=50' foo.hoa \
--stats=%s >out && exit 1
test -z "`cat out`"
$autfilt --sat-minimize='acc="Rabin 1",max-states=4,incr,param=-1' foo.hoa \
--stats=%s >out && exit 1
test -z "`cat out`"
$autfilt --sat-minimize='acc="Rabin 1",max-states=4,incr,param=0' foo.hoa \
--stats=%s >out && exit 1
test -z "`cat out`"
$autfilt --sat-minimize='acc="Rabin 1",max-states=4,incr,param=1' foo.hoa \
--stats=%s >out && exit 1
test -z "`cat out`"
$autfilt --sat-minimize='acc="Rabin 1",max-states=4,incr,param=2' foo.hoa \
--stats=%s >out && exit 1
test -z "`cat out`"
$autfilt --sat-minimize='acc="Rabin 1",max-states=4,incr,param=50' foo.hoa \
--stats=%s >out && exit 1
test -z "`cat out`"
$autfilt --sat-minimize='acc="Inf(0)&Fin(1)|Inf(2)",states=1' foo.hoa \ $autfilt --sat-minimize='acc="Inf(0)&Fin(1)|Inf(2)",states=1' foo.hoa \
--stats=%s >out --stats=%s >out
test "`cat out`" = 1 test "`cat out`" = 1
$autfilt --sat-minimize='acc="Inf(0)&Fin(1)|Inf(2)",states=1,dicho' foo.hoa \
--stats=%s >out
test "`cat out`" = 1 options='acc="Inf(0)&Fin(1)|Inf(2)",states=1'
$autfilt --sat-minimize='acc="Inf(0)&Fin(1)|Inf(2)",states=1,dicho,langmap' \
$autfilt --sat-minimize=$options',sat-langmap' \
foo.hoa --stats=%s >out foo.hoa --stats=%s >out
test "`cat out`" = 1 test "`cat out`" = 1
$autfilt --sat-minimize='acc="Inf(0)&Fin(1)|Inf(2)",states=1,assume,param=0' \ $autfilt --sat-minimize=$options',sat-incr=1,sat-incr-steps=0' \
foo.hoa --stats=%s >out foo.hoa --stats=%s >out
test "`cat out`" = 1 test "`cat out`" = 1
$autfilt --sat-minimize='acc="Inf(0)&Fin(1)|Inf(2)",states=1,assume,param=1' \ $autfilt --sat-minimize=$options',sat-incr=1,sat-incr-steps=1' \
foo.hoa --stats=%s >out foo.hoa --stats=%s >out
test "`cat out`" = 1 test "`cat out`" = 1
$autfilt --sat-minimize='acc="Inf(0)&Fin(1)|Inf(2)",states=1,assume,param=2' \ $autfilt --sat-minimize=$options',sat-incr=1,sat-incr-steps=2' \
foo.hoa --stats=%s >out foo.hoa --stats=%s >out
test "`cat out`" = 1 test "`cat out`" = 1
$autfilt --sat-minimize='acc="Inf(0)&Fin(1)|Inf(2)",states=1,assume,param=50' \ $autfilt --sat-minimize=$options',sat-incr=1,sat-incr-steps=50' \
foo.hoa --stats=%s >out foo.hoa --stats=%s >out
test "`cat out`" = 1 test "`cat out`" = 1
$autfilt --sat-minimize='acc="Inf(0)&Fin(1)|Inf(2)",states=1,incr,param=-1' \ $autfilt --sat-minimize=$options',sat-incr=2,sat-incr-steps=-1' \
foo.hoa --stats=%s >out foo.hoa --stats=%s >out
test "`cat out`" = 1 test "`cat out`" = 1
$autfilt --sat-minimize='acc="Inf(0)&Fin(1)|Inf(2)",states=1,incr,param=0' \ $autfilt --sat-minimize=$options',sat-incr=2,sat-incr-steps=0' \
foo.hoa --stats=%s >out foo.hoa --stats=%s >out
test "`cat out`" = 1 test "`cat out`" = 1
$autfilt --sat-minimize='acc="Inf(0)&Fin(1)|Inf(2)",states=1,incr,param=1' \ $autfilt --sat-minimize=$options',sat-incr=2,sat-incr-steps=1' \
foo.hoa --stats=%s >out foo.hoa --stats=%s >out
test "`cat out`" = 1 test "`cat out`" = 1
$autfilt --sat-minimize='acc="Inf(0)&Fin(1)|Inf(2)",states=1,incr,param=2' \ $autfilt --sat-minimize=$options',sat-incr=2,sat-incr-steps=2' \
foo.hoa --stats=%s >out foo.hoa --stats=%s >out
test "`cat out`" = 1 test "`cat out`" = 1
$autfilt --sat-minimize='acc="Inf(0)&Fin(1)|Inf(2)",states=1,incr,param=50' \ $autfilt --sat-minimize=$options',sat-incr=2,sat-incr-steps=50' \
foo.hoa --stats=%s >out
test "`cat out`" = 1
$autfilt --sat-minimize=$options',sat-naive' \
foo.hoa --stats=%s >out foo.hoa --stats=%s >out
test "`cat out`" = 1 test "`cat out`" = 1

View file

@ -29,177 +29,211 @@ assert aut.is_deterministic()
min1 = spot.sat_minimize(aut, acc='Rabin 1') min1 = spot.sat_minimize(aut, acc='Rabin 1')
assert min1.num_sets() == 2 assert min1.num_sets() == 2
assert min1.num_states() == 2 assert min1.num_states() == 2
min1 = spot.sat_minimize(aut, acc='Rabin 1', dicho=True) min1 = spot.sat_minimize(aut, acc='Rabin 1', sat_langmap=True)
assert min1.num_sets() == 2 assert min1.num_sets() == 2
assert min1.num_states() == 2 assert min1.num_states() == 2
min1 = spot.sat_minimize(aut, acc='Rabin 1', assume=True) min1 = spot.sat_minimize(aut, acc='Rabin 1', sat_incr=1)
assert min1.num_sets() == 2 assert min1.num_sets() == 2
assert min1.num_states() == 2 assert min1.num_states() == 2
min1 = spot.sat_minimize(aut, acc='Rabin 1', assume=True, param=0) min1 = spot.sat_minimize(aut, acc='Rabin 1', sat_incr=1, sat_incr_steps=0)
assert min1.num_sets() == 2 assert min1.num_sets() == 2
assert min1.num_states() == 2 assert min1.num_states() == 2
min1 = spot.sat_minimize(aut, acc='Rabin 1', assume=True, param=1) min1 = spot.sat_minimize(aut, acc='Rabin 1', sat_incr=1, sat_incr_steps=1)
assert min1.num_sets() == 2 assert min1.num_sets() == 2
assert min1.num_states() == 2 assert min1.num_states() == 2
min1 = spot.sat_minimize(aut, acc='Rabin 1', assume=True, param=2) min1 = spot.sat_minimize(aut, acc='Rabin 1', sat_incr=1, sat_incr_steps=2)
assert min1.num_sets() == 2 assert min1.num_sets() == 2
assert min1.num_states() == 2 assert min1.num_states() == 2
min1 = spot.sat_minimize(aut, acc='Rabin 1', assume=True, param=50) min1 = spot.sat_minimize(aut, acc='Rabin 1', sat_incr=1, sat_incr_steps=50)
assert min1.num_sets() == 2 assert min1.num_sets() == 2
assert min1.num_states() == 2 assert min1.num_states() == 2
min1 = spot.sat_minimize(aut, acc='Rabin 1', incr=True) min1 = spot.sat_minimize(aut, acc='Rabin 1', sat_incr=2)
assert min1.num_sets() == 2 assert min1.num_sets() == 2
assert min1.num_states() == 2 assert min1.num_states() == 2
min1 = spot.sat_minimize(aut, acc='Rabin 1', incr=True, param=-1) min1 = spot.sat_minimize(aut, acc='Rabin 1', sat_incr=2, sat_incr_steps=-1)
assert min1.num_sets() == 2 assert min1.num_sets() == 2
assert min1.num_states() == 2 assert min1.num_states() == 2
min1 = spot.sat_minimize(aut, acc='Rabin 1', incr=True, param=0) min1 = spot.sat_minimize(aut, acc='Rabin 1', sat_incr=2, sat_incr_steps=0)
assert min1.num_sets() == 2 assert min1.num_sets() == 2
assert min1.num_states() == 2 assert min1.num_states() == 2
min1 = spot.sat_minimize(aut, acc='Rabin 1', incr=True, param=1) min1 = spot.sat_minimize(aut, acc='Rabin 1', sat_incr=2, sat_incr_steps=1)
assert min1.num_sets() == 2 assert min1.num_sets() == 2
assert min1.num_states() == 2 assert min1.num_states() == 2
min1 = spot.sat_minimize(aut, acc='Rabin 1', incr=True, param=2) min1 = spot.sat_minimize(aut, acc='Rabin 1', sat_incr=2, sat_incr_steps=2)
assert min1.num_sets() == 2 assert min1.num_sets() == 2
assert min1.num_states() == 2 assert min1.num_states() == 2
min1 = spot.sat_minimize(aut, acc='Rabin 1', incr=True, param=50) min1 = spot.sat_minimize(aut, acc='Rabin 1', sat_incr=2, sat_incr_steps=50)
assert min1.num_sets() == 2
assert min1.num_states() == 2
min1 = spot.sat_minimize(aut, acc='Rabin 1', sat_naive=True)
assert min1.num_sets() == 2 assert min1.num_sets() == 2
assert min1.num_states() == 2 assert min1.num_states() == 2
min2 = spot.sat_minimize(aut, acc='Streett 2', dicho=True) min2 = spot.sat_minimize(aut, acc='Streett 2')
assert min2.num_sets() == 4 assert min2.num_sets() == 4
assert min2.num_states() == 1 assert min2.num_states() == 1
min2 = spot.sat_minimize(aut, acc='Streett 2', assume=True) min2 = spot.sat_minimize(aut, acc='Streett 2', sat_langmap=True)
assert min2.num_sets() == 4 assert min2.num_sets() == 4
assert min2.num_states() == 1 assert min2.num_states() == 1
min2 = spot.sat_minimize(aut, acc='Streett 2', assume=True, param=0) min2 = spot.sat_minimize(aut, acc='Streett 2', sat_incr=1)
assert min2.num_sets() == 4 assert min2.num_sets() == 4
assert min2.num_states() == 1 assert min2.num_states() == 1
min2 = spot.sat_minimize(aut, acc='Streett 2', assume=True, param=1) min2 = spot.sat_minimize(aut, acc='Streett 2', sat_incr=1, sat_incr_steps=0)
assert min2.num_sets() == 4 assert min2.num_sets() == 4
assert min2.num_states() == 1 assert min2.num_states() == 1
min2 = spot.sat_minimize(aut, acc='Streett 2', assume=True, param=2) min2 = spot.sat_minimize(aut, acc='Streett 2', sat_incr=1, sat_incr_steps=1)
assert min2.num_sets() == 4 assert min2.num_sets() == 4
assert min2.num_states() == 1 assert min2.num_states() == 1
min2 = spot.sat_minimize(aut, acc='Streett 2', assume=True, param=50) min2 = spot.sat_minimize(aut, acc='Streett 2', sat_incr=1, sat_incr_steps=2)
assert min2.num_sets() == 4 assert min2.num_sets() == 4
assert min2.num_states() == 1 assert min2.num_states() == 1
min2 = spot.sat_minimize(aut, acc='Streett 2', incr=True) min2 = spot.sat_minimize(aut, acc='Streett 2', sat_incr=1, sat_incr_steps=50)
assert min2.num_sets() == 4 assert min2.num_sets() == 4
assert min2.num_states() == 1 assert min2.num_states() == 1
min2 = spot.sat_minimize(aut, acc='Streett 2', incr=True, param=-1) min2 = spot.sat_minimize(aut, acc='Streett 2', sat_incr=2)
assert min2.num_sets() == 4 assert min2.num_sets() == 4
assert min2.num_states() == 1 assert min2.num_states() == 1
min2 = spot.sat_minimize(aut, acc='Streett 2', incr=True, param=0) min2 = spot.sat_minimize(aut, acc='Streett 2', sat_incr=2, sat_incr_steps=-1)
assert min2.num_sets() == 4 assert min2.num_sets() == 4
assert min2.num_states() == 1 assert min2.num_states() == 1
min2 = spot.sat_minimize(aut, acc='Streett 2', incr=True, param=1) min2 = spot.sat_minimize(aut, acc='Streett 2', sat_incr=2, sat_incr_steps=0)
assert min2.num_sets() == 4 assert min2.num_sets() == 4
assert min2.num_states() == 1 assert min2.num_states() == 1
min2 = spot.sat_minimize(aut, acc='Streett 2', incr=True, param=2) min2 = spot.sat_minimize(aut, acc='Streett 2', sat_incr=2, sat_incr_steps=1)
assert min2.num_sets() == 4 assert min2.num_sets() == 4
assert min2.num_states() == 1 assert min2.num_states() == 1
min2 = spot.sat_minimize(aut, acc='Streett 2', incr=True, param=50) min2 = spot.sat_minimize(aut, acc='Streett 2', sat_incr=2, sat_incr_steps=2)
assert min2.num_sets() == 4
assert min2.num_states() == 1
min2 = spot.sat_minimize(aut, acc='Streett 2', sat_incr=2, sat_incr_steps=50)
assert min2.num_sets() == 4
assert min2.num_states() == 1
min2 = spot.sat_minimize(aut, acc='Streett 2', sat_naive=True)
assert min2.num_sets() == 4 assert min2.num_sets() == 4
assert min2.num_states() == 1 assert min2.num_states() == 1
min3 = spot.sat_minimize(aut, acc='Rabin 2', min3 = spot.sat_minimize(aut, acc='Rabin 2',
state_based=True, max_states=5, dicho=True) state_based=True, max_states=5)
assert min3.num_sets() == 4 assert min3.num_sets() == 4
assert min3.num_states() == 3 assert min3.num_states() == 3
min3 = spot.sat_minimize(aut, acc='Rabin 2', min3 = spot.sat_minimize(aut, acc='Rabin 2',
state_based=True, max_states=5, assume=True) state_based=True, max_states=5, sat_langmap=True)
assert min3.num_sets() == 4 assert min3.num_sets() == 4
assert min3.num_states() == 3 assert min3.num_states() == 3
min3 = spot.sat_minimize(aut, acc='Rabin 2', min3 = spot.sat_minimize(aut, acc='Rabin 2',
state_based=True, max_states=5, assume=True, param=0) state_based=True, max_states=5, sat_incr=1)
assert min3.num_sets() == 4 assert min3.num_sets() == 4
assert min3.num_states() == 3 assert min3.num_states() == 3
min3 = spot.sat_minimize(aut, acc='Rabin 2', min3 = spot.sat_minimize(aut, acc='Rabin 2',
state_based=True, max_states=5, assume=True, param=1) state_based=True, max_states=5, sat_incr=1,
sat_incr_steps=0)
assert min3.num_sets() == 4 assert min3.num_sets() == 4
assert min3.num_states() == 3 assert min3.num_states() == 3
min3 = spot.sat_minimize(aut, acc='Rabin 2', min3 = spot.sat_minimize(aut, acc='Rabin 2',
state_based=True, max_states=5, assume=True, param=2) state_based=True, max_states=5, sat_incr=1,
sat_incr_steps=1)
assert min3.num_sets() == 4 assert min3.num_sets() == 4
assert min3.num_states() == 3 assert min3.num_states() == 3
min3 = spot.sat_minimize(aut, acc='Rabin 2', min3 = spot.sat_minimize(aut, acc='Rabin 2',
state_based=True, max_states=5, assume=True, param=50) state_based=True, max_states=5, sat_incr=1,
sat_incr_steps=2)
assert min3.num_sets() == 4 assert min3.num_sets() == 4
assert min3.num_states() == 3 assert min3.num_states() == 3
min3 = spot.sat_minimize(aut, acc='Rabin 2', min3 = spot.sat_minimize(aut, acc='Rabin 2',
state_based=True, max_states=5, incr=True) state_based=True, max_states=5, sat_incr=1,
sat_incr_steps=50)
assert min3.num_sets() == 4 assert min3.num_sets() == 4
assert min3.num_states() == 3 assert min3.num_states() == 3
min3 = spot.sat_minimize(aut, acc='Rabin 2', min3 = spot.sat_minimize(aut, acc='Rabin 2',
state_based=True, max_states=5, incr=True, param=-1) state_based=True, max_states=5, sat_incr=2)
assert min3.num_sets() == 4 assert min3.num_sets() == 4
assert min3.num_states() == 3 assert min3.num_states() == 3
min3 = spot.sat_minimize(aut, acc='Rabin 2', min3 = spot.sat_minimize(aut, acc='Rabin 2',
state_based=True, max_states=5, incr=True, param=0) state_based=True, max_states=5, sat_incr=2,
sat_incr_steps=-1)
assert min3.num_sets() == 4 assert min3.num_sets() == 4
assert min3.num_states() == 3 assert min3.num_states() == 3
min3 = spot.sat_minimize(aut, acc='Rabin 2', min3 = spot.sat_minimize(aut, acc='Rabin 2',
state_based=True, max_states=5, incr=True, param=1) state_based=True, max_states=5, sat_incr=2,
sat_incr_steps=0)
assert min3.num_sets() == 4 assert min3.num_sets() == 4
assert min3.num_states() == 3 assert min3.num_states() == 3
min3 = spot.sat_minimize(aut, acc='Rabin 2', min3 = spot.sat_minimize(aut, acc='Rabin 2',
state_based=True, max_states=5, incr=True, param=2) state_based=True, max_states=5, sat_incr=2,
sat_incr_steps=1)
assert min3.num_sets() == 4 assert min3.num_sets() == 4
assert min3.num_states() == 3 assert min3.num_states() == 3
min3 = spot.sat_minimize(aut, acc='Rabin 2', min3 = spot.sat_minimize(aut, acc='Rabin 2',
state_based=True, max_states=5, incr=True, param=50) state_based=True, max_states=5, sat_incr=2,
sat_incr_steps=2)
assert min3.num_sets() == 4
assert min3.num_states() == 3
min3 = spot.sat_minimize(aut, acc='Rabin 2',
state_based=True, max_states=5, sat_incr=2,
sat_incr_steps=50)
assert min3.num_sets() == 4
assert min3.num_states() == 3
min3 = spot.sat_minimize(aut, acc='Rabin 2',
state_based=True, max_states=5, sat_naive=True)
assert min3.num_sets() == 4 assert min3.num_sets() == 4
assert min3.num_states() == 3 assert min3.num_states() == 3
min4 = spot.sat_minimize(aut, acc='parity max odd 3', min4 = spot.sat_minimize(aut, acc='parity max odd 3',
colored=True, dicho=True) colored=True)
assert min4.num_sets() == 3 assert min4.num_sets() == 3
assert min4.num_states() == 2 assert min4.num_states() == 2
min4 = spot.sat_minimize(aut, acc='parity max odd 3', min4 = spot.sat_minimize(aut, acc='parity max odd 3',
colored=True, assume=True) colored=True, sat_langmap=True)
assert min4.num_sets() == 3 assert min4.num_sets() == 3
assert min4.num_states() == 2 assert min4.num_states() == 2
min4 = spot.sat_minimize(aut, acc='parity max odd 3', min4 = spot.sat_minimize(aut, acc='parity max odd 3',
colored=True, assume=True, param=0) colored=True, sat_incr=1)
assert min4.num_sets() == 3 assert min4.num_sets() == 3
assert min4.num_states() == 2 assert min4.num_states() == 2
min4 = spot.sat_minimize(aut, acc='parity max odd 3', min4 = spot.sat_minimize(aut, acc='parity max odd 3',
colored=True, assume=True, param=1) colored=True, sat_incr=1, sat_incr_steps=0)
assert min4.num_sets() == 3 assert min4.num_sets() == 3
assert min4.num_states() == 2 assert min4.num_states() == 2
min4 = spot.sat_minimize(aut, acc='parity max odd 3', min4 = spot.sat_minimize(aut, acc='parity max odd 3',
colored=True, assume=True, param=2) colored=True, sat_incr=1, sat_incr_steps=1)
assert min4.num_sets() == 3 assert min4.num_sets() == 3
assert min4.num_states() == 2 assert min4.num_states() == 2
min4 = spot.sat_minimize(aut, acc='parity max odd 3', min4 = spot.sat_minimize(aut, acc='parity max odd 3',
colored=True, assume=True, param=50) colored=True, sat_incr=1, sat_incr_steps=2)
assert min4.num_sets() == 3 assert min4.num_sets() == 3
assert min4.num_states() == 2 assert min4.num_states() == 2
min4 = spot.sat_minimize(aut, acc='parity max odd 3', min4 = spot.sat_minimize(aut, acc='parity max odd 3',
colored=True, incr=True) colored=True, sat_incr=1, sat_incr_steps=50)
assert min4.num_sets() == 3 assert min4.num_sets() == 3
assert min4.num_states() == 2 assert min4.num_states() == 2
min4 = spot.sat_minimize(aut, acc='parity max odd 3', min4 = spot.sat_minimize(aut, acc='parity max odd 3',
colored=True, incr=True, param=-1) colored=True, sat_incr=2)
assert min4.num_sets() == 3 assert min4.num_sets() == 3
assert min4.num_states() == 2 assert min4.num_states() == 2
min4 = spot.sat_minimize(aut, acc='parity max odd 3', min4 = spot.sat_minimize(aut, acc='parity max odd 3',
colored=True, incr=True, param=0) colored=True, sat_incr=2, sat_incr_steps=-1)
assert min4.num_sets() == 3 assert min4.num_sets() == 3
assert min4.num_states() == 2 assert min4.num_states() == 2
min4 = spot.sat_minimize(aut, acc='parity max odd 3', min4 = spot.sat_minimize(aut, acc='parity max odd 3',
colored=True, incr=True, param=1) colored=True, sat_incr=2, sat_incr_steps=0)
assert min4.num_sets() == 3 assert min4.num_sets() == 3
assert min4.num_states() == 2 assert min4.num_states() == 2
min4 = spot.sat_minimize(aut, acc='parity max odd 3', min4 = spot.sat_minimize(aut, acc='parity max odd 3',
colored=True, incr=True, param=2) colored=True, sat_incr=2, sat_incr_steps=1)
assert min4.num_sets() == 3 assert min4.num_sets() == 3
assert min4.num_states() == 2 assert min4.num_states() == 2
min4 = spot.sat_minimize(aut, acc='parity max odd 3', min4 = spot.sat_minimize(aut, acc='parity max odd 3',
colored=True, incr=True, param=50) colored=True, sat_incr=2, sat_incr_steps=2)
assert min4.num_sets() == 3
assert min4.num_states() == 2
min4 = spot.sat_minimize(aut, acc='parity max odd 3',
colored=True, sat_incr=2, sat_incr_steps=50)
assert min4.num_sets() == 3
assert min4.num_states() == 2
min4 = spot.sat_minimize(aut, acc='parity max odd 3',
colored=True, sat_naive=True)
assert min4.num_sets() == 3 assert min4.num_sets() == 3
assert min4.num_states() == 2 assert min4.num_states() == 2