Results 1 
2 of
2
Transformation Rules For A Higher Order Logic Programming Language
, 2000
"... We introduce a logic programming language with higher order features. In particular, in this language the arguments of the predicate symbols may be both terms and goals. We define the operational semantics of our language by extending SLDresolution, and we propose for this language a set of program ..."
Abstract

Cited by 1 (0 self)
 Add to MetaCart
We introduce a logic programming language with higher order features. In particular, in this language the arguments of the predicate symbols may be both terms and goals. We define the operational semantics of our language by extending SLDresolution, and we propose for this language a set of program transformation rules. The transformation rules are shown to be correct in the sense that they preserve the operational semantics. In our higher order logic language we may transform logic programs using higher order generalizations and continuation arguments, as it is done in the case of functional programs. These program transformation techniques allow us to derive very efficient logic programs and also to avoid goal rearrangements which may not preserve correctness.
Under consideration for publication in Theory and Practice of Logic Programming 1 Transformations of Logic Programs with Goals as Arguments
, 2003
"... We consider a simple extension of logic programming where variables may range over goals and goals may be arguments of predicates. In this language we can write logic programs which use goals as data. We give practical evidence that, by exploiting this capability when transforming programs, we can i ..."
Abstract
 Add to MetaCart
We consider a simple extension of logic programming where variables may range over goals and goals may be arguments of predicates. In this language we can write logic programs which use goals as data. We give practical evidence that, by exploiting this capability when transforming programs, we can improve program efficiency. We propose a set of program transformation rules which extend the familiar unfolding and folding rules and allow us to manipulate clauses with goals which occur as arguments of predicates. In order to prove the correctness of these transformation rules, we formally define the operational semantics of our extended logic programming language. This semantics is a simple variant of LDresolution. When suitable conditions are satisfied this semantics agrees with LDresolution and, thus, the programs written in our extended language can be run by ordinary Prolog systems. Our transformation rules are shown to preserve the operational semantics and termination.