16 citations found. Retrieving documents...
P. Brisset and O. Ridoux. Naive reverse can be linear. In K. Furukawa, editor, Eighth International Logic Programming Conference, pages 857-870. MIT Press, June 1991.

 Home/Search   Document Details and Download   Summary   Related Articles   Check  

This paper is cited in the following contexts:
The Metalanguage Prolog and Its Implementation - Nadathur   (Correct)

....external redexes can a ect them. These annotations can permit reading steps to be carried out trivially in certain cases, leading also to a conservation of space and, possibly, a greater sharing in graph based reduction. Bene ts such as these have been noted to be signi cant in practice [3], a fact con rmed also by our early studies using the Teyjus system. 3.2 Supporting Higher Order Uni cation The framework for organizing the uni cation computation relating to lambda terms is given by a procedure due to Huet [8] This procedure considers a set of pairs of terms of the same ....

P. Brisset and O. Ridoux. Naive reverse can be linear. In K. Furukawa, editor, Eighth International Logic Programming Conference, pages 857-870. MIT Press, June 1991.


Logic Programming with Monads and Comprehensions - Bekkers, Tarau   (Correct)

....For instance, the goal bindList [1,2,3] dupList R. will instantiate R to [1,1,2,2,3,3] 3 It is easy to verify (and actually programmable in Prolog) that all the monad axioms and properties of [16, 17] hold for our definitions. 2. 2 The monad of lazy function lists in Prolog Lazy function lists [4] are a surprising but natural difference data structure which among other properties allows linear performance on apparently quadratic predicates like the well known naive reverse Prolog benchmark [4] Basically this is achieved by a lazy implementation of fi reduction. We refer to [3, 4] ....

....for our definitions. 2. 2 The monad of lazy function lists in Prolog Lazy function lists [4] are a surprising but natural difference data structure which among other properties allows linear performance on apparently quadratic predicates like the well known naive reverse Prolog benchmark [4]. Basically this is achieved by a lazy implementation of fi reduction. We refer to [3, 4] for the details of their operational semantics. A simple example (which can be seen as a unit operator) is x z [x z] which applied to 1 gives z[1 z] The following program 1 implements the monad of ....

[Article contains additional citation context not shown here]

P. Brisset and O. Ridoux. Naive reverse can be linear. In K. Furukawa, editor, 8th Int. Conf. Logic Programming, pages 857--870, Paris, France, 1991. MIT Press. ftp: //ftp.irisa.fr/local/lande.


Scoping Constructs in Logic Programming: Implementation.. - Nadathur, Jayaraman.. (1993)   (14 citations)  (Correct)

....language that manifests these features and consequently has several novel capabilities in comparison with a language like Prolog. The usefulness of these capabilities has lead to a significant interest in the language and systems have been developed that implement Prolog or a close relative of it [1, 3, 16]. These systems notwithstanding, there has been little discussion of implementation techniques that are well suited to such a language 1 . The considerations in this paper are part of an effort that focuses on precisely this issue, with the ultimate goal of providing an efficient and robust ....

