Commit graph

5747 commits

Author SHA1 Message Date
Alexandre Duret-Lutz
46b11baf05 * .gitlab-ci.yml: Update docker images, for buildenv#1. 2020-09-03 16:24:10 +02:00
Florian Renkin
af81266877 Fix typo
* NEWS, spot/graph/graph.hh: here.
2020-09-01 17:25:31 +02:00
Florian Renkin
d2e7cdb377 configure.ac: Correct warning message
configure.ac used unintialized variable when he printed message
for enable-max-accsets

* configure.ac: here.
2020-09-01 17:19:44 +02:00
Alexandre Duret-Lutz
6f76121b89 [buddy] get rid of many recursive algorithms
This patch addresses the BuDDy part of #396,
reported by Florian Renkin and Reed Oei.

* src/kernel.c, src/kernel.h: Declare a bddrecstack and
associated macros.  Resize it when new variable are declared.
* src/cache.h: Add a BddCache_index macro.
* src/bddop.c (not_rec, apply_rec, quant_rec, appquant_rec,
support_rec, ite_rec, compose_rec, restrict_rec, satone_rec,
satoneset_rec): Rewrite using this stack to get rid of the recursion.
2020-08-05 23:25:28 +02:00
Alexandre Duret-Lutz
d7b3d05e57 minato: use bdd_ite()
* spot/misc/minato.cc: Use bdd_ite() to exercise one of the function
rewritten in the next patch, and also because that is supposedly
faster.
2020-08-03 10:39:02 +02:00
Alexandre Duret-Lutz
f179c79409 * doc/org/ioltl.org: Document prefix operators. 2020-07-31 12:05:32 +02:00
Alexandre Duret-Lutz
672e6248b8 help2man: allow line breaks in long lists of options
* tools/help2man: Add \: after | when listing optional arguments.
This should fix a lintian warning about unbreakable long line.
2020-07-29 21:30:24 +02:00
Alexandre Duret-Lutz
a8db30d676 * debian/rules (fix-js): Adjust to newer MathJax URL. 2020-07-29 15:17:47 +02:00
Alexandre Duret-Lutz
3710e8f283 to_parity: minor fixes
* spot/twaalgos/toparity.cc: Do not call prpagate_marks_here twice if
the automaton was not degeneralized.
* spot/twaalgos/toparity.hh: Typo in comment.
2020-07-29 15:03:46 +02:00
Alexandre Duret-Lutz
a375089e52 simplify_acceptance: generalize the complementary mark rewriting
Fixes #403.

* spot/twaalgos/cleanacc.cc (simplify_complementary_marks_here):
Assume that two colors are complementary in a broad sense, i.e., on is
present if (but not only if) the other is missing before applying
those rewritings.  Technically, this is usually not necessary, because
the changes done in #418 will cause such "covering-the-full-automaton"
pair of colors to be disjoint so complementary in a strict sense.  It
might make a difference (this is not tested) in presence of reused
colors which #418 cannot remove.  In any case, it's simply less code
to implement the broad sense.
* tests/python/toparity.py: Add test case from #403, which is
reduced to two states with recent optimizations.
2020-07-29 15:01:55 +02:00
Alexandre Duret-Lutz
0c4b701630 improve acceptance simplifications using useless colors
This fixes issue #418.

