• Documents
  • Authors
  • Tables
  • Other Seers ▼
    RefSeer AckSeer CollabSeer SeerSeer
  • Log in
  • Sign up
  • MetaCart

CiteSeerX logo

Advanced Search Include Citations
Advanced Search Include Citations | Disambiguate

Alpha-Prolog: A Logic Programming Language with Names, Binding, and Alpha-Equivalence (2004)

by James Cheney, Christian Urban
Add To MetaCart

Tools

Sorted by:
Results 1 - 10 of 21
Next 10 →

Ott: Effective tool support for the working semanticist

by Peter Sewell, Francesco Zappa Nardelli , Scott Owens, Gilles Peskine, Thomas Ridge, Susmit Sarkar, Rok Strnisa - PROC. ICFP , 2007
"... It is rare to give a semantic definition of a full-scale programming language, despite the many potential benefits. Partly this is because the available metalanguages for expressing semantics -- usually either LATEX for informal mathematics, or the formal mathematics of a proof assistant -- make it ..."
Abstract - Cited by 32 (3 self) - Add to MetaCart
It is rare to give a semantic definition of a full-scale programming language, despite the many potential benefits. Partly this is because the available metalanguages for expressing semantics -- usually either LATEX for informal mathematics, or the formal mathematics of a proof assistant -- make it much harder than necessary to work with large definitions. We present a metalanguage specifically designed for this problem, and a tool,

Nominal Logic Programming

by James Robert Cheney, James Robert Cheney, Ph. D , 2004
"... Syntax The classical approach to encoding languages involving names and binding is to model language expressions as algebraic terms, represent names using some infinite datatype such as string, and represent both bindings and references as concrete strings. Algebraic datatypes have a very clear and ..."
Abstract - Cited by 20 (7 self) - Add to MetaCart
Syntax The classical approach to encoding languages involving names and binding is to model language expressions as algebraic terms, represent names using some infinite datatype such as string, and represent both bindings and references as concrete strings. Algebraic datatypes have a very clear and intuitive semantics based on many-sorted logic and algebraic specification [46] which supports reasoning by induction on the structure of terms.

A Simpler Proof Theory for Nominal Logic

by James Cheney - In FOSSACS 2005, number 3441 in LNCS , 2005
"... Nominal logic is a variant of first-order logic which provides support for reasoning about bound names in abstract syntax. A key feature of nominal logic is the new-quantifier, which quantifies over fresh names (names not appearing in any values considered so far). Previous attempts have been made ..."
Abstract - Cited by 19 (10 self) - Add to MetaCart
Nominal logic is a variant of first-order logic which provides support for reasoning about bound names in abstract syntax. A key feature of nominal logic is the new-quantifier, which quantifies over fresh names (names not appearing in any values considered so far). Previous attempts have been made to develop convenient rules for reasoning with the new-quantifier, but we argue that none of these attempts is completely satisfactory. In this paper we develop a new sequent calculus for nominal logic in which the rules for the newquantifier are much simpler than in previous attempts. We also prove several structural and metatheoretic properties, including cut-elimination, consistency, and conservativity with respect to Pitts' axiomatization of nominal logic; these proofs are considerably simpler for our system. 1

The Complexity of Equivariant Unification

by James Cheney - In Proceedings of the 31st International Colloquium on Automata, Languages and Programming (ICALP 2004), volume 3142 of LNCS
"... Nominal logic is a first-order theory of names and binding based on a primitive operation of swapping rather than substitution. Urban, Pitts, and Gabbay have developed a nominal unification algorithm that unifies terms up to nominal equality. However, because of nominal logic's equivariance principl ..."
Abstract - Cited by 19 (7 self) - Add to MetaCart
Nominal logic is a first-order theory of names and binding based on a primitive operation of swapping rather than substitution. Urban, Pitts, and Gabbay have developed a nominal unification algorithm that unifies terms up to nominal equality. However, because of nominal logic's equivariance principle, atomic formulas can be provably equivalent without being provably equal as terms, so resolution using nominal unification is sound but incomplete. For complete resolution, a more general form of unification called equivariant unification, or "unification up to a permutation" is required. Similarly, for rewrite rules expressed in nominal logic, a more general form of matching called equivariant matching is necessary. In this paper, we study the complexity of the decision problem for equivariant unification and matching. We show that these problems are NP-complete in general. However, when one of the terms is essentially first-order, equivariant and nominal unification coincide. This shows that equivariant unification can be performed efficiently in many interesting common cases: for example, anypurely first-order logic program or rewrite system can be run efficiently on nominal terms.

Scrap your Nameplate - Functional Pearl

by James Cheney
"... Recent research has shown how boilerplate code, or repetitive code for traversing datatypes, can be eliminated using generic programming techniques already available within some implementations of Haskell. One particularly intractable kind of boilerplate is nameplate, or code having to do with names ..."
Abstract - Cited by 15 (4 self) - Add to MetaCart
Recent research has shown how boilerplate code, or repetitive code for traversing datatypes, can be eliminated using generic programming techniques already available within some implementations of Haskell. One particularly intractable kind of boilerplate is nameplate, or code having to do with names, name-binding, and fresh name generation. One reason for the difficulty is that operations on data structures involving names, as usually implemented, are not regular instances of standard map, fold , or zip operations. However, in nominal abstract syntax, an alternative treatment of names and binding based on swapping, operations such as #-equivalence, capture-avoiding substitution, and free variable set functions are much better-behaved.