....it is clear that rev aux must be an auxiliary definition for rev. Finally, while the definition of rev aux is not available at the top level, the informal semantics of implication ensures that it is available when solving the body of rev. For instance, consider the invocation of a goal such as rev([1,2,3],L) This ultimately results in the goal rev aux( 1,2,3] L, after the program has been dynamically augmented with the formula (8L rev aux( L,L) 8X8L18L28L3 (rev aux( X L1] L2,L3) rev aux(L1,L2, X L3] The universal quantifiers and conjunction can be made implicit at this ....

[Article contains additional citation context not shown here]

Pascal Brisset and Olivier Ridoux. Naive reverse can be linear. In Koichi Furukawa, editor, Eighth International Logic Programming Conference, pages 857--870, Paris, France, June 1991. MIT Press.


Implementation Considerations for Higher-Order Features in.. - Nadathur, Wilson (1993)   (5 citations)  (Correct)

....that manifests these features and consequently has several novel capabilities in comparison with a language like Prolog. The usefulness of these capabilities has lead to a significant interest in the language and several systems have been developed that implement Prolog or a close relative of it [4, 10, 11, 27]. These systems notwithstanding, a detailed consideration has not been given in the past to the design of implementation techniques that are well suited to such a language 1 . The discussions in this paper are part of an effort that focuses on precisely this issue, with the ultimate goal of ....

.... that we have done concerning the treatment of implications and universal quantifiers in goals [19, 29] and types [21] The higher order additions that we consider here allow for a quantification over predicate and function variables and for the use of (typed) lambda terms 1 The discussions in [4] are in a sense an exception: issues such as memory management are considered there and certain optimizations are indicated especially with regard to implementing reduction on lambda terms. However, even these considerations are not detailed enough to the extent of yielding an abstract machine for ....

[Article contains additional citation context not shown here]

Pascal Brisset and Olivier Ridoux. Naive reverse can be linear. In Koichi Furukawa, editor, Eighth International Logic Programming Conference, pages 857--870, Paris, France, June 1991. MIT Press.


Scoping Constructs in Logic Programming: Implementation.. - Nadathur, Jayaraman.. (1995)   (14 citations)  (Correct)

....language that manifests these features and consequently has several novel capabilities in comparison with a language like Prolog. The usefulness of these capabilities has lead to a significant interest in the language and systems have been developed that implement Prolog or a close relative of it [2, 4, 21]. These systems notwithstanding, there has been little discussion of techniques that are well suited to the implementation of such a language. 1 The considerations in this paper are part of an effort that focuses on precisely this issue, with the ultimate goal of providing an efficient and ....

....that rev aux must be an auxiliary definition for rev. Finally, while the definition of rev aux is not available at the top level, the semantics described for implication ensures that it will become available in the course of solving the body of rev. Thus, consider the invocation of the goal rev([1,2,3],L) This results in the goal rev aux( 1,2,3] L, being invoked after the program has been dynamically augmented with the formula (8L rev aux( L,L) 8X 8L1 8L2 8L3 (rev aux( X L1] L2,L3) rev aux(L1,L2, X L3] The universal quantifiers and conjunction can now be made implicit, ....

[Article contains additional citation context not shown here]

Pascal Brisset and Olivier Ridoux. Naive reverse can be linear. In Koichi Furukawa, editor, Eighth International Logic Programming Conference, pages 857--870, Paris, France, June 1991. MIT Press.


A Notation for Lambda Terms II: Refinements and Applications - Nadathur (1994)   (8 citations)  (Correct)

....substitutions in this manner also has auxiliary benefits: it can lead to a conservation of space and can also foster a greater sharing of work in a graph based implementation of reduction that uses our notation. These benefits can be significant in practice, e.g. in the implementation of Prolog [BR91] This paper complements [NW93] in a second respect: it considers applications for the notation(s) developed. The suspension notation is intended to serve as a substrate upon which coarser grained representations for lambda terms may be developed and shown to be correct. The use of this notation ....

....a benefit in some other context. Furthermore, the propagation of the substitution would eventually result in the replication of the entire structure of the term ( t 1 ) t 2 ) The unnecessary use of space and time in computing such substitutions has been noted to be significant in practice [BR91] and the simplification rules presented in this section are of value from this perspective. 6 A refinement to the suspension notation We now describe a refinement to the suspension notation that incorporates within it the discussions of the last two sections. One aspect of this refinement is ....

Pascal Brisset and Olivier Ridoux. Naive reverse can be linear. In Koichi Furukawa, editor, Eighth International Logic Programming Conference, pages 857--870, Paris, France, June 1991. MIT Press.


An Explicit Substitution Notation in a lamdaProlog Implementation - Nadathur (1998)   (Correct)

....out trivially in certain situations. Eoeecting substitutions in this manner can also have other bene ts: it can lead to a conservation of space and can foster a greater sharing of work in a graph based implementation of reduction. Bene ts such as these have been noted to be signi cant in practice [BR91]. In the rest of this abstract, we describe the annotated suspension notation, present a stack based procedure for head normalizing terms in this notation and explain how these aspects t into an implementation of higher order uni cation. All the devices sketched here have been used in a C based ....

Pascal Brisset and Olivier Ridoux. Naive reverse can be linear. In Koichi Furukawa, editor, Eighth International Logic Programming Conference, pages 857 870, Paris, France, June 1991. MIT Press.


Higher-Order Logic Programming - Nadathur, Miller (1986)   (93 citations)  (Correct)

.... that a further discussion of some of these aspects may be found in [Nad87] that a detailed presentation of a particular interpreter appears in [EP91] that a class of terms with interesting unifiability properties is studied in [Mil91] and that ideas relevant to compilation are explored in [BR91, KNW94, NJK94, NJW93]. 7 Examples of Higher Order Programming In this section, we present some programs in our higher order language that use predicate variables and terms of predicate type. We begin this discussion by describing a concrete syntax that will be used in the examples in this and later sections. We ....

Pascal Brisset and Olivier Ridoux. Naive reverse can be linear. In Eighth International Logic Programming Conference, Paris, France, June 1991. MIT Press.


A Fine-Grained Notation for Lambda Terms and Its Use in.. - Nadathur (1996)   (11 citations)  (Correct)

....substitutions in this manner can also have other benefits: it can lead to a conservation of space and can foster a greater sharing of work in a graph based implementation of reduction that uses our notation. These benefits can be significant in practice, e.g. in the implementation of Prolog [BR91] This paper also considers the use of the notation developed in the comparison of lambda terms. This task is of special significance to us because it is a part of several operations on lambda terms that become important when they are employed as representational devices. The comparison of ....

....providing a benefit in some other context. Furthermore, the propagation of the substitution eventually results in the replication of the entire structure of the term ( t 1 ) t 2 ) The unnecessary use of space and time in computing such substitutions has been noted to be significant in practice [BR91] and the simplification rules presented in this section are of value from this perspective. 6 A refinement to the suspension notation We now modify the suspension notation to take into account the discussions of the last two sections. One aspect of this modification is a restriction to simple ....

