To: seminaire-gallium-moscova@inria.fr
From: Francois.Pottier@inria.fr
Subject: SEM - INRIA : Gallium - 18/06/07 - Paris - FR
Vous pouvez vous abonner à nos annonces de séminaires
http://pauillac.inria.fr/seminaires/
S E M I N A I R E
__
/ _` _ / / o /| /| __ __ __ __ _ _
/ ) __) / / / / / /\/| ----- / |/ | / )(_ / / ) ) ) __)
(___/ (_/ (_ (_ / (__/ / | / | (__/ __)(_ (__/ (_/ (_/
I N R I A - Rocquencourt
Amphi Turing du bâtiment 1
Lundi 18 juin, 10h30
------------
Andrew Appel
------------
Princeton University
=======================================
Threads Can Be Implemented As a Library
=======================================
Hans Boehm, in "Threads Cannot Be Implemented as a Library" (2005),
writes, "In many environments, multi-threaded code is written in a
language that was originally designed without thread support (e.g. C),
to which a library of threading primitives was subsequently added. There
appears to be a general understanding that this is not the right
approach. We provide specific arguments that a pure library approach, in
which the compiler is designed independently of threading issues, cannot
guarantee correctness of the resulting code."
This is an inconvenient truth. But I will show how, _almost_
independently of the threading issues, to write compilers, prove them
correct, prove the soundness of a Separation Logic, or otherwise reason
about operational semantics. While doing this we can pretend that our
language is deterministic and sequential, extensible with some
yet-to-be-specified pseudodeterministic pseudosequential operations that
implement the threads and concurrency.
I will describe a specification in Coq of Extensible C Minor, its
operational semantics, and the Coq-checked soundness proof (joint work
with Sandrine Blazy) of its Separation Logic. The CompCert compiler
could, in principle, be proved correct w.r.t. this specification. These
proofs can assume determinism and sequentiality.
With the null extension it is simply (a small-step variant of)
Leroy's C Minor. With the concurrency extension (joint work with
Aquinas Hobor and Francesco Zappa Nardelli), it is a concurrent C with
threads and locks, but the soundness proofs of the Separation Logic and
the CompCert compiler do not need to be changed. Other extensions are
also possible.