Commit d5b2de7f authored by Alexandre Duret-Lutz's avatar Alexandre Duret-Lutz
Browse files

simplifier: new LTL simplifications

if e is pure eventuality and g => e, then e U g = Fg
if u is purely universal and u => g, then u R g = Gg

Fixes #93.

* doc/tl/tl.tex, NEWS: Document the rules.
* spot/tl/simplify.cc: Implement them.
* tests/core/reduccmp.test: Test them.
* tests/core/det.test: Adjust.
parent e37f62dc
......@@ -111,6 +111,10 @@ New in spot 2.0.3a (not yet released)
implies that "autfilt --check=stutter" will now label all
automata, not just deterministic automata.
* New LTL simplification rules:
- if e is pure eventuality and g => e, then e U g = Fg
- if u is purely universal and u => g, then u R g = Gg
Python:
* The __format__() method for formula supports the same
......
......@@ -1720,7 +1720,9 @@ In the following rewritings rules, $f\simp g$ means that $g$ was
proved to be implied by $f$ using either of the above two methods.
Additionally, implications denoted by $f\Simp g$ are only checked if
the ``\verb|tl_simplifier_options::containment_checks_stronger|''
option is set (otherwise the rewriting rule is not applied).
option is set (otherwise the rewriting rule is not applied). As in
the previous section, formulas $e$ and $u$ represent respectively
pure eventualities and purely universal formulas.
\begin{equation*}
\begin{array}{cccr@{\,}l}
......@@ -1731,6 +1733,7 @@ option is set (otherwise the rewriting rule is not applied).
\text{if}& f\simp g &\text{then}& f\U g &\equiv g \\
\text{if}& (f\U g)\Simp g &\text{then}& f\U g &\equiv g \\
\text{if}& (\NOT f)\simp g &\text{then}& f\U g &\equiv \F g \\
\text{if}& g\simp e &\text{then}& e\U g &\equiv \F g \\
\text{if}& f\simp g &\text{then}& f\U (g \U h) &\equiv g \U h \\
\text{if}& f\simp g &\text{then}& f\U (g \W h) &\equiv g \W h \\
\text{if}& g\simp f &\text{then}& f\U (g \U h) &\equiv f \U h \\
......@@ -1753,6 +1756,7 @@ option is set (otherwise the rewriting rule is not applied).
\text{if}& g\simp h &\text{then}& (f\U g) \W h &\equiv (f \U g) \OR h \\
\text{if}& g\simp f &\text{then}& f\R g &\equiv g \\
\text{if}& g\simp \NOT f &\text{then}& f\R g &\equiv \G g \\
\text{if}& u\simp g &\text{then}& u\R g &\equiv \G g \\
\text{if}& g\simp f &\text{then}& f\R (g \R h) &\equiv g \R h \\
\text{if}& g\simp f &\text{then}& f\R (g \M h) &\equiv g \M h \\
\text{if}& f\simp g &\text{then}& f\R (g \R h) &\equiv f \R h \\
......@@ -1771,8 +1775,8 @@ option is set (otherwise the rewriting rule is not applied).
\end{array}
\end{equation*}
The above rules were collected from various
sources~\cite{somenzi.00.cav,tauriainen.03.a83,babiak.12.tacas} and
Many of the above rules were collected from the
literature~\cite{somenzi.00.cav,tauriainen.03.a83,babiak.12.tacas} and
sometimes generalized to support operators such as $\M$ and $\W$.
\appendix
......
......@@ -1644,7 +1644,9 @@ namespace spot
&& c_->contained(bo, b)))
return b;
// if !a => b, then a U b = Fb
if (c_->implication_neg(a, b, false))
// if a eventual && b => a, then a U b = Fb
if (c_->implication_neg(a, b, false)
|| (a.is_eventual() && c_->implication(b, a)))
return recurse(formula::F(b));
// if a => b, then a U (b U c) = (b U c)
// if a => b, then a U (b W c) = (b W c)
......@@ -1677,7 +1679,9 @@ namespace spot
if (c_->implication(b, a))
return b;
// if b => !a, then a R b = Gb
if (c_->implication_neg(b, a, true))
// if a universal && a => b, then a R b = Gb
if (c_->implication_neg(b, a, true)
|| (a.is_universal() && c_->implication(a, b)))
return recurse(formula::G(b));
// if b => a, then a R (b R c) = b R c
// if b => a, then a R (b M c) = b M c
......
......@@ -38,7 +38,7 @@ cat >formulas <<'EOF'
1,5,a M G(F!b | X!a)
1,4,G!a R XFb
1,4,XF(!a | GFb)
1,6,G(F!a U !a) U Xa
1,6,GF!a U Xa
1,5,(a | G(a M !b)) W Fc
1,6,Fa W Xb
1,10,X(a R ((!b & F!c) M X!a))
......
#! /bin/sh
# -*- coding: utf-8 -*-
# Copyright (C) 2009, 2010, 2011, 2012, 2013, 2014 Laboratoire de
# Copyright (C) 2009, 2010, 2011, 2012, 2013, 2014, 2016 Laboratoire de
# Recherche et Developpement de l'Epita (LRDE).
# Copyright (C) 2004, 2006 Laboratoire d'Informatique de Paris 6 (LIP6),
# département Systèmes Répartis Coopératifs (SRC), Université Pierre
......@@ -104,6 +104,16 @@ b U GFa, GFa
Ga, Ga
a U XXXFb, XXXFb
# issue 93
GFa U Ga, FGa
FGa U Ga, FGa
GFa U a, GFa U a
Fa U a, Fa
GFa R Fa, GFa
FGa R Fa, GFa
FGa R a, FGa R a
Ga R a, Ga
EOF
cp common.txt nottau.txt
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment