Commit graph

5536 commits

Author SHA1 Message Date
Etienne Renault
606e4fc88c please pedantic option for gcc
* spot/kripke/kripke.hh: here.
2020-06-03 10:33:53 +02:00
Etienne Renault
a308d1a60a bricks: add support for gcc prior to 4.9
* bricks/brick-bitlevel, bricks/brick-hashset,
bricks/brick-shmem, bricks/brick-types: here.
2020-06-03 10:33:53 +02:00
Etienne Renault
6c5c308ea8 bricks: adapt with the new bricks
* bricks/brick-hash, tests/core/bricks.cc: here.
2020-06-03 10:33:53 +02:00
Etienne Renault
bb9fa4e910 bricks: update and move to c++14
* Makefile.am, bricks/brick-assert,
bricks/brick-assert.h, spot/ltsmin/ltsmin.cc,
spot/mc/ec.hh: here.

* bricks/brick-bitlevel.h, bricks/brick-hash.h,
bricks/brick-hashset.h, bricks/brick-shmem.h,
bricks/brick-types.h: Rename as ...
* bricks/brick-bitlevel, bricks/brick-hash,
bricks/brick-hashset, bricks/brick-shmem,
bricks/brick-types: ... these
2020-06-03 10:33:53 +02:00
Etienne Renault
9208726d97 reachability: improve support for callbacks
* spot/mc/reachability.hh: here.
2020-06-03 10:33:53 +02:00
Etienne Renault
72948661e9 swarming: add support everywhere
Swarming implies that a single instance of the kripke
structure (or product) will be explored by diffrent threads
with their own exploration order. Most of the modification
aims to have a thread safe kripke structure.

* spot/kripke/kripke.hh, spot/ltsmin/ltsmin.cc,
spot/ltsmin/ltsmin.hh, spot/mc/ec.hh,
spot/mc/intersect.hh, spot/mc/reachability.hh,
spot/misc/hash.hh, spot/twacube/twacube.hh,
tests/core/twacube.test, tests/ltsmin/modelcheck.cc: here.
2020-06-03 10:33:53 +02:00
Etienne Renault
ae1a3601e6 bricks: propagate use of SPOT_FALLTHROUGH
* bricks/brick-hash.h, bricks/brick-hashset.h: here.
2020-06-03 10:33:53 +02:00
Etienne Renault
fb4ef40d11 Use SPOT_ASSERT() instead of assert() in public headers
* spot/mc/ec.hh, spot/mc/intersect.hh,
spot/mc/reachability.hh, spot/mc/utils.hh: here.
2020-06-03 10:33:53 +02:00
Etienne Renault
c515ee92e2 bricks: add missing override
* bricks/brick-assert.h, bricks/brick-hashset.h,
bricks/brick-shmem.h: here.
2020-06-03 10:33:53 +02:00
Etienne Renault
50d888adf8 Twacube must share the order of atomic propositions
* spot/ltsmin/ltsmin.cc, spot/ltsmin/ltsmin.hh,
tests/ltsmin/modelcheck.cc: here.
2020-06-03 10:33:53 +02:00
Etienne Renault
a1787dd1ce modelcheck: support for csv extraction
* tests/ltsmin/modelcheck.cc: here.
2020-06-03 10:33:53 +02:00
Etienne Renault
9a9a237272 timer: support for walltime
* spot/misc/timer.hh: here.
2020-06-03 10:33:53 +02:00
Etienne Renault
765bb8a7c4 Promote use of shared_ptr
* spot/kripke/kripke.hh, spot/ltsmin/ltsmin.cc,
spot/ltsmin/ltsmin.hh, spot/mc/ec.hh, spot/mc/intersect.hh,
spot/mc/utils.hh, spot/twacube/Makefile.am,
spot/twacube/fwd.hh, spot/twacube/twacube.hh,
spot/twacube_algos/convert.cc, spot/twacube_algos/convert.hh,
tests/core/twacube.cc, tests/ltsmin/modelcheck.cc: here.
2020-06-03 10:33:53 +02:00
Etienne Renault
7d2abe229b swig: prefer typedef to using
According to swig3.0. the 'using' keyword
in type aliasing is not fully supported yet.

