| [1] |
Clément Hurlin.
Specification and Verification of Multithreaded Object-Oriented Programs with
Separation Logic.
PhD thesis, Université Nice - Sophia Antipolis, September 2009.
[ bib |
.pdf (slides) |
.pdf ]
First, we develop verification rules in separation logic for primitives concerning multithreading : the primitives fork and join that control how threads start and how threads wait, and the primitive for reentrant locks (locks that can be acquired and released more than once) that are used in Java.
|
| [2] |
Clément Hurlin.
Automatic Parallelization and Optimization of Programs by Proof Rewriting (or
Automatic Parallelization with Separation Logic!).
In Static Analysis Symposium
(SAS'09), Lecture Notes in Computer Science. Springer-Verlag, August 2009.
To appear. A longer version appeared as
technical report 6806
[ .pdf ] from INRIA. Slides of a cool talk:
leuven09.pdf. Éterlou's implementation is
available.
[ bib |
DOI |
.pdf (slides) |
SpringerLink |
.pdf |
.dvi |
.ps ]
We show how, given a program and its separation logic proof, one can parallelize and optimize this program and transform its proof simultaneously to obtain a proven parallelized and optimized program. To achieve this goal, we present new proof rules for generating proof trees and a rewrite system on proof trees.
|
| [3] |
Clément Hurlin,
François Bobot, and
Alexander J. Summers.
Size
Does Matter : Two Certified Abstractions to Disprove Entailment in
Intuitionistic and Classical Separation Logic.
In
International Workshop on Aliasing, Confinement and Ownership in object-oriented
programming (IWACO'09), July 2009.
Coq proofs:
disprove.tgz.
[ bib |
.pdf (slides) |
.pdf |
.dvi |
.ps ]
We describe an algorithm to disprove entailment between separation logic formulas. We abstract models of formulas by their size and check whether two formulas have models whose sizes are compatible. Given two formulas A and B that do not have compatible models, we can conclude that A does not entail B. We provide two different abstractions (of different precision) of models. Our algorithm is of interest wherever entailment checking is performed (such as in program verifiers).
|
| [4] |
Christian Haack and
Clément Hurlin.
Resource usage protocols for iterators.
Journal of Object Technology, 8(4), 2009.
This is an extended version of a paper that appeared in the
IWACO'08
workshop
(workshop version). The .html link points to the paper.
[ bib |
.html ]
We discuss usage protocols for iterator objects that prevent concurrent modifications of the underlying collection while iterators are in progress. We formalize these protocols in Java-like object interfaces, enriched with separation logic contracts. We present examples of iterator clients and proofs that they adhere to the iterator protocol, as well as examples of iterator implementations and proofs that they implement the iterator interface.
|
| [5] |
Clément Hurlin.
Specifying and Checking Protocols of Multithreaded Classes.
In ACM
Symposium on Applied Computing (SAC'09),
Software Verification and Testing Track, pages 587-592. ACM, March 2009.
Additional material (examples, detailed statistics, and
implementation) is available:
pyrolobus. Slides of an earlier talk:
protocol08.pdf.
[ bib |
DOI |
.pdf (slides) |
.pdf |
.dvi |
.ps ]
In the Design By Contract (DBC) approach, programmers specify methods with pre and postconditions (also called contracts). Earlier work added protocols to the DBC approach to describe allowed method call sequences for classes. We extend this work to deal with a variant of generic classes and multithreaded classes. We present the semantical foundations of our extension. We describe a new technique to check that method contracts are correct w.r.t. to protocols. We show how to generate programs that must be proven to show that method contracts are correct w.r.t. to protocols. Because little support currently exists to help writing method contracts, our technique helps programmers to check their contracts early in the development process.
|
| [6] |
Christian Haack,
Marieke Huisman, and
Clément Hurlin.
Reasoning about Java's Reentrant Locks (or Separation logic for Java's
reentrant locks!).
In Grama Ramalingam, editor,
Asian Symposium on
Programming Languages and Systems (APLAS'08), volume 5356 of Lecture
Notes in Computer Science, pages 171-187. Springer-Verlag, December 2008.
Theorems about the proof theory and the semantics of (a subset of)
formulas have been certified in Coq:
perm.v.
A long version appeared as
technical report ICIS-R08014 from Radboud University Nijmegen.
[ bib |
DOI |
.pdf (slides) |
SpringerLink |
.pdf |
.dvi |
.ps ]
This paper presents a verification technique for a concurrent Java-like language with reentrant locks. The verification technique is based on permission-accounting separation logic. As usual, each lock is associated with a resource invariant, i.e. when acquiring the lock the resources are obtained by the thread holding the lock, and when releasing the lock, the resources are released. To accommodate for reentrancy, the notion of lockset is introduced: a multiset of locks held by a thread. Keeping track of the lockset enables the logic to ensure that resources are not re-acquired upon reentrancy, thus avoiding the introduction of new resources in the system. To be able to express flexible locking policies, we combine the verification logic with value-parametrized classes. Verified programs satisfy the following properties: data race freedom, absence of null-dereferencing and partial correctness. The verification technique is illustrated on several examples, including a challenging lock-coupling algorithm.
|
| [7] |
Christian Haack and
Clément Hurlin.
Separation Logic Contracts for a Java-like Language with Fork/Join.
In Jose Meseguer and Grigore Rosu, editors,
International Conference on Algebraic
Methodology and Software Technology (AMAST'08), volume 5140 of Lecture
Notes in Computer Science, pages 199-215. Springer-Verlag, July 2008.
Theorems about the proof theory and the semantics of (a subset of)
formulas have been certified in Coq:
perm-slfj.v. An interactive tool for doing proofs in this paper's system is
available:
ratp. A
long version appeared as
technical report 6430
[ .pdf |
.dvi |
.ps ] from INRIA.
[ bib |
DOI |
SpringerLink |
.pdf |
.dvi |
.ps ]
We adapt a variant of permission-accounting separation logic to a concurrent Java-like language with fork/join. To support both concurrent reads and information hiding, we combine fractional permissions with abstract predicates. As an example, we present a separation logic contract for iterators that prevents data races and concurrent modifications. Our program logic is presented in an algorithmic style: we avoid structural rules for Hoare triples and formalize logical reasoning about typed heaps by natural deduction rules and a set of sound axioms. We show that verified programs satisfy the following properties: data race freedom, absence of null-dereferences and partial correctness.
|
| [8] | Marieke Huisman and Clément Hurlin. Permission specifications for common multithreaded programming patterns. In Erik Barendsen, Venanzio Capretta, Herman Geuvers, and Milad Niqui, editors, Reflections on Type Theory, λ-calculus, and the Mind. Essays Dedicated to Henk Barendregt on the Occasion of his 60th birthday, pages 147-159, December 2007. [ bib | tex | .pdf | .dvi | .ps ] |
| [9] | Marieke Huisman and Clément Hurlin. The stability problem for verification of concurrent object-oriented programs. In Verification and Analysis of Multi-threaded Java-like Programs (VAMP'07), September 2007. A simple implementation of Section 4 has been certified in Coq: stability.v. [ bib | .pdf (slides) | tex | .pdf | .dvi | .ps ] |
| [10] | Clément Hurlin, Amine Chaieb, Pascal Fontaine, Stephan Merz, and Tjark Weber. Practical proof reconstruction for first-order logic and set-theoretical constructions. In Lucas Dixon and Moa Johansson, editors, Isabelle Workshop (ISABELLE-WS'07), pages 2-13, July 2007. [ bib | .pdf (slides) | tex | .pdf ] |
| [11] | Clément Hurlin. Proof reconstruction for first-order logic and set-theoretical constructions. In Stefan Merz and Tobias Nipkow, editors, short paper in Automated Verification of Critical Systems (AVOCS'06), pages 157-162, September 2006. [ bib | .pdf (slides) | tex | .pdf ] |
| [12] | Clément Hurlin. Reconstruction de preuves pour les formules quantifiées et ensemblistes, June 2006. Mémoire de Master 2. [ bib | .pdf (slides) | tex | .pdf | .ps ] |
| [13] | Joseph Kiniry, Patrice Chalin, and Clément Hurlin. Integrating static checking and interactive verification: Supporting multiple theories and provers in verification. In Verified Software: Theories, Tools, Experiments (VSTTE'05), volume 4471 of Lecture Notes in Computer Science, pages 153-160. Springer-Verlag, September 2005. [ bib | DOI | SpringerLink | tex | .pdf ] |
This file was generated by bibtex2html 1.94.