Compare commits

..

64 commits

Author SHA1 Message Date
2997932c62 merge 2025-03-17 14:08:37 +01:00
8e9f4dc12d expansions: fix bogus false pairs in linear forms 2025-03-17 14:08:01 +01:00
983d7e046a expansions: remove unused lambda capture 2025-03-17 14:08:01 +01:00
b93fb41af2 expansions: fix sort behavior
The previous implementation was wrong and led to segfaults when sorting
large expansions
2025-03-12 22:00:11 +01:00
7adbe2f385 nix: provide package in release tarballs 2025-03-09 17:17:55 +01:00
932f670f86 nix: setup Nix Flake file
* flake.nix, flake.lock: here
2025-03-09 17:17:55 +01:00
980dc72678 expansions: make signature canonical
Linear forms are now sorted and duplicates are removed
2025-03-08 18:24:27 +01:00
4f169ad632 expansions: fusion can produce false
let's discard the result if it's false
2025-03-08 18:24:27 +01:00
1deb2ccb02 ltl2tgba_fm: setup switch between bdd and exp 2025-03-08 18:24:27 +01:00
a2669a160f translate_aa: setup translation choice 2025-03-08 18:24:27 +01:00
4dce729d22 ltl2tgba_fm: switch for expansions 2025-03-08 18:24:27 +01:00
0e2ebef709 expansions: split 2025-03-08 18:24:27 +01:00
e29aa30c2d expansions: up variants 2025-03-08 18:24:27 +01:00
d326c17456 expansions: expose easy expansion in python 2025-03-08 18:24:27 +01:00
9faef36529 expansions: store as vector of pairs 2025-03-08 18:24:27 +01:00
0a89377400 expansions: US order in pipeline configurable 2025-03-08 18:24:27 +01:00
975ea0c52a expansions: UniquePrefixSeenOpt 2025-03-08 18:24:27 +01:00
84d3977c0d expansions: fixes + BDD encode changes + printer 2025-03-08 18:05:27 +01:00
f5574547ce expansions: simple determinization 2025-03-08 18:05:27 +01:00
24b71fd8c7 expansions: signature merge impl 2025-03-08 18:05:27 +01:00
2aa7685611 expansions: optimize sigma star encoding 2025-03-08 18:05:27 +01:00
e09f908b89 expansions: remove multiple old implementations 2025-03-08 18:05:27 +01:00
f37be92903 expansions: fix first_match case 2025-03-08 18:05:27 +01:00
bc61b7c30b twaalgos: ltl2tgba_fm: allow disabling SCC trim 2025-03-08 18:05:27 +01:00
450f38f74d expansions: allow toggling merge_edges off 2025-03-08 18:05:27 +01:00
7c529eddfd expansions: latest implementation 2025-03-08 18:05:27 +01:00
31376f804f expansions: multimap version 2025-03-08 18:05:27 +01:00
2ae5dbb727 expansions: determinize only once per state 2025-03-08 18:05:27 +01:00
728faeba22 expansions: fix bdd method 2025-03-08 18:05:27 +01:00
38fc0c94f3 expansions: add BDD method 2025-03-08 18:05:27 +01:00
7ca9910862 expansions: multiple implementations 2025-03-08 18:05:27 +01:00
7731c7ee54 expansions: split-off OrRat case 2025-03-08 18:05:27 +01:00
0b3f4e5b91 expansions: first_match deterministic 2025-03-08 18:05:27 +01:00
ad3896e7a3 expansions: draft 2025-03-08 18:05:27 +01:00
bbb0c69911 derive: add options to control distribution 2025-03-08 18:05:27 +01:00
9953cacbc6 derive: option for some optimisations 2025-03-08 18:05:27 +01:00
13f953c27f sere_to_tgba: produce state-names 2025-03-08 18:05:27 +01:00
bc0ef4d5b0 ltl2aa: handle edge case in UConcat
If SERE recognizes false, then combined with UConcat the property is
always true.
2025-03-08 18:05:27 +01:00
9b76e44b97 alternation: fix bug introduced in oe_combiner
turns out sometimes we want to account for bddfalse
2025-03-08 18:05:27 +01:00
3e451c408b ltl2aa: implement EConcat 2025-03-08 18:05:27 +01:00
af91b0f376 ltl2aa: comment 2025-03-08 18:05:27 +01:00
2e2a3b4544 ltl2aa: finalize UConcat 2025-03-08 18:05:27 +01:00
e4f00229d7 ltl2aa: finish SERE aut merging with rhs outedges 2025-03-08 18:05:27 +01:00
d29c1413bc ltl2aa: fix two bugs in SERE aut merge 2025-03-08 18:05:27 +01:00
e7df1ac42e ltl2aa: place new state in var_to_state map 2025-03-08 18:05:27 +01:00
bb7a30f1fd ltl2aa: implem closure 2025-03-08 18:05:27 +01:00
aba8c9d4fc ltl2aa: share dict between sere and final aut 2025-03-08 18:05:27 +01:00
7e13cb18e8 ltl2aa: fix bdd manipulation in UConcat 2025-03-08 18:05:27 +01:00
9fd33667c0 ltl2aa: fix R & M operators handling 2025-03-08 18:05:27 +01:00
b1589b293a Add ltl2aa binary to tests/core 2025-03-08 18:05:27 +01:00
bdf9762498 psl not working 2025-03-08 18:05:27 +01:00
29428bb9f0 ltl2aa: factorize self-loop creation 2025-03-08 18:05:27 +01:00
531fc4c550 twaalgos: add LTL to AA translation 2025-03-08 18:05:27 +01:00
8a6e8fb1d7 twaalgos: filter accepting sinks in oe combiner 2025-03-08 18:05:27 +01:00
f2a3ecab0d graph: filter accepting sinks in univ_dest_mapper 2025-03-08 18:05:27 +01:00
1b393aefad derive: use first 2025-03-08 18:05:27 +01:00
e7cd4f2bc4 derive: handle AndNLM 2025-03-08 18:05:27 +01:00
4ab97a6841 derive: extract AndNLM rewriting 2025-03-08 18:05:27 +01:00
cc32f35f45 derive: no nullptr handling 2025-03-08 18:05:27 +01:00
edb4645a6a derive: use from_finite 2025-03-08 18:05:27 +01:00
0e279960a2 twaalgos: add from_finite
* spot/twaalgos/remprop.cc, spot/twaalgos/remprop.hh: add a from_finite
  function to perform the opposite operation to to_finite
