Commit graph

3508 commits

Author SHA1 Message Date
Alexandre Duret-Lutz
ff4837f4f2 python: more robust handling of %timeit in notebooks
* python/tests/ipnbdoctest.py: Simply ignore %timeit blocks.
2015-12-26 20:16:53 +01:00
Alexandre Duret-Lutz
6fb4df4359 Move spot-if/ltsmin/ to spot/ltsmin/
* spot-if/ltsmin/: Rename as...
* spot/ltsmin/: ... this.
* spot-if/: Delete.
* Makefile.am, NEWS, README, configure.ac, debian/libspot-dev.install,
doc/Doxyfile.in, spot/Makefile.am, spot/sanity/80columns.test,
spot/sanity/style.test: Adjust.
2015-12-25 13:45:42 +01:00
Alexandre Duret-Lutz
34c3c1cedc rename wrap/python/ to python/
* wrap/python/: Rename to...
* python/: ... this.
* wrap/: Delete.
* Makefile.am, README, configure.ac, debian/python3-spot.examples,
debian/rules, doc/org/.dir-locals.el.in, doc/org/init.el.in,
spot/sanity/ipynb.test: Adjust.
2015-12-25 12:38:25 +01:00
Alexandre Duret-Lutz
74ec9c54c4 show how to implement product in Python
* wrap/python/tests/product.ipynb: New file.
* wrap/python/tests/Makefile.am, doc/org/tut.org: Add it.
* wrap/python/tests/ipnbdoctest.py: Ignore %timeit results.
* wrap/python/spot_impl.i: Add bindings for
set_state_names()/get_state_names().
* spot/twaalgos/product.cc: Fix computation of properties.
* doc/org/hoa.org: Name.
* NEWS: Update.
2015-12-24 19:47:15 +01:00
Alexandre Duret-Lutz
ad37cacbc0 twa: fix duplicate propositions in ap()
Calling register_ap() with same atomic proposition several time, for
instance via copy_ap() in a product, would create duplicate atomic
propositions.  This fix will be exercised by the next patch.

* spot/twa/twa.hh: Here.
* spot/twaalgos/compsusp.cc, spot/twaalgos/ltl2taa.cc: Fix
to correctly register atomic propositions.
* NEWS: Mention it.
2015-12-24 19:46:43 +01:00
Alexandre Duret-Lutz
fbf5ac0ea7 acc_cond: get rid of generalized_buchi()
It is already in acc_cond::acc_code::generalized_buchi() along with all
other acceptance condition constructors.

