Foundational Aspects of Syntax Dale Miller and Catuscia Palamidessi Department of Computer Science and Engineering, The Pennsylvania State University 220 Pond Laboratory, University Park, PA 16802-6106, USA E-mail: {dale, catuscia}@cse.psu.edu 1. INTRODUCTION A large variety of computing systems, such as compilers, interpreters, static analyzers, and theorem provers, need to manipulate syntactic objects like programs, types, formulas, and proofs. A common characteristic of these syntactic objects is that they contain variable binders, such as quanti ers, scoping operators, and parameters. The presence of binders complicates formal speci cations and symbolic processing. Consider, for example, a function de nition of the form f (x) = let y = e in x + y. When analyzing or transforming a program containing the call f (e ), we might wish to replace f (e ) with the body of f in which x is substituted by e . But we cannot simply apply the substitution [x e ] because a free variable could be captured. For example, if e is the expression y, naive substitution would yield the expression (let y = e in y + y), which is incorrect. Binders are often treated in traditional speci cations by adding side
/lp/association-for-computing-machinery/foundational-aspects-of-syntax-OXTnwHe2kC