Advertisement

New Generation Computing

, Volume 12, Issue 1, pp 7–51 | Cite as

Mixtus: An automatic partial evaluator for full Prolog

  • Dan Sahlin
Regular Papers

Abstract

A partial evaluator for Prolog takes a program and a query and return a program specialized for all instances of that query. The intention is that the generated program will execute more efficiently than the original one for those instances.

This paper presents “Mixtus”, an automatic partial evaluator forfull Prolog, i.e. including non-logical features such as cut, assert, var, write etc. willautomatically generate a program given only an input program and a query.

Keywords

Partial Evaluation Prolog 

Preview

Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.

References

  1. 1).
    Benkerimi, K. and Lloyd, J. W., “A Procedure for the Partial Evaluation of Logic Programs”,Tech. Rept. TR-89-04, Computer Science Department, University of Bristol, May 1989.Google Scholar
  2. 2).
    Partial Evaluation and Mixed Computation (D. Bjørner, A. P. Ershov and N. D. Jones eds.), Proceedings from Workshop in Gammel Avernæs, Denmark, North-Holland, Oct. 1988.Google Scholar
  3. 3).
    Bol, R. N., “Towards More Efficient Loop Checks”, inProceedings of the 1990 North American Conference on Logic Programming, MIT Press, pp. 465–479, 1990.Google Scholar
  4. 4).
    Burstall, R. M. and Darlington, J., “A Transformation System for Developing Recursive Programs,”Journal of ACM, 24, 1977.Google Scholar
  5. 5).
    Bugliesi, M. and Russo, F., “Partial Evaluation in Prolog: Some Improvements about Cut,” inProceedings of the 1989 North American Conference on Logic Programming, MIT Press, 1989.Google Scholar
  6. 6).
    Carlsson, M. et al., “Industrial SICStus Prolog User’s Manual,”SICS Technical Report, T91:11, SICS, Sweden, 1991.Google Scholar
  7. 7).
    Ershov, A. and Jones, N. D., “Two Characterizations of Partial Evaluation and Mixed Computation,” in Ref. 2),Partial Evaluation of Mixed Computation, North-Holland, pp. xv–xxi, 1988.Google Scholar
  8. 8).
    New Generation Computing, 6, Special issue: selected papers from the Workshop on Partial Evaluation and Mixed Computation (K. Fuchi, ed.), Ohmsha, Ltd./Springer-Verlag, 1988.Google Scholar
  9. 9).
    Fugita, H., “An Algorithm for Partial Evaluation with Constrains,”ICOT Technical Memorandum: TM-0367, 1987.Google Scholar
  10. 10).
    Kahn, K. M., “A Partial Evaluator of Lisp Programs Written in Prolog,”First International Logic Programming Conference, Marseille, France, pp 19–25, 1982.Google Scholar
  11. 11).
    Kahn, K. M. and Carlsson, M., “The Compilation of Prolog Programs without the Use of a Prolog Compiler,” inProceedings of the International Conference on Fifth Generation Computer Systems, Tokyo, ICOT, 1984.Google Scholar
  12. 12).
    Komorowski, H. J., “A Specification of an Abstract Prolog Machine and Its Application to Partial Evaluation,”Ph.D thesis, No. 69, Software Systems Research Center, Linköping University, 1981.Google Scholar
  13. 13).
    Komorowski, H. J., “Synthesis of Programs in the Framework of Partial Deduction,”Ser. A, No. 81, Departments of Computer Science & Mathematics, Åbo Akademi, Finland, 1989.Google Scholar
  14. 14).
    Kursawe, P., “Pure Partial Evaluation and Instantiation,”Proceedings from Workshop in Gammel Avernæs, Denmark, North-Holland, Oct 1988.Google Scholar
  15. 15).
    Lakhotia, A. and Sterling, L., “Development of a Prolog Partial Evaluation System,”Technical Report, Department of Computer Engineering and Science, Case Western Reserve University, 1989.Google Scholar
  16. 16).
    Lakhotia, A., “ProMiX: A Prolog Partial Evaluation System,”Technical Report, CES-89-05, Department of Computer Engineering and Science, Case Western Reserve University, 1989.Google Scholar
  17. 17).
    Lakhotia, A., “A Workbench for Developing Logic Programs by Stepwise Enhancement,”Technical Report, TR-89-163a, Center for Automation and Intelligent Systems Research, Case Western Reserve University, 1989.Google Scholar
  18. 18).
    Lakhotia, A. and Sterling, L., “Composing Recursive Logic Programs with Clausal Join” inNew Generation Computing 6, 1988.Google Scholar
  19. 19).
    Lakhotia, A. and Sterling, L., “ProMiX: A Prolog Partial Evaluation System,” inThe Practice of Prolog, MIT Press, 1990.Google Scholar
  20. 20).
    Lam, J., “Control Structures in Partial Evaluation of Pure Prolog,”M. Sc. thesis, Department of Computational Science, University of Saskatchewan, Canada, 1989.Google Scholar
  21. 21).
    Lam, J. and Kusalik, A., “A Partial Evaluation of Partial Evaluators for Pure Prolog,”Research Report, 90-9, Department of Computational Science, University of Saskatchewan, Canada, 1990.Google Scholar
  22. 22).
    Levi, G. and Sardu, G., “Partial Evaluation of Metaprograms in a ‘Multiple Worlds’ Logic Language,”New Generation Computing, 6, 1988.Google Scholar
  23. 23).
    Lloyd, J. W. and Shepherdson, J. C., “Partial Evaluation in Logic Programming,”Technical Report, CS-87-09, Computer Science Department, University of Bristol, Dec. 1987.Google Scholar
  24. 24).
    Owen, S., “Issues in the Partial Evaluation of Meta-Interpreters,” inMeta-Programming in Logic Programming, The MIT Press, pp. 319–339, 1989.Google Scholar
  25. 25).
    Pereira, F. C. N. and Shieber, S. M.,Prolog and Natural-Language Analysis, Center for the Study of Language and Information, Leland Stanford Junior University, 1987.Google Scholar
  26. 26).
    Pereira, F. C. N. and Warren, D. H. D., “Definite Clause Grammars Compared with Augmented Transition Networks,”Research Report, No. 58, Department of Artificial Intelligence, University of Edinburgh, Oct. 1978.Google Scholar
  27. 27).
    Plotkin, G. D., “A Note on Inductive Generalisation,” inMachine Intelligence, 5 (B. Meltzer and D. Michie, eds.) American Elsevier, New York, pp. 153–163, 1970.Google Scholar
  28. 28).
    Prestwich, S., “Partial Evaluation by Unfold/Fold with Generalisation,”ECRC, München, Nov. 1990.Google Scholar
  29. 29).
    Reynolds, J. C., “Transformational Systems and the Algebraic Structure of Atomic Formulas,” inMachine Intelligence, 5 (B. Meltzer and D. Michie, eds.), American Elsevier, New York, pp. 135–152, 1970.Google Scholar
  30. 30).
    Robinson, J. A., “A Machine-Oriented Logic Based on the Resolution Principle,”Journal of the ACM, 12, pp. 23–41, 1965.MATHCrossRefGoogle Scholar
  31. 31).
    Sahlin, D., “Finding the Least Fixed Point Using Wait-Declarations in Prolog,” inProceedings of PLILP’90, Linköping, Sweden,Lecture Notes in Computer Science, 456, Springer-Verlag, pp. 151–158, 1990.Google Scholar
  32. 32).
    Sahlin, D., “The Mixtus Approach to Automatic Partial Evaluation of Full Prolog,” inProceedings of the North American Conference on Logic Programming, MIT Press, 1990.Google Scholar
  33. 33).
    Sahlin, D., “An Automatic Partial Evaluator for Full Prolog,”SICS Dissertation Series, 04, 1991.Google Scholar
  34. 34).
    Sahlin, D., “Determinacy Analysis for Full Prolog,” inProceedings of the ACM/IFIP Symposium on Partial Evaluation and Semantics Based Program Manipulation, ACM Press, 1991.Google Scholar
  35. 35).
    Seki, H., “Unfold/Fold Transformation of Stratified Programs,”Proceedings of the Sixth International Conference on Logic Programming, The MIT Press, pp. 554–568, 1989.Google Scholar
  36. 36).
    Sestoft, P. and Zamulin, A., “Annotated Bibliography on Partial Evaluation and Mixed Computation,” inNew Generation Computing, 6, andPartial Evaluation of Mixed Computation, North-Holland, 1988.Google Scholar
  37. 37).
    Smith, D. and Hickey, T., “Partial Evaluation of CLP Language,” inProceedings of the North American Conference on Logic Programming, MIT Press, 1990.Google Scholar
  38. 38).
    Smith, D. A. and Hickey, T., “Partial Evaluation of CLP (FJ),”Technical Report, CS-90-148, Computer Science Department, Brandeis University, March 1990.Google Scholar
  39. 39).
    Sterling, L. and Beer, R. D., “Incremental Flavor-Mixing of Meta-Interpreters for Expert System Construction,”Proceedings of the Third Logic Programming Symposium, Salt Lake City, Utah, 1986.Google Scholar
  40. 40).
    Sterling, L.,The Practice of Prolog, MIT Press, 1990.Google Scholar
  41. 41).
    Takeuchi, A. and Furukawa, F., “Partial Evaluation of Prolog Programs and Its Application to Meta Programming,”Information Processing, 86, Elsevier Science Publishers, 1986.Google Scholar
  42. 42).
    Tamaki, H. and Sato, T., “Unfold/Fold Transformations of Logic Programs,”Proceedings of the Second International Conference on Logic Programming, Uppsala, Sweden, pp. 127–138, 1984.Google Scholar
  43. 43).
    Venken, R., “A Prolog Meta-Interpreter for Partial Evaluation and Its Application to Source-to-Source Transformation and Query Optimisation,”Proceedings of the European Conference on Artificial Intelligence, Pisa, 1984.Google Scholar
  44. 44).
    Venken, R., “A Partial Evaluation System for Prolog: Some Practical Considerations,” inNew Generation Computing, 6, 1988.Google Scholar

Copyright information

© Ohmsha, Ltd. and Springer 1993

Authors and Affiliations

  1. 1.SICSKistaSweden

Personalised recommendations