Results 1  10
of
28
Higherorder logic programming
 HANDBOOK OF LOGIC IN AI AND LOGIC PROGRAMMING, VOLUME 5: LOGIC PROGRAMMING. OXFORD (1998
"... ..."
HigherOrder Concurrent Linear Logic Programming
 In Theory and Practice of Parallel Programming
, 1995
"... . We propose a typed, higherorder, concurrent linear logic programming called higherorder ACL, which uniformly integrates a variety of mechanisms for concurrent computation based on asynchronous message passing. Higherorder ACL is based on a proof search paradigm according to the principle, p ..."
Abstract

Cited by 31 (8 self)
 Add to MetaCart
. We propose a typed, higherorder, concurrent linear logic programming called higherorder ACL, which uniformly integrates a variety of mechanisms for concurrent computation based on asynchronous message passing. Higherorder ACL is based on a proof search paradigm according to the principle, proofs as computations, formulas as processes in linear logic. In higherorder ACL, processes as well as functions, and other values can be communicated via messages, which provides high modularity of concurrent programs. Higherorder ACL can be viewed as an asynchronous counterpart of Milner's higherorder, polyadic  calculus. Moreover, higherorder ACL is equipped with an elegant MLstyle type system that ensures (1) well typed programs can never cause type mismatch errors, and (2) there is a type inference algorithm which computes a most general typing for an untyped term. We also demonstrate a power of higherorder ACL by showing several examples of "higherorder concurrent prog...
Implementing Polymorphic Typing in a Logic Programming Language
 COMPUTER LANGUAGES
, 1993
"... Introducing types into a logic programming language leads to the need for typed unification within the computation model. In the presence of polymorphism and higherorder features, this aspect forces analysis of types at runtime. We propose extensions to the Warren Abstract Machine (WAM) that permi ..."
Abstract

Cited by 18 (11 self)
 Add to MetaCart
Introducing types into a logic programming language leads to the need for typed unification within the computation model. In the presence of polymorphism and higherorder features, this aspect forces analysis of types at runtime. We propose extensions to the Warren Abstract Machine (WAM) that permit such analysis to be done with reasonable efficiency. Much information about the structures of types is present at compiletime, and we show that this information can be used to considerably reduce the work during execution. We illustrate our ideas in the context of a typed version of Prolog. We describe a modified representation for terms, new instructions and additional data areas that in conjunction with existing WAM structures suffice to implement this language. The nature of compiled code is illustrated through examples, and the kind of runtime overheads that are incurred for processing types is analyzed, especially in those cases where others have shown that type checking can be eliminated during execution. The ideas
Implementation Considerations for HigherOrder Features in Logic Programming
, 1993
"... This paper examines implementation problems that arise from providing for aspects of higherorder programming within and enhancing the metalanguage abilities of logic programming. One issue of concern is a representation for the simplytyped lambda terms that replace the usual firstorder terms as ..."
Abstract

Cited by 14 (10 self)
 Add to MetaCart
This paper examines implementation problems that arise from providing for aspects of higherorder programming within and enhancing the metalanguage abilities of logic programming. One issue of concern is a representation for the simplytyped lambda terms that replace the usual firstorder terms as data structures; this representation must support an efficient realization of ...conversion operations on these terms. Another issue is the handling of higherorder unification that becomes an integral part of the computational model. An implementation must cater to the branching nature of this operation and also provide a means for temporarily suspending the solution of a unification problem. A final issue concerns the treatment of goals whose structure is not statically apparent. These problems are discussed in detail and solutions to them are described. A representation for lambda terms is presented that uses the de Bruijn "nameless" notation and also permits reduction substitutions to be performed lazily. This notation obviates ...conversion and also supports an efficient implementation of ...reduction. Branching in unification is implemented by using a depthfirst search strategy with backtracking. A structure that is called a branch point record and is akin to the choice point record of the Warren Abstract Machine (WAM) is described for remembering alternatives in unification. An explicit representation for unification problems is presented that permits sharing and also supports the rapid reinstatement of earlier versions of the problem. The implementation of unification is tuned to yield an efficient solution to firstorder like problems, in fact through the use of compiled code as in the WAM. A compilation method is also discussed for goals whose structure changes during execution. Th...
Implementing a Notion of Modules in the Logic Programming Language Prolog
 In Evelina Lamma and Paola Mello, editors, Extensions of Logic Programming: Proceedings of the Third International Workshop
, 1993
"... Issues concerning the implementation of a notion of modules in the higherorder logic programming language Prolog are examined. A program in this language is a composite of type declarations and procedure definitions. The module construct that is considered permits large collections of such declarat ..."
Abstract

Cited by 10 (1 self)
 Add to MetaCart
(Show Context)
Issues concerning the implementation of a notion of modules in the higherorder logic programming language Prolog are examined. A program in this language is a composite of type declarations and procedure definitions. The module construct that is considered permits large collections of such declarations and definitions to be decomposed into smaller units. Mechanisms are provided for controlling the interaction of these units and for restricting the visibility of names used within any unit. The typical interaction between modules has both a static and a dynamic nature. The parsing of expressions in a module might require declarations in a module that it interacts with, and this information must be available during compilation. Procedure definitions within a module might utilize procedures presented in other modules and support must be provided for making the appropriate invocation during execution. Our concern here is largely with the dynamic aspects of module interaction. We describe a...
Typed HigherOrder Concurrent Linear Logic Programming
, 1994
"... We propose a typed, higherorder, concurrent linear logic programming called higherorder ACL, which uniformly integrates a variety of mechanisms for concurrent computation based on asynchronous message passing. Higherorder ACL is based on a proof search paradigm according to the principle, proofs ..."
Abstract

Cited by 7 (1 self)
 Add to MetaCart
We propose a typed, higherorder, concurrent linear logic programming called higherorder ACL, which uniformly integrates a variety of mechanisms for concurrent computation based on asynchronous message passing. Higherorder ACL is based on a proof search paradigm according to the principle, proofs as computations, formulas as processes in linear logic. In higherorder ACL, processes as well as functions, and other values can be communicated via messages, which provides high modularity of concurrent programs. Higherorder ACL can be viewed as an asynchronous counterpart of Milner's higherorder, polyadic ßcalculus. Moreover, higherorder ACL is equipped with an elegant MLstyle type system that ensures (1) well typed programs can never cause type mismatch errors, and (2) there is a type inference algorithm which computes a most general typing for an untyped term. We also demonstrate a power of higherorder ACL by showing several examples of "higherorder concurrent programming." ANY O...
Typed static analysis: Application to groundness analysis of Prolog and lambdaProlog
 In Procs. of FLOPS99, LNCS 1722
, 1999
"... ..."
(Show Context)
A Proposal for Modules in λProlog
 WORKSHOP EXTENSIONS OF LOGIC PROGRAMMING, LNAI 798
, 1993
"... Higherorder hereditary Harrop formulas, the underlying logical foundation of λProlog [NM88], are more expressive than firstorder Horn clauses, the logical foundation of Prolog. In particular, various forms of scoping and abstraction are supported by the logic of higherorder hereditary Harrop formu ..."
Abstract

Cited by 4 (0 self)
 Add to MetaCart
Higherorder hereditary Harrop formulas, the underlying logical foundation of λProlog [NM88], are more expressive than firstorder Horn clauses, the logical foundation of Prolog. In particular, various forms of scoping and abstraction are supported by the logic of higherorder hereditary Harrop formulas while they are not supported by firstorder Horn clauses. Various papers have argued that the scoping and abstraction available in this richer logic can be used to provide for modular programming [Mil89b], abstract data types [Mil89a], and state encapsulation [HM90]. None of these papers, however, have dealt with the problems of programminginthelarge, that is, the essentially linguistic problems of putting together various different textual sources of code found, say, in different files on a persistent store into one logic program. In this paper, I propose a module system for λProlog and shall focus mostly on its static semantics.
A Treatment of HigherOrder Features in Logic Programming
, 2003
"... The logic programming paradigm provides the basis for a new intensional view of higherorder notions. This view is realized primarily by employing the terms of a typed lambda calculus as representational devices and by using a richer form of unification for probing their structures. These additions ..."
Abstract

Cited by 4 (0 self)
 Add to MetaCart
The logic programming paradigm provides the basis for a new intensional view of higherorder notions. This view is realized primarily by employing the terms of a typed lambda calculus as representational devices and by using a richer form of unification for probing their structures. These additions have important metaprogramming applications but they also pose nontrivial implementation problems. One issue concerns the machine representation of lambda terms suitable to their intended use: an adequate encoding must facilitate comparison operations over terms in addition to supporting the usual reduction computation. Another aspect relates to the treatment of a unification operation that has a branching character and that sometimes calls for the delaying of the solution of unification problems. A final issue concerns the execution of goals whose structures becomes apparent only in the course of computation. These various problems are exposed in this paper and solutions to them are described. A satisfactory representation for lambda terms is developed by exploiting the nameless notation of de Bruijn as well as explicit encodings of substitutions. Special mechanisms are molded into the structure of traditional Prolog implementations to support branching in unification and carrying of unication problems over other computation steps; a premium is placed in this context on exploiting determinism and on emulating usual firstorder behaviour. An extended compilation model is presented that treats higherorder unification and also handles dynamically emergent goals. The ideas described here have been employed in the Teyjus implementation of the Prolog language, a fact that is used to obtain a preliminary assessment of their efficacy.
Parametric Polymorphism for Typed Prolog and λProlog
 PROCEEDINGS OF THE 8TH SYMPOSIUM ON PROGRAMMING LANGUAGE IMPLEMENTATIONS AND LOGIC PROGRAMMING, VOLUME 1140 OF LNCS
, 1996
"... Typed Prolog and λProlog are logic programming languages with a strict typing discipline which is based on simple types with variables. Experiments show that this discipline does not handle properly common logic programming practices used in Prolog. For instance, the usual transformation for computi ..."
Abstract

Cited by 3 (1 self)
 Add to MetaCart
Typed Prolog and λProlog are logic programming languages with a strict typing discipline which is based on simple types with variables. Experiments show that this discipline does not handle properly common logic programming practices used in Prolog. For instance, the usual transformation for computing the Clark completion of a Prolog program does not work well with some typed programs. We observe that the socalled headcondition is at the heart of these problems, and conclude that it should be enforced. We propose a secondorder scheme which is compatible with usual practices. It allows quantifying types and terms, passing type and term parameters to goals and terms, and to express type guards for selecting goals. We give its syntax and deduction rules, and propose a solution to keep the concrete notation of programs close to the usual one.