Commit graph

5069 commits

Author SHA1 Message Date
Alexandre Duret-Lutz
0411099506 trival: prefer a global operator== relying on implicit conversion
Hopefully fixes #359.

* spot/misc/trival.hh: Declare a global operator==(trival,trival) that
replace the specialized operator==(bool,trival), and the in class
trival::operator(trival), thanks to the implicit construction from
bool to trival.  Make the repr_t/value_t constructor explicit, are
those are mostly internal to the library and may cause conflicts.
* spot/twa/twa.hh: Adjust to construct trival explicitly.
* python/spot/impl.i: Since Swig/Python does not support global
comparison operators, implement a member version, supporting
only __eq__(trival,bool) as before.
* tests/python/setacc.py: Adjust erroneous code.
* tests/python/trival.py: Add test cases.
2018-07-04 16:00:00 +02:00
43d426aaae complement: improve code coverage
* spot/twaalgos/complement.cc: removed unused code
* tests/python/except.py: test for exception raised
2018-07-02 18:36:56 +02:00
Clément Gillard
4ca38d225a * spot/twaalgos/product.hh: Typos in comments. 2018-07-02 17:35:42 +02:00
Alexandre Duret-Lutz
b9482a5bcc * .gitlab-ci.yml: Typo. 2018-07-02 16:44:47 +02:00
34ffc1fa1f isdet: fix documentation error
* spot/twaalgos/isdet.hh: here
2018-07-02 16:37:55 +02:00
c717b58827 implement NCSB complementation
* spot/twaalgos/isdet.cc,spot/twaalgos/isdet.hh: Two new functions to
highlight deterministic SCCs
* spot/twaalgos/complement.cc,spot/twaalgos/complement.hh:
Implementation of the NCSB complementation algorithm
* tests/Makefile.am, tests/python/complement_semidet.py: Test the
implementation
* NEWS: document function
2018-07-02 14:32:57 +02:00
Alexandre Duret-Lutz
8d233692b2 gitlab-ci: publish the RPM packages
* .gitlab-ci.yml (publish-rpm): New job.
2018-07-02 14:27:27 +02:00
Alexandre Duret-Lutz
3a03144754 * AUTHORS: Add Antoine. 2018-07-01 16:37:53 +02:00
Alexandre Duret-Lutz
e48c6c40d0 ltl-split: deal with suspendable formulas that are false
Fixes #358.

* spot/twaalgos/translate.cc: Fix the assert().
* tests/core/ltl2tgba2.test: Add a test case.
2018-06-30 20:39:30 +02:00
Alexandre Duret-Lutz
d82419de1a * NEWS: Adjust for the release of Owl 18.06. 2018-06-30 17:19:58 +02:00
Alexandre Duret-Lutz
c1b7497f84 gfguarantee: fix selection of moved init state
Fixes #357.

* spot/twaalgos/gfguarantee.cc: Decide that a moved init state is to
close from the terminal state *before* actually modifying the
automaton.
* tests/core/ltl2tgba2.test: Add a test.
2018-06-30 16:44:59 +02:00
Alexandre Duret-Lutz
04d05104fa bin: conform to GNU Coding Standards for --version
* bin/common_setup.cc: Print the version number after the parentheses.
2018-06-29 21:55:21 +02:00
Alexandre Duret-Lutz
4e8b35d7ca twa: introduce exclusive_word() and exclusive_run()
* spot/twa/twa.cc, spot/twa/twa.hh: Add these methods.
* NEWS, tests/python/contains.ipynb: Document them.
2018-06-29 21:55:21 +02:00
3c12015181 build rpm package during ci
* .gitignore: don't commit spot.spec
* Makefile.am: write version number to spot.spec.in
* .gitlab-ci.yml: new job builds the tarball and rpm package
* spot.spec.in: spot.spec is used by rpmbuild to build the package
2018-06-29 13:29:15 +02:00
Alexandre Duret-Lutz
f5f5daec9a translate: enable a restricted form of ltl-split for TGBA/BA
Fixes #267

