ltl2tgba_fm: Fix incorrect simplification of promises for M

The bug was reported by Joachim Klein.

* src/tgbaalgos/ltl2tgba_fm.cc (translate_dict::register_a_variable):
Reduce P(a M b) to P(a & b), not to P(a).
* src/tgbatest/ltlcross.test: Test Joachim's formula.
* src/tgbatest/ltl2ta.test: Adjust some expected values.
* NEWS: Mention the bug.
This commit is contained in:
Alexandre Duret-Lutz 2014-08-20 20:52:18 +02:00
parent e7dc62e3c8
commit 795c2f1720
4 changed files with 99 additions and 44 deletions

View file

@ -1,5 +1,5 @@
#!/bin/sh
# Copyright (C) 2010, 2011, 2012, 2013 Laboratoire de Recherche et
# Copyright (C) 2010, 2011, 2012, 2013, 2014 Laboratoire de Recherche et
# Développement de l'Epita (LRDE).
#
# This file is part of Spot, a model checking library.
@ -133,46 +133,46 @@ grep 'states: 21$' stdout
f="FG((WaitRight4 M (HasRight1 W GWaitLeft0)) M HasLeft4)"
run 0 ../ltl2tgba -TA -RT -ks -in -R3f -x -DS "$f" >stdout
grep 'transitions: 450$' stdout
grep 'states: 38$' stdout
grep 'transitions: 505$' stdout
grep 'states: 40$' stdout
run 0 ../ltl2tgba -TA -RT -ks -lv -R3f -x -DS "$f" >stdout
grep 'transitions: 551$' stdout
grep 'states: 40$' stdout
grep 'transitions: 616$' stdout
grep 'states: 42$' stdout
run 0 ../ltl2tgba -TA -RT -ks "$f" >stdout
grep 'transitions: 424$' stdout
grep 'states: 31$' stdout
grep 'transitions: 498$' stdout
grep 'states: 34$' stdout
run 0 ../ltl2tgba -TA -RT -ks -sp -lv -in "$f" >stdout
grep 'transitions: 485$' stdout
grep 'states: 32$' stdout
grep 'transitions: 566$' stdout
grep 'states: 35$' stdout
run 0 ../ltl2tgba -TA -RT -ks -in -R3 -x -DS "$f" >stdout
grep 'transitions: 450$' stdout
grep 'states: 38$' stdout
grep 'transitions: 505$' stdout
grep 'states: 40$' stdout
run 0 ../ltl2tgba -TA -RT -ks -sp -lv -R3 -x -DS "$f" >stdout
grep 'transitions: 551$' stdout
grep 'states: 40$' stdout
grep 'transitions: 616$' stdout
grep 'states: 42$' stdout
run 0 ../ltl2tgba -TA -ks -sp -lv -DS "$f" >stdout
grep 'transitions: 597$' stdout
grep 'states: 46$' stdout
grep 'transitions: 819$' stdout
grep 'states: 56$' stdout
run 0 ../ltl2tgba -TA -RT -ks -sp -lv "$f" >stdout
grep 'transitions: 504$' stdout
grep 'states: 33$' stdout
grep 'transitions: 585$' stdout
grep 'states: 36$' stdout
run 0 ../ltl2tgba -TGTA -RT -ks "$f" >stdout
grep 'transitions: 527$' stdout
grep 'states: 32$' stdout
grep 'transitions: 598$' stdout
grep 'states: 35$' stdout
g="G(F(GWaitLeft7 U Idle4) U (WaitLeft2 M IsEating2))"

View file

@ -1,6 +1,6 @@
#!/bin/sh
# -*- coding: utf-8 -*-
# Copyright (C) 2012, 2013 Laboratoire de Recherche et
# Copyright (C) 2012, 2013, 2014 Laboratoire de Recherche et
# Développement de l'Epita (LRDE).
#
# This file is part of Spot, a model checking library.
@ -23,7 +23,13 @@ set -e
ltl2tgba=../ltl2tgba
../../bin/randltl -n 100 p1 p2 p3 p4 p5 p6 --tree-size 5..15 |
(
# A bug reported by Joachim Klein
echo 'G(Fa & ((a M b) U ((c U !d) M d)))'
# Random formulas
../../bin/randltl -n 100 p1 p2 p3 p4 p5 p6 --tree-size 5..15
) |
../../bin/ltlcross --products=2 \
"$ltl2tgba -t -l %f > %T" \
"$ltl2tgba -t -l -R3b -r4 %f > %T" \
@ -47,7 +53,3 @@ ltl2tgba=../ltl2tgba
"$ltl2tgba -t -taa -r4 %f > %T" \
"$ltl2tgba -t -taa -r4 -c %f > %T" \
"$ltl2tgba -t -taa -r4 -R3 -RDS %f > %T"
# Disabled because too slow, and too big automata produced.
# "$ltl2tgba -t -lo -r4 %f > %T"
# "$ltl2tgba -t -lo -R3b -r4 %f > %T" \