17 research outputs found
Recommended from our members
Nominal techniques
This is the author accepted manuscript. The final version is available from the Association for Computing Machinery via http://dx.doi.org/10.1145/2893582.2893594
Programming languages abound with features making use of names in various ways. There is a mathematical foundation for the semantics of such features which uses groups of permutations of names and the notion of the
support
of an object with respect to the action of such a group. The relevance of this kind of mathematics for the semantics of names is perhaps not immediately obvious. That it is relevant and useful has emerged over the last 15 years or so in a body of work that has acquired its own name:
nominal techniques.
At the same time, the application of these techniques has broadened from semantics to computation theory in general. This article introduces the subject and is based upon a tutorial at LICS-ICALP 2015 [Pitts 2015a].
</jats:p
Rensets and renaming-based recursion for syntax with bindings extended version
We introduce renaming-enriched sets (rensets for short), which are algebraic structures axiomatizing fundamental properties of renaming (also known as variable-for-variable substitution) on syntax with bindings. Rensets compare favorably in some respects with the well-known foundation based on nominal sets. In particular, renaming is a more fundamental operator than the nominal swapping operator and enjoys a simpler, equationally expressed relationship with the variable-freshness predicate. Together with some natural axioms matching properties of the syntactic constructors, rensets yield a truly minimalistic characterization of λ
-calculus terms as an abstract datatype—one involving an infinite set of unconditional equations, referring only to the most fundamental term operators: the constructors and renaming. This characterization yields a recursion principle, which (similarly to the case of nominal sets) can be improved by incorporating Barendregt’s variable convention. When interpreting syntax in semantic domains, our renaming-based recursor is easier to deploy than the nominal recursor. Our results have been validated with the proof assistant Isabelle/HOL
Rensets and renaming-based recursion for syntax with bindings
I introduce renaming-enriched sets (rensets for short), which are algebraic structures axiomatizing fundamental properties of renaming (also known as variable-for-variable substitution) on syntax with bindings. Rensets compare favorably in some respects with the well-known foundation based on nominal sets. In particular, renaming is a more fundamental operator than the nominal swapping operator and enjoys a simpler, equationally expressed relationship with the variable-freshness predicate. Together with some natural axioms matching properties of the syntactic constructors, rensets yield a truly minimalistic characterization of λ-calculus terms as an abstract datatype – one involving an infinite set of unconditional equations, referring only to the most fundamental term operators: the constructors and renaming. This characterization yields a recursion principle, which (similarly to the case of nominal sets) can be improved by incorporating Barendregt’s variable convention. When interpreting syntax in semantic domains, my renaming-based recursor is easier to deploy than the nominal recursor. My results have been validated with the proof assistant Isabelle/HOL
Nominal Logic Programming
Nominal logic is an extension of first-order logic which provides a simple
foundation for formalizing and reasoning about abstract syntax modulo
consistent renaming of bound names (that is, alpha-equivalence). This article
investigates logic programming based on nominal logic. We describe some typical
nominal logic programs, and develop the model-theoretic, proof-theoretic, and
operational semantics of such programs. Besides being of interest for ensuring
the correct behavior of implementations, these results provide a rigorous
foundation for techniques for analysis and reasoning about nominal logic
programs, as we illustrate via examples.Comment: 46 pages; 19 page appendix; 13 figures. Revised journal submission as
of July 23, 200
Hybrid - a definitional two-level approach to reasoning with higher-order abstract syntax
Combining higher-order abstract syntax and (co)-induction in a logical
framework is well known to be problematic.We describe the theory and the practice
of a tool called Hybrid, within Isabelle/HOL and Coq, which aims to address many
of these difficulties. It allows object logics to be represented using higher-order
abstract syntax, and reasoned about using tactical theorem proving and principles
of (co)induction. Moreover, it is definitional, which guarantees consistency within
a classical type theory. The idea is to have a de Bruijn representation of \u3bb-terms
providing a definitional layer that allows the user to represent object languages using
higher-order abstract syntax, while offering tools for reasoning about them at the
higher level. In this paper we describe how to use Hybrid in a multi-level reasoning
fashion, similar in spirit to other systems such as Twelf and Abella. By explicitly
referencing provability in a middle layer called a specification logic, we solve the
problem of reasoning by (co)induction in the presence of non-stratifiable hypothetical
judgments, which allow very elegant and succinct specifications of object logic
inference rules. We first demonstrate the method on a simple example, formally
proving type soundness (subject reduction) for a fragment of a pure functional
language, using a minimal intuitionistic logic as the specification logic. We then
prove an analogous result for a continuation-machine presentation of the operational semantics of the same language, encoded this time in an ordered linear logic that
serves as the specification layer. This example demonstrates the ease with which
we can incorporate new specification logics, and also illustrates a significantly more
complex object logic whose encoding is elegantly expressed using features of the new
specification logic
Extensions of nominal terms
This thesis studies two major extensions of nominal terms. In particular, we
study an extension with -abstraction over nominal unknowns and atoms, and an
extension with an arguably better theory of freshness and -equivalence.
Nominal terms possess two levels of variable: atoms a represent variable symbols,
and unknowns X are `real' variables. As a syntax, they are designed to facilitate
metaprogramming; unknowns are used to program on syntax with variable symbols.
Originally, the role of nominal terms was interpreted narrowly. That is, they
were seen solely as a syntax for representing partially-speci ed abstract syntax with
binding.
The main motivation of this thesis is to extend nominal terms so that they can
be used for metaprogramming on proofs, programs, etc. and not just for metaprogramming
on abstract syntax with binding. We therefore extend nominal terms
in two signi cant ways: adding -abstraction over nominal unknowns and atoms|
facilitating functional programing|and improving the theory of -equivalence that
nominal terms possesses.
Neither of the two extensions considered are trivial. The capturing substitution
action of nominal unknowns implies that our notions of scope, intuited from working
with syntax possessing a non-capturing substitution, such as the -calculus, is no
longer applicable. As a result, notions of -abstraction and -equivalence must be
carefully reconsidered.
In particular, the rst research contribution of this thesis is the two-level -
calculus, intuitively an intertwined pair of -calculi. As the name suggests, the
two-level -calculus has two level of variable, modelled by nominal atoms and unknowns,
respectively. Both levels of variable can be -abstracted, and requisite
notions of -reduction are provided. The result is an expressive context-calculus.
The traditional problems of handling -equivalence and the failure of commutation
between instantiation and -reduction in context-calculi are handled through the
use of two distinct levels of variable, swappings, and freshness side-conditions on
unknowns, i.e. `nominal technology'.
The second research contribution of this thesis is permissive nominal terms,
an alternative form of nominal term. They retain the `nominal' rst-order
avour
of nominal terms (in fact, their grammars are almost identical) but forego the use
of explicit freshness contexts. Instead, permissive nominal terms label unknowns
with a permission sort, where permission sorts are in nite and coin nite sets of
atoms. This in nite-coin nite nature means that permissive nominal terms recover
two properties|we call them the `always-fresh' and `always-rename' properties
that nominal terms lack. We argue that these two properties bring the theory of
-equivalence on permissive nominal terms closer to `informal practice'.
The reader may consider -abstraction and -equivalence so familiar as to be
`solved problems'. The work embodied in this thesis stands testament to the fact
that this isn't the case. Considering -abstraction and -equivalence in the context
of two levels of variable poses some new and interesting problems and throws light
on some deep questions related to scope and binding
Programming Languages and Systems
This open access book constitutes the proceedings of the 31st European Symposium on Programming, ESOP 2022, which was held during April 5-7, 2022, in Munich, Germany, as part of the European Joint Conferences on Theory and Practice of Software, ETAPS 2022. The 21 regular papers presented in this volume were carefully reviewed and selected from 64 submissions. They deal with fundamental issues in the specification, design, analysis, and implementation of programming languages and systems
Nominal Recursors as Epi-Recursors: Extended Technical Report
We study nominal recursors from the literature on syntax with bindings and
compare them with respect to expressiveness. The term "nominal" refers to the
fact that these recursors operate on a syntax representation where the names of
bound variables appear explicitly, as in nominal logic. We argue that nominal
recursors can be viewed as epi-recursors, a concept that captures abstractly
the distinction between the constructors on which one actually recurses, and
other operators and properties that further underpin recursion.We develop an
abstract framework for comparing epi-recursors and instantiate it to the
existing nominal recursors, and also to several recursors obtained from them by
cross-pollination. The resulted expressiveness hierarchies depend on how
strictly we perform this comparison, and bring insight into the relative merits
of different axiomatizations of syntax. We also apply our methodology to
produce an expressiveness hierarchy of nominal corecursors, which are
principles for defining functions targeting infinitary non-well-founded terms
(which underlie lambda-calculus semantics concepts such as B\"ohm trees). Our
results are validated with the Isabelle/HOL theorem prover