genltl: add formulas from three papers
Fixes #166. * bin/genltl.cc: Add option --dac-patterns, --eh-patterns, --sb-patterns. * NEWS, bin/man/genltl.x, doc/org/genltl.org: Document them. * bench/ltl2tgba/formulae.ltl: Delete. * bench/ltl2tgba/known: Use genltl instead. * bench/ltl2tgba/Makefile.am, bench/ltl2tgba/README: Update. * tests/core/ltl2tgba2.test: New test case, using genltl. * tests/Makefile.am: Add it.
This commit is contained in:
parent
fd5d59984b
commit
b708ab778f
10 changed files with 650 additions and 115 deletions
|
|
@ -19,7 +19,6 @@
|
|||
|
||||
EXTRA_DIST = \
|
||||
big \
|
||||
formulae.ltl \
|
||||
known \
|
||||
small \
|
||||
tools \
|
||||
|
|
|
|||
|
|
@ -46,7 +46,7 @@ this benchmark.
|
|||
Three scripts that run ltlcross on, respectively:
|
||||
100 small formulae (size 10, 4 propositions) and their negations
|
||||
100 big formulae (size 12..15, 8 propositions) and their negations
|
||||
92 known formulae (from formulae.ltl) and their negations
|
||||
92 known formulae (produced by genltl, see below) and their negations
|
||||
|
||||
Each script generates 3 files:
|
||||
xxxx.log: the log of ltlcross' execution, updated as the script goes
|
||||
|
|
@ -57,10 +57,9 @@ this benchmark.
|
|||
you kill a script before it terminates only the xxxx.log file will
|
||||
have been overwritten.
|
||||
|
||||
* formulae.ltl
|
||||
|
||||
A list of LTL formulae used by the `known' check. They come
|
||||
from three sources:
|
||||
The known LTL formulas are generated by genltl, and come from the following
|
||||
three papers:
|
||||
|
||||
@InProceedings{ dwyer.98.fmsp,
|
||||
author = {Matthew B. Dwyer and George S. Avrunin and James C.
|
||||
|
|
@ -105,7 +104,7 @@ this benchmark.
|
|||
}
|
||||
|
||||
In the known benchmark, we use both positive and negated versions
|
||||
of these formulae.
|
||||
of these formulae, yielding 178 unique formulas.
|
||||
|
||||
* sym.py
|
||||
|
||||
|
|
|
|||
|
|
@ -1,92 +0,0 @@
|
|||
[](!p0)
|
||||
<>p1 -> (!p0 U p1)
|
||||
[](p2 -> [](!p0))
|
||||
[]((p2 & !p1 & <>p1) -> (!p0 U p1))
|
||||
[](p2 & !p1 -> (!p0 U (p1 | []!p0)))
|
||||
<>(p0)
|
||||
!p1 U ((p0 & !p1) | []!p1)
|
||||
[](!p2) | <>(p2 & <>p0)
|
||||
[](p2 & !p1 -> (!p1 U ((p0 & !p1) | []!p1)))
|
||||
[](p2 & !p1 -> (!p1 U (p0 & !p1)))
|
||||
<>p1 -> ((!p0 & !p1) U (p1 | ((p0 & !p1) U (p1 | ((!p0 & !p1) U (p1 | ((p0 & !p1) U (p1 | (!p0 U p1)))))))))
|
||||
[]((p2 & <>p1) -> ((!p0 & !p1) U (p1 | ((p0 & !p1) U (p1 | ((!p0 & !p1) U (p1 | ((p0 & !p1) U (p1 | (!p0 U p1))))))))))
|
||||
[](p2 -> ((!p0 & !p1) U (p1 | ((p0 & !p1) U (p1 | ((!p0 & !p1) U (p1 | ((p0 & !p1) U (p1 | (!p0 U (p1 | []!p0)) | []p0)))))))))
|
||||
[](p0)
|
||||
<>p1 -> (p0 U p1)
|
||||
[](p2 -> [](p0))
|
||||
[]((p2 & !p1 & <>p1) -> (p0 U p1))
|
||||
[](p2 & !p1 -> (p0 U (p1 | [] p0)))
|
||||
!p0 U (p3 | []!p0)
|
||||
<>p1 -> (!p0 U (p3 | p1))
|
||||
[]!p2 | <>(p2 & (!p0 U (p3 | []!p0)))
|
||||
[]((p2 & !p1 & <>p1) -> (!p0 U (p3 | p1)))
|
||||
[](p2 & !p1 -> (!p0 U ((p3 | p1) | []!p0)))
|
||||
[](p0 -> <>p3)
|
||||
<>p1 -> (p0 -> (!p1 U (p3 & !p1))) U p1
|
||||
[](p2 -> [](p0 -> <>p3))
|
||||
[]((p2 & !p1 & <>p1) -> (p0 -> (!p1 U (p3 & !p1))) U p1)
|
||||
[](p2 & !p1 -> ((p0 -> (!p1 U (p3 & !p1))) U (p1 | [](p0 -> (!p1 U (p3 & !p1))))))
|
||||
<>p0 -> (!p0 U (p3 & !p0 & X(!p0 U p4)))
|
||||
<>p1 -> (!p0 U (p1 | (p3 & !p0 & X(!p0 U p4))))
|
||||
([]!p2) | (!p2 U (p2 & <>p0 -> (!p0 U (p3 & !p0 & X(!p0 U p4)))))
|
||||
[]((p2 & <>p1) -> (!p0 U (p1 | (p3 & !p0 & X(!p0 U p4)))))
|
||||
[](p2 -> (<>p0 -> (!p0 U (p1 | (p3 & !p0 & X(!p0 U p4))))))
|
||||
(<>(p3 & X<>p4)) -> ((!p3) U p0)
|
||||
<>p1 -> ((!(p3 & (!p1) & X(!p1 U (p4 & !p1)))) U (p1 | p0))
|
||||
([]!p2) | ((!p2) U (p2 & ((<>(p3 & X<>p4)) -> ((!p3) U p0))))
|
||||
[]((p2 & <>p1) -> ((!(p3 & (!p1) & X(!p1 U (p4 & !p1)))) U (p1 | p0)))
|
||||
[](p2 -> (!(p3 & (!p1) & X(!p1 U (p4 & !p1))) U (p1 | p0) | [](!(p3 & X<>p4))))
|
||||
[] (p3 & X<> p4 -> X(<>(p4 & <> p0)))
|
||||
<>p1 -> (p3 & X(!p1 U p4) -> X(!p1 U (p4 & <> p0))) U p1
|
||||
[] (p2 -> [] (p3 & X<> p4 -> X(!p4 U (p4 & <> p0))))
|
||||
[] ((p2 & <>p1) -> (p3 & X(!p1 U p4) -> X(!p1 U (p4 & <> p0))) U p1)
|
||||
[] (p2 -> (p3 & X(!p1 U p4) -> X(!p1 U (p4 & <> p0))) U (p1 | [] (p3 & X(!p1 U p4) -> X(!p1 U (p4 & <> p0)))))
|
||||
[] (p0 -> <>(p3 & X<>p4))
|
||||
<>p1 -> (p0 -> (!p1 U (p3 & !p1 & X(!p1 U p4)))) U p1
|
||||
[] (p2 -> [] (p0 -> (p3 & X<> p4)))
|
||||
[] ((p2 & <>p1) -> (p0 -> (!p1 U (p3 & !p1 & X(!p1 U p4)))) U p1)
|
||||
[] (p2 -> (p0 -> (!p1 U (p3 & !p1 & X(!p1 U p4)))) U (p1 | [] (p0 -> (p3 & X<> p4))))
|
||||
[] (p0 -> <>(p3 & !p5 & X(!p5 U p4)))
|
||||
<>p1 -> (p0 -> (!p1 U (p3 & !p1 & !p5 & X((!p1 & !p5) U p4)))) U p1
|
||||
[] (p2 -> [] (p0 -> (p3 & !p5 & X(!p5 U p4))))
|
||||
[] ((p2 & <>p1) -> (p0 -> (!p1 U (p3 & !p1 & !p5 & X((!p1 & !p5) U p4)))) U p1)
|
||||
[] (p2 -> (p0 -> (!p1 U (p3 & !p1 & !p5 & X((!p1 & !p5) U p4)))) U (p1 | [] (p0 -> (p3 & !p5 & X(!p5 U p4)))))
|
||||
!p0 U ((p0 U ((!p0 U ((p0 U ([]!p0 | []p0)) | []!p0)) | []!p0)) | []!p0)
|
||||
<>p2 -> (!p2 U (p2 & (!p0 U ((p0 U ((!p0 U ((p0 U ([]!p0 | []p0)) | []!p0)) | []!p0)) | []!p0))))
|
||||
p0 U p1
|
||||
p0 U (p1 U p2)
|
||||
!p0 R (!p1 R !p2)
|
||||
(1 U (0 R !p0)) | (0 R (1 U p1))
|
||||
(1 U p0) U (0 R p1)
|
||||
(0 R p0) U p1
|
||||
(1 U p0) & (1 U (1 U p0)) & (0 R !p0) & (0 R (0 R !p0))
|
||||
(0 R (1 U p0)) & (1 U (0 R !p1))
|
||||
((0 R (1 U p0)) & (1 U (0 R !p1))) | ((0 R (1 U p1)) & (1 U (0 R !p0)))
|
||||
p0 R (p0 | p1)
|
||||
(Xp0 U Xp1) | X(!p0 R !p1)
|
||||
(Xp0 U p1) | X(!p0 R (!p0 | !p1))
|
||||
(0 R (!p0 | (1 U p1))) & ((Xp0 U p1) | X(!p0 R (!p0 | !p1)))
|
||||
(0 R (!p0 | (1 U p1))) & ((Xp0 U Xp1) | X(!p0 R !p1))
|
||||
0 R (!p0 | (1 U p1))
|
||||
1 U (p0 & X(!p1 U !p2))
|
||||
(1 U (0 R !p0)) & (0 R (1 U !p1))
|
||||
0 R ((1 U p0) & (1 U p1))
|
||||
(1 U p0) & (1 U !p0)
|
||||
(Xp1 & p2) R X(((p3 U p0) R p2) U (p3 R p2))
|
||||
((0 R (p1 | (0 R (1 U p0)))) & (0 R (p2 | (0 R (1 U !p0))))) | (0 R p1) | (0 R p2)
|
||||
((0 R (p1 | (1 U (0 R p0)))) & (0 R (p2 | (1 U (0 R !p0))))) | (0 R p1) | (0 R p2)
|
||||
(0 R (p1 | X(0 R p0))) & (0 R (p2 | X(0 R !p0)))
|
||||
0 R (p1 | (Xp0 & X!p0))
|
||||
p0 | (p1 U p0)
|
||||
p0 U (p1 & (0 R p2))
|
||||
p0 U (p1 & X(p2 U p3))
|
||||
p0 U (p1 & X(p2 & (1 U (p3 & X(1 U (p4 & X(1 U (p5 & X(1 U p6)))))))))
|
||||
1 U (p0 & X(0 R p1))
|
||||
1 U (p0 & X(p1 & X(1 U p2)))
|
||||
1 U (p0 & X(p1 U p2))
|
||||
(1 U (0 R p0)) | (1 U (0 R p1))
|
||||
0 R (!p0 | (p1 U p2))
|
||||
1 U (p0 & X(1 U (p1 & X(1 U (p2 & X(1 U p3))))))
|
||||
(0 R (1 U p0)) & (0 R (1 U p1)) & (0 R (1 U p2)) & (0 R (1 U p3)) & (0 R (1 U p4))
|
||||
(p0 U (p1 U p2)) | (p1 U (p2 U p0)) | (p2 U (p0 U p1))
|
||||
0 R (!p0 | (p1 U ((0 R p2) | (0 R p3))))
|
||||
|
|
@ -1,7 +1,7 @@
|
|||
#!/bin/sh
|
||||
# -*- shell-script -*-
|
||||
# Copyright (C) 2012, 2013 Laboratoire de Recherche et Developpement de
|
||||
# l'Epita (LRDE)
|
||||
# Copyright (C) 2012, 2013, 2016 Laboratoire de Recherche et
|
||||
# Developpement de l'Epita (LRDE)
|
||||
#
|
||||
# This file is part of Spot, a model checking library.
|
||||
#
|
||||
|
|
@ -20,6 +20,6 @@
|
|||
|
||||
. ./defs
|
||||
|
||||
$LTLCROSS "$@" --csv=known.csv --json=known.json \
|
||||
< "$srcdir/formulae.ltl" 2>&1 |
|
||||
$GENLTL --dac-patterns --eh-patterns --sb-patterns |
|
||||
$LTLCROSS "$@" --csv=known.csv --json=known.json 2>&1 |
|
||||
tee known.log
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue