Results 1  10
of
135
A logic programming language with lambdaabstraction, function variables, and simple unification
 Extensions of Logic Programming. Springer Lecture Notes in Artificial Intelligence
, 1990
"... A meta programming language must be able to represent and manipulate such syntactic structures as programs, formulas, types, and proofs. A common characteristic of all these structures is that they involve notions of abstractions, scope, bound and free variables, substitution instances, and equality ..."
Abstract

Cited by 317 (27 self)
 Add to MetaCart
(Show Context)
A meta programming language must be able to represent and manipulate such syntactic structures as programs, formulas, types, and proofs. A common characteristic of all these structures is that they involve notions of abstractions, scope, bound and free variables, substitution instances, and equality up to alphabetic changes of bound variables.
Unification under a mixed prefix
 Journal of Symbolic Computation
, 1992
"... Unification problems are identified with conjunctions of equations between simply typed λterms where free variables in the equations can be universally or existentially quantified. Two schemes for simplifying quantifier alternation, called Skolemization and raising (a dual of Skolemization), are pr ..."
Abstract

Cited by 135 (14 self)
 Add to MetaCart
(Show Context)
Unification problems are identified with conjunctions of equations between simply typed λterms where free variables in the equations can be universally or existentially quantified. Two schemes for simplifying quantifier alternation, called Skolemization and raising (a dual of Skolemization), are presented. In this setting where variables of functional type can be quantified and not all types contain closed terms, the naive generalization of firstorder Skolemization has several technical problems that are addressed. The method of searching for preunifiers described by Huet is easily extended to the mixed prefix setting, although solving flexibleflexible unification problems is undecidable since types may be empty. Unification problems may have numerous incomparable unifiers. Occasionally, unifiers share common factors and several of these are presented. Various optimizations on the general unification search problem are as discussed. 1.
Ellipsis and higherorder unification
 Linguistics and Philosophy
, 1991
"... We present a new method for characterizing the interpretive possibilities generated by elliptical constructions in natural language. Unlike previous analyses, which postulate ambiguity of interpretation or derivation in the full clause source of the ellipsis, our analysis requires no such hidden amb ..."
Abstract

Cited by 130 (1 self)
 Add to MetaCart
We present a new method for characterizing the interpretive possibilities generated by elliptical constructions in natural language. Unlike previous analyses, which postulate ambiguity of interpretation or derivation in the full clause source of the ellipsis, our analysis requires no such hidden ambiguity. Further, the analysis follows relatively directly from an abstract statement of the ellipsis interpretation problem. It predicts correctly a wide range of interactions between ellipsis and other semantic phenomena such as quantifier scope and bound anaphora. Finally, although the analysis itself is stated nonprocedurally, it admits of a direct computational method for generating interpretations. This article is available through the Computation and Language EPrint Archive as cmplg/9503008, and also appears in Linguistics and Philosophy 14(4):399–452. cmplg/9503008 Ellipsis and HigherOrder Unification 1
A Practical Soft Type System for Scheme
 In Proceedings of the 1994 ACM Conference on LISP and Functional Programming
, 1993
"... Soft type systems provide the benefits of static type checking for dynamically typed languages without rejecting untypable programs. A soft type checker infers types for variables and expressions and inserts explicit runtime checks to transform untypable programs to typable form. We describe a prac ..."
Abstract

Cited by 119 (4 self)
 Add to MetaCart
Soft type systems provide the benefits of static type checking for dynamically typed languages without rejecting untypable programs. A soft type checker infers types for variables and expressions and inserts explicit runtime checks to transform untypable programs to typable form. We describe a practical soft type system for R4RS Scheme. Our type checker uses a representation for types that is expressive, easy to interpret, and supports efficient type inference. Soft Scheme supports all of R4RS Scheme, including procedures of fixed and variable arity, assignment, continuations, and toplevel definitions. Our implementation is available by anonymous FTP. The first author was supported in part by the United States Department of Defense under a National Defense Science and Engineering Graduate Fellowship. y The second author was supported by NSF grant CCR9122518 and the Texas Advanced Technology Program under grant 003604014. 1 Introduction Dynamically typed languages like Scheme...
From operational semantics to abstract machines
 Mathematical Structures in Computer Science
, 1992
"... We consider the problem of mechanically constructing abstract machines from operational semantics, producing intermediatelevel specifications of evaluators guaranteed to be correct with respect to the operational semantics. We construct these machines by repeatedly applying correctnesspreserving t ..."
Abstract

Cited by 68 (6 self)
 Add to MetaCart