* spot/twa/acc.cc,
spot/twa/acc.hh (acc_cond::acc_code::useless_colors_patterns): New
method to detect patterns of colors allowing other colors to be added
or removed at will.
* spot/twaalgos/cleanacc.cc (simplify_acceptance_here): Use the above
patterns to remove some useless colors from transitions and hope that
this can help simplify the acceptance condition.
* spot/twaalgos/degen.cc (propagate_marks_vector): Use the pattern to
add more colors.
* tests/core/ltl2tgba2.test: Add the test case from issue #418.
* tests/core/ltl2dstar4.test, tests/core/satmin3.test,
tests/core/sccdot.test, tests/core/sim3.test,
tests/python/automata.ipynb, tests/python/decompose.ipynb,
tests/python/merge.py, tests/python/pdegen.py, tests/python/remfin.py,
tests/python/toparity.py, tests/python/tra2tba.py: Adjust all test
cases.
* NEWS: Mention this new feature.
2020-07-28 22:26:28 +02:00
Alexandre Duret-Lutz
c341a3cabf * spot/misc/satsolver.hh: Typo in comment. 2020-07-28 22:08:47 +02:00
Alexandre Duret-Lutz
25cb7651fe cleanacc: merge algorithms dealing with included and identical sets
* spot/twaalgos/cleanacc.cc (merge_identical_marks_here, merge_mark,
included_marks): Fuse these into ...
(simplify_included_marks_here): ... this new function.
* NEWS: Mention the fix of issue #406.
2020-07-28 15:38:52 +02:00
Alexandre Duret-Lutz
a804f964d2 argp: fix handling of very long options in --help
* lib/argp-help.c (hol_entry_help): Handle cases with option
description is larger than RMARGIN.
2020-07-28 10:30:45 +02:00
Alexandre Duret-Lutz
31fd31436a * debian/copyright: Fix bricks' license, and replace MIT by Expat. 2020-07-27 21:47:28 +02:00
Alexandre Duret-Lutz
cba762a60f doc: improve css
* doc/org/spot.css: Display input and output closer and separate them
with dash.
2020-07-27 17:05:58 +02:00
Alexandre Duret-Lutz
3220da6605 tra_to_tba: finish 05e6e0885
* spot/twaalgos/remfin.cc: Actually use propmarks.
* tests/core/det.test, tests/core/remfin.test,
tests/python/automata.ipynb, tests/python/remfin.py,
tests/python/tra2tba.py: Adjust test cases.
2020-07-27 14:43:27 +02:00
Alexandre Duret-Lutz
ff3a3f8144 * tests/python/ipnbdoctest.py: Ignore matplotlib font cache messages. 2020-07-27 14:43:27 +02:00
Florian Renkin
5ec9d55fea simplify_acceptance: Use color inclusions to simplify a condition
This fixes #406.

* spot/twaalgos/cleanacc.cc: Add the simplification.
* tests/core/remfin.test, tests/python/automata.ipynb,
tests/python/remfin.py: Update tests.
* tests/python/simplacc.py: Update and add tests.
2020-07-25 19:15:17 +02:00
Alexandre Duret-Lutz
05e6e08859 tra_to_tba: remove more useless edges
* spot/twaalgos/remfin.cc (tra_to_tba): Implement the same
optimization has in the generic remove_fin transformation.
* tests/python/tra2tba.py: Adjust.
2020-07-24 16:32:00 +02:00
Alexandre Duret-Lutz
567a5439c5 * spot/twaalgos/toparity.hh: Improve documentation. 2020-07-24 15:39:24 +02:00
Alexandre Duret-Lutz
7fbf4e0e3c remove_fin: ignore more useless transitions
Do not clone transitions that are necessarily part of on accepting
cycle in the main copy of the automaton.

* spot/twaalgos/remfin.cc: Use propagate_marks_vector to ignore more
edges.
* tests/core/remfin.test, tests/python/remfin.py,
tests/python/automata.ipynb: Adjust.
* tests/sanity/style.test: Do not choke on C++17 if statements with
initializer.
2020-07-24 15:38:42 +02:00
Alexandre Duret-Lutz
91db0e1e29 org: fix shadow of hierarchy figure
* doc/org/hierarchy.tex: Draw the shadow manually, so that it is part
of the bounding box when we extract the SVG.
2020-07-23 15:46:21 +02:00
Alexandre Duret-Lutz
b17376879d translate: add a quick syntactic simplification before relabeling
This fixes #412.

* spot/twaalgos/translate.cc: Add the quick syntactic simplification.
* spot/twaalgos/relabel.cc: Do not register old unused APs.
* tests/core/ltl2tgba2.test: Add test case.
* tests/core/bdd.test, tests/python/automata.ipynb: Adjust.
* NEWS: Mention this.
2020-07-22 17:02:47 +02:00
Alexandre Duret-Lutz
1c5468a93a simplify: fix handling of keep_top_xor
Under that option, !(a ^ b) was converted
to (!a <=> !b) instead of simply (a <=> b).