* spot/twaalgos/gfguarantee.cc: Fix a typo when comparing automata
sizes.
* spot/twaalgos/translate.cc, spot/twaalgos/translate.hh: Use
ltl-split even for BA/TGBA, but only of conjunctions with GF(..)
in those cases.
* tests/core/ltl2tgba2.test: Adjust and add the example of #267.
* tests/core/degenid.test, tests/core/parity2.test,
tests/core/stutter-tgba.test, tests/python/automata.ipynb,
tests/python/highlighting.ipynb, tests/python/stutter-inv.ipynb,
bin/spot-x.cc: Adjust.
2018-06-28 23:02:26 +02:00
Alexandre Duret-Lutz
4235b007f3 org: clarify that ltl2tgba does not only output TGBA
* doc/org/tools.org: Adjust the link to ltl2tgba.org.
* doc/org/ltl2tgba.org: Also point out that --generic and --parity can
be used without --deterministic.
* bin/ltl2tgba.cc, bin/spot.cc: Adjust help text.
2018-06-27 16:52:45 +02:00
Alexandre Duret-Lutz
90e8cb9d2d * NEWS: Fix typos reported by Fanda. 2018-06-27 16:18:15 +02:00
Alexandre Duret-Lutz
2402d721a9 modernize the logo
* doc/org/spot2.svg: New file.
* doc/Makefile.am: Distribute it.
* doc/org/.gitignore: Adjust.
* doc/org/setup.org: Display it.
* doc/org/autcross.org, doc/org/autfilt.org, doc/org/citing.org,
doc/org/compile.org, doc/org/concepts.org, doc/org/csv.org,
doc/org/dstar2tgba.org, doc/org/genaut.org, doc/org/genltl.org,
doc/org/hierarchy.org, doc/org/hoa.org, doc/org/index.org,
doc/org/install.org, doc/org/ioltl.org, doc/org/ltl2tgba.org,
doc/org/ltl2tgta.org, doc/org/ltlcross.org, doc/org/ltldo.org,
doc/org/ltlfilt.org, doc/org/ltlgrind.org, doc/org/ltlsynt.org,
doc/org/oaut.org, doc/org/randaut.org, doc/org/randltl.org,
doc/org/satmin.org, doc/org/tools.org, doc/org/tut.org,
doc/org/tut01.org, doc/org/tut02.org, doc/org/tut03.org,
doc/org/tut04.org, doc/org/tut10.org, doc/org/tut11.org,
doc/org/tut20.org, doc/org/tut21.org, doc/org/tut22.org,
doc/org/tut23.org, doc/org/tut24.org, doc/org/tut30.org,
doc/org/tut31.org, doc/org/tut50.org, doc/org/tut51.org,
doc/org/upgrade2.org: Include setup.org instead of declaring it as
SETUPFILE.
* doc/org/spot.css: Add entries for the logo.
* python/ajax/trans.html: Use the new logo.
* python/ajax/logos/mail.png, python/ajax/logos/spot64s.png: Delete.
* python/ajax/Makefile.am: Adjust.
2018-06-27 16:18:15 +02:00
Alexandre Duret-Lutz
dd973d120e doc: download plantuml.jar from lrde.epita.fr
* doc/Makefile.am (PLANTUML_URL): Adjust.
2018-06-26 14:24:22 +02:00
Alexandre Duret-Lutz
5f46becc01 * NEWS: Include a comparison with ltl3tela 1.1.2. 2018-06-26 10:29:42 +02:00
Alexandre Duret-Lutz
64df179bff org: update hierarchy examples
* doc/org/hierarchy.org: Adjust for recent changes.
2018-06-25 20:45:13 +02:00
Alexandre Duret-Lutz
0a8c6479b7 translate: extract obligations terms when translating LTL to Parity
* spot/twaalgos/translate.cc: Here.
* NEWS: Mention the change.
* tests/core/genltl.test: Add parity automata sizes for a set of
formulas.
* tests/core/parity2.test: Add another formula to the tests.
2018-06-25 20:40:29 +02:00
Alexandre Duret-Lutz
0690a547a5 * NEWS: Update the micro benchmarks. 2018-06-22 17:42:37 +02:00
Alexandre Duret-Lutz
a325de8678 postproc: simplify the acceptance condition
* spot/twaalgos/postproc.cc: Here.
* spot/twaalgos/cobuchi.cc, spot/twaalgos/totgba.cc: Fix some bug
uncovered by the new simplified automata.
* tests/core/satmin2.test, tests/core/sccdot.test,
tests/core/sim3.test, tests/python/decompose.ipynb,
tests/python/satmin.ipynb: Update expected results.
* NEWS: Mention the simplification and the bug.
2018-06-22 17:17:45 +02:00
Alexandre Duret-Lutz
4532c0c13c python: install everythin into pyexecdir
Reported by Antoine Martin.

* python/Makefile.am: Here.
* NEWS: Mention the bug.
2018-06-22 14:55:16 +02:00
Alexandre Duret-Lutz
621fb818e3 improve translation of ms-phi-h=2..3
* spot/twaalgos/gfguarantee.cc: Rework the history computation to keep
an overapproximation of the history, and a longer one.  Also replay
the history even if there is no initial trivial SCC.  This helps with
translating FG(!a|XXXb) where we need to keep the history of a, but we
were previously unable to do so because some state had both "a" and
"ab" as input.
* spot/twaalgos/translate.cc: Optimize the product of suspendable
automata by removing useless trivial SCCs.
* tests/core/genltl.test, tests/core/satmin.test, NEWS: Adjust
expected results.
2018-06-21 10:02:13 +02:00
Maximilien Colange
c9131aee72 add a pool allocator for STL containers
* spot/priv/allocator.hh, spot/priv/Makefile.am: add a STL-compliant
  allocator based on spot::fixed_size_pool