(Show Context)
We consider the problem of mechanically constructing abstract machines from operational semantics, producing intermediatelevel specifications of evaluators guaranteed to be correct with respect to the operational semantics. We construct these machines by repeatedly applying correctnesspreserving transformations to operational semantics until the resulting specifications have the form of abstract machines. Though not automatable in general, this approach to constructing machine implementations can be mechanized, providing machineverified correctness proofs. As examples we present the transformation of specifications for both callbyname and callbyvalue evaluation of the untyped λcalculus into abstract machines that implement such evaluation strategies. We also present extensions to the callbyvalue machine for a language containing constructs for recursion, conditionals, concrete data types, and builtin functions. In all cases, the correctness of the derived abstract machines follows from the (generally transparent) correctness of the initial operational semantic specification and the correctness of the transformations applied. 1.
Five axioms of alphaconversion
 Ninth international Conference on Theorem Proving in Higher Order Logics TPHOL
, 1996
"... Abstract. We present five axioms of namecarrying lambdaterms identified up to alphaconversion—that is, up to renaming of bound variables. We assume constructors for constants, variables, application and lambdaabstraction. Other constants represent a function Fv that returns the set of free variab ..."
Abstract

Cited by 56 (0 self)
 Add to MetaCart
Abstract. We present five axioms of namecarrying lambdaterms identified up to alphaconversion—that is, up to renaming of bound variables. We assume constructors for constants, variables, application and lambdaabstraction. Other constants represent a function Fv that returns the set of free variables in a term and a function that substitutes a term for a variable free in another term. Our axioms are (1) equations relating Fv and each constructor, (2) equations relating substitution and each constructor, (3) alphaconversion itself, (4) unique existence of functions on lambdaterms defined by structural iteration, and (5) construction of lambdaabstractions given certain functions from variables to terms. By building a model from de Bruijn’s nameless lambdaterms, we show that our five axioms are a conservative extension of HOL. Theorems provable from the axioms include distinctness, injectivity and an exhaustion principle for the constructors, principles of structural induction and primitive recursion on lambdaterms, Hindley and Seldin’s substitution lemmas and
Reasoning with inductively defined relations in the HOL theorem prover
, 1992
"... Abstract: Inductively defined relations are among the basic mathematical tools of computer science. Examples include evaluation and computation relations in structural operational semantics, labelled transition relations in process algebra semantics, inductivelydefined typing judgements, and proof ..."
Abstract

Cited by 48 (0 self)
 Add to MetaCart
(Show Context)
Abstract: Inductively defined relations are among the basic mathematical tools of computer science. Examples include evaluation and computation relations in structural operational semantics, labelled transition relations in process algebra semantics, inductivelydefined typing judgements, and proof systems in general. This paper describes a set of HOL theoremproving tools for reasoning about such inductively defined relations. We also describe a suite of worked examples using these tools. First printed: August 1992
Birewrite systems
, 1996
"... In this article we propose an extension of term rewriting techniques to automate the deduction in monotone preorder theories. To prove an inclusion a ⊆ b from a given set I of them, we generate from I, using a completion procedure, a birewrite system 〈R⊆, R⊇〉, that is, a pair of rewrite relations ..."
Abstract

Cited by 30 (8 self)
 Add to MetaCart
In this article we propose an extension of term rewriting techniques to automate the deduction in monotone preorder theories. To prove an inclusion a ⊆ b from a given set I of them, we generate from I, using a completion procedure, a birewrite system 〈R⊆, R⊇〉, that is, a pair of rewrite relations −−− → R ⊆ and −−− → R ⊇ , and seek a common term c such that a −−−→ R ⊆ c and b −−−→
Polymorphic Type Inference for Languages with Overloading and Subtyping
, 1991
"... Many computer programs have the property that they work correctly on a variety of types of input; such programs are called polymorphic. Polymorphic type systems support polymorphism by allowing programs to be given multiple types. In this way, programs are permitted greater flexibility of use, while ..."
Abstract

Cited by 24 (1 self)
 Add to MetaCart
(Show Context)
Many computer programs have the property that they work correctly on a variety of types of input; such programs are called polymorphic. Polymorphic type systems support polymorphism by allowing programs to be given multiple types. In this way, programs are permitted greater flexibility of use, while still receiving the benefits of strong typing. One especially successful polymorphic type system is the system of Hindley, Milner, and Damas, which is used in the programming language ML. This type system allows programs to be given universally quantified types as a means of expressing polymorphism. It has two especially nice properties. First, every welltyped program has a “best ” type, called the principal type, that captures all the possible types of the program. Second, principal types can be inferred, allowing programs to be written without type declarations. However, two useful kinds of polymorphism cannot be expressed in this type system: overloading and subtyping. Overloading is the kind of polymorphism exhibited by a function like addition, whose types cannot be captured by a single universally quantified type formula.