Hostname: page-component-8448b6f56d-wq2xx Total loading time: 0 Render date: 2024-04-23T12:03:43.777Z Has data issue: false hasContentIssue false

Developing correct and efficient logic programs by transformation*

Published online by Cambridge University Press:  07 July 2009

Alberto Pettorossi
Affiliation:
Department of Informatics, University of Roma II, Via della Ricerca Scientfica, 00133 Roma, Italy. Email: adp@iasi.rm.cnr.it
Maurizio Proietti
Affiliation:
IASI-CNR, Viale Manzoni 30, 00185 Roma, Italy. Email: proietti@iasi.rm.cnr.it

Extract

The complex process of deriving programs from specifications is often divided into the following three steps: (i) the derivation of formal specifications from the informal ones; (ii) the validation of the formal specifications; and (iii) the derivation of executable programs from the formal specifications.

Type
Research Article
Copyright
Copyright © Cambridge University Press 1996

Access options

Get access to the full version of this content by using one of the access options below. (Log in options will check for institutional or personal access. Content may require purchase if you do not have access.)

References

Apt, KR and Turini, F, (eds) 1995. Meta-Logics for Logic Programming, MIT Press.Google Scholar
Arsac, J and Kodratoff, Y, 1982. “Some techniques for recursion removal from recursive functionsACM Trans Programming Languages and Systems 4(2) 295322.CrossRefGoogle Scholar
Benkerimi, K and Lloyd, JW, 1990. “A partial evaluation procedure for logic programs” In: Debray, S and Hermenegildo, M (eds.), Logic Programming: Proceedings of the 1990 North American Conference, Austin, Texas, 343358. MIT Press.Google Scholar
Bossi, A, Cocco, N and Dulli, S, 1990. “A method for specializing logic programsACM Trans Programming Languages and Systems 12(2) 253302.CrossRefGoogle Scholar
Bossi, A, Cocco, N and Etalle, S, 1996. “Transforming left-terminating programs: The reordering problem” In: Proietti, M (ed.), Logic Program Synthesis and Transformation, Proceedings LOPSTR ‘95, Utrecht, The Netherlands, 3345, Springer-Verlag.CrossRefGoogle Scholar
Boyer, RS and Moore, JS, 1975. “Proving theorems about Lisp functionsJournal of the ACM 22(1) 129144.CrossRefGoogle Scholar
Brogi, A, Mancarella, P, Pedreschi, D and Turini, F, 1990. “Composition operators for logic theories” In: Lloyd, JW (ed.), Proceedings of the Symposium on Computational Logic 117134, Springer-Verlag.CrossRefGoogle Scholar
Brough, DR and Hogger, CJ, 1987. “Compiling associativity into logic programsJournal of Logic Programming 4 345359.CrossRefGoogle Scholar
Brough, DR and Hogger, CJ, 1991. “Grammar-related transformation of logic programsNew Generation Computing 9(1)115134.CrossRefGoogle Scholar
Bruynooghe, M, De, Schreye D and Krekels, B, 1989. “Compiling controlJournal of Logic Programming 6 135162.CrossRefGoogle Scholar
Burstall, RM and Darlington, J, 1977. “A transformation system for developing recursive programsJournal of the ACM 24(1) 4467.CrossRefGoogle Scholar
Clark, KL and Tärnlund, S-Å, 1977. “A first order theory of data and programs” Proceedings Information Processing ‘77 939944, North-Holland.Google Scholar
Consel, C, 1996. “Program adaptation based on program transformation” Position paper for the MIT Workshop on Strategic Directions of Computing Research, (to appear in SIGPLAN Notices).Google Scholar
Debray, SK 1985. “Optimizing almost-tail-recursive Prolog programs” Proceedings IFIP International Conference on Functional Programming Languages and Computer Architecture Nancy France. Lecture Notes in Computer Science 201, 204219, Springer-Verlag.Google Scholar
Debray, SK, 1988. “Unfold/fold transformation and loop optimization of logic programsProceedings of SIGPLAN 88 Conference on Programming Language Design and Implementation Atlanta, Georgia. SIGPLAN Notices 23(7) 297307.Google Scholar
Debray, SK and Jain, M, 1994. “A simple program transformation for parallelism” In: Bruynooghe, M (ed.), Proceedings of the 1994 International Symposium on Logic Programming 305319, MIT Press.Google Scholar
Debray, SK and Warren, DS, 1989. “Functional computations in logic programsACM TOPLAS 11(3) 451481.CrossRefGoogle Scholar
Flener, P and Deville, Y, 1993. “Logic program synthesis from incomplete specificationsJournal of Symbolic Computation 15 775805.CrossRefGoogle Scholar
Fuchs, NE and Fromherz, MPJ, 1992. “Schema-based transformation of logic programs” In: Clement, T and Lau, K-K (eds.), Logic Program Synthesis and Transformation, Proceedings LOPSTR‘91, Manchester, UK, 111125, Springer-Verlag.CrossRefGoogle Scholar
Fuchs, NE and Schwitter, R, 1995. “Specifying logic programs in controlled natural language” Workshop on Computational Logic for Natural Language Processing, Proceedings CLNLP ‘95, Edinburgh University.Google Scholar
Futamura, Y, 1971. “Partial evaluation of computation process—an approach to a compiler-compilerSystems, Computers, Controls 2(5) 4550.Google Scholar
Gallagher, JP, 1988. “Transforming programs by specializing interpreters” Proceedings Seventh European Conference on Artificia1 Intelligence, ECAI ‘86 109122.Google Scholar
Gallagher, JP, 1993. “Tutorial on specialization of logic programs’ Proceedings of ACM SIGPLAN Symposium on Partial Evaluation and Semantics Based Program Manipulation, PEPM ‘93 Copenhagen, Denmark, 8898, ACM Press.Google Scholar
Gallagher, JP and de, Waal DA, 1993. “Deletion of redundant unary type predicates from logic programs” Proceedings of LoPSTr ’92 Manchester, UK, 151167, Springer-Verlag.Google Scholar
Gegg-Harrison, TS, 1995. “Representing logic program schemata in λ-Prolog” In: Sterling, L (ed.), Proceedings of the 12th International Conference on Logic Programming,467481.CrossRefGoogle Scholar
Huet, G and Lang, B, 1978. “Proving and applying program transformation expressed with second-order patternsActa Informatica 11 3155.CrossRefGoogle Scholar
Jones, ND, Gomard, CK and Sestoft, P, 1993. Partial Evaluation and Automatic Program Generation, Prentice Hall.Google Scholar
Kirschenbaum, M, Lakhotia, A and Sterling, L, 1989. “Skeletons and techniques for Prolog programming” TR 89170, Case Western Reserve University.Google Scholar
Komorowski, HJ, 1982. “Partial evaluation as a means for inferencing data structures in an applicative language: A theory and implementation in the case of Prolog” Ninth ACM Symposium on Principles of Programming Languages Albuquerque, New Mexico, 255267.Google Scholar
Komorowski, HJ, 1989. “Towards synthesis of programs in the partial deduction framework” Proceedings of the Workshop on Automating Software Design Detroit, MI, 138143, Kestrel Institute.Google Scholar
Kott, L, 1985. “Unfold/fold program transformation” Algebraic Methods in Semantics 411434, Cambridge University Press.Google Scholar
Lakhotia, A and Sterling, L, 1988. “Composing recursive logic programs with clausal joinNew Generation Computing 6(2 & 3) 211226.CrossRefGoogle Scholar
Lakhotia, A and Sterling, L, 1990. “ProMix: A Prolog partial evaluation system” In: Sterling, L (ed.), The Practice of Prolog 137179, MIT Press.CrossRefGoogle Scholar
Leuschel, M, De, Schreye D and de, Waal A, 1996. “A conceptual embedding of folding into partial deduction: Towards a maximal integration” Report CW 225, K.U. Leuven, Belgium.Google Scholar
Lloyd, JW, 1987. Foundations of Logic Programming, Springer-Verlag.CrossRefGoogle Scholar
Lloyd, JW and Shepherdson, JC, 1991. “Partial evaluation in logic programmingJournal of Logic Programming 11 17242.CrossRefGoogle Scholar
Martens, B, De, Schreye D and Bruynoogh, M, 1992. “Sound and complete partial deduction with unfolding based on well-founded measures” Proceedings of the International Conference on Fifth Generation Computer Systems 473480, Ohmsha Ltd., lOS Press.Google Scholar
Mogensen, T and Bondorf, A, 1993. “Logimix: A self-applicable partial evaluation for Prolog” In: Lau, KK and Clement, T (eds.), Logic Program Synthesis and Transformation, Proceedings LOPSTR ‘92 Manchester, UK, 214227, Springer-Verlag.CrossRefGoogle Scholar
Partsch, HA, 1990. Specification and Transformation of Programs, Springer-Verlag.CrossRefGoogle Scholar
Paterson, MS and Hewitt, CE, 1970. “Comparative schematology” Conference on Concurrent Systems and Parallel Computation Project MAC Woods Hole, MA, 119127.Google Scholar
Pettorossi, A and Proietti, M, 1994. “Transformation of logic programs: Foundations and techniquesJournal of Logic Programming 19(20) 261320.CrossRefGoogle Scholar
Pettorossi, A and Proietti, M, 1996. “A theory of logic program specialization and generalization for dealing with input data properties” Proceedings of the Dagstuhl Seminar on Partial Evaluation Lecture Notes in Computer Science 1110, 386408, Springer-Verlag.Google Scholar
Pettorossi, A, Proietti, M and Renault, S, 1996. “Enhancing partial deduction via unfold/fold rules” Logic Program Synthesis and Transformation, Proceedings of LOPSTR ‘96 Stockholm, Sweden,Springer-Verlag (to appear in: Lecture Notes in Computer Science).Google Scholar
Prestwich, S, 1993. “Online partial deduction of large programs” Proceedings ACM Sigplan Symposium on Partial Evaluation and Semantics-Based Program Manipulation, PEPM ‘93 Copenhagen, Denmark, 111118, ACM Press.Google Scholar
Proietti, M and Pettorossi, A, 1993. “The loop absorption and the generalization strategies for the development of logic programs and partial deductionJournal of Logic Programming 16(1–2) 123161.CrossRefGoogle Scholar
Proietti, M and Pettorossi, A, 1994a. “Completeness of some transformation strategies for avoiding unnecessary logical variables” In: Van Hentenryck, P (ed.), Proceedings of the Eleventh International Conference on Logic Programming (ICLP ‘94) Ligure, S Margherita, Italy, , 06 1318, 714–729, MIT Press.Google Scholar
Proietti, M and Pettorossi, A, 1994b. “Synthesis of programs from unfold/fold proofs” In: Deville, Y (ed.), Logic Program Synthesis and Transformation, Proceedings of LOPSTR ‘93 Louvain-la-Neuve, Belgium, 141158, Springer-Verlag.CrossRefGoogle Scholar
Proietti, M and Pettorossi, A, 1995. “Unfolding-definition-folding, in this order, for avoiding unnecessary variables in logic programsTheoretical Computer Science 142(1) 89124.CrossRefGoogle Scholar
Safra, S and Shapiro, E, 1986. “Meta interpreters for real” In: Kugler, HJ (ed.), Proceedings Information Processing 86 271278, North-Holland.Google Scholar
Sahlin, D, 1993. “Mixtus: An automatic partial evaluator for full PrologNew Generation Computing 12 751.CrossRefGoogle Scholar
Sawamura, H and Takeshima, T, 1985. “Recursive unsolvability of determinacy, solvable cases of determinacy and their application to Prolog optimization” Proceedings of the International Symposium on Logic Boston, 200207, IEEE Press.Google Scholar
Seki, H, 1991. “Unfold/fold transformation of stratified programsTheoretical Computer Science 86 107139.CrossRefGoogle Scholar
Seki, H and Furukawa, K, 1987. “Notes on transformation techniques for generate and test logic programs” Proceedings of the International Symposium on Logic Programming, San Francisco, 215223, IEEE Press.Google Scholar
Smith, DR, 1993. “Automating the design of algorithms” In: Möller, B, Partsch, H and Schuman, S (eds.), Formal Program Development, IFIP TC2/ WG 2.1 State-of-the-Art Report Lecture Notes in Computer Science 755, 324–354,Springer-Verlag.Google Scholar
Sterling, L, 1986. “Incremental flavour-mixing of meta-interpreters for expert system construction” Proceedings 3rd International Symposium on Logic Programming, Salt Lake City, Utah, 2027, IEEE Press.Google Scholar
Sterling, LS and Yalcinalp, , 1996. “Logic programming and software engineering” Knowledge Engineering Review (this issue).Google Scholar
Takeuchi, A, 1986. “Affinity between meta-interpreters and partial evaluation” In: Kugler, HJ (ed.), Proceedings of Information Processing ‘86 279282, North-Holland.Google Scholar
Takeuchi, A and Furukawa, K, 1986. “Partial evaluation of Prolog programs and its application to metaprogramming” In: Kugler, HJ (ed.), Proceedings of Information Processing “86, 415420, North-Holland.Google Scholar
Tamaki, H and Sato, T, 1984. “Unfold/fold transformation of logic programs” In: Tärnlund, SA (ed.), Proceedings of the Second International Conference on Logic Programming, Uppsala, Sweden, 127138.Google Scholar
Tarau, P and Boyer, M, 1990. “Elementary logic programs” In: Deransart, P and Maluszynski, J (eds.), Proceedings PLILP ‘90, 159173, Springer-Verlag.Google Scholar
Toni, F and Kowalski, R, 1995. “Reduction of abductive logic programs to normal logic programs” In: Sterling, L (ed.), Proceedings of the 12th International Conference on Logic Programming 367381, MIT Press.Google Scholar
Vasconcelos, WW and Fuchs, NE, 1996. “An opportunistic approach for logic program analysis and optimization using enhanced schema-based transformations” In: Proietti, M (ed.), Logic Program Synthesis and Transformation, Proceedings LOPSTR ‘95, Utrecht, The Netherlands, Lecture Notes in Computer Science 1048, 174188, Springer-Verlag.CrossRefGoogle Scholar