Results 1  10
of
287
Fresh Logic
 Journal of Applied Logic
, 2007
"... Abstract. The practice of firstorder logic is replete with metalevel concepts. Most notably there are metavariables ranging over formulae, variables, and terms, and properties of syntax such as alphaequivalence, captureavoiding substitution and assumptions about freshness of variables with resp ..."
Abstract

Cited by 219 (28 self)
 Add to MetaCart
(Show Context)
Abstract. The practice of firstorder logic is replete with metalevel concepts. Most notably there are metavariables ranging over formulae, variables, and terms, and properties of syntax such as alphaequivalence, captureavoiding substitution and assumptions about freshness of variables with respect to metavariables. We present oneandahalfthorder logic, in which these concepts are made explicit. We exhibit both sequent and algebraic specifications of oneandahalfthorder logic derivability, show them equivalent, show that the derivations satisfy cutelimination, and prove correctness of an interpretation of firstorder logic within it. We discuss the technicalities in a wider context as a casestudy for nominal algebra, as a logic in its own right, as an algebraisation of logic, as an example of how other systems might be treated, and also as a theoretical foundation
Nominal Logic: A First Order Theory of Names and Binding
 Information and Computation
, 2001
"... This paper formalises within firstorder logic some common practices in computer science to do with representing and reasoning about syntactical structures involving named bound variables (as opposed to nameless terms, explicit substitutions, or higher order abstract syntax). It introduces Nominal L ..."
Abstract

Cited by 219 (15 self)
 Add to MetaCart
(Show Context)
This paper formalises within firstorder logic some common practices in computer science to do with representing and reasoning about syntactical structures involving named bound variables (as opposed to nameless terms, explicit substitutions, or higher order abstract syntax). It introduces Nominal Logic, a version of firstorder manysorted logic with equality containing primitives for renaming via nameswapping and for freshness of names, from which a notion of binding can be derived. Its axioms express...
Engineering formal metatheory
 In ACM SIGPLANSIGACT Symposium on Principles of Programming Languages
, 2008
"... Machinechecked proofs of properties of programming languages have become a critical need, both for increased confidence in large and complex designs and as a foundation for technologies such as proofcarrying code. However, constructing these proofs remains a black art, involving many choices in th ..."
Abstract

Cited by 116 (11 self)
 Add to MetaCart
