Last Week. Today. Prolog: recursion examples. Recursion in Prolog. CSC326 Programming Languages (Week 12,Friday)
|
|
- Lawrence Snow
- 5 years ago
- Views:
Transcription
1 Last Week CSC326 Programming Languages (Week 12,Friday) Yilan Gu More on Prolog reasoning mechanism Operators Lists Today Recursion in Prolog (more examples) Negation as failure Misc Cut! (we leave it to the next lecture) 2 Recursion in Prolog Appending lists: Declarative Semantics: Appending an empty list to a n-empty list is the n-empty list else work on one list by removing its elements and adding it to the other list. Prolog append([],x,x). append([h X], Y, [H Z]) :- append(x,y,z). Member of a list: Declarative Semantics: X is a member of a list if X is equal to the first element, or a member of any sublist of that list Prolog: member(x,[x T]). member(x,[y T]):-member(X,T). 3 4
2 a b c d Blocks: Declarative Semantics: Block X is above block Y if X is placed on top of Y, or X is placed on top of some block Z that is above Y. Prolog: % first attempt above(x,y) :- on(x,y). (1) above(x,z) :- above(x,y), above(y,z). (2) on(a,b). (3) on(b,c). (4) on(c,d). (5)?- above(a,b). ;?- above(a,d). ;?- above(b,b). ;Infinite recursion! trace it to see why.?- above(c,a). ;Infinite recursion! trace it to see why. 5 a b c d Blocks: Declarative Semantics: Block X is above block Y if X is placed on top of Y, or X is placed on top of some block Z that is above Y. Prolog: % Second attempt above(x,y) :- on(x,y). (1) above(x,z) :- on(x,y), above(y,z). (2) on(a,b). (3) on(b,c). (4) on(c,d). (5)?- above(a,d). Yes 6 Note that sometimes changing the order of rules and/or rule premises can cause problems for Prolog above(x,z) :- above(y,z), on(x,y) (1) a b c d above(x,y) :- on(x,y). (2) on(a,b). (3) on(b,c). (4) on(c,d). (5)?- above(a,d). Infinite recursion: E.g. p :- p. %declaratively perfectly correct, but procedurally causes infinite loop What to do about infinite recursion? Rewrite the rules and facts (most widely used technique) Define a second n-recursive version (similar to a base case) Use! to stop the unification (more about this later). 7 8
3 Length of a list Exercises in Class Swap first two element in a list. Length of a list Exercises in Class % Solution 1: length([],0). length([x T], N):- length(t,n1),n is N1+1. % Solution 2: length(l,n):-length1(l,0,n). length1([h T], X, N):- X1 is X+1, length1(t,x1,n). length1([],n,n). Swap first two element in a list. swap([x,y T],[Y,X T]) Negatuion as Failure Negation as Failure No equivalent of logical t in Prolog: Prolog can only assert that something is true. Prolog cant assert that something is false. Prolog can assert that the given facts and rules do t allow something to be proven true. Assuming that something unprovable is false is called negation as failure. (Based on a closed world assumption.) The goal t(g) (or \+(G)) succeeds whenever the goal G fails. 11
4 Logical t ( ) blue(sky). father(sam, lee). We do t kw whether blue(earth). blue(earth). Negatuion as Failure Prolog t blue(sky). We kw?- blue(earth). false.?- t(blue(earth)). true. We can't state negative facts. Can t have a negative head, in the body only ( head :- body ) Can't declare a negative fact. Negatuion as Failure Example: Disjoint Sets overlap(s1,s2) :- member(x,s1),member(x,s2). disjoint(s1,s2) :- t(overlap(s1,s2)).?- overlap([a,b,c],[c,d,e]). true.?- overlap([a,b,c],[d,e,f]). false.?- disjoint([a,b,c],[c,d,e]). true.?- disjoint([a,b,c],[d,e,f]). true.?- disjoint([a,b,c],x). false. %< Not what we wanted Negatuion as Failure overlap(s1,s2) :- member(x,s1),member(x,s2). disjoint(s1,s2) :- t(overlap(s1,s2)).?- disjoint([a,b,c],x). No %< Not what we wanted [trace]?- disjoint([a,b,c],x). Call: (7) disjoint([a, b, c], _G293)? creep Call: (8) overlap([a, b, c], _G293)? creep Call: (9) lists:member(_l230, [a, b, c])? creep Exit: (9) lists:member(a, [a, b, c])? creep Call: (9) lists:member(a, _G293)? creep Exit: (9) lists:member(a, [a _G352])? creep Exit: (8) overlap([a, b, c], [a _G352])? creep Fail: (7) disjoint([a, b, c], _G293)? creep false. Proper Use of Negation as Failure t(g) works properly only in the following cases: 1. When G is fully instantiated at the time prolog processes the goal t(g). OR (In this case, t(g) is interpreted to mean goal G does t succeed.) 2. When all variables in G are unique to G, i.e., they don t appear elsewhere in the same clause. (In this case, t(g(x)) is interpreted to mean There is value of X that will make G(X) succeed.)
5 Proper Use of Negation as Failure Proper Use of Negation as Failure Use t to enforce semantics. loves(bill,x) :- pretty(x), female(x), t(loves(tom,x)). loves(tom,x):- famous(x), female(x), t(dead(x)). female(marilym-monroe). female(cindy-crawford). female(martha-stewart). female(girl-next-door). famous(marilym-monroe). famous(cindy-crawford). famous(martha-stewart). pretty(marilym-monroe). pretty(cindy-crawford). pretty(girl-next-door). dead(marilym-monroe). Using t is t always safe loves(bill,x) :- pretty(x), female(x), t(loves(tom,x)). loves(tom,x):- pretty(x), female(x), t(dead(x)). female(marilym-monroe). female(cindy-crawford). female(martha-stewart). female(girl-next-door). famous(marilym-monroe). famous(cindy-crawford). famous(martha-stewart). pretty(marilym-monroe). pretty(cindy-crawford). pretty(girl-next-door). dead(marilym-monroe). Consider the following rule: hates(tom,x):- t(loves(tom,x)). The answer is infinite, since for any P t mentioned in the database, We t infor loves(tom,p), so we must infer hates(tom,p). hates(tom, dog). hates(tom, meat).... This rule is said to be unsafe. Proper Use of Negation as Failure Using t is t always safe loves(bill,x) :- pretty(x), female(x), t(loves(tom,x)). loves(tom,x):- famous(x), female(x), t(dead(x)). female(marilym-monroe). female(cindy-crawford). female(martha-stewart). female(girl-next-door). famous(marilym-monroe). famous(cindy-crawford). famous(martha-stewart). pretty(marilym-monroe). pretty(cindy-crawford). pretty(girl-next-door). dead(marilym-monroe). hates(tom,x):- famous(x), female(x), t(loves(tom,x)). famous(x) and female(x) are called guards, prevend from getting unwanted inferences. Prolog: negation when to use? krispie( snap ). krispie( crackle ). krispie( pop ). breakfast(a,b,c) :- krispie(a), krispie(b), krispie(c).?- breakfast(x,y,z). Y = snap Z = snap ; Y = snap Z = crackle ; Y = snap Z = pop ; krispie( snap ). krispie( crackle ). krispie( pop ). breakfast(a,b,c) :- krispie(a), krispie(b), krispie(c), t(a=b), t(a=c), t(b=c).?- breakfast(x,y,z). Y = crackle Z = pop; Y = pop Z = crackle; X = crackle Y = snap Z = pop
6 Prolog: fail & true predicates That something is t true can be said in Prolog by using a special goal: fail, which always and immediately fails. That something is true can be said in Prolog by using the goal true, which always and immediately succeeds. Prolog: Misc The fail/true are inserted between goals as a pseudo-goal: head1(x) :- goal1a, goal1b, fail, goal1c. %rule 1 head2(x) :- true. %rule 2 Prolog: fail & true predicates Examples: How to represent Mary likes all animals but snakes? % If X is a snake then Mary likes X is t ture % otherwise if X is an animal then Mary likes X snake(cobra). cat(persian). animal(x):-snake(x);cat(x). likes(mary,x):-snake(x),fail. % rule 1 likes(mary,x):-animal(x). % rule 2?- likes(mary,cobra). % query % Why did we get a wrong answer? % rule 1 failed because of fail but % Prolog interpreter went on to unify % with rule 2 which succeeded so we % got snake(cobra). cat(persian). animal(x):-snake(x);cat(x). likes(mary,x):-snake(x),!,fail. % rule 1 likes(mary,x):-animal(x). % rule 2?- likes(mary,cobra). % query %Why did we get the right answer? % rule 1 failed because of fail and the! % told the interpreter t to try rule 2 % because since we have reached % there(aka to the!), it must be a snake Prolog: fail & true predicates Examples cont d: How to represent X and Y are different if they do t match? % If X and Y match then different(x,y) fails % otherwise different(x,y) succeeds different(x,y) :- X=Y,fail. %rule 1 different(x,y) :- true. %rule 2?- different(5,5). %query % Why did we get a wrong answer? % rule 1 failed because of fail but % Prolog interpreter unified with % rule 2 which succeeded so we got. How to represent t(goal) relation? % if Goal succeeds then t(goal) fails, % otherwise t(goal) succeeds t(p) :- P,!,fail. t(p) :- true. different(x,y) :- X=Y,!, fail. %rule 1 different(x,y) :- true. %rule 2?- different(5,5). %query % Why did we get the right answer? % rule 1 failed because of fail and % the! told the interpreter t to try % rule 2.
7 Prolog: input/output Reading from input: Read a term from the user read(x). Writing to output: output the term X write(x). New line nl. Output N spaces tab(n). Outputting a list: writelist([]). writelist([x L]) :- write(x), nl, writelist(l). Outputting a sequence of characters as * bars([]). bars([n L]) :- stars(n), nl, bars(l). stars(n) :- N > 0, write(*), N1 is N-1, stars(n1). stars(n):- N =< 0.?- writelist([12,14]) ?- bars([3,4,6,5]). *** **** ****** ***** Prolog: input/output Interactive program example: cube :- write( Next item, please: ),read(x),process(x). process(stop):-!. process(n) :- C is N * N * N, write( Cube of ), write(n), write( is ),write(c),nl,cube.?- cube. Next item, please: 5. Cube of 5 is 125 Next item, please: 10. Cube of 10 is 1000 Prolog: using write in debugging Prolog: dynamic programming What is it? Adding/removing rules: assert(c). % adds a clause to the database asserta(c). % adds a clause to the beginning of the database assertz(c). % adds a clause to the end of the database retract(c). % removes a clause from the database Examples:?- crisis.?- assert(crisis).?- crisis.?- retract(crisis).?- crisis. fast(ann). slow(tom). slow(pat).?- assert( (faster(x,y) :- fast(x), slow(y) ) ).?- faster(a,b)..?- retract( slow(x) ). X = tom; X = pat; faster( ann,_).
8 Prolog: pros & cons Cons: Horn clauses have limited expressive power Closed world assumptions (anything t mentioned is false) Ordering of clauses change the result Because horn clause is the basic construct, you must program carefully to avoid infinite loops and incorrect negation. There is 1-solution-fits-all for these problems Pros: Pattern matching Backtracking Unification Rules and goals are also data (dynamic programming). The logical model is powerful Logic vs. Imperative Languages
Principles of Programming Languages Lecture 7
Principles of Programming Languages Lecture 7 Wael Aboulsaadat wael@cs.toronto.edu http://portal.utoronto.ca/ Acknowledgment: parts of these slides are based on material by Diane Horton & Eric Joanis @
More informationSnakes. Declarative Languages. Relation different. Overview. Negation as failure. Relation different
Snakes Declarative Languages D7012E: Negation and solution gathering Fredrik Bengtsson "Mary like all animals but snakes" likes(mary, X):-snake(X),!,fail. likes(mary, X):-animal(X). observe the cut before
More informationBacktrack control. Chapter 5
Chapter 5 Backtrack control Prolog will automatically backtrack to satisfy a goal. This relieves the programmer of the burden of putting in backtrack explicitly. On the negative side, this might lead to
More informationCSC384: Intro to Artificial Intelligence Prolog Tutorials 3&4. Hojjat Ghaderi, Fall 2006, University of Toronto
CSC384: Intro to Artificial Intelligence Prolog Tutorials 3&4 1 Debugging Programs in Prolog We talked about the graphical debugger under Windows. Now, the text-based debugger: You can put a breakpoint
More informationChapter 16. Logic Programming. Topics. Unification. Resolution. Prolog s Search Strategy. Prolog s Search Strategy
Topics Chapter 16 Logic Programming Summary (resolution, unification, Prolog search strategy ) Disjoint goals The cut operator Negative goals Predicate fail Debugger / tracer Lists 2 Resolution Resolution
More informationCSC324 Logic & Relational Programming Illustrated in Prolog
CSC324 Logic & Relational Programming Illustrated in Prolog Afsaneh Fazly 1 Winter 2013 1 with many thanks to Anya Tafliovich, Gerald Penn and Sheila McIlraith. 1 2 admin notes Please check your marks
More informationBacktracking. Backtracking. Backtracking. Backtracking. Backtracking. Backtracking. Functional & Logic Programming - Backtracking October, 01
Functional & Logic Programming - October, 01 already seen how to control execution ordering the clauses and goals can affect the speed of execution and the order of evaluation of the clauses now going
More informationBacktracking. Ch. 5 Controlling Backtracking. Backtracking. Backtracking Example. Example. Example
Backtracking Ch. 5 Controlling Backtracking Backtracking is the attempt to (re)satisfy a goal by exploring alternative ways to satisfy it. Chronological backtracking is backtracking in which we always
More informationProlog. Prolog: Programmation en Logique R.A. Kowalski: Predicate logic as a programming language, Proc IFIP 1974, pp.
Prolog Prolog: Programmation en Logique 1974 - R.A. Kowalski: Predicate logic as a programming language, Proc IFIP 1974, pp. 569-574: First-order predicate logic for the specification of data and relationships
More informationProlog. Logic Programming vs Prolog
Language constructs Prolog Facts, rules, queries through examples Horn clauses Goal-oriented semantics Procedural semantics How computation is performed? Comparison to logic programming 1 Logic Programming
More informationProlog Programming. Chapter 5. Controlling Backtracking : 1/16/2010
Prolog Programming Chapter 5 Controlling Backtracking : 1/16/2010 1 Chapter 5 Controlling Backtracking Preventing backtracking Examples using cut Negation as failure Problems with cut and negation 2 5.1
More informationProlog. Intro to Logic Programming
Prolog Logic programming (declarative) Goals and subgoals Prolog Syntax Database example rule order, subgoal order, argument invertibility, backtracking model of execution, negation by failure, variables
More informationsimplicity hides complexity flow of control, negation, cut, 2 nd order programming, tail recursion procedural and declarative semantics and & or
simplicity hides complexity flow of control, negation, cut, 2 nd order programming, tail recursion simple and/or composition of goals hides complex control patterns not easily represented by traditional
More informationTopic B: Backtracking and Lists
Topic B: Backtracking and Lists 1 Recommended Exercises and Readings From Programming in Prolog (5 th Ed.) Readings: Chapter 3 2 Searching for the Answer In order for a Prolog program to report the correct
More informationLecture 16: Logic Programming in Prolog
Lecture 16: Logic Programming in Prolog COMP 524 Programming Language Concepts Stephen Olivier March 26, 2009 Based on slides by A. Block, notes by N. Fisher, F. Hernandez-Campos, and D. Stotts Goal of
More informationLogic Programming (PLP 11) Prolog Imperative Control Flow: Backtracking, Cut, Fail, Not
Logic Programming (PLP 11) Prolog Imperative Control Flow: Backtracking, Cut, Fail, Not Carlos Varela Rennselaer Polytechnic Institute September 2, 2014 C. Varela 1 Backtracking Forward chaining goes from
More informationCAP 5602 Summer, Lesson 4: Loops. The topics 1. the cut and some of its uses 2. the while loop 3. the do until loop
CAP 5602 Summer, 2011 Lesson 4: Loops The topics 1. the cut and some of its uses 2. the while loop 3. the do until loop 1. The cut The cut (!) is a way of controlling backtracking. If a rule contains a
More information3 Lists. List Operations (I)
3 Lists. List Operations (I) The list is the simplest yet the most useful Prolog structure. A list is a sequence of any number of objects. Example 3.1: L = [1, 2, 3], R = [a, b, c], T = [john, marry, tim,
More informationsimplicity hides complexity flow of control, negation, cut, 2 nd order programming, tail recursion procedural and declarative semantics and & or
simplicity hides complexity flow of control, negation, cut, 2 nd order programming, tail recursion simple and/or composition of goals hides complex control patterns not easily represented by traditional
More informationChapter 16. Logic Programming. Topics. Predicate Calculus and Proving Theorems. Resolution. Resolution: example. Unification and Instantiation
Topics Chapter 16 Logic Programming Proving Theorems Resolution Instantiation and Unification Prolog Terms Clauses Inference Process Backtracking 2 Predicate Calculus and Proving Theorems A use of propositions
More informationPrinciples of Programming Languages Topic: Logic Programming Professor Lou Steinberg
Principles of Programming Languages Topic: Logic Programming Professor Lou Steinberg 1 Logic Programming True facts: If I was born in year B, then in year Y on my birthday I turned Y-B years old I turned
More informationLecture Overview Prolog 1. Introduction Interaction Terms 2. Clauses and predicates Clauses Predicates Variables 3.
1 Lecture Overview Prolog 1. Introduction Interaction Terms 2. Clauses and predicates Clauses Predicates Variables 3. Satisfying goals 2 Prolog A standard free Prolog can be downloaded from http://www.swi-prolog.org
More informationThe current topic: Prolog. Announcements. Meaning of a Prolog rule. Prolog syntax. Reminder: The deadline for Lab 2 re-mark requests is Friday.
The current topic: Prolog! Introduction! Object-oriented programming: Python! Functional programming: Scheme! Python GUI programming (Tkinter)! Types and values Logic programming: Prolog! Introduction
More informationLecture 11: Feb. 10, 2016
CS323: AI (Hands on with Prolog) Spring 2016 Lecturer: K.R. Chowdhary Lecture 11: Feb. 10, 2016 : Professor of CS (VF) Disclaimer: These notes have not been subjected to the usual scrutiny reserved for
More informationFirst-Order Logic (FOL)
First-Order Logic (FOL) FOL consists of the following parts: Objects/terms Quantified variables Predicates Logical connectives Implication Objects/Terms FOL is a formal system that allows us to reason
More informationLogic Languages. Hwansoo Han
Logic Languages Hwansoo Han Logic Programming Based on first-order predicate calculus Operators Conjunction, disjunction, negation, implication Universal and existential quantifiers E A x for all x...
More informationPROLOG. First simple Prolog Program. Basic elements of Prolog. Clause. NSSICT/CH/Nov., 2012.
PROLOG Prolog is a programming language for symbolic, n-numeric computations. It is specially well suited for solving problems that involve objects and relation between objects. First simple Prolog Program
More informationMore Non-logical Features of Prolog
More Non-logical Features of Prolog Prof. Geraint A. Wiggins Centre for Cognition, Computation and Culture Goldsmiths College, University of London Contents Commit operators Implementing Negation as Failure
More information10. Logic Programming With Prolog
Copyright (C) R.A. van Engelen, FSU Department of Computer Science, 2000 10. Logic Programming With Overview Logic Programming Logic Programming Logic programming is a form of declarative programming A
More informationProgramming Paradigms
PP 2017/18 Unit 6 Prolog Basics 1/42 Programming Paradigms Unit 6 Prolog Basics J. Gamper Free University of Bozen-Bolzano Faculty of Computer Science IDSE PP 2017/18 Unit 6 Prolog Basics 2/42 Outline
More informationThe object level in Prolog. Meta-level predicates and operators. Contents. The flow of computation. The meta level in Prolog
Lecture 8 Meta-level predicates and operators Contents Object level vs. meta level Controlling flow of computation Checking and dismantling expressions Comparison operators The object level in Prolog Prolog
More informationProlog is a Declarative Language used mainly for Artificial Intelligence because
Bobby Gagliardi Prolog is a Declarative Language used mainly for Artificial Intelligence because the language makes the task of manipulation of symbols and inference about these symbols easier. Unlike
More informationResolution (14A) Young W. Lim 6/14/14
Copyright (c) 2013-2014. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or any later version published by the Free
More informationThe Idea Underlying Logic Programming. CSci 8980, Fall 2012 Specifying and Reasoning About Computational Systems An Introduction to Logic Programming
The Idea Underlying CSci 8980, Fall 2012 Specifying and Reasoning About Computational Systems An Introduction to Department of Computer Science and Engineering University of Minnesota Lectures in Fall
More informationReviews. Arithmetic Operators (2)
Introduction to Prolog Useful references: Clocksin, W.F. and Mellish, C.S., Programming in Prolog: Using the ISO Standard (5th edition), 2003. Bratko, I., Prolog Programming for Artificial Intelligence
More informationImplementação de Linguagens 2016/2017
Implementação de Linguagens Ricardo Rocha DCC-FCUP, Universidade do Porto ricroc @ dcc.fc.up.pt Ricardo Rocha DCC-FCUP 1 Logic Programming Logic programming languages, together with functional programming
More informationAdvanced Prolog Programming
1 Introduction CIS335, Assignment 4 Advanced Prolog Programming Geraint Wiggins November 12, 2004 This practical is the second self-assessed exercise for MSc students on the Prolog module. It is intended
More informationNotes for Chapter 12 Logic Programming. The AI War Basic Concepts of Logic Programming Prolog Review questions
Notes for Chapter 12 Logic Programming The AI War Basic Concepts of Logic Programming Prolog Review questions The AI War How machines should learn: inductive or deductive? Deductive: Expert => rules =>
More informationExercises on the Fundamentals of Prolog
1 Introduction Exercises on the Fundamentals of Prolog These exercises are intended to help reinforce material taught in the lectures of CIS335 course in Prolog. They do not contribute any marks to the
More informationBrief Introduction to Prolog
CSC384: Intro to Artificial Intelligence Brief Introduction to Prolog Prolog Programming for Artificial Intelligence by Ivan Bratko. Prolog is a language that is useful for doing symbolic and logic based
More informationChapter 5. Pure PROLOG. Foundations of Logic Programming
Chapter 5 1 Outline vs. logic programming Lists in Adding Arithmetics to Adding the Cut to 2 Syntax of Pure Prolog p(x,a) :- q(x), r(x,yi). p(x, a) q(x), r(x,y i ) % Comment Ambivalent syntax: p(p(a,b),
More informationTests, Backtracking, and Recursion
Tests, Backtracking, and Recursion Artificial Intelligence Programming in Prolog Lecture 3 30/09/04 30/09/04 AIPP Lecture 3: Rules, Results, and Backtracking 1 Re-cap A Prolog program consists of predicate
More informationModule 7. Knowledge Representation and Logic (Rule based Systems) Version 2 CSE IIT, Kharagpur
Module 7 Knowledge Representation and Logic (Rule based Systems) Lesson 18 Rule based Systems - II 7.2.5 Programs in PROLOG These minimal notes on Prolog show only some of its flavor. Here are facts plays(ann,fido).
More informationDerived from PROgramming in LOGic (1972) Prolog and LISP - two most popular AI languages. Prolog programs based on predicate logic using Horn clauses
Prolog Programming Derived from PROgramming in LOGic (1972) Good at expressing logical relationships between concepts Prolog and LISP - two most popular AI languages Execution of a Prolog program is a
More informationAgenda. CS301 Session 20. A logic programming trick. A simple Prolog program. Introduction to logic programming Examples Semantics
CS301 Session 20 Introduction to logic programming Examples Semantics Agenda 1 2 A logic programming trick A two-way translator in two lines of code: translate([],[]). translate([word Words],[Mot Mots])
More informationWeek 7 Prolog overview
Week 7 Prolog overview A language designed for A.I. Logic programming paradigm Programmer specifies relationships among possible data values. User poses queries. What data value(s) will make this predicate
More informationList of lectures. Lecture content. Symbolic Programming. TDDA69 Data and Program Structure Symbolic and Logic Programming Cyrille Berger
List of lectures TDDA69 Data and Program Structure Symbolic and Logic Programming Cyrille Berger 1Introduction and Functional Programming 2Imperative Programming and Data Structures 3Parsing 4Evaluation
More informationCS 360: Programming Languages Lecture 10: Logic Programming with Prolog
CS 360: Programming Languages Lecture 10: Logic Programming with Prolog Geoffrey Mainland Drexel University Section 1 Administrivia Midterm Tuesday Midterm is Tuesday, February 14! Study guide is on the
More informationChapter 6. Predefined Predicates
Advanced Logic Programming https://sewiki.iai.uni-bonn.de/teaching/lectures/alp/2017/ Chapter 6. Predefined Predicates Updated: 12 June, 2017 Reorganized entire chapter Input and output Exception handling
More informationzebra puzzle continued recap Prolog concepts family relations
zebra puzzle continued recap Prolog concepts family relations 1 recapping the Zebra puzzle 2 ****** the facts ****** There are 5 houses, occupied by politicallyincorrect gentlemen of 5 different nationalities,
More informationModule 6. Knowledge Representation and Logic (First Order Logic) Version 2 CSE IIT, Kharagpur
Module 6 Knowledge Representation and Logic (First Order Logic) 6.1 Instructional Objective Students should understand the advantages of first order logic as a knowledge representation language Students
More informationINTRODUCTION TO PROLOG
INTRODUCTION TO PROLOG PRINCIPLES OF PROGRAMMING LANGUAGES Norbert Zeh Winter 2018 Dalhousie University 1/44 STRUCTURE OF A PROLOG PROGRAM Where, declaratively, Haskell expresses a computation as a system
More informationCS 321 Programming Languages and Compilers. Prolog
CS 321 Programming Languages and Compilers Prolog Prolog PROgramming LOGic Algorithm = Logic + Control Logic programming deals with computing relations rather than functions. To understand Prolog one must
More informationComputational Logic Prolog Programming Basics
Computational Logic Prolog Programming Basics 1 Overview 1. Using unification 2. Data structures 3. Recursion, backtracking, and search 4. Control of execution 2 Role of Unification in Execution As mentioned
More informationProlog Programming Basics. Computational Logic. Overview. 3. Recursion, backtracking, and search. 2. Data structures. 1.
Computational Logic Prolog Programming Basics 1 Overview 1. Using unification 2. Data structures 3. Recursion, backtracking, and search 4. Control of execution 2 Role of Unification in Execution As mentioned
More informationProgramming Language Concepts: Lecture 22
Programming Language Concepts: Lecture 22 Madhavan Mukund Chennai Mathematical Institute madhavan@cmi.ac.in http://www.cmi.ac.in/~madhavan/courses/pl2009 PLC 2009, Lecture 22, 15 April 2009 Logic programming
More informationChapter 16. Logic Programming Languages
Chapter 16 Logic Programming Languages Chapter 16 Topics Introduction A Brief Introduction to Predicate Calculus Predicate Calculus and Proving Theorems An Overview of Logic Programming The Origins of
More informationLogic Programming Languages
Logic Programming Languages Introduction Logic programming languages, sometimes called declarative programming languages Express programs in a form of symbolic logic Use a logical inferencing process to
More informationOverview. Declarative Languages. operation of del. Deleting an element from a list. functions using del. inserting elements with del
Overview Declarative Languages D7012E: Arithmetic and Backtracking Fredrik Bengtsson Some standard functions Operators Arithmetic The eight queens problem Controlling backtracking cut Deleting an element
More informationProgramming Paradigms
PP 2017/18 Unit 9 Prolog: Accumulators, Order of Goals/Clauses, and the Cut 1/38 Programming Paradigms Unit 9 Prolog: Accumulators, Order of Goals/Clauses, and the Cut J. Gamper Free University of Bozen-Bolzano
More informationProgramming Systems in Artificial Intelligence Introduction
Click to add Text Programming Systems in Artificial Intelligence Introduction Siegfried Nijssen 23/02/16 Discover thediscover world at the Leiden world University at Leiden University Programming Paradigms
More informationLogic Programming: Lecture 1
Logic Programming: Lecture 1 Madhavan Mukund Chennai Mathematical Institute madhavan@cmi.ac.in PLC, 3 April 2017 Logic programming Programming with relations Variables Names starting with a capital letter
More informationConnection between Lists and Terms. Prolog-Lecture 2. Unifying Lists. Unifying Lists. Steps to a Recursive Predicate. List Predicates.
Prolog-Lecture 2 Iqbal Mohomed Connection between Lists and Terms [H T] is just syntactic sugaring for the term.(h,t)?-.(h,t) = [a,b,c]. H = a T = [b, c] ; The dot operator or functor. corresponds to cons
More informationLogic Programming and Resolution Lecture notes for INF3170/4171
Logic Programming and Resolution Lecture notes for INF3170/4171 Leif Harald Karlsen Autumn 2015 1 Introduction This note will explain the connection between logic and computer programming using Horn Clauses
More informationLogic Programming. Let us have airline flight information of the form: 1. Application Domains: 2. Definitions
Logic Programming 1. Application Domains: Logic programming language application areas include natural language processing, expert systems, specifications checking, theorem proving, and control systems
More informationThe Logic Paradigm. Joseph Spring. 7COM1023 Programming Paradigms
The Logic Paradigm Joseph Spring 7COM1023 Programming Paradigms 1 Discussion The Logic Paradigm Propositional and Predicate Logic See also notes and slides on PP website Horn Clauses Definition, Examples
More informationPROgramming in LOGic PROLOG Recursion, Lists & Predicates
PROgramming in LOGic PROLOG Recursion, Lists & Predicates CSC9Y4 1 Recursion Recursion in Prolog means placing in the body of a rule a call to the predicate which occurs in the head of the rule. Here is
More informationProlog Cut: Summary. CSC324 Logic & Relational Programming Illustrated in Prolog. Prolog Cut: Summary. Non-deterministic Programming
Prolog Cut: Summary CSC324 Logic & Relational Programming Illustrated in Prolog Afsaneh Fazly Cut (! ) can be used to: remove duplicate (& unnecessary) responses. remove incorrect responses. improve efficiency
More informationIntroduction to predicate calculus
Logic Programming Languages Logic programming systems allow the programmer to state a collection of axioms from which theorems can be proven. Express programs in a form of symbolic logic Use a logical
More informationIntroduction to Prolog
Introduction to Prolog David Woods dwoods@scss.tcd.ie Week 3 - HT Declarative Logic The Prolog programming language is, at its theoretical core, a declarative language. This is unlike more commonly used
More informationExample Programming Exercises for Prolog
2007 February 3 3401 Example Prolog Programs Page 1 of 3 Example Programming Exercises for Prolog 1. Write a Prolog predicate countbt(tree, Count) to count the number of des in a binary tree that have
More informationCOP4020 Programming Languages. Logical programming with Prolog Prof. Xin Yuan
COP4020 Programming Languages Logical programming with Prolog Prof. Xin Yuan Topics Logic programming with Prolog COP4020 Spring 2013 2 Definitions: Prolog Terms Terms are symbolic expressions that are
More informationCSE 452: Programming Languages. Prolog Statements. Loading the Knowledge Base. Logical Programming Languages Part 2
CSE 452: Programming Languages Logical Programming Languages Part 2 Prolog Statements Prolog statements consist of facts, rules, and queries. Example of facts (written as headless Horn clauses) male(tony).
More informationProlog Programming. Lecture Module 8
Prolog Programming Lecture Module 8 Prolog Language Prolog is unique in its ability to infer facts from the given facts and rules. In Prolog, an order of clauses in the program and goals in the body of
More informationProgramming Paradigms Written Exam (6 CPs)
Programming Paradigms Written Exam (6 CPs) 31.01.2018 First name Student number Last name Signature Instructions for Students Write your name and student number on the exam sheet and on every solution
More informationPROLOG PROgramming in LOGic
PROLOG PROgramming in LOGic 1 Knowledge-Based Information Systems (Relational) database systems are very efficient in the handling of data. Information is data together with a suitable interpretation.
More informationMODIFYING THE KNOWLEDGE BASE DON T DO IT...
AN ADVENTURE GAME MODIFYING THE KNOWLEDGE BASE Consider the following knowledge base: location(egg,duck_pen). location(ducks,duck_pen). location(fox,woods). location(you,house). connect(yard,house). connect(yard,woods).
More informationCAP 5602 Summer, Lesson 5: Lists. The topics 1. updating a counter 2. the list structure 3. some useful built-in predicates for lists
CAP 5602 Summer, 20 Lesson 5: Lists The topics. updating a counter 2. the list structure 3. some useful built-in predicates for lists. Updating a counter Let us try to implement the increse the counter
More informationCS 314 Principles of Programming Languages
CS 314 Principles of Programming Languages Lecture 17: Functional Programming Zheng (Eddy Zhang Rutgers University April 4, 2018 Class Information Homework 6 will be posted later today. All test cases
More informationProlog-2 nd Lecture. Prolog Predicate - Box Model
Prolog-2 nd Lecture Tracing in Prolog Procedural interpretation of execution Box model of Prolog predicate rule How to follow a Prolog trace? Trees in Prolog use nested terms Unification Informally Formal
More informationLogic Programming in Prolog
Cristian Giumale / Lecture Notes 1 Logic Programming in Prolog There are important advantages of using programming systems based on logic: Data are neatly separated from the inference engine, which is
More informationCS 314 Principles of Programming Languages. Lecture 16
CS 314 Principles of Programming Languages Lecture 16 Zheng Zhang Department of Computer Science Rutgers University Friday 28 th October, 2016 Zheng Zhang 1 CS@Rutgers University Class Information Reminder:
More informationFamily Example: Some Facts. respects(barb,dan). respects(barb,katie). respects(dan,brian). respects(dan,barbara).
Family Example: Some Facts respects(barb,dan). respects(barb,katie). respects(dan,brian). respects(dan,barbara). Some Queries?- respects(barb,katie). yes?- respects(barb,x). X=dan; % you type ; and RETURN
More informationCS 381: Programming Language Fundamentals
CS 381: Programming Language Fundamentals Summer 2017 Introduction to Logic Programming in Prolog Aug 2, 2017 Outline Programming paradigms Logic programming basics Introduction to Prolog Predicates, queries
More informationPROLOG PROgramming in LOGic
PROLOG PROgramming in LOGic 1 Knowledge Based Information Systems (Relational) database systems are very efficient in the handling of data. Information is data together with a suitable interpretation.
More informationLogic Programming: The Prolog Language
Logic Programming: The Prolog Language Stephen A. Edwards Columbia University Fall 2012 Logic All Caltech graduates are nerds. Stephen is a Caltech graduate. Is Stephen a nerd? Logic All Caltech graduates
More informationSymbolic Computation Example Programming Exercises for Prolog
2001 July 16 3401 Prolog Programming Exercises Page 1 of 8 Symbolic Computation Example Programming Exercises for Prolog 1. Write a Prolog predicate countbt(tree, Count) to count the number of des in a
More information7COM1023 Programming Paradigms
7COM1023 Programming Paradigms Practical 7: The Logic Paradigm Tutorial: Exercises Propositional and Predicate Logic form the basis for logic programming. 1. Explain what is meant by propositional logic.
More informationChapter 15. Functional Programming Languages
Chapter 15 Functional Programming Languages Copyright 2009 Addison-Wesley. All rights reserved. 1-2 Chapter 15 Topics Introduction Mathematical Functions Fundamentals of Functional Programming Languages
More informationSymbolic Programming Declarative Programming
CS370 Symbolic Programming Declarative Programming LECTURE 2: Introduction to Prolog park@cs.kaist.ac.kr Computer Science Department Korea Advanced Institute of Science and Technology http://nlp.kaist.ac.kr/~cs370
More informationChapter 16. Logic Programming Languages ISBN
Chapter 16 Logic Programming Languages ISBN 0-321-49362-1 Chapter 16 Topics Introduction A Brief Introduction to Predicate Calculus Predicate Calculus and Proving Theorems An Overview of Logic Programming
More informationProlog. Artificial Intelligence. Lecture 2 Karim Bouzoubaa
Prolog Artificial Intelligence Lecture 2 Karim Bouzoubaa Content Introduction Declarative and logic programming Example Computational model Prolog reasoning Structure of prolog programs Prolog concepts
More informationMap coloring example
Map coloring example A B C D E F Database for map coloring coloring(a,b,c,d,e,f) :- different(a,b), different(a,c), different(a,d), different(a,f), different(b,c), different(b,e), different(c,d), different(c,e),
More informationArtificial Intelligence. Chapters Reviews. Readings: Chapters 3-8 of Russell & Norvig.
Artificial Intelligence Chapters Reviews Readings: Chapters 3-8 of Russell & Norvig. Topics covered in the midterm Solving problems by searching (Chap. 3) How to formulate a search problem? How to measure
More information6.001 Notes: Section 6.1
6.001 Notes: Section 6.1 Slide 6.1.1 When we first starting talking about Scheme expressions, you may recall we said that (almost) every Scheme expression had three components, a syntax (legal ways of
More informationDeclarative programming. Logic programming is a declarative style of programming.
Declarative programming Logic programming is a declarative style of programming. Declarative programming Logic programming is a declarative style of programming. The programmer says what they want to compute,
More informationUnit Testing as Hypothesis Testing
Unit Testing as Hypothesis Testing Jonathan Clark September 19, 2012 5 minutes You should test your code. Why? To find bugs. Even for seasoned programmers, bugs are an inevitable reality. Today, we ll
More informationCPS 506 Comparative Programming Languages. Programming Language Paradigm
CPS 506 Comparative Programming Languages Functional Programming Language Paradigm Topics Introduction Mathematical Functions Fundamentals of Functional Programming Languages The First Functional Programming
More informationPrinciples of Computer Science I
Principles of Computer Science I Prof. Nadeem Abdul Hamid CSC 120A - Fall 2004 Lecture Unit 7 Review Chapter 4 Boolean data type and operators (&&,,) Selection control flow structure if, if-else, nested
More informationAXIOMS OF AN IMPERATIVE LANGUAGE PARTIAL CORRECTNESS WEAK AND STRONG CONDITIONS. THE AXIOM FOR nop
AXIOMS OF AN IMPERATIVE LANGUAGE We will use the same language, with the same abstract syntax that we used for operational semantics. However, we will only be concerned with the commands, since the language
More information