276 research outputs found
Implementing and reasoning about hash-consed data structures in Coq
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 generality of our
solutions by applying them to other examples of hash-consed data structures
SASLOG : Lazy Evaluation Meets Backtracking
We describe a combined functional / logic programming language SASLOG which contains Turner’s SASL, a fully lazy, higher-order functional language, and pure Prolog as subsets. Our integration is symmetric, i.e. functional terms can appear in the logic part of the program and v.v. Exploiting the natural correspondence between backtracking and lazy streams yields an elegant solution to the problem of transferring alternative variable bindings to the calling functional part of the program.
We replace the rewriting approach to function evaluation by combinator graph reduction, thereby regaining computational efficiency and the structure sharing properties. Our solution is equally well suited to a fixed combinator set and to a super combinator implementation. In the paper we use Turner's fixed combinator set
On the characterization of models of H*: The semantical aspect
We give a characterization, with respect to a large class of models of
untyped lambda-calculus, of those models that are fully abstract for
head-normalization, i.e., whose equational theory is H* (observations for head
normalization). An extensional K-model is fully abstract if and only if it
is hyperimmune, {\em i.e.}, not well founded chains of elements of D cannot be
captured by any recursive function.
This article, together with its companion paper, form the long version of
[Bre14]. It is a standalone paper that presents a purely semantical proof of
the result as opposed to its companion paper that presents an independent and
purely syntactical proof of the same result
- …