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.
Similar content being viewed by others
References
Andrews, P. B., ‘Theorem proving via general matings’, J. ACM 28, 193–214 (1981).
Bachmair, L., ‘Proof by consistency in equational theories,’ Proc. LICS '88, pp. 228–233 (1988).
de Bakker, J. W. and Scott, D. A Theory of Programs, IBM-Seminar, Wien (1969).
Bauer, F. L. and Wössner, H. Algorithmic Language and Program Development, Springer (1982).
Bibel, W. Automated Theorem Proving, Vieweg (1982).
Bird, R. S., ‘Using circular programs to eliminate multiple traversals of data,’ Acta Informatica 21, 239–250 (1984).
Boyer, R. S. and Moore, J S. A Computational Logic, Academic Press (1979).
Boyer, R. S. and Moore, J S., A Computational Logic Handbook, Academic Press (1988).
Breu, M., Einbeziehung einfacher Induktionsbeweise in den Konnektionenkalkül, Diplomarbeit, TU München (1986).
Broy, M. and Pepper, P. ‘Combining algebraic and algorithmic reasoning: An approach to the Schorr-Waite algorithm’, ACM TOPLAS 4, 362–381 (1982).
Burstall, R. M. ‘Proving properties of programs by structural induction’, Comp. J. 12, 41–48 (1969).
Burstall, R. M. and Darlington, J. ‘A transformation system for recursive programs,’ J. ACM 24, 44–67 (1977).
Burstall, R. M., MacQueen, D. B., and Sannella, D. T., ‘HOPE, an experimental applicative language,’ Proc. LISP Conference, pp. 136–143 (1980).
Dershowitz, N., Computing with Rewrite Systems, Report ATR-83(8478)-1, Inform. Sci. Research Office, The Aerospace Corp., El Segundo CA (1983).
Dershowitz, N., ‘Termination of rewriting’, J. Symbolic Comp. 3, 69–115 (1987).
Dincbas, M. and van Hentenryck, P., ‘Extended unification algorithms for the integration of functional programming into logicprogramming’, J. Logic Programming 4, 199–227 (1987).
Dershowitz, N., Okada, M., and Sivakumar, G., ‘Canonical conditional rewrite systems’, Proc. CADE '88, Springer LNCS 310, 538–549 (1988).
Furbach, U., Hölldobler, S., and Schreiber, J., ‘Horn equality theories and paramodulation’, J. Automated Reasoning 5, 309–338 (1989).
Fribourg, L., ‘A strong restriction of the inductive completion procedure,’ Proc. ICALP '86, Springer LNCS 226, 105–115 (1986).
Gallier, J. H. and Synder, W., ‘A general complete e-unification procedure’, Proc. RTA '87, Springer LNCS 256, 216–227 (1987).
Ganzinger, H., A Completion Procedure for Conditional Equations, Proc. Conditional Term Rewriting Systems, Springer LNCS 308, 62–83 (1987).
Garland, S. J. and Guttag, J. V., ‘Inductive methods for reasoning about abstract data types,’ Proc. POPL '88, 219–228 (1988).
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).
Goldberg, A. T., ‘Knowledge-based programming: a survey of program design and construction techniques,’ IEEE Transact. SE-12, 752–768 (1986).
Green, C. and Barstow, D., ‘On program synthesis knowledge’, Artificial Intelligence 10, 241–279 (1978).
Gregory, S., Parallel Logic Programming in PARLOG: the Language and its Implementation, Addison-Wesley (1987).
Gries, D., ‘The Schorr-Waite graph marking algorithm’, Acta Inform. 11, 223–232 (1979).
Hoare, C. A. R., ‘An axiomatic basis for computer programming’, Comm. ACM 12, 576–583 (1969).
Hölldobler, S., ‘Equational logic programming’, Proc. Symp. on Logic Programming, pp. 335–346 (1987).
Hoffmann, C. M. and O'Donnell, M. J., ‘Programming with equations’, ACM TOPLAS 4, 83–112 (1982).
Hsiang, J. and Rusinowitch, M. ‘On word problems in equational theories,’ Proc. ICALP '87, Springer LNCS 267, 54–71 (1987).
Huet, G. and Hullot, J. M. ‘Proofs by induction in equational theories with constructors,’ J. Comp. and Syst. Sci. 25, 239–266 (1982).
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).
Hutter, D., ‘Using resolution and paramodulation for induction proofs’, Proc. 10th GW AI, Springer Informatik-Fachberichte 124, 265–276 (1986).
Jaffar, J. and Lassez, J. L., ‘Constraint logic programming’, Proc. POPL '87 (1987).
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).
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).
Kaplan, S., ‘Conditional rewrite rules’, Theoretical Computer Science 33, 175–194 (1984).
Kapur, D. and Musser, D. R., ‘Proof by consistency’, Artificial Intelligence 31, 125–157 (1987).
Knuth, D. E., ‘Semantics of context-free languages’, Math. Syst. Theory 2, 127–145 (1968).
Lankford, D. S., Canonical Inference, Report ATP-32, University of Texas at Austin (1975).
Lloyd, J. W., Foundations of Logic Programming, 2nd edition, Springer (1987).
Loeckx, J. and Sieber, K. The Foundations of Program Verification, 2nd edition, John Wiley & Sons (1987).
Manna, Z. Mathematical Theory of Computation, McGraw-Hill (1974).
Manna, Z. and Waldinger, R. ‘A deductive approach to program synthesis’, ACM TOPLAS 2, 90–121 (1980).
Manna, Z. and Waldinger, R., ‘How to clear a block: a theory of plans’, J. Automated Reasoning 3, 343–377 (1987).
Martelli, A., Moiso, C. and Rossi, G. F., ‘An algorithm for unification in equational theories’, Proc. Symp. on Logic Programming, pp. 180–186 (1986).
O'Donnell, M. J. Equational Logic as a Programming Language, The MIT Press (1985).
Padawitz, P. ‘Computing in Horn clause theories’, EATCS Monographs on Theor. Comp. Sci. 16, Springer (1988).
Padawitz, P. Inductive Proofs of Constructor-based Horn Clauses, Report MIP-8810, Universität Passau (1988).
Padawitz, P., ‘On goal and term reduction calculi’, Proc. 1st German Workshop on Term Rewriting, SEKI Report SR-89-02, Universität Kaiserslautern (1989).
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).
Padawitz, P., On Inductive Proofs of Network Properties: The Alternating Bit Protocol, Report MIP-8925, Universität Passau (1989).
de Roever, W. P. ‘On backtracking and greatest fixpoints’, Proc. ICALP '77, Springer LNCS 52 412–429 (1977).
Shapiro, E. ‘Concurrent PROLOG: a progress report,’ in W. Bibel and Ph. Jorrand, (eds.) Fundamentals of Artificial Intelligence, Springer (1987).
Siefkes, D., Hofbauer, D., and Kutsche, R., Completeness Proofs for Logic Programming, Bericht 1988/23, FB Informatik, TU Berlin (1989).
Slagle, J. R., ‘Automated theorem proving for theories with simplifiers, commutativity and associativity’, J. ACM 21 622–642 (1974).
Smith, D. R., ‘Top-down synthesis of divide-and-conquer algorithms’, Artificial Intelligence 27, 43–96 (1985).
Steinbach, J. ‘Extensions and comparisons of simplification orderings’, Proc. RTA '89, Springer LNCS 355, 434–448 (1989).
Tanenbaum, A. S. Computer Networks, Prentice Hall (1981).
You, J.-H. ‘Outer narrowing for equational theories based on constructors’, Proc. ICALP '88, Springer LNCS 317, 727–741 (1988).
Author information
Authors and Affiliations
Rights 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
Received:
Issue Date:
DOI: https://doi.org/10.1007/BF00249354