Personal tools

User manual/lpsconfcheck

From MCRL2

Jump to: navigation, search
User manual

Contents

Mark confluent tau-summands of an LPS.

Contents

Synopsis

lpsconfcheck [OPTION]... [INFILE [OUTFILE]]

Short description

The lpsconfcheck tool checks which tau-summands of the linear process specification (LPS) in INFILE are confluent and marks them by renaming their tau-actions to ctau. The resulting LPS is written to OUTFILE. If INFILE is not present, stdin is used. If OUTFILE is not present, stdout is used.

Options

OPTION can be any of the following:

-a, --check-all
check confluence of the tau-summands regarding all other summands, instead of continuing with the next tau-summand as soon as a summand is encountered that is not confluent with the current tau-summand
-c, --counter-example
display a valuation for which the confluence condition does not hold, in case the encountered condition is neither a contradiction nor a tautology
-g, --generate-invariants
try to prove that the reduced confluence condition is an invariant of the LPS, in case the confluence condition is not a tautology
-iINVFILE, --invariant=INVFILE
use the boolean formula (an mCRL2 data expression of sort Bool) in INVFILE as invariant
-m, --no-marking
do not mark the confluent tau-summands; since there are no changes made to the LPS, nothing is written to OUTFILE
-n, --no-check
do not check if the invariant holds before checking for confluence
-o, --induction
apply induction on lists
-pPREFIX, --print-dot=PREFIX
save a .dot file of the resulting BDD in case two summands cannot be proven confluent; PREFIX will be used as prefix of the output files
-rNAME, --rewrite-strategy=NAME
use rewrite strategy NAME
-sNUM, --summand=NUM
check the summand with number NUM only
-tLIMIT, --time-limit=LIMIT
spend at most LIMIT seconds on proving a single formula
-zSOLVER, --smt-solver=SOLVER
use SOLVER to remove inconsistent paths from BDDs:
  • 'ario' for the SMT solver Ario
  • 'cvc' for the SMT solver CVC3
by default, no path elimination is applied

Standard options:

-q, --quiet
do not display warning messages
-v, --verbose
display short intermediate messages
-d, --debug
display detailed intermediate messages
-h, --help
display help information
--version
display version information

Detailed description

Given an LPS:


\begin{array}{lll}
P(d:D) &=& \ldots + \sum_{e_i:E_i} c_i(d,e_i) \to a_i(f_i(d,e_i)) \cdot P(g_i(d,e_i)) +\\
&& \ldots + \sum_{e_j:E_j} c_j(d,e_j) \to \tau \cdot P(g_j(d,e_j)) + \ldots
\end{array}

tau-summand j is confluent with summand i if the following condition holds:


\begin{array}{l}
\forall d{:}D.\forall e_i{:}E_i. \forall e_j{:}E_j . (inv(d) \land c_i(d,e_i) \land c_j(d,e_j)) \Rightarrow\\
(c_i(g_j(d,e_j),e_i) \land c_j(g_i(d,e_i),e_j) \land\\
f_i(d,e_i) = f_i(g_j(d,e_j),e_i) \land g_i(g_j(d,e_j),e_i) = g_j(g_i(d,e_i),e_j))
\end{array}

where inv() is the invariant specified using the option --invariant. In case ai is also a tau-action, this formula can be weakened to the following:


\begin{array}{l}
\forall d{:}D. \forall e_i{:}E_i. \forall e_j{:}E_j . (inv(d) \land c_i(d,e_i) \land c_j(d,e_j)) \Rightarrow\\
(g_i(d,e_i) = g_j(d,e_j) \lor (c_i(g_j(d,e_j),e_i) \land c_j(g_i(d, e_i),e_j) \land\\
g_i(g_j(d,e_j),e_i) = g_j(g_i(d,e_i),e_j)))
\end{array}

If the option --invariant is not used, the invariant is equal to true.

The tool will generate these confluence conditions for all tau-summands and tries to prove that they are tautologies using a BDD based prover for propositional formulas. In some cases lpsconfcheck indicates that a tau-summand is not confluent even though it is. The option --verbose gives insight into what the prover is doing and can be used to see if rewrite rules have to be added to the specification in order to enable the prover to determine that certain condition are indeed tautologies.

In some cases it may be useful to use an SMT solver to assist the prover. The SMT solver can further reduce BDDs by removing inconsistent paths. A specific SMT solver can be chosen using the option --smt-solver=SOLVER. Either the SMT solver Ario or CVC3 can be used. To use one of these solvers, the directory containing the corresponding executable must be in the path.

The tool can determine whether two summands are confluent in three ways and will indicate which of the methods was used while proving confluence. The three ways of determining confluence are as follows:

If two summands are confluent because of syntactic disjointness, lpsconfcheck indicates this by printing a colon (':').

If there already is an action named ctau present in the LPS as found in INFILE, an error will be reported.

Author

Written by Luc Engelen.

Bug reporting

Report bugs at our issue tracking system.



prev.gif lpsbisim2pbes lpsconstelm next.gif
This page was last modified on 19 June 2008, at 08:44. This page has been accessed 10,681 times.
Copyright © 2005-2012 Technische Universiteit Eindhoven.
Powered by MediaWiki