Nominal Completion for Rewrite Systems with Binders

Similar documents
Nominal Rewriting. Maribel Fernández. ISR - June King s College London

Nominal Matching and Alpha-Equivalence (Extended Abstract)

Relating Nominal and Higher-Order Pattern Unification

Nominal Unification. Key words: Abstract Syntax, Alpha-Conversion, Binding Operations, Unification

Equational Logic. Chapter 4

07 Equational Logic and Algebraic Reasoning

Capture-Avoiding Substitution as a Nominal Algebra

HORSes: format, termination and confluence

Most General Unifiers in Generalized Nominal Unification

Modularity of Confluence: A Simplified Proof

King s Research Portal

Relating Nominal and Higher-Order Pattern Unification

Names and Symmetry in Computer Science

Theorem 4.18 ( Critical Pair Theorem ) A TRS R is locally confluent if and only if all its critical pairs are joinable.

Nominal Lawvere Theories: A Category Theoretic Account of Equational Theories with Names

Outline. Overview. Introduction. Well-Founded Monotone Algebras. Monotone algebras. Polynomial Interpretations. Dependency Pairs

Predicate Logic. Xinyu Feng 09/26/2011. University of Science and Technology of China (USTC)

Cheat Sheet Equational Logic (Spring 2013) Terms. Inductive Construction. Positions: Denoting Subterms TERMS

Dependent Types and Explicit Substitutions

Towards Correctness of Program Transformations Through Unification and Critical Pair Computation

The Lambda-Calculus Reduction System

Nominal Syntax and Semantics

Rewriting, Explicit Substitutions and Normalisation

Semantic Labelling for Proving Termination of Combinatory Reduction Systems. Makoto Hamana

Universal Algebra for Termination of Higher-Order Rewriting. Makoto Hamana

Theoretical Computer Science 323 (2004) Nominal unication. Cambridge CB3 OFD, UK b INRIA, Paris, France

The Locally Nameless Representation

1 Introduction to Predicate Resolution

Binding in Nominal Equational Logic

λ Slide 1 Content Exercises from last time λ-calculus COMP 4161 NICTA Advanced Course Advanced Topics in Software Verification

A Recursion Combinator for Nominal Datatypes Implemented in Isabelle/HOL

On the Complexity of the Reflected Logic of Proofs

CONSTRAINT SOLVING IN NON-PERMUTATIVE NOMINAL ABSTRACT SYNTAX

Rewrite Combinators. Stephen Diehl

Nominal Unification with Atom-Variables

An introduction to process calculi: Calculus of Communicating Systems (CCS)

A Proof Theory for Generic Judgments

This work was partially supported by CAPES PVE 146/2012 and CNPq UNIVERSAL /

Translating Combinatory Reduction Systems into the Rewriting Calculus

Alpha-Structural Recursion and Induction

Mathematical Synthesis of Equational Deduction Systems. Marcelo Fiore. Computer Laboratory University of Cambridge

The Curry-Howard Isomorphism

Equational Reasoning and Completion. Dominik Klein

Beyond First-Order Logic

A Polynomial Algorithm for Uniqueness of Normal Forms of Linear Shallow Term Rewrite Systems 1. Julian Zinn 2 and Rakesh Verma

Predicate Logic. Xinyu Feng 11/20/2013. University of Science and Technology of China (USTC)

The Logical Meeting Point of Multiset Rewriting and Process Algebra

NICTA Advanced Course. Theorem Proving Principles, Techniques, Applications

Gluing Nominal Theories

Complete Selection Functions for a Lazy Conditional Narrowing Calculus

Predicate Logic. x. x + 0 = x. Predicate logic over integer expressions: a language of logical assertions, for example. Why discuss predicate logic?

Reasoning with Higher-Order Abstract Syntax and Contexts: A Comparison

Formal SOS-Proofs for the Lambda-Calculus

