Results 21  30
of
58
Quantifier Elimination and Parametric Polymorphism in Programming Languages
 J. Functional Programming
, 1992
"... We present a simple and easy to understand explanation of ML type inference and parametric polymorphism within the framework of type monomorphism, as in the first order typed lambda calculus. We prove the equivalence of this system with the standard interpretation using type polymorphism, and extend ..."
Abstract

Cited by 5 (2 self)
 Add to MetaCart
(Show Context)
We present a simple and easy to understand explanation of ML type inference and parametric polymorphism within the framework of type monomorphism, as in the first order typed lambda calculus. We prove the equivalence of this system with the standard interpretation using type polymorphism, and extend the equivalence to include polymorphic fixpoints. The monomorphic interpretation gives a purely combinatorial understanding of the type inference problem, and is a classic instance of quantifier elimination, as well as an example of Gentzenstyle cut elimination in the framework of the CurryHoward propositionsastypes analogy. Supported by NSF Grant CCR9017125, and grants from Texas Instruments and from the Tyson Foundation. 1 Introduction In his influential paper, "A theory of type polymorphism in programming," Robin Milner proposed an extension to the first order typed calculus which has become known as the core of the ML programming language [Mil78, HMT90]. The extension augment...
Towards constraintbased type inference with polymorphic recursion for functional and logic languages
 Department of Computer Science, Trinity College Dublin
, 2005
"... Abstract. Type inference in the context of polymorphic recursion is notoriously difficult. The extensions to the traditional λcalculus type inference algorithm by both HindleyMilner and Mycroft are not capable of deriving the most general, i.e. principal types for programs with polymorphic recurs ..."
Abstract

Cited by 3 (1 self)
 Add to MetaCart
(Show Context)
Abstract. Type inference in the context of polymorphic recursion is notoriously difficult. The extensions to the traditional λcalculus type inference algorithm by both HindleyMilner and Mycroft are not capable of deriving the most general, i.e. principal types for programs with polymorphic recursion. Henglein has proposed a different algorithm, based on arrow graph reweriting, with an extended occurs check that allows for practical principal type inference in a large class of programs. We propose a new constraintbased formulation of Henglein’s inference algorithm. Our formulation of the algorithm is simple, elegant and highly declarative in nature. It relates the opertional nature of the type inference more clearly to the formal theory of the type constraints and reveals how to extend the algorithm for logic programs. 1
Fast Algorithms for Uniform SemiUnification
, 1999
"... We present a fast algorithm for uniform semiunification based on adapting the Huet unification closure method for standard unification. It solves the following decision problem in O(n 2 ff(n) 2 ), where n is the size of the two terms, and ff is the functional inverse of Ackermann 's funct ..."
Abstract

Cited by 3 (1 self)
 Add to MetaCart
We present a fast algorithm for uniform semiunification based on adapting the Huet unification closure method for standard unification. It solves the following decision problem in O(n 2 ff(n) 2 ), where n is the size of the two terms, and ff is the functional inverse of Ackermann 's function: Given two terms s and t, do there exist two substitutions oe and ae such that ae(oe(s)) = oe(t)? In the affirmative case, a solution oe can be constructed within the same time bound. However, if a principal solution (analogous to an mgu) is required, some modifications to the algorithm must be made, and the upper bound increases to O(n 2 log 2 (nff(n)) ff(n) 2 ). 1 Introduction Semiunification is a combination of matching and unification on firstorder terms that has applications in term rewriting, type checking for programming languages, proof theory, and computational linguistics; although it can be defined simply (see following section), it has proved remarkably difficult to analyz...
Implicit program synthesis by a reversible metainterpreter
 Proc. of LOPSTR’97, volume 1463 of LNCS
, 1998
"... Abstract. Synthesis of logic programs is considered as a special instance of logic programming. We describe experience made within a logical metaprogramming environment whose central component is a reversible metainterpreter, in the sense that it is equally well suited for generating object programs ..."
Abstract

Cited by 3 (1 self)
 Add to MetaCart
(Show Context)
Abstract. Synthesis of logic programs is considered as a special instance of logic programming. We describe experience made within a logical metaprogramming environment whose central component is a reversible metainterpreter, in the sense that it is equally well suited for generating object programs as well as for executing them. Requirements telling that certain goals should be provable in a program sought can be integrated with additional sideconditions expressed by the developer at the metalevel, and the resulting specifications tend to be quite concise and declarative. For problems up to a certain degree of complexity, this provides a mode of working characterized by experimentation and an ability to combine different methods which is uncommon in most other systems for program synthesis. Reversibility in the metainterpreter is obtained using constraint logic techniques. 1
Type inference for recursive definitions
 In Proc. 14th Ann. IEEE Symp. Logic in Comput. Sci
