Paradigms of Artificial Intelligence Programming: Case Studies in Common Lisp

From the Publisher: Paradigms of AI Programming is the first text to teach advanced Common Lisp techniques in the context of building major AI systems. By reconstructing authentic, complex AI programs using state-of-the-art Common Lisp, the book teaches students and professionals how to build and debug robust practical programs, while demonstrating superior programming style and important AI concepts. The author strongly emphasizes the practical performance issues involved in writing real working programs of significant size. Chapters on troubleshooting and efficiency are included, along with a discussion of the fundamentals of object-oriented programming and a description of the main CLOS functions. This volume is an excellent text for a course on AI programming, a useful supplement for general AI courses and an indispensable reference for the professional programmer.

[1]  Timothy Koschmann The Common LISP Companion , 1990 .

[2]  Robert C. Moore The Role of Logic in Knowledge Representation and Commonsense Reasoning , 1982, AAAI.

[3]  David L. Waltz,et al.  Understanding Line drawings of Scenes with Shadows , 1975 .

[4]  David A. McAllester,et al.  Reasoning Utility Package User's Manual, Version One , 1982 .

[5]  L. Vygotsky,et al.  Thought and Language , 1963 .

[6]  W. A. Martin,et al.  The MACSYMA system , 1971, SYMSAC '71.

[7]  John McCarthy,et al.  Recursive functions of symbolic expressions and their computation by machine, Part I , 1960, Commun. ACM.

[8]  J. William,et al.  System aids in constructing consultation programs , 1981 .

[9]  Edward H. Shortliffe,et al.  Rule Based Expert Systems: The Mycin Experiments of the Stanford Heuristic Programming Project (The Addison-Wesley series in artificial intelligence) , 1984 .

[10]  Tony Marsland,et al.  COMPUTER CHESS METHODS , 1990 .

[11]  Anders Haraldsson,et al.  On compiling embedded languages in LISP , 1980, LISP Conference.

[12]  L. Peter Deutsch,et al.  Local optimization in a compiler for stack-based Lisp machines , 1980, LISP Conference.

[13]  Alan J. Perlis,et al.  Special Feature: Epigrams on programming , 1982, SIGP.

[14]  Alan Kay,et al.  The reactive engine , 1969 .

[15]  Johan de Kleer,et al.  Problem Solving with the ATMS , 1986, Artif. Intell..

[16]  John B. Carroll,et al.  Language, Thought and Reality , 2020 .

[17]  David Robson,et al.  Smalltalk-80: The Language and Its Implementation , 1983 .

[18]  Edward H. Shortliffe,et al.  A model of inexact reasoning in medicine , 1990 .

[19]  Matthew L. Ginsberg,et al.  Readings in Nonmonotonic Reasoning , 1987, AAAI 1987.

