3,335 research outputs found
Term Graph Representations for Cyclic Lambda-Terms
We study various representations for cyclic lambda-terms as higher-order or
as first-order term graphs. We focus on the relation between
`lambda-higher-order term graphs' (lambda-ho-term-graphs), which are
first-order term graphs endowed with a well-behaved scope function, and their
representations as `lambda-term-graphs', which are plain first-order term
graphs with scope-delimiter vertices that meet certain scoping requirements.
Specifically we tackle the question: Which class of first-order term graphs
admits a faithful embedding of lambda-ho-term-graphs in the sense that: (i) the
homomorphism-based sharing-order on lambda-ho-term-graphs is preserved and
reflected, and (ii) the image of the embedding corresponds closely to a natural
class (of lambda-term-graphs) that is closed under homomorphism?
We systematically examine whether a number of classes of lambda-term-graphs
have this property, and we find a particular class of lambda-term-graphs that
satisfies this criterion. Term graphs of this class are built from application,
abstraction, variable, and scope-delimiter vertices, and have the
characteristic feature that the latter two kinds of vertices have back-links to
the corresponding abstraction.
This result puts a handle on the concept of subterm sharing for higher-order
term graphs, both theoretically and algorithmically: We obtain an easily
implementable method for obtaining the maximally shared form of
lambda-ho-term-graphs. Also, we open up the possibility to pull back properties
from first-order term graphs to lambda-ho-term-graphs. In fact we prove this
for the property of the sharing-order successors of a given term graph to be a
complete lattice with respect to the sharing order.
This report extends the paper with the same title
(http://arxiv.org/abs/1302.6338v1) in the proceedings of the workshop TERMGRAPH
2013.Comment: 35 pages. report extending proceedings article on arXiv:1302.6338
(changes with respect to version v2: added section 8, modified Proposition
2.4, added Remark 2.5, added Corollary 7.11, modified figures in the
conclusion
Nested Term Graphs (Work In Progress)
We report on work in progress on 'nested term graphs' for formalizing
higher-order terms (e.g. finite or infinite lambda-terms), including those
expressing recursion (e.g. terms in the lambda-calculus with letrec). The idea
is to represent the nested scope structure of a higher-order term by a nested
structure of term graphs.
Based on a signature that is partitioned into atomic and nested function
symbols, we define nested term graphs both in a functional representation, as
tree-like recursive graph specifications that associate nested symbols with
usual term graphs, and in a structural representation, as enriched term graph
structures. These definitions induce corresponding notions of bisimulation
between nested term graphs. Our main result states that nested term graphs can
be implemented faithfully by first-order term graphs.
keywords: higher-order term graphs, context-free grammars, cyclic
lambda-terms, higher-order rewrite systemsComment: In Proceedings TERMGRAPH 2014, arXiv:1505.0681
Maximal Sharing in the Lambda Calculus with letrec
Increasing sharing in programs is desirable to compactify the code, and to
avoid duplication of reduction work at run-time, thereby speeding up execution.
We show how a maximal degree of sharing can be obtained for programs expressed
as terms in the lambda calculus with letrec. We introduce a notion of `maximal
compactness' for lambda-letrec-terms among all terms with the same infinite
unfolding. Instead of defined purely syntactically, this notion is based on a
graph semantics. lambda-letrec-terms are interpreted as first-order term graphs
so that unfolding equivalence between terms is preserved and reflected through
bisimilarity of the term graph interpretations. Compactness of the term graphs
can then be compared via functional bisimulation.
We describe practical and efficient methods for the following two problems:
transforming a lambda-letrec-term into a maximally compact form; and deciding
whether two lambda-letrec-terms are unfolding-equivalent. The transformation of
a lambda-letrec-term into maximally compact form proceeds in three
steps:
(i) translate L into its term graph ; (ii) compute the maximally
shared form of as its bisimulation collapse ; (iii) read back a
lambda-letrec-term from the term graph with the property . This guarantees that and have the same unfolding, and that
exhibits maximal sharing.
The procedure for deciding whether two given lambda-letrec-terms and
are unfolding-equivalent computes their term graph interpretations and , and checks whether these term graphs are bisimilar.
For illustration, we also provide a readily usable implementation.Comment: 18 pages, plus 19 pages appendi
Cyclic Datatypes modulo Bisimulation based on Second-Order Algebraic Theories
Cyclic data structures, such as cyclic lists, in functional programming are
tricky to handle because of their cyclicity. This paper presents an
investigation of categorical, algebraic, and computational foundations of
cyclic datatypes. Our framework of cyclic datatypes is based on second-order
algebraic theories of Fiore et al., which give a uniform setting for syntax,
types, and computation rules for describing and reasoning about cyclic
datatypes. We extract the "fold" computation rules from the categorical
semantics based on iteration categories of Bloom and Esik. Thereby, the rules
are correct by construction. We prove strong normalisation using the General
Schema criterion for second-order computation rules. Rather than the fixed
point law, we particularly choose Bekic law for computation, which is a key to
obtaining strong normalisation. We also prove the property of "Church-Rosser
modulo bisimulation" for the computation rules. Combining these results, we
have a remarkable decidability result of the equational theory of cyclic data
and fold.Comment: 38 page
Initial Algebra Semantics for Cyclic Sharing Tree Structures
Terms are a concise representation of tree structures. Since they can be
naturally defined by an inductive type, they offer data structures in
functional programming and mechanised reasoning with useful principles such as
structural induction and structural recursion. However, for graphs or
"tree-like" structures - trees involving cycles and sharing - it remains
unclear what kind of inductive structures exists and how we can faithfully
assign a term representation of them. In this paper we propose a simple term
syntax for cyclic sharing structures that admits structural induction and
recursion principles. We show that the obtained syntax is directly usable in
the functional language Haskell and the proof assistant Agda, as well as
ordinary data structures such as lists and trees. To achieve this goal, we use
a categorical approach to initial algebra semantics in a presheaf category.
That approach follows the line of Fiore, Plotkin and Turi's models of abstract
syntax with variable binding
Logic Programming and Logarithmic Space
We present an algebraic view on logic programming, related to proof theory
and more specifically linear logic and geometry of interaction. Within this
construction, a characterization of logspace (deterministic and
non-deterministic) computation is given via a synctactic restriction, using an
encoding of words that derives from proof theory.
We show that the acceptance of a word by an observation (the counterpart of a
program in the encoding) can be decided within logarithmic space, by reducing
this problem to the acyclicity of a graph. We show moreover that observations
are as expressive as two-ways multi-heads finite automata, a kind of pointer
machines that is a standard model of logarithmic space computation
Expressibility in the Lambda Calculus with Letrec
We investigate the relationship between finite terms in lambda-letrec, the
lambda calculus with letrec, and the infinite lambda terms they express. As
there are easy examples of lambda-terms that, intuitively, are not unfoldings
of terms in lambda-letrec, we consider the question: How can those infinite
lambda terms be characterised that are lamda-letrec-expressible in the sense
that they can be obtained as infinite unfoldings of terms in lambda-letrec?
For 'observing' infinite lambda-terms through repeated 'experiments' carried
out at the head of the term we introduce two rewrite systems (with rewrite
relations) -reg-> and -reg+-> that decompose the term, and produce 'generated
subterms' in two notions. Thereby the sort of the step can be observed as well
as its target, a generated subterm. In both systems there are four sorts of
decomposition steps: -lambda-> steps (decomposing a lambda-abstraction), -@0>
and -@1> steps (decomposing an application into its function and argument), and
respectively, -del-> steps (delimiting the scope of an abstraction, for
-reg->), and -S-> (delimiting of scopes, for -reg+->). These steps take place
on infinite lambda-terms furnished with a leading prefix of abstractions for
gathering previously encountered lambda-abstractions and keeping the generated
subterms closed. We call an infinite lambda-term 'regular'/'strongly regular'
if its set of -reg-> -reachable / -reg-> -reachable generated subterms is
finite. Furthermore, we analyse the binding structure of lambda-terms with the
concept of 'binding-capturing chain'.
Using these concepts, we answer the question above by providing two
characterisations of lambda-letrec-expressibility. For all infinite
lambda-terms M, the following statements are equivalent: (i) M is
lambda-letrec-expressible; (ii) M is strongly regular; (iii) M is regular, and
it only has finite binding-capturing chains.Comment: 79 pages, 25 figure
- …