Report Open Access

Circular lists in Iris ∗ deduction rules of ▷

Herman Bergwerf

One concern of theoretical computer science is to prove the correctness of algorithms, for example the implementation of datastructures that are at the core of almost all programs. This becomes especially complicated when concurrency is involved in a non-trivial way, such that multiple parts of memory that logically belong together are modified in parallel.

Proof Assistants are computer programs that enable logical reasoning in a strict formal proof system. Developing proofs inside a such a proof assistant requires extreme rigour. As long as your definitions are not flawed, it is practically impossible to miss edge cases. The proof assistant we use is called Coq.

Coq is not readily usable to reason about programs that use mutable resources, but the Iris project has built a framework inside Coq that offers a convenient language and toolbox for this. Iris uses separation logic and modal logic to reason about memory, concurrency, and potentially non-terminating recursion.

Contributions:

  1. Circular lists in Iris We formalize a circular doubly linked list in Coq/Iris using separation logic. We only verified synchronous list operations. This chapter demonstrates the use of separation logic to reason about locations stored on a heap. To our knowledge this is the first interactive verification of a circular list using separation logic.
  2. Deduction rules of ▷ We study the model of plain step-indexed propositions without resources, a basic interpretation of the ▷ modality. We determine a complete set of deductions, and formalize an algorithm that checks a finite number of potential counterexamples in Coq, proving decidability and completeness.
Files (770.4 kB)
Name Size
circular_list.v
md5:1260e4a89e0fa841fa7977d023be9f4b
14.0 kB Download
completeness.v
md5:2b8a7c9139d7641d002eaaf211e55896
33.5 kB Download
report.pdf
md5:2a5fc0b12691e5df53da83d06ed42be8
434.5 kB Download
slides.pdf
md5:775e57183f24aa662df60ff32c3d37f8
288.4 kB Download
121
57
views
downloads
All versions This version
Views 12186
Downloads 5731
Data volume 21.5 MB11.0 MB
Unique views 9979
Unique downloads 3622

Share

Cite as