* doc/org/ltlfilt.org: Add an example with --stutter-invariant.
This commit is contained in:
parent
54b25b8c8e
commit
b457e78fb0
1 changed files with 35 additions and 1 deletions
|
|
@ -216,10 +216,44 @@ ltlfilt -f 'a U (b U a)' --equivalent-to 'b U a'
|
|||
#+RESULTS:
|
||||
: a U (b U a)
|
||||
|
||||
The commands prints the formula and returns an exit status of 0 if the
|
||||
The command prints the formula and returns an exit status of 0 if the
|
||||
two formulas are equivalent. It would print nothing and set the exit
|
||||
status to 1, were the two formulas not equivalent.
|
||||
|
||||
|
||||
If the formula =F(a & X(!a & Gb))= stutter-invariant?
|
||||
|
||||
#+BEGIN_SRC sh :results verbatim :exports both
|
||||
ltlfilt -f 'F(a & X(!a & Gb))' --stutter-invariant
|
||||
#+END_SRC
|
||||
#+RESULTS:
|
||||
: F(a & X(!a & Gb))
|
||||
|
||||
Yes it is. And since it is stutter-invariant, there exist some
|
||||
equivalent formulas that do not use =X= operator. The =--remove-x=
|
||||
option gives one:
|
||||
|
||||
#+BEGIN_SRC sh :results verbatim :exports both
|
||||
ltlfilt -f 'F(a & X(!a & Gb))' --remove-x
|
||||
#+END_SRC
|
||||
#+RESULTS:
|
||||
: F(a & ((a & (a U (!a & Gb)) & ((!b U !a) | (b U !a))) | (!a & (!a U (a & !a & Gb)) & ((!b U a) | (b U a))) | (b & (b U (!a & Gb & !b)) & ((!a U !b) | (a U !b))) | (!b & (!b U (!a & b & Gb)) & ((!a U b) | (a U b))) | (!a & Gb & (G!a | Ga) & (Gb | G!b))))
|
||||
|
||||
We could even verify that the resulting horrible formula is equivalent
|
||||
to the original one:
|
||||
|
||||
#+BEGIN_SRC sh :results verbatim :exports both
|
||||
ltlfilt -f 'F(a & X(!a & Gb))' --remove-x | ltlfilt --equivalent-to 'F(a & X(!a & Gb))'
|
||||
#+END_SRC
|
||||
#+RESULTS:
|
||||
: F(a & ((a & (a U (!a & Gb)) & ((!b U !a) | (b U !a))) | (!a & (!a U (a & !a & Gb)) & ((!b U a) | (b U a))) | (b & (b U (!a & Gb & !b)) & ((!a U !b) | (a U !b))) | (!b & (!b U (!a & b & Gb)) & ((!a U b) | (a U b))) | (!a & Gb & (G!a | Ga) & (Gb | G!b))))
|
||||
|
||||
It is therefore equivalent, but that is not a surprise since the
|
||||
=--stutter-invariant= filter is actually implemented using exactly
|
||||
[[http://homepages.inf.ed.ac.uk/kousha/note_on_stut_tl_lpi.ps][this procedure]] (calling the =remove_x()= function, and checking the
|
||||
equivalence of the resulting formula with the original one).
|
||||
|
||||
|
||||
# LocalWords: ltlfilt num toc LTL PSL syntaxes LBT's SRC GFp scheck
|
||||
# LocalWords: ltl EOF lbt Gp Fp Xp XFp XXp randltl ary nnf wm abc
|
||||
# LocalWords: pnn Xb Fc XFb XXd sed boolean bsize nox Gb Fb Xa XGb
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue