Results 1  10
of
15
NonFailure Analysis for Logic Programs
 ACM Transactions on Programming Languages and Systems
, 1997
"... We provide a method whereby, given mode and (upper approximation) type information, we can detect procedures and goals that can be guaranteed to not fail (i.e., to produce at least one solution or not terminate). The technique is based on an intuitively very simple notion, that of a (set of) tests & ..."
Abstract

Cited by 133 (14 self)
 Add to MetaCart
We provide a method whereby, given mode and (upper approximation) type information, we can detect procedures and goals that can be guaranteed to not fail (i.e., to produce at least one solution or not terminate). The technique is based on an intuitively very simple notion, that of a (set of) tests "covering" the type of a set of variables. We show that the problem of determining a covering is undecidable in general, and give decidability and complexity results for the Herbrand and linear arithmetic constraint systems. We give sound algorithms for determining covering that are precise and efficient in practice. Based on this information, we show how to identify goals and procedures that can be guaranteed to not fail at runtime. Applications of such nonfailure information include programming error detection, program transformations and parallel execution optimization, avoiding speculative parallelism and estimating lower bounds on the computational costs of goals, which can be used for ...
A framework of directionality for proving termination of logic programs
 Proc. JICSLP
, 1992
"... internet: ..."
(Show Context)
Type Dependencies for Logic Programs using ACIunification
 In Proceedings of the 1996 Israeli Symposium on Theory of Computing and Systems
, 1996
"... This paper presents a new notion of typing for logic programs which generalizes the notion of directional types. The generation of type dependencies for a logic program is fully automatic with respect to a given domain of types. The analysis method is based on a novel combination of program abstract ..."
Abstract

Cited by 43 (8 self)
 Add to MetaCart
(Show Context)
This paper presents a new notion of typing for logic programs which generalizes the notion of directional types. The generation of type dependencies for a logic program is fully automatic with respect to a given domain of types. The analysis method is based on a novel combination of program abstraction and ACIunification which is shown to be correct and optimal. Type dependencies are obtained by abstracting programs, replacing concrete terms by their types, and evaluating the meaning of the abstract programs using a standard semantics for logic programs enhanced by ACIunification. This approach is generic and can be used with any standard semantics. The method is both theoretically clean and easy to implement using general purpose tools. The proposed domain of types is condensing which means that analyses can be carried out in both topdown or bottomup frameworks with no loss of precision for goalindependent analyses. The proposed method has been fully implemented within a bottomup approach and the experimental results are promising.
Polymorphically Typed Logic Programs
 Types in Logic Programming
, 1991
"... We introduce polymorphically typed logic programs, an integration of a polymorphic type system with logic programs. The firstorder notion of predicates is extended to parametric predicates, which are parameterized by types. The type system accommodates both subtypes and parametric polymorphism. It ..."
Abstract

Cited by 28 (2 self)
 Add to MetaCart
(Show Context)
We introduce polymorphically typed logic programs, an integration of a polymorphic type system with logic programs. The firstorder notion of predicates is extended to parametric predicates, which are parameterized by types. The type system accommodates both subtypes and parametric polymorphism. It unifies features of valuebased and namebased approaches. The denotation of a typed logic program is given by its type completion, a transformation that incorporates explicit type conditions into a parametric logic program. The result of the transformation is a restricted form of a HiLog program. We give fixpoint semantics to our language (actually to full HiLog). We define a notion of welltyping, which relates type declarations for predicates in the program to an approximation of the denotation of the type completed program. We present a typechecking algorithm for verifying that a program is indeed welltyped. Finally we discuss some extensions to the type system.
The Type System of a HigherOrder Logic Programming Language
 TYPES IN LOGIC PROGRAMMING
, 1992
"... ..."
Practical Aspects of Set Based Analysis
, 1992
"... This paper demonstrates that very substantial progress can be made towards a practical system by redesigning the algorithms according to implementation criteria, designing appropriate representations techniques, and exploiting the redundancy which is typically present. An implementation is described ..."
Abstract

Cited by 22 (1 self)
 Add to MetaCart
This paper demonstrates that very substantial progress can be made towards a practical system by redesigning the algorithms according to implementation criteria, designing appropriate representations techniques, and exploiting the redundancy which is typically present. An implementation is described and experimental evidence is presented which suggests that set based analysis can be made practical for comprehensive and accurate analysis of logic programs. 1 Introduction The set based approach to program analysis [3, 4, 5] has its origins in the use of constraints to perform type analysis of programs [12, 8, 10]. In essence set based analysis involves first writing set constraints (a calculus for expressing relationships between sets of program values) to describe the runtime behaviour of a program, and then solving these constraints to find their least model. This approach uses a single notion of approximation: all dependencies between the values of program variables are ignored. A major advantage of set based analysis is that it provides a very accurate treatment of structures. In particular there is no a priori limit on the depth or shape of sets of terms that can be represented
A FirstOrder Theory of Types and Polymorphism in Logic Programming
 Department of Computer Science, University at Stony Brook
