* spot/twaalgos/remfin.cc (tra_to_tba): Implement the same
optimization has in the generic remove_fin transformation.
* tests/python/tra2tba.py: Adjust.
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.
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.
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.
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.
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.
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.
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.
* 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.
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.
* 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.
Fixes#411 reported by Frantiček Blahoudek.
* bin/ltlcross.cc: Catch the issue.
* tests/core/ltlcross6.test: New file.
* tests/Makefile.am: Add it.
* NEWS: Mention it.
Reported by Florian Renkin.
* spot/twaalgos/emptiness.cc (reduce): If the automaton uses Fin
acceptance, check the reduced cycle and revert to the original cycle
if necessary.
* tests/python/intrun.py: New file.
* tests/Makefile.am: Add it.
* spot/twaalgos/emptiness.hh: Improve documentation.
* spot/twaalgos/genem.cc: In the spot29 implementation for the generic
case, when Fin(fo)=true and Fin(fo)=false have to be tested
separately, the second test can be done by a loop instead of a
recursion, to avoid unnecessary processing of the acceptance
condition. Suggested by Jan Strejček.
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.