A bounds inference method for vector-based memoization

The dynamic-sized tabulation method can be used to eliminate redundant calls for certain classes of recursive programs. An innovative aspect of the method is the use of lambda abstractions that may subsequently be converted to bounded vectors, in order to share redundant calls via vector lookup.To facilitate this conversion to vector form, we propose a new inference method to conservatively determine the bounds for arithmetic parameters of recursive functions. Suitable techniques for inferring the safe bounds of these parameters are introduced, together with supporting transformations. The resulting method can obtain efficient vector-based programs without the need for run-time bounds checking.

[1]  Wei-Ngan Chin Towards an automated tupling strategy , 1993, PEPM '93.

[2]  Michael Wolfe,et al.  Elimination of redundant array subscript range checks , 1995, PLDI '95.

[3]  Alberto Pettorossi,et al.  A powerful strategy for deriving efficient programs by transformation , 1984, LFP '84.

[4]  Amr Sabry,et al.  Proving the correctness of reactive systems using sized types , 1996, POPL '96.

[5]  Wei-Ngan Chin,et al.  A higher-order removal method , 1996, LISP Symb. Comput..

[6]  John Darlington,et al.  A Transformation System for Developing Recursive Programs , 1977, J. ACM.

[7]  William Pugh,et al.  The Omega test: A fast and practical integer programming algorithm for dependence analysis , 1991, Proceedings of the 1991 ACM/IEEE Conference on Supercomputing (Supercomputing '91).

[8]  W. Bledsoe A new method for proving certain Presburger formulas , 1975, IJCAI 1975.

[9]  Akihiko Takano,et al.  Generalized partial computation for a lazy functional language , 1991, PEPM '91.

[10]  Peter Sestoft,et al.  Partial evaluation and automatic program generation , 1993, Prentice Hall international series in computer science.

[11]  Rajiv Gupta A fresh look at optimizing array bound checking , 1990, PLDI '90.

[12]  Richard S. Bird,et al.  Tabulation Techniques for Recursive Programs , 1980, CSUR.

[13]  William Pugh,et al.  A practical algorithm for exact array dependence analysis , 1992, CACM.

[14]  DONALD MICHIE,et al.  “Memo” Functions and Machine Learning , 1968, Nature.

[15]  Wei-Ngan Chin,et al.  A transformation method for dynamic-sized tabulation , 1995 .

[16]  Norman H. Cohen Eliminating Redundant Recursive Calls. , 1983, TOPL.