Commit graph

1133 commits

Author SHA1 Message Date
Etienne Renault
1d4cb26235 ltsmin: remove shared table at model level
Experiments shows  that this table slows down algorithms
since the management is also tracked at higher lever by
algorithms

* spot/ltsmin/spins_kripke.hh,
spot/ltsmin/spins_kripke.hxx: here.
2020-06-03 10:33:54 +02:00
Etienne Renault
f9b0044623 ltsmin: please private.test
* spot/ltsmin/Makefile.am, spot/ltsmin/spins_interface.hh: here.
* spot/ltsmin/spins_interface.cc: delete.
2020-06-03 10:33:54 +02:00
Etienne Renault
32b79818dc kripke: avoir internal compiler error
gcc snapshot yield internal compiler error: tree check: accessed elt 2
of tree_vec with 1 elts in tsubst, at cp/pt.c:13693

* spot/kripke/kripke.hh: here.
2020-06-03 10:33:54 +02:00
Etienne Renault
7bac705e83 twacube: please gcc null-dereference
* spot/twacube/twacube.hh: here.
2020-06-03 10:33:54 +02:00
Etienne Renault
b8258ac638 twacube: move useless unsigned int to unsigned
* spot/twacube/twacube.cc,
spot/twacube/twacube.hh: here.
2020-06-03 10:33:54 +02:00
Etienne Renault
cb343ff02d twacube: more documentation
* spot/twacube/twacube.hh: here.
2020-06-03 10:33:54 +02:00
Etienne Renault
fbf9d98e15 Fix typo
* spot/mc/ec.hh: here.
2020-06-03 10:33:54 +02:00
Etienne Renault
d95428d245 ltsmin: remove ltdl from public headers
* spot/ltsmin/Makefile.am,
spot/ltsmin/spins_interface.cc,
spot/ltsmin/spins_interface.hh: here.
2020-06-03 10:33:54 +02:00
Etienne Renault
941608060e ltsmin: fix call to destructor
* spot/ltsmin/spins_kripke.hxx: here
2020-06-03 10:33:53 +02:00
Etienne Renault
3c868c228b ltsmin: do not take iterators by copy
* spot/ltsmin/spins_kripke.hxx: here.
2020-06-03 10:33:53 +02:00
Etienne Renault
df872ce6d9 ltsmin: placement new requires placement delete
This commit fixes a bug that (randomly) occurs when
calling destructor of kripkecube.

*  spot/ltsmin/spins_kripke.hxx: here.
2020-06-03 10:33:53 +02:00
Etienne Renault
0be3630218 ltsmin: extract kripkecube to ease manipulation
* spot/ltsmin/Makefile.am,
spot/ltsmin/ltsmin.cc,
spot/ltsmin/ltsmin.hh
spot/ltsmin/spins_kripke.hh,
spot/ltsmin/spins_kripke.hxx: here.
2020-06-03 10:33:53 +02:00
Etienne Renault
5445007070 ltsmin: extract spins interface
* spot/ltsmin/Makefile.am, spot/ltsmin/ltsmin.cc,
spot/ltsmin/ltsmin.hh,
spot/ltsmin/spins_interface.hh: here.
2020-06-03 10:33:53 +02:00
Etienne Renault
8a930c7572 ltsmin: simplify iterator
* spot/ltsmin/ltsmin.cc: here.
2020-06-03 10:33:53 +02:00
Etienne Renault
03ff789324 mark_t::operator bool() is now explicit
Follows up cf5d2c2b.

* spot/mc/ec.hh: here.
2020-06-03 10:33:53 +02:00
Etienne Renault
6d282bbc6b ltsmin: update usage of brick-hashset
From a discussion with Petr Rockai: "the possibly non-intuitive bit
that you probably didn't notice is that the hashset is supposed to be
passed to each thread by value. The copy semantics of the entire
hashset are that of a shared pointer: multiple copies share the same
underlying data. Each thread *must* have its own private copy of the
hashset object (there are bits of state that each thread needs for
bookkeeping and those must not be shared)."

*  spot/ltsmin/ltsmin.cc: here.
2020-06-03 10:33:53 +02:00
Etienne Renault
606e4fc88c please pedantic option for gcc
* spot/kripke/kripke.hh: 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
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
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
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
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
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
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
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
208d0f7885 stats: speed up the computation of transitions
Juraj Major reported a case with 32 APs where ltlcross would take
forever to gather statistics.  It turns out that for each edge,
twa_sub_statistics was enumerating all compatible assignments of 32
APs.  This uses bdd_satcountset() instead, and also store the result
in a long long to avoid overflows.

* spot/twaalgos/stats.cc (twa_sub_statistics): Improve the code for
counting transitions.
* bin/common_aoutput.hh, bin/ltlcross.cc, spot/twaalgos/stats.hh:
Store transition counts are long long.
* tests/core/readsave.test: Add test case.
* NEWS: Mention the bug.
2020-05-18 20:49:47 +02:00
Alexandre Duret-Lutz
66aa6d0883 ltlsynt: make sure the previous Xor optimization actually works
* spot/tl/simplify.hh, spot/tl/simplify.cc,
spot/twaalgos/translate.cc: Update the tl_simplification
options after all preferences have been given.
* bin/ltlsynt.cc: Display the size of the translation output.
* tests/core/ltlsynt.test: Add test case.
2020-05-16 19:22:28 +02:00