Symbolic finite differencing - Part I

  • Robert Paige
Conference paper
Part of the Lecture Notes in Computer Science book series (LNCS, volume 432)


Programming practice is limited by labor costs such as implementation design, program development, debugging, and maintenance (including evolution and integration). Because resource utilization is often difficult to predict precisely, the economics of software developement also depends on the risk of the implementation failing to meet its performance requirements. Consequently, complex algorithms are frequently avoided in large systems — even in optimizing compilers, where run-time performance of the compiled code is so important.

Our aim is to overcome some of these limitations by means of a transformational programming tool that facilitates implementation of complex algorithms with guaranteed worst-case asymptotic time and space. RAPTS, a working prototype of such a tool is scheduled to be demonstrated at ESOP '90.

This paper is in two parts. In part I we specify a general finite differencing framework that unifies aspects of compiler and programming methodologies, and is the basis for one of the three main transformations implemented in RAPTS. In Part II we illustrate how the transformational methodology underlying RAPTS can be used to improve the implementation of its own finite differencing transformation. Improved reduction in strength models and algorithms for conventional languages are produced as an outgrowth of this discussion.


Finite Difference Strength Reduction Program Region Program Expression Program Variable 
These keywords were added by machine and not by the authors. This process is experimental and the keywords may be updated as the learning algorithm improves.


  1. 1.
    Aho, A., Hopcroft, J., and Ullman, J., Design and Analysis of Computer Algorithms, Addison-Wesley, 1974.Google Scholar
  2. 2.
    Allen, F. E., “Program Optimization,” Annual Review of Automatic Programming, vol. 5, pp. 239–307, 1969.Google Scholar
  3. 3.
    Allen, F. E., Cocke, J., and Kennedy, K., “Reduction of Operator Strength,” in Program Flow Analysis, ed. Muchnick, S. and Jones, N., pp. 79–101, Prentice Hall, 1981.Google Scholar
  4. 4.
    Bancilhon, F., “Naive Evaluation of Recursively defined Relations,” in On Knowledge-Base Management Systems, ed. Mylopoulos, J, pp. 165–178, 1985.Google Scholar
  5. 5.
    Bernstein, P., Blaustein, B., and Clarke, E., “Fast Maintenance of Semantic Integrity Assertions Using Redundant Aggregate Data,” in Proceedings 6th International Conference on VLDB, pp. 126–136, Montreal, Canada, October, 1980.Google Scholar
  6. 6.
    Cai, J. and Paige, R., “Binding Performance at Language Design Time,” in ACM POPL, pp. 85–97, Jan, 1987.Google Scholar
  7. 7.
    Cai, J. and Paige, R., “Program Derivation by Fixed Point Computation,” Science of Computer Programming, vol. 11, pp. 197–261, 1988/89.CrossRefGoogle Scholar
  8. 8.
    Cocke, J. and Kennedy, K., “An Algorithm for Reduction of Operator Strength,” CACM, vol. 20, no. 11, pp. 850–856, Nov., 1977.Google Scholar
  9. 9.
    Cocke, J. and Schwartz, J. T., Programming Languages and Their Compilers, Lecture Notes, CIMS, New York University, 1969.Google Scholar
  10. 10.
    Cocke, J., private communication, 1986.Google Scholar
  11. 11.
    Cousot, P. and Cousot, R., “Constructive versions of Tarski's fixed point theorems,” Pacific J. Math., vol. 82, no. 1, pp. 43–57, 1979.Google Scholar
  12. 12.
    Dijkstra, E. W., A Discipline of Programming, Prentice-Hall, 1976.Google Scholar
  13. 13.
    Dijkstra, E. W., “A note on two problems in connexion with graphs,” Numer. Math., vol. 1, no. 5, pp. 269–271, 1959.CrossRefGoogle Scholar
  14. 14.
    Earley, J., “Toward an Understanding of Data Structures,” CACM, vol. 14, no. 10, pp. 617–627, Oct. 1971.Google Scholar
  15. 15.
    Earley, J., “High Level Operations in Automatic Programming,” in Proc. Symp. on Very High Level Langs., vol. 9, Sigplan Notices, Apr, 1974.Google Scholar
  16. 16.
    Earley, J., “High Level Iterators and a Method for Automatically Designing Data Structure Representation,” J of Computer Languages, vol. 1, no. 4, pp. 321–342, 1976.CrossRefGoogle Scholar
  17. 17.
    Floyd, R., “Algorithm 97: shortest path,” CACM, vol. 5, no. 6, p. 345, 1962.Google Scholar
  18. 18.
    Fong, A. and Ullman, J., “Induction Variables in Very High Level Languages,” in Proceedings Third ACM Symposium on Principles of Programming Languages, pp. 104–112, Jan, 1976.Google Scholar
  19. 19.
    Fong, A., “Elimination of Common Subexpressions in Very High Level Languages,” in Proceedings Fourth ACM Symposium on Principles of Programming Languages, pp. 48–57, Jan, 1977.Google Scholar
  20. 20.
    Fong, A., “Inductively Computable Constructs in Very High Level Languages,” in Proceedings Sixth ACM Symposium on Principles of Programming Languages, pp. 21–28, Jan, 1979.Google Scholar
  21. 21.
    Fredman, M. and Tarjan, R., “Fibonacci Heaps and Their Uses in Improved Network Optimization Algorithms,” in 25th Annual Symp. on FOCS, pp. 338–346, Oct., 1984.Google Scholar
  22. 22.
    Goldstine, H., A History of Numerical Analysis, Springer-Verlag, New York, 1977.Google Scholar
  23. 23.
    Goldstine, H., The Computer from Pascal to Von Neumann, Princeton University Press, Princeton, New Jersey, 1972.Google Scholar
  24. 24.
    Gries, D., The Science of Programming, Springer Verlag, 1981.Google Scholar
  25. 25.
    Hoffmann, C. and O'Donnell, J., “Pattern Matching in Trees,” JACM, vol. 29, no. 1, pp. 68–95, Jan, 1982.CrossRefGoogle Scholar
  26. 26.
    Hoover, R. and Teitelbaum, T., “Efficient Incremental Evaluation of Aggregate Values in Attribute Grammars,” in Proc. Symp. on Compiler Construction, pp. 39–50, 1986.Google Scholar
  27. 27.
    Horwitz, S. and Teitelbaum, T., “Generating Editing Environments Based on Relations and Attributes,” ACM TOPLAS, vol. 8, no. 4, pp. 577–608, Oct. 1986.CrossRefGoogle Scholar
  28. 28.
    Knorr, W., private communication, 1982.Google Scholar
  29. 29.
    Koenig, S. and Paige, R., “A Transformational Framework for the Automatic Control of Derived Data,” in Proceedings 7th International Conference on VLDB, pp. 306–318, Sep, 1981.Google Scholar
  30. 30.
    Lowry, S. and Medlock, C., “Object Code Optimization,” CACM, vol. 12, no. 1, pp. 13–22, Jan., 1969.Google Scholar
  31. 31.
    Marlowe, T. and Ryder, B., “An efficient hybrid algorithm for incremental dataflow analysis,” in 17th Symp. ACM POPL, 1990.Google Scholar
  32. 32.
    Meertens, L., “Algorithmics,” in Mathematics and Computer Science — Proc. CWI Symp. Nov. 1983, ed. J. W. de Bakker, M. Hazewinkel and J.K. Lenstra, CWI Monographs Vol. I, North-Holland, 1986.Google Scholar
  33. 33.
    Paige, R. and Koenig, S., “Finite Differencing of Computable Expressions,” ACM TOPLAS, vol. 4, no. 3, pp. 402–454, July, 1982.CrossRefGoogle Scholar
  34. 34.
    Paige, R., Formal Differentiation, UMI Research Press, Ann Arbor, Mich, 1981.Google Scholar
  35. 35.
    Paige, R., “Transformational Programming — Applications to Algorithms and Systems,” in Proceedings Tenth ACM Symposium on Principles of Programming Languages, pp. 73–87, Jan, 1983.Google Scholar
  36. 36.
    Paige, R., “Applications of Finite Differencing to Database Integrity Control and Query/Transaction Optimization,” in Advances In Database Theory, ed. Gallaire, H., Minker, J., and Nicolas, J.-M., vol. 2, pp. 171–210, Plenum Press, New York, Mar, 1984.Google Scholar
  37. 37.
    Paige, R., “Programming With Invariants,” IEEE Software, vol. 3, no. 1, pp. 56–69, Jan, 1986.Google Scholar
  38. 38.
    Pettorossi, A. and Proietti, M., The Automatic Construction of Logic Programs, IFIPS WG2.1 TR 568 CHM-15, 1989.Google Scholar
  39. 39.
    Reps, T., Teitelbaum, T., and Demers, A., “Incremental Context-Dependent Analysis for Language-Based editors,” ACM TOPLAS, vol. 5, no. 3, pp. 449–477, July, 1983.CrossRefGoogle Scholar
  40. 40.
    Robinson, J. A., “A Machine Oriented Logic Based on the Resolution Principle,” JACM, pp. 23–41, January, 1965.Google Scholar
  41. 41.
    Rosen, B. K., “Degrees of Availability,” in Program Flow Analysis, ed. Muchnick, S., Jones, N., pp. 55–76, Prentice Hall, 1981.Google Scholar
  42. 42.
    Roussopoulos, N., The Incremental Access Method of View Cache: Concept, Algorithm, and Cost Analysis, Computer Science Technical Report Series UMIACS-TR-89-15, CS-TR-2193, Institute for Advanced Computer Studies, Department of Computer Science, University of Maryland, February, 1989.Google Scholar
  43. 43.
    Sacca, D. and Zaniolo, C., Differential Fixpoint Methods and Stratification of Logic Programs, MCC TR ACA-ST-032-88, 1988.Google Scholar
  44. 44.
    Samelson, K. and Bauer, F. L., “Sequential Formula Translation,” CACM, vol. 3, no. 2, pp. 76–83, Feb, 1960.Google Scholar
  45. 45.
    Schwartz, J., Dewar, R., Dubinsky, D., and Schonberg, E., Programming with Sets: An introduction to SETL, Springer-Verlag, 1986.Google Scholar
  46. 46.
    Smith, D., “KIDS — A Knowledge-Based Software Development System,” in Proc. Workshop on Automating Software Design, AAAI-88, pp. 129–136, Sept. 1988.Google Scholar
  47. 47.
    Tarjan, R., “A Unified Approach to Path Problems,” JACM, vol. 28, no. 3, pp. 577–593, July, 1981.CrossRefGoogle Scholar
  48. 48.
    Tarski, A., “A Lattice-Theoretical Fixpoint Theorem and its Application,” Pacific J. of Mathematics, vol. 5, pp. 285–309, 1955.Google Scholar
  49. 49.
    Ullman, J., Principles of Database and Knowledge-Base Systems, I, Computer Science Press, 1988.Google Scholar
  50. 50.
    Wachter, R., private communication, 1989.Google Scholar
  51. 51.
    Whang, K. and Navathe, S., “An Extended Disjunctive Normal Form Approach for Processing Recursive Logic Queries in Loosely Coupled Environments,” in Proc. 13th Intl. Conf. on Very Large Data Bases, pp. 275–287, Sept. 1987.Google Scholar
  52. 52.
    Williams, J. W. J., “Algorithm 232: Heapsort,” CACM, vol. 7, no. 6, pp. 347–348, 1964.Google Scholar
  53. 53.
    Yellin, D. and Strom, R., INC: A Language for Incremental Computations, IBM Research Center/Yorktown Heights RC14375(#64375), 1989.Google Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 1990

Authors and Affiliations

  • Robert Paige
    • 1
  1. 1.Computer Science DepartmentNew York University/Courant InstituteNew York

Personalised recommendations