Abstract
Algorithms are different from programs and should not be described with programming languages. The only simple alternative to programming languages has been pseudo-code. PlusCal is an algorithm language that can be used right now to replace pseudo-code, for both sequential and concurrent algorithms. It is based on the TLA + specification language, and a PlusCal algorithm is automatically translated to a TLA + specification that can be checked with the TLC model checker and reasoned about formally.
Preview
Unable to display preview. Download preview PDF.
Similar content being viewed by others
References
Wirth, N.: Algorithms + Data Structures = Programs. Prentice-Hall, Englewood Cliffs (1975)
Lamport, L.: Specifying Systems. Addison-Wesley, Boston (2003), http://lamport.org
Yu, Y., Manolios, P., Lamport, L.: Model checking TLA + specifications. In: Pierre, L., Kropf, T. (eds.) CHARME 1999. LNCS, vol. 1703, pp. 54–66. Springer, Heidelberg (1999)
Lamport, L.: The PlusCal algorithm language, http://research.microsoft.com/users/lamport/tla/pluscal.html The page can also be found by searching the Web for the 25-letter string obtained by removing the “-” from uid-lamportpluscalhomepage
Sedgewick, R.: Algorithms. Addison-Wesley, Reading (1988)
Hoare, C.A.R.: Algorithm 64: Quicksort. Communications of the ACM 4, 321 (1961)
Lamport, L.: A fast mutual exclusion algorithm. ACM Transactions on Computer Systems 5, 1–11 (1987)
Lamport, L.: What good is temporal logic? In: Mason, R.E.A. (ed.) Information Processing 83: Proceedings of the IFIP 9th World Congress, Paris, IFIP, pp. 657–668. North-Holland, Amsterdam (1983)
Pratt, V.R.: Semantical considerations on Floyd-Hoare logic. In: 17th Symposium on Foundations of Computer Science, pp. 109–121. IEEE, Los Alamitos (1976)
Lynch, N.A.: Distributed Algorithms. Morgan Kaufmann, San Mateo (1995)
Francez, N.: Fairness. Texts and Monographs in Computer Science. Springer, Heidelberg (1986)
Lamport, L.: Checking a multithreaded algorithm with + CAL. In: Dolev, S. (ed.) DISC 2006. LNCS, vol. 4167, pp. 151–163. Springer, Heidelberg (2006)
Lamport, L.: The temporal logic of actions. ACM Transactions on Programming Languages and Systems 16, 872–923 (1994)
Schwartz, J.T., Dewar, R.B., Schonberg, E., Dubinsky, E.: Programming with sets: An Introduction to SETL. Springer, New York (1986)
Jackson, D.: Alloy: a lightweight object modelling notation. ACM Transactions on Software Engineering and Methodology 11, 256–290 (2002)
Holzmann, G.J.: The Spin Model Checker. Addison-Wesley, Boston (2004)
McMillan, K.L.: Symbolic Model Checking. Kluwer Academic Publishers, Dordrecht (1993)
Gurevich, Y.: Can abstract state machines be useful in language theory? Theoretical Computer Science 376, 17–29 (2007)
Dijkstra, E.W.: A Discipline of Programming. Prentice-Hall, Englewood Cliffs (1976)
Hoare, C.A.R.: Communicating sequential processes. Communications of the ACM 21, 666–677 (1978)
Author information
Authors and Affiliations
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 2009 Springer-Verlag Berlin Heidelberg
About this paper
Cite this paper
Lamport, L. (2009). The PlusCal Algorithm Language. In: Leucker, M., Morgan, C. (eds) Theoretical Aspects of Computing - ICTAC 2009. ICTAC 2009. Lecture Notes in Computer Science, vol 5684. Springer, Berlin, Heidelberg. https://doi.org/10.1007/978-3-642-03466-4_2
Download citation
DOI: https://doi.org/10.1007/978-3-642-03466-4_2
Publisher Name: Springer, Berlin, Heidelberg
Print ISBN: 978-3-642-03465-7
Online ISBN: 978-3-642-03466-4
eBook Packages: Computer ScienceComputer Science (R0)