(Show Context)
Machinechecked proofs of properties of programming languages have become a critical need, both for increased confidence in large and complex designs and as a foundation for technologies such as proofcarrying code. However, constructing these proofs remains a black art, involving many choices in the formulation of definitions and theorems that make a huge cumulative difference in the difficulty of carrying out large formal developments. The representation and manipulation of terms with variable binding is a key issue. We propose a novel style for formalizing metatheory, combining locally nameless representation of terms and cofinite quantification of free variable names in inductive definitions of relations on terms (typing, reduction,...). The key technical insight is that our use of cofinite quantification obviates the need for reasoning about equivariance (the fact that free names can be renamed in derivations); in particular, the structural induction principles of relations
Nominal techniques in Isabelle/HOL
 Proceedings of the 20th International Conference on Automated Deduction (CADE20
, 2005
"... Abstract. In this paper we define an inductive set that is bijective with the ffequated lambdaterms. Unlike deBruijn indices, however, our inductive definition includes names and reasoning about this definition is very similar to informal reasoning on paper. For this we provide a structural induc ..."
Abstract

Cited by 101 (14 self)
 Add to MetaCart
Abstract. In this paper we define an inductive set that is bijective with the ffequated lambdaterms. Unlike deBruijn indices, however, our inductive definition includes names and reasoning about this definition is very similar to informal reasoning on paper. For this we provide a structural induction principle that requires to prove the lambdacase for fresh binders only. The main technical novelty of this work is that it is compatible with the axiomofchoice (unlike earlier nominal logic work by Pitts et al); thus we were able to implement all results in Isabelle/HOL and use them to formalise the standard proofs for ChurchRosser and strongnormalisation. Keywords. Lambdacalculus, nominal logic, structural induction, theoremassistants.
A Proof Theory for Generic Judgments
, 2003
"... this paper, we do this by adding the #quantifier: its role will be to declare variables to be new and of local scope. The syntax of the formula # x.B is like that for the universal and existential quantifiers. Following Church's Simple Theory of Types [Church 1940], formulas are given the ..."
Abstract

Cited by 77 (20 self)
 Add to MetaCart
(Show Context)
this paper, we do this by adding the #quantifier: its role will be to declare variables to be new and of local scope. The syntax of the formula # x.B is like that for the universal and existential quantifiers. Following Church's Simple Theory of Types [Church 1940], formulas are given the type o, and for all types # not containing o, # is a constant of type (# o) o. The expression # #x.B is ACM Transactions on Computational Logic, Vol. V, No. N, October 2003. 4 usually abbreviated as simply # x.B or as if the type information is either simple to infer or not important
Nominal Unification
 Theoretical Computer Science
, 2003
"... We present a generalisation of firstorder unification to the practically important case of equations between terms involving binding operations. A substitution of terms for variables solves such an equation if it makes the equated terms #equivalent, i.e. equal up to renaming bound names. For the a ..."
Abstract

Cited by 70 (28 self)
 Add to MetaCart
(Show Context)
We present a generalisation of firstorder unification to the practically important case of equations between terms involving binding operations. A substitution of terms for variables solves such an equation if it makes the equated terms #equivalent, i.e. equal up to renaming bound names. For the applications we have in mind, we must consider the simple, textual form of substitution in which names occurring in terms may be captured within the scope of binders upon substitution. We are able to take a `nominal' approach to binding in which bound entities are explicitly named (rather than using nameless, de Bruijnstyle representations) and yet get a version of this form of substitution that respects #equivalence and possesses good algorithmic properties. We achieve this by adapting an existing idea and introducing a key new idea. The existing idea is terms involving explicit substitutions of names for names, except that here we only use explicit permutations (bijective substitutions). The key new idea is that the unification algorithm should solve not only equational problems, but also problems about the freshness of names for terms. There is a simple generalisation of the classical firstorder unification algorithm to this setting which retains the latter's pleasant properties: unification problems involving #equivalence and freshness are decidable; and solvable problems possess most general solutions.
Alphastructural recursion and induction
 Journal of the ACM
, 2006
"... The nominal approach to abstract syntax deals with the issues of bound names and αequivalence by considering constructions and properties that are invariant with respect to permuting names. The use of permutations gives rise to an attractively simple formalisation of common, but often technically i ..."
Abstract

Cited by 56 (6 self)
 Add to MetaCart
(Show Context)
The nominal approach to abstract syntax deals with the issues of bound names and αequivalence by considering constructions and properties that are invariant with respect to permuting names. The use of permutations gives rise to an attractively simple formalisation of common, but often technically incorrect uses of structural recursion and induction for abstract syntax modulo αequivalence. At the heart of this approach is the notion of finitely supported mathematical objects. This paper explains the idea in as concrete a way as possible and gives a new derivation within higherorder logic of principles of αstructural recursion and induction for αequivalence classes from the ordinary versions of these principles for abstract syntax trees.
A proof theory for generic judgments: An extended abstract
 In LICS 2003
, 2003
"... A powerful and declarative means of specifying computations containing abstractions involves metalevel, universally quantified generic judgments. We present a proof theory for such judgments in which signatures are associated to each sequent (used to account for eigenvariables of the sequent) and t ..."
Abstract

Cited by 56 (21 self)
 Add to MetaCart
(Show Context)
A powerful and declarative means of specifying computations containing abstractions involves metalevel, universally quantified generic judgments. We present a proof theory for such judgments in which signatures are associated to each sequent (used to account for eigenvariables of the sequent) and to each formula in the sequent (used to account for generic variables locally scoped over the formula). A new quantifier, ∇, is introduced to explicitly manipulate the local signature. Intuitionistic logic extended with ∇ satisfies cutelimination even when the logic is additionally strengthened with a proof theoretic notion of definitions. The resulting logic can be used to encode naturally a number of examples involving name abstractions, and we illustrate using the πcalculus and the encoding of objectlevel provability.
AlphaProlog: A Logic Programming Language with Names, Binding, and AlphaEquivalence
, 2004
"... There are two wellknown approaches to programming with names, binding, and equivalence up to consistent renaming: representing names and bindings as concrete identifiers in a firstorder language (such as Prolog), or encoding names and bindings as variables and abstractions in a higherorder langua ..."
Abstract

Cited by 55 (10 self)
 Add to MetaCart
There are two wellknown approaches to programming with names, binding, and equivalence up to consistent renaming: representing names and bindings as concrete identifiers in a firstorder language (such as Prolog), or encoding names and bindings as variables and abstractions in a higherorder language (such as LambdaProlog). However, both approaches have drawbacks: the former often involves stateful namegeneration and requires manual definitions for alphaequivalence and captureavoiding substitution, and the latter is semantically very complicated, so reasoning about programs written using either approach can be very di#cult. Gabbay and Pitts have developed a new approach to encoding abstract syntax with binding based on primitive operations of nameswapping and freshness. This paper presents AlphaProlog, a logic programming language that uses this approach, along with several illustrative example programs and an operational semantics.
MetaProgramming with Names and Necessity
, 2002
"... Metaprogramming is a discipline of writing programs in a certain programming language that generate, manipulate or execute programs written in another language. In a typed setting, metaprogramming languages usually contain a modal type constructor to distinguish the level of object programs (which ..."
Abstract

Cited by 44 (7 self)
 Add to MetaCart
(Show Context)
Metaprogramming is a discipline of writing programs in a certain programming language that generate, manipulate or execute programs written in another language. In a typed setting, metaprogramming languages usually contain a modal type constructor to distinguish the level of object programs (which are the manipulated data) from the meta programs (which perform the computations). In functional programming, modal types of object programs generally come in two flavors: open and closed, depending on whether the expressions they classify may contain any free variables or not. Closed object programs can be executed at runtime by the meta program, but the computations over them are more rigid, and typically produce less e#cient residual code. Open object programs provide better inlining and partial evaluation, but once constructed, expressions of open modal type cannot be evaluated.