, 1999
"... We consider type systems that combine universal types, recursive types, and object types. We study type inference in these systems under a rank restriction, following Leivant's notion of rank. To motivate our work, we present several examples showing how our systems can be used to type programs ..."
Abstract

Cited by 3 (1 self)
 Add to MetaCart
(Show Context)
We consider type systems that combine universal types, recursive types, and object types. We study type inference in these systems under a rank restriction, following Leivant's notion of rank. To motivate our work, we present several examples showing how our systems can be used to type programs encountered in practice. We show that type inference in the rankk system is decidable for k ≤ 2 and undecidable for k ≥ 3. (Similar results based on different techniques are known to hold for System F, without recursive types and object types.) Our undecidability result is obtained by a reduction from a particular adaptation (which we call “regular”) of the semiunification problem and whose undecidability is, interestingly, obtained by methods totally different from those used in the case of standard (or finite) semiunification.
On Typability for Rank2 Intersection Types with Polymorphic Recursion ∗
"... We show that typability for a natural form of polymorphic recursive typing for rank2 intersection types is undecidable. Our proof involves characterizing typability as a context free language (CFL) graph problem, which may be of independent interest, and reduction from the boundedness problem for T ..."
Abstract

Cited by 3 (0 self)
 Add to MetaCart
(Show Context)
We show that typability for a natural form of polymorphic recursive typing for rank2 intersection types is undecidable. Our proof involves characterizing typability as a context free language (CFL) graph problem, which may be of independent interest, and reduction from the boundedness problem for Turing machines. We also show a property of the type system which, in conjunction with the undecidability result, disproves a misconception about the MilnerMycroft type system. We also show undecidability of a related program analysis problem. 1
The Architecture of an Implementation of λProlog: Prolog/Mali
, 1992
"... λProlog is a logic programming language accepting a more general clause form than standard Prolog (namely hereditary Harrop formulas instead of Horn formulas) and using simply typed λterms as a term domain instead of first order terms. Despite these extensions, it is still amenable to goaldirected ..."
Abstract

Cited by 2 (0 self)
 Add to MetaCart
λProlog is a logic programming language accepting a more general clause form than standard Prolog (namely hereditary Harrop formulas instead of Horn formulas) and using simply typed λterms as a term domain instead of first order terms. Despite these extensions, it is still amenable to goaldirected proofs and can still be given procedural semantics. However, the execution of λProlog programs requires several departures from the standard resolution scheme. First, the augmented clause form causes the program (a set of clauses) and the signature (a set of constants) to be changeable, but in a very disciplined way. Second, the new term domain has a semidecidable and infinitary unification theory, and it introduces the need for a fireduction operation at runtime. MALI is an abstract memory that is suitable for storing the searchstate of depthfirst search processes. Its main feature is its efficient memory management. We have used an original PrologtoC translation: predicates are trans...
A more direct algorithm for type inference in the rank2 fragment of the secondorder λcalculus
, 2006
"... We present an algorithm for rank2 type inference in the secondorder λcalculus. Our algorithm differs from the wellknown algorithm of Kfoury and Wells in that it employs only a quadratically fewer type variables and inequalities. Our algorithm consists of a translation from a λterm to an instanc ..."
Abstract

Cited by 2 (1 self)
 Add to MetaCart
(Show Context)
We present an algorithm for rank2 type inference in the secondorder λcalculus. Our algorithm differs from the wellknown algorithm of Kfoury and Wells in that it employs only a quadratically fewer type variables and inequalities. Our algorithm consists of a translation from a λterm to an instance of RASUP (a decidable superset of ASUP) in which the variables correspond more directly to features in the original term. We claim that our construction, being simpler and more direct, is more amenable to proof and extension. 1.
Type checking and inference are equivalent in lambda calculi with existential types
 In WFLP ’09: 18th International Workshop on Functional and (Constraint) Logic Programming
, 2009
"... Abstract. This paper shows that typechecking and typeinference problems are equivalent in domainfree lambda calculi with existential types, that is, typechecking problem is Turing reducible to typeinference problem and vice versa. In this paper, the equivalence is proved for two variants of doma ..."
Abstract

Cited by 1 (0 self)
 Add to MetaCart
(Show Context)
Abstract. This paper shows that typechecking and typeinference problems are equivalent in domainfree lambda calculi with existential types, that is, typechecking problem is Turing reducible to typeinference problem and vice versa. In this paper, the equivalence is proved for two variants of domainfree lambda calculi with existential types: one is an implication and existence fragment, and the other is a negation, conjunction and existence fragment. This result gives another proof of undecidability of type inference in the domainfree calculi with existence.