* spot/twa/acc.hh (acc_cond::generalized_buchi): Remove.
* spot/tests/ikwiad.cc, spot/twaalgos/postproc.cc: Adjust.
2015-12-18 18:18:47 +01:00
Alexandre Duret-Lutz
df1ef302e8 acc_code: parse from the constructor
* spot/twa/acc.hh, spot/twa/acc.cc (parse_acc_code): Rename as...
(acc_cond::acc_code): ... this, making it a lot easier to build
acceptance conditions from strings.
* NEWS: Mention the change.
* spot/twaalgos/dtwasat.cc, spot/bin/randaut.cc, spot/tests/acc.cc:
Adjust.
* wrap/python/tests/acc_cond.ipynb, wrap/python/tests/accparse.ipynb,
wrap/python/tests/accparse2.py: Simplify, but not completely to exercise
all variants.
* wrap/python/spot_impl.i: Make acc_code's constructor implicit.
2015-12-18 18:18:28 +01:00
Alexandre Duret-Lutz
d0b29051b2 acc_cond: allow ctor from acc_code only + bind unsat_mark()
* spot/twa/acc.hh: Here.
* wrap/python/spot_impl.i: Adjust for the strange return type of
unsat_mark().
* wrap/python/tests/acc_cond.ipynb: Augment.
2015-12-18 17:04:03 +01:00
Alexandre Duret-Lutz
b893b55973 python: better swig options
* wrap/python/Makefile.am: Use more modern swig flags.
2015-12-18 16:03:50 +01:00
Alexandre Duret-Lutz
15131e74f2 python: better binding for is_parity()
* wrap/python/spot_impl.i: Here.
* wrap/python/tests/acc_cond.ipynb: Document it.
* spot/twa/acc.cc (is_parity): Always initialize max.
2015-12-18 15:54:35 +01:00
Alexandre Duret-Lutz
fd6ad9913f acc: get rid of join()
* spot/twa/acc.hh: Here.  Also make sure << takes an unsigned
argument.
* spot/twa/twaproduct.cc, spot/twaalgos/compsusp.cc,
spot/twaalgos/product.cc, spot/twaalgos/remfin.cc,
spot/twaalgos/totgba.cc, spot/tests/acc.cc: Adjust.
2015-12-17 14:39:03 +01:00
Alexandre Duret-Lutz
94cca9de3d acc_cond: rename is_tt/is_ff as is_t/is_f and add printer
* spot/twa/acc.cc, spot/twa/acc.hh: Here.
* spot/parseaut/parseaut.yy, spot/twa/acc.hh,
spot/twaalgos/gtec/gtec.cc, spot/twaalgos/hoa.cc,
spot/twaalgos/neverclaim.cc, spot/twaalgos/product.cc,
spot/twaalgos/remfin.cc, spot/twaalgos/strength.cc: Adjust.
* NEWS: Mention the changes.
* wrap/python/spot_impl.i: Bind acc_cond the printer.
* wrap/python/tests/acc_cond.ipynb: Add more examples.
2015-12-17 08:42:34 +01:00
Alexandre Duret-Lutz
2927cf38ac python: add some doc & tests for the acceptance bindings
* wrap/python/tests/acc_cond.ipynb: New file.
* wrap/python/tests/Makefile.am, doc/org/tut.org: Add it.
* wrap/python/spot_impl.i: Add printer for acc_cond::mark_t.
2015-12-16 19:06:20 +01:00
Alexandre Duret-Lutz
4993e80706 acc: simplify interface using operators
* spot/twa/acc.hh, spot/twa/acc.cc: Here.  Also remove
some redundant functions.
* spot/parseaut/parseaut.yy, spot/priv/accmap.hh, spot/tests/acc.cc,
spot/tests/twagraph.cc, spot/twa/taatgba.hh, spot/twa/twaproduct.cc,
spot/twaalgos/dtwasat.cc, spot/twaalgos/hoa.cc, spot/twaalgos/lbtt.cc,
spot/twaalgos/ltl2tgba_fm.cc, spot/twaalgos/product.cc,
spot/twaalgos/remfin.cc, spot/twaalgos/simulation.cc,
spot/twaalgos/tau03opt.cc, spot/twaalgos/weight.cc,
spot/twaalgos/weight.hh: Adjust.
* NEWS: Mention the changes.
2015-12-16 19:06:20 +01:00
Alexandre Duret-Lutz
c39d35d068 python: port the tut22.org example to Python
* wrap/python/spot_impl.i: Extend acc_cond::mark_t to with a constructor
that takes a vector.
* doc/org/tut22.org: Add a Python version.
* doc/org/tut.org: Adjust the list, we don't have any C++-specific
example.
* NEWS: Mention it.
2015-12-15 19:01:33 +01:00
Alexandre Duret-Lutz
9313222e95 python: allow iterating over the successors of a state
Fixes #118.

* spot/twa/twagraph.hh: Avoid using graph_t::state to help Swig.
* wrap/python/spot_impl.i: Add a __str__ function for acc_cond::mark_t.
* doc/org/tut21.org: Add the Python version.
* doc/org/tut.org: Move tut21.org to the Python/C++ section.
* NEWS: Update.
2015-12-14 11:51:57 +01:00
Alexandre Duret-Lutz
4b853865b9 python: initial work on wrapping twa_graph::out(n)
* spot/twa/twagraph.hh (out): Do not hide from SWIG.
* spot/graph/graph.hh: Hide stuff that SWIG do not understand.
* wrap/python/spot_impl.i: Add some typemaps and fragment to
iterate over the result of twa_graph::out().
2015-12-11 19:32:52 +01:00
Alexandre Duret-Lutz
4e040fd9f7 * wrap/python/spot_impl.i: We do not use False/True anymore in Spot. 2015-12-11 10:14:48 +01:00
Alexandre Duret-Lutz
3467a719bb python: kill some Swig warnings
* wrap/python/spot_impl.i: Get rid of some warnings about missing
typecheck for spot::formula.
2015-12-10 18:25:35 +01:00
Alexandre Duret-Lutz
679be1d727 speed up equivalence check for LTL formulas
With this patch reduc.test goes from 4:57 down to 4:06 on my laptop.

