Results 1 -
8 of
8
Logic program specialisation through partial deduction: Control issues
- THEORY AND PRACTICE OF LOGIC PROGRAMMING
, 2002
"... Program specialisation aims at improving the overall performance of programs by performing source to source transformations. A common approach within functional and logic programming, known respectively as partial evaluation and partial deduction, is to exploit partial knowledge about the input. It ..."
Abstract
-
Cited by 46 (12 self)
- Add to MetaCart
Program specialisation aims at improving the overall performance of programs by performing source to source transformations. A common approach within functional and logic programming, known respectively as partial evaluation and partial deduction, is to exploit partial knowledge about the input. It is achieved through a well-automated application of parts of the Burstall-Darlington unfold/fold transformation framework. The main challenge in developing systems is to design automatic control that ensures correctness, efficiency, and termination. This survey and tutorial presents the main developments in controlling partial deduction over the past 10 years and analyses their respective merits and shortcomings. It ends with an assessment of current achievements and sketches some remaining research challenges.
Conjunctive Partial Deduction: Foundations, Control, Algorithms, and Experiments
- J. LOGIC PROGRAMMING
, 1999
"... ..."
Conjunctive Partial Deduction in Practice
- Proceedings of the International Workshop on Logic Program Synthesis and Transformation (LOPSTR'96), LNCS 1207
, 1996
"... . Recently, partial deduction of logic programs has been extended to conceptually embed folding. To this end, partial deductions are no longer computed of single atoms, but rather of entire conjunctions; Hence the term "conjunctive partial deduction". Conjunctive partial deduction aims at achieving ..."
Abstract
-
Cited by 26 (19 self)
- Add to MetaCart
. Recently, partial deduction of logic programs has been extended to conceptually embed folding. To this end, partial deductions are no longer computed of single atoms, but rather of entire conjunctions; Hence the term "conjunctive partial deduction". Conjunctive partial deduction aims at achieving unfold/fold-like program transformations such as tupling and deforestation within fully automated partial deduction. However, its merits greatly surpass that limited context: Also other major efficiency improvements are obtained through considerably improved side-ways information propagation. In this extended abstract, we investigate conjunctive partial deduction in practice. We describe the concrete options used in the implementation(s), look at abstraction in a practical Prolog context, include and discuss an extensive set of benchmark results. From these, we can conclude that conjunctive partial deduction indeed pays off in practice, thoroughly beating its conventional precursor on a wide...
Programs without Failures
- Proceedings LOPSTR'97, Lecture Notes in Computer Science
, 1997
"... . We try to formalize the intuitive reasoning which we normally use to get convinced that a query has successful LD-derivations in a program. To this purpose we define the class of programs and queries without failures which have the property of not having finitely failing derivations. Such property ..."
Abstract
-
Cited by 6 (2 self)
- Add to MetaCart
. We try to formalize the intuitive reasoning which we normally use to get convinced that a query has successful LD-derivations in a program. To this purpose we define the class of programs and queries without failures which have the property of not having finitely failing derivations. Such property is simple to verify, it is preserved through leftmost unfolding and it can be useful both in verifying properties of logic programs and in program transformation. The class of programs without failures is very restricted but in program transformations it is sufficient that only some predicates in the program are in the class. Keywords and Phrases: finitely failing derivations, program transformation, program verification 1 Introduction Logic programming is a declarative paradigm. This pleasant characteristic allows one to ignore the computation and simply define which are its desired results. But, when queried through a Prolog interpreter, logic definitions are performed with backtracking...
Transformation of Left Terminating Programs
- PROCEEDINGS OF THE NINTH INTERNATIONAL WORKSHOP ON LOGIC-BASED PROGRAM SYNTHESIS, LOPSTR'99
, 2000
"... We propose an unfold-fold transformation system which preserves left termination for definite programs besides its declarative semantics. The system extends our previous proposal in [BCE95] by allowing to switch the atoms in the clause bodies when a specific applicability condition is satisfied. The ..."
Abstract
-
Cited by 3 (1 self)
- Add to MetaCart
We propose an unfold-fold transformation system which preserves left termination for definite programs besides its declarative semantics. The system extends our previous proposal in [BCE95] by allowing to switch the atoms in the clause bodies when a specific applicability condition is satisfied. The applicability condition is very simple to verify, yet very common in practice. We also discuss how to verify such condition by exploiting mode information.
: Tecniche Di Trasformazione E Sintesi
"... Introduction (in clause 2, [H] is generalized to the variable Acc): 5. rev_acc(L,Acc,R) rev(L,L1), append(L1,Acc,R) Unfolding clause 5 w.r.t. rev(L,L1): 6. rev_acc([ ],Acc,Acc) 7. rev_acc([H|T],Acc,R) rev(T,T1), append(T1,[H],L1), append(L1,Acc,R) Goal Replacement (lemma application): [ Lemma: ..."
Abstract
- Add to MetaCart
Introduction (in clause 2, [H] is generalized to the variable Acc): 5. rev_acc(L,Acc,R) rev(L,L1), append(L1,Acc,R) Unfolding clause 5 w.r.t. rev(L,L1): 6. rev_acc([ ],Acc,Acc) 7. rev_acc([H|T],Acc,R) rev(T,T1), append(T1,[H],L1), append(L1,Acc,R) Goal Replacement (lemma application): [ Lemma: M(P 0 ) " T1, H, Acc, R. $ L1. append(T1,[H],L1), append(L1,Acc,R) append(T1,[H|Acc],R ) ] 8. rev_acc([H|T],Acc,R) rev(T,T1), append(T1,[H|Acc],R) Folding clause 8 using clause 5: 9. rev_acc([H|T],Acc,R) rev_acc(T,[H|Acc],R) Folding clause 2 using clause 5: 10. rev([H|T],R) rev_acc(T,[H],R) FINAL PROGRAM : O(n) 1. rev([ ],[ ]) 10. rev([H|T],R) rev_acc(L,[H],R) 6. rev_acc(
Il Milione: A Journey in the Computational Logic in Italy Una fruttuosa esperienza in Logica Computazionale A valuable experience in Computational Logic
"... Illustriamo qui brevemente la nostra esperienza nel campo della verifica e delle trasformazioni dei programmi logici. Pur occupandoci ora di tematiche completamente diverse, verifica di proprietà di sicurezza da un lato e analisi di sistemi biologici dall’altro, continuiamo ad utilizzare proficuamen ..."
Abstract
- Add to MetaCart
Illustriamo qui brevemente la nostra esperienza nel campo della verifica e delle trasformazioni dei programmi logici. Pur occupandoci ora di tematiche completamente diverse, verifica di proprietà di sicurezza da un lato e analisi di sistemi biologici dall’altro, continuiamo ad utilizzare proficuamente la nostra precedente esperienza. In this paper, we briefly describe our esperience in the field of verification and transformation of logic programming. Though now we are working in a completely different field, verification of security properties on one hand and biosystems analysis on the other, our previous experience continues to be a valuable guide.

