Hostname: page-component-8448b6f56d-sxzjt Total loading time: 0 Render date: 2024-04-24T13:07:58.563Z Has data issue: false hasContentIssue false

Total unfolding: theory and applications

Published online by Cambridge University Press:  07 November 2008

Björn Lisper
Affiliation:
The Royal Institute of Technology, Department of Teleinformatics, Electrum/204, S-164 40 Kista, Sweden and Swedish Institute of Computer Science, PO Box 1263, S-164 28 Kista, Sweden
Rights & Permissions [Opens in a new window]

Abstract

Core share and HTML view are not available for this content. However, as you have access to this content, a full PDF is available via the ‘Save PDF’ action button.

Unfolding is a common technique in program transformations. Here, we present a computation model where unfolding is a simple generalisation of the usual concept of evaluation. The model is a variant of the well-known full substitution evaluation rule for recursive programs. The evaluation mechanism involved is symbolic substitution of function definitions followed by simplification. Simplification is expressed as a confluent rewrite strategy which uses three kinds of reductions: β-reduction, non-erasing reduction, and erasing reduction. Non-erasing reductions include simplification of constant subexpressions. Erasing reductions formalize the behaviour of nonstrict operations. In this computation model, we prove a termination theorem of symbolic unfolding relative to more instantiated calls. A possible application of the model is a technique called total unfolding, where a partially instantiated function call is unfolded until no more calls exist. Under certain conditions the result will be a first order term: such terms correspond to basic blocks in imperative programs and can be efficiently implemented by scheduling techniques. Possible applications are hardware synthesis, and code generation for parallel machines.

Type
Articles
Copyright
Copyright © Cambridge University Press 1994

References

