dcπ++
: a dynamic compensation calculus
-
dc&pi++
is a calculus for modeling long running transactions within the framework of &pi-calculus, with support for compensation as a recovery mechanism.
Syntax
operators | dc&pi syntax | ASCII syntax |
---|---|---|
Inaction | {\bf 0} |
inaction |
Output | \overline{a}\langle v_1,...v_n\rangle |
a<v1,...,vn> |
Failure | \overline{t} |
t< > |
Variable | X |
hole |
Input guarded choice | a_1(x_1,...,x_n_1)\left\lfloor\lambda X . Q_1 \right\rfloor . P_1 +
a_2(y_1,...,y_n_2)\left\lfloor\lambda X . Q_2 \right\rfloor . P_2 |
(a1(x1,...,xn1)%Q1).P1 + (*) |
Parallel composition (**) | P \, | \, Q |
P | Q |
Restriction | ( \sigma x) P |
(x)(P) |
Transaction scope | t[P,Q]_{r} |
t[P,Q]r |
Protected block | \langle P \rangle_{r} |
<P>r |
hole or input without prefixing.
(**) The operator | has more precedence than the prefix operator. For the contrary we use parentheses,
i.e.,
a(x).P | Q
&ne a(x).( P | Q )
.
How to use dc&pi++
for model checking
The software icomp.sh is a Prolog interpreter for dc&pi++
specifications,
which includes a parser and the encoding of the labelled transition system that,
used together with ProB model checker, allows to verify the correctness of
long running transactions.
You should use ProB distribution for linux, which includes probcli command.
Keep on the same directory icomp.sh and probcli executables.
You need to update the variable PROBCMD
at the beginning of the script.
Usage: ./icomp.sh example.pi example.map prop.ltl
The file example.pi
is a dc&pi++
specification written in ASCII.
The correctness map is described in example.map
.
The file
prop.ltl
specifies the linear temporal logic (LTL) formula that express the correctness property for
example.pi
.
The LTL formula is written according to ProB syntax, namelly is written is
LTLe, an extended version of LTL
supported by ProB.
dc&pi++
examples
- Order Transaction 1: orderTransaction1.pi, orderTransaction1.map and orderTransaction1.ltl.
- Order Transaction 2: orderTransaction2.pi, orderTransaction2.map and orderTransaction2.ltl
- Order Transaction 3: orderTransaction3.pi, orderTransaction3.map and orderTransaction3.ltl
Contacts
If you have any questions, please email:cvaz_at_cc.isel.ipl.pt