Hi Martin,
However, after checking the specification language, I
found that the dynamic operators are not "exactly" the same as those of Linear
Dynamic Logic. I mean, I was expecting to write [(true;true)*] p instead of
{(1;1)[*]}[]->p to represent the even-state problem.
This formula can also be written {(true;true)*}[]->p, getting closer
to what you wanted to write.
The official PSL syntax for "suffix implication" (the operator
{φ}[]->ψ used above) is {φ}|->ψ. They also have {φ}|=>ψ as syntactic
sugar for {φ;1}|->ψ (note: not the same as {φ}|->Xψ if φ can match the
empty word) so you can easily say if the ψ must hold on the last
letter of φ or right after it. PSL don't provide a dual operator,
which sucks when implementing a translation, so several papers use
[]-> instead so the dual can be written <>->, and we can still keep
the []=>,<>=> sugar.
My questions are the followings:
1) Do they allow to express the same properties ? and
If only looked briefly at the formal definition of the paper you
quoted as well as in
https://core.ac.uk/download/pdf/82563040.pdf
[FL79], and it seems to me that PDL's [φ]ψ would correspond to
{φ}[]=>ψ, not to {φ}[]->ψ.
In particular, example 3(1) of [FL79] states that <a;a>p is the same
as <a><a>p. Using Spot's PSL-derived operators it would be true that
{a;a}<>=>p is the same as {a}<>=>{a}<>=>p, which is equivalent
to
a&X(a&Xp)) when a and p are boolean; while {a;a}<>->p would be
equivalent to a&X(a&p).
You can use the "rewrite" and "compare" tabs of
https://spot.lrde.epita.fr/app/ to toy with these formulas and test
equivalences.
The semantics of the operators supported in Spot are in
https://spot.lrde.epita.fr/tl.pdf in case you haven't seen that
already.
2) How faisable is to accomodate the parser to accept
the PDL syntax ? Could you give me some hints on this case ?
Before talking about the parser, isn't it acceptable to rewrite your
formulas using Spot's syntax?
% echo '[a]<b>[c|d]<e>p' | sed
's/\[\([^]]\+\)\]/{\1}[]=>/g;s/<\([^>]\+\)>/{\1}<>=>/g'
{a}[]=>{b}<>=>{c|d}[]=>{e}<>=>p
(I'm not sure if that's always as simple.)
Teaching Spot's parser to support <φ>ψ as syntactic sugar for {φ}<>=>ψ
should be quite straightforward. However dealing with [φ]ψ would be
harder. The problem is that the next release of Spot includes support
from TLSF's X[n], F[n:m], and G[n:m] operators. Basically sugar for
multiple Xs:
X[6]a = XXXXXXa
F[2:4]a = XX(a | X(a | Xa))
G[2:4]a = XX(a & X(a & Xa))
So currently in the development version of Spot I can write X[1]a and
that's synonym for Xa. But if we now decide to support [φ]ψ as sugar
for φ[]=>ψ, then X[1]a can also mean X([1]a) = X({1}[]=>a) = XXa.
I think the issue occurs only with [1], that can be interpreted either
as a number or as true depending on the context. [1:1] would also be
ambiguous because ":" is a supported operator for regular expressions.
Best regards
--
Alexandre Duret-Lutz