Mon 17 Jan 2022 10:20 - 10:45 at Salon III - Verified Data Structures and Semantics Chair(s): Jeehoon Kang

A transient data structure is a package of an ephemeral data structure, a persistent data structure, and fast conversions between them. In this paper, we describe the specification and proof of a transient stack and its iterators. This data structure is a scaled-down version of the general-purpose transient sequence data structure implemented in the OCaml library Sek. Internally, it relies on fixed-capacity arrays, or chunks, which can be shared between several ephemeral and persistent stacks. Dynamic tests are used to determine whether a chunk can be updated in place or must be copied: a chunk can be updated if it is uniquely owned or if the update is monotonic. Using CFML, which implements Separation Logic with Time Credits inside Coq, we verify the functional correctness and the amortized time complexity of this data structure and of its iterators. The specification of iterators describes what the operations on iterators do, how much they cost, and under what circumstances an iterator is invalidated.

Presentation Slides (slides.pdf)454KiB