* spot/ltsmin/ltsmin.hh: here.
2020-06-03 10:33:53 +02:00
Etienne Renault
9799f2884e modelcheck: support for twacube
* spot/ltsmin/ltsmin.cc, spot/ltsmin/ltsmin.hh,
tests/ltsmin/modelcheck.cc: here.
2020-06-03 10:33:53 +02:00
Etienne Renault
94f7c58f44 intersect: statistic provided using an object
* spot/mc/ec.hh, spot/mc/intersect.hh: here.
2020-06-03 10:33:53 +02:00
Etienne Renault
d430129bb1 convert: simplify interfaces
* spot/twacube_algos/convert.cc, spot/twacube_algos/convert.hh,
tests/core/twacube.cc: here.
2020-06-03 10:33:53 +02:00
Etienne Renault
e11f24dbc1 twacube: atomic propositions are now passed by copy
Passing atomic propositions by reference allows to
save very little memory so it doesn't worth complexifying
memory management.

* spot/twacube/twacube.cc, spot/twacube/twacube.hh: here.
2020-06-03 10:33:53 +02:00
Etienne Renault
6d3154be94 bricks: ATOMIC_FLAG_INIT initialization
From the working draft: "The macro ATOMIC_FLAG_INIT shall be defined
in such a way that it can be used to initialize an object of type
atomic_flag to the clear state. The macro can be used in the form:
atomic_flag guard = ATOMIC_FLAG_INIT; It is unspecified whether the
macro can be used in other initialization contexts."

* bricks/brick-shmem.h: here.
2020-06-03 10:33:53 +02:00
Etienne Renault
f04074bd6d sanity: replace tabulars by spaces
* spot/ltsmin/ltsmin.cc,
spot/mc/ec.hh, spot/mc/intersect.hh,
spot/mc/reachability.hh, spot/mc/unionfind.cc,
spot/mc/utils.hh, spot/twacube/cube.cc,
spot/twacube/twacube.cc,
spot/twacube/twacube.hh,
spot/twacube_algos/convert.cc,
spot/twacube_algos/convert.hh,
tests/core/bricks.cc,
tests/core/cube.cc,
tests/core/twacube.cc,
tests/ltsmin/modelcheck.cc: here.
2020-06-03 10:33:53 +02:00
Etienne Renault
681c2b2011 ltsmin: use FastConcurrent map
* spot/ltsmin/ltsmin.cc: here.
2020-06-03 10:33:53 +02:00
Etienne Renault
01f66642f1 bricks: fix clang warnings
* bricks/brick-hash.h, bricks/brick-shmem.h: here.
2020-06-03 10:33:53 +02:00
Etienne Renault
458f506336 bricks: add bricks for concurrent hashmap
* Makefile.am, README, bricks/brick-assert.h,
bricks/brick-bitlevel.h, bricks/brick-hash.h,
bricks/brick-hashset.h, bricks/brick-shmem.h,
bricks/brick-types.h, configure.ac,
debian/copyright, debian/libspot-dev.install,
m4/bricks.m4, tests/Makefile.am,
tests/core/.gitignore, tests/core/bricks.cc: here.
2020-06-03 10:33:53 +02:00
Etienne Renault
4337abc5a6 modelcheck: rewrite and use argp
* tests/Makefile.am, tests/ltsmin/check.test,
tests/ltsmin/finite.test, tests/ltsmin/finite2.test,
tests/ltsmin/kripke.test, tests/ltsmin/modelcheck.cc: here.
2020-06-03 10:33:53 +02:00
Etienne Renault
b4bbf50794 ltsmin: prodcuce kripkecube
Warning! this patch introduces redundancy (or difference)
between wether you ask for a kripkecube or a kripke.

* spot/ltsmin/ltsmin.cc, spot/ltsmin/ltsmin.hh: here.
2020-06-03 10:33:53 +02:00
Etienne Renault
8e593611f6 convert: kripke and product towards twa
* spot/mc/Makefile.am, spot/mc/utils.hh: here.
2020-06-03 10:33:53 +02:00
Etienne Renault
3bafe693ef ec: Renault et al LPAR'13 emptiness check
In order to reuse the computation of the
intersection between kripke and twa efficiently,
we use template inheritance through the
"mixin templates" technique.

