Speaker: Christoph Gladisch, KIT
Title: On Verifying Relational
Specifications of Java Programs with JKelloy
Abstract:
Alloy is a relational specification language with a built-in transitive
closure
operator
which makes it particularly suitable for writing concise
specifications
of linked data structures. Several tools support Alloy
specifications
for Java programs. However, they can only check the validity of
those
specifications with respect to a bounded domain, and thus, in general,
cannot
provide correctness proofs. In this talk I will describe JKelloy,
a tool for
deductive
verification of Java programs with Alloy specifications.
It
includes automatically-generated coupling axioms that bridge between
specifications and Java states,
and
two sets of calculus rules that
(1)
generate verification conditions in relational logic, and
(2)
simplify reasoning about them. All rules have been proved correct.
To
increase automation capabilities, proof strategies are introduced
that
control
the application of those rules. Our experiments on linked lists and
binary graphs show the feasibility of
the
approach.