1.3. BASIC COMPUTER SCIENCE PREREQUISITES 15

Herbrand Theorem, Equality, and Compactness

CS522 - Programming Language Semantics

COMP6463: λ-calculus

Nominal Dependent Types as a Logical Framework

Completeness and Incompleteness in nominal Kleene algebra

Grammatical resources: logic, structure and control

7 RC Simulates RA. Lemma: For every RA expression E(A 1... A k ) there exists a DRC formula F with F V (F ) = {A 1,..., A k } and

Type Theory and Constructive Mathematics. Type Theory and Constructive Mathematics Thierry Coquand. University of Gothenburg

Non- -overlappings TRSs are UN. Stefan Kahrs and Connor Smith University of Kent

Advanced Lambda Calculus Lecture 5

arxiv: v3 [cs.pl] 27 May 2013

Introduction to Logic in Computer Science: Autumn 2006

Groupe de travail. Analysis of Mobile Systems by Abstract Interpretation

Automata Theory and Formal Grammars: Lecture 1

Nominal Unification from a Higher-Order Perspective

Deciding Confluence of Certain Term Rewriting Systems in Polynomial Time

A REWRITING VIEW OF SIMPLE TYPING

First-Order Logic. 1 Syntax. Domain of Discourse. FO Vocabulary. Terms

Model Evolution with Equality Revised and Implemented

hal , version 1-21 Oct 2009

Local Representations of Binding

Categories, Proofs and Programs

Murdoch J. Gabbay and Michael J. Gabbay

Under consideration for publication in Theory and Practice of Logic Programming 1. AC-KBO Revisited AKIHISA YAMADA

A Semantic Criterion for Proving Infeasibility in Conditional Rewriting

Applied Logic. Lecture 1 - Propositional logic. Marcin Szczuka. Institute of Informatics, The University of Warsaw

Introduction to Logic in Computer Science: Autumn 2007

Syntax of FOL. Introduction to Logic in Computer Science: Autumn Tableaux for First-order Logic. Syntax of FOL (2)

Lazy Strong Normalization

First-Order Theorem Proving and Vampire

Equational Reasoning in Algebraic Structures: a Complete Tactic

Clausal Presentation of Theories in Deduction Modulo

3.17 Semantic Tableaux for First-Order Logic

Origin in Mathematical Logic

Associative-commutative rewriting via flattening

Logical Calculi for Reasoning with Binding

Propositional and Predicate Logic. jean/gbooks/logic.html

A proof checking kernel for the λπ-calculus modulo

Sequent Combinators: A Hilbert System for the Lambda Calculus

Disunification for Ultimately Periodic Interpretations

a-logic with arrows Murdoch J. Gabbay 1 Michael J. Gabbay 2 1 Introduction

Static Program Analysis

First Order Logic (FOL) 1 znj/dm2017

Nominal Equational Logic

Computational Soundness of a Call by Name Calculus of Recursively-scoped Records. UMM Working Papers Series, Volume 2, Num. 3.

Transcription:

Nominal Completion for Rewrite Systems with Binders Maribel Fernández King s College London July 2012 Joint work with Albert Rubio

Summary Motivations Nominal Rewriting Closed nominal rules Confluence and Termination Completion Future work

First-order languages vs. languages with binders First-order data structures: numbers, lists, trees, etc. available in most programming languages. Few languages provide data structures with binding, needed in type checkers, program analysers, compilers, etc.

Binding operators: Examples Some concrete examples of binding operators (informally): Operational semantics: let a = N in M (fun a.m)n

Binding operators: Examples Some concrete examples of binding operators (informally): Operational semantics: let a = N in M (fun a.m)n π-calculus: P νa.q νa.(p Q) (a fv(p))

Binding operators: Examples Some concrete examples of binding operators (informally): Operational semantics: let a = N in M (fun a.m)n π-calculus: P νa.q νa.(p Q) (a fv(p)) Logic equivalences: P and ( x.q) x(p and Q) (x fv(p))

