858 bibliography - kaukau.edu.sa/files/830/files/57095_concepts techniques and...bibliography 859...

30
858 BIBLIOGRAPHY [69] Richard Hamming. The Art of Doing SCIENCE and Engineering: Learning to Learn. Gordon and Breach Science Publishers, 1997. [70] Seif Haridi and Sverker Janson. Kernel Andorra Prolog and its computation model. In 7th International Conference on Logic Programming, pages 31– 48. The MIT Press, June 1990. [71] Seif Haridi, Peter Van Roy, Per Brand, Michael Mehl, Ralf Scheidhauer, and Gert Smolka. Efficient logic variables for distributed computing. ACM Transactions on Programming Languages and Systems, May 1999. [72] Seif Haridi, Peter Van Roy, Per Brand, and Christian Schulte. Program- ming languages for distributed applications. New Generation Computing, 16(3):223–261, May 1998. [73] Seif Haridi, Peter Van Roy, and Gert Smolka. An overview of the design of Distributed Oz. In the 2nd International Symposium on Parallel Symbolic Computation (PASCO 97). ACM, July 1997. [74] Martin Henz. Objects for Concurrent Constraint Programming. Interna- tionale Series in Engineering and Computer Science. Kluwer Academic Pub- lishers, Boston, MA, USA, 1997. [75] Martin Henz. Objects for Concurrent Constraint Programming, volume 426 of The Kluwer International Series in Engineering and Computer Science. Kluwer Academic Publishers, Boston, November 1997. [76] Martin Henz. Objects in Oz. Doctoral dissertation, Saarland University, Saarbr¨ ucken, Germany, May 1997. [77] Martin Henz and Leif Kornstaedt. The Oz notation. Technical re- port, DFKI and Saarland University, December 1999. Available at http://www.mozart-oz.org/. [78] Martin Henz, Tobias M¨ uller, and Ka Boon Ng. Figaro: Yet another con- straint programming library. In Workshop on Parallelism and Implementa- tion Technology for Constraint Logic Programming, International Confer- ence on Logic Programming (ICLP 99), 1999. [79] Martin Henz, Gert Smolka, and J¨org W¨ urtz. Oz – a programming language for multi-agent systems. In 13th International Joint Conference on Artificial Intelligence, pages 404–409. Morgan Kaufmann, August 1993. [80] Martin Henz, GertSmolka, and J¨orgW¨ urtz. Oz—a programming language for multi-agent systems. In Ruzena Bajcsy, editor, 13th International Joint Conference on Artificial Intelligence, volume 1, pages 404–409, Chamb´ ery, France, 30 August–3 September 1993. Morgan Kaufmann Publishers. Copyright c 2001-3 by P. Van Roy and S. Haridi. All rights reserved.

Upload: others

Post on 30-Jul-2020

3 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: 858 BIBLIOGRAPHY - kaukau.edu.sa/Files/830/Files/57095_Concepts Techniques and...BIBLIOGRAPHY 859 [81] Martin Henz, Gert Smolka, and J¨org W¨urtz. Object-oriented concur-rent constraint

858 BIBLIOGRAPHY

[69] Richard Hamming. The Art of Doing SCIENCE and Engineering: Learningto Learn. Gordon and Breach Science Publishers, 1997.

[70] Seif Haridi and Sverker Janson. Kernel Andorra Prolog and its computationmodel. In 7th International Conference on Logic Programming, pages 31–48. The MIT Press, June 1990.

[71] Seif Haridi, Peter Van Roy, Per Brand, Michael Mehl, Ralf Scheidhauer,and Gert Smolka. Efficient logic variables for distributed computing. ACMTransactions on Programming Languages and Systems, May 1999.

[72] Seif Haridi, Peter Van Roy, Per Brand, and Christian Schulte. Program-ming languages for distributed applications. New Generation Computing,16(3):223–261, May 1998.

[73] Seif Haridi, Peter Van Roy, and Gert Smolka. An overview of the design ofDistributed Oz. In the 2nd International Symposium on Parallel SymbolicComputation (PASCO 97). ACM, July 1997.

[74] Martin Henz. Objects for Concurrent Constraint Programming. Interna-tionale Series in Engineering and Computer Science. Kluwer Academic Pub-lishers, Boston, MA, USA, 1997.

[75] Martin Henz. Objects for Concurrent Constraint Programming, volume 426of The Kluwer International Series in Engineering and Computer Science.Kluwer Academic Publishers, Boston, November 1997.

[76] Martin Henz. Objects in Oz. Doctoral dissertation, Saarland University,Saarbrucken, Germany, May 1997.

[77] Martin Henz and Leif Kornstaedt. The Oz notation. Technical re-port, DFKI and Saarland University, December 1999. Available athttp://www.mozart-oz.org/.

[78] Martin Henz, Tobias Muller, and Ka Boon Ng. Figaro: Yet another con-straint programming library. In Workshop on Parallelism and Implementa-tion Technology for Constraint Logic Programming, International Confer-ence on Logic Programming (ICLP 99), 1999.

[79] Martin Henz, Gert Smolka, and Jorg Wurtz. Oz – a programming languagefor multi-agent systems. In 13th International Joint Conference on ArtificialIntelligence, pages 404–409. Morgan Kaufmann, August 1993.

[80] Martin Henz, Gert Smolka, and Jorg Wurtz. Oz—a programming languagefor multi-agent systems. In Ruzena Bajcsy, editor, 13th International JointConference on Artificial Intelligence, volume 1, pages 404–409, Chambery,France, 30 August–3 September 1993. Morgan Kaufmann Publishers.

Copyright c© 2001-3 by P. Van Roy and S. Haridi. All rights reserved.

Page 2: 858 BIBLIOGRAPHY - kaukau.edu.sa/Files/830/Files/57095_Concepts Techniques and...BIBLIOGRAPHY 859 [81] Martin Henz, Gert Smolka, and J¨org W¨urtz. Object-oriented concur-rent constraint

BIBLIOGRAPHY 859

[81] Martin Henz, Gert Smolka, and Jorg Wurtz. Object-oriented concur-rent constraint programming in Oz. In Pascal Van Hentenryck and Vi-jay Saraswat, editors, Principles and Practice of Constraint Programming,pages 29–48, Cambridge, Mass., 1995. The MIT Press.

[82] Charles Antony Richard Hoare. Monitors: An operating system structuringconcept. Communications of the ACM, 17(10):549–557, October 1974.

[83] Charles Antony Richard Hoare. Communicating sequential processes. Com-munications of the ACM, 21(8):666–677, August 1978.

[84] Bruce K. Holmer, Barton Sano, Michael Carlton, Peter Van Roy, andAlvin M. Despain. Design and analysis of hardware for high performanceProlog. J. Log. Prog., 29:107–139, November 1996.

[85] Paul Hudak. Conception, evolution, and application of functional program-ming languages. Computing Surveys, 21(3):359–411, September 1989.

[86] Paul Hudak, John Peterson, and Joseph Fasel. A gentle introduction toHaskell version 98. Available at http://www.haskell.org/tutorial/.

[87] John Hughes. Why Functional Programming Matters. Computer Journal,32(2):98–107, 1989.

[88] Robert A. Iannucci. Parallel Machines: Parallel Machine Languages. TheEmergence of Hybrid Dataflow Computer Architectures. Kluwer, Dordrecht,the Netherlands, 1990.

[89] Daniel H. H. Ingalls. Design principles behind Smalltalk. Byte, 6(8):286–298, 1981.

[90] Joxan Jaffar and Michael Maher. Constraint logic programming: A survey.J. Log. Prog., 19/20:503–581, May/July 1994.

[91] Raj Jain. The Art of Computer Systems Performance Analysis. WileyProfessional Computing, 1991.

[92] Sverker Janson. AKL–A Multiparadigm Programming Language. PhD the-sis, Uppsala University and SICS, 1994.

[93] Sverker Janson and Seif Haridi. Programming paradigms of the Andor-ra Kernel Language. In International Symposium on Logic Programming,pages 167–183, October 1991.

[94] K. Jensen and N. Wirth. Pascal: User Manual and Report (Second Edition).Springer-Verlag, 1978.

[95] Richard Jones and Rafael Lins. Garbage Collection: Algorithms for Auto-matic Dynamic Memory Management. John Wiley & Sons, 1996.

Copyright c© 2001-3 by P. Van Roy and S. Haridi. All rights reserved.

Page 3: 858 BIBLIOGRAPHY - kaukau.edu.sa/Files/830/Files/57095_Concepts Techniques and...BIBLIOGRAPHY 859 [81] Martin Henz, Gert Smolka, and J¨org W¨urtz. Object-oriented concur-rent constraint

860 BIBLIOGRAPHY

[96] Andreas Kagedal, Peter Van Roy, and Bruno Dumant.Logical State Threads 0.1, January 1997. Available athttp://www.info.ucl.ac.be/people/PVR/implementation.html.

[97] Gilles Kahn. The semantics of a simple language for parallel programming.In IFIP Congress, pages 471–475, 1974.

[98] Gilles Kahn and David B. MacQueen. Coroutines and networks of parallelprocesses. In IFIP Congress, pages 993–998, 1977.

[99] B. W. Kernighan and D. M. Ritchie. The C Programming Language (ANSIC), Second Edition. Prentice Hall, 1988.

[100] Gregor Kiczales, Jim des Rivieres, and Daniel G. Bobrow. The Art of theMetaobject Protocol. The MIT Press, 1991.

[101] Donald E. Knuth. The Art of Computer Programming: SeminumericalAlgorithms, volume 2. Addison-Wesley.

[102] Donald E. Knuth. The Art of Computer Programming: Fundamental Algo-rithms, volume 1. Addison-Wesley, 1973.