* spot/misc/fixpool.hh, spot/misc/fixpool.cc, spot/misc/Makefile.am:
  refactor the existing spot::fixed_size_pool
* spot/ltsmin/ltsmin.cc, spot/twa/twaproduct.cc: reflect changes in the
  interface of spot::fixed_size_pool
* tests/core/mempool.cc: test the new allocator
2018-06-20 14:26:45 +02:00
Maximilien Colange
3fe74f1cb9 make valgrind understand our memory pools
Annotate pools with valgrind macros so that it detects errors in pool
usage. Typically, we wish valgrind to detect a leak when the user fails
to call proper deallocation function.

* spot/misc/fixpool.hh, spot/misc/mspool.hh: here
* configure.ac: ensure that valgrind header exists
* tests/Makefile.am, tests/core/mempool.cc, tests/core/mempool.test,
  tests/core/.gitignore: add tests to ensure valgrind accurately detects
  leaks
2018-06-20 14:26:31 +02:00
Alexandre Duret-Lutz
b7e77743db org: fix lists of escape sequences
* doc/org/autfilt.org, doc/org/ltl2tgba.org, doc/org/ltlfilt.org: Here.
2018-06-20 11:38:59 +02:00
Alexandre Duret-Lutz
4815a361de translate: add ltl-split option
* spot/twaalgos/translate.cc, spot/twaalgos/translate.hh: Build
automata with generic acceptance by doing product of automata for
smaller subformulas.
* bin/spot-x.cc: Mention ltl-split.
* NEWS: Mention the change, and show some results.
* tests/core/genltl.test, tests/python/_product_susp.ipynb,
tests/python/highlighting.ipynb: Adjust test cases.
* doc/org/ltl2tgba.org: Update.
* tests/core/gragsa.test: Add another formula to cover more
code.
2018-06-20 11:38:59 +02:00
Alexandre Duret-Lutz
4f2e9512a2 product_susp: new function
* spot/twaalgos/product.cc, spot/twaalgos/product.hh: Implement it.
* tests/python/_product_susp.ipynb: New file.
* tests/Makefile.am: Add it.
* NEWS: Mention it.
2018-06-20 11:38:59 +02:00
a4a8ae9a20 don't use tabs for indentation
* .dir-locals.el: Here
2018-06-15 14:34:33 +02:00
Maximilien Colange
1183a935c7 fix a bug in aiger printer
* spot/twaalgos/aiger.cc: here
* tests/core/ltlsynt.test: add a non-regression test
2018-06-15 11:08:27 +02:00
Maximilien Colange
9489a65bc6 ltlsynt: more deterministic behavior
Zielonka algorithm used to iterate over an std::unordered_set, thus
producing different strategies depending on compiler...

* spot/misc/game.cc: replace std::unordered_set with std::set
2018-06-15 11:08:27 +02:00
653deaa934 fix typo in dir-locals
* .dir-locals.el: fix typo for indent-tabs-mode
2018-06-14 13:46:26 +02:00
Maximilien Colange
f2128360a7 update ltlsynt documentation
closes #355

* doc/org/citing.org, bin/man/ltlsynt.x: add SYNT2018 paper
* doc/org/ltlsynt.org: fix documentation
2018-06-13 15:57:34 +02:00
Alexandre Duret-Lutz
fbc372e292 scc_filter: add quick test for very-weak
Related to issue #351.

* spot/twaalgos/sccfilter.cc: When handling weak automata, we know
they are very-weak if the SCC count is equal to the number of states.
* tests/core/dca2.test, tests/core/monitor.test,
tests/core/parity2.test, tests/core/randomize.test,
tests/core/readsave.test, tests/core/remfin.test,
tests/core/sccsimpl.test, tests/core/wdba2.test,
tests/python/dualize.py, tests/python/remfin.py: Adjust output.
2018-06-11 21:42:21 +02:00
Alexandre Duret-Lutz
729921c0a0 ltl2tgba_fm: mark persistence formulas as weak automata
... instead of inherently-weak.  The reason they were tagged
as inherently-weak is historical: this property was introduced
1.5 years before the weak propery.

Fixes #351.

* spot/twaalgos/ltl2tgba_fm.cc: Use prop_weak() instead of
prop_inherently_weak().  Also be more conservative about the use of
single_acc when unambiguous automata are generated.
2018-06-11 21:42:21 +02:00
Alexandre Duret-Lutz
95d732e331 specialize scc_filter for inherently_weak automata
Part of issue #351.

