introduce is_obligation(f)

This is not optimal yet because it still construct a minimal WDBA
internally, but it's better than the previous way to call
minimize_obligation() since it can avoid constructing the minimized
automaton in a few more cases.

* spot/tl/hierarchy.cc, spot/tl/hierarchy.hh: Introduce
is_obligation().
* bin/ltlfilt.cc: Wire it to --obligation.
* spot/twaalgos/minimize.cc: Implement is_wdba_realizable(),
needed by the above.
* tests/core/obligation.test: Test it.
* bin/man/spot-x.x, NEWS: Document it.
This commit is contained in:
Alexandre Duret-Lutz 2017-11-15 21:51:33 +01:00
parent f7ee9ed18e
commit 50fe34a55a
7 changed files with 214 additions and 29 deletions

View file

@ -1,7 +1,7 @@
#!/bin/sh
# -*- coding: utf-8 -*-
# Copyright (C) 2010, 2011, 2014, 2015 Laboratoire de Recherche et
# Développement de l'Epita (LRDE).
# Copyright (C) 2010, 2011, 2014, 2015, 2017 Laboratoire de Recherche
# et Développement de l'Epita (LRDE).
#
# This file is part of Spot, a model checking library.
#
@ -117,4 +117,23 @@ while read exp f; do
esac
done < formulas.txt
set -x
cut -c 4- formulas.txt | ltlfilt --obligation > o0
for i in 1 2 3; do
cut -c 4- formulas.txt | SPOT_O_CHECK=$i ltlfilt --obligation > o$i
done
# make sure SPOT_O_CHECK is actually read
cut -c 4- formulas.txt | SPOT_O_CHECK=x ltlfilt --obligation 2>err && exit 1
cut -c 4- formulas.txt | SPOT_O_CHECK=9 ltlfilt --obligation 2>err && exit 1
grep SPOT_O_CHECK err
diff o0 o2
diff o1 o2
diff o2 o3
cut -c 4- formulas.txt | ltlfilt -o %h.ltl
cat O.ltl G.ltl S.ltl B.ltl | sort > ogsb.ltl
sort o3 > o4
diff o4 ogsb.ltl
exit 0