Skip to main content
Log in

Inductive expansion: A calculus for verifying and synthesizing functional and logic programs

  • Published:
Journal of Automated Reasoning Aims and scope Submit manuscript

Abstract

Guarded Horn clauses over a many-sorted polymorphic signature provide a powerful syntax for design specifications. Expressed as a set of positive Gentzen clauses with a common guard, requirements to such a specification can be proved top-down by inductive expansion: conclusions and generators of the clauses are transformed via resolution and paramodulation upon axioms, lemmas and induction hypotheses into the guard. Case distinctions are generated when axioms or lemmas are applied in parallel. They split the proof into subexpansions, which are later rejoined by applying disjunctive lemmas. Induction orderings need not be selected before redices for induction hypotheses have been created.

The controlled expansion of requirements to a function (or predicate) may produce axioms representing a program for that function. This generalizes traditional approaches to program synthesis such as fold& unfold, divide&conquer or deductive tableaus. Ground confluent and strongly terminating design specifications yield decidable criteria for constructors and unsolvable goals and thus reduce the search space of inductive expansion.

This is a preview of subscription content, log in via an institution to check access.

Access this article

Price excludes VAT (USA)
Tax calculation will be finalised during checkout.

Instant access to the full article PDF.

Similar content being viewed by others

References

  1. Andrews, P. B., ‘Theorem proving via general matings’, J. ACM 28, 193–214 (1981).

    Google Scholar 

  2. Bachmair, L., ‘Proof by consistency in equational theories,’ Proc. LICS '88, pp. 228–233 (1988).

  3. de Bakker, J. W. and Scott, D. A Theory of Programs, IBM-Seminar, Wien (1969).

  4. Bauer, F. L. and Wössner, H. Algorithmic Language and Program Development, Springer (1982).

  5. Bibel, W. Automated Theorem Proving, Vieweg (1982).

  6. Bird, R. S., ‘Using circular programs to eliminate multiple traversals of data,’ Acta Informatica 21, 239–250 (1984).

    Google Scholar 

  7. Boyer, R. S. and Moore, J S. A Computational Logic, Academic Press (1979).

  8. Boyer, R. S. and Moore, J S., A Computational Logic Handbook, Academic Press (1988).

  9. Breu, M., Einbeziehung einfacher Induktionsbeweise in den Konnektionenkalkül, Diplomarbeit, TU München (1986).

  10. Broy, M. and Pepper, P. ‘Combining algebraic and algorithmic reasoning: An approach to the Schorr-Waite algorithm’, ACM TOPLAS 4, 362–381 (1982).

    Google Scholar 

  11. Burstall, R. M. ‘Proving properties of programs by structural induction’, Comp. J. 12, 41–48 (1969).

    Google Scholar 

  12. Burstall, R. M. and Darlington, J. ‘A transformation system for recursive programs,’ J. ACM 24, 44–67 (1977).

    Google Scholar 

  13. Burstall, R. M., MacQueen, D. B., and Sannella, D. T., ‘HOPE, an experimental applicative language,’ Proc. LISP Conference, pp. 136–143 (1980).

  14. Dershowitz, N., Computing with Rewrite Systems, Report ATR-83(8478)-1, Inform. Sci. Research Office, The Aerospace Corp., El Segundo CA (1983).

    Google Scholar 

  15. Dershowitz, N., ‘Termination of rewriting’, J. Symbolic Comp. 3, 69–115 (1987).

    Google Scholar 

  16. Dincbas, M. and van Hentenryck, P., ‘Extended unification algorithms for the integration of functional programming into logicprogramming’, J. Logic Programming 4, 199–227 (1987).

    Google Scholar 

  17. Dershowitz, N., Okada, M., and Sivakumar, G., ‘Canonical conditional rewrite systems’, Proc. CADE '88, Springer LNCS 310, 538–549 (1988).

  18. Furbach, U., Hölldobler, S., and Schreiber, J., ‘Horn equality theories and paramodulation’, J. Automated Reasoning 5, 309–338 (1989).

    Google Scholar 

  19. Fribourg, L., ‘A strong restriction of the inductive completion procedure,’ Proc. ICALP '86, Springer LNCS 226, 105–115 (1986).

  20. Gallier, J. H. and Synder, W., ‘A general complete e-unification procedure’, Proc. RTA '87, Springer LNCS 256, 216–227 (1987).

  21. Ganzinger, H., A Completion Procedure for Conditional Equations, Proc. Conditional Term Rewriting Systems, Springer LNCS 308, 62–83 (1987).

  22. Garland, S. J. and Guttag, J. V., ‘Inductive methods for reasoning about abstract data types,’ Proc. POPL '88, 219–228 (1988).

  23. Geser, A., Hußmann, H., and Mück, A. ‘A compiler for a class of conditional term rewriting systems’, Proc. Conditional Term Rewriting Systems, Springer LNCS 308, 84–90 (1987).

  24. Goldberg, A. T., ‘Knowledge-based programming: a survey of program design and construction techniques,’ IEEE Transact. SE-12, 752–768 (1986).

  25. Green, C. and Barstow, D., ‘On program synthesis knowledge’, Artificial Intelligence 10, 241–279 (1978).

    Google Scholar 

  26. Gregory, S., Parallel Logic Programming in PARLOG: the Language and its Implementation, Addison-Wesley (1987).

  27. Gries, D., ‘The Schorr-Waite graph marking algorithm’, Acta Inform. 11, 223–232 (1979).

    Google Scholar 

  28. Hoare, C. A. R., ‘An axiomatic basis for computer programming’, Comm. ACM 12, 576–583 (1969).

    Google Scholar 

  29. Hölldobler, S., ‘Equational logic programming’, Proc. Symp. on Logic Programming, pp. 335–346 (1987).

  30. Hoffmann, C. M. and O'Donnell, M. J., ‘Programming with equations’, ACM TOPLAS 4, 83–112 (1982).

    Google Scholar 

  31. Hsiang, J. and Rusinowitch, M. ‘On word problems in equational theories,’ Proc. ICALP '87, Springer LNCS 267, 54–71 (1987).

  32. Huet, G. and Hullot, J. M. ‘Proofs by induction in equational theories with constructors,’ J. Comp. and Syst. Sci. 25, 239–266 (1982).

    Google Scholar 

  33. Huet, G. and Oppen, D. C., ‘Equations and rewrite rules: a survey’, in R. V. Book (ed.) Formal Language Theory: Perspectives and Open Problems, Academic Press (1980).

  34. Hutter, D., ‘Using resolution and paramodulation for induction proofs’, Proc. 10th GW AI, Springer Informatik-Fachberichte 124, 265–276 (1986).

  35. Jaffar, J. and Lassez, J. L., ‘Constraint logic programming’, Proc. POPL '87 (1987).

  36. Jouannaud, J.-P. and Kirchner, H. ‘Completion of a set of rules modulo a set of equations’, SIAM Journal of Computing 15, 1155–1194 (1986).

    Google Scholar 

  37. Jouannaud, J.-P. and Kounalis, E. ‘Automatic proofs by induction in equational theories without constructors’, IEEE Symp. Logic in Comp. Sci., pp. 358–366 (1986).

  38. Kaplan, S., ‘Conditional rewrite rules’, Theoretical Computer Science 33, 175–194 (1984).

    Google Scholar 

  39. Kapur, D. and Musser, D. R., ‘Proof by consistency’, Artificial Intelligence 31, 125–157 (1987).

    Google Scholar 

  40. Knuth, D. E., ‘Semantics of context-free languages’, Math. Syst. Theory 2, 127–145 (1968).

    Google Scholar 

  41. Lankford, D. S., Canonical Inference, Report ATP-32, University of Texas at Austin (1975).

  42. Lloyd, J. W., Foundations of Logic Programming, 2nd edition, Springer (1987).

  43. Loeckx, J. and Sieber, K. The Foundations of Program Verification, 2nd edition, John Wiley & Sons (1987).

  44. Manna, Z. Mathematical Theory of Computation, McGraw-Hill (1974).

  45. Manna, Z. and Waldinger, R. ‘A deductive approach to program synthesis’, ACM TOPLAS 2, 90–121 (1980).

    Google Scholar 

  46. Manna, Z. and Waldinger, R., ‘How to clear a block: a theory of plans’, J. Automated Reasoning 3, 343–377 (1987).

    Google Scholar 

  47. Martelli, A., Moiso, C. and Rossi, G. F., ‘An algorithm for unification in equational theories’, Proc. Symp. on Logic Programming, pp. 180–186 (1986).

  48. O'Donnell, M. J. Equational Logic as a Programming Language, The MIT Press (1985).

  49. Padawitz, P. ‘Computing in Horn clause theories’, EATCS Monographs on Theor. Comp. Sci. 16, Springer (1988).

  50. Padawitz, P. Inductive Proofs of Constructor-based Horn Clauses, Report MIP-8810, Universität Passau (1988).

  51. Padawitz, P., ‘On goal and term reduction calculi’, Proc. 1st German Workshop on Term Rewriting, SEKI Report SR-89-02, Universität Kaiserslautern (1989).

  52. Padawitz, P., Program Verification by Inductive Expansion: Tree Balancing and Graph Traversal, Report MIP-8912, Universität Passau (1989). Short version: ‘Proving the correctness of Schorr-Waite graph marking by inductive expansion’, Proc. Information Processing 89 (IFIP), Elsevier 1121-1126 (1989).

  53. Padawitz, P., On Inductive Proofs of Network Properties: The Alternating Bit Protocol, Report MIP-8925, Universität Passau (1989).

  54. de Roever, W. P. ‘On backtracking and greatest fixpoints’, Proc. ICALP '77, Springer LNCS 52 412–429 (1977).

  55. Shapiro, E. ‘Concurrent PROLOG: a progress report,’ in W. Bibel and Ph. Jorrand, (eds.) Fundamentals of Artificial Intelligence, Springer (1987).

  56. Siefkes, D., Hofbauer, D., and Kutsche, R., Completeness Proofs for Logic Programming, Bericht 1988/23, FB Informatik, TU Berlin (1989).

    Google Scholar 

  57. Slagle, J. R., ‘Automated theorem proving for theories with simplifiers, commutativity and associativity’, J. ACM 21 622–642 (1974).

    Google Scholar 

  58. Smith, D. R., ‘Top-down synthesis of divide-and-conquer algorithms’, Artificial Intelligence 27, 43–96 (1985).

    Google Scholar 

  59. Steinbach, J. ‘Extensions and comparisons of simplification orderings’, Proc. RTA '89, Springer LNCS 355, 434–448 (1989).

  60. Tanenbaum, A. S. Computer Networks, Prentice Hall (1981).

  61. You, J.-H. ‘Outer narrowing for equational theories based on constructors’, Proc. ICALP '88, Springer LNCS 317, 727–741 (1988).

Download references

Author information

Authors and Affiliations

Authors

Rights and permissions

Reprints and permissions

About this article

Cite this article

Padawitz, P. Inductive expansion: A calculus for verifying and synthesizing functional and logic programs. J Autom Reasoning 7, 27–103 (1991). https://doi.org/10.1007/BF00249354

Download citation

  • Received:

  • Issue Date:

  • DOI: https://doi.org/10.1007/BF00249354

Key words

Navigation