Binders - α-equivalence Binding operators are defined modulo renaming of bound variables, i.e., α-equivalence. Example: In x.p the variable x can be renamed. α-conversion is implicit, but x.p α y.p x may occur in P.

Binders - α-equivalence Binding operators are defined modulo renaming of bound variables, i.e., α-equivalence. Example: In x.p the variable x can be renamed. α-conversion is implicit, but x.p α y.p x may occur in P. x.p = α y.p{x y} Substitution of a bound name by a term has to avoid capture of other bound names: y fresh?

Binders - α-equivalence Binding operators are defined modulo renaming of bound variables, i.e., α-equivalence. Example: In x.p the variable x can be renamed. α-conversion is implicit, but x.p α y.p x may occur in P. x.p = α y.p{x y} Substitution of a bound name by a term has to avoid capture of other bound names: y fresh? Formal definition. There are several alternatives.

Formally: Alternatives: Encode in a first-order rewrite system e.g. use De Bruijn indices, encode alpha using operators such as lift and shift ; explicit substitutions. (-) α-equivalence has to be implemented (+) simple notion of substitution, efficient first-order matching

Formally: Alternatives: Encode in a first-order rewrite system e.g. use De Bruijn indices, encode alpha using operators such as lift and shift ; explicit substitutions. (-) α-equivalence has to be implemented (+) simple notion of substitution, efficient first-order matching Higher-order rewrite systems (CRS, HRS, ERS, etc.), e.g. app(lam([a]z(a)), Z ) Z(Z ) (+) Binders, functions, implicit α-equivalence (-) Substitution as a meta-operation, using β (-) Unification is undecidable in general

Alternative: Nominal Approach [Pitts, Gabbay, Urban,...] Inspired by nominal set theory (Fraenkel-Mostowski). Key ideas: Freshness conditions a#t, name swapping (a b) t. Example: app(lam([a]z), Z ) subst([a]z, Z ) a#m (λ([a]app(m, a)) M Terms with binders Built-in α-equivalence Efficient matching and unification algorithms Simple notion of substitution ( first-order ), non-capturing substitution has to be specified using rewrite rules. Dependencies of terms on names are implicit.

Nominal Syntax [Urban,Pitts,Gabbay: TCS 04] Function symbols: f, g... Variables: M, N, X, Y,... Atoms: a, b,... Swappings: (a b) Def. (a b)a = b, (a b)b = a, (a b)c = c Permutations: lists of swappings, denoted π (Id empty). Nominal Terms: Id X written as X. s, t ::= a π X [a]t f t (t 1,..., t n ) Example (ML): var(a), app(t, t ), lam([a]t), let(t, [a]t ), letrec[f ]([a]t, t ), subst([a]t, t ) Syntactic sugar: a, (tt ), λa.t, let a = t in t, letrec fa = t in t, t[a t ]

α-equivalence We use freshness to avoid name capture. a#x means a fv(x ) when X is instantiated. where ds(π, π )#X a α a π X α π X s 1 α t 1 s n α t n s α t (s 1,..., s n ) α (t 1,..., t n ) fs α ft s α t a#t [a]s α [a]t s α (a b) t [a]s α [b]t ds(π, π ) = {n π(n) π (n)} a#x, b#x (a b) X α X

α-equivalence We use freshness to avoid name capture. a#x means a fv(x ) when X is instantiated. a α a ds(π, π )#X π X α π X where s 1 α t 1 s n α t n s α t (s 1,..., s n ) α (t 1,..., t n ) fs α ft s α t a#t [a]s α [a]t s α (a b) t [a]s α [b]t ds(π, π ) = {n π(n) π (n)} a#x, b#x (a b) X α X b#x λ[a]x α λ[b](a b) X

Freshness Also defined by induction: a#b a#[a]s a#s 1 a#s n a#(s 1,..., s n ) π 1 (a)#x a#π X a#s a#s a#fs a#[b]s

