From ef2355a5425778c95a1945d19e38d638d43b18e8 Mon Sep 17 00:00:00 2001 From: Alexandre GBAGUIDI AISSE Date: Tue, 20 Dec 2016 12:08:32 +0100 Subject: [PATCH] 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. --- python/spot/__init__.py | 20 +-- spot/twaalgos/dtwasat.cc | 61 ++++--- spot/twaalgos/postproc.cc | 50 +++--- spot/twaalgos/postproc.hh | 4 +- tests/core/satmin.test | 115 ++---------- tests/core/satmin2.test | 361 +++++++++++++++++++++----------------- tests/python/satmin.py | 130 +++++++++----- 7 files changed, 365 insertions(+), 376 deletions(-) diff --git a/python/spot/__init__.py b/python/spot/__init__.py index 944d53657..292f24bd4 100644 --- a/python/spot/__init__.py +++ b/python/spot/__init__.py @@ -858,8 +858,8 @@ for fun in ['remove_x', 'relabel', 'relabel_bse', # Better interface to the corresponding C++ function. def sat_minimize(aut, acc=None, colored=False, state_based=False, states=0, - max_states=0, dicho=False, - param=0, incr=False, assume=False): + max_states=0, sat_naive=False, sat_langmap=False, + sat_incr=0, sat_incr_steps=0): args='' if acc is not None: 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: raise ValueError("argument 'states' should be a positive integer") args += ',max-states=' + str(max_states) - if dicho: - args += ',dicho'; - if param: - args += ',param=' + str(param) - if incr: - args += ',incr' - if assume: - args += ',assume' + if sat_naive: + args += ',sat-naive' + if sat_langmap: + args += ',sat-langmap' + if sat_incr: + args += ',sat-incr=' + str(sat_incr) + args += ',sat-incr-steps=' + str(sat_incr_steps) + from spot.impl import sat_minimize as sm return sm(aut, args, state_based) diff --git a/spot/twaalgos/dtwasat.cc b/spot/twaalgos/dtwasat.cc index ed337b0c0..ad2ffd032 100644 --- a/spot/twaalgos/dtwasat.cc +++ b/spot/twaalgos/dtwasat.cc @@ -1391,17 +1391,23 @@ namespace spot throw std::runtime_error ("SAT-based minimization only works with deterministic automata"); - bool incr = om.get("incr", 0); - bool assume = om.get("assume", 0); - int param = om.get("param", 0); - bool dicho = om.get("dicho", 0); - bool dicho_langmap = om.get("langmap", 0); + int sat_incr = om.get("sat-incr", 0); + int sat_incr_steps = om.get("sat-incr-steps", 0); + bool sat_naive = om.get("sat-naive", 0); + bool sat_langmap = om.get("sat-langmap", 0); int states = om.get("states", -1); int max_states = om.get("max-states", -1); auto accstr = om.get_str("acc"); bool colored = om.get("colored", 0); 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. om.report_unused_options(); @@ -1494,36 +1500,39 @@ namespace spot auto orig = a; if (!target_is_buchi || !a->acc().is_buchi() || colored) { - if (incr) - 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 + if (sat_naive) a = dtwa_sat_minimize (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 { - if (incr) - a = dtba_sat_minimize_incr(a, state_based, max_states, param); + if (sat_naive) + a = dtba_sat_minimize(a, state_based, max_states); - else if (assume) - a = dtba_sat_minimize_assume(a, state_based, max_states, assume); + else if (sat_incr == 1) + a = dtba_sat_minimize_assume(a, state_based, max_states, + sat_incr_steps); - else if (dicho) - a = dtba_sat_minimize_dichotomy - (a, state_based, dicho_langmap, max_states); + else if (sat_incr == 2) + a = dtba_sat_minimize_incr(a, state_based, max_states, + sat_incr_steps); 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) diff --git a/spot/twaalgos/postproc.cc b/spot/twaalgos/postproc.cc index 8871aa2f3..e9f8b6f16 100644 --- a/spot/twaalgos/postproc.cc +++ b/spot/twaalgos/postproc.cc @@ -70,15 +70,15 @@ namespace spot ba_simul_ = opt->get("ba-simul", -1); tba_determinisation_ = opt->get("tba-det", 0); sat_minimize_ = opt->get("sat-minimize", 0); - param_ = opt->get("param", 0); - dicho_langmap_ = opt->get("langmap", 0); + sat_incr_steps_ = opt->get("sat-incr-steps", -2); // -2 or any num < -1 + sat_langmap_ = opt->get("sat-langmap", 0); sat_acc_ = opt->get("sat-acc", 0); sat_states_ = opt->get("sat-states", 0); state_based_ = opt->get("state-based", 0); wdba_minimize_ = opt->get("wdba-minimize", 1); if (sat_acc_ && sat_minimize_ == 0) - sat_minimize_ = 1; // 2? + sat_minimize_ = 1; // Dicho. if (sat_states_ && sat_minimize_ == 0) sat_minimize_ = 1; if (sat_minimize_) @@ -89,6 +89,12 @@ namespace spot if (sat_states_ <= 0) 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) res = dtba_sat_synthetize(res, sat_states_, state_based_); - else if (sat_minimize_ == 1 || sat_minimize_ == -1) - res = dtba_sat_minimize(res, state_based_); - else if (sat_minimize_ == 2) + else if (sat_minimize_ == 1) 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) - res = dtba_sat_minimize_incr(res, state_based_, -1, param_); - else // if (sat_minimize == 4) - res = dtba_sat_minimize_assume(res, state_based_, -1, param_); + res = dtba_sat_minimize_incr(res, state_based_, -1, + sat_incr_steps_); + else // if (sat_minimize == 4 || sat_minimize == -1) + res = dtba_sat_minimize(res, state_based_); } else { @@ -444,26 +452,26 @@ namespace spot (res, target_acc, acc_cond::acc_code::generalized_buchi(target_acc), sat_states_, state_based_); - else if (sat_minimize_ == 1 || 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) + else if (sat_minimize_ == 1) res = dtwa_sat_minimize_dichotomy (res, 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) res = dtwa_sat_minimize_incr (res, target_acc, acc_cond::acc_code::generalized_buchi(target_acc), - state_based_, -1, false, param_); - else // if (sat_minimize_ == 4) - res = dtwa_sat_minimize_assume + state_based_, -1, false, sat_incr_steps_); + else // if (sat_minimize_ == 4 || sat_minimize_ == -1) + res = dtwa_sat_minimize (res, target_acc, acc_cond::acc_code::generalized_buchi(target_acc), - state_based_, -1, false, param_); + state_based_); } if (res) diff --git a/spot/twaalgos/postproc.hh b/spot/twaalgos/postproc.hh index 5e6f637dc..7572119c5 100644 --- a/spot/twaalgos/postproc.hh +++ b/spot/twaalgos/postproc.hh @@ -189,8 +189,8 @@ namespace spot int ba_simul_ = -1; bool tba_determinisation_ = false; int sat_minimize_ = 0; - int param_ = 0; - bool dicho_langmap_ = false; + int sat_incr_steps_ = 0; + bool sat_langmap_ = false; int sat_acc_ = 0; int sat_states_ = 0; bool state_based_ = false; diff --git a/tests/core/satmin.test b/tests/core/satmin.test index c89247527..28d61d11e 100755 --- a/tests/core/satmin.test +++ b/tests/core/satmin.test @@ -102,18 +102,17 @@ $ltlcross -F formulas \ "{4} $ltl2tgba --det --lbtt -x sat-acc=3 %f >%T" \ "{5} $ltl2tgba --det --lbtt -x sat-states=3 %f >%T" \ "{6} $ltl2tgba --det --lbtt -x sat-minimize %f >%T" \ - "{7} $ltl2tgba --det --lbtt -x sat-minimize=2 %f >%T" \ - "{8} $ltl2tgba --det --lbtt -x 'sat-minimize=2,langmap' %f >%T" \ - "{9} $ltl2tgba --det --lbtt -x sat-minimize=3 %f >%T" \ - "{10} $ltl2tgba --det --lbtt -x 'sat-minimize=3, param=-1' %f >%T" \ - "{11} $ltl2tgba --det --lbtt -x 'sat-minimize=3, param=0' %f >%T" \ - "{12} $ltl2tgba --det --lbtt -x 'sat-minimize=3, param=1' %f >%T" \ - "{13} $ltl2tgba --det --lbtt -x 'sat-minimize=3, param=2' %f >%T" \ - "{14} $ltl2tgba --det --lbtt -x 'sat-minimize=3, param=50' %f >%T" \ - "{15} $ltl2tgba --det --lbtt -x 'sat-minimize=4, param=0' %f >%T" \ - "{16} $ltl2tgba --det --lbtt -x 'sat-minimize=4, param=1' %f >%T" \ - "{17} $ltl2tgba --det --lbtt -x 'sat-minimize=4, param=2' %f >%T" \ - "{18} $ltl2tgba --det --lbtt -x 'sat-minimize=4, param=50' %f >%T" \ + "{7} $ltl2tgba --det --lbtt -x 'sat-minimize, sat-langmap' %f >%T" \ + "{8} $ltl2tgba --det --lbtt -x 'sat-minimize=2, sat-incr-steps=0' %f >%T" \ + "{9} $ltl2tgba --det --lbtt -x 'sat-minimize=2, sat-incr-steps=1' %f >%T" \ + "{10} $ltl2tgba --det --lbtt -x 'sat-minimize=2, sat-incr-steps=2' %f >%T" \ + "{11} $ltl2tgba --det --lbtt -x 'sat-minimize=2, sat-incr-steps=50' %f >%T" \ + "{12} $ltl2tgba --det --lbtt -x 'sat-minimize=3, sat-incr-steps=-1' %f >%T" \ + "{13} $ltl2tgba --det --lbtt -x 'sat-minimize=3, sat-incr-steps=0' %f >%T" \ + "{14} $ltl2tgba --det --lbtt -x 'sat-minimize=3, sat-incr-steps=1' %f >%T" \ + "{15} $ltl2tgba --det --lbtt -x 'sat-minimize=3, sat-incr-steps=2' %f >%T" \ + "{16} $ltl2tgba --det --lbtt -x 'sat-minimize=3, sat-incr-steps=50' %f >%T" \ + "{17} $ltl2tgba --det --lbtt -x sat-minimize=4 %f >%T" \ --csv=det.csv 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))","16",4 "X(X(p0))","17",4 -"X(X(p0))","18",4 "!(X(X(p0)))","1",4 "!(X(X(p0)))","2",4 "!(X(X(p0)))","3",4 @@ -153,7 +151,6 @@ cat >expected <<'EOF' "!(X(X(p0)))","15",4 "!(X(X(p0)))","16",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))))))","2",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))))))","16",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)))))))","2",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)))))))","16",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))))))))))","2",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))))))))))","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))))))))))","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)))))))))))","2",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)))))))))))","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)))))))))))","18",4 "F((p0) & (X((p1) U (p2))))","1",3 "F((p0) & (X((p1) U (p2))))","2",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))))","16",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)))))","2",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)))))","16",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))))))","2",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))))))","16",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)))))))","2",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)))))))","16",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))))","2",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))))","16",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)))))","2",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)))))","16",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))))","2",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))))","16",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)))))","2",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)))))","16",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)))","2",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)))","16",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))))","2",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))))","16",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)))","2",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)))","16",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))))","2",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))))","16",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))","2",1 "G(F(p0))","3",1 @@ -442,7 +423,6 @@ cat >expected <<'EOF' "G(F(p0))","15",1 "G(F(p0))","16",1 "G(F(p0))","17",1 -"G(F(p0))","18",1 "!(G(F(p0)))","1",2 "!(G(F(p0)))","2",2 "!(G(F(p0)))","3",2 @@ -459,7 +439,6 @@ cat >expected <<'EOF' "!(G(F(p0)))","15",2 "!(G(F(p0)))","16",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)))","2",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)))","16",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))))","2",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))))","16",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))","2",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))","16",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)))","2",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)))","16",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))))","2",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))))","16",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)))))","2",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)))))","16",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))))","2",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))))","16",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)))))","2",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)))))","16",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)))))","2",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)))))","16",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))))))","2",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))))))","16",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)))","2",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)))","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)))","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))))","2",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))))","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))))","18",5 "G((p0) -> ((p1) U (p2)))","1",2 "G((p0) -> ((p1) U (p2)))","2",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)))","16",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))))","2",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))))","16",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)))))","2",7 "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)))))","16",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))))))","2",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))))))","16",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))))","2",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))))","16",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)))))","2",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)))))","16",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)))))","2",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)))))","16",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))))))","2",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))))))","16",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)))","2",2 "G((p0) -> (F(p1)))","3",2 @@ -816,7 +775,6 @@ cat >expected <<'EOF' "G((p0) -> (F(p1)))","15",2 "G((p0) -> (F(p1)))","16",2 "G((p0) -> (F(p1)))","17",2 -"G((p0) -> (F(p1)))","18",2 "!(G((p0) -> (F(p1))))","1",2 "!(G((p0) -> (F(p1))))","2",2 "!(G((p0) -> (F(p1))))","3",2 @@ -833,7 +791,6 @@ cat >expected <<'EOF' "!(G((p0) -> (F(p1))))","15",2 "!(G((p0) -> (F(p1))))","16",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)))))","2",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)))))","16",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))))))","2",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))))))","16",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))","2",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))","16",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)))","2",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)))","16",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)))","2",5 "((!(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)))","16",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))))","2",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))))","16",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)","2",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)","16",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))","2",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))","16",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))))","2",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))))","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))))","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)))))","2",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)))))","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)))))","18",4 "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))))))","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))))))","16",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)))))))","2",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)))))))","16",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))","2",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))","16",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)))","2",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)))","16",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))","2",3 "(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))","16",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)))","2",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)))","16",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)))))","2",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)))))","16",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))))))","2",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))))))","16",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)))","2",4 "(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)))","16",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))))","2",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))))","16",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)))))","2",4 "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)))))","16",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))))))","2",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))))))","16",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))","2",6 "(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))","16",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)))","2",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)))","16",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))","2",5 "((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))","16",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)))","2",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)))","16",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))","2",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))","16",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)))","2",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)))","16",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))","2",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))","16",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)))","2",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)))","16",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)))","2",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)))","16",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))))","2",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))))","16",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)))))","2",6 "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)))))","16",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))))))","2",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))))))","16",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)))","2",2 "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)))","16",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))))","2",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))))","16",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)))","2",4 "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)))","16",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))))","2",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))))","16",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))","2",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))","16",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)))","2",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)))","16",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))))))","2",3 "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))))))","16",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)))))))","2",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)))))))","16",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))))))","2",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))))))","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))))))","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)))))))","2",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)))))))","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)))))))","18",7 "X((G(F(p0))) | (G(!(p0))))","1",4 "X((G(F(p0))) | (G(!(p0))))","2",4 "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))))","16",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)))))","2",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)))))","16",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))))","2",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))))","16",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)))))","2",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)))))","16",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)))","2",1 "G((p0) | (F(p0)))","3",1 @@ -1666,7 +1575,6 @@ cat >expected <<'EOF' "G((p0) | (F(p0)))","15",1 "G((p0) | (F(p0)))","16",1 "G((p0) | (F(p0)))","17",1 -"G((p0) | (F(p0)))","18",1 "!(G((p0) | (F(p0))))","1",2 "!(G((p0) | (F(p0))))","2",2 "!(G((p0) | (F(p0))))","3",2 @@ -1683,7 +1591,6 @@ cat >expected <<'EOF' "!(G((p0) | (F(p0))))","15",2 "!(G((p0) | (F(p0))))","16",2 "!(G((p0) | (F(p0))))","17",2 -"!(G((p0) | (F(p0))))","18",2 EOF diff expected output diff --git a/tests/core/satmin2.test b/tests/core/satmin2.test index ee5aad5aa..1cf2cbce1 100755 --- a/tests/core/satmin2.test +++ b/tests/core/satmin2.test @@ -61,37 +61,37 @@ diff output expected ltl2tgba -BD -x sat-minimize "GF(a <-> XXb)" -H >out grep 'properties:.*state-acc' 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:.*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:.*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:.*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:.*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:.*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:.*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:.*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:.*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:.*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:.*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:.*deterministic' out @@ -134,77 +134,78 @@ EOF # automata. $autfilt --sat-minimize='acc="Fin(0)|Inf(1)"' test.hoa --stats=%s >output 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 -$autfilt --sat-minimize='dicho,langmap,acc="Fin(0)|Inf(1)"' test.hoa \ - --stats=%s >output +$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)",assume,param=0' test.hoa \ - --stats=%s >output +$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)",assume,param=1' test.hoa \ - --stats=%s >output +$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)",assume,param=2' test.hoa \ - --stats=%s >output +$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)",assume,param=50' test.hoa \ - --stats=%s >output +$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)",incr,param=-1' test.hoa \ - --stats=%s >output +$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)",incr,param=0' test.hoa \ - --stats=%s >output +$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)",incr,param=1' test.hoa \ - --stats=%s >output +$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)",incr,param=2' test.hoa \ - --stats=%s >output +$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)",incr,param=50' test.hoa \ +$autfilt --sat-minimize='sat-naive,acc="Fin(0)|Inf(1)"' test.hoa \ --stats=%s >output 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 \ - --stats=%s > output + --stats=%s > output test `cat output` = 3 -$autfilt -S --sat-minimize='dicho,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 +$autfilt -S --sat-minimize='sat-langmap,acc="Fin(0)|Inf(1)"' test.hoa \ + --stats=%s > output 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? @@ -216,7 +217,7 @@ 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,dicho' -H \ +$autfilt -S --sat-minimize='acc="parity max even 3",colored,sat-langmap' -H \ test.hoa > output cat output grep 'properties:.*colored' output @@ -224,15 +225,8 @@ 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,dicho,langmap' -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,assume,param=0' \ +$autfilt -S \ + --sat-minimize='acc="parity max even 3",colored,sat-incr=1,sat-incr-steps=0' \ -H test.hoa > output cat output grep 'properties:.*colored' output @@ -240,7 +234,8 @@ 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=1' \ +$autfilt -S \ + --sat-minimize='acc="parity max even 3",colored,sat-incr=1,sat-incr-steps=1' \ -H test.hoa > output cat output grep 'properties:.*colored' output @@ -248,7 +243,8 @@ 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=2' \ +$autfilt -S \ + --sat-minimize='acc="parity max even 3",colored,sat-incr=1,sat-incr-steps=2' \ -H test.hoa > output cat output grep 'properties:.*colored' output @@ -256,7 +252,26 @@ 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=50' \ +$autfilt -S \ + --sat-minimize='acc="parity max even 3",colored,sat-incr=1,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-incr=2,sat-incr-steps=-1'\ + -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-incr=2,sat-incr-steps=0' \ -H test.hoa > output cat output grep 'properties:.*colored' output @@ -264,7 +279,8 @@ 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,incr,param=-1' \ +$autfilt -S \ + --sat-minimize='acc="parity max even 3",colored,sat-incr=2,sat-incr-steps=1' \ -H test.hoa > output cat output grep 'properties:.*colored' output @@ -272,7 +288,8 @@ 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,incr,param=0' \ +$autfilt -S \ + --sat-minimize='acc="parity max even 3",colored,sat-incr=2,sat-incr-steps=2' \ -H test.hoa > output cat output grep 'properties:.*colored' output @@ -280,23 +297,16 @@ 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,incr,param=1' \ - -H test.hoa > output +$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,incr,param=2' \ - -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,incr,param=50' \ +$autfilt -S --sat-minimize='acc="parity max even 3",colored,sat-naive' \ -H test.hoa > output cat output grep 'properties:.*colored' output @@ -339,27 +349,27 @@ State: 0 EOF $autfilt -H --sat-minimize special.hoa > output diff output expected -$autfilt -H --sat-minimize='dicho' special.hoa > output +$autfilt -H --sat-minimize='sat-langmap' special.hoa > output 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 -$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 -$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 -$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 -$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 -$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 -$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 -$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 -$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 -$autfilt -H --sat-minimize='incr,param=50' special.hoa > output +$autfilt -H --sat-minimize='sat-naive' special.hoa > output diff output expected @@ -380,37 +390,46 @@ EOF $autfilt --sat-minimize='acc="Streett 1",max-states=2' foo.hoa \ --stats=%s >out 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 test "`cat out`" = 1 -$autfilt --sat-minimize='acc="Streett 1",max-states=2,dicho,langmap' foo.hoa \ - --stats=%s >out +$autfilt \ + --sat-minimize='acc="Streett 1",max-states=2,sat-incr=1,sat-incr-steps=0' \ + foo.hoa --stats=%s >out test "`cat out`" = 1 -$autfilt --sat-minimize='acc="Streett 1",max-states=2,assume,param=0' foo.hoa \ - --stats=%s >out +$autfilt \ + --sat-minimize='acc="Streett 1",max-states=2,sat-incr=1,sat-incr-steps=1' \ + foo.hoa --stats=%s >out test "`cat out`" = 1 -$autfilt --sat-minimize='acc="Streett 1",max-states=2,assume,param=1' foo.hoa \ - --stats=%s >out +$autfilt \ + --sat-minimize='acc="Streett 1",max-states=2,sat-incr=1,sat-incr-steps=2' \ + foo.hoa --stats=%s >out test "`cat out`" = 1 -$autfilt --sat-minimize='acc="Streett 1",max-states=2,assume,param=2' foo.hoa \ - --stats=%s >out +$autfilt \ + --sat-minimize='acc="Streett 1",max-states=2,sat-incr=1,sat-incr-steps=50' \ + foo.hoa --stats=%s >out test "`cat out`" = 1 -$autfilt --sat-minimize='acc="Streett 1",max-states=2,assume,param=50' foo.hoa \ - --stats=%s >out +$autfilt \ + --sat-minimize='acc="Streett 1",max-states=2,sat-incr=2,sat-incr-steps=-1' \ + foo.hoa --stats=%s >out test "`cat out`" = 1 -$autfilt --sat-minimize='acc="Streett 1",max-states=2,incr,param=-1' foo.hoa \ - --stats=%s >out +$autfilt \ + --sat-minimize='acc="Streett 1",max-states=2,sat-incr=2,sat-incr-steps=0' \ + foo.hoa --stats=%s >out test "`cat out`" = 1 -$autfilt --sat-minimize='acc="Streett 1",max-states=2,incr,param=0' foo.hoa \ - --stats=%s >out +$autfilt \ + --sat-minimize='acc="Streett 1",max-states=2,sat-incr=2,sat-incr-steps=1' \ + foo.hoa --stats=%s >out test "`cat out`" = 1 -$autfilt --sat-minimize='acc="Streett 1",max-states=2,incr,param=1' foo.hoa \ - --stats=%s >out +$autfilt \ + --sat-minimize='acc="Streett 1",max-states=2,sat-incr=2,sat-incr-steps=2' \ + foo.hoa --stats=%s >out test "`cat out`" = 1 -$autfilt --sat-minimize='acc="Streett 1",max-states=2,incr,param=2' foo.hoa \ - --stats=%s >out +$autfilt \ + --sat-minimize='acc="Streett 1",max-states=2,sat-incr=2,sat-incr-steps=50' \ + foo.hoa --stats=%s >out 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 test "`cat out`" = 1 @@ -418,74 +437,86 @@ test "`cat out`" = 1 $autfilt --sat-minimize='acc="Rabin 1",max-states=4' foo.hoa \ --stats=%s >out && exit 1 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 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 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 \ --stats=%s >out 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 -$autfilt --sat-minimize='acc="Inf(0)&Fin(1)|Inf(2)",states=1,dicho,langmap' \ + + +options='acc="Inf(0)&Fin(1)|Inf(2)",states=1' + +$autfilt --sat-minimize=$options',sat-langmap' \ foo.hoa --stats=%s >out 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 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 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 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 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 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 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 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 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 test "`cat out`" = 1 diff --git a/tests/python/satmin.py b/tests/python/satmin.py index 85631fb55..caf639463 100644 --- a/tests/python/satmin.py +++ b/tests/python/satmin.py @@ -29,177 +29,211 @@ assert aut.is_deterministic() min1 = spot.sat_minimize(aut, acc='Rabin 1') assert min1.num_sets() == 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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_states() == 1 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_states() == 3 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_states() == 3 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_states() == 3 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_states() == 3 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_states() == 3 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_states() == 3 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_states() == 3 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_states() == 3 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_states() == 3 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_states() == 3 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_states() == 3 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_states() == 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_states() == 2 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_states() == 2 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_states() == 2 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_states() == 2 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_states() == 2 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_states() == 2 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_states() == 2 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_states() == 2 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_states() == 2 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_states() == 2 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_states() == 2 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_states() == 2