[103] Donald E. Knuth. Structured programming with go to statements. Com-puting Surveys, 6(4), December 1974.

[104] Leif Kornstaedt. Gump – a front-end generator for Oz. Tech-nical report, Mozart Consortium, December 2001. Available athttp://www.mozart-oz.org/.

[105] S. Rao Kosaraju. Analysis of structured programs. J. Computer and SystemSciences, 9(3), December 1974.

[106] Robert Kowalski. Logic for Problem Solving. North-Holland, 1979.

[107] James F. Kurose and Keith W. Ross. Computer networking: a top-downapproach featuring the Internet. Addison-Wesley, 2001.

[108] Leslie Lamport. LaTeX: A Document Preparation System, Second Edition.Addison-Wesley, 1994.

[109] Hugh C. Lauer and Roger M. Needham. On the duality of operating sys-tem structures. In Second International Symposium on Operating Systems,IRIA, October 1978. Reprinted in Operating Systems Review, 13(2), April1979, pp. 3–19.

[110] Doug Lea. Concurrent Programming in Java. Addison-Wesley, 1997.

[111] Doug Lea. Concurrent Programming in Java, Second Edition. Addison-Wesley, 2000.

Copyright c© 2001-3 by P. Van Roy and S. Haridi. All rights reserved.

Page 4: 858 BIBLIOGRAPHY - kaukau.edu.sa/Files/830/Files/57095_Concepts Techniques and...BIBLIOGRAPHY 859 [81] Martin Henz, Gert Smolka, and J¨org W¨urtz. Object-oriented concur-rent constraint

BIBLIOGRAPHY 861

[112] Nancy Leveson and Clark S. Turner. An investigation of the Therac-25accidents. IEEE Computer, 26(7):18–41, July 1993.

[113] Henry Lieberman. Using prototypical objects to implement shared behav-ior in object-oriented systems. In 1st Conference on Object-Oriented Pro-gramming Languages, Systems, and Applications (OOPSLA 86), Septem-ber 1986. Also in Object-Oriented Computing, Gerald Peterson, ed., IEEEComputer Society Press, 1987.

[114] John Lloyd. Foundations of Logic Programming, Second Edition. Springer-Verlag, 1987.

[115] Nancy Lynch. Distributed Algorithms. Morgan Kaufmann, San Francisco,Calif., 1996.

[116] Bruce J. MacLennan. Principles of Programming Languages, Second Edi-tion. Saunders, Harcourt Brace Jovanovich, 1987.

[117] Michael Maher. Logic semantics for a class of committed-choice programs.In International Conference on Logic Programming (ICLP 87), pages 858–876, May 1987.

[118] Zohar Manna. The Mathematical Theory of Computation. McGraw-Hill,1974.

[119] Sun Microsystems. The Remote Method Invocation Specification, 1997.Available at http://www.javasoft.com.

[120] John McCarthy. LISP 1.5 Programmer’s Manual. The MIT Press, 1962.

[121] Michael Mehl, Christian Schulte, and Gert Smolka. Futuresand by-need synchronization for Oz. DRAFT. Available athttp://www.mozart-oz.org/papers/, May 1998.

[122] Bertrand Meyer. Object-Oriented Software Construction, Second Edition.Prentice Hall, 2000.

[123] Mark Miller, Marc Stiegler, Tyler Close, Bill Frantz, Ka-Ping Yee, ChipMorningstar, Jonathan Shapiro, and Norm Hardy. E: Open source dis-tributed capabilities, 2001. Available at http://www.erights.org.

[124] Mark Miller, Ka-Ping Yee, and Jonathan Shapiro. Capability myths de-molished. Draft available at http://zesty.ca/capmyths, 2003.

[125] Mark S. Miller, Chip Morningstar, and Bill Frantz. Capability-based finan-cial instruments. In Financial Cryptography 2000, Anguilla, British WestIndies, February 2000.

Copyright c© 2001-3 by P. Van Roy and S. Haridi. All rights reserved.

Page 5: 858 BIBLIOGRAPHY - kaukau.edu.sa/Files/830/Files/57095_Concepts Techniques and...BIBLIOGRAPHY 859 [81] Martin Henz, Gert Smolka, and J¨org W¨urtz. Object-oriented concur-rent constraint

862 BIBLIOGRAPHY

[126] Robin Milner, Mads Tofte, and Robert Harper. Definition of Standard ML.MIT Press, Cambridge, MA, USA, 1990.

[127] J. Paul Morrison. Flow-Based Programming: A New Approach to Applica-tion Development. Van Nostrand Reinhold, 1994.

[128] Almetwally Mostafa, Ilies Alouini, and Peter Van Roy.Fault tolerant global store module, 2001. Available athttp://www.mozart-oz.org/mogul/info/mostafa/globalstore.html.

[129] Mozart Consortium. The Mozart Programming System version 1.2.3, De-cember 2001. Available at http://www.mozart-oz.org/.

[130] Peter Naur. Revised report on the algorithmic language ALGOL 60. Com-munications of the ACM, 1963.

[131] Rishiyur S. Nikhil. ID language reference manual version 90.1. TechnicalReport Memo 284-2, MIT, Computation Structures Group, July 1994.

[132] Rishiyur S. Nikhil. An overview of the parallel language Id – a foundationfor pH, a parallel dialect of Haskell. Technical report, Digital EquipmentCorporation, Cambridge Research Laboratory, 1994.

[133] Rishiyur S. Nikhil and Arvind. Implicit Parallel Programming in pH. Mor-gan Kaufmann, 2001.

[134] Donald A. Norman. The Design of Everyday Things. Basic Books, Inc.,1988.

[135] Theodore Norvell. Monads for the working Haskell programmer – a shorttutorial. Available at http://www.haskell.org/.

[136] Peter Norvig. Paradigms of Artificial Intelligence Programming: Case Stud-ies in Common Lisp. Morgan Kaufmann, 1992.

[137] K. Nygaard and O. J. Dahl. The Development of the SIMULA Languages,pages 439–493. Academic Press, 1981.

[138] Chris Okasaki. Purely Functional Data Structures. Cambridge UniversityPress, 1998.

[139] Richard A. O’Keefe. The Craft of Prolog. The MIT Press, 1990.

[140] Andreas Paepcke, editor. Object-Oriented Programming: The CLOS Per-spective. The MIT Press, 1993.

[141] Seymour Papert. Mindstorms: Children, Computers, and Powerful Ideas.The Harvester Press, 1980.

Copyright c© 2001-3 by P. Van Roy and S. Haridi. All rights reserved.

Page 6: 858 BIBLIOGRAPHY - kaukau.edu.sa/Files/830/Files/57095_Concepts Techniques and...BIBLIOGRAPHY 859 [81] Martin Henz, Gert Smolka, and J¨org W¨urtz. Object-oriented concur-rent constraint

BIBLIOGRAPHY 863

[142] David Lorge Parnas. On the criteria to be used in decomposing systemsinto modules. Communications of the ACM, 15(12):1053–1058, December1972.

[143] David Lorge Parnas. Teaching programming as engineering. In 9th In-ternational Conference of Z Users, volume 967 of Lecture Notes in Com-puter Science. Springer-Verlag, 1995. Reprinted in Software Fundamentals,Addison-Wesley, 2001.

[144] David Lorge Parnas. Software Fundamentals. Addison-Wesley, 2001.

[145] F. Paterno. Model-based Design and Evaluation of Interactive Applications.Springer-Verlag, Berlin, 1999.

[146] David A. Patterson and John L. Hennessy. Computer Architecture: AQuantitative Approach, Second Edition. Morgan Kaufmann, 1996.

[147] Simon Peyton Jones. Tackling the awkward squad: monadic input/output,concurrency, exceptions, and foreign-language calls in Haskell. In TonyHoare, Manfred Broy, and Ralf Steinbruggen, editors, Engineering theoriesof software construction, pages 47–96. IOS Press, 2001. Presented at the2000 Marktoberdorf Summer School.

[148] Simon Peyton Jones, editor. Haskell 98 language and libraries: The revisedreport. Cambridge University Press, 2003. Also published as the January2003 Special Issue of the Journal of Functional Programming.

[149] Simon Peyton Jones, Andrew Gordon, and Sigbjorn Finne. ConcurrentHaskell. In Principles of Programming Languages (POPL), 1996.

[150] Shari Lawrence Pfleeger. Software Engineering: The Production of QualitySoftware, Second Edition. Macmillan, 1991.

[151] David Plainfosse and Marc Shapiro. A survey of distributed garbage collec-tion techniques. In the International Workshop on Memory Management,volume 986 of Lecture Notes in Computer Science, pages 211–249, Berlin,September 1995. Springer-Verlag.

[152] R. J. Pooley. An Introduction to Programming in SIMULA. BlackwellScientific Publishers, 1987.

[153] William H. Press, Brian P. Flannery, Saul A. Teukolsky, and William T.Vetterling. Numerical Recipes: The Art of Scientific Computing. CambridgeUniversity Press, 1986.

[154] Roger S. Pressman. Software Engineering, Sixth Edition. Addison-Wesley,2000.

Copyright c© 2001-3 by P. Van Roy and S. Haridi. All rights reserved.

Page 7: 858 BIBLIOGRAPHY - kaukau.edu.sa/Files/830/Files/57095_Concepts Techniques and...BIBLIOGRAPHY 859 [81] Martin Henz, Gert Smolka, and J¨org W¨urtz. Object-oriented concur-rent constraint

864 BIBLIOGRAPHY

[155] Mahmoud Rafea, Fredrik Holmgren, Konstantin Popov, Seif Haridi, SteliosLelis, Petros Kavassalis, and Jakka Sairamesh. Application architecture ofthe Internet simulation model: Web Word of Mouth (WoM). In IASTEDInternational Conference on Modelling and Simulation MS2002, May 2002.