* spot/tl/contain.cc (equal): Use are_isomorphic() before testing
for containment.
* spot/twaalgos/are_isomorphic.hh, spot/twaalgos/are_isomorphic.cc:
(are_isomorphic): New static method.
2015-12-09 18:13:21 +01:00
Alexandre Duret-Lutz
2e15ed959d decompose_strength: work with inherently weak SCCs
* wrap/python/tests/decompose.ipynb: Adjust text.
* spot/twaalgos/strength.hh, spot/twaalgos/strength.cc:
Adjust to extract inherently weak SCCs instead of weak SCCs.  This gets
rids of the special handling for the "corner cases".
* spot/tests/strength.test: Adjust.
* NEWS: Mention it.
2015-12-09 15:53:51 +01:00
Alexandre Duret-Lutz
9bbcf85b3a acc: move unsat_mark in acc_cond
so that we can optimize it when no Fin are used

* spot/twa/acc.cc, spot/twa/acc.hh: Do it.
* spot/twaalgos/complete.cc, spot/twaalgos/strength.cc: Adjust.
2015-12-09 11:21:41 +01:00
Alexandre Duret-Lutz
2d3e7cecf5 org: update Spot description on index page
* doc/org/index.org: Here.
2015-12-08 22:43:42 +01:00
Alexandre Duret-Lutz
1f2260f971 introduce is_inherently_weak_automaton()
* spot/twaalgos/strength.cc, spot/twaalgos/strength.hh
(is_inherently_weak_automaton): New function.
(is_type_automaton): Adjust to implement the above and
set prop_inherently_weak().
* spot/twaalgos/isweakscc.cc, spot/twaalgos/isweakscc.hh:
Rewrite is_inherently_weak_scc() to not enumerate cycles.
* spot/bin/autfilt.cc: Add a --is-inherently-weak option.
* spot/tests/readsave.test: More tests.
* spot/tests/strength.test: Adjust expected output.
* doc/org/hoa.org: Adjust documentation of --check.
* NEWS: Mention those changes.
2015-12-08 18:13:19 +01:00
Alexandre Duret-Lutz
0edb2ad066 man: more bibliographic references
* spot/bin/man/autfilt.x, spot/bin/man/dstar2tgba.x,
spot/bin/man/ltlfilt.x: Add more bibliography.
2015-12-07 22:29:50 +01:00
Alexandre Duret-Lutz
b519c7d3dc rename iface/ as spot-if/
So that instead of having to do
  #incluce <spot/iface/ltsmin/ltsmin.hh>
for using installed the installed header, and
  #incluce <iface/ltsmin/ltsmin.hh>
for using the non-installed version, we now do
  #incluce <spot-if/ltsmin/ltsmin.hh>
in both cases.