, 1990
"... We describe a new logic called typed predicate calculus (T PC) that gives declarative meaning to logic programs with type declarations and type inference. T PC supports all popular types of polymorphism, such as parametric, inclusion, and ad hoc polymorphism. The proper interaction between parametri ..."
Abstract

Cited by 12 (5 self)
 Add to MetaCart
(Show Context)
We describe a new logic called typed predicate calculus (T PC) that gives declarative meaning to logic programs with type declarations and type inference. T PC supports all popular types of polymorphism, such as parametric, inclusion, and ad hoc polymorphism. The proper interaction between parametric and inclusion varieties of polymorphism is achieved through a new construct, called type dependency, which is reminiscent of implication types of [PR89] but yields more natural and succinct specifications. Unlike other proposals where typing has extralogical status, in T PC the notion of typecorrectness has precise modeltheoretic meaning that is independent of any specific typechecking or typeinference procedure. Moreover, many different approaches to typing that were proposed in the past can be studied and compared within the framework of our logic. As an illustration, we apply T PC to interpret and compare the results reported in [MO84, Smo88, HT90, Mis84, XW88]. Another novel featu...
Type Checking and Type Inferencing for Logic Programs with Subtypes and Parametric Polymorphism
 Subtypes and Parametric Polymorphism, Informatik Berichte 200, Fern Universitat
, 1996
"... We analyze basic shortcomings of existing proposals for type checking and type inferencing in logic programming languages. A new type system is presented using simple and declarative type annotations. It includes parametric polymorphism and subtyping. Static type checking and inferencing within the ..."
Abstract

Cited by 10 (3 self)
 Add to MetaCart
We analyze basic shortcomings of existing proposals for type checking and type inferencing in logic programming languages. A new type system is presented using simple and declarative type annotations. It includes parametric polymorphism and subtyping. Static type checking and inferencing within the new type system is able to detect more programming errors than in other comparable systems. Our approach is independent of a specific resolution calculus and therefore applicable to a wide range of logic languages. A type inferencing algorithm is presented for reconstructing variable typings. As a concrete instance, the results were applied to unrestricted standard Prolog with type annotations, for which a type checking and type inferencing tool is available. This report is part of the documentation for a type checking tool available at !URL:http://www.fernunihagen.de/pi8/typical/?. It is complemented by a report "On the Use of Types in Logic Programming" [Mey96]. Research supported by ...
An Experiment in Domain Refinement: Type Domains and Type Representations for Logic Programs
, 1998
"... We apply the methodology of domain refinement to systematically derive domains for type analysis. Domains are built by iterative application of the Heyting completion operator to a given set of basic types. We give a condition on the type system which assures that two steps of iteration are suffici ..."
Abstract

Cited by 7 (3 self)
 Add to MetaCart
We apply the methodology of domain refinement to systematically derive domains for type analysis. Domains are built by iterative application of the Heyting completion operator to a given set of basic types. We give a condition on the type system which assures that two steps of iteration are sufficient to reach the fixpoint. Moreover, we provide a general representation for type domains through transfinite formulas. Finally, we show a subset of finite formulas which can be used as a computationally feasible implementation of the domains and we define the corresponding abstract operators.
Polymorphic Types in HigherOrder Logic Programming
, 1993
"... This paper analyses the requirements to the notion of type correctness in logic programming and proposes several "adequacy" criteria for such a system. We then present a type theory for a higherorder logic programming language, HiLog [5], which is adequate in that sense. The proposed type ..."
Abstract

Cited by 4 (2 self)
 Add to MetaCart
(Show Context)
This paper analyses the requirements to the notion of type correctness in logic programming and proposes several "adequacy" criteria for such a system. We then present a type theory for a higherorder logic programming language, HiLog [5], which is adequate in that sense. The proposed type system not only captures type errors of syntactic origin, but also ensures that all atoms true in a canonical model (such as the perfect model or the wellfounded partial model) of a welltyped program are welltyped. Furthermore, type dependencies among arguments of functions and/or predicates are incorporated into the definition of welltyped terms and atoms, so that the benefits of both parametric and inclusion polymorphism are preserved. Finally types are treated as firstclass objects and type declarations can be queried directly by users, making it a suitable framework for schema integration of heterogeneous databases. Keywords: types, inclusion and parametric polymorphism, type dependency, arg...