Abstract
Real-time software, particularly that used in embedded systems, has unique resource and verification requirements. While embedded software may not have great need for processor and memory resources, the need to prove that computations are performed correctly and within hard time and space constraints is very great. Improvements in hardware and compiler technology mean that functional programming languages are increasingly practical for embedded situations. We present a functional programming language, Ca, built on catamorphisms instead of general recursion, intended for use in static analysis. Ca is not Turing-complete—every program must terminate—but it still provides an excellent framework for building static analysis techniques. Catamorphisms are a general tool which encompass bounded iteration, and allow to traverse any algebraic data structure. We discuss the computational properties of this language, as well as provide a framework for future work in static analysis.
Access this chapter
Tax calculation will be finalised at checkout
Purchases are for personal use only
Preview
Unable to display preview. Download preview PDF.
References
Ball, T., Rajamani, S.K.: The SLAM project: debugging software via static analysis. In: 29th ACM SIGPLAN-SIGACT symposium on Principles of programming languages, pp. 1–3 (2002)
Brainerd, W.S., Landweber, L.H.: Theory of computation. Wiley, New York (1974)
Cockett, R.: Charitable thoughts. Lecture notes, University of Calgary (1996)
Colson, L.: About primitive recursive algorithms. Theoretical Computer Science 83(1), 57–69 (1991)
Dhurjati, D., Das, M., Yang, Y.: Path-sensitive dataflow analysis with iterative refinement. Technical Report MSR-TR-2005-108, Microsoft Corporation (2005)
Ermedahl, A., Stappert, F., Engblom, J.: Clustered calculation of worst-case execution times. In: Proceedings of the 2003 International conference on Compilers, architecture, and synthesis for embedded systems, San Jose, California, USA, pp. 51–62 (2003)
Fukushima, T., Tuckey, C.: Charity User Manual. University of Calgary (January 1996)
Gustafsson, J., Ermedahl, A., Lisper, B.: Towards a flow analysis for embedded system c programs. In: 10th IEEE International Workshop on Object-Oriented Real-Time Dependable Systems, pp. 287–300 (2005)
Hagino, T.: A Categorical Programming Language. PhD thesis, University of Edinburgh (1987)
Steven Li, Y.-T., Malik, S., Wolfe, A.: Efficient microarchitecture modeling and path analysis for real-time software. In: 16th IEEE Real-Time Systems Symposium, p. 298 (1995)
MathWorld. Arrow notation (1999), http://mathworld.wolfram.com/ArrowNotation.html
Meijer, E., Fokkinga, M.M., Paterson, R.: Functional programming with bananas, lenses, envelopes and barbed wire. In: Hughes, J. (ed.) Functional Programming Languages and Computer Architecture. LNCS, vol. 523, pp. 124–144. Springer, Heidelberg (1991)
Author information
Authors and Affiliations
Editor information
Rights and permissions
Copyright information
© 2008 Springer-Verlag Berlin Heidelberg
About this paper
Cite this paper
Burrell, M.J., Andrews, J.H., Daley, M. (2008). A Useful Bounded Resource Functional Language. In: Geffert, V., Karhumäki, J., Bertoni, A., Preneel, B., Návrat, P., Bieliková, M. (eds) SOFSEM 2008: Theory and Practice of Computer Science. SOFSEM 2008. Lecture Notes in Computer Science, vol 4910. Springer, Berlin, Heidelberg. https://doi.org/10.1007/978-3-540-77566-9_17
Download citation
DOI: https://doi.org/10.1007/978-3-540-77566-9_17
Publisher Name: Springer, Berlin, Heidelberg
Print ISBN: 978-3-540-77565-2
Online ISBN: 978-3-540-77566-9
eBook Packages: Computer ScienceComputer Science (R0)