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 | and | |
iff | or | |
iff | ||
iff | there is an such that | |
and | ||
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.