Our specification language is linear temporal logic (LTL),
with program point predicates as atomic propositions
but omitting the type predicate
.
The choice of linear temporal logic as the specification language,
instead of for instance the modal
-calculus for which
the model checking problem for our encoding
into pushdown systems
is also efficiently decidable, was solely motivated by the existence
of the efficient model checker Moped [8] for LTL.
The operators of the logic
are the standard ones. If
and
are formulas then so are
,
,
,
and
.
The meaning of formulas is defined with respect
to runs of infinite length
. We let
denote
the suffix of
starting in configuration
.
Then satisfaction
of a formula
by a run
is
defined as:
![]() |
iff |
point ![]() |
![]() |
iff | not
![]() |
![]() |
iff |
![]() ![]() |
![]() |
iff |
![]() ![]() |
![]() |
iff |
![]() |
![]() |
iff | there is an ![]() |
![]() ![]() |
||
for all ![]() |
Henceforth
let
abbreviate
for some atomic predicate
,
abbreviate
,
abbreviate
,
and
abbreviate
and
abbreviate
.
Further define
and
.
The weak until operator
abbreviates
.
Finally let
.
Given a PDS
let the notation
express the judgement that all
runs starting in the entry program point of
the method
satisfy
.
More formally:
The definition of a judgement
is
motivated by the Moped tool which implements
an algorithm for checking an
initial configuration against an LTL formula.