postproc: add support for -x dpa-simul and simul-trans-pruning

Also have simul-max default to 4096 instead of 512, because it's
really simul-trans-pruning that is very slow and need to be limited.

* spot/twaalgos/postproc.cc, spot/twaalgos/postproc.hh,
spot/twaalgos/simulation.cc, spot/twaalgos/simulation.hh,
spot/twaalgos/determinize.cc, spot/twaalgos/determinize.hh:
Implement the above options.
* bin/spot-x.cc, NEWS: Document them.
* tests/core/ltlsynt.test, tests/core/minusx.test,
tests/core/sim3.test: Add some test cases.
This commit is contained in:
Alexandre Duret-Lutz 2021-04-29 17:24:26 +02:00
parent fca6513604
commit d32f19f5d0
11 changed files with 210 additions and 101 deletions

View file

@ -377,5 +377,7 @@ diff out exp
f='Fp0 U XX((p0 & F!p1) | (!p0 & Gp1))'
ltlsynt --verbose --algo=ps --outs=p1 --ins=p0 -f "$f" 2>err
grep 'DPA has 13 states' err
ltlsynt -x dpa-simul=0 --verbose --algo=ps --outs=p1 --ins=p0 -f "$f" 2>err
grep 'DPA has 30 states' err
ltlsynt --verbose -x wdba-minimize=1 --algo=ps --outs=p1 --ins=p0 -f "$f" 2>err
grep 'DPA has 12 states' err

View file

@ -1,6 +1,6 @@
#!/bin/sh
# -*- coding: utf-8 -*-
# Copyright (C) 2016, 2020 Laboratoire de Recherche et Développement de
# Copyright (C) 2016, 2020, 2021 Laboratoire de Recherche et Développement de
# l'Epita (LRDE).
#
# This file is part of Spot, a model checking library.
@ -39,3 +39,8 @@ grep "autfilt: option 'other' was not used" error
f='G(!p0 | (!p2 U (p1 | (!p2 & p3 & X(!p2 U p4)))) | G!p1)'
test 4,1 = `ltl2tgba --stats=%s,%d "$f"`
test 6,0 = `ltl2tgba -x wdba-det-max=4 --stats=%s,%d "$f"`
# Make sure simul-max has an effect
f=`genltl --ms-phi-s=2`
test 484 -eq `ltl2tgba -P -D --stats=%s "$f"`
test 484 -lt `ltl2tgba -P -D -x simul-max=512 --stats=%s "$f"`

View file

@ -1,6 +1,6 @@
#! /bin/sh
# -*- coding: utf-8 -*-
# Copyright (C) 2015, 2018, 2019, 2020 Laboratoire de Recherche et Développement
# Copyright (C) 2015, 2018-2021 Laboratoire de Recherche et Développement
# de l'Epita (LRDE).
#
# This file is part of Spot, a model checking library.
@ -150,3 +150,33 @@ State: 6
EOF
autfilt --small --low input > output
diff expect output
cat >input <<EOF
HOA: v1
States: 4
Start: 0
AP: 3 "a" "b" "c"
acc-name: Buchi
Acceptance: 0 t
--BODY--
State: 0
[0] 1
[0&1] 2
[2] 3
State: 1
[0] 1
State: 2
[0&1] 2
State: 3
[0] 3
--END--
EOF
cmd="autfilt --small input --stats=%s,%t"
test 2,5 = `$cmd -x simul=0`
test 2,5 = `$cmd -x wdba-minimize=0`
test 4,20 = `$cmd -x simul=0,wdba-minimize=0`
test 3,14 = `$cmd -x simul-trans-pruning=0,wdba-minimize=0`
test 3,14 = `$cmd -x simul-trans-pruning=2,wdba-minimize=0`
# Three "equivalence classes" are needed even if the output has two states.
test 2,5 = `$cmd -x simul-trans-pruning=3,wdba-minimize=0`