Mechanized metatheory model-checking

by James Cheney - In 9th International ACM SIGPLAN Symposium on Principles and Practice of Declarative Programming , 2007
"... The problem of mechanically formalizing and proving metatheoretic properties of programming language calculi, type systems, operational semantics, and related formal systems has received considerable attention recently. However, the dual problem of searching for errors in such formalizations has rec ..."
Abstract - Cited by 7 (0 self) - Add to MetaCart
The problem of mechanically formalizing and proving metatheoretic properties of programming language calculi, type systems, operational semantics, and related formal systems has received considerable attention recently. However, the dual problem of searching for errors in such formalizations has received comparatively little attention. In this paper, we consider the problem of bounded model-checking for metatheoretic properties of formal systems specified using nominal logic. In contrast to the current state of the art for metatheory verification, our approach is fully automatic, does not require expertise in theorem proving on the part of the user, and produces counterexamples in the case that a flaw is detected. We present two implementations of this technique, one based on negation-as-failure and one based on negation elimination, along with experimental results showing that these techniques are fast enough to be used interactively to debug systems as they are developed.

Implementing nominal unification

by Christophe Calvès, Maribel Fernández - In 3rd Int. Workshop on Term Graph Rewriting (TERMGRAPH’06), Vienna, Electronic
"... Nominal matching and unification underly the dynamics of nominal rewriting. Urban, Pitts and Gabbay gave a nominal unification algorithm which finds the most general solution to a nominal matching or unification problem, if one exists. Later the algorithm was extended by Fernández and Gabbay to deal ..."
Abstract - Cited by 6 (2 self) - Add to MetaCart
Nominal matching and unification underly the dynamics of nominal rewriting. Urban, Pitts and Gabbay gave a nominal unification algorithm which finds the most general solution to a nominal matching or unification problem, if one exists. Later the algorithm was extended by Fernández and Gabbay to deal with name generation and locality. In this paper we describe first a direct implementation of the nominal unification algorithm, including the extensions, in Maude. This implementation is not efficient (it is exponential in time), but we will show that we can obtain a feasible implementation by using termgraphs.

A metalanguage for structural operational semantics

by Matthew R. Lakin, Andrew M. Pitts - In Symposium on Trends in Functional Programming , 2007
"... We present MLSOS, a functional metalanguage for encoding definitions of structural operational semantics. The key features of this language are inbuilt support for representing object-language binding structures and performing proof-search. MLSOS uses the nominal approach to dealing with binders and ..."
Abstract - Cited by 5 (1 self) - Add to MetaCart
We present MLSOS, a functional metalanguage for encoding definitions of structural operational semantics. The key features of this language are inbuilt support for representing object-language binding structures and performing proof-search. MLSOS uses the nominal approach to dealing with binders and a FreshML-style generative treatment of atoms. This allows us to prototype systems in a natural way, starting from a semi-formal specification. We outline the main design choices behind the language and illustrate its use. 1

Fresh O’Caml: Nominal abstract syntax for the masses

by Mark R. Shinwell - In ACM Workshop on ML , 2005
"... Nominal abstract syntax, as pioneered by the ‘FreshML ’ series of metalanguages, provides first-order tools for the representation and manipulation of syntax involving bound names, binding operations and α-equivalence. Fresh O’Caml fuses nominal abstract syntax with the full Objective Caml language ..."
Abstract - Cited by 5 (0 self) - Add to MetaCart
Nominal abstract syntax, as pioneered by the ‘FreshML ’ series of metalanguages, provides first-order tools for the representation and manipulation of syntax involving bound names, binding operations and α-equivalence. Fresh O’Caml fuses nominal abstract syntax with the full Objective Caml language to yield a functional programming language with powerful facilities for representing and manipulating syntax. In this paper, we first provide an examples-driven overview of the language and its functionality. Then we proceed to comment on some of the difficult issues involved in implementing nominal abstract syntax and explain how they have been addressed in the latest version of the compiler.

Nominal unification from a higher-order perspective

by Jordi Levy, Mateu Villaret - In Proceedings of RTA’08
"... Abstract. Nominal Logic is an extension of first-order logic with equality, name-binding, name-swapping, and freshness of names. Contrarily to higher-order logic, bound variables are treated as atoms, and only free variables are proper unknowns in nominal unification. This allows “variable capture”, ..."
Abstract - Cited by 5 (1 self) - Add to MetaCart
Abstract. Nominal Logic is an extension of first-order logic with equality, name-binding, name-swapping, and freshness of names. Contrarily to higher-order logic, bound variables are treated as atoms, and only free variables are proper unknowns in nominal unification. This allows “variable capture”, breaking a fundamental principle of lambda-calculus. Despite this difference, nominal unification can be seen from a higher-order perspective. From this view, we show that nominal unification can be reduced to a particular fragment of higher-order unification problems: higher-order patterns unification. This reduction proves that nominal unification can be decided in quadratic deterministic time. 1
The National Science Foundation
  • About CiteSeerX
  • Submit Documents
  • Privacy Policy
  • Help
  • Data
  • Source
  • Contact Us

Developed at and hosted by The College of Information Sciences and Technology

© 2007-2010 The Pennsylvania State University