* spot/Makefile.am, spot/mc/Makefile.am,
spot/mc/ec.hh, spot/mc/unionfind.cc,
spot/mc/unionfind.hh: here.
2020-06-03 10:33:53 +02:00
Etienne Renault
87de88c80c intersection: for kripke and twacube
* spot/mc/Makefile.am, spot/mc/intersect.hh: here.
2020-06-03 10:33:53 +02:00
Etienne Renault
94492ffa14 reachability: sequential reachability for kripkecube
* README, configure.ac, spot/mc/Makefile.am,
spot/mc/reachability.hh: here.
2020-06-03 10:33:53 +02:00
Etienne Renault
748068a6d0 kripke: define kripkecube structure
* spot/kripke/kripke.hh: here.
2020-06-03 10:33:53 +02:00
Etienne Renault
b87693bcc3 convert: twacube to twa translation
* spot/twacube_algos/convert.cc, spot/twacube_algos/convert.hh,
tests/core/twacube.cc, tests/core/twacube.test: here.
2020-06-03 10:33:53 +02:00
Etienne Renault
aceb37ab50 convert: twa to twacube translation
* spot/twacube/Makefile.am, spot/twacube/twacube.cc,
spot/twacube/twacube.hh, spot/twacube_algos/convert.cc,
spot/twacube_algos/convert.hh, tests/Makefile.am,
tests/core/.gitignore, tests/core/twacube.cc,
tests/core/twacube.test: here.
2020-06-03 10:33:53 +02:00
Etienne Renault
8d57700d6a convert: BDD to cube conversions
* README, configure.ac, spot/Makefile.am,
spot/twacube_algos/Makefile.am, spot/twacube_algos/convert.cc
spot/twacube_algos/convert.hh, tests/core/cube.cc,
tests/core/cube.test: here.
2020-06-03 10:33:53 +02:00
Etienne Renault
7c3fdd6b97 Introduce cube data structure
* README, configure.ac, spot/Makefile.am,
spot/twacube/Makefile.am, spot/twacube/cube.cc,
spot/twacube/cube.hh, tests/Makefile.am,
tests/core/.gitignore, tests/core/cube.cc,
tests/core/cube.test: here.
2020-06-03 10:33:53 +02:00
Alexandre Duret-Lutz
b7abe6f4b4 ltldo: improve error messages
Use ltldo:... instead of error:... and warning:... and also improve
the diagnostic displayed after a translation failure to mention the
tool and formula.

Incidentally, this fixes a spurious test case failure observed by
Philipp Schlehuber on CentOS7.7 where glibc 2.17 is installed.  With
this system, when posix_spawn() starts a binary that does not exist,
it returns success and let the child die with exit code 127.  On more
recent glibc, posix_spawn() manages to return execve()'s errno, as if
the child had not been created.  We handle those two different ways to
fail, but before this patch one used to print "error:..." and the
other "ltldo:...".

* bin/ltldo.cc: Display the program_name in error message.  Display
the command name and formula on translation failure.
* tests/core/ltldo.test: Adjust test case.
* NEWS: Mention the fix.
2020-06-01 11:00:25 +02:00
Alexandre Duret-Lutz
8e9e706003 * tests/sanity/80columns.test: Force LC_ALL. 2020-05-30 14:29:20 +02:00
Alexandre Duret-Lutz
d76236a03f sccinfo: fix doc
* spot/twaalgos/sccinfo.hh (scc_info_options::NONE): Fix doxygen doc.
2020-05-29 17:14:17 +02:00
Alexandre Duret-Lutz
9150a2e54b twa: get rid of set_num_sets_()
* spot/twa/twa.hh (set_num_sets_): Remove, and adjust all uses.
This fixes #414.
2020-05-25 10:51:44 +02:00
Alexandre Duret-Lutz
f6cf8e4d8a ltlsynt: use wdba-minimize=2 and ba-simul=0
* bin/ltlsynt.cc: Here.
* tests/core/ltlsynt.test: Add extra test case.
* NEWS: Mention ltlsynt -x and related defaults.
2020-05-24 22:16:48 +02:00
Florian Renkin
0413ecfbb8 ltlsynt: Change default options
* bin/ltlsynt.cc: Change default options.
* tests/core/ltlsynt.test: Add test.
2020-05-24 20:16:43 +02:00
Florian Renkin
494471a50b ltlsynt: Add more elements in csv
* bin/ltlsynt.cc: Add the number of states of the dpa
and of the parity game in the csv.
2020-05-24 19:57:30 +02:00
Florian Renkin
3fd5f38248 ltlsynt: Add -x option for translation
* bin/ltlsynt.cc: ltlsynt can use extra options for translator.
2020-05-24 19:57:30 +02:00
Alexandre Duret-Lutz
1752b18f14 work around diagnostic changes in Bison 3.6
Bison <3.6 used to complain about "$undefined", while Bison >=3.6 now
write "invalid token".

