Thunks and Debits in Separation Logic with Time Credits

被引:3
|
作者
Pottier, Francois [1 ]
Gueneau, Armael [2 ]
Jourdan, Jacques-Henri [3 ]
Mevel, Glen [2 ]
机构
[1] INRIA, Paris, France
[2] Univ Paris Saclay, CNRS, ENS Paris Saclay, INRIA,LMF, F-91190 Gif Sur Yvette, France
[3] Univ Paris Saclay, CNRS, ENS Paris Saclay, LMF, F-91190 Gif Sur Yvette, France
关键词
program verification; separation logic; time complexity;
D O I
10.1145/3632892
中图分类号
TP31 [计算机软件];
学科分类号
081202 ; 0835 ;
摘要
A thunk is a mutable data structure that offers a simple memoization service: it stores either a suspended computation or the result of this computation. Okasaki [1999] presents many data structures that exploit thunks to achieve good amortized time complexity. He analyzes their complexity by associating a debit with every thunk. A debit can be paid off in several increments; a thunk whose debit has been fully paid off can be forced. Quite strikingly, a debit is associated also with future thunks, which do not yet exist in memory. Some of the debit of a faraway future thunk can be transferred to a nearer future thunk. We present a complete machine-checked reconstruction of Okasaki's reasoning rules in Iris($), a rich separation logic with time credits. We demonstrate the applicability of the rules by verifying a few operations on streams as well as several of Okasaki's data structures, namely the physicist's queue, implicit queues, and the banker's queue.
引用
收藏
页数:27
相关论文
共 50 条