[156] Eric Raymond. The cathedral and the bazaar, May 1997.

[157] Juris Reinfelds. Teaching of programming with a programmer’s theoryof programming. In Informatics Curricula, Teaching Methods, and BestPractice (ICTEM 2002, IFIP Working Group 3.2 Working Conference).Kluwer Academic Publishers, 2002.

[158] John H. Reppy. Concurrent Programming in ML. Cambridge UniversityPress, 1999.

[159] James Rumbaugh, Ivar Jacobson, and Grady Booch. The Unified ModelingLanguage reference manual. Addison-Wesley, 1999.

[160] Stuart Russell and Peter Norvig. Artificial Intelligence: A modern ap-proach. Prentice Hall, 1995.

[161] Oliver Sacks. The Man Who Mistook His Wife for a Hat: And OtherClinical Tales. Touchstone Books, 1998.

[162] Jakka Sairamesh, Petros Kavassalis, Manolis Marazakis, Christos Nikolaos,and Seif Haridi. Information cities over the Internet: Taxonomy, principlesand architecture. In Digital Communities 2002, November 2001.

[163] Vijay A. Saraswat. Concurrent Constraint Programming. The MIT Press,1993.

[164] Vijay A. Saraswat, Martin C. Rinard, and Prakash Panangaden. Semanticfoundations of concurrent constraint programming. In Principles of Pro-gramming Languages (POPL), pages 333–352, 1991.

[165] Steve Schneider. Concurrent and Real-time Systems: The CSP Approach.John Wiley & Sons, 2000.

[166] Bruce Schneier. Applied Cryptography. John Wiley & Sons, 1996.

[167] Christian Schulte. Programming constraint inference engines. In Gert Smol-ka, editor, Proceedings of the Third International Conference on Principlesand Practice of Constraint Programming, volume 1330 of Lecture Notesin Computer Science, pages 519–533, Schloß Hagenberg, Austria, October1997. Springer-Verlag.

[168] Christian Schulte. Comparing trailing and copying for constraint program-ming. In International Conference on Logic Programming (ICLP 99), pages275–289. The MIT Press, November 1999.

Copyright c© 2001-3 by P. Van Roy and S. Haridi. All rights reserved.

Page 8: 858 BIBLIOGRAPHY - kaukau.edu.sa/Files/830/Files/57095_Concepts Techniques and...BIBLIOGRAPHY 859 [81] Martin Henz, Gert Smolka, and J¨org W¨urtz. Object-oriented concur-rent constraint

BIBLIOGRAPHY 865

[169] Christian Schulte. Programming Constraint Inference Services. PhD thesis,Saarland University, Fachbereich Informatik, Saarbrucken, Germany, 2000.

[170] Christian Schulte. Programming deep concurrent constraint combinators.In Enrico Pontelli and Vıtor Santos Costa, editors, Practical Aspects ofDeclarative Languages, Second International Workshop, PADL 2000, vol-ume 1753 of Lecture Notes in Computer Science, pages 215–229, Boston,MA, USA, January 2000. Springer-Verlag.

[171] Christian Schulte. Oz Explorer – visual constraint programming sup-port. Technical report, Mozart Consortium, December 2001. Availableat http://www.mozart-oz.org/.

[172] Christian Schulte. Programming Constraint Services: High-Level Program-ming of Standard and New Constraint Services, volume 2302 of LectureNotes in Computer Science. Springer-Verlag, 2002.

[173] Christian Schulte and Gert Smolka. Encapsulated search for higher-orderconcurrent constraint programming. In 1994 International Symposium onLogic Programming, pages 505–520. The MIT Press, November 1994.

[174] Christian Schulte and Gert Smolka. Finite domain constraint program-ming in Oz. A tutorial. Technical report, DFKI and Saarland University,December 1999. Available at http://www.mozart-oz.org/.

[175] Ehud Shapiro. A subset of Concurrent Prolog and its interpreter. Tech-nical Report TR-003, Institute for New Generation Computer Technology(ICOT), Cambridge, Mass., January 1983.

[176] Ehud Shapiro, editor. Concurrent Prolog: Collected Papers, volume 1-2.The MIT Press, Cambridge, Mass., 1987.

[177] Ehud Shapiro. The family of concurrent logic programming languages.ACM Computing Surveys, 21(3):413–510, September 1989.

[178] Daniel P. Siewiorek, C. Gordon Bell, and Allen Newell. Computer Struc-tures: Principles and Examples. McGraw-Hill Book Company, 1982.

[179] Gert Smolka. The definition of Kernel Oz. In Andreas Podelski, editor,Constraints: Basics and Trends, volume 910 of Lecture Notes in ComputerScience, pages 251–292. Springer-Verlag, Berlin, 1995.

[180] Gert Smolka. The Oz programming model. In Computer Science Today, vol-ume 1000 of Lecture Notes in Computer Science, pages 324–343. Springer-Verlag, Berlin, 1995.

[181] Guy L. Steele, Jr. Common LISP: The Language. Digital Press, 1984.

Copyright c© 2001-3 by P. Van Roy and S. Haridi. All rights reserved.

Page 9: 858 BIBLIOGRAPHY - kaukau.edu.sa/Files/830/Files/57095_Concepts Techniques and...BIBLIOGRAPHY 859 [81] Martin Henz, Gert Smolka, and J¨org W¨urtz. Object-oriented concur-rent constraint

866 BIBLIOGRAPHY

[182] Leon Sterling and Ehud Shapiro. The Art of Prolog–Advanced ProgrammingTechniques. Series in Logic Programming. The MIT Press, 1986.

[183] Marc Stiegler. The E Language in a Walnut. 2000. Draft, available athttp://www.erights.org.

[184] Bjarne Stroustrup. The C++ Programming Language, Third Edition.Addison-Wesley, 1997.

[185] Giancarlo Succi and Michele Marchesi. Extreme Programming Examined.Addison-Wesley, 2001.

[186] Sun Microsystems. The Java Series. Sun Microsystems, Mountain View,Calif., 1996. Available at http://www.javasoft.com.

[187] Clemens Szyperski. Component Software: Beyond Object-Oriented Pro-gramming. Addison-Wesley and ACM Press, 1999.

[188] Andrew Taylor. High-Performance Prolog Implementation. PhD thesis,Basser Department of Computer Science, University of Sydney, June 1991.

[189] Gerard Tel. An Introduction to Distributed Algorithms. Cambridge Univer-sity Press, Cambridge, United Kingdom, 1994.

[190] Evan Tick. The deevolution of concurrent logic programming. J. Log. Prog.,23(2):89–123, May 1995.

[191] Kasunori Ueda. Guarded Horn Clauses. In Eiti Wada, editor, Proceedingsof the 4th Conference on Logic Programming, volume 221 of Lecture Notesin Computer Science, pages 168–179, Tokyo, Japan, July 1985. Springer.

[192] Jeffrey D. Ullman. Elements of ML Programming. Prentice Hall, 1998.

[193] Peter Van Roy. VLSI-BAM Diagnostic Generator, 1989. Prolog programto generate assembly language diagnostics. Aquarius Project, University ofCalifornia, Berkeley.

[194] Peter Van Roy. Can Logic Programming Execute as Fast as ImperativeProgramming? PhD thesis, Computer Science Division, University of Cal-ifornia at Berkeley, December 1990. Technical Report UCB/CSD 90/600.

[195] Peter Van Roy. 1983–1993: The wonder years of sequential Prolog imple-mentation. J. Log. Prog., 19/20:385–441, May/July 1994.

[196] Peter Van Roy, Per Brand, Denys Duchier, Seif Haridi, Martin Henz, andChristian Schulte. Logic programming in the context of multiparadigm pro-gramming: the Oz experience. Theory and Practice of Logic Programming,2003. To appear.

Copyright c© 2001-3 by P. Van Roy and S. Haridi. All rights reserved.

Page 10: 858 BIBLIOGRAPHY - kaukau.edu.sa/Files/830/Files/57095_Concepts Techniques and...BIBLIOGRAPHY 859 [81] Martin Henz, Gert Smolka, and J¨org W¨urtz. Object-oriented concur-rent constraint

BIBLIOGRAPHY 867

[197] Peter Van Roy, Per Brand, Seif Haridi, and Raphael Collet. Alightweight reliable object migration protocol. In Henri E. Bal, BoumedieneBelkhouche, and Luca Cardelli, editors, Internet Programming Languages,volume 1686 of Lecture Notes in Computer Science. Springer Verlag, Octo-ber 1999.

[198] Peter Van Roy and Alvin Despain. High-performance logic programmingwith the Aquarius Prolog compiler. IEEE Computer, pages 54–68, January1992.

[199] Peter Van Roy and Seif Haridi. Teaching programming broadly and deeply:the kernel language approach. In Informatics Curricula, Teaching Meth-ods, and Best Practice (ICTEM 2002, IFIP Working Group 3.2 WorkingConference). Kluwer Academic Publishers, 2002.

[200] Peter Van Roy and Seif Haridi. Teaching programming with the kernellanguage approach. In Workshop on Functional and Declarative Program-ming in Education (FDPE02), at Principles, Logics, and Implementationsof High-Level Programming Languages (PLI2002). University of Kiel, Ger-many, October 2002.

[201] Peter Van Roy, Seif Haridi, Per Brand, Gert Smolka, Michael Mehl, andRalf Scheidhauer. Mobile objects in Distributed Oz. ACM Transactions onProgramming Languages and Systems, 19(5):804–851, September 1997.

[202] Arthur H. Veen. Dataflow machine architecture. ACM Computing Surveys,18(4):365–396, December 1986.