* spot/tl/simplify.cc (equiv_or_xor): Improve
rewriting.
* tests/core/ltl2tgba2.test, tests/python/simstate.py: Adjust test
cases.
2020-07-22 17:02:22 +02:00
Alexandre Duret-Lutz
1784671ca1 Merge branch 'master' into next 2020-07-22 08:13:26 +02:00
Alexandre Duret-Lutz
2ce84f7889 * configure.ac, NEWS: Bump version to 2.9.3.dev. 2020-07-22 08:12:01 +02:00
Alexandre Duret-Lutz
0b6a7998af Release Spot 2.9.3
* configure.ac, NEWS, doc/org/setup.org: Set version to 2.9.3.
2020-07-22 08:09:56 +02:00
Alexandre Duret-Lutz
cc498e7080 org: run a spell checker on the documentation
* 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/ltl2tgba.org, doc/org/ltl2tgta.org,
doc/org/ltlcross.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/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/tut12.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/tut52.org, doc/org/tut90.org,
doc/org/upgrade2.org: Run ispell-buffer on all these.
* bin/autfilt.cc, python/spot/__init__.py: Fix typos in
help texts noticed while spell-checking the org files.
2020-07-21 22:21:58 +02:00
Alexandre Duret-Lutz
0342161b20 org: fix python execution with in-tree source and Swig4
* doc/org/.dir-locals.el.in, doc/org/init.el.in: Set the
SPOT_UNINSTALLED envvar, as we already do in the test suite.
2020-07-21 22:20:21 +02:00
Alexandre Duret-Lutz
d5f488647b ltlcross: completely fix #420
Reported by Salomon Sickert.

* bin/ltlcross.cc: Also call determinize_unknown_acceptance() for
positive automata.
* tests/core/ltlcross3.test: Add another test case.
* NEWS: Mention the fix.
2020-07-21 22:20:04 +02:00
Alexandre Duret-Lutz
f3b8bf8e56 org: run a spell checker on the documentation
* 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/ltl2tgba.org, doc/org/ltl2tgta.org,
doc/org/ltlcross.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/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/tut12.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/tut52.org, doc/org/tut90.org,
doc/org/upgrade2.org: Run ispell-buffer on all these.
* bin/autfilt.cc, python/spot/__init__.py: Fix typos in
help texts noticed while spell-checking the org files.
2020-07-21 22:18:03 +02:00
Alexandre Duret-Lutz
0fbc83e9c2 org: fix python execution with in-tree source and Swig4
* doc/org/.dir-locals.el.in, doc/org/init.el.in: Set the
SPOT_UNINSTALLED envvar, as we already do in the test suite.
2020-07-21 22:18:03 +02:00
Alexandre Duret-Lutz
457e130e24 ltlcross: completely fix #420
Reported by Salomon Sickert.

* bin/ltlcross.cc: Also call determinize_unknown_acceptance() for
positive automata.
* tests/core/ltlcross3.test: Add another test case.
* NEWS: Mention the fix.
2020-07-21 22:18:00 +02:00
Alexandre Duret-Lutz
1a0c8a44ba Merge branch 'master' into next 2020-07-21 08:28:13 +02:00
Alexandre Duret-Lutz
d61d6570ac * NEWS, configure.ac: Bump version to 2.9.2.dev. 2020-07-21 08:24:52 +02:00
Alexandre Duret-Lutz
66a6fbdcb1 Release Spot 2.9.2
* configure.ac, NEWS, doc/org/setup.org: Set version to 2.9.2.
2020-07-21 08:22:06 +02:00
Alexandre Duret-Lutz
ac5a261aa5 ltlcross: fix cross-checks for automata using Fin acceptance
Fixes #420 reported by Salomon Sickert.