Nominal Rewriting Rewriting on nominal terms. Applications: equational reasoning on data structures with binding; algebraic specifications of operators and data structures; operational semantics of programs; compilers, program transformations, etc.

Nominal Rewriting Nominal Rewriting Rules: l r V (r) V ( ) V (l) Example: prenex normal forms in first-order logic a#p P [a]q [a](p Q) a#p ( [a]q) P [a](q P) a#p P [a]q [a](p Q) a#p ( [a]q) P [a](q P) a#p P [a]q [a](p Q) a#p ( [a]q) P [a](q P) a#p P [a]q [a](p Q) a#p ( [a]q) P [a](q P) ( [a]q) [a] Q ( [a]q) [a] Q Reduction relation generated by (equivariant) nominal matching.

Nominal matching problem l α t where V (l) V (t) = has solution (, θ) if lθ α t Nominal matching is decidable [Urban, Pitts, Gabbay 2003] A solvable problem Pr has a unique most general solution: (Γ, θ) such that Γ Prθ. Efficient algorithms: linear in time and space [Calves-F.2008] BTW, nominal unification is quadratic [Calves-F.2010,Levy-Villaret2010]. But for general NRSs nominal matching is not sufficient: we need Equivariant Nominal Matching NP [Cheney2004]. If rules are closed, then nominal matching is sufficient.

Closed Rules Intuitively: no free names. R l r is closed when ( (l, r ))? (, A(R )#V (R) (l, r)) has a solution σ (where R is a freshened copy of R). Given R l r and s we write s R c t when, A(R )#V (, s) s R t and call this closed rewriting.

Examples The following rules are not closed: g(a) a [a]x X Why?

Examples The following rule is closed: Why? a#x [a]x X

Examples The following rules are closed, they define capture-avoiding substitution in the lambda calculus. We introduce a term-former subst which we sugar to t[a t ]. (Beta) (λ[a]x )X X [a X ] (σ App ) (XX )[a Y ] X [a Y ]X [a Y ] (σ var ) a[a X ] X (σ ɛ ) a#y Y [a X ] Y (σ fn ) b#y (λ[b]x )[a Y ] λ[b](x [a Y ])

Properties of Closed Rewriting Closed Nominal Rewriting: works uniformly in α equivalence classes of terms.

Properties of Closed Rewriting Closed Nominal Rewriting: works uniformly in α equivalence classes of terms. is expressive: can encode Combinatory Reduction Systems.

Properties of Closed Rewriting Closed Nominal Rewriting: works uniformly in α equivalence classes of terms. is expressive: can encode Combinatory Reduction Systems. efficient matching.

Properties of Closed Rewriting Closed Nominal Rewriting: works uniformly in α equivalence classes of terms. is expressive: can encode Combinatory Reduction Systems. efficient matching. inherits confluence conditions from first order rewriting.

Confluence Suppose 1 R i = i l i r i for i = 1, 2 are copies of two rules in R such that V (R 1 ) V (R 2 ) = (R 1 and R 2 could be copies of the same rule). 2 l 1 L[l 1 ] such that 1, 2, l 1?? l 2 has a principal solution (Γ, θ), so that Γ l 1 θ α l 2 θ and Γ i θ for i = 1, 2. Then Γ (r 1 θ, Lθ[r 2 θ]) is a critical pair. If L = [-] and R 1, R 2 are copies of the same rule, or if l 1 is a variable, then we say the critical pair is trivial. Critical Pair Lemma: A closed nominal rewrite system where all non-trivial critical pairs are joinable, is locally confluent. Orthogonality: If all the rules are closed, left-linear, and without superpositions nominal rewriting is confluent.

Termination Many techniques for first-order systems: well developed area. Example: recursive path ordering [Dershowitz] rpo: A well-founded precedence on function symbols generates a well-founded ordering on first-order terms.

Nominal rpo - Version 1 Idea: Equate all atoms (by collapsing them into a unique atom a). Precedence: extend a precedence on the signature Σ {a, [a] } Formally: 1 ˆt coincides with t except that all the atoms have been replaced by a distinguished atom a. 2 s > t if ŝ > rpo ˆt using a precedence > Σ on Σ {a, [a] }, such that f > Σ [a] > Σ a for all f Σ.

Nominal rpo version 1 Let be a freshness context, s, t nominal terms over Σ, and > Σ a precedence on Σ. We write s > t, if ŝ > ˆt as defined below, where is the reflexive closure of >, and > mul is the multiset extension of >. 1 [a]s > t if s t 2 s > [a]t if root(s) Σ and s > t 3 [a]s > [a]t if s > t 4 [a]s > a 5 f (s 1,..., s n ) > t if s i t for some i, f Σ 6 f (s 1,..., s n ) > g(t 1,..., t m ) if f > Σ g and f (s 1,..., s n ) > t i for all i 7 f (s 1,..., s n ) > a 8 f (s 1,..., s n ) > g(t 1,..., t m ) if f = Σ g and {s 1,..., s n } > mul {t 1,..., t m }.

Examples We can order the nominal rewriting rules that compute prenex normal form of first-order logic formulas: Use a precedence > Σ, > Σ, > Σ, > Σ, > Σ, > Σ Then a#p P [a]q > [a](p Q)

Example[Jouannaud-RubioCSL2008] HORPO to compare terms in λ-calculus extended with constants Example: f (g([x]f (x, x)), g([x]f (x, x))) > [x]f (x, x) in the HORPO and also in the nominal rpo (because g([a]f (a, a)) > a). More interesting: f (g(x, Y ))) > g(x, [a]f (h(y, a))) using the nominal rpo but not comparable with HORPO Proof: Assume f > Σ g > Σ h, then f (g(x, Y ))) > X and f (g(x, Y ))) > [a]f (h(y, a))). The first one is trivial (subterm relation). For the second, we show f (g(x, Y ))) > f (h(y, a))), which requires g(x, Y ) > h(y, a). Since g(x, Y ) > Y, and g(x, Y ) > a, we are done.