Pascal Brisset and Olivier Ridoux. Naive reverse can be linear. In Koichi Furukawa, editor, Eighth International Logic Programming Conference, pages 857-- 870, Paris, France, June 1991. MIT Press.


A Pragmatic Reconstruction of λProlog - Belleannée, Brisset, Ridoux (1994)   Self-citation (Brisset Ridoux)   (Correct)

.... the domain of Prolog terms is essentially equivalent to ML Gamma (ML minus letrec) This domain allows us to program extended polynomial functions only [26] For instance, lists can be encoded as terms such that their concatenation amounts to composing the terms that represent the lists [9]. In fact, the computing power of a language whose syntax is based on simply typed terms must come from something else. What gives Prolog or Prolog their computing power is their recursive definite clauses. So, functions must generally be programmed as predicates. In other words, fi reduction in ....

....Prolog does not permit free variables as arguments of a predicate; non bound symbols are either names of constants in C t , or names of variables bound by implicit 8D s. One can also show that computation keeps this property true of binding values of logical variables and of arguments of goals [9]; they cannot contain free occurrence of variables. The impossibility of having free occurrences of variables in the goals that are consequences of a program can be phrased as follows: the computation domain of Prolog, its Herbrand universe , consists of the combinators (see Section 2.1.4) of ....

[Article contains additional citation context not shown here]

P. Brisset and O. Ridoux. Naive reverse can be linear. In K. Furukawa, editor, 8th Int. Conf. Logic Programming, pages 857--870, MIT Press, 1991.