[20]  E. Shortliffe Computer-based medical consultations: mycin (elsevier north holland , 1976 .

[21]  Alain Colmerauer,et al.  An introduction to Prolog III , 1989, CACM.

[22]  Peter Van Roy,et al.  Can Logic Programming Execute as Fast as Imperative Programming? , 1990 .

[23]  Kai-Fu Lee,et al.  BILL : a table-based, knowledge-intensive othello program , 1986 .

[24]  Stuart C. Shapiro,et al.  Encyclopedia of artificial intelligence, vols. 1 and 2 (2nd ed.) , 1992 .

[25]  Robert A. Kowalski,et al.  Predicate Logic as Programming Language , 1974, IFIP Congress.

[26]  Gerald J. Sussman,et al.  Design of a LISP-based microprocessor , 1980, CACM.

[27]  E E Kohlbecker,et al.  Syntactic extensions in the programming language LISP , 1986 .

[28]  Judea Pearl,et al.  Probabilistic reasoning in intelligent systems - networks of plausible inference , 1991, Morgan Kaufmann series in representation and reasoning.

[29]  Brian W. Kernighan,et al.  Software tools in Pascal , 1976 .

[30]  Drew McDermott,et al.  Introduction to artificial intelligence , 1986, Addison-Wesley series in computer science.

[31]  Stuart J. Russell,et al.  The compleat guide to MRS , 1985 .

[32]  Hassan Aït-Kaci,et al.  Warren's Abstract Machine: A Tutorial Reconstruction , 1991 .

[33]  Johan de Kleer,et al.  An Assumption-Based TMS , 1987, Artif. Intell..

[34]  Jon Doyle,et al.  A Truth Maintenance System , 1979, Artif. Intell..

[35]  Robert A. Mueller,et al.  Symbolic Computing with LISP and PROLOG , 1988 .

[36]  Allen Newell,et al.  GPS, a program that simulates human thought , 1995 .

[37]  Wolfgang Kreutzer,et al.  Programming for artificial intelligence - methods, tools and applications , 1991, International computer science series.

[38]  Noam Chomsky,et al.  Language and Mind , 1973 .

[39]  Gerald J. Sussman,et al.  Structure and interpretation of computer programs , 1985, Proceedings of the IEEE.

[40]  Peter Zilahy Ingerman,et al.  Thunks: a way of compiling procedure statements with some comments on procedure declarations , 1961, CACM.

[41]  Paul S. Rosenbloom,et al.  A World-Championship-Level Othello Program , 1982, Artif. Intell..

[42]  Hank Bromley Lisp Lore: A Guide to Programming the Lisp Machine , 1986, Springer US.

[43]  J. A. Robinson,et al.  A Machine-Oriented Logic Based on the Resolution Principle , 1965, JACM.

[44]  Hector J. Levesque,et al.  Krypton: A Functional Approach to Knowledge Representation , 1983, Computer.

[45]  P. J. Landin,et al.  Correspondence between ALGOL 60 and Church's Lambda-notation , 1965, Commun. ACM.

[46]  Alain Colmerauer Prolog in 10 figures , 1985, CACM.

[47]  Leon Sterling,et al.  Solving Symbolic Equations with PRESS , 1989, J. Symb. Comput..

[48]  Peter Jackson,et al.  Introduction to expert systems , 1986 .

[49]  John McCarthy,et al.  History of LISP , 1978, SIGP.

[50]  David R. Dowty,et al.  Introduction to Montague semantics , 1980 .

[51]  Stuart J. Russell,et al.  On Optimal Game-Tree Search using Rational Meta-Reasoning , 1989, IJCAI.

[52]  J. Weizenbaum From Computer Power and Human Reason From Judgment to Calculation , 2007 .

[53]  Gerald Jay Sussman,et al.  A Computer Model of Skill Acquisition , 1975 .

[54]  Barak A. Pearlmutter,et al.  Oaklisp: An object-oriented dialect of scheme , 1988, LISP Symb. Comput..

[55]  R. Risch The problem of integration in finite terms , 1969 .

[56]  R. J. Fateman Reply to an editorial , 1973, SIGS.

[57]  Hector J. Levesque,et al.  Making Believers out of Computers , 1986, Artif. Intell..

[58]  Brian W. Kernighan,et al.  Elements of Programming Style , 1974 .

[59]  Judea Pearl,et al.  Bayesian and belief-functions formalisms for evidential reasoning: a conceptual analysis , 1990 .

[60]  Gerald Jay Sussman,et al.  The Revised Report on SCHEME: A Dialect of LISP. , 1978 .

[61]  Kenneth Ward Church,et al.  Coping with Syntactic Ambiguity or How to Put the Block in the Box on the Table , 1982, CL.

[62]  David Ungar Generation scavenging: a nondisruptive high performance storage reclamation algorithm , 1984 .

[63]  Adrian Walker Knowledge systems and PROLOG , 1987 .

[64]  Drew McDermott,et al.  Tarskian Semantics, or No Notation Without Denotation! , 1986, Cogn. Sci..

[65]  William A. Woods,et al.  What's in a Link: Foundations for Semantic Networks , 1975 .

[66]  Drew McDermott,et al.  A critique of pure reason 1 , 1987, The Philosophy of Artificial Intelligence.

[67]  Guy L. Steele,et al.  Common Lisp the Language , 1984 .

[68]  Peter Wegner Dimensions of object-based language design , 1987, OOPSLA 1987.

[69]  David H. D. Warren,et al.  An Efficient Easily Adaptable System for Interpreting Natural Language Queries , 1982, CL.

[70]  John McCarthy,et al.  Programs with common sense , 1960 .

[71]  Daniel P. Miranker TREAT: A new and efficient match algorithm for AI production systems , 1988 .

[72]  Guy L. Steele Debunking the “expensive procedure call” myth or, procedure call implementations considered harmful or, LAMBDA: The Ultimate GOTO , 1977, ACM '77.

[73]  Gerald Jay Sussman,et al.  The Art of the Interpreter or, The Modularity Complex (Parts Zero, One, and Two) , 1978 .

[74]  Patrick Henry Winston,et al.  The psychology of computer vision , 1976, Pattern Recognit..

[75]  James G. Schmolze,et al.  Classification in the KL-ONE Knowledge Representation System , 1983, IJCAI.

[76]  David Chapman,et al.  Planning for Conjunctive Goals , 1987, Artif. Intell..

[77]  Michael J. Fischer,et al.  An improved equivalence algorithm , 1964, CACM.

[78]  Clark Weissman,et al.  LISP 1.5 primer , 1967 .

[79]  Kristen Nygaard,et al.  SIMULA: an ALGOL-based simulation language , 1966, CACM.

[80]  Gerald Jay Sussman,et al.  Lambda: The Ultimate Imperative , 1976 .

[81]  William A. Kornfeld Equality for Prolog , 1983, IJCAI.

[82]  John Hughes,et al.  Lazy Memo-functions , 1985, FPCA.

[83]  Daniel G. Bobrow,et al.  Natural Language Input for a Computer Problem Solving System , 1964 .

[84]  David E. Goldberg,et al.  Genetic Algorithms in Search Optimization and Machine Learning , 1988 .

[85]  Tony Hasemer,et al.  Common LISP programming for artificial intelligence , 1989 .

[86]  JACQUES COHEN,et al.  Describing Prolog by its interpretation and compilation , 1985, CACM.

[87]  David Heckerman,et al.  Probabilistic Interpretation for MYCIN's Certainty Factors , 1990, UAI.

[88]  M R Quillian,et al.  Word concepts: a theory and simulation of some basic semantic capabilities. , 1967, Behavioral science.

[89]  J. W. Lloyd,et al.  Foundations of logic programming; (2nd extended ed.) , 1987 .

[90]  Keith Price,et al.  Review of "The Handbook of Artificial Intelligence Vol. 1 by Avron Barr & Edward A. Feigenbaum", William Kaufmann, Inc. 1981 , 1982, SGAR.

[91]  W. W. Bledsoe,et al.  Review of "Problem-Solving Methods in Artificial Intelligence by Nils J. Nilsson", McGraw-Hill Pub. , 1971, SGAR.

[92]  James H. Davenport,et al.  Computer Algebra: Systems and Algorithms for Algebraic Computation , 1988 .

[93]  James F. Allen Natural language understanding , 1987, Bejnamin/Cummings series in computer science.

[94]  Thomas Cooper,et al.  Rule-based programming under OPS5 , 1988 .

[95]  Deborah G. Tatar,et al.  A programmer's guide to common Lisp , 1987, LIPO.

[96]  Peter G. Harrison,et al.  Functional Programming , 1988 .

[97]  Jr. Guy L. Steele,et al.  Rabbit: A Compiler for Scheme , 1978 .

[98]  Johan de Kleer,et al.  Extending the ATMS , 1986, Artif. Intell..

[99]  Edward H. Shortliffe,et al.  The Dempster-Shafer theory of evidence , 1990 .

[100]  Daniel G. Bobrow,et al.  CommonLoops: Merging Lisp and Object-Oriented Programming , 1986, OOPSLA.

[101]  Steffen Hölldobler,et al.  Foundations of Equational Logic Programming , 1989, Lecture Notes in Computer Science.

[102]  Andrew A. Berlin,et al.  Compiling scientific code using partial evaluation , 1990, Computer.

[103]  David N. L. Levy,et al.  Heuristic Programming in Artificial Intelligence , 1991, J. Int. Comput. Games Assoc..

[104]  Rodney A. Brooks,et al.  Programming in Common LISP , 1985 .

[105]  Naomi Sager,et al.  Natural Language Information Processing: A Computer Grammar of English and Its Applications , 1980 .

[106]  Richard E. Korf,et al.  Depth-First Iterative-Deepening: An Optimal Admissible Tree Search , 1985, Artif. Intell..

[107]  Austin Tate,et al.  Generating Project Networks , 1977, IJCAI.

[108]  David A. Moon,et al.  Flavors: Message Passing in the Lisp Machine. , 1980 .

[109]  Allan Collins Fragments of a theory of human plausible reasoning , 1978, TINLAP '78.

[110]  J. Carbonell Subjective understanding, computer models of belief systems , 1981 .

[111]  Judea Pearl,et al.  Heuristics : intelligent search strategies for computer problem solving , 1984 .

[112]  David S. Touretzky Common LISP - a gentle introduction to symbolic computation , 1989 .

[113]  Andrew P. Sage,et al.  Uncertainty in Artificial Intelligence , 1987, IEEE Transactions on Systems, Man, and Cybernetics.

[114]  Marvin Minsky,et al.  Semantic Information Processing , 1968 .

[115]  Erik Ruf,et al.  LogScheme: Integrating logic programming into Scheme , 1990, LISP Symb. Comput..

[116]  Richard J. Fateman Endpaper: FRPOLY: A benchmark revisited , 1991, LISP Symb. Comput..

[117]  Alexander A. Stepanov,et al.  The Ada® Generic Library , 1989, Springer Compass International.

[118]  Eric Benson,et al.  LISP style & design , 1990 .

[119]  E. W. Elcock,et al.  Comments on Kornfeld's Equality for Prolog: E-Unification as a Mechanism for Augmenting the Prolog Search Strategy , 1986, AAAI.

[120]  Richard C. Waters,et al.  Supporting the regression testing in Lisp programs , 1991, LIPO.

[121]  Helder Coelho,et al.  Prolog by Example , 1988, Symbolic Computation.

[122]  Lee Naish,et al.  Negation and Control in Prolog , 1986, Lecture Notes in Computer Science.

[123]  Earl D. Sacerdoti,et al.  Planning in a Hierarchy of Abstraction Spaces , 1974, IJCAI.

[124]  David A. McAllester,et al.  Non-Deterministic Lisp with Dependency-directed Backtracking , 1987, AAAI.

[125]  Daniel G. Bobrow,et al.  Object-Oriented Programming: Themes and Variations , 1989, AI Mag..

[126]  Robert C. Moore,et al.  Formal Theories of the Commonsense World , 1985 .

[127]  Richard Waldinger,et al.  Achieving several goals simultaneously , 1977 .

[128]  J. Fodor The Language of Thought , 1980 .

[129]  Patrick Saint-Dizier,et al.  Review of Prolog and natural-language analysis: CSLI lecture notes 10 by Fernando C. N. Pereira and Stuart M. Shieber. Center for the Study of Language and Information 1987. , 1988 .

[130]  Alexander H. Waibel,et al.  Recent work in continuous speech recognition using the connectionist viterbi training procedure , 1991, EUROSPEECH.

[131]  Saul Amarel,et al.  On representations of problems of reasoning about actions , 1968 .

[132]  Johan de Kleer,et al.  A General Labeling Algorithm for Assumption-Based Truth Maintenance , 1988, AAAI.

[133]  James Anderson POP-11 comes of age: the advancement of an AI programming language , 1989 .

[134]  Terry Winograd,et al.  Language as a cognitive process 1: Syntax , 1982 .

[135]  Jan Svartvik,et al.  A __ comprehensive grammar of the English language , 1988 .

[136]  M. B. Clowes,et al.  On Seeing Things , 1971, Artif. Intell..

[137]  Michael R. Genesereth,et al.  Logic programming , 1985, CACM.

[138]  Donald E. Knuth,et al.  The Solution for the Branching Factor of the Alpha-Beta Pruning Algorithm , 1981, ICALP.

[139]  Adolfo Guzmán-Arenas,et al.  COMPUTER RECOGNITION OF THREE-DIMENSIONAL OBJECTS IN A VISUAL SCENE , 1968 .

[140]  Lawrence. Davis,et al.  Handbook Of Genetic Algorithms , 1990 .

[141]  Mitchell Wand,et al.  Continuation-Based Program Transformation Strategies , 1980, JACM.

[142]  Glenn Shafer,et al.  Readings in Uncertain Reasoning , 1990 .

[143]  DONALD MICHIE,et al.  “Memo” Functions and Machine Learning , 1968, Nature.

[144]  Robert A. Kowalski,et al.  Algorithm = logic + control , 1979, CACM.

[145]  Ernest Davis,et al.  Representations of commonsense knowledge , 2014, notThenot Morgan Kaufmann series in representation and reasoning.

[146]  Kevin Knight,et al.  Unification: a multidisciplinary survey , 1989, CSUR.

[147]  Casimir A. Kulikowski,et al.  A Practical Guide to Designing Expert Systems , 1984 .

[148]  Patrick Lincoln,et al.  Le Fun: Logic, Equations and Functions , 1987, SLP.

[149]  Patrick J. Hayes,et al.  Naive physics I: ontology for liquids , 1989 .

[150]  Jay Earley,et al.  An efficient context-free parsing algorithm , 1970, Commun. ACM.

[151]  Jacques Cohen,et al.  Constraint logic programming languages , 1990, CACM.

[152]  Erik G. Urdang Book Review: The T Programming Language: A Dialect of Lisp by Stephen Slade, Prentice Hall, Inc. 1987 , 1987, SIGP.

[153]  Richard J. Fateman Polynomial Multiplication, Powers and Asymptotic Analysis: Some Comments , 1974, SIAM J. Comput..

[154]  Robert A. Kowalski,et al.  The early years of logic programming , 1988, CACM.

[155]  Richard Fikes,et al.  STRIPS: A New Approach to the Application of Theorem Proving to Problem Solving , 1971, IJCAI.

[156]  Joseph Weizenbaum,et al.  and Machine , 1977 .

[157]  Donald W. Loveland,et al.  Near-Horn PROLOG , 1987, ICLP.

[158]  John A. Allen,et al.  The anatomy of lisp , 1980 .

[159]  Nancy Martin,et al.  Programming Expert Systems in OPS5 - An Introduction to Rule-Based Programming(1) , 1985, Int. CMG Conference.

[160]  M. H. van Emden,et al.  Logic Programming with Equations , 1987, J. Log. Program..

[161]  Henry G. Baker,et al.  Pragmatic parsing in Common Lisp; or, putting defmacro on steroids , 1991, LIPO.

[162]  Richard A. O'Keefe,et al.  The Craft of Prolog , 1990 .

[163]  Charles L. Forgy,et al.  OPS5 user's manual , 1981 .

[164]  George W. Ernst,et al.  GPS : a case study in generality and problem solving , 1971 .

[165]  Charles L. Forgy,et al.  Rete: A Fast Algorithm for the Many Patterns/Many Objects Match Problem , 1982, Artif. Intell..

[166]  A. Tversky,et al.  Extensional versus intuitive reasoning: the conjunction fallacy in probability judgment , 1983 .

[167]  Donald A. Waterman,et al.  A Guide to Expert Systems , 1986 .

[168]  David H. D. Warren,et al.  Prolog - the language and its implementation compared with Lisp , 1977, Artificial Intelligence and Programming Languages.

[169]  Michael R. Genesereth,et al.  Logical foundations of artificial intelligence , 1987 .

[170]  Daniel G. Bobrow,et al.  If Prolog is the Answer, What is the Question? or What it Takes to Support AI Programming Paradigms , 1985, IEEE Transactions on Software Engineering.

[171]  Guy L. Steele,et al.  LAMBDA: The Ultimate Declarative , 1976 .

[172]  Zellig S. Harris,et al.  A Grammar of English on Mathematical Principles , 1982 .

[173]  Gerald Jay Sussman,et al.  Design of LISP-based Processors, or SCHEME: A Dielectric LISP, or Finite Memories Considered Harmful, or LAMBDA: The Ultimate Opcode , 1979 .

[174]  Kristen Nygaard,et al.  The development of the SIMULA languages , 1978, SIGP.

[175]  Claude E. Shannon,et al.  XXII. Programming a Computer for Playing Chess 1 , 1950 .

[176]  David H. D. Warren,et al.  Definite Clause Grammars for Language Analysis - A Survey of the Formalism and a Comparison with Augmented Transition Networks , 1980, Artif. Intell..

[177]  Leon Sterling,et al.  The Art of Prolog , 1987, IEEE Expert.

[178]  Luca Cardelli,et al.  On understanding types, data abstraction, and polymorphism , 1985, CSUR.

[179]  Bjarne Stroustrup,et al.  C++ Programming Language , 1986, IEEE Softw..

[180]  Richard P. Gabriel,et al.  Performance and evaluation of Lisp systems , 1985 .

[181]  Chris Mellish,et al.  Natural Language Processing in Pop-11: An Introduction to Computational Linguistics , 1989 .

[182]  Elizabeth C. Hirschman,et al.  Judgment under Uncertainty: Heuristics and Biases , 1974, Science.

[183]  S. E. Keene,et al.  A programmer's guide to object-oriented programming in Common LISP , 1988 .

[184]  Lawrence Davis,et al.  Genetic Algorithms and Simulated Annealing , 1987 .

[185]  Robert H. Risch ALGEBRAIC PROPERTIES OF THE ELEMENTARY FUNCTIONS OF ANALYSIS. , 1979 .

[186]  Douglas Wong Language Comprehension in a Problem Solver , 1981, IJCAI.

[187]  James R. Slagle,et al.  A Heuristic Program that Solves Symbolic Integration Problems in Freshman Calculus , 1963, JACM.

[188]  Robert R. Kessler,et al.  Automatic design and implementation of language data types , 1987, PLDI 1987.

[189]  G. Lakoff,et al.  Women, Fire, and Dangerous Things: What Categories Reveal about the Mind , 1988 .

[190]  R. Montague Formal philosophy; selected papers of Richard Montague , 1974 .

[191]  David Maier,et al.  Computing with logic , 1988 .

[192]  Matthew L. Ginsberg,et al.  Iterative Broadening , 1990, Artif. Intell..

[193]  R. Huddleston Introduction to the Grammar of English: Verbs, nouns and adjectives: the boundaries between them , 1984 .

[194]  David A. Moon,et al.  The Lisp Machine manual , 1981, SGAR.

[195]  William A. Woods,et al.  Computational Linguistics Transition Network Grammars for Natural Language Analysis , 2022 .

[196]  Jon Doyle,et al.  The Ins and Outs of Reason Maintenance , 1983, IJCAI.

[197]  A. Church The calculi of lambda-conversion , 1941 .

[198]  Peter C. Cheeseman,et al.  In Defense of Probability , 1985, IJCAI.

[199]  Michael J. Maher,et al.  A Theory of Complete Logic Programs with Equality , 1984, J. Log. Program..

[200]  Peter Norvig Correcting a widespread error in unification algorithms , 1991, Softw. Pract. Exp..

[201]  Ivan Bratko,et al.  Prolog Programming for Artificial Intelligence , 1986 .

[202]  Kai-Fu Lee,et al.  The Development of a World Class Othello Program , 1990, Artif. Intell..

[203]  Rajeev Sangal Programming paradigms in LISP , 1991 .

[204]  John Staples,et al.  Efficient Unification of Quantified Terms , 1988, J. Log. Program..