Specification and Verification of a Transient Stack - INRIA - Institut National de Recherche en Informatique et en Automatique Accéder directement au contenu
Communication Dans Un Congrès Année : 2022

Specification and Verification of a Transient Stack

Résumé

A transient data structure is a package of an ephemeral data structure, a persistent data structure, and fast conversions between them. 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. Our verification effort covers iterators, which involve direct pointers to internal chunks. The specification of iterators describes what the operations on iterators do, how much they cost, and under what circumstances an iterator is invalidated.
Fichier principal
Vignette du fichier
transient-stack.pdf (698.4 Ko) Télécharger le fichier
Origine : Fichiers produits par l'(les) auteur(s)

Dates et versions

hal-03472028 , version 1 (10-12-2021)

Identifiants

Citer

Alexandre Moine, Arthur Charguéraud, François Pottier. Specification and Verification of a Transient Stack. CPP 2022 - 11th ACM SIGPLAN International Conference on Certified Programs and Proofs, Jan 2022, Philadelphia, United States. ⟨10.1145/3497775.3503677⟩. ⟨hal-03472028⟩

Relations

292 Consultations
162 Téléchargements

Altmetric

Partager

Gmail Facebook X LinkedIn More