## Semi-Persistent Data Structures (2007)

### Cached

### Download Links

- [www.lri.fr]
- [www.lri.fr]
- [www.lri.fr]
- [www.lri.fr]
- [www.lri.fr]
- DBLP

### Other Repositories/Bibliography

Citations: | 4 - 1 self |

### BibTeX

@TECHREPORT{Conchon07semi-persistentdata,

author = {Sylvain Conchon and Jean-christophe Filliâtre},

title = {Semi-Persistent Data Structures},

institution = {},

year = {2007}

}

### OpenURL

### Abstract

A data structure is said to be persistent when any update operation returns a new structure without altering the old version. This paper introduces a new notion of persistence, called semi-persistence, where only ancestors of the most recent version can be accessed or updated. Making a data structure semi-persistent may improve its time and space complexity. This is of particular interest in backtracking algorithms manipulating persistent data structures, where this property is usually satisfied. We propose a proof system to statically check the valid use of semi-persistent data structures. It requires a few annotations from the user and then generates proof obligations that are automatically discharged by a dedicated decision procedure. Additionally, we give some examples of semi-persistent data structures (arrays, lists and hash tables). 1

### Citations

1455 |
A Discipline of Programming
- Dijkstra
- 1976
(Show Context)
Citation Context ...tructure. By validity, we mean being an ancestor of the newest version. Then we compute a set of proof obligations which express the correctness of programs using a weakest precondition-like calculus =-=[6]-=-. These obligations lie in a decidable logical fragment, for which we provide a sound and complete decision procedure. Thus we end up with an almost automatic way of checking the legal use of semi-per... |

470 | The Spec# programming system: An overview - Barnett, Leino, et al. |

249 | Making data structures persistent
- Driscoll, Sarnak, et al.
- 1989
(Show Context)
Citation Context ...5]. Yet this notion is more general and the exact meaning of persistent is observationally immutable. Driscoll et al. even proposed systematic techniques to make imperative data structures persistent =-=[7]-=-. In particular, they distinguish partial persistence, where all versions can be accessed but only the newest can be updated, from full persistence where any version can be accessed or updated. In thi... |

234 | Purely Functional Data Structures
- Okasaki
- 1999
(Show Context)
Citation Context ... structure is said to be persistent when any update operation returns a new structure without altering the old version. In purely applicative programming, data structures are automatically persistent =-=[15]-=-. Yet this notion is more general and the exact meaning of persistent is observationally immutable. Driscoll et al. even proposed systematic techniques to make imperative data structures persistent [7... |

153 | Typed assembly language
- Morrisett
- 2002
(Show Context)
Citation Context ...tent versions that become invalid are precisely those which could be stack-allocated, but it is not the case as illustrated by example g above. Second, works on stack analysis to ensure memory safety =-=[13, 17, 18]-=- provide methods to check the consistent use of push and pop operations. However, these approaches are not precise enough to distinguish between two sibling versions (of a given semi-persistent data s... |

85 | The Why/Krakatoa/Caduceus platform for deductive program verification - Filliâtre, Marché - 2007 |

63 | Escape analysis: Correctness proof, implementation and experimental results, in
- Blanchet
- 1998
(Show Context)
Citation Context ...omehow connected to our work, either because they are related to some kind of stack analysis, or because they are providing decision procedure for reachability issues. First, works on escape analysis =-=[10, 4]-=- address the problem of stack-allocating values; we may think that semi-persistent versions that become invalid are precisely those which could be stack-allocated, but it is not the case as illustrate... |

54 |
Verifying reachability invariants of linked structures
- Nelson
- 1983
(Show Context)
Citation Context ...sistent data structure) which are both upper in the stack. Regarding the decidability of our proof obligations, our approach is similar to other works regarding reachability in linked data structures =-=[14, 3, 16]-=-. However, our logic is much simpler and we provide a specific decision procedure. Finally, we can mention Knuth’s dancing links [11] as an example of a data structure specifically designed for backtr... |

47 |
Implementation of the typed call-by-value lambda-calculus using a stack of regions
- Tofte, Talpin
- 1994
(Show Context)
Citation Context ...tent versions that become invalid are precisely those which could be stack-allocated, but it is not the case as illustrated by example g above. Second, works on stack analysis to ensure memory safety =-=[13, 17, 18]-=- provide methods to check the consistent use of push and pop operations. However, these approaches are not precise enough to distinguish between two sibling versions (of a given semi-persistent data s... |

43 |
Garrigue, Didier Rémy, and Jérôme Vouillon. The Objective Caml system, release 3.10, Documentation and user’s
- Leroy, Doligez, et al.
- 2007
(Show Context)
Citation Context ...ata Structures We present the implementation of semi-persistent arrays, lists and hash tables and benchmarks to show the benefits of semi-persistence. All these examples are written in Objective Caml =-=[12]-=-. 2.1 Arrays First we implement semi-persistent arrays, as described in the introduction of this paper. The interface is similar to persistent arrays: type α t val create : int → α → α t val get : α t... |

39 | A decidable logic for describing linked data structures
- Benedikt, Reps, et al.
- 1999
(Show Context)
Citation Context ...sistent data structure) which are both upper in the stack. Regarding the decidability of our proof obligations, our approach is similar to other works regarding reachability in linked data structures =-=[14, 3, 16]-=-. However, our logic is much simpler and we provide a specific decision procedure. Finally, we can mention Knuth’s dancing links [11] as an example of a data structure specifically designed for backtr... |

34 | Dancing Links
- Knuth
(Show Context)
Citation Context ...ther works regarding reachability in linked data structures [14, 3, 16]. However, our logic is much simpler and we provide a specific decision procedure. Finally, we can mention Knuth’s dancing links =-=[11]-=- as an example of a data structure specifically designed for backtracking algorithms; but it is still a traditional imperative solution where an explicit undo operation is performed in the main algori... |

19 | A theory of singly-linked lists and its extensible decision procedure
- Ranise, Zarba
- 2006
(Show Context)
Citation Context ...sistent data structure) which are both upper in the stack. Regarding the decidability of our proof obligations, our approach is similar to other works regarding reachability in linked data structures =-=[14, 3, 16]-=-. However, our logic is much simpler and we provide a specific decision procedure. Finally, we can mention Knuth’s dancing links [11] as an example of a data structure specifically designed for backtr... |

