|
Synchronization algorithms
that provide the transaction interface are intricate. We present an
algorithm description language that explicitly captures the type of the
used synchronization objects and associates labels to method calls to
explicitly capture their intra-thread order. We use the language to
capture architecture independent representations of transactional
memory (TM) algorithms. We present a novel logic that enables reasoning
about synchronization algorithms that are described in the language.
The logic quantifies over program labels and provides specific
predicates and intuitive inference rules to reason about the
inter-thread execution and linearization orders of labeled method
calls. In particular, the logic assertions can directly capture orders
that are fundamental to the correctness of transactions. We present a
denotational semantics for the language and prove the soundness of the
logic. We have formalized the logic in the PVS proof assistant and
mechanically constructed the challenging correctness proof of the TL2
TM algorithm.
|
|