A Pragmatic Reconstruction of λProlog - Belleannée, Brisset, Ridoux (1994)   Self-citation (Brisset Ridoux)   (Correct)

....does not permit free variables in the arguments of a goal; non bound symbols are either names of constants in C t , or names of variables bound by implicit 8D s. One can also show that computation keeps this property true of binding values of free existential variables and of arguments of goals [7]; they cannot contain free occurrence of variables. The impossibility of having free occurrences of variables in the goals that are consequences of a program can be phrased as follows: the computation domain of Prolog, its Herbrand universe , consists of the combinators (see Section 2.1.2) of ....

....is used to store intermediate results that are fetched during a computation. Functional data structures are another important idiom. They play in Prolog a role similar to incomplete data structures in Prolog (e.g. difference lists) but they allow for a more declarative programming style [7]. Our reconstruction insists on a symmetry between abstraction and universal quantification in goals. This may not be the case in other idioms. For instance, when the positions of abstractions are predetermined, one can go through them simply using higher order unification like in the following ....

P. Brisset and O. Ridoux. Naive reverse can be linear. In K. Furukawa, editor, 8th Int. Conf. Logic Programming, pages 857--870, MIT Press, 1991.


The Architecture of an Implementation of λProlog.. - Brisset, Ridoux (1992)   (2 citations)  Self-citation (Brisset Ridoux)   (Correct)

....that once a combinator is detected it is safe to tag it as such. Tagging amounts to having more sorts for representing the terms of the cross product (combinator non combinator) Theta(abstraction application) This improvement is fundamental and changes the complexity of useful Prolog predicates [9]. It is not committed to our architecture; it only has to do with reduction. 4.1.4 unification The now conventional names for the different procedures of unification are SIMPL, MATCH and TRIV. We add UNIF1 and a specialised unification command of the SIM for every kind of term constructors. ....