17 | Certifying compilation for a language with stack allocation
- Jia, Spalding, et al.
- 2005
(Show Context)
Citation Context ...tent versions that become invalid are precisely those which could be stack-allocated, but it is not the case as illustrated by example g above. Second, works on stack analysis to ensure memory safety =-=[13, 17, 18]-=- provide methods to check the consistent use of push and pop operations. However, these approaches are not precise enough to distinguish between two sibling versions (of a given semi-persistent data s... |

16 | Shallow binding makes functional arrays fast
- Baker
- 1991
(Show Context)
Citation Context ...ersistent data structure can be more efficient than its fully persistent counterpart, both in time and space. Let us illustrate this fact on an example. We consider persistent arrays as introduced in =-=[1]-=-. The basic idea is to use an imperative array for the newest version of the persistent array and indirections for old versions. For instance, starting with an array a0 initialized with 0, and perform... |

9 |
A type-based analysis for stack allocation in functional languages
- Hannan
- 1995
(Show Context)
Citation Context ...omehow connected to our work, either because they are related to some kind of stack analysis, or because they are providing decision procedure for reachability issues. First, works on escape analysis =-=[10, 4]-=- address the problem of stack-allocating values; we may think that semi-persistent versions that become invalid are precisely those which could be stack-allocated, but it is not the case as illustrate... |

3 |
Conchon and Evelyne Contejean. Ergo: A Decision Procedure for Program Verification. http://ergo.lri.fr
- Sylvain
(Show Context)
Citation Context ...obtained by the constraint synthesis defined in Section 4.2. The Why tool outputs proof obligations in the native syntax of various existing provers. In particular, these formulas can be sent to Ergo =-=[5]-=-, an automatic prover for first-order logic which combines congruence closure with various built-in decision procedures. We first simply axiomatized theory T using (A1)–(A3), which proved to be powerf... |

3 |
The Why Verification Tool,” http://why.lri.fr
- Filliâtre
(Show Context)
Citation Context ... only introduced to simplify the proof above. 4.6 Implementation We have implemented the whole framework of semi-persistence. The implementation relies on an existing proof obligations generator, Why =-=[8]-=-. This tool takes annotated firstorder imperative programs as input and uses a traditional weakest precondition calculus to generate proof obligations. The language we use in this paper is actually a ... |

3 |
Conchon and Jean-Christophe Filliâtre. Semi-Persistent Data Structures
- Sylvain
- 2007
(Show Context)
Citation Context ...fines the proof system which checks the valid use of semi-persistent data structures. Section 5 concludes with possible extensions. A long version of this paper, including proofs, is available online =-=[7]-=-. 2 Examples of Semi-Persistent Data Structures We explain how to implement semi-persistent arrays, lists and hash tables and we present benchmarks to show the benefits of semi-persistence.sArrays. Se... |

2 |
Conchon and Jean-Christophe Filliâtre. A persistent union-find data structure
- Sylvain
- 2007
(Show Context)
Citation Context ...t is really easy to turn these persistent arrays into a semi-persistent data structure, which is more efficient since we save some pointer assignments. This example is investigated in more details in =-=[6]-=-. Lists. As a second example, we consider an immutable data structure which we make semi-persistent. The simplest and most popular example is the list data structure. To make it semi-persistent, the i... |