2014
DOI: 10.1007/s10817-014-9306-0
|View full text |Cite
|
Sign up to set email alerts
|

Implementing and Reasoning About Hash-consed Data Structures in Coq

Abstract: We report on four different approaches to implementing hash-consing in Coq programs. The use cases include execution inside Coq, or execution of the extracted OCaml code. We explore the different trade-offs between faithful use of pristine extracted code, and code that is fine-tuned to make use of OCaml programming constructs not available in Coq. We discuss the possible consequences in terms of performances and guarantees. We use the running example of binary decision diagrams and then demonstrate the general… Show more

Help me understand this report
View preprint versions

Search citation statements

Order By: Relevance

Paper Sections

Select...
3
1
1

Citation Types

0
18
0

Year Published

2015
2015
2023
2023

Publication Types

Select...
5
2
1

Relationship

3
5

Authors

Journals

citations
Cited by 16 publications
(20 citation statements)
references
References 15 publications
0
18
0
Order By: Relevance
“…In Verasco, we already obtained good speedups by preserving preexisting sharing between the arguments of join operations. Going further, we could re-share a posteriori using general hash-consing [10].…”
Section: Discussionmentioning
confidence: 99%
“…In Verasco, we already obtained good speedups by preserving preexisting sharing between the arguments of join operations. Going further, we could re-share a posteriori using general hash-consing [10].…”
Section: Discussionmentioning
confidence: 99%
“…We note that in contrast to the problems we have considered in this paper, existing pure languages can construct ROBDDs from scratch and manipulate them without exponential blowup, e.g. by either of the two pure approaches used by [Braibant et al 2014] to implement them in Gallina. The important distinction is that in existing pure languages, one can easily build ROBDDs from the bottom up using an explicit graph representation, whereas if you start with a term whose tree size is astronomically large, there is nothing you can do without the ability to compare memory addresses of subterms.…”
Section: Discussionmentioning
confidence: 99%
“…This process is ad-hoc and unsafe in general, as the system itself cannot discern pure extraction instructions from impure ones. For example, Braibant et al [2014] implement a naive BDD type in Gallina, extract it to an OCaml type that stores a unique identifier, extract the Gallina constructors to OCaml łsmartž constructors that make use of a hash-consing library to guarantee maximal sharing, and extract the structural equality test on their BDD type to OCaml's physical (i.e. pointer) equality test.…”
Section: Discussionmentioning
confidence: 99%
See 1 more Smart Citation
“…To overcome both, we use an approach similar to the "smart constructor" approach advocated by Braibant et al [2014] for implementing verified reduced ordered binary decision diagrams in Coq.…”
Section: Cleanup Phasesmentioning
confidence: 99%