2025-03-08 18:05:27 +01:00
e01d9237b2 twaalgos: extract internal sere2dfa 2025-03-08 18:05:27 +01:00
16dda0d292 tl: implement SERE derivation 2025-03-08 18:05:27 +01:00
28416cf82c twagraph: merge_edges supports finite automata
* spot/twa/twagraph.cc: don't remove false-labeled edges if the
  automaton uses state-based acceptance and the edge is a self loop
2025-03-08 18:05:27 +01:00
5 changed files with 15 additions and 104 deletions

View file

@ -231,14 +231,7 @@ parse_opt_post(int key, char* arg, struct argp_state*)
if (arg)
type = XARGMATCH(key == 'P' ? "--parity" : "--colored-parity",
arg, parity_args, parity_types);
else if (!(type & spot::postprocessor::Parity))
// If no argument was given, we just require Parity.
// However, if a Parity condition was already set before,
// don't overwrite it. This way if someone mistakenly write
// `--parity='max even' --colored` without realizing that
// `--colored` is just the abbreviation for
// `--colored-parity=...` with the default argument, we
// won't reset the 'max even' setting.
else
type = spot::postprocessor::Parity;
if (key == 'p')
colored = spot::postprocessor::Colored;

View file

@ -91,15 +91,17 @@ static const argp_option options[] =
/**************************************************/
{ nullptr, 0, nullptr, 0, "Fine tuning:", 10 },
{ "algo", OPT_ALGO, "sd|ds|ps|lar|lar.old|acd", 0,
"choose the algorithm for synthesis:\n"
" sd: translate to TGBA, split, determinize\n"
" ds: translate to TGBA, determinize, split\n"
" ps: translate to DPA, split\n"
" lar: translate to a deterministic TELA, convert to DPA"
" with LAR, split (default)\n"
" lar.old: old version of LAR, for benchmarking;\n"
" acd: translate to a deterministic TELA, convert to DPA"
" with ACD, split", 0 },
"choose the algorithm for synthesis:"
" \"sd\": translate to tgba, split, then determinize;"
" \"ds\": translate to tgba, determinize, then split;"
" \"ps\": translate to dpa, then split;"
" \"lar\": translate to a deterministic automaton with arbitrary"
" acceptance condition, then use LAR to turn to parity,"
" then split (default);"
" \"lar.old\": old version of LAR, for benchmarking;"
" \"acd\": translate to a deterministic automaton with arbitrary"
" acceptance condition, then use ACD to turn to parity,"
" then split.\n", 0 },
{ "bypass", OPT_BYPASS, "yes|no", 0,
"whether to try to avoid to construct a parity game "
"(enabled by default)", 0},

View file

