Results 1 -
4 of
4
Naive Reverse can be Linear
- 8th Int. Conf. Logic Programming
, 1991
"... We propose a new implementation of logic programming with higher-order terms. In order to illustrate the properties of our implementation, we apply the coding of lists as functions to the context of logic programming. As a side-effect, we show that higher-order unification is a good tool for manipul ..."
Abstract
-
Cited by 18 (5 self)
- Add to MetaCart
We propose a new implementation of logic programming with higher-order terms. In order to illustrate the properties of our implementation, we apply the coding of lists as functions to the context of logic programming. As a side-effect, we show that higher-order unification is a good tool for manipulating the function-lists. It appears that the efficiency of the program thus obtained relies critically upon the implementation of higher-order operations (unification and reduction). In particular, we show that a good choice for data-structures and reduction strategy yields a linear naive reverse. 1 Introduction The extension of Prolog to higher-order terms has been proposed by Miller and Nadathur[6]. The prototypal system is Prolog, of which we know two implementations: a Prolog based implementation and a Lisp based one. The first one was intended for experimental use and is very inefficient. We shall only refer to the Lisp based implementation. We propose another implementation in which ...
Higher Order Babel: Language and Implementation
- In editors Proc. 5th International Workshop on Extensions of Logic Programming ELP'96
, 1996
"... . We present the functional logic language Higher Order Babel which provides higher order unification for parameter passing and solving equations. When searching for a function which solves an equation, not only "polynomial functions" but also defined functions are taken into account. In contrast to ..."
Abstract
-
Cited by 11 (2 self)
- Add to MetaCart
. We present the functional logic language Higher Order Babel which provides higher order unification for parameter passing and solving equations. When searching for a function which solves an equation, not only "polynomial functions" but also defined functions are taken into account. In contrast to all other programming languages which support higher order unification HO-Babel replaces the expensive fi-reduction by the much more efficient combinator reduction. Moreover, HO-Babel is more homogeneous since it does not distinguish functions which only represent data structures and defined functions which are equipped with the full execution mechanism of the language. 1 Introduction In comparison to purely logic programming languages, integrated functional logic programming languages allow a more efficient implementation since functions are deterministic and this determinism can be exploited to reduce the search space. On the other hand, functional logic languages have more expressive po...
The Compilation of Prolog and its Execution with MALI
, 1993
"... We present a compiled implementation of Prolog that uses the abstract memory MALI for representing the execution state. Prolog is a logic programming language allowing a more general clause form than Standard Prolog 's (namely hereditary Harrop formulas instead of Horn formulas) and using simply ty ..."
Abstract
-
Cited by 11 (8 self)
- Add to MetaCart
We present a compiled implementation of Prolog that uses the abstract memory MALI for representing the execution state. Prolog is a logic programming language allowing a more general clause form than Standard Prolog 's (namely hereditary Harrop formulas instead of Horn formulas) and using simply typed -terms as a term domain instead of first order terms. The augmented clause form causes the program (a set of clauses) and the signature (a set of constants) to be changeable in a very disciplined way. The new term domain has a semi-decidable and infinitary unification theory, and it introduces the need for a fi-reduction operation at run-time. MALI is an abstract memory that is suitable for storing the search-state of depth-first search processes. Its main feature is its efficient memory management. We have used an original Prolog-to-C translation along which predicates are transformed into functions operating on continuations for handling failure and success in unifications, and change...
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 goal-directed ..."
Abstract
-
Cited by 1 (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 goal-directed 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 semi-decidable and infinitary unification theory, and it introduces the need for a fi-reduction operation at run-time. MALI is an abstract memory that is suitable for storing the search-state of depth-first search processes. Its main feature is its efficient memory management. We have used an original Prolog-to-C translation: predicates are trans...