* bin/ltlcross.cc: Call determine_unknown_acceptance().
* spot/twaalgos/sccinfo.cc, spot/twaalgos/sccinfo.hh: Document
that one_accepting_scc()==-1 can mean "don't know", and update
determine_unknown_acceptance() to set one_acc_scc_.
* tests/core/ltlcross3.test: Add test case.
* NEWS: Mention the fixes.
2020-07-20 15:47:39 +02:00
Alexandre Duret-Lutz
c7774ebb55 C++20: fix warnings reported by g++ 10.1
* spot/tl/formula.hh (formula::operator bool): Mark as noexcept.
* bin/common_trans.hh, bin/common_trans.cc: Use std::atomic instead of
volatile.
2020-07-20 15:47:39 +02:00
Alexandre Duret-Lutz
df39000d8e * doc/org/setup.org: Fix release date. 2020-07-20 14:33:04 +02:00
Alexandre Duret-Lutz
33b28c8151 ltlcross: fix cross-checks for automata using Fin acceptance
Fixes #420 reported by Salomon Sickert.

* bin/ltlcross.cc: Call determine_unknown_acceptance().
* spot/twaalgos/sccinfo.cc, spot/twaalgos/sccinfo.hh: Document
that one_accepting_scc()==-1 can mean "don't know", and update
determine_unknown_acceptance() to set one_acc_scc_.
* tests/core/ltlcross3.test: Add test case.
* NEWS: Mention the fixes.
2020-07-20 13:38:47 +02:00
Etienne Renault
4db6a342da Fixes #419
* configure.ac: Here.
2020-07-17 14:34:47 +02:00
Alexandre Duret-Lutz
9daa4e60a4 formula: make operator bool explicit
* spot/tl/formula.hh (formula::operator bool): Make it explicit.  When
compiling in C++20 mode with g++ 10.1, this bool operator was used
instead of the comparison operators while looking up a
std::pair<formula,formula> in a hash map, causing many test suite
failures.  This problem does not occur with clang++ 10.0, so it
might just be a bug in g++ 10.1.  But having explicit operator bool
is good practice anyway.
2020-07-17 11:39:55 +02:00
Alexandre Duret-Lutz
a8959ecf81 C++20: work around g++ 10.1 bug #95242
With GCC 10.1 all comparisons that default to the <=> C++20 comparison
operator emit a spurious zero-as-null-pointer-constant warning, which
is an error in our configuration.  This is due to an implementation
choice in the libstdc++ library, so it also causes warning from
clang++ 10.0 when using the same libstdc++ library.  A fix for GCC
PR95242 was committed in g++ (not in libstdc++), so while g++ 10.2
might be fixed, clang++ will need a similar fix.

I've seen those failures on Arch linux with gcc 10.1.0-2 and clang
10.0.0-3.  On Debian sid, g++ 10.1.0-4 seems to already include the
fix.

* m4/gccwarn.m4: Include a string comparison in the test code so that
-Wzero-as-null-pointer-constant is not enabled if it would produce
warnings on such statements.
2020-07-16 22:16:23 +02:00
Alexandre Duret-Lutz
368acaad28 C++20: fix warnings reported by g++ 10.1
* spot/tl/formula.hh (formula::operator bool): Mark as noexcept.
* bin/common_trans.hh, bin/common_trans.cc: Use std::atomic instead of
volatile.
2020-07-16 22:16:11 +02:00
Alexandre Duret-Lutz
a7ff5b4eed [buddy] build in C++17 mode by default
* configure.ac: Activate C++17, and replace --enable-c++17 by
--enable-c++20.
2020-07-16 12:14:47 +02:00
Alexandre Duret-Lutz
4f23097619 build in C++17 mode by default
* configure.ac: Activate C++17, and replace --enable-c++17 by
--enable-c++20.
* NEWS: Mention the news.
* .gitlab-ci.yml: Use C++20 for the former C++17 builds.
* HACKING, README, doc/org/compile.org, doc/org/concepts.org,
doc/org/index.org, doc/org/install.org, doc/org/tut.org,
doc/org/upgrade2.org, spot/misc/escape.hh: Adjust mentions
of C++14.
2020-07-16 12:12:21 +02:00
Alexandre Duret-Lutz
a770727ee8 * doc/org/setup.org: Fix release date. 2020-07-16 10:33:33 +02:00
Alexandre Duret-Lutz
1513a9d996 Merge branch 'master' into next 2020-07-15 14:06:23 +02:00
Alexandre Duret-Lutz
cf1550c352 * NEWS, configure.ac: Bump version to 2.9.1.dev. 2020-07-15 13:43:15 +02:00