* spot/twaalgos/sccfilter.cc, spot/twaalgos/sccfilter.hh: Specialize
for inherently-weak automata.
* spot/twaalgos/postproc.cc: Simplify.
* tests/core/dca2.test, tests/core/parity2.test,
tests/core/prodor.test, tests/core/randomize.test,
tests/python/automata.ipynb, tests/python/highlighting.ipynb,
tests/python/product.ipynb, tests/python/remfin.py,
tests/python/stutter-inv.ipynb: Adjust.
* NEWS: Mention it.
2018-06-11 15:01:49 +02:00
Alexandre Duret-Lutz
2fad1ff6de * NEWS: Reorder and fix some typos. 2018-06-08 17:40:36 +02:00
Alexandre Duret-Lutz
1341c656be genltl: add --gf-equiv-xn, --gf-implies-xn
* spot/gen/formulas.cc, spot/gen/formulas.hh: Here.
* bin/genltl.cc: Add options.
* tests/core/genltl.test: Test them.
* NEWS: Mention them.
2018-06-08 15:51:11 +02:00
Alexandre Duret-Lutz
7e9325866f gf_guarantee_to_ba: save states using histories
This improves gf_guarantee_to_ba() on formulas GF(φ) where the
automaton for F(φ) as several leading transiant SCCs.  E.g.,
GF(a <-> XXXa) where we know get results that are as good as
those of delag without loosing on the cases where delag's technique
would actually produce two big automata.

* spot/twaalgos/gfguarantee.cc: Implement this.
* spot/twaalgos/gfguarantee.hh, NEWS: Document it.
* tests/core/ltl2tgba2.test, tests/core/ltl3ba.test: Add test cases.
2018-06-08 15:32:52 +02:00
Alexandre Duret-Lutz
730c6bbca2 minimize_wdba: use a product to decide accepting SCCs
Fixes #347.

* spot/twaalgos/minimize.cc, spot/twaalgos/minimize.hh: An SCC of the
determinized automaton is marked as accepting if it intersects any
accepting SCC of the original automaton.  This can be checked by
making a product.  As a consequence the output of minimize_wdba() now
always includes the original language, and minimize_obligation() only
needs a single containment check.
* NEWS: Mention this.
2018-06-05 17:42:44 +02:00
Alexandre Duret-Lutz
4afd1856a6 * .gitlab-ci.yml (debian-gcc-snapshot): Fix path to log files. 2018-06-05 08:48:40 +02:00
Alexandre Duret-Lutz
ca1c67a73d simplifier: add two new rules
Fixes #354.

* spot/tl/simplify.cc: Implement the rules.
* doc/tl/tl.tex, NEWS: Document them.
* tests/core/reduccmp.test: Add tests.
* tests/core/det.test, tests/core/satmin.test: Adjust.
2018-06-05 08:48:40 +02:00
Alexandre Duret-Lutz
8e3b982985 * NEWS: Reorganize recent entries. 2018-06-05 08:48:40 +02:00
Alexandre Duret-Lutz
c535871ffd genltl: --ms-example now has two arguments
* bin/genltl.cc, spot/gen/formulas.cc, tests/core/genltl.test: Adjust.
* NEWS: Mention it.
2018-06-05 08:48:40 +02:00
Alexandre Duret-Lutz
2e50f9e986 autfilt: implement --has-univ-branching and --has-exist-branching
Fixes #352.

* bin/autfilt.cc: Add the options.
* tests/core/alternating.test: Test them.
* NEWS: Mention them.
2018-06-05 08:48:40 +02:00
Alexandre Duret-Lutz
939f63eec9 genltl: add support for --sejk-f=n,m
Together with the previous patch, this Fixes #353.

Implementing this required to extend our interface two support
two-parameter patterns.

* spot/gen/formulas.cc, spot/gen/formulas.hh: Implement it.
* bin/genltl.cc: Add --sejk-f.
* bin/common_output.cc, bin/common_output.hh: Adjust to handle
"line numbers" that are not integers (e.g., "3,2"), since those
are used to display pattern parameters.
* bin/ltlfilt.cc: Adjust.
* python/spot/gen.i: Add support for two-parameters patterns.
* tests/core/genltl.test, tests/python/gen.ipynb: Augment.
* NEWS: Mention it.
2018-06-05 08:48:40 +02:00
Alexandre Duret-Lutz
c76df95c69 genltl: three new families --sejk-{j,k,patterns}
These correspond to the first three blocks of table 1 in S. Sickert,
J. Esparza, S. Jaax, and J. Křetínský: Limit-Deterministic Büchi
Automata for Linear Temporal Logic.  CAV'16.  LNCS 9780.

For #353.

* spot/gen/formulas.cc, spot/gen/formulas.hh, bin/genltl.cc: Implement
the new families.
* tests/core/genltl.test: Test it.
* bin/man/genltl.x, NEWS: Document it.
2018-06-03 20:20:59 +02:00