[203] Duncan J. Watts. Small Worlds: The Dynamics of Networks between Orderand Randomness. Princeton University Press, 1999.

[204] Gerhard Weikum and Gottfried Vossen. Transactional Information Sys-tems: Theory, Algorithms, and the Practice of Concurrency Control andRecovery. Morgan Kaufmann, 2002.

[205] Gerhard Weiss, editor. Multiagent Systems: A Modern Approach to Dis-tributed Artificial Intelligence. The MIT Press, 1999.

[206] Claes Wikstrom. Distributed programming in Erlang. In the 1st Interna-tional Symposium on Parallel Symbolic Computation (PASCO 94 ), pages412–421, Singapore, September 1994. World Scientific.

[207] Herbert S. Wilf. generatingfunctionology. Academic Press, 1994.

[208] Glynn Winskel. The Formal Semantics of Programming Languages. Foun-dations of Computing Series. The MIT Press, Cambridge, Massachusetts,1993.

Copyright c© 2001-3 by P. Van Roy and S. Haridi. All rights reserved.

Page 11: 858 BIBLIOGRAPHY - kaukau.edu.sa/Files/830/Files/57095_Concepts Techniques and...BIBLIOGRAPHY 859 [81] Martin Henz, Gert Smolka, and J¨org W¨urtz. Object-oriented concur-rent constraint

868 BIBLIOGRAPHY

[209] Noel Winstanley. What the hell are Monads?, 1999. Available athttp://www.haskell.org.

[210] David Wood. Use of objects and agents at Symbian, September 2000. Talkgiven at the Newcastle Seminar on the Teaching of Computing Science.

[211] Matthias Zenger and Martin Odersky. Implementing extensible compil-ers. In 1st International Workshop on Multiparadigm Programming withObject-Oriented Languages, pages 61–80. John von Neumann Institute forComputing (NIC), June 2001. Workshop held as part of ECOOP 2001.

Copyright c© 2001-3 by P. Van Roy and S. Haridi. All rights reserved.

Page 12: 858 BIBLIOGRAPHY - kaukau.edu.sa/Files/830/Files/57095_Concepts Techniques and...BIBLIOGRAPHY 859 [81] Martin Henz, Gert Smolka, and J¨org W¨urtz. Object-oriented concur-rent constraint

Index

! (escaped variable marker), 506, 515! (cut) operation (in Prolog), 675, 679,

682$ (nesting marker), 54, 85, 363, 373* (multiplication) operation, 56, 823+ (addition) operation, 56, 823- (subtraction) operation, 56, 823. (field selector) operation, 56, 828. := (dictionary/array assignment) state-

ment, 439, 440, 841. := (dictionary/array exchange) ex-

pression, 841/ (floating division) operation, 56, 824:= (state assignment) statement, 499,

502:= (state exchange) expression, 502= (binding) operation, 45, 47, 48, 101== (equality) comparison, 57=< (less or equal) comparison, 57? (output argument), 59, 843@(state access) operation, 499, 502# (tupling) constructor, 143, 827, 833& (inline character) operator, 822< (strictly less) comparison, 57, 832<= (optional method argument) opera-

tor, 505> (strictly greater) comparison, 57>= (greater or equal) comparison, 57\ (backslash), 823\= (inequality) comparison, 57˜ (minus sign), 822| (list pairing) constructor, 54

Abelson, Harold, xxxiii, 43absolute error, 122abstract machine, 43

relation to semantic rules, 789substitution-based, 128–129

abstract syntax tree, 164, 165

abstraction, xxxiiactive object, 563class, 498collection, 438collector, 192, 326, 434, 488connector, 326control, 125database, 667encapsulated search, 637hierarchy in object-oriented program-

ming, 552lifecycle, 42Linda (tuple space), 594linguistic, 40–41, 126

case (pattern matching), 793class , 554conc (concurrent composition), 283delegation, 520for loop, 190, 451fun (function), 85functor (software component),

227gate (logic gate), 276local vs. global translation, 846monitor, 601parameter passing, 438protected scope (Java), 574while loop, 451

list comprehension, 307lock, 590, 606loop, 184mailbox, 398monitor, 600pipe of stream objects, 567procedural, 180protector, 326queue, 149, 303replicator, 326software component, 223

Copyright c© 2001-3 by P. Van Roy and S. Haridi. All rights reserved.

Page 13: 858 BIBLIOGRAPHY - kaukau.edu.sa/Files/830/Files/57095_Concepts Techniques and...BIBLIOGRAPHY 859 [81] Martin Henz, Gert Smolka, and J¨org W¨urtz. Object-oriented concur-rent constraint

870 INDEX

specialization hierarchy, xxxiitermination detection, 390transaction, 608tuple space, 594

access (cell operation), 18, 422ACCLAIM project, xlaccumulator, 142–144

breadth-first traversal, 159declarative state, 416depth-first traversal, 158for loop, 192limit of declarative model, 315loop abstraction, 262loops, 187parser, 163Prolog, 143relation to difference lists, 144relation to fold operation, 187tree traversal, 195

ACID properties, 609action (in GUI), 693active memory, 75

size, 175, 314ActiveX, 466adder

n-bit, 347full, 273

addressIP, 209URL, 214

adjacency list, 468Adjoin operation, 440, 828AdjoinAt operation, 440, 828adjunction (environment), 63ADT (abstract data type), see typeadversary, 211agent, 357

concurrent component, 370message-passing approach, 584

Alarm operation, 309, 401alarm clock, xxixalgebra, xxxvii, 115algorithm

breadth-first traversal, 159cached state, 739compression, 180

copying dual-space garbage collec-tion, 79

Dekker’s algorithm for mutual ex-clusion, 578

depth-first traversal, 158distributed garbage collection, 740distributed locking, 727distributed unification, 739elevator, 384Flavius Josephus problem, 565Floyd-Warshall, 473garbage collection, 77Hamming problem, 298linear congruential generator, 478mergesort, 140, 169

generic version, 184mobile state, 739Newton’s method for square roots,

122nonalgorithmic programming, 634parallel transitive closure, 473Pascal’s triangle, 12quicksort, 235, 531random number generation, 476termination detection, 390thread scheduling, 245transitive closure, 467tree, 154tree drawing, 161, 278unification, 102word frequency, 201

aliasing, 426, 452allocation, 76always true (in temporal logic), 611Anderson, Ross J., 750, 845Andrews, Gregory, 590andthen operator, 84Append operation, 831apple, 493Apple Corporation, xlapplet, 724application

FlexClock example, 707ping-pong example, 310standalone, 225

Java, 561video display, 321

Copyright c© 2001-3 by P. Van Roy and S. Haridi. All rights reserved.

Page 14: 858 BIBLIOGRAPHY - kaukau.edu.sa/Files/830/Files/57095_Concepts Techniques and...BIBLIOGRAPHY 859 [81] Martin Henz, Gert Smolka, and J¨org W¨urtz. Object-oriented concur-rent constraint

INDEX 871

applicative order reduction, 336Aquarius Prolog, 143arbitrary precision integer arithmetic, 6,

823arch, xxxiiarithmetic, 56Arity operation, 56, 828arity, 442, 828Armstrong, Joe, 590Arnold, Ken, 543array, 439

extensible, 443usage trade-offs, 442

ASCII (American Standard Code for In-formation Interchange), 462, 721

ask operation, 786, 793assert/1 operation (in Prolog), 669, 675assertion, 448assignment

axiomatic semantics, 449cell operation, 18, 422in-place, 314Java, 559monotonic, 851multiple, 851single, 44, 851to iteration variable, 191

association, 537, 850association list, 491asynchronous failure detection, 745ATM (Asynchronous Transfer Mode), 395atom, 53, 825

defining scope, 514predicate calculus, 645propositional logic, 644

atomic action, 588–625approaches to concurrency, 581reasoning, 588when to use, 584

atomicity, 23, 609AtomToString operation, 826attribute

final (in Java), 550, 558initialization, 503object, 502

availability, 717AXD301 ATM switch, 395

axiom, 646axiomatic semantics, 40, 444–453, 644

Backus, John, 34bagof/3 operation (in Prolog), 638, 683Bal, Henri, 340batching

distributed stream, 725, 730object invocations, 546, 572

Baum, L. Frank, 3Bernstein, Philip A., 609billion dollar budget, 527binary integer, 822binding

basic and nonbasic, 792dynamic, 511static, 512variable-variable, 48

bistable circuit (digital logic), 274blank space (in Oz), 843Blasband, Darius, 654block

file, 297imperative language, 491memory, 76, 77Smalltalk, 549

blocking operation, 243blue cut (in Prolog), 679, 681book

Component Software: Beyond Object-Oriented Programming, 466

Concurrent Programming in Erlang,590

Concurrent Programming in Java,589

Concurrent Programming: Princi-ples and Practice, 590

Object-Oriented Software Construc-tion, 495

Software Fundamentals, 466Structure and Interpretation of Com-

puter Programs, xxxiiiThe Art of Prolog, 679The Mythical Man-Month, 466Transaction Processing: Concepts and

Techniques, 590boolean, 53

Copyright c© 2001-3 by P. Van Roy and S. Haridi. All rights reserved.

Page 15: 858 BIBLIOGRAPHY - kaukau.edu.sa/Files/830/Files/57095_Concepts Techniques and...BIBLIOGRAPHY 859 [81] Martin Henz, Gert Smolka, and J¨org W¨urtz. Object-oriented concur-rent constraint

872 INDEX

Borges, Jorge Luis, 633bottom-up software development, 455bound identifier occurrence, 65bounded buffer, 268

data-driven concurrent version, 268lazy version, 295monitor version, 602

brand, 504Brand, Per, xlbreadth-first traversal, 159break statement, 491break operation, 491bridge building, xxx, xxxiBrinch Hansen, Per, 600Brooks, Jr., Frederick P., 466Browser tool, see Mozart Programming

Systemby-need execution, 286–289, 798

WaitQuiet operation, 800Multilisp, 342Oz 3, 811

ByNeed operation, 287byte (in Java), 560bytestring, 833

calculator, 3calculus

analysis, 173first-order predicate, 645foundational, xxxiλ, xxxi, 43, 98, 336, 351, 795, 807,

813, 848π, xxxi, 43, 55, 807

call/1 operation (in Prolog), 675call by ..., see parameter passingcall graph, 318capability, 211

declarative, 213method label, 516revocable, 433, 488

Cardelli, Luca, 728cascading abort, 613case statement, 68, 793catch clause (in try ), 95causality, 241, 361Ceil operation, 824

cell (explicit state), 417, 422–425, 797,850

cellular phone, xxix, xxxiichannel

asynchronous, 355, 393component interface, 459dataflow variable, 337many-shot, 371one-shot, 371, 376port, 354synchronous, 629

character, 822alphanumeric, 51, 843Java, 560

choice statement, 636, 778chunk, 829

reflection, 524Church-Rosser Theorem, 336Churchill, Winston, 453Clarke, Arthur C., 106, 314class, 421, 493, 495, 497, 501, 552

abstract, 528, 552active object, 564common limitations, 545complete ADT definition, 498concrete, 529, 532, 552delegation, 517diagram, 534, 539encapsulation control, 512event manager example, 570forwarding, 517generic, 531higher-order programming, 532implementation, 554incremental ADT definition, 507inheritance, 508inner, 546inner (in Java), 558introduction, 20member, 502metaclass, 553mixin, 572parameterized, 531patching, 527programming techniques, 524reflection of object state, 523structure view, 525

Copyright c© 2001-3 by P. Van Roy and S. Haridi. All rights reserved.

Page 16: 858 BIBLIOGRAPHY - kaukau.edu.sa/Files/830/Files/57095_Concepts Techniques and...BIBLIOGRAPHY 859 [81] Martin Henz, Gert Smolka, and J¨org W¨urtz. Object-oriented concur-rent constraint

INDEX 873

substitution property, 525, 527type view, 525

clausecase statement, 84definite, 662Erlang, 396Horn, xxxv, 647, 652, 662, 675

clockcontext-sensitive, 707digital circuit, 275digital logic, 271synchronization, 313

clonearray, 440computation space, 774dictionary, 441object, 523

closed distribution, 737closure, see procedure valuecluster, 717code duplication, 496code generator, 164coherence

between graphical views, 704cache, 463, 739network transparency, 726

collector, 192, 326, 434, 488COM (Component Object Model), 466combinations, 6combinator, 282comment (in Oz), 843common self, 517compaction, 77comparison, 57compilation

separate, 107standalone, 232

ping-pong example, 310unit, 225, 420, 457, 818

compiler, 163, 674extensible, 548Prolog, 676smart-aleck, 314

Compiler Panel tool, see Mozart Pro-gramming System

complete value, 47completeness

Turing, 848complexity

amortized, 149, 177, 440asymptotic, 169banker’s method, 178big-oh notation, 170introduction, 12–13physicist’s method, 178space, 175time, 13, 169worst-case, 169, 175

component, 114, 185, 223abstraction, 462avoiding dependencies, 463diagram, 360encapsulates a design decision, 462functor, 420further reading, 466future role, 464graph, 465implementation, 224interface, 224module, 420software, 224

compositionality, 419, 631class, 507encapsulated search, 638exception handling, 92Solve operation, 638

computation, 63iterative, 120recursive, 126secure, 210

computation model, xxvii, 31active object, 563constraint-based, 639, 653, 764data-driven concurrent, 240declarative concurrent with exceptions,

332declarative concurrent, 239declarative with exceptions, 93declarative, 50demand-driven concurrent with ex-

ceptions, 333demand-driven concurrent, 240, 286descriptive declarative, 117distributed, 718

Copyright c© 2001-3 by P. Van Roy and S. Haridi. All rights reserved.

Page 17: 858 BIBLIOGRAPHY - kaukau.edu.sa/Files/830/Files/57095_Concepts Techniques and...BIBLIOGRAPHY 859 [81] Martin Henz, Gert Smolka, and J¨org W¨urtz. Object-oriented concur-rent constraint

874 INDEX

graph notation, 741extended relational, 673general, 845job-based concurrent, 628lazy concurrent, 240, 286maximally concurrent, 585, 628, 772message-passing concurrent, 354nondeterministic concurrent, 402, 653object-based, 543object-oriented, 496order-determining concurrent, 277relational, 635secure declarative, 205shared-state concurrent, 581stateful concurrent, 584, 786stateful, 421strict functional, 99atomic action, 588closed, 326concurrent constraint, 810concurrent logic programming, 292,

402, 813design principles, xxxiii, 845determinate concurrent constraint pro-

gramming, 343determinate parallel programming,

343deterministic logic programming, 648Erlang, 394Haskell, 328insecure, 326Java, 557, 625nondeterministic logic programming,

650open, 326partial failure, 326, 744Prolog, 674secure, 326semantics, 783using models together, xxxiv, 325

computation space, 666, 759computer engineering, xxxvicomputer science, xxxvicomputing, see informaticsconc statement, 283concurrency, 322

competitive, 259

cooperative, 259dataflow, 17declarative, 237, 247, 806Erlang, 394further reading, 589importance for programming, xxxinteractive interface, 90interleaving, 22introduction, 16Java, 625monitor safety, 601nondeterminism, 21order-determining, 277practical approaches, 581queue, 592rules of thumb, 584teaching, xxxvitransaction, 610

concurrency control, 573, 611, 751concurrent composition, 281, 393condition variable, 607conditional critical section, 605configuration, 787confinement

failure in declarative model, 250partial failure, 715transaction, 610

confluence, 336, 807connector, 326cons cell (list pair), 7, 54, 830consistency (in transaction), 609consistency protocol, 718constraint, 248

tree drawing, 161constructor, 560consumer, 262context, 92context-sensitive

grammar, 36GUI design, 707

continuation, 385procedure, 367record, 366

contract, 418contrapositive law, 644control abstraction

try – finally , 349

Copyright c© 2001-3 by P. Van Roy and S. Haridi. All rights reserved.

Page 18: 858 BIBLIOGRAPHY - kaukau.edu.sa/Files/830/Files/57095_Concepts Techniques and...BIBLIOGRAPHY 859 [81] Martin Henz, Gert Smolka, and J¨org W¨urtz. Object-oriented concur-rent constraint

INDEX 875

break, 491concurrent composition, 282CSP communication, 629Erlang mailbox, 410iteration, 125loops, 186need for higher-order, 182Smalltalk block, 549

coordination model, 460, 594CORBA (Common Object Request Bro-

ker Architecture), 364, 466coroutine, 279, 459

relation to laziness, 290, 293, 582correctness, 644

introduction, 11–12Cray-1 computer, 178critical region, 590cryptography

unique name generation, 210curriculum (informatics), xxxvicurrying, xxxv, 196–197, 236

Haskell, 329cyclic structures, 104

dangling reference, 76, 183, 463Danvy, Olivier, 236data structure

active, 78class, 501cyclic, 102dictionary, 199difference list, 144difference structure, 144ephemeral, 150external, 79graph, 468higher order, 185infinite, 14list, 54, 132long-lived, 80partial, 47persistent, 303protected, 206, 429queue, 149record, 53recursive, 133size, 176

stack, 198store, 76tree, 153tuple, 53

data type, see typedata-driven execution, see eager execu-

tiondatabase, 667

deductive, 668distributed, 625in-memory, 176Mnesia (in Erlang), 395persistence, 667query, 668relational, 667shared-state concurrency, 584transaction, 608update, 668

dataflow, 61channel, 337declarative model, 18error, 91examples, 252I-structure, 342introduction, 17lazy execution, 290parallel transitive closure, 473rubber band, 255variable, 44, 49, 50

Date, C.J., 668Dawkins, Richard, 418DBMS (Database Management System),

668DCOM (Distributed Component Object

Model), 466deadlock, 613

callback, 365concurrency control, 613detection, 614digital logic simulation, 274lazy execution, 293prevention, 614

deallocation, 76debugging, 522

dangling reference, 77, 183declarative component, 314distributed application, 751

Copyright c© 2001-3 by P. Van Roy and S. Haridi. All rights reserved.

Page 19: 858 BIBLIOGRAPHY - kaukau.edu.sa/Files/830/Files/57095_Concepts Techniques and...BIBLIOGRAPHY 859 [81] Martin Henz, Gert Smolka, and J¨org W¨urtz. Object-oriented concur-rent constraint

876 INDEX

erroneous suspension, 50, 91inspecting object attributes, 507

declarative, 113, 415declarative concurrency, see concurren-

cy, declarativedeclarative program, 248declare statement, 4, 88

syntax convention of book, xliii, 88define clause (in functor), 224Definite Clause Grammar (DCG), 143,

662Delay operation, 309delay gate (digital logic), 274delay operation (in Multilisp), 342delay point, 588delegation, 518–522

otherwise method, 506Dell Corporation, xl, 204, 475demand-driven execution, see lazy exe-

cutionDe Morgan’s law, 644denotational semantics, 40dependency

component, 227dataflow, 341declarative component, 314, 324grammar context, 36inheritance, 421order-determining concurrency, 277removal of sequential, 393sequential model, 419word frequency application, 231

depth-first traversal, 158dereferencing, 47design methodology

concurrent program, 372language, 42, 335, 549, 813, 852large program, 454small program, 221

design patterns, xxxv, 421, 493, 540–543

Composite pattern, 540destructive assignment

interaction with call by name, 490determinism (declarative programming),

113diagnostics, 633

dialog model, 704dictionary, 199, 440

declarative, 199efficiency, 203internal structure, 203list-based implementation, 200relation implementation, 671relation to record, 441relation to stream, 442secure declarative, 210standalone, 228stateful, 201tree-based implementation, 200tuple space implementation, 596usage trade-offs, 442word frequency implementation, 475Word of Mouth simulation, 482

difference list, 144difference structure, 144digital logic, 271

satisfiability problem, 179Dijkstra, Edsger Wybe, 444directed graph, 467disconnected operation, 747discriminant, 181disentailment, 105–106, 785distributed lexical scoping, 728distributed system, 326, 358, 363, 392,

713closed, 737open, 514, 715, 717, 720

Distribution Panel tool, see Mozart Pro-gramming System

div (integer division) operation, 56, 823divide-and-conquer, 140domain model, 703domain of discourse, 645dotted pair, 7, 830Duchier, Denys, xl, 389durability, 609dynamic

binding, 511linking, 225, 289scope, see scope, dynamictyping, 106–108

Dynamic HTML, 692

Copyright c© 2001-3 by P. Van Roy and S. Haridi. All rights reserved.

Page 20: 858 BIBLIOGRAPHY - kaukau.edu.sa/Files/830/Files/57095_Concepts Techniques and...BIBLIOGRAPHY 859 [81] Martin Henz, Gert Smolka, and J¨org W¨urtz. Object-oriented concur-rent constraint

INDEX 877

eager executiondeclarative model, 99distributed producer/consumer, 725introduction, 13producer/consumer stream, 261relation to synchronization, 339strictness, 336

eager failure detection, 745EBNF (Extended Backus-Naur Form),

34, 662, 663, 685Einstein, Albert, 283Elcock, E. W., 634elephant, xxviielevator, see liftEmacs text editor, 817embedding, 185encapsulated

search, 637state, introduction, 18

encapsulation, 419Encyclopaedia Britannica (11th edition),

493Ende, Michael, 353entailment, 100, 105–106, 785Enterprise Java Beans, 465environment, 46, 62

adjunction, 63calculating with, 63contextual, 67interactive interface, 88restriction, 64

ephemeral data structure, 150, 303equality

structure, 426, 729token, 426, 720, 729

Ericsson (Telefonaktiebolaget LM Eric-sson), 327, 394

Erlang, 394–402error

absolute, 122domain, 97relative, 122type incorrect, 97variable not introduced, 836variable used before binding, 49

error logging, 570Escher, Maurits Cornelis, 689

Euclid, 3event (in GUI), 693event handler, 569event manager

active objects, 569adding functionality with inheritance,

571eventually true (in temporal logic), 611evolutionary software development, 455example programs (how to run), xliiiexception, 91–97, 549, 849

distribution fault, 749error , 97, 803failure , 97, 803system , 97uncaught, 95, 803

Exchange operation, 424exchange operation

on cells, 424on object attributes, 502

exclusive-or operation, 16execution state, 62exercise

(advanced exercise), xxxviii(research project), xxxviii

explicit state, see stateExplorer tool, see Mozart Programming

SystemExplorer tool (in Mozart), 763export clause (in functor), 224expression, 82

andthen operator, 84basic operation, 56basic value, 51ill-formed, 93λ notation, 98, 330nesting marker ($), 85normal order reduction, 336orelse operator, 84procedure value, 66receive (Erlang), 399

external resource, 79extreme programming, 456

factorial function, 4–25, 127–130, 234,626

fail statement, 636

Copyright c© 2001-3 by P. Van Roy and S. Haridi. All rights reserved.

Page 21: 858 BIBLIOGRAPHY - kaukau.edu.sa/Files/830/Files/57095_Concepts Techniques and...BIBLIOGRAPHY 859 [81] Martin Henz, Gert Smolka, and J¨org W¨urtz. Object-oriented concur-rent constraint

878 INDEX

FailedValue operation, 334failure

declarative concurrency, 249detection, 745exception, 97failed value, 334inheritance, 496negation as failure, 675partial, 326software project, 527, 655transaction, 609unification, 103

fairnessstream merger, 406thread scheduling, 243, 245, 256, 339

false , 826fault model, 745fault tolerance

Erlang, 395FCFS (First-Come-First-Served), 375feature (record field name), 826FGCS (Fifth Generation Computer Sys-

tem), Japanese project, 405FIFO (First-In-First-Out), 149, 235, 343,

355, 375, 387, 459, 725, 730Erlang, 394message sending, 364port, 355

file, 213Filter operation, 194, 831finalization, 79, 486

lazy execution, 486finally clause (in try ), 95finite failure, 675finite state machine

event manager, 570firewall, 326first-argument indexing, 669fixpoint, 772Flatten operation, 145, 235, 301Flavius Josephus problem, 565–567floating point

arithmetic, 823number, 822

FloatToInt operation, 824Floor operation, 824flow control, 100, 266

lazy execution, 266thread priority, 269

Floyd, Robert W., 444, 634fold operation, 187

FoldL , 188, 469, 831FoldR , 188stream objects, 263

for statement, 190for loop, 451ForAll operation, 831formal language, 35forwarding, 518foundational calculus, xxxiframework

computation model as, 846France, 419free identifier occurrence, 59, 65, 645free memory, 76freeze/2 operation (in Prolog), 675fresh

name, 206variable, 790

full adder, 273fun statement, 85function, 85

incremental, 302introduction, 4lazy, 800monolithic, 302monotonic, 851partially-applied, 197state transition, 359

functional decomposition, 138, 547functional look, 198functor, 224, 457, 715

interactive use, 818main, 225Oz 3, 811

functor statement, 227future, 342future operation (in Multilisp), 342

Gamma, Erich, 540garbage collection, 75, 77

copying dual-space, 79distributed, 740external references, 485

Copyright c© 2001-3 by P. Van Roy and S. Haridi. All rights reserved.

Page 22: 858 BIBLIOGRAPHY - kaukau.edu.sa/Files/830/Files/57095_Concepts Techniques and...BIBLIOGRAPHY 859 [81] Martin Henz, Gert Smolka, and J¨org W¨urtz. Object-oriented concur-rent constraint

INDEX 879

generational, 80lease-based, 740, 744real-time, 78root set, 77weighted reference counting, 740

gate statement, 277gate (digital logic), 271Gelernter, David, 594generalization, 575generate-and-test, 641generating function, 173genericity, 183–185

object-oriented programming, 531static and dynamic, 532

global condition, 158glue (in GUI), 698Glynn, Kevin, 327Godel’s Incompleteness Theorem, 646Gosling, James, 543grammar, 34–38

ambiguous, 36, 169context-free, 35context-sensitive, 36definite clause (DCG), 143, 662disambiguation, 36EBNF (Extended Backus-Naur Form),

34, 685left-recursive, 656natural language, 655nonterminal symbol, 34, 165terminal symbol, 34, 165unification, 662

graphbushy, 465component, 465distribution model, 741Haskell expression, 328hierarchical, 465implementation, 468nonlocal, 465Small World, 465

Gray, Jim, 590, 609green cut (in Prolog), 682grue cut (in Prolog), 682guarded method, 605guardian, 486GUI (Graphical User Interface)

AWT (Abstract Window Toolkit) pack-age, 689

component-based programming, 464design, 689Haskell fudgets, 689model-based, 703QTk module, 690read-only view, 704Swing components, xxxv, 689text input/output, 216Visual Studio, 689

Halting Problem, 212, 691Hamming problem, 298, 349Hamming, Richard, 298handler

event, 569exception, 91, 92finalization, 486GUI design, 216, 693, 692–698

HasFeature operation, 828hash table, 442Haskell, 327–331Helm, Richard, 540Herbert, Frank, 755hexadecimal integer, 822Hoare, Charles Antony Richard, 235, 444,

600Horn clause, xxxv, 647, 652, 662, 675HTML (HyperText Markup Language),

117, 689Hudak, Paul, 98, 314Hughes, John, 284

IBM Corporation, 43IDE (Interactive Development Environ-

ment), xliii, 817identifier, 4, 46

bound occurrence, 65escaped, 515free occurrence, 59, 65, 645

IEEE floating point standard, 550, 822if statement, 68, 793ILOG Solver, 676impedance matching, 325

concurrency, 585event manager example, 574

Copyright c© 2001-3 by P. Van Roy and S. Haridi. All rights reserved.

Page 23: 858 BIBLIOGRAPHY - kaukau.edu.sa/Files/830/Files/57095_Concepts Techniques and...BIBLIOGRAPHY 859 [81] Martin Henz, Gert Smolka, and J¨org W¨urtz. Object-oriented concur-rent constraint

880 INDEX

imperative, 415implementation, 418import clause (in functor), 224inactive memory, 76incompleteness, 646inconsistency, 791incremental function, 300independence (declarative programming),

113infinite precision arithmetic, 6infinity

floating point, 824informatics, xxxvi

curriculum, xxxvisuccess of object-oriented program-

ming, 493usefulness of computation models,

xxviiiInformation Cities project, 421information hiding, 493information systems, xxxviinheritance, 21, 421, 493, 495, 508–543

avoiding method conflicts, 516cautionary tale, 526design patterns, 540directed and acyclic, 509event manager, 571factoring, 496generalization, 575implementation, 556implementation-sharing problem, 539Java, 558multiple, 508, 533

rules of thumb, 539simple, 508single, 508, 537software reuse, 496static and dynamic binding, 511structure view, 525syntactic aspect, 496thread priority, 258type view, 525upwards, 575

inherited argument, 163instantiation, 185, 419integer

tilde ˜ as minus sign, 822

interactive systemimportance of worst-case complexi-

ty, 177interface

general concept, 224Java, 558Runnable (in Java), 625

interface builder, 689interleaving semantics, 241, 784Internet, 209, 361, 713, 717, 723

simulation of Web use, 481interoperability, 108interpreter, 43

approach to define semantics, 43generic parser, 662GUI description, 712meta, 667metacircular, 43original Erlang, 396

IntToFloat operation, 824invariant, 137, 390, 420, 444IsAtom operation, 826IsChar operation, 824IsDet operation, 320, 321, 338, 402,

673, 850IsLock operation, 591ISO 8859-1 character code, 822, 825isolation, 609IsProcedure function, 57IsRecord operation, 828I-structure, 342, 473, 814IsTuple operation, 829

Janson, Sverker, xl, 675Java, 556–563, 625–626JavaBeans, 466Jefferson, Thomas, 11Johnson, Ralph, 540journaling, 538

Kahn, Gilles, 343kernel language, see computation modelkernel language approach, xxx, 38–43

choice of formalism, xxxiiikeywords (table of), 841knowledge representation, 850Knuth, Donald Erwin, 173, 477

Copyright c© 2001-3 by P. Van Roy and S. Haridi. All rights reserved.

Page 24: 858 BIBLIOGRAPHY - kaukau.edu.sa/Files/830/Files/57095_Concepts Techniques and...BIBLIOGRAPHY 859 [81] Martin Henz, Gert Smolka, and J¨org W¨urtz. Object-oriented concur-rent constraint

INDEX 881

Kowalski, Robert, 415KWIC (keyword in context) index, 679

Label operation, 56, 828label (record identification), 20, 53λ calculus, xxxi, 43, 98, 336, 351, 795,

807, 813, 848LAN (local-area network), 361, 723, 745language

AKL, xl, 674, 810Absys, 415, 634Ada, 436, 629Algol, 415, 493

declarative concurrent, 343nondeterministic, 634

Alice, 108C++, 45, 49, 76, 183, 340, 449, 491,

493, 497, 510, 514, 516, 541,546, 551, 557

C-Linda, 594CLOS (Common Lisp Object Sys-

tem), 522CSP (Communicating Sequential Pro-

cesses), 629Clean, 331Cobol, 551, 654

parsing problem, 654Common Lisp, 60, 193Concurrent Haskell, xxxivConcurrent ML, xxxiv, 852Concurrent Prolog, 405C, 76, 182Eiffel, 525, 852Erlang, 77, 99, 327, 394–402, 460,

551, 570, 590, 809, 852E, 211FCP (Flat Concurrent Prolog), 405,

809FP, 335Flat GHC, 405Fortran, 415, 654

parsing problem, 654GHC (Guarded Horn Clauses), 405Haskell, xxviii, xxx, 45, 77, 99, 118,

140, 197, 277, 284, 291, 327–331, 335, 336, 340, 343, 349,461, 551, 689, 809

IC-Prolog, 405Id, 343, 814Java, xxviii, xxx, 43, 45, 49, 77,

183, 340, 434, 449, 466, 491,493, 497, 510, 514, 516, 541,546, 549–551, 556–563, 574, 589,600, 625–626, 689, 809, 852

monitor, 601Leda, xxxiLinda extension, 594, 629, 810Lisp, xxviii, 7, 60, 77, 132, 415, 663,

830ML, see Standard ML, Concurrent

ML, Objective CamlMercury, xxviii, 118, 331, 675, 809Miranda, 284, 349Multilisp, 342, 814Objective Caml, 549Obliq, 728Oz 1, Oz 2, Oz 3, 810–811Oz, xxxiii, xl, 513, 551, 676, 809,

846, 852Parlog, 405Pascal, 163, 182, 434, 809Prolog, xxviii, xxx, xxxv, 7, 32, 49,

77, 118, 143, 145, 277, 292, 335,340, 396, 405, 415, 551, 634,647, 652, 654, 662, 667, 669–673, 673–684, 809, 852

pure, 652SICStus, 193, 676

Scheme, xxviii, xxx, xxxi, xxxiv, 32,45, 60, 99, 291, 551, 809

Simula, 415, 493Smalltalk, xxviii, 45, 77, 340, 493,

497, 513, 514, 516, 522, 546,549, 550, 852

Standard ML, xxviii, xxxiv, 32, 45,99, 118, 140, 197, 291, 331, 335,809

Visual Basic, 465pH (parallel Haskell), 343, 814tcl/tk, 689, 690, 712assembly, 212, 314, 415, 557, 634coordination, 594formal, 35multiparadigm, xxxi

Copyright c© 2001-3 by P. Van Roy and S. Haridi. All rights reserved.

Page 25: 858 BIBLIOGRAPHY - kaukau.edu.sa/Files/830/Files/57095_Concepts Techniques and...BIBLIOGRAPHY 859 [81] Martin Henz, Gert Smolka, and J¨org W¨urtz. Object-oriented concur-rent constraint

882 INDEX

non-strict, 336popular computation models, 809practical, 33secure, 211specification, 119symbolic, 55, 551

language designabstraction lifecycle, 42declarative, 335golden age, 415layered, 852lazy execution, 335object properties, 549trade-offs, 813

Lao-tzu, 283last call optimization, 74latch (digital logic), 275late error detection (at run-time), 509latency, 268

tolerance, 341LaTeX document, 463Latin-1, 462layered language design, 852lazy evaluation, 99

coroutining, 582example, 13explicit, 185Haskell, 328relation to call by need, 438, 490relation to non-strict evaluation, 336schedule, 350strictness analysis, 295, 329, 349

lazy execution, 283bounded buffer, 267flow control, 266Hamming problem, 298higher-order programming, 196incremental, 300introduction, 13monolithic, 302, 348needs finalization, 486relation to synchronization, 340

lazy failure detection, 745Lea, Doug, 589legal program, 33Length operation, 831lex/yacc parsing, 654

lexical analyzer, 34lexical scope, see scope, lexicallexical syntax (of Oz), 843lexically-scoped closure, see procedure

valuelexicographic order (of atoms), 57, 825Ley, Willy, 633library, 232lifecycle

abstraction, 42memory block, 76

lift control system, 374lifting

booleans to streams, 277serializability, 609synchronization, 366

lightweight transaction, 609Linda (tuple space), 594linguistic abstraction, see abstraction,

linguisticlinking, 214, 225, 227, 232, 458, 819

component, 226, 462dynamic, 289failure detection in Erlang, 395

Linux operating system, xl, 204, 475,504

list, 54, 131, 830difference, 144

advantage, 149flattening, 145introduction, 6nested, 138usage trade-offs, 442

list pair, 54, 830literal, 825liveness, 611Llull, Ramon, 633local statement, 58, 64, 790lock, 588, 590–591

get-release, 606implementation, 599introduction, 23Java, 626read, 630simple, 599thread-reentrant, 600transaction, 611

Copyright c© 2001-3 by P. Van Roy and S. Haridi. All rights reserved.

Page 26: 858 BIBLIOGRAPHY - kaukau.edu.sa/Files/830/Files/57095_Concepts Techniques and...BIBLIOGRAPHY 859 [81] Martin Henz, Gert Smolka, and J¨org W¨urtz. Object-oriented concur-rent constraint

INDEX 883

write, 630lock statement, 23, 591locus of control, 279logic

gate, 271predicate calculus, 645propositional, 644temporal, 611

logic programming, 644, 646process model, 403, 809

logical equivalence, 247, 788configuration, 806

logical formula, 645logical semantics, 40, 644–653logical sentence, 645

assertion, 445invariant, 444

Louis XIV, 413, 418Lynch, Nancy, 361

Mac OS X operating system, xxxviii, xl,258

Macintosh computer, xlMacQueen, David, 343Maher, Michael, 675, 810mailbox, 460

Erlang, 394, 397implementation, 398

maintenance, 461MakeRecord operation, 828MakeTuple operation, 381, 829Manchester Mark I, 38Manna, Zohar, 444many-to-one communication, 358Map operation, 193, 470, 831mathematical induction, 11matrix

graph representation, 468list of lists implementation, 235

Max operation, 196measurement accuracy

constraint programming, 757Member operation, 831memoization, 425, 460

call by need, 438declarative programming, 315explicit state, 27, 703

GUI example, 703unification, 104

memoryaddress in abstract machine, 57consumption, 175content-addressable, 595leak, 76, 77

Prolog, 681lifecycle, 76

memory management, see garbage col-lection

message, 504message-passing concurrency, see object,

active, see object, portmeta-interpreter, 667, 685meta-object protocol, see protocol, meta-

objectmethod

object, 21, 502wrapping, 522

methodology, see software developmentMeyer, Bertrand, 453, 495, 533Microsoft Corporation, 466, 689middle-out software development, 455mind of programmer

capabilities (atoms vs. names), 516difference list, 149language design trade-offs, 813order-determining concurrency, 277state (implicit vs. explicit), 416use of constraints, 279

minus sign (use of tilde ˜ ), 822Mnesia (Erlang database), 395mod(integer modulo) operation, 56, 823model

logic, 645model-based GUI design, 703modularity, xxxv, 315, 417, 462

encapsulated search, 638reengineering, 527relation to concurrency, 243, 319relational model, 673system decomposition, 460

module, 185, 224, 457Array , 439Atom, 826Browser , 228

Copyright c© 2001-3 by P. Van Roy and S. Haridi. All rights reserved.

Page 27: 858 BIBLIOGRAPHY - kaukau.edu.sa/Files/830/Files/57095_Concepts Techniques and...BIBLIOGRAPHY 859 [81] Martin Henz, Gert Smolka, and J¨org W¨urtz. Object-oriented concur-rent constraint

884 INDEX

Char , 823, 824Compiler , 817Connection , 721, 737Dictionary , 440Distribution (supplement), 724Fault , 745, 749File (supplement), 214, 298, 571Finalize , 485Float , 823Int , 823List , 263, 393, 831Module , 227, 421, 459, 736, 818MyList (example), 225Number, 16, 56, 185, 823OS, 377, 618, 701, 708, 736ObjectSupport , 523Open, 571, 735Pickle , 219Property , 95, 258, 260QTk, 216, 690, 735Record , 828Remote , 260, 737Space , 666String , 826Thread , 260, 280Time , 309Tk , 712Tuple , 829Value , 334, 832Base, 226, 233compilation unit, 457dynamic linking, 290

failure, 334dynamic typing, 107importing, 227interface, 459library, 232resource, 735, 752specification, 224System, 226, 233

MOGUL (Mozart Global User Library),225

monad, xxxv, 327, 337monitor, 588, 600–608

condition variable, 607guarded method, 605implementation, 605

Java language, 625Java semantics, 601

monolithic function, 302monotonicity, 851

constraint programming, 772dataflow variable, 341, 578need predicate, 799need property, 288store, 785thread reduction, 243, 785, 786

Moore’s Law, 178Morrison, J. Paul, 261Mozart Consortium, xxxviii, xl, 108Mozart Programming System, 259

Browser tool, 4, 89displaying cyclic structures, 104lists, 830WaitQuiet operation, 800

cheap concurrency, 256Compiler Panel tool, 817Distribution Panel tool, 817Explorer tool, 817garbage collection, 79interactive interface, 3, 88, 817kernel languages, 846library modules, 233limited role of the compiler, 510Open Source license, xxxviiioverview, xxxviiiPanel tool, 817performance, 204, 387separate compilation, 461thread scheduler, 257uncaught exception, 95, 803

multi-agent systems (MAS), xxxvii, 370,584

multimedia, 179multiprocessor

cluster, 717shared-memory, 716

mutable store (for cells), 797Myriorama, 277

name, 206, 720, 795, 825, 849defining scope, 514distributed computing, 717fresh, 206

Copyright c© 2001-3 by P. Van Roy and S. Haridi. All rights reserved.

Page 28: 858 BIBLIOGRAPHY - kaukau.edu.sa/Files/830/Files/57095_Concepts Techniques and...BIBLIOGRAPHY 859 [81] Martin Henz, Gert Smolka, and J¨org W¨urtz. Object-oriented concur-rent constraint

INDEX 885

generation, 209name server, 411, 718Naur, Peter, 34needed variable, 288, 799negation as failure, 675nesting marker, 54, 85, 363, 373network awareness, 395, 729network transparency, 260, 395, 714neutral element, 188Newoperation, 501, 555NewActive operation, 564NewActiveExc operation, 569, 734NewArray operation, 439NewCell operation, 424NewDictionary operation, 440NewLock operation, 23, 591NewNameoperation, 206, 795, 825NewPort operation, 356NewStat operation, 731

resilient, 748Newton’s method for square roots, 122Newton, Isaac, 283nil , 830noise (electronic), 477non-strict evaluation, 336

Haskell, 328nonblocking operation, 338

receive (in Erlang), 402receive, 338send, 338stack, 585

noncompositional design, 465nondeterminism

choice statement, 633, 635, 778declarative concurrent model, 583don’t know, 325, 634introduction, 21limitation of declarative model, 319logic programming, 650observable, 22, 238, 319, 578, 581,

583, 584bounded buffer, 603Filter operation, 394lack of in Flavius Josephus prob-

lem, 567relation to exceptions, 332

relation to coroutines, 280

thread scheduler, 257nonvar operation (in Prolog), 673, 675normal order reduction, 336notify operation (in monitor), 600notifyAll operation (in monitor), 601NP-complete problems, 179number, 53, 821

O’Keefe, Richard, 113, 416, 681object, 421, 497, 549, 552

declarative, 431, 488, 575introduction, 19strong, 549

object code, 225object graph, 560object, active, 357, 563

defining behavior with a class, 564example, 564

object, port, 358, 421approaches to concurrency, 581Erlang, 570further reading, 590many-to-one communication, 358reactive, 359reasoning, 360sharing one thread, 385when to use, 584

object, stream, 261, 270–271, 419, 421,582

comparison with port object, 358Flavius Josephus problem, 567higher-order iteration, 262producer/consumer, 262transducer, 263

Ockham, William of, 31octal integer, 822Okasaki, Chris, 150, 178, 284, 335OLE (Object Linking and Embedding),

466OMG (Object Management Group), 466open distribution, 715, 717, 720open program, 205Open Source software, xxxviiioperating system, 211operational semantics, 40, 61, 647, 783–

814operator

Copyright c© 2001-3 by P. Van Roy and S. Haridi. All rights reserved.

Page 29: 858 BIBLIOGRAPHY - kaukau.edu.sa/Files/830/Files/57095_Concepts Techniques and...BIBLIOGRAPHY 859 [81] Martin Henz, Gert Smolka, and J¨org W¨urtz. Object-oriented concur-rent constraint

886 INDEX

associativity, 36, 839infix, 54, 84, 187, 796, 828, 830, 832,

838mixfix, 827, 838postfix, 839precedence, 36, 838prefix, 838ternary, 841

OPI (Oz Programming Interface), 817optimistic scheduling, 612optimization, 179

avoid during development, 455combinatoric, 674compiler, 164eager execution, 308early error detection, 510first-argument indexing, 671memoization, 703monitor performance, 606object system, 552relational programming, 634short-circuit protocol, 567standard computer, 314thread priorities, 270

orelse operator, 84otherwise method, 506OTP (Ericsson Open Telecom Platform),

394overloading, 331Oz, Wizard of, 3ozc command, 232, 819

Panel tool, see Mozart Programming Sys-tem

Papert, Seymour, xxvii, 237paradigm, xxvii, xxxi, see computation

modeldeclarative, 32school of thought, xxx

parallelism, 241, 322importance of non-strictness, 337importance of worst-case complexi-

ty, 177parameter passing, 434–438

call by name, 437exercise, 489

call by need, 437

exercise, 490lazy evaluation, 438

call by reference, 59, 434Java, 561

call by value, 435Java, 561

call by value-result, 436call by variable, 435

parity, 16Parnas, David Lorge, xxxvi, 466parser, 34, 163–169

generic, 662gump tool, 41natural language, 654

partial termination, 247, 344, 806partial value, 47Pascal’s triangle, 6Pascal, Blaise, 7pass by ..., see parameter passingpattern matching

case statement, 8, 68function (in Erlang), 396Haskell, 327receive expression (in Erlang), 399reduction rule semantics, 787

pencil, xxxiiPentium III processor, 204, 475performance

cluster computing, 717competitive concurrency, 259constraint programming, 764Cray-1 supercomputer, 178declarative programming, 314dictionary, 204distributed stream, 730how to measure, 170lazy language, 295, 349low-cost PC, 178memoization, 27, 315mobile object, 730monitor, 606Mozart Programming System, 204,

387price of concurrency, 345role of optimization, 179, 270, 308role of parallelism, 241, 322transitive closure, 474

Copyright c© 2001-3 by P. Van Roy and S. Haridi. All rights reserved.

Page 30: 858 BIBLIOGRAPHY - kaukau.edu.sa/Files/830/Files/57095_Concepts Techniques and...BIBLIOGRAPHY 859 [81] Martin Henz, Gert Smolka, and J¨org W¨urtz. Object-oriented concur-rent constraint

INDEX 887

“Word of Mouth” simulation, 491permanent failure, 745permutations, 4persistence

data structure, 152, 303database, 667Erlang, 395transaction, 609

personal computer, 6, 178, 256, 259, 294,309

pessimistic scheduling, 612Phidani Software, 654π calculus, xxxi, 43, 55, 807pipeline, 263pixel, 562placeholder

dataflow variable, 88future (in Multilisp), 342GUI design, 696, 712

planning, 633Plotkin, Gordon, 783point, 560POLA (Principle of Least Authority),

212polymorphism, 108, 466, 498

Haskell, 330Ponsard, Christophe, 551port (explicit state), 356–357, 725, 850portal, 481potential function, 178predicate calculus, 645preemption, 257preprocessor, 319

DCG (in Prolog), 662design patterns, 542extended DCG (in Prolog), 143fallacy of, 319

presentation model, 703principle

abstraction, 418avoid changing interfaces, 462avoid premature optimization, 179,

455balance planning and refactoring, 455centralized first, distributed later,

751compartmentalize responsibility, 454

creative extension, xxviii, 846decisions at right level, 464declarative concurrency, 247, 286document component interfaces, 454documented violations, 464eager default, lazy declared, 335either simple or wrong, xlencapsulate design decisions, 462enriching control (in logic program-

ming), 653error confinement, 91“everything should be an object”,

548exploit ADT uniformity, 549form mirrors content, 551freely exchange knowledge, 454layered language design, 852least authority, 212least privilege, 212minimize dependencies, 463minimize indirections, 463model independence, 460more is not better or worse, just dif-

ferent, xxxivneed to know, 212pay only on use, 631predictable dependencies, 463run time is all there is, 510separation of concerns, 574stateful component with declarative

behavior, 425syntax stability, 655system decomposition, 213use ADTs everywhere, 549working software keeps working, 60,

463, 728private scope, 513, 514

C++ and Java sense, 514Smalltalk and Oz sense, 513

probabilityExponential distribution, 480Gaussian distribution, 480Normal distribution, 480Uniform distribution, 478unique name generation, 210

proc statement, 66, 795procedure

Copyright c© 2001-3 by P. Van Roy and S. Haridi. All rights reserved.