python: fix spot.py script for new acceptance interface
* wrap/python/ajax/spot.in: Adjust to the new interface. * wrap/python/spot.i: Work around missing support for nested classes. * wrap/python/tests/ltl2tgba.py, wrap/python/tests/ltl2tgba.test: More test.
This commit is contained in:
parent
c494a347c9
commit
10c4a92ddb
4 changed files with 30 additions and 6 deletions
|
|
@ -325,14 +325,14 @@ def print_stats(automaton, detinfo = False, ta = False):
|
||||||
's' if stats.transitions > 1 else '',
|
's' if stats.transitions > 1 else '',
|
||||||
stats.sub_transitions,
|
stats.sub_transitions,
|
||||||
's' if stats.sub_transitions > 1 else ''))
|
's' if stats.sub_transitions > 1 else ''))
|
||||||
if hasattr(automaton, 'number_of_acceptance_conditions'):
|
if hasattr(automaton, 'acc'):
|
||||||
count = automaton.number_of_acceptance_conditions()
|
count = automaton.acc().num_sets()
|
||||||
if count > 0:
|
if count > 0:
|
||||||
unbufprint(", %d acceptance condition" % count)
|
unbufprint(", %d acceptance condition" % count)
|
||||||
if count > 1:
|
if count > 1:
|
||||||
unbufprint("s")
|
unbufprint("s")
|
||||||
acc = automaton.all_acceptance_conditions()
|
unbufprint(": " +
|
||||||
unbufprint(": " + spot.bdd_format_accset(automaton.get_dict(), acc))
|
automaton.acc().format(automaton.acc().all_sets()))
|
||||||
else:
|
else:
|
||||||
unbufprint(", no acceptance condition (all cycles are accepting)")
|
unbufprint(", no acceptance condition (all cycles are accepting)")
|
||||||
unbufprint("</p>\n")
|
unbufprint("</p>\n")
|
||||||
|
|
@ -780,7 +780,7 @@ if output_type == 'r':
|
||||||
ec = 0
|
ec = 0
|
||||||
else:
|
else:
|
||||||
ec_a = 0
|
ec_a = 0
|
||||||
n_acc = degen.number_of_acceptance_conditions()
|
n_acc = degen.acc().num_sets()
|
||||||
n_max = eci.max_acceptance_conditions()
|
n_max = eci.max_acceptance_conditions()
|
||||||
n_min = eci.min_acceptance_conditions()
|
n_min = eci.min_acceptance_conditions()
|
||||||
if (n_acc <= n_max):
|
if (n_acc <= n_max):
|
||||||
|
|
|
||||||
|
|
@ -105,6 +105,7 @@ namespace std {
|
||||||
|
|
||||||
#include "tgba/bddprint.hh"
|
#include "tgba/bddprint.hh"
|
||||||
#include "tgba/fwd.hh"
|
#include "tgba/fwd.hh"
|
||||||
|
#include "tgba/acc.hh"
|
||||||
#include "tgba/tgba.hh"
|
#include "tgba/tgba.hh"
|
||||||
#include "tgba/taatgba.hh"
|
#include "tgba/taatgba.hh"
|
||||||
#include "tgba/tgbaproduct.hh"
|
#include "tgba/tgbaproduct.hh"
|
||||||
|
|
@ -226,6 +227,8 @@ using namespace spot;
|
||||||
#define ltl spot::ltl
|
#define ltl spot::ltl
|
||||||
%include "tgba/bddprint.hh"
|
%include "tgba/bddprint.hh"
|
||||||
%include "tgba/fwd.hh"
|
%include "tgba/fwd.hh"
|
||||||
|
%feature("flatnested") spot::acc_cond::mark_t;
|
||||||
|
%include "tgba/acc.hh"
|
||||||
%include "tgba/tgba.hh"
|
%include "tgba/tgba.hh"
|
||||||
%include "tgba/taatgba.hh"
|
%include "tgba/taatgba.hh"
|
||||||
%include "tgba/tgbaproduct.hh"
|
%include "tgba/tgbaproduct.hh"
|
||||||
|
|
@ -359,6 +362,15 @@ empty_tgba_parse_error_list()
|
||||||
return l;
|
return l;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
spot::tgba_digraph_ptr
|
||||||
|
ensure_digraph(const spot::tgba_ptr& a)
|
||||||
|
{
|
||||||
|
auto aa = std::dynamic_pointer_cast<spot::tgba_digraph>(a);
|
||||||
|
if (aa)
|
||||||
|
return aa;
|
||||||
|
return spot::make_tgba_digraph(a);
|
||||||
|
}
|
||||||
|
|
||||||
std::ostream&
|
std::ostream&
|
||||||
get_cout()
|
get_cout()
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -37,13 +37,14 @@ Options:
|
||||||
-t display reachable states in LBTT's format
|
-t display reachable states in LBTT's format
|
||||||
-T use ltl2taa for translation
|
-T use ltl2taa for translation
|
||||||
-v display the BDD variables used by the automaton
|
-v display the BDD variables used by the automaton
|
||||||
|
-W minimize obligation properties
|
||||||
""" % prog)
|
""" % prog)
|
||||||
sys.exit(2)
|
sys.exit(2)
|
||||||
|
|
||||||
|
|
||||||
prog = sys.argv[0]
|
prog = sys.argv[0]
|
||||||
try:
|
try:
|
||||||
opts, args = getopt.getopt(sys.argv[1:], 'dDftTv')
|
opts, args = getopt.getopt(sys.argv[1:], 'dDftTvW')
|
||||||
except getopt.GetoptError:
|
except getopt.GetoptError:
|
||||||
usage(prog)
|
usage(prog)
|
||||||
|
|
||||||
|
|
@ -53,6 +54,7 @@ degeneralize_opt = None
|
||||||
output = 0
|
output = 0
|
||||||
fm_opt = 0
|
fm_opt = 0
|
||||||
taa_opt = 0
|
taa_opt = 0
|
||||||
|
wdba = 0
|
||||||
|
|
||||||
for o, a in opts:
|
for o, a in opts:
|
||||||
if o == '-d':
|
if o == '-d':
|
||||||
|
|
@ -67,6 +69,8 @@ for o, a in opts:
|
||||||
taa_opt = 1
|
taa_opt = 1
|
||||||
elif o == '-v':
|
elif o == '-v':
|
||||||
output = 5
|
output = 5
|
||||||
|
elif o == '-W':
|
||||||
|
wdba = 1
|
||||||
else:
|
else:
|
||||||
usage(prog)
|
usage(prog)
|
||||||
|
|
||||||
|
|
@ -94,6 +98,11 @@ if f:
|
||||||
a = concrete = spot.ltl_to_taa(f, dict)
|
a = concrete = spot.ltl_to_taa(f, dict)
|
||||||
else:
|
else:
|
||||||
assert "unspecified translator"
|
assert "unspecified translator"
|
||||||
|
|
||||||
|
if wdba:
|
||||||
|
a = spot.ensure_digraph(a)
|
||||||
|
a = spot.minimize_obligation(a, f)
|
||||||
|
|
||||||
f.destroy()
|
f.destroy()
|
||||||
del f
|
del f
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -45,3 +45,6 @@ set -e
|
||||||
./run $srcdir/ltl2tgba.py -f 'Fa & Xb & GFc & Gd'
|
./run $srcdir/ltl2tgba.py -f 'Fa & Xb & GFc & Gd'
|
||||||
./run $srcdir/ltl2tgba.py -f 'Fa & Xa & GFc & Gc'
|
./run $srcdir/ltl2tgba.py -f 'Fa & Xa & GFc & Gc'
|
||||||
./run $srcdir/ltl2tgba.py -f 'Fc & X(a | Xb) & GF(a | Xb) & Gc'
|
./run $srcdir/ltl2tgba.py -f 'Fc & X(a | Xb) & GF(a | Xb) & Gc'
|
||||||
|
|
||||||
|
./run $srcdir/ltl2tgba.py -W -f 'Ga | Gb | Gc'
|
||||||
|
./run $srcdir/ltl2tgba.py -W -T 'Ga | Gb | Gc'
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue