simplify: GF(f)=GF(dnf(f)) FG(f)=FG(cnf(f))
These rules come from Delag's paper, and help some cases in issue #385. * spot/tl/simplify.cc: Implement the simplification. * doc/tl/tl.tex, NEWS: Document it. * tests/core/385.test: New file. * tests/Makefile.am: Add it. * tests/core/reduccmp.test: More tests. * tests/core/ltl2tgba2.test: Adjust one improved case. * tests/python/automata.ipynb, tests/python/twagraph-internals.ipynb: Adjust expected output, as the cnf/dnf reorder some subformulas.
This commit is contained in:
parent
df326e032b
commit
da5d23f0a2
9 changed files with 2517 additions and 2291 deletions
|
|
@ -116,7 +116,7 @@
|
|||
\newcommand{\nsereMarked}[1]{\texttt{!+\{}#1\texttt{\}}}
|
||||
\newcommand{\seren}[1]{\texttt{\{}#1\texttt{\}!}}
|
||||
|
||||
% rewriting rules that enlarge the formula
|
||||
% rewriting rules that (may) enlarge the formula
|
||||
\newcommand{\equiV}{\stackrel{\star}{\equiv}}
|
||||
% rewriting rules that favors event/univ
|
||||
\newcommand{\equivEU}{\stackrel{\blacktriangleup}{\equiv}}
|
||||
|
|
@ -1463,15 +1463,19 @@ instead of $\equiv$, and they can be disabled by setting the
|
|||
\label{sec:basic-simp-ltl}
|
||||
|
||||
The following are simplification rules for unary operators (applied
|
||||
from left to right, as usual):
|
||||
from left to right, as usual). The terms $\mathsf{dnf}(f)$ and
|
||||
$\mathsf{cnf}(f)$ denote respectively the disjunctive and conjunctive
|
||||
normal forms if $f$, handling non-Boolean sub-formulas as if they were
|
||||
atomic propositions.
|
||||
|
||||
\begin{align*}
|
||||
\X\F\G f & \equiv \F\G f & \F(f\U g) & \equiv \F g & \G(f \R g) & \equiv \G g \\
|
||||
\X\G\F f & \equiv \G\F f & \F(f\M g) & \equiv \F (f\AND g) & \G(f \W g) & \equiv \G(f\OR g) \\
|
||||
\F\X f & \equiv \X\F f & \F\G(f\AND \X g) & \equiv \F\G(f\AND g) & \G\F(f\OR \X g) & \equiv \G\F(f\OR g) \\
|
||||
\G\X f & \equiv \X\G f & \F\G(f\AND \G g) & \equiv \F\G(f\AND g) & \G\F(f\OR \F g) & \equiv \G\F(f\OR g) \\
|
||||
& & \F\G(f\OR\G g) & \equiv \F(\G f\OR\G g) & \G\F(f\AND\F g) & \equiv \G(\F f\AND\F g) \\
|
||||
& & \F\G(f\AND\F g) & \equiV \F\G f\AND\G\F g & \G\F(f\AND\G g) & \equiV \G\F f\AND\F\G g \\
|
||||
& & \F\G(f\OR\F g) & \equivEU \F\G f\OR\G\F g & \G\F(f\OR\G g) & \equivEU \G\F f\OR\F\G g
|
||||
\X\F\G f & \equiv \F\G f & \F(f\U g) & \equiv \F g & \G(f \R g) & \equiv \G g \\
|
||||
\X\G\F f & \equiv \G\F f & \F(f\M g) & \equiv \F (f\AND g) & \G(f \W g) & \equiv \G(f\OR g) \\
|
||||
\F\X f & \equiv \X\F f & \F\G(f\AND \X g) & \equiv \F\G(f\AND g) & \G\F(f\OR \X g) & \equiv \G\F(f\OR g) \\
|
||||
\G\X f & \equiv \X\G f & \F\G(f\AND \G g) & \equiv \F\G(f\AND g) & \G\F(f\OR \F g) & \equiv \G\F(f\OR g) \\
|
||||
& & \F\G(f\OR\G g) & \equiv \F(\G f\OR\G g) & \G\F(f\AND\F g) & \equiv \G(\F f\AND\F g) \\
|
||||
\G\F f & \equiV \G\F(\mathsf{dnf}(f)) & \F\G(f\AND\F g) & \equiV \F\G f\AND\G\F g & \G\F(f\AND\G g) & \equiV \G\F f\AND\F\G g \\
|
||||
\F\G f & \equiV \F\G(\mathsf{cnf}(f)) & \F\G(f\OR\F g) & \equivEU \F\G f\OR\G\F g & \G\F(f\OR\G g) & \equivEU \G\F f\OR\F\G g
|
||||
\end{align*}
|
||||
\begin{align*}
|
||||
\G(f_1\OR\ldots\OR f_n \OR \G\F(g_1)\OR\ldots\OR \G\F(g_m)) & \equiv \G(f_1\OR\ldots\OR f_n)\OR \G\F(g_1\OR\ldots\OR g_m)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue