Abstract
Refinement algebras are abstract algebras for reasoning about programs in a total-correctness framework. We extend a reduct of von Wright’s demonic refinement algebra with two operators for modelling enabledness and termination of programs. We show how the operators can be used for expressing relations between programs and apply the algebra to reasoning about action systems.
Preview
Unable to display preview. Download preview PDF.
Similar content being viewed by others
References
Back, R.-J.: Correctness Preserving Program Refinements: Proof Theory and Applications. In: Mathematical Centre Tracts, vol. 131. Mathematical Centre, Amsterdam (1980)
Back, R.-J., Kurki-Suonio, R.: Decentralisation of process nets with centralised control. In: Proc. of 2nd Ann. ACM SIGACT-SIGOPS Symp. on Principles of Distributed Computing, PODC 1983, pp. 131–142. ACM Press, New York (1983)
Back, R.-J.: Refining atomicity in parallel algorithms. In: Odijk, E., Rem, M., Syre, J.-C. (eds.) PARLE 1989. LNCS, vol. 366, pp. 199–216. Springer, Heidelberg (1989)
Back, R.-J., Sere, K.: Stepwise refinement of action systems. Structured Programming 12(1), 17–30 (1991)
Back, R.-J., von Wright, J.: Refinement Calculus: A Systematic Introduction. Springer, Heidelberg (1998)
Back, R.-J., von Wright, J.: Reasoning algebraically about loops. Acta Inform. 36(4), 295–334 (1999)
Chen, W., Udding, J.T.: Program inversion: more than fun! Sci. of Comput. Program. 15(1), 1–13 (1990)
Cohen, E.: Hypotheses in Kleene algebra. Telcordia (unpublished manuscript, 1994)
Cohen, E.: Separation and reduction. In: Backhouse, R., Oliveira, J.N. (eds.) MPC 2000. LNCS, vol. 1837, pp. 45–59. Springer, Heidelberg (2000)
Desharnais, J., Möller, B., Struth, G.: Kleene algebra with domain. CoRR cs.LO/0310054 (2003)
Dijkstra, E.W.: A Discipline of Programming. Prentice Hall, Englewood Cliffs (1976)
Floyd, R.W.: Assigning meanings to programs. In: Schwartz, J.T. (ed.) Mathematical Aspects of Computer Science. Proc. of Symp. on Applied Math. Amer. Math. Soc., vol. XIX, pp. 19–32 (1967)
Gries, D.: The Science of Programming. Springer, Heidelberg (1981)
Höfner, P., Möller, B., Solin, K.: Omega algebra, demonic refinement algebra and commands. Technical Report 2006-11. Inst. für Informatik, Universität Augsburg (2006)
Kozen, D.: A completeness theorem for Kleene algebras and the algebra of regular events. Inform. and Comput. 110(2), 366–390 (1994)
Kozen, D.: Kleene algebra with tests. ACM Trans. on Program. Lang. and Syst. 19(3), 427–443 (1997)
Möller, B.: Lazy Kleene Algebra. In: Kozen, D. (ed.) MPC 2004. LNCS, vol. 3125, pp. 252–273. Springer, Heidelberg (2004)
Möller, B., Struth, G.: Greedy-like algorithms in Kleene algebra. In: Berghammer, R., Möller, B., Struth, G. (eds.) RelMiCS 2003. LNCS, vol. 3051, pp. 202–215. Springer, Heidelberg (2004)
Morgan, C.C.: Programming from Specifications, 2nd edn. Prentice-Hall, Englewood Cliffs (1994)
Nelson, G.: A generalization of Dijkstra’s calculus. ACM Trans. on Program. Lang. and Syst. 11(4), 517–561 (1989)
Sampaio, A.C.A.: An Algebraic Approach To Compiler Design. World Scientific, Singapore (1997)
von Wright, J.: From kleene algebra to refinement algebra. In: Boiten, E.A., Möller, B. (eds.) MPC 2002. LNCS, vol. 2386, pp. 233–262. Springer, Heidelberg (2002)
von Wright, J.: Towards a refinement algebra. Sci. of Comput. Program. 51(1-2), 23–45 (2004)
Author information
Authors and Affiliations
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 2006 Springer-Verlag Berlin Heidelberg
About this paper
Cite this paper
Solin, K., von Wright, J. (2006). Refinement Algebra with Operators for Enabledness and Termination. In: Uustalu, T. (eds) Mathematics of Program Construction. MPC 2006. Lecture Notes in Computer Science, vol 4014. Springer, Berlin, Heidelberg. https://doi.org/10.1007/11783596_23
Download citation
DOI: https://doi.org/10.1007/11783596_23
Publisher Name: Springer, Berlin, Heidelberg
Print ISBN: 978-3-540-35631-8
Online ISBN: 978-3-540-35632-5
eBook Packages: Computer ScienceComputer Science (R0)