Aho, A. V., Sethi, R. & Ullman, J. D. (1986) Compilers: Principles, Techniques, and Tools. Addison-Wesley.Google Scholar
Arsac, J. & Kodratoff, Y. (1982) Some techniques for recursion removal from recursive functions. ACM TOPLAS 4(2), 295322.CrossRefGoogle Scholar
Barendregt, H. P. (1981) The lambda calculus – its syntax and semantics: Studies in Logic and the Foundations of Mathematics, vol. 103. North-Holland.Google Scholar
Berlin, A. & Weise, D. (1990) Compiling scientific code using partial evaluation. Computer 23(12), 2537.CrossRefGoogle Scholar
Berry, G. & Lévy, J.-J. (1979) Minimal and optimal computations of recursive programs. J. ACM. 26(1), 148175.CrossRefGoogle Scholar
Bjørner, D., Ershov, A. P. & Jones, N.D. (eds) (1988) Partial evaluation and mixed computation: Proc. IFIP TC2 Workshop, Gammel Avernæs, Denmark, 10. North-Holland.Google Scholar
Bondorf, A. & Danvy, O. (1991) Automatic autoprojection of recursive equations with global variables and abstract data types. Science of Computer Program. 16, 151195.CrossRefGoogle Scholar
Burstall, R. M. & Darlington, J. (1977) A transformation system for developing recursive programs. J. ACM 24(1), 4467.CrossRefGoogle Scholar
Cadiou, J. M. (1972) Recursive definitions of partial functions and their computation. PhD thesis, Stanford University, CA.CrossRefGoogle Scholar
Chen, M. C. (1986 a)A design methodology for synthesizing parallel algorithms and architectures. J. Parallel Distrib. Comput. 461491.CrossRefGoogle Scholar
Chen, M. C. (1986b) A parallel language and its compilation to multiprocessor machines or VLSI. In: Proc. Principles of Programming Languages, pp. 131139, 01.Google Scholar
Courcelle, B. (1990) Recursive applicative program schemes. In: Handbook of Theoretical Computer Science, van Leeuwen, J. (ed.), Chapter 9, pp. 459492. Elsevier.Google Scholar
Darlington, J. & Burstall, R. M. (1976) A system which automatically improves programs. Acta Inform. 6(1), 4160.CrossRefGoogle Scholar
Delosme, J.-M. & Ipsen, I. (1987) Efficient systolic arrays for the solution of Toeplitz systems: an illustration of a methodology for the construction of systolic architectures in VLSI. In: Systolic Arrays, Moore, W., McCabe, A. & Urquhart, R. (eds.), pp.37–46. Adam Hilger.Google Scholar
Dershowitz, N. & Jouannaud, J.-P. (1991) Notations for rewriting. Bull. Euro. Assoc. Theoretical Computer Science, 162172, 02.Google Scholar
Dijkstra, E. W. (1982) An exercise for Dr. R. M. Burstall. In: Selected writings – A personal perspective on computer science, pp. 215216. Springer-Verlag.CrossRefGoogle Scholar
Dougherty, D. J. (1992) Adding algebraic rewriting to the untyped lambda calculus. Information and Computation 101, 251267.CrossRefGoogle Scholar
Hindley, J. R. & Seldin, J. P. (1986) Introduction to Combinators and λ-calculus: London Mathematical Society Student Texts, vol. 1. Cambridge University Press.Google Scholar
Huang, C.-H. & Lengauer, C. (1987) The derivation of systolic implementations of programs. Acta Inform. 24, 595632.CrossRefGoogle Scholar
Huet, G. (1980) Confluent reductions: Abstract properties and applications to term rewriting systems. J. ACM 27(4), 797821.CrossRefGoogle Scholar
Karp, R. M., Miller, R. E. & Winograd, S. (1967) The organization of computations for uniform recurrence equations. J. ACM 14(3), 563590.CrossRefGoogle Scholar
Klop, J. W. (1992) Term rewriting systems. In: Handbook of Logic in Computer Science, vol.2, Abramsky, S., Gabbay, D. M. & Maibaum, T. S. E. (eds.), Chapter 1, pp. 1116. Oxford University Press.Google Scholar
Kung, H. T. (1982) Why systolic architectures? Computer 15, 3746.CrossRefGoogle Scholar
Kung, S. Y. (1987) VLSI array processors. In: Systolic Arrays, Moore, W., McCabe, A. & Urquhart, R. (eds.), pp. 724. Adam Hilger.Google Scholar
Lisper, B. (1989) Synthesis of synchronous systems by static scheduling in space-time: Lecture Notes in Computer Science, vol. 362. Springer-Verlag.Google Scholar
Lisper, B. (1990 a)The Interactive Space-Time Scheduler. Microprocess. Microprogram. 30(1–5), 109116.CrossRefGoogle Scholar
Lisper, B. (1990b) Synthesis of time-optimal systolic arrays with cells with inner structure. J. Parallel Distrib. Comput. 10(2), 182187.CrossRefGoogle Scholar
Moldovan, D. I. (1982) On the analysis and synthesis of VLSI algorithms. IEEE Trans. Comput. 31, 11211126.CrossRefGoogle Scholar
Quinton, P. (1984) Automatic synthesis of systolic arrays from uniform recurrent equations. In: Proc. 11th Ann. Int. Symp. on Comput. Arch., pp. 208214.CrossRefGoogle Scholar
Rajopadye, S. V. & Fujimoto, R. M. (1990) Synthesizing systolic arrays from recurrence equations. Parallel Computing 14, 163189.CrossRefGoogle Scholar
Rao, S. K. & Kailath, T. (1988) Regular iterative algorithms and their implementation on processor arrays. Proc. IEEE 76(3), 259269.CrossRefGoogle Scholar
Raoult, J.-C. & Vuillemin, J. (1980) Operational and semantic equivalence between recursive programs. J. ACM 27(4), 772796.CrossRefGoogle Scholar
Sestoft, P. (1985) The structure of a self-applicable partial evaluator. In: Programs as Data Objects: Lecture Notes in Computer Science, Vol. 217, Ganzinger, H. & Jones, N. P. (eds.). Springer-Verlag.Google Scholar
Sestoft, P. (1988) Automatic call unfolding in a partial evaluator. In: Partial Evaluation and Mixed Computation: Proc. IFIP TC2 Workshop, Gammel Avernæs, Denmark, pp. 485506. North-Holland.Google Scholar
Shang, W. & Fortes, J. A. B. (1989) On the optimality of linear schedules. J. VLSI Signal Process. 1, 209220.CrossRefGoogle Scholar
Thompson, S. (1991) Type Theory and Functional Programming. Addison-Wesley.Google Scholar
Vuillemin, J. (1974) Correct and optimal implementations of recursion in a simple programming language. J. Computer and System Sci. 9, 332–254.CrossRefGoogle Scholar
Submit a response

Discussions

No Discussions have been published for this article.