* tests/core/parseaut.test, tests/core/parseerr.test,
tests/core/sugar.test: Adjust expected diagnostics to match Bison pre
and post 3.6.
2020-05-24 16:35:07 +02:00
Alexandre Duret-Lutz
a395309f4b ltlsynt: add --algo=ps
* bin/ltlsynt.cc: Implement this.
* tests/core/ltlsynt.test: Add a test case.
* NEWS: Mention it.
2020-05-24 09:52:38 +02:00
Alexandre Duret-Lutz
49188715cd simplify_acc: perform unit-propagation earlier
Closes #405.   This shows no difference on the test suite,
but that is thanks to the previous patch: without it, an
example in automata.ipynb would have an extra edge.

* spot/twaalgos/cleanacc.cc (simplify_acceptance): Call
unit_propagation() before simplify_complementary_marks_here() and
fuse_marks_here(), because that is simpler to perform.
2020-05-23 12:00:56 +02:00
Alexandre Duret-Lutz
6074202b9b remfin: do not clone transitions that are accepting in main
* spot/twaalgos/remfin.cc (default_strategy): Detect transitions
from the main copy that are completely accepting and that do not
need to be repeated in the clones.
* tests/python/remfin.py: Add a test case.
* tests/core/ltl2dstar4.test: Improve expected results.
* NEWS: Mention the change.
2020-05-23 11:56:16 +02:00
Alexandre Duret-Lutz
260a141b1c improve fuse_marks_here by detecting more patterns
This remove some restrictions that prevented fuse_marks_here from
simplifying certain patterns, as noted in the first comment of
issue #405.

* spot/twaalgos/cleanacc.cc (find_interm_rec, find_fusable): Remove
some unnecessary restrictions to singleton marks, and replace the hack
put one non-singleton mark at the beginning of the singleton list by a
sort.
* tests/python/simplacc.py: Add two test cases.
* tests/python/automata.ipynb, tests/core/remfin.test: Improve
expected results.
* NEWS: Mention the bug.
2020-05-22 20:53:57 +02:00
Alexandre Duret-Lutz
645935f796 fixpool: allocate a new chunk on creation
Allocate the first chunk when the fixpool is created.  This avoid a
undefined behavior reported in issue #413 without requiring an extra
comparison in allocate().

* spot/misc/fixpool.hh, spot/misc/fixpool.cc (new_chunk_): New method
extracted from allocate().  Use it in the constructor as well.
* NEWS: Mention the bug.
2020-05-22 20:53:48 +02:00
Alexandre Duret-Lutz
a0767e3c1e postproc: option to wdba-minimize only when sure
Fixes #15.

* spot/twaalgos/minimize.hh, spot/twaalgos/minimize.cc
(minimize_obligation_garanteed_to_work): New function.
* spot/twaalgos/postproc.hh, spot/twaalgos/postproc.cc: Use it if
wdba-minimize=1.  Handle new default for wdba-minimize.
* NEWS, bin/spot-x.cc: Document those changes.
* tests/core/ltl2tgba2.test: Add some test cases.
* tests/core/genltl.test: Improve expected results.
2020-05-21 23:48:21 +02:00
Alexandre Duret-Lutz
579ff63817 * doc/org/satmin.org: Remove extra newlines (fixes #410). 2020-05-18 20:49:47 +02:00