Results 1 
3 of
3
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 58 (24 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.
A logic programming language based on binding algebras
 In Proc. Theoretical Aspects of Computer Science (TACS 2001), number 2215 in Lecture
, 2001
"... Abstract. We give a logic programming language based on Fiore, Plotkin and Turi’s binding algebras. In this language, we can use not only firstorder terms but also terms involving variable binding. The aim of this language is similar to Nadathur and Miller’s λProlog, which can also deal with bindin ..."
Abstract

Cited by 6 (0 self)
 Add to MetaCart
(Show Context)
Abstract. We give a logic programming language based on Fiore, Plotkin and Turi’s binding algebras. In this language, we can use not only firstorder terms but also terms involving variable binding. The aim of this language is similar to Nadathur and Miller’s λProlog, which can also deal with binding structure by introducing λterms in higherorder logic. But the notion of binding used here is finer in a sense than the usual λbinding. We explicitly manage names used for binding and treat αconversion with respect to them. Also an important difference is the form of application related to βconversion, i.e. we only allow the form (M x), where x is a (object) variable, instead of usual application (M N). This notion of binding comes from the semantics of binding by the category of presheaves. We firstly give a type theory which reflects this categorical semantics. Then we proceed along the line of firstorder logic programming language, namely, we give a logic of this language, an operational semantics by SLDresolution and unification algorithm for binding terms. 1
ContextOriented Programming for Pervasive Systems
, 2002
"... We envision that pervasive computing will increasingly impact on daily life. Pervasive computing is a computing paradigm incorporated in a variety of devices (computers, clothes, cars, appliances, mobile phones etc.) to support daily activities. To make computers easier to use, computing tasks m ..."
Abstract

Cited by 3 (0 self)
 Add to MetaCart
(Show Context)
We envision that pervasive computing will increasingly impact on daily life. Pervasive computing is a computing paradigm incorporated in a variety of devices (computers, clothes, cars, appliances, mobile phones etc.) to support daily activities. To make computers easier to use, computing tasks must be more sensitive to our needs and the context.