Nominal rpo - Version 1 Properties It is a reduction ordering: 1 transitive, irreflexive, well-founded, and preserved by context and substitution, because we have s > t if and only if ŝ > rpo ˆt 2 preserved by α, that is, it works uniformly in α-equivalence classes Not preserved under atom substitution. To obtain an ordering preserved by atom substitution we need to distinguish unabstracted atoms.

Nominal rpo Let > Σ be a precedence on Σ. Let C = {c 1, c 2,...} such that C A(, s, t) = s > t, defined by cases below, where is >. 1 [a]s > t if c#s,t (a c) s t, for an arbitrary c C A(, [a]s, t). 2 s > [a]t if root(s) Σ and c#s,t s > (a c) t, for an arbitrary c C A(, s, [a]t). 3 [a]s > [b]t if c#s,t (a c) s > (b c) t, for an arbitrary c C A(, [a]s, [b]t). 4 [a]s > [a]t if s > t. 5 [a]s > c if c C. 6 f (s 1,..., s n ) > t if s i t for some i. 7 f (s 1,..., s n ) > g(t 1,..., t m ) if f > Σ g and f (s 1,..., s n ) > t i for all i. 8 f (s 1,..., s n ) > c if c C. 9 f (s 1,..., s n ) > g(t 1,..., t m ) if f = Σ g and {s 1,..., s n } > mul {t 1,..., t m }.

