Logic Programming Lecture 19 Tuesday, April 5, 2016 1 Logic Programming 2 Prolog
Total Page:16
File Type:pdf, Size:1020Kb
Load more
Recommended publications
-
Chapter 2 Introduction to Classical Propositional
CHAPTER 2 INTRODUCTION TO CLASSICAL PROPOSITIONAL LOGIC 1 Motivation and History The origins of the classical propositional logic, classical propositional calculus, as it was, and still often is called, go back to antiquity and are due to Stoic school of philosophy (3rd century B.C.), whose most eminent representative was Chryssipus. But the real development of this calculus began only in the mid-19th century and was initiated by the research done by the English math- ematician G. Boole, who is sometimes regarded as the founder of mathematical logic. The classical propositional calculus was ¯rst formulated as a formal ax- iomatic system by the eminent German logician G. Frege in 1879. The assumption underlying the formalization of classical propositional calculus are the following. Logical sentences We deal only with sentences that can always be evaluated as true or false. Such sentences are called logical sentences or proposi- tions. Hence the name propositional logic. A statement: 2 + 2 = 4 is a proposition as we assume that it is a well known and agreed upon truth. A statement: 2 + 2 = 5 is also a proposition (false. A statement:] I am pretty is modeled, if needed as a logical sentence (proposi- tion). We assume that it is false, or true. A statement: 2 + n = 5 is not a proposition; it might be true for some n, for example n=3, false for other n, for example n= 2, and moreover, we don't know what n is. Sentences of this kind are called propositional functions. We model propositional functions within propositional logic by treating propositional functions as propositions. -
COMPSCI 501: Formal Language Theory Insights on Computability Turing Machines Are a Model of Computation Two (No Longer) Surpris
Insights on Computability Turing machines are a model of computation COMPSCI 501: Formal Language Theory Lecture 11: Turing Machines Two (no longer) surprising facts: Marius Minea Although simple, can describe everything [email protected] a (real) computer can do. University of Massachusetts Amherst Although computers are powerful, not everything is computable! Plus: “play” / program with Turing machines! 13 February 2019 Why should we formally define computation? Must indeed an algorithm exist? Back to 1900: David Hilbert’s 23 open problems Increasingly a realization that sometimes this may not be the case. Tenth problem: “Occasionally it happens that we seek the solution under insufficient Given a Diophantine equation with any number of un- hypotheses or in an incorrect sense, and for this reason do not succeed. known quantities and with rational integral numerical The problem then arises: to show the impossibility of the solution under coefficients: To devise a process according to which the given hypotheses or in the sense contemplated.” it can be determined in a finite number of operations Hilbert, 1900 whether the equation is solvable in rational integers. This asks, in effect, for an algorithm. Hilbert’s Entscheidungsproblem (1928): Is there an algorithm that And “to devise” suggests there should be one. decides whether a statement in first-order logic is valid? Church and Turing A Turing machine, informally Church and Turing both showed in 1936 that a solution to the Entscheidungsproblem is impossible for the theory of arithmetic. control To make and prove such a statement, one needs to define computability. In a recent paper Alonzo Church has introduced an idea of “effective calculability”, read/write head which is equivalent to my “computability”, but is very differently defined. -
ALGORITHMS for ARTIFICIAL INTELLIGENCE in Apl2 By
MAY 1986 REVISED Nov 1986 TR 03·281 ALGORITHMS FOR ARTIFICIAL INTELLIGENCE IN APl2 By DR JAMES A· BROWN ED EUSEBI JANICE COOK lEO H GRONER INTERNATIONAL BUSINESS MACHINES CORPORATION GENERAL PRODUCTS DIVISION SANTA TERESA LABORATORY SAN JOSE~ CALIFORNIA ABSTRACT Many great advances in science and mathematics were preceded by notational improvements. While a g1yen algorithm can be implemented in any general purpose programming language, discovery of algorithms is heavily influenced by the notation used to Lnve s t Lq a t.e them. APL2 c o nce p t.ua Lly applies f unc t Lons in parallel to arrays of data and so is a natural notation in which to investigate' parallel algorithins. No c LaLm is made that APL2 1s an advance in notation that will precede a breakthrough in Artificial Intelligence but it 1s a new notation that allows a new view of the pr-obl.ems in AI and their solutions. APL2 can be used ill problems tractitionally programmed in LISP, and is a possible implementation language for PROLOG-like languages. This paper introduces a subset of the APL2 notation and explores how it can be applied to Artificial Intelligence. 111 CONTENTS Introduction. • • • • • • • • • • 1 Part 1: Artificial Intelligence. • • • 2 Part 2: Logic... · • 8 Part 3: APL2 ..... · 22 Part 4: The Implementations . · .40 Part 5: Going Beyond the Fundamentals .. • 61 Summary. .74 Conclus i ons , . · .75 Acknowledgements. • • 76 References. · 77 Appendix 1 : Implementations of the Algorithms.. 79 Appendix 2 : Glossary. • • • • • • • • • • • • • • • • 89 Appendix 3 : A Summary of Predicate Calculus. · 95 Appendix 4 : Tautologies. · 97 Appendix 5 : The DPY Function. -
Thinking Recursively Part Four
Thinking Recursively Part Four Announcements ● Assignment 2 due right now. ● Assignment 3 out, due next Monday, April 30th at 10:00AM. ● Solve cool problems recursively! ● Sharpen your recursive skillset! A Little Word Puzzle “What nine-letter word can be reduced to a single-letter word one letter at a time by removing letters, leaving it a legal word at each step?” Shrinkable Words ● Let's call a word with this property a shrinkable word. ● Anything that isn't a word isn't a shrinkable word. ● Any single-letter word is shrinkable ● A, I, O ● Any multi-letter word is shrinkable if you can remove a letter to form a word, and that word itself is shrinkable. ● So how many shrinkable words are there? Recursive Backtracking ● The function we wrote last time is an example of recursive backtracking. ● At each step, we try one of many possible options. ● If any option succeeds, that's great! We're done. ● If none of the options succeed, then this particular problem can't be solved. Recursive Backtracking if (problem is sufficiently simple) { return whether or not the problem is solvable } else { for (each choice) { try out that choice. if it succeeds, return success. } return failure } Failure in Backtracking S T A R T L I N G Failure in Backtracking S T A R T L I N G S T A R T L I G Failure in Backtracking S T A R T L I N G S T A R T L I G Failure in Backtracking S T A R T L I N G Failure in Backtracking S T A R T L I N G S T A R T I N G Failure in Backtracking S T A R T L I N G S T A R T I N G S T R T I N G Failure in Backtracking S T A R T L I N G S T A R T I N G S T R T I N G Failure in Backtracking S T A R T L I N G S T A R T I N G Failure in Backtracking S T A R T L I N G S T A R T I N G S T A R I N G Failure in Backtracking ● Returning false in recursive backtracking does not mean that the entire problem is unsolvable! ● Instead, it just means that the current subproblem is unsolvable. -
Event Management for the Development of Multi-Agent Systems Using Logic Programming
Event Management for the Development of Multi-agent Systems using Logic Programming Natalia L. Weinbachy Alejandro J. Garc´ıa [email protected] [email protected] Laboratorio de Investigacio´n y Desarrollo en Inteligencia Artificial (LIDIA) Departamento de Ciencias e Ingenier´ıa de la Computacio´n Universidad Nacional del Sur Av. Alem 1253, (8000) Bah´ıa Blanca, Argentina Tel: (0291) 459-5135 / Fax: (0291) 459-5136 Abstract In this paper we present an extension of logic programming including events. We will first describe our proposal for specifying events in a logic program, and then we will present an implementation that uses an interesting communication mechanism called \signals & slots". The idea is to provide the application programmer with a mechanism for handling events. In our design we consider how to define an event, how to indicate the occurrence of an event, and how to associate an event with a service predicate or handler. Keywords: Event Management. Event-Driven Programming. Multi-agent Systems. Logic Programming. 1 Introduction An event represents the occurrence of something interesting for a process. Events are useful in those applications where pieces of code can be executed automatically when some condition is true. Therefore, event management is helpful to develop agents that react to certain occurrences produced by changes in the environment or caused by another agents. Our aim is to support event management in logic programming. An event can be emitted as a result of the execution of certain predicates, and will result in the execution of the service predicate or handler. For example, when programming a robot behaviour, an event could be associated with the discovery of an obstacle in its trajectory; when this event occurs (generated by some robot sensor), the robot might be able to react to it executing some kind of evasive algorithm. -
Functional and Logic Programming - Wolfgang Schreiner
COMPUTER SCIENCE AND ENGINEERING - Functional and Logic Programming - Wolfgang Schreiner FUNCTIONAL AND LOGIC PROGRAMMING Wolfgang Schreiner Research Institute for Symbolic Computation (RISC-Linz), Johannes Kepler University, A-4040 Linz, Austria, [email protected]. Keywords: declarative programming, mathematical functions, Haskell, ML, referential transparency, term reduction, strict evaluation, lazy evaluation, higher-order functions, program skeletons, program transformation, reasoning, polymorphism, functors, generic programming, parallel execution, logic formulas, Horn clauses, automated theorem proving, Prolog, SLD-resolution, unification, AND/OR tree, constraint solving, constraint logic programming, functional logic programming, natural language processing, databases, expert systems, computer algebra. Contents 1. Introduction 2. Functional Programming 2.1 Mathematical Foundations 2.2 Programming Model 2.3 Evaluation Strategies 2.4 Higher Order Functions 2.5 Parallel Execution 2.6 Type Systems 2.7 Implementation Issues 3. Logic Programming 3.1 Logical Foundations 3.2. Programming Model 3.3 Inference Strategy 3.4 Extra-Logical Features 3.5 Parallel Execution 4. Refinement and Convergence 4.1 Constraint Logic Programming 4.2 Functional Logic Programming 5. Impacts on Computer Science Glossary BibliographyUNESCO – EOLSS Summary SAMPLE CHAPTERS Most programming languages are models of the underlying machine, which has the advantage of a rather direct translation of a program statement to a sequence of machine instructions. Some languages, however, are based on models that are derived from mathematical theories, which has the advantages of a more concise description of a program and of a more natural form of reasoning and transformation. In functional languages, this basis is the concept of a mathematical function which maps a given argument values to some result value. -
Chapter 6 Formal Language Theory
Chapter 6 Formal Language Theory In this chapter, we introduce formal language theory, the computational theories of languages and grammars. The models are actually inspired by formal logic, enriched with insights from the theory of computation. We begin with the definition of a language and then proceed to a rough characterization of the basic Chomsky hierarchy. We then turn to a more de- tailed consideration of the types of languages in the hierarchy and automata theory. 6.1 Languages What is a language? Formally, a language L is defined as as set (possibly infinite) of strings over some finite alphabet. Definition 7 (Language) A language L is a possibly infinite set of strings over a finite alphabet Σ. We define Σ∗ as the set of all possible strings over some alphabet Σ. Thus L ⊆ Σ∗. The set of all possible languages over some alphabet Σ is the set of ∗ all possible subsets of Σ∗, i.e. 2Σ or ℘(Σ∗). This may seem rather simple, but is actually perfectly adequate for our purposes. 6.2 Grammars A grammar is a way to characterize a language L, a way to list out which strings of Σ∗ are in L and which are not. If L is finite, we could simply list 94 CHAPTER 6. FORMAL LANGUAGE THEORY 95 the strings, but languages by definition need not be finite. In fact, all of the languages we are interested in are infinite. This is, as we showed in chapter 2, also true of human language. Relating the material of this chapter to that of the preceding two, we can view a grammar as a logical system by which we can prove things. -
A View of the Fifth Generation and Its Impact
AI Magazine Volume 3 Number 4 (1982) (© AAAI) Techniques and Methodology A View of the Fifth Generation And Its Impact David H. D. Warren SRI International Art$icial Intellagence Center Computer Scaence and Technology Davzsaon Menlo Park, Calafornia 94025 Abstract is partly secondhand. I apologise for any mistakes or misin- terpretations I may therefore have made. In October 1981, .Japan announced a national project to develop highly innovative computer systems for the 199Os, with the title “Fifth Genera- tion Computer Systems ” This paper is a personal view of that project, The fifth generation plan its significance, and reactions to it. In late 1978 the Japanese Ministry of International Trade THIS PAPER PRESENTS a personal view of the <Japanese and Industry (MITI) gave ETL the task of defining a project Fifth Generation Computer Systems project. My main to develop computer syst,ems for the 199Os, wit,h t,he title sources of information were the following: “Filth Generation.” The prqject should avoid competing with IBM head-on. In addition to the commercial aspects, The final proceedings of the Int,ernational Conference it should also enhance Japan’s international prestige. After on Fifth Generat,ion Computer Systems, held in Tokyo in October 1981, and the associated Fifth Generation various committees had deliberated, it was finally decided research reports distributed by the Japan Information to actually go ahead with a “Fifth Generation Computer Processing Development Center (JIPDEC); Systems” project in 1981. The project formally started in April, 1982. Presentations by Koichi Furukawa of Electrotechnical The general technical content of the plan seems to be Laboratory (ETL) at the Prolog Programming Environ- largely due to people at ETL and, in particular, to Kazuhiro ments Workshop, held in Linkoping, Sweden, in March 1982; Fuchi. -
Notes on Mathematical Logic David W. Kueker
Notes on Mathematical Logic David W. Kueker University of Maryland, College Park E-mail address: [email protected] URL: http://www-users.math.umd.edu/~dwk/ Contents Chapter 0. Introduction: What Is Logic? 1 Part 1. Elementary Logic 5 Chapter 1. Sentential Logic 7 0. Introduction 7 1. Sentences of Sentential Logic 8 2. Truth Assignments 11 3. Logical Consequence 13 4. Compactness 17 5. Formal Deductions 19 6. Exercises 20 20 Chapter 2. First-Order Logic 23 0. Introduction 23 1. Formulas of First Order Logic 24 2. Structures for First Order Logic 28 3. Logical Consequence and Validity 33 4. Formal Deductions 37 5. Theories and Their Models 42 6. Exercises 46 46 Chapter 3. The Completeness Theorem 49 0. Introduction 49 1. Henkin Sets and Their Models 49 2. Constructing Henkin Sets 52 3. Consequences of the Completeness Theorem 54 4. Completeness Categoricity, Quantifier Elimination 57 5. Exercises 58 58 Part 2. Model Theory 59 Chapter 4. Some Methods in Model Theory 61 0. Introduction 61 1. Realizing and Omitting Types 61 2. Elementary Extensions and Chains 66 3. The Back-and-Forth Method 69 i ii CONTENTS 4. Exercises 71 71 Chapter 5. Countable Models of Complete Theories 73 0. Introduction 73 1. Prime Models 73 2. Universal and Saturated Models 75 3. Theories with Just Finitely Many Countable Models 77 4. Exercises 79 79 Chapter 6. Further Topics in Model Theory 81 0. Introduction 81 1. Interpolation and Definability 81 2. Saturated Models 84 3. Skolem Functions and Indescernables 87 4. Some Applications 91 5. -
CSC384: Intro to Artificial Intelligence Brief Introduction to Prolog
CSC384: Intro to Artificial Intelligence Brief Introduction to Prolog Part 1/2: Basic material Part 2/2 : More advanced material 1 Hojjat Ghaderi and Fahiem Bacchus, University of Toronto CSC384: Intro to Artificial Intelligence Resources Check the course website for several online tutorials and examples. There is also a comprehensive textbook: Prolog Programming for Artificial Intelligence by Ivan Bratko. 2 Hojjat Ghaderi and Fahiem Bacchus, University of Toronto What‟s Prolog? Prolog is a language that is useful for doing symbolic and logic-based computation. It‟s declarative: very different from imperative style programming like Java, C++, Python,… A program is partly like a database but much more powerful since we can also have general rules to infer new facts! A Prolog interpreter can follow these facts/rules and answer queries by sophisticated search. Ready for a quick ride? Buckle up! 3 Hojjat Ghaderi and Fahiem Bacchus, University of Toronto What‟s Prolog? Let‟s do a test drive! Here is a simple Prolog program saved in a file named family.pl male(albert). %a fact stating albert is a male male(edward). female(alice). %a fact stating alice is a female female(victoria). parent(albert,edward). %a fact: albert is parent of edward parent(victoria,edward). father(X,Y) :- %a rule: X is father of Y if X if a male parent of Y parent(X,Y), male(X). %body of above rule, can be on same line. mother(X,Y) :- parent(X,Y), female(X). %a similar rule for X being mother of Y A fact/rule (statement) ends with “.” and white space ignored read :- after rule head as “if”. -
An Architecture for Making Object-Oriented Systems Available from Prolog
An Architecture for Making Object-Oriented Systems Available from Prolog Jan Wielemaker and Anjo Anjewierden Social Science Informatics (SWI), University of Amsterdam, Roetersstraat 15, 1018 WB Amsterdam, The Netherlands, {jan,anjo}@swi.psy.uva.nl August 2, 2002 Abstract It is next to impossible to develop real-life applications in just pure Prolog. With XPCE [5] we realised a mechanism for integrating Prolog with an external object-oriented system that turns this OO system into a natural extension to Prolog. We describe the design and how it can be applied to other external OO systems. 1 Introduction A wealth of functionality is available in object-oriented systems and libraries. This paper addresses the issue of how such libraries can be made available in Prolog, in particular libraries for creating user interfaces. Almost any modern Prolog system can call routines in C and be called from C (or other impera- tive languages). Also, most systems provide ready-to-use libraries to handle network communication. These primitives are used to build bridges between Prolog and external libraries for (graphical) user- interfacing (GUIs), connecting to databases, embedding in (web-)servers, etc. Some, especially most GUI systems, are object-oriented (OO). The rest of this paper concentrates on GUIs, though the argu- ments apply to other systems too. GUIs consist of a large set of entities such as windows and controls that define a large number of operations. These operations often involve destructive state changes and the behaviour of GUI components normally involves handling spontaneous input in the form of events. OO techniques are very well suited to handle this complexity. -
Belgium a Logic Meta-Programming Framework for Supporting The
Vrije Universiteit Brussel - Belgium Faculty of Sciences In Collaboration with Ecole des Mines de Nantes - France 2003 ERSITEIT IV B N R U U S E S J I E R L V S C S I E A N R B T E IA N VIN TE CERE ECOLE DES MINES DE NANTES A Logic Meta-Programming Framework for Supporting the Refactoring Process A Thesis submitted in partial fulfillment of the requirements for the degree of Master of Science in Computer Science (Thesis research conducted in the EMOOSE exchange) By: Francisca Mu˜nozBravo Promotor: Prof. Dr. Theo D’Hondt (Vrije Universiteit Brussel) Co-Promotors: Dr. Tom Tourw´eand Dr. Tom Mens (Vrije Universiteit Brussel) Abstract The objective of this thesis is to provide automated support for recognizing design flaws in object oriented code, suggesting proper refactorings and performing automatically the ones selected by the user. Software suffers from inevitable changes throughout the development and the maintenance phase, and this usually affects its internal structure negatively. This makes new changes diffi- cult to implement and the code drifts away from the original design. The introduced structural disorder can be countered by applying refactorings, a kind of code transformation that improves the internal structure without affecting the behavior of the application. There are several tools that support applying refactorings in an automated way, but little help for deciding where to apply a refactoring and which refactoring could be applied. This thesis presents an advanced refactoring tool that provides support for the earlier phases of the refactoring process, by detecting and analyzing bad code smells in a software application, proposing appropriate refactorings that solve these smells, and letting the user decide which one to apply.