relabel: introduce an overlapping relabeling version
Related to issue #500 and issue #536. * spot/tl/relabel.hh (relabel_overlapping_bse): New function. * spot/tl/relabel.cc: Implement it. * bin/ltlfilt.cc: Add a --relabel-overlapping-bool option. * tests/core/ltlfilt.test: Test it. * NEWS: Mention it.
This commit is contained in:
parent
14347cdc52
commit
18478e663f
5 changed files with 207 additions and 48 deletions
|
|
@ -1,7 +1,7 @@
|
|||
#! /bin/sh
|
||||
# -*- coding: utf-8 -*-
|
||||
# Copyright (C) 2013-2020, 2022 Laboratoire de Recherche et Développement de
|
||||
# l'Epita (LRDE).
|
||||
# Copyright (C) 2013-2020, 2022, 2023 Laboratoire de Recherche et
|
||||
# Développement de l'Epita (LRDE).
|
||||
#
|
||||
# This file is part of Spot, a model checking library.
|
||||
#
|
||||
|
|
@ -361,6 +361,8 @@ G(d & e) | FG(Xf| !c) | h | i
|
|||
b & !Xc & e & (f | g)
|
||||
b & GF(a | c) & !GF!(a | c)
|
||||
F(a <-> b) -> (c xor d)
|
||||
(a & b & c) U (c & d & e)
|
||||
(a & b & c) U !(a & b & c)
|
||||
EOF
|
||||
|
||||
cat >exp <<EOF
|
||||
|
|
@ -369,6 +371,8 @@ p0 & p1 & GF(p0 | p2) & FG(p0 | p2)
|
|||
p0 & GFp1 & FGp1
|
||||
p0 | Gp1 | FG(p2 | Xp3)
|
||||
p0 | Gp1
|
||||
(p0 & p1) U (p1 & p2)
|
||||
(p0 & p1 & p2) U (!p0 | !p1 | !p2)
|
||||
EOF
|
||||
|
||||
run 0 ltlfilt -u --nnf --relabel-bool=pnn in >out
|
||||
|
|
@ -393,6 +397,14 @@ p0 || []p1 || <>[](p2 || Xp3)
|
|||
#define p0 ((c && !d) || (!c && d))
|
||||
#define p1 ((a && !b) || (!a && b))
|
||||
p0 || []p1
|
||||
#define p0 (a && b)
|
||||
#define p1 (c)
|
||||
#define p2 (d && e)
|
||||
(p0 && p1) U (p1 && p2)
|
||||
#define p0 (a)
|
||||
#define p1 (b)
|
||||
#define p2 (c)
|
||||
(p0 && p1 && p2) U (!p0 || !p1 || !p2)
|
||||
EOF
|
||||
|
||||
run 0 ltlfilt -s -u --nnf --relabel-bool=pnn --define in >out
|
||||
|
|
@ -433,11 +445,53 @@ p0 && []<>(p1 || p2) && ![]<>!(p1 || p2)
|
|||
#define p2 (c)
|
||||
#define p3 (d)
|
||||
<>(p0 <-> p1) -> !(p2 <-> p3)
|
||||
#define p0 (a)
|
||||
#define p1 (b)
|
||||
#define p2 (c)
|
||||
#define p3 (d)
|
||||
#define p4 (e)
|
||||
(p0 && p1 && p2) U (p2 && p3 && p4)
|
||||
#define p0 (a)
|
||||
#define p1 (b)
|
||||
#define p2 (c)
|
||||
(p0 && p1 && p2) U !(p0 && p1 && p2)
|
||||
EOF
|
||||
|
||||
run 0 ltlfilt -s -u --relabel=pnn --define in >out
|
||||
diff exp out
|
||||
|
||||
cat >exp <<EOF
|
||||
#define p0 (a & c)
|
||||
#define p1 (b)
|
||||
p0 & Xp1
|
||||
#define p0 (a & b)
|
||||
#define p1 (a | c)
|
||||
p0 & GFp1 & FGp1
|
||||
#define p0 (h | i)
|
||||
#define p1 (d & e)
|
||||
#define p2 (!c)
|
||||
#define p3 (f)
|
||||
p0 | Gp1 | FG(p2 | Xp3)
|
||||
#define p0 (b & e & (f | g))
|
||||
#define p1 (c)
|
||||
p0 & !Xp1
|
||||
#define p0 (b)
|
||||
#define p1 (a | c)
|
||||
p0 & GFp1 & !GF!p1
|
||||
#define p0 (a <-> b)
|
||||
#define p1 (c xor d)
|
||||
Fp0 -> p1
|
||||
#define p0 (a & b & c)
|
||||
#define p1 (c & d & e)
|
||||
p0 U p1
|
||||
#define p0 (a & b & c)
|
||||
p0 U !p0
|
||||
EOF
|
||||
|
||||
run 0 ltlfilt -u --relabel-over=pnn --define in >out
|
||||
diff exp out
|
||||
|
||||
|
||||
toolong='((p2=0) * (p3=1))' # work around the 80-col check
|
||||
cat >exp <<EOF
|
||||
#define p0 (a=1)
|
||||
|
|
@ -470,6 +524,16 @@ cat >exp <<EOF
|
|||
#define p2 (a=1)
|
||||
#define p3 (b=1)
|
||||
((p0=1) * (p1=0)) + ((p0=0) * (p1=1)) + (G(((p2=1) * (p3=0)) + $toolong))
|
||||
#define p0 (a=1)
|
||||
#define p1 (b=1)
|
||||
#define p2 (c=1)
|
||||
#define p3 (d=1)
|
||||
#define p4 (e=1)
|
||||
((p0=1) * (p1=1) * (p2=1)) U ((p2=1) * (p3=1) * (p4=1))
|
||||
#define p0 (a=1)
|
||||
#define p1 (b=1)
|
||||
#define p2 (c=1)
|
||||
((p0=1) * (p1=1) * (p2=1)) U ((p0=0) + (p1=0) + (p2=0))
|
||||
EOF
|
||||
run 0 ltlfilt -p --wring -u --nnf --relabel=pnn --define in >out
|
||||
diff exp out
|
||||
|
|
@ -484,6 +548,8 @@ h | i | G(d & e) | FG(!c | Xf)@
|
|||
b & e & (f | g) & !Xc@
|
||||
b & GF(a | c) & !GF!(a | c)@
|
||||
F(a <-> b) -> (c xor d)@
|
||||
(a & b & c) U (c & d & e)@
|
||||
(a & b & c) U !(a & b & c)@
|
||||
EOF
|
||||
diff exp out
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue