“Catamorphisms” are functions on an initial data type (an inductively defined domain) whose inductive definitional pattern mimics that of the type. These functions have powerful calculation properties by which inductive reasoning can be replaced by equational reasoning. This paper introduces a generalisation of catamorphisms, dubbed “paramorphisms”. Paramorphisms correspond to a larger class of inductive definition patterns; in fact, we show that any function defined on an initial type can be expressed as a paramorphism. In spite of this generality, it turns out that paramorphisms have calculation properties very similar to those of catamorphisms. In particular, we prove a Unique Extension Property and a Promotion Theorem for paramorphisms.
KeywordsFormal program construction Initial data type
Unable to display preview. Download preview PDF.
- [BCM89]Backhouse, R., Chisholm, P., Malcolm, G. and Saaman, E.: Do-it-Yourself Type Theory.Formal Aspects of Computing,1, 19–84 (1989).Google Scholar
- [Bir87]Bird, R. S.: An introduction to the Theory of Lists. In:Logic of Programming and Calculi of Discrete Design, M. Broy, (ed.),NATO ASI Series, vol. F36, pp. 5–42, Springer-Verlag, 1987.Google Scholar
- [Bir89]Bird, R. S.: Lectures on Constructive Functional Programming. In:Constructive Methods in Computing Science, M. Broy, (ed.),NATO ASI Series, vol. F55, pp. 151–216, Springer-Verlag, 1989.Google Scholar
- [Gog80]Goguen, J. A.: How to Prove Inductive Hypotheses Without Induction. In:Proc. 5th Conf. on Automated Deduction, W. Bibel and R. Kowalski (eds), LNCS 87, pp. 356–373, Springer-Verlag, 1980.Google Scholar
- [Mal90]Malcolm, G.: Data Structures and Program Transformation.Science of Computer Programming,14, 255–279 (1990).Google Scholar
- [Mee86]Meertens, L.: Algorithmics — towards Programming as a Mathematical Activity. In:Proc. CWI Symp. on Mathematics and Computer Science, J. W. de Bakker, M. Hazewinkel and J. K. Lenstra (eds),CWI Monographs, vol. 1, pp. 289–334, North-Holland, 1986.Google Scholar
- [Mee89]Meertens, L.: Constructing a Calculus of Programs. In:Mathematics of Program Construction, J. L. A. van de Snepscheut (ed.), LNCS 375, pp. 66–90, Springer-Verlag, 1989.Google Scholar