lpsbinary
The tool lpsbinary
takes a linear process and replace parameters with
a finite data domain by booleans. The advantage of this is that some tools
are much better in dealing with Booleans than with arbitrary data types. This
for instance the case when binary decision diagrams are used (as used by jittyp).
As an example consider the following linear process:
sort D = struct d1 | d2 | d3;
act a: Nat # D # Bool;
proc P(n_P: Nat, d_P: D, b_P: Bool) =
sum e_P: D.
a(n_P, d_P, b_P) .
P(n_P = n_P + 1, d_P = e_P, b_P = !b_P)
+ delta;
init P(0, d1, true);
When applying lpsbinary
the sort D
is replaced by two booleans. The sort Bool
as well as sorts of which it cannot be determined that they are finite are not changed.
The result is given by:
sort D = struct d1 | d2 | d3;
act a: Nat # D # Bool;
proc P(n_P: Nat, d_P1,d_P2,b_P: Bool) =
sum e_P: D.
a(n_P, if(d_P2, if(d_P1, d1, d1), if(d_P1, d2, d3)), b_P) .
P(n_P = n_P + 1, d_P1 = e_P == d2, d_P2 = e_P == d1, b_P = !b_P)
+ delta;
init P(0, d1 == d2, d1 == d1, true);
- orphan:
Usage
lpsbinary [OPTION]... [INFILE [OUTFILE]]
Description
Replace finite sort variables by vectors of boolean variables in the LPS in INFILE and write the result to OUTFILE. If INFILE is not present, stdin is used. If OUTFILE is not present, stdout is used
Command line options
-QNUM
, --qlimit=NUM
limit enumeration of universal and existential quantifiers in data expressions to NUM iterations (default NUM=10, NUM=0 for unlimited).
-rNAME
, --rewriter=NAME
use rewrite strategy NAME:
jitty
jitty rewriting
jittyc
compiled jitty rewriting
jittyp
jitty rewriting with prover
-f[PARAMS]
, --select=[PARAMS]
select parameters that need to be replaced. All selected parameters must have a finite sort other than Bool. Examples: –select=a:,b:Data or –select=:Enum4.
--timings[=FILE]
append timing measurements to FILE. Measurements are written to standard error if no FILE is provided
Standard options
-q
, --quiet
do not display warning messages
-v
, --verbose
display short log messages
-d
, --debug
display detailed log messages
--log-level=LEVEL
display log messages up to and including level; either warn, verbose, debug or trace
-h
, --help
display help information
--version
display version information
--help-all
display help information, including hidden and experimental options