Information and Computation - Semantics of Data Types
Making data structures persistent
Journal of Computer and System Sciences - 18th Annual ACM Symposium on Theory of Computing (STOC), May 28-30, 1986
Introduction to algorithms
Shallow binding makes functional arrays fast
ACM SIGPLAN Notices
Fully persistent arrays for efficient incremental updates and voluminous reads
ESOP'92 Symposium proceedings on 4th European symposium on programming
Purely functional data structures
Purely functional data structures
Efficiency of a Good But Not Linear Set Union Algorithm
Journal of the ACM (JACM)
Fast Decision Procedures Based on Congruence Closure
Journal of the ACM (JACM)
Deciding Combinations of Theories
Journal of the ACM (JACM)
Communications of the ACM
Data Structures and Algorithms
Data Structures and Algorithms
Inductive Definitions in the system Coq - Rules and Properties
TLCA '93 Proceedings of the International Conference on Typed Lambda Calculi and Applications
Interactive Theorem Proving and Program Development
Interactive Theorem Proving and Program Development
Copy-on-write in the PHP language
Proceedings of the 36th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Experience report: OCaml for an industrial-strength static analysis framework
Proceedings of the 14th ACM SIGPLAN international conference on Functional programming
Semi-persistent data structures
ESOP'08/ETAPS'08 Proceedings of the Theory and practice of software, 17th European conference on Programming languages and systems
Formally certified stable marriages
Proceedings of the 48th Annual Southeast Regional Conference
(Nominal) unification by recursive descent with triangular substitutions
ITP'10 Proceedings of the First international conference on Interactive Theorem Proving
Extending coq with imperative features and its application to SAT verification
ITP'10 Proceedings of the First international conference on Interactive Theorem Proving
An efficient coq tactic for deciding kleene algebras
ITP'10 Proceedings of the First international conference on Interactive Theorem Proving
versat: a verified modern SAT solver
VMCAI'12 Proceedings of the 13th international conference on Verification, Model Checking, and Abstract Interpretation
ITP'13 Proceedings of the 4th international conference on Interactive Theorem Proving
Hi-index | 0.00 |
The problem of disjoint sets, also known as union-find, consists in maintaining a partition of a finite set within a data structure. This structure provides two operations: a function find returning the class of an element and a function union merging two classes. An optimal and imperative solution is known since 1975. However, the imperative nature of this data structure may be a drawback when it is used in a backtracking algorithm. This paper details the implementation of a persistent union-find data structure as efficient as its imperative counterpart. To achieve this result, our solution makes heavy use of imperative features and thus it is a significant example of a data structure whose side effects are safely hidden behind a persistent interface. To strengthen this last claim, we also detail a formalization using the Coq proof assistant which shows both the correctness of our solution and its observational persistence.