....of the exchanging trick: type list2flist (list A) list A) list A) o. list2flist L FL : pi list (conc L list (FL list) P. Brisset and O. Ridoux 13 The predicate relates the standard representation of a list (say [1,2,3] and its functional representation (z [1,2,3 z] [9]. Folding representations The logic of unification is to find a substitution making two terms equal. If they are equal then they can share the same representation. We have seen that both abstractions and non first order applications are represented by muterms. So, it is easy to make the two terms ....

[Article contains additional citation context not shown here]

P. Brisset and O. Ridoux. Naive reverse can be linear. In K. Furukawa, editor, 8th Int. Conf. Logic Programming, pages 857--870, MIT Press, Paris, France, 1991. ftp: //ftp.irisa.fr/local/lande/pbor iclp91.ps.Z.


A Pragmatic Reconstruction of λProlog - Belleannée, Brisset, Ridoux (1994)   Self-citation (Brisset Ridoux)   (Correct)

....concatenation. Indeed, term CONC is exactly the composition combinator of the calculus. Many other useful combinators can be defined for functional lists: NIL def = znz, UNIT def = enzn[e z] and CONS def = enlnzn[e (l z) The monoid structure can be encoded using these combinators [8]. Concatenation is a function, and no longer a relation. The price to pay is to represent the elements of the monoid using functional lists. It is easy to show that CONC and NIL satisfy the axioms of the monoid structure. One may even write these axioms in Prolog: type monoid M (M M M) ....

P. Brisset and O. Ridoux. Naive reverse can be linear. In K. Furukawa, editor, 8th Int. Conf. Logic Programming, pages 857--870, MIT Press, 1991.


The Architecture of an Implementation of λProlog.. - Brisset, Ridoux (1994)   (2 citations)  Self-citation (Brisset Ridoux)   (Correct)

....that once a combinator is detected it is safe to tag it as such. Tagging amounts to having more sorts for representing the terms of the cross product (combinator non combinator) Theta(abstraction application) This improvement is fundamental and changes the complexity of useful Prolog predicates [11]. It is not committed to our architecture; it only has to do with reduction. Another improvement is to recognize abstractions that are j reducible. These abstractions are required in the j expanded head normal form, but fi redexes that are formed with them do not need the duplication phase. This ....

....predicate is an example of the exchanging trick: type list2flist (list A) list A) list A) o . list2flist L FL : pi listn(conc L list (FL list) The predicate relates the standard representation of a list (say [1,2,3] and its functional representation (zn[1,2,3 z] [11]. Folding representations The logic of unification is to find a substitution making two terms equal. If they are equal then they can share the same representation. We have seen that both abstractions and non first order applications are represented by muterms. So, it is easy to make the two terms ....

[Article contains additional citation context not shown here]

P. Brisset and O. Ridoux. Naive reverse can be linear. In K. Furukawa, editor, 8th Int. Conf. Logic Programming, pages 857--870, MIT Press, 1991.


The Architecture of an Implementation of λProlog.. - Brisset, Ridoux (1995)   (2 citations)  Self-citation (Brisset Ridoux)   (Correct)

....that once a combinator is detected it is safe to tag it as such. Tagging amounts to having more sorts for representing the terms of the cross product (combinator non combinator) Theta(abstraction application) This improvement is fundamental and changes the complexity of useful Prolog predicates [12]. It is not committed to our architecture; it only has to do with reduction. Another improvement is to recognize abstractions that are j reducible. These abstractions are required in the j expanded head normal form, but fi redexes that are formed with them do not need the duplication phase. This ....

....predicate is an example of the exchanging trick: type list2flist (list A) list A) list A) o . list2flist L FL : pi listn(conc L list (FL list) The predicate relates the standard representation of a list (say [1,2,3] and its functional representation (zn[1,2,3 z] [12]. Folding representations The logic of unification is to find a substitution making two terms equal. If they are equal then they can share the same representation. We have seen that both abstractions and non first order applications are represented by muterms. So, it is easy to make the two terms ....

[Article contains additional citation context not shown here]

P. Brisset and O. Ridoux. Naive reverse can be linear. In K. Furukawa, editor, 8th Int. Conf. Logic Programming, pages 857--870, MIT Press, 1991.


Imagining CLP(Λ,≡αβ) - Ridoux (1995)   Self-citation (Ridoux)   (Correct)

....the curried syntax for terms, the CLP( j fffi ) writing for predicate append is as follows: append [ X X . append [E X] Y [E Z] append X Y Z . This program is well typed with respect to the type schemes given in section 4.1. However, the same program plus the clause append [0,1,2,3,4] [5,6,7,8,9] [0,1,2,3,4,5,6,7,8,9] is ill typed because it violates the head condition. The occurrence of append in the above clause has a type, list int) list int) list int) o, that is a strict instance of the type scheme, not just a renaming. We note CLP( j fffi ) the instance of CLP in ....

....syntax for terms, the CLP( j fffi ) writing for predicate append is as follows: append [ X X . append [E X] Y [E Z] append X Y Z . This program is well typed with respect to the type schemes given in section 4.1. However, the same program plus the clause append [0,1,2,3,4] 5,6,7,8,9] [0,1,2,3,4,5,6,7,8,9] . is ill typed because it violates the head condition. The occurrence of append in the above clause has a type, list int) list int) list int) o, that is a strict instance of the type scheme, not just a renaming. We note CLP( j fffi ) the instance of CLP in which the domain is of ....

[Article contains additional citation context not shown here]

P. Brisset and O. Ridoux. Naive reverse can be linear. In K. Furukawa, editor, 8th Int. Conf. Logic Programming, pages 857--870, MIT Press, 1991. ftp://ftp.irisa.fr/local/lande/pbor-iclp91.ps.Z.

Online articles have much greater impact   More about CiteSeer.IST   Add search form to your site   Submit documents   Feedback  

CiteSeer.IST - Copyright Penn State and NEC