15-818A3 - Advanced Topics in Programming Languages: Introduction to Separation Logic
Instructor: John Reynolds
Units: 6
Spring 2005, ** Mini 1**

Description: Separation logic is an extension of Hoare logic for reasoning about programs that use shared mutable data structures. After an overview and a brief introduction to Hoare logic, we will introduce the basic concepts of the separating conjunction and implication, and give illustrative proofs of simple programs for manipulating lists, trees, and dags. We will also consider unrestricted address arithmetic, dynamic arrays, and recursive procedures. Then we will give an overview of a nontrivial proof, of the Cheney copying garbage collector.

To see a concise survey of separation logic, download

ftp://ftp.cs.cmu.edu/user/jcr/seplogic.ps.gz (or .dvi.gz)

Text: There will be no textbook, but extensive class notes will be distributed.

WHO SHOULD TAKE WHAT?

If are interested in the subject, but have no prior experience with separation logic (or even Hoare logic), you should take this introductory minicourse and then, if your appetite is whetted, take the research minicourse (A4).

If you have previously studied separation logic (in particular, if you have taken one of my previous courses on the topic), you should only take the research minicourse (A4).