Results 21  30
of
43
Type Inference for Recursive Definitions
 In Proc. 14th Ann. IEEE Symp. Logic in Comput. Sci
, 2000
"... 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 enco ..."
Abstract

Cited by 2 (1 self)
 Add to MetaCart
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. Keywords: type systems, type inference, lambda calculus, unification, software specification. 1 Introduction 1.1 Background and Motivation Type inference, the ...
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 2 (1 self)
 Add to MetaCart
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
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
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.
Deadlock analysis of concurrent objects: Theory and practice,” 2013, submitted. Available at www.cs.unibo.it/ laneve
"... Abstract. We present a framework for statically detecting deadlocks in a concurrent object language with asynchronous invocations and operations for getting values and releasing the control. Our approach is based on the integration of two static analysis techniques: (i) an inference algorithm to ext ..."
Abstract

Cited by 2 (2 self)
 Add to MetaCart
Abstract. We present a framework for statically detecting deadlocks in a concurrent object language with asynchronous invocations and operations for getting values and releasing the control. Our approach is based on the integration of two static analysis techniques: (i) an inference algorithm to extract abstract descriptions of methods in the form of behavioral types, called contracts, and (ii) an evaluator that computes a fixpoint semantics returning a finite state model of contracts. A potential deadlock is detected when a circular dependency is found in some state of the model. We discuss the theory and the prototype implementation of our framework. Our tool is validated on an industrial case study based on the Fredhopper Access Server (FAS) developed by SDL Fredhoppper. In particular we verify one of the core concurrent components of FAS to be deadlockfree. 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...
Polymorphic Type Checking by Interpretation of Code
, 1992
"... The type system of most modern functional programming languages is based on Milner's polymorphism. A compiler or interpreter usually checks (or infers) the types of functions and other values by directly inspecting the source code of a program. Here, another approach is taken: The program is firs ..."
Abstract

Cited by 1 (0 self)
 Add to MetaCart
The type system of most modern functional programming languages is based on Milner's polymorphism. A compiler or interpreter usually checks (or infers) the types of functions and other values by directly inspecting the source code of a program. Here, another approach is taken: The program is first translated into code for a stack machine and then a nonstandard interpreter applied to this code checks (or infers) the type of the corresponding values. This can be seen as an abstract interpretation of the object code of the program. 1 Introduction In the early days of Functional Programming in the 1960's, functional programming languages did not have any proper concept of type; they (Lisp, ISWIM [10]) were typeless. Classical, monomorphic typesystems are restrictive in the sense that they only support the solution of concrete problems, but not problem schemes. But it is characteristic for the style of Functional Programming to solve problems in an abstract way, and thus a monomor...
Weak Subsumption Constraints for Type Diagnosis: An Incremental Algorithm (Extended Abstract)
 In Joint COMPULOGNET /ELSNET/EAGLES Workshop on Computational Logic for Natural Language Processing
, 1995
"... ) Martin Muller Joachim Niehren y German Research Center for Artificial Intelligence (DFKI) Stuhlsatzenhausweg 3, 66123 Saarbrucken, Germany fmmueller,niehreng@dfki.unisb.de March 15, 1995 Abstract We introduce constraints necessary for type checking a higherorder concurrent constraint lan ..."
Abstract

Cited by 1 (1 self)
 Add to MetaCart
) Martin Muller Joachim Niehren y German Research Center for Artificial Intelligence (DFKI) Stuhlsatzenhausweg 3, 66123 Saarbrucken, Germany fmmueller,niehreng@dfki.unisb.de March 15, 1995 Abstract We introduce constraints necessary for type checking a higherorder concurrent constraint language, and solve them with an incremental algorithm. Our constraint system extends rational unification by constraints x`y saying that "x has at least the structure of y", modelled by a weak instance relation between trees. This notion of instance has been carefully chosen to be weaker than the usual one which renders semiunification undecidable. Semiunification has more than once served to link unification problems arising from type inference and those considered in computational linguistics. Just as polymorphic recursion corresponds to subsumption through the semiunification problem, our type constraint problem corresponds to weak subsumption of feature graphs in linguistics. The decida...
Avoiding Dynamic Type Checking in a Polymorphic Logic Programming Language
"... For obvious efficiency reasons, it is good to avoid dynamic typechecking in a programming language. The Prolog type system proposed by Mycroft and O'keefe has some good properties which avoid such a runtime overhead. One of this property called type preserving or transparency is a restriction of th ..."
Abstract

Cited by 1 (0 self)
 Add to MetaCart
For obvious efficiency reasons, it is good to avoid dynamic typechecking in a programming language. The Prolog type system proposed by Mycroft and O'keefe has some good properties which avoid such a runtime overhead. One of this property called type preserving or transparency is a restriction of the polymorphism. This restriction is not compatible with some programming techniques, for example with higherorder predicates.
Documentation for polyrec_sml: An Extension SML With Typechecking For Polymorphic Recursion
, 1995
"... this documentation. The fault for remaining errors remains with the author. The implementation described here was created with the support of DFG project `Semiunifikation' Le 788/12. ..."
Abstract

Cited by 1 (1 self)
 Add to MetaCart
this documentation. The fault for remaining errors remains with the author. The implementation described here was created with the support of DFG project `Semiunifikation' Le 788/12.
The RAcyclic Semiunification Problem
, 2006
"... We recast Kfoury and Wells ’ formulation of the acyclic semiunification problem (ASUP) in graphtheoretic terms and prove equivalence between the two formulations. We then relax and simplify the graphtheoretic formulation; we call the resulting problem the Racyclic semiunification problem (RASUP), ..."
Abstract

Cited by 1 (1 self)
 Add to MetaCart
We recast Kfoury and Wells ’ formulation of the acyclic semiunification problem (ASUP) in graphtheoretic terms and prove equivalence between the two formulations. We then relax and simplify the graphtheoretic formulation; we call the resulting problem the Racyclic semiunification problem (RASUP), which we show to be a strict superset of ASUP. We prove that the ASUP solution procedure terminates and produces most general solutions for RASUP (and hence for ASUP) in the same sense as Robinson’s unification algorithm. We thus extend the class of semiunification instances known to be decidable. 1