Wring
Software
Here is a link to wring-1.1.0
(dated 21 Jun 01) by Fabio Somenzi. Wring is a perl script to
translate LTL formulae to generalized Buechi automata. It
is based on the paper
Fabio Somenzi and Roderick Bloem, Efficient
Buechi automata from LTL Formulae, CAV'00, pp.248-263, 2000 (postscript, copyright Springer Verlag).
Wring takes an LTL formula and produces a dot or verilog
representation of a corresponding automaton. It is meant to
produce small automata.
The software includes a reimplementation of Gerth, Peled, Vardi and
Wolper's GPVW and GPVW+ algorithms, and of Daniele, Giunchiglia and
Vardi's LTL2AUT. It should be understood that any errors or
inadvertent inefficiencies in the reimplementation are solely our
responsibility, not that of the original authors.
Wring works in
three stages: rewriting, translation, and simulation-based
minimization. The first and last stages can be turned off or on
at will, and the middle stage can be set to GPVW, GPVW+, LTL2AUT or
Boolean optimization. In this way one can obtain a good picture
of the relative strengths of the various methods.
New
Wring-1.1.0 improves Wring-1.0.0 in the following ways.
- It fixes two bugs in Wring-1.0.0 that yield incorrect results.
(Thanks Heikki
Tauriainen.)
- Wring now outputs verilog monitors.
- Wring now can read Buechi automata written in the format used by
Buechi::ToString. This means that it can read back in its own output.
Difference with Paper
The third stage makes use of don't-care
information. For some states it does not matter in which fair
sets they occur; this gives the optimizer more freedom.
Unfortunately, there was a mistake in the initial implementation, and
the current, corrected version uses don't-care information less
efficiently. Hence, we see small differences with respect to the
tables of the paper. We mention the two most important
revisions:
In Table 1, the overall performance of Wring is 121 states, 232 transitions,
22 fairness constraints (was: 122, 231, 22).
In Table 2, the last line becomes:
5689 states, 10141 transitions, 492 fair sets, 1548 initial, 395 weak,
526 teminal, 578.0s.
(was:
5648 states, 10053 transitions, 492 fair sets, 1535 initial, 390 weak,
537 teminal, 631.0s.)
Variability in Results
In doing experiments, you will notice small differences between runs on
different architectures and between runs with different parameters, even
if they mean the same. This happens because some heuristics are order
dependent, and hash tables get read out in different orders on different
architectures and when their placement in the address space is different.
Benchmarks
The tar archive also contains several benchmarks. One, Test/table.ltl
is the set used in Table 1, as ``formulas in common use and from the literature''.
The set of 1000 random formulas that we used for Table 2 is available as
Test/l1000-15-3-05.ltl. A random formula generator, inspired by
the one by Daniele, Giunchiglia, and Vardi, is also included.
Future
Our long-term plan is to integrate wring into
vis.
For additional information, please contact
Fabio Somenzi or
Roderick Bloem.