* iface/: Rename as...
* spot-if/: ... this.
* doc/Doxyfile.in, README, configure.ac, Makefile.am,
spot/sanity/80columns.test, spot/sanity/style.test: Adjust.
* NEWS: Mention the change.
* spot-if/ltsmin/Makefile.am: Install headers in $includedir/spot-if.
* debian/libspot-dev.install: Distribute that directory as well.
2015-12-07 22:29:18 +01:00
Alexandre Duret-Lutz
690b8f51c7 org: some documentation about compiling C++
* doc/org/compile.org: New file.
* doc/Makefile.am: Add it.
* NEWS: Mention it.
* doc/org/tut.org, doc/org/tut01.org: Link to it.
2015-12-05 11:29:02 +01:00
Alexandre Duret-Lutz
f120dd3206 rename src/ as spot/ and use include <spot/...>
* NEWS: Mention the change.
* src/: Rename as ...
* spot/: ... this, adjust all headers to include <spot/...> instead of
"...", and adjust all Makefile.am to search headers from the top-level
directory.
* HACKING: Add conventions about #include.
* spot/sanity/style.test: Add a few more grep to catch cases
that do not follow these conventions.
* .gitignore, Makefile.am, README, bench/stutter/Makefile.am,
bench/stutter/stutter_invariance_formulas.cc,
bench/stutter/stutter_invariance_randomgraph.cc, configure.ac,
debian/rules, doc/Doxyfile.in, doc/Makefile.am,
doc/org/.dir-locals.el.in, doc/org/g++wrap.in, doc/org/init.el.in,
doc/org/tut01.org, doc/org/tut02.org, doc/org/tut03.org,
doc/org/tut10.org, doc/org/tut20.org, doc/org/tut21.org,
doc/org/tut22.org, doc/org/tut30.org, iface/ltsmin/Makefile.am,
iface/ltsmin/kripke.test, iface/ltsmin/ltsmin.cc,
iface/ltsmin/ltsmin.hh, iface/ltsmin/modelcheck.cc,
wrap/python/Makefile.am, wrap/python/ajax/spotcgi.in,
wrap/python/spot_impl.i, wrap/python/tests/ltl2tgba.py,
wrap/python/tests/randgen.py, wrap/python/tests/run.in: Adjust.
2015-12-04 20:13:59 +01:00
Alexandre Duret-Lutz
1fddfe60ec * NEWS: Typo. 2015-12-04 16:39:07 +01:00
Alexandre Duret-Lutz
47da953c74 * NEWS, configure.ac: Bump version number. 2015-12-04 11:13:41 +01:00
Alexandre Duret-Lutz
af96afac82 Release Spot 1.99.6
* NEWS, configure.ac, doc/org/setup.org: Update version and date.
2015-12-04 08:12:34 +01:00
Alexandre Duret-Lutz
871965c7fb * wrap/python/ajax/spotcgi.in: Adjust for recent renamings. 2015-12-04 08:09:10 +01:00
Alexandre Duret-Lutz
5f45642a24 * NEWS: Cleanup. 2015-12-03 18:06:07 +01:00
Alexandre Duret-Lutz
9d8fd50821 * elisp/hoa-mode.el: Update from its master. 2015-12-03 17:59:01 +01:00
Alexandre Duret-Lutz
6a64b0804c * debian/control: Fix some dependencdies. 2015-12-02 19:48:20 +01:00
Alexandre Duret-Lutz
e357c0c5bc hoa: allow dots in identifiers
As discussed at https://github.com/adl/hoaf/issues/56

* src/parseaut/scanaut.ll: Allow dots.
* src/tests/parseaut.test: Test it.
* NEWS: Mention it.
2015-12-02 15:31:03 +01:00
Alexandre Duret-Lutz
c60c117714 python: do not use -no-undefined
This was added by mistake in 86abd6c1 but that makes no sense, because
the library depends on all the symbols in libpython.  Reported by
Étienne Renault.

* wrap/python/Makefile.am: Here.
2015-12-02 14:26:21 +01:00
Alexandre Duret-Lutz
2052e73af8 word: store the bdd dict for easier printing
* src/twaalgos/word.hh, src/twaalgos/word.cc: Store the
bdd_dict, and replace the print() method by a << overload.
* NEWS: Mention it.
* src/bin/ltlcross.cc, src/bin/common_aoutput.hh: Adjust.
2015-12-01 01:57:37 +01:00
Alexandre Duret-Lutz
cff79b063b * doc/org/hoa.org: Simplify wording in property table. 2015-11-29 02:51:32 +01:00
Alexandre Duret-Lutz
06b176991e fix constness of twa::get_init_state() and twa_succ_iterator::dst()
Fixes #125.

* src/kripke/kripkegraph.hh, src/ta/ta.cc, src/ta/ta.hh,
src/ta/taexplicit.cc, src/ta/taexplicit.hh, src/ta/taproduct.cc,
src/ta/taproduct.hh, src/ta/tgtaproduct.cc, src/ta/tgtaproduct.hh,
src/taalgos/dot.cc, src/taalgos/emptinessta.cc,
src/taalgos/emptinessta.hh, src/taalgos/minimize.cc,
src/taalgos/reachiter.cc, src/taalgos/tgba2ta.cc, src/twa/twa.hh,
src/twa/twagraph.hh, src/twa/twaproduct.cc, src/twa/twaproduct.hh,
src/twaalgos/compsusp.cc, src/twaalgos/gtec/gtec.cc,
src/twaalgos/ltl2tgba_fm.cc, src/twaalgos/reachiter.cc,
src/twaalgos/stutter.cc: Adjust.
2015-11-28 21:47:04 +01:00
Alexandre Duret-Lutz
afbaa54d92 rewrite explicit Kripke structures and their parser
Fixes #4 and fixes #5.

* NEWS: Mention the change.
* src/kripkeparse/: Delete.
* README, src/Makefile.am, configure.ac: Adjust.
* src/kripke/kripkeexplicit.cc, src/kripke/kripkeexplicit.hh,
src/kripke/kripkeprint.cc, src/kripke/kripkeprint.hh: Delete.
* src/kripke/kripkegraph.hh: New file.
* src/kripke/Makefile.am: Adjust.
* src/parseaut/parseaut.yy, src/parseaut/public.hh: Add
an option to read kripke structures.
* src/tests/bad_parsing.test: Delete.
* src/tests/Makefile.am: Adjust.
* src/tests/kripke.test, src/tests/parse_print_test.cc: Rewrite.
* src/tests/ikwiad.cc, src/tests/parseaut.test,
iface/ltsmin/modelcheck.cc, wrap/python/spot_impl.i: Adjust.
2015-11-28 02:18:39 +01:00
Alexandre Duret-Lutz
073d154540 Only use -Bsymbolic-functions, not -Bsymbolic.
* m4/symbolic.m4: Here.  The -Bsymbolic option causes
segfault related to spot::formula::ff() returning a
pointer to some global.
2015-11-28 02:18:39 +01:00
Alexandre Duret-Lutz
745fda1a4f print_hoa: add option "k"
* src/twaalgos/hoa.cc, src/twaalgos/hoa.hh: Implement it.
* NEWS, doc/org/hoa.org, src/bin/common_aoutput.cc: Document it.
* src/tests/readsave.test: Test it.
2015-11-28 02:18:13 +01:00
Alexandre Duret-Lutz
a825fa91e5 dtwa_sat_minimize: better selection of the reference automaton
* src/twaalgos/dtwasat.cc: Choose the reference automaton based on its
size.  With this change, the last example of my LPAR'15 talk goes from
~7s to under 1s.
* NEWS: Mention it.
2015-11-24 06:23:44 +01:00
Alexandre Duret-Lutz
a5ca9dbc43 sat: rename dtgbasat as dtwasat
* src/twaalgos/dtgbasat.cc, src/twaalgos/dtgbasat.hh: Rename as...
* src/twaalgos/dtwasat.cc, src/twaalgos/dtwasat.hh: ... these.
* src/bin/autfilt.cc, src/tests/ikwiad.cc, src/twaalgos/Makefile.am,
src/twaalgos/postproc.cc, wrap/python/spot_impl.i: Adjust.
* NEWS: Mention the renamings.
2015-11-24 05:44:51 +01:00
Alexandre Duret-Lutz
6237bf4cd6 org: more language tooltips in HTML output
* doc/org/spot.css: add tooltips for Python and C++.
2015-11-20 14:50:25 +01:00
Alexandre Duret-Lutz
5aba246ff0 org: syntax-highlight the HOA outputs
* elisp/hoa-mode.el, elisp/Makefile.am, elisp/README: New files.
* debian/copyright, configure.ac, README, Makefile.am: Adjust.
* doc/org/init.el.in: Adjust to load hoa-mode.el.
* doc/org/spot.css: Add entries for HOA mode.
* doc/org/hoa.org, doc/org/ltldo.org, doc/org/oaut.org,
doc/org/tut20.org, doc/org/tut21.org, doc/org/tut22.org,
doc/org/tut30.org: Make the HOA outputs as HOA.
2015-11-20 14:28:51 +01:00
Alexandre Duret-Lutz
d46da963d5 python: better interface for sat_minimize()
* NEWS: Mention it.
* wrap/python/spot.py: Rewrite the sat_minimize() function.
* wrap/python/tests/satmin.py: New file.
* wrap/python/tests/Makefile.am (TESTS): Add it.
2015-11-17 18:37:23 +01:00
Alexandre Duret-Lutz
c1bfc5d59b doc: two typos
* doc/mainpage.dox, doc/org/tut01.org: Here.
2015-11-17 18:18:50 +01:00
Alexandre Duret-Lutz
b3ff5655fb dot: add support for option +N
* src/twaalgos/dot.cc: Here.
* NEWS, src/bin/common_aoutput.cc: Document it.
* wrap/python/tests/automata.ipynb: Test it.
2015-11-14 14:49:31 +01:00