An introduction to the theory of lists
Proceedings of the NATO Advanced Study Institute on Logic of programming and calculi of discrete design
Algebra of programming
Introduction to Functional Programming
Introduction to Functional Programming
Construction of List Homomorphisms by Tupling and Fusion
MFCS '96 Proceedings of the 21st International Symposium on Mathematical Foundations of Computer Science
Parallelizing functional programs by generalization
Journal of Functional Programming
Automatic inversion generates divide-and-conquer parallel programs
Proceedings of the 2007 ACM SIGPLAN conference on Programming language design and implementation
The third homomorphism theorem on trees: downward & upward lead to divide-and-conquer
Proceedings of the 36th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
A short cut to parallelization theorems
Proceedings of the 18th ACM SIGPLAN international conference on Functional programming
Hi-index | 0.00 |
The well-known third list homomorphism theorem states that if a function h is both an instance of foldr and foldl, it is a list homomorphism. Plenty of previous works devoted to constructing list homomorphisms, however, overlook the fact that proving h is both a foldr and a foldl is often the hardest part which, once done, already provides a useful hint about what the resulting list homomorphism could be. In this paper we propose a new approach: to construct a possible candidate of the associative operator and, at the same time, to transform a proof that h is both a foldr and a foldl to a proof that h is a list homomorphism. The effort constructing the proof is thus not wasted, and the resulting program is guaranteed to be correct.