Examples Precedence to order the rules for prenex normal form: > Σ, > Σ, > Σ, > Σ, > Σ, > Σ Example: a#p P [a]q > nrpo [a](p Q) Proof: since > Σ, we show a#p P [a]q > [a](p Q) We have an abstraction in the rhs, so we show a#p, c#p, c#q P [a]q > (a c) P (a c) Q We now compare their subterms. Since a#p, c#p, c#q P α (a c) P, it boils down to proving a#p, c#p, c#q [a]q > (a c) Q, We show a#p, c#p, c#q [a]q (a c) Q This is a consequence of a#p, c#p, c#q, c #Q (a c ) Q (a c) Q, which holds since ds((a c ), (a c)) = {a, c, c } and we can derive a#p, c#p, c#q, c #Q (a c ) Q (a c) Q

Properties The nominal rpo has the following properties: 1 If s > nrpo t then: 1 For all C[-], C[s] > nrpo C[t]. 2 For all π, π s > nrpo π t. 3 For all Γ such that Γ σ, Γ sσ > nrpo tσ. 2 It is a decidable, irreflexive and transitive relation. 3 It is well founded when the precedence is well-founded: there are no infinite descending chains s 1 > nrpo s 2 > nrpo... 4 Compatible with α and preserved by capture-avoiding atom-substitution.

Confluence and Termination of Nominal Rewriting If an equational theory can be represented by a confluent and terminating rewrite system, then equational reasoning can be mechanised. Closed rewriting is sufficient to decide equality modulo a nominal equational theory if the axioms can be oriented to form a confluent and terminating closed NRS [LFMTP2010].

Confluence and Termination of Nominal Rewriting Theorem If for all l r in an NRS R we have l > r, where > is one of the orderings defined above, then R is terminating. Newman s Lemma: Local confluence + termination implies confluence.

Kunth-Bendix Completion If a nominal rewriting system is not confluent, but it is terminating: compute critical pairs and try to add rules to join them. Key ideas: Critical pair lemma Nominal rpo to check termination Critical pairs CAN be added as rules (no problems with types or format as in other rewriting formalisms that manipulate binders)

Nominal Completion Transformation rules on pairs (E, R) (closed nominal equations and nominal rewriting rules) Input: (E, ) and a (well-founded) reduction ordering > Transformation rules: (E, R) (E s = t, R) if (s, t) critical pair of R (E s = t, R) (E, R s t) if s > t (E s = t, R) (E, R t s) if t > s (E s = t, R) (E, R) if s α t (E s = t, R) (E s = t, R) if s c R s (E s = t, R) (E s = t, R) if t c R t (E, R s t) (E, R s t ) if t c R t (E, R s t) (E s = t, R) if s c R s As in the case of first-order rewriting, the rule that computes critical pairs should be used in a controlled way.

Example The following rules are inspired by [Nipkow-Prehofer1998]. As ordering take nrpo with any precedence. (η) a#x λ([a]app(x, a)) X ( ) app(, Y ) There is a critical pair since the unification problem a#x, app(x, a)?? app(, Y ) has solution {X, Y a}: λ([a] ) = can be oriented into λ([a] ).

Example The following rules are inspired by Van de Pol s PhD thesis (1996). As ordering take nrpo with precedence Σ > + and Σ > app > id. a#f Σ(0, [a]app(f, a)) 0 a#f Σ(s(N), [a]app(f, a)) app(f, s(n)) + Σ(N, [a]app(f, a)) id(x ) X app(id0, X ) id(x ) With the fourth rule applied on the first and second we obtain two critical pairs: Σ(0, [a]id(a)) = 0 and Σ(s(N), [a]id(a)) = app(id0, s(n)) + Σ(N, [a]app(id0, a)) which can be simplified and oriented as follows: Σ(0, [a]a) 0 and Σ(s(N), [a]a) s(n) + Σ(N, [a]a).

Conclusion Nominal Terms: extension of first-order syntax, efficient matching modulo α. Clean semantics: Nominal Sets Equational reasoning and rewriting Completion as a tool to mechanise nominal equational logic Future work: functional abstraction and capture-avoiding substitution, more powerful type systems,...