ltlgrind: fix two bugs related to PSL formulas

* src/ltlvisit/mutation.cc: Do not bindly rewrite e[]->f and
e<>->f as e, since e is not a valid PSL formula.  Use !{e}
and {e} instead.  Also fix a memory leak in the handling of
bunops, discovered while testing the previous change.
* src/tests/ltlgrind.test: Add a test case.
This commit is contained in:
Alexandre Duret-Lutz 2015-05-11 23:55:28 +02:00
parent 011a56846f
commit f55211336e
2 changed files with 52 additions and 21 deletions

View file

@ -1,6 +1,6 @@
#! /bin/sh
# -*- coding: utf-8 -*-
# Copyright (C) 2014 Laboratoire de Recherche et Dévelopement to
# Copyright (C) 2014, 2015 Laboratoire de Recherche et Dévelopement to
# l'Epita (LRDE).
#
# This file is part of Spot, a model checking library.
@ -26,6 +26,8 @@ checkopt()
{
cat >exp
run 0 ../../bin/ltlgrind "$@" > out
# The result must be parsable
../../bin/ltlfilt out
diff exp out
}
@ -165,3 +167,17 @@ p3 & p4
1 U (p3 & !p4)
1 U (!p3 & p4)
EOF
checkopt -f 'F({{p2;p0}[:*]}[]-> Xp0)' <<EOF
1
{{p2;p0}[:*]}[]-> Xp0
F!{{p2;p0}[:*]}
FXp0
F({{p2;p0}[:*]}[]-> p0)
F({{p2;p0}[:*]}[]-> 0)
F({p2;p0}[]-> Xp0)
F({{1;p0}[:*]}[]-> Xp0)
F({{p2;1}[:*]}[]-> Xp0)
F({p0[*2][:*]}[]-> Xp0)
F({p2[*2][:*]}[]-> Xp2)
EOF