@ -38,7 +38,6 @@ logic (LTL & PSL).
%{_bindir}/ltldo
%{_bindir}/ltlfilt
%{_bindir}/ltlgrind
%{_bindir}/ltlmix
%{_bindir}/ltlsynt
%{_bindir}/randaut
%{_bindir}/randltl
@ -53,12 +52,11 @@ logic (LTL & PSL).
%{_mandir}/man1/ltldo.1*
%{_mandir}/man1/ltlfilt.1*
%{_mandir}/man1/ltlgrind.1*
%{_mandir}/man1/ltlmix.1*
%{_mandir}/man1/ltlsynt.1*
%{_mandir}/man1/randaut.1*
%{_mandir}/man1/randltl.1*
%{_mandir}/man7/spot.7*
%{_mandir}/man7/spot-x.7*
%{_mandir}/man7/spot.7*
%license COPYING
%doc AUTHORS COPYING NEWS README THANKS

View file

@ -26,19 +26,7 @@ for x in P 'Pmin odd' 'Pmax even' p 'pmin odd' 'pmax even'; do
autfilt --name=%M --high "-$x" >>res2
ltl2tgba -D "-$x" FGa 'GFa & GFb' '(p0 W XXGp0) & GFp1 & FGp2' >>res3
ltl2tgba FGa 'GFa & GFb' '(p0 W XXGp0) & GFp1 & FGp2' |
autfilt -D --name=%M --high "-$x" >>res4
(
## --colored is normally short for --colored-parity=any
## But in case someone types something like
## --parity='max odd' --colored
## let's make sure we handle it like --colored-parity='max odd'.
echo "=== -$x ==="
ltl2tgba FGa 'GFa & GFb' '(p0 W XXGp0) & GFp1 & FGp2' \
"-$x" --stats='%[]g'
echo "=== -$x --colored ==="
ltl2tgba FGa 'GFa & GFb' '(p0 W XXGp0) & GFp1 & FGp2' \
"-$x" --colored --stats='%[]g'
) >> res5
autfilt -D --name=%M --high "-$x" >>res4
done
cat >expected<<EOF
@ -1435,58 +1423,6 @@ State: 4
EOF
diff expected4 res4
cat >expected5 <<EOF
=== -P ===
co-Buchi
Buchi
Rabin 1
=== -P --colored ===
parity max even 2
Streett 1
parity min odd 3
=== -Pmin odd ===
co-Buchi
Rabin 1
Rabin 1
=== -Pmin odd --colored ===
Rabin 1
parity min odd 3
parity min odd 3
=== -Pmax even ===
parity max even 2
Buchi
parity max even 2
=== -Pmax even --colored ===
parity max even 2
parity max even 3
parity max even 4
=== -p ===
parity max even 2
Streett 1
parity min odd 3
=== -p --colored ===
parity max even 2
Streett 1
parity min odd 3
=== -pmin odd ===
Rabin 1
parity min odd 3
parity min odd 3
=== -pmin odd --colored ===
Rabin 1
parity min odd 3
parity min odd 3
=== -pmax even ===
parity max even 2
parity max even 3
parity max even 4
=== -pmax even --colored ===
parity max even 2
parity max even 3
parity max even 4
EOF
diff expected5 res5
ltlcross 'ltl2tgba -P' 'ltl2tgba -P"odd max"' 'ltl2tgba -P"even min"' \
'ltl2tgba -p' 'ltl2tgba -p"odd max"' 'ltl2tgba -p"even min"' \
-f FGa -f 'GFa&GFb' -f 'GF(a <-> XXXb)' -f '(p0 W XXGp0) & GFp1 & FGp2'

View file

@ -52,11 +52,6 @@ do
echo "bin/man/$manpage is not listed in man/Makefile.am"
exit_status=2
fi
if ! grep -q "%{_mandir}/man./$manpage\*\$" $top_srcdir/spot.spec.in;
then
echo "$manpage is not listed in spot.spec.in"
exit_status=2
fi
fi
case $binary in
@ -79,7 +74,7 @@ do
;;
esac
# All tools
# All man pages
case $manpage in
*.1)
if ! test -f $top_srcdir/doc/org/$binary.org; then
@ -99,20 +94,8 @@ do
echo "$binary does not occur in doc/org/arch.tex"
exit_status=2
fi
if ! grep -q "%{_bindir}/$binary\$" $top_srcdir/spot.spec.in; then
echo "$binary does is not listed in spot.spec.in";
exit_status=2
fi
esac
if test -f $top_srcdir/bin/.gitignore; then
if ! grep -q "^$binary\$" $top_srcdir/bin/.gitignore; then
echo "$binary is not listed in bin/.gitignore"
exit_status=2
fi
fi
# Check --help text. Set a high rmargin to workaround some
# bug in argp where an extra line it sometimes added if the end
# of the document string fall right into the rmargin.
@ -124,7 +107,6 @@ do
echo "bin/$binary --help has options after blank line;" \
"missing section header?"
cat help-err
exit_status=2
fi
rm -f help-$binary.tmp help-err