Abstract: Verification of Erlang Programs using Abstract Interpretation and Model Checking -- Extended Version
We present an approach for the verification of Erlang programs using
abstract interpretation and model checking.
In general model checking for temporal logics like LTL and Erlang
programs is undecidable.
Therefore we define a framework for abstract interpretations for
a core fragment of Erlang.
In this framework it is guaranteed, that the abstract operational
semantics preserves all paths of the standard operational semantics.
We consider properties that have to hold on all paths of a system, like
properties in LTL.
If these properties can be proved for the abstract operational
semantics, they also hold for the Erlang program.
They can be proved with model checking if the abstract
operational semantics is a finite transition system.
Therefore we introduce a concrete abstract interpretation, which has
this property.
We have implemented this approach as a prototype and were able to
prove properties like mutual exclusion or the absence of deadlocks
and lifelocks for some Erlang programs.
BibTeX-Entry,
Paper