Results 1  10
of
18
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 30 (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
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 6 (0 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
 Journal of Functional and Logic Programming
, 1999
"... We enrich the domain Pos used for the static analysis of Prolog programs by combining it with types. We adopt the prescriptive view on typing, and we assume that programs are welltyped in an already existing type system. Typed static analysis of Typed Prolog programs gives access to more refined pr ..."
Abstract

Cited by 6 (1 self)
 Add to MetaCart
We enrich the domain Pos used for the static analysis of Prolog programs by combining it with types. We adopt the prescriptive view on typing, and we assume that programs are welltyped in an already existing type system. Typed static analysis of Typed Prolog programs gives access to more refined properties than untyped analysis because types give information on the inductive structure of terms that untyped static analysis does not discover. The increased refinement is not in variables assigned to true (e.g., variable recognized as bound to ground terms), but rather in variables not assigned to true; theycan be assigned a more informative value than false. For instance, the proposed analysis can show that a variable is bound to a nilterminated list whose elements are not necessarily ground. We contend that this kind of property is sometimes more useful than groundness. Because 1 of constructors of compound types, e.g., list, the typed abstract domain can be infinite, but we show that if the socalled headcondition is satisfied by the analyzed program, then only a finite part of the domain is used. 1
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.
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 form ..."
Abstract

Cited by 3 (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. 1 Module syntax should be declarative Several modern p...