python: add binding for is_unambiguous
Fixes #117. * wrap/python/spot.py, wrap/python/spot_impl.i: Add binding. * wrap/python/tests/remfin.py: Add a small test case. * NEWS: Mention it.
This commit is contained in:
parent
cbb2e64e7c
commit
19cd2cda6f
4 changed files with 16 additions and 1 deletions
3
NEWS
3
NEWS
|
|
@ -22,6 +22,9 @@ New in spot 1.99.5a (not yet released)
|
||||||
Boolean argument. This argument used to be optionnal (defaulting
|
Boolean argument. This argument used to be optionnal (defaulting
|
||||||
to True), but it no longer is.
|
to True), but it no longer is.
|
||||||
|
|
||||||
|
Python:
|
||||||
|
* Add bindings for is_unambiguous().
|
||||||
|
|
||||||
Bug fixes:
|
Bug fixes:
|
||||||
* automaton parser was ignoring the "unambiguous" property.
|
* automaton parser was ignoring the "unambiguous" property.
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -626,10 +626,14 @@ twa.postprocess = postprocess
|
||||||
# instance methods (i.e., self passed as first argument
|
# instance methods (i.e., self passed as first argument
|
||||||
# automatically), because only used-defined functions are converted as
|
# automatically), because only used-defined functions are converted as
|
||||||
# instance methods.
|
# instance methods.
|
||||||
for meth in ('scc_filter', 'scc_filter_states'):
|
def _add_twa_graph(meth):
|
||||||
setattr(twa_graph, meth, (lambda self, *args, **kwargs:
|
setattr(twa_graph, meth, (lambda self, *args, **kwargs:
|
||||||
globals()[meth](self, *args, **kwargs)))
|
globals()[meth](self, *args, **kwargs)))
|
||||||
|
|
||||||
|
for meth in ('scc_filter', 'scc_filter_states',
|
||||||
|
'is_deterministic', 'is_unambiguous'):
|
||||||
|
_add_twa_graph(meth)
|
||||||
|
|
||||||
# Wrapper around a formula iterator to which we add some methods of formula
|
# Wrapper around a formula iterator to which we add some methods of formula
|
||||||
# (using _addfilter and _addmap), so that we can write things like
|
# (using _addfilter and _addmap), so that we can write things like
|
||||||
# formulas.simplify().is_X_free().
|
# formulas.simplify().is_X_free().
|
||||||
|
|
|
||||||
|
|
@ -128,6 +128,7 @@
|
||||||
#include "twaalgos/sccfilter.hh"
|
#include "twaalgos/sccfilter.hh"
|
||||||
#include "twaalgos/stats.hh"
|
#include "twaalgos/stats.hh"
|
||||||
#include "twaalgos/isdet.hh"
|
#include "twaalgos/isdet.hh"
|
||||||
|
#include "twaalgos/isunamb.hh"
|
||||||
#include "twaalgos/simulation.hh"
|
#include "twaalgos/simulation.hh"
|
||||||
#include "twaalgos/postproc.hh"
|
#include "twaalgos/postproc.hh"
|
||||||
#include "twaalgos/product.hh"
|
#include "twaalgos/product.hh"
|
||||||
|
|
@ -307,6 +308,7 @@ namespace std {
|
||||||
%include "twaalgos/sccfilter.hh"
|
%include "twaalgos/sccfilter.hh"
|
||||||
%include "twaalgos/stats.hh"
|
%include "twaalgos/stats.hh"
|
||||||
%include "twaalgos/isdet.hh"
|
%include "twaalgos/isdet.hh"
|
||||||
|
%include "twaalgos/isunamb.hh"
|
||||||
%include "twaalgos/simulation.hh"
|
%include "twaalgos/simulation.hh"
|
||||||
%include "twaalgos/postproc.hh"
|
%include "twaalgos/postproc.hh"
|
||||||
%include "twaalgos/product.hh"
|
%include "twaalgos/product.hh"
|
||||||
|
|
|
||||||
|
|
@ -41,3 +41,9 @@ assert(aut1.get_name() == None)
|
||||||
aut1.set_name("test me")
|
aut1.set_name("test me")
|
||||||
assert(aut1.get_name() == "test me")
|
assert(aut1.get_name() == "test me")
|
||||||
# The method is the same as the function
|
# The method is the same as the function
|
||||||
|
|
||||||
|
a = spot.translate('true', 'low', 'any')
|
||||||
|
assert(a.prop_deterministic() == False)
|
||||||
|
assert(a.prop_unambiguous() == False)
|
||||||
|
assert(a.is_deterministic() == True)
|
||||||
|
assert(a.is_unambiguous() == True)
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue