For Friday No reading Prolog Handout 2. Homework.

Slides:



Advertisements
Similar presentations
Artificial Intelligence: Natural Language and Prolog
Advertisements

Chapter 11 :: Logic Languages
1. An Overview of Prolog.
Prolog.
LING 388: Language and Computers Sandiway Fong Lecture 5: 9/5.
Introduction to PROLOG ME 409 Lab - 1. Introduction to PROLOG.
LING 388: Language and Computers Sandiway Fong Lecture 5: 9/8.
Prolog The language of logic. History Kowalski: late 60’s Logician who showed logical proof can support computation. Colmerauer: early 70’s Developed.
1 Introduction to Prolog References: – – Bratko, I., Prolog Programming.
1 Logic Programming. 2 A little bit of Prolog Objects and relations between objects Facts and rules. Upper case are variables. parent(pam, bob).parent(tom,bob).
Lecture 10 Logic programming, PROLOG (PROgramming in LOGic)
INTRODUCTION TO PROLOG. PROLOG BASICS Atoms - most primitive terms that the language manipulates start with lower case letter includes strings (‘inside.
1 COMP313A Programming Languages Logic Programming (3)
About prolog  History  Symbolic Programming Language  Logic Programming Language  Declarative Programming Language.
4. PROLOG Data Objects And PROLOG Arithmetic
For Friday Finish chapter 10 No homework (get started on program 2)
For Monday Take home exam due Exam 1. For Wednesday Read chapter 10, sections 1-2 Prolog Handout 4.
CS 330 Programming Languages 12 / 02 / 2008 Instructor: Michael Eckmann.
MB: 2 March 2001CS360 Lecture 31 Programming in Logic: Prolog Prolog’s Declarative & Procedural Semantics Readings: Sections
CS 330 Programming Languages 12 / 12 / 2006 Instructor: Michael Eckmann.
For Friday Read “lectures” 1-5 of Learn Prolog Now: prolog-now/
Discussion #20 1/11 Discussion #20 Resolution in Datalog.
Prolog Ross (Tate). Filling in the Blanks Rather than reverse((a,b)) returns (b,a) Rather than reverse((a,b)) returns (b,a) What X makes reverse((a,b),
Copyright © 2006 The McGraw-Hill Companies, Inc. Programming Languages 2nd edition Tucker and Noonan Chapter 15 Logic Programming Q: How many legs does.
(9.1) COEN Logic Programming  Logic programming and predicate calculus  Prolog statements  Facts and rules  Matching  Subgoals and backtracking.
Logic Programming Languages
Formal Models of Computation Part II The Logic Model
Notes for Chapter 12 Logic Programming The AI War Basic Concepts of Logic Programming Prolog Review questions.
For Wednesday Read chapter 10 Prolog Handout 4. Exam 1 Monday Take home due at the exam.
Flow of Control Chapter 5. Flow of Control n What order computer uses to get answers –sub-goal ordering –clause ordering n Prolog flow-of-control –sequence.
30/09/04 AIPP Lecture 3: Recursion, Structures, and Lists1 Recursion, Structures, and Lists Artificial Intelligence Programming in Prolog Lecturer: Tim.
For Wednesday No new reading Prolog handout 2 Chapter 9, exercise 4.
For Wednesday Read “lectures” 7-10 of Learn Prolog Now Chapter 9, exs 4 and 6. –6 must be in Horn clause form Prolog Handout 2.
Introduction to Prolog Facts, Questions & Rules Atoms & Variables.
CT214 – Logical Foundations of Computing Lecture 8 Introduction to Prolog.
For Monday Read “lectures” 6,9-12 of Learn Prolog Now: saarland.de/~kris/learn-prolog-now/ saarland.de/~kris/learn-prolog-now/
Logic Programming CSC 358/ Outline Pattern matching Unification Logic programming.
Logic Programming and Prolog Goal: use formalism of first-order logic Output described by logical formula (theorem) Input described by set of formulae.
Ch. 13 Ch. 131 jcmt CSE 3302 Programming Languages CSE3302 Programming Languages (notes?) Dr. Carter Tiernan.
For Monday Read “lectures” 1-5 of Learn Prolog Now: prolog-now/
UNIVERSITI TENAGA NASIONAL CMPB454 ARTIFICIAL INTELLIGENCE (AI) CHAPTER 6 LOGIC PROGRAMMING USING PROLOG CHAPTER 6 LOGIC PROGRAMMING USING PROLOG Instructor:
Introduction to Prolog. Outline What is Prolog? Prolog basics Prolog Demo Syntax: –Atoms and Variables –Complex Terms –Facts & Queries –Rules Examples.
CS 337 Programming Languages Logic Programming I (Logic, Intro to Prolog)
© Kenneth C. Louden, Chapter 12 - Logic Programming Programming Languages: Principles and Practice, 2nd Ed. Kenneth C. Louden.
Programming Languages Third Edition Chapter 4 Logic Programming.
Negation Chapter 5. Stating Negative Conditions n Sometimes you want to say that some condition does not hold n Prolog allows this –not/1this is a predicate.
Lists in Prolog Sections 3.1, 3.2. Lists n List = sequence of values –[1, 2, 3, 4, 5] –[bob, brian, cathy, mark, david, loretta] –[birds(4, calling),
Prolog Unification and clause order. The notion of Unification Unification is when two things “become one” Unification is kind of like assignment Unification.
Programming Language Concepts Lecture 17 Prepared by Manuel E. Bermúdez, Ph.D. Associate Professor University of Florida Logic Programming.
For Monday Exam 1 is Monday Takehome due Prolog Handout 3 due.
In The Name Of Allah Lab 03 1Tahani Aldweesh. objectives Searching for the solution’s. Declaration. Query. Comments. Prolog Concepts. Unification. Disjunction.
Artificial Intelligence CIS 342 The College of Saint Rose David Goldschmidt, Ph.D.
Prolog 3 Tests and Backtracking 1. Arithmetic Operators Operators for arithmetic and value comparisons are built-in to Prolog = always accessible / don’t.
07/10/04 AIPP Lecture 5: List Processing1 List Processing Artificial Intelligence Programming in Prolog Lecturer: Tim Smith Lecture 5 07/10/04.
For Wednesday No reading Prolog handout 2 Chapter 9, exercise 4.
C H A P T E R N I N E Logic Programming Part 2 Programming Languages – Principles and Paradigms by Allen Tucker, Robert Noonan.
Chapter Three: Operators, Arithmetic 1. Chapter three: 3.3Operator notation 3.4Arithmetic 2.
Prolog Fundamentals. 2 Review Last Lecture A Prolog program consists of a database of facts and rules, and queries (questions). –Fact:.... –Rule:... :-....
The portion of a Prolog interpreter that executes queries (goals) is known as the inference engine. An inference engine is a kind of theorem prover, using.
Section 16.5, 16.6 plus other references
Prolog a declarative language
For Friday No reading Prolog handout 3 Chapter 9, exercises 9-11.
For Wednesday Read “lectures” 7-10 of Learn Prolog Now:
Prolog Primarily for Symbolic (nonnumeric) Computation
Prolog a declarative language
Prolog a declarative language
For Monday Read chapter 10, sections 1-3 Prolog handout 4
Prolog a declarative language
Logic Programming Language
Programming Languages 2nd edition Tucker and Noonan
Presentation transcript:

For Friday No reading Prolog Handout 2

Homework

Exam 1 Monday Covers through chapter 9 Topics include: –History –Agents/Environments –Search –Logic/Inference –No Prolog Take home due at the exam

Questions?

The parent Predicate Definition of parent/2 (uses facts only) %parent(Parent,Child). parent(pam, bob). parent(tom, liz). parent(bob, ann). parent(bob, pat). parent(pat, jim).

Constants in Prolog Two kinds of constants: –Numbers (much like numbers in other languages) –Atoms Alphanumeric strings which begin with a lowercase letter Strings of special characters (usually used as operators) Strings of characters enclosed in single quotes

Variables in Prolog Prolog variables begin with capital letters. We make queries by using variables: ?- parent(bob,X). X = ann Prolog variables are logic variables, not containers to store values in. Variables become bound to their values. The answers from Prolog queries reflect the bindings.

Query Resolution When given a query, Prolog tries to find a fact or rule which matches the query, binding variables appropriately. It starts with the first fact or rule listed for a given predicate and goes through the list in order. If no match is found, Prolog returns no.

Backtracking We can get multiple answers to a single Prolog query if multiple items match: ?- parent(X,Y). We do this by typing a semi-colon after the answer. This causes Prolog to backtrack, unbinding variables and looking for the next match. Backtracking also occurs when Prolog attempts to satisfy rules.

Rules in Prolog Example Prolog Rule: offspring(Child, Parent) :- parent(Parent, Child). You can read “:-” as “if” Variables with the same name must be bound to the same thing.

Rules in Prolog Suppose we have a set of facts for male/1 and female/1 (such as female(ann).). We can then define a rule for mother/2 as follows: mother(Mother, Child) :- parent(Mother, Child), female(Mother). The comma is the Prolog symbol for and. The semi-colon is the Prolog symbol for or.

Recursive Predicates Consider the notion of an ancestor. We can define a predicate, ancestor/2, using parent/2 if we make ancestor/2 recursive.

Lists in Prolog The empty list is represented as []. The first item is called the head of the list. The rest of the list is called the tail.

List Notation We write a list as: [a, b, c, d] We can indicate the tail of a list using a vertical bar: L = [a, b, c,d], L = [Head | Tail], L = [ H1, H2 | T ]. Head = a, Tail = [b, c, d], H1 = a, H2 = b, T = [c, d]

Some List Predicates member/2 append/3

Try It reverse(List,ReversedList) evenlength(List) oddlength(List)

The Anonymous Variable Some variables only appear once in a rule Have no relationship with anything else Can use _ for each such variable

Arithmetic in Prolog Basic arithmetic operators are provided for by built-in procedures: +, -, *, /, mod, // Note carefully: ?- X = X = ?- X is X = 3

Arithmetic Comparison Comparison operators: > = =< (note the order: NOT <=) =:=(equal values) =\=(not equal values)

Arithmetic Examples Retrieving people born : ?- born(Name, Year), Year >= 1950, Year =< Difference between = and =:= ? =:= yes ? = no ?- 1 + A = B + 2. A = 2 B = 1

Length of a List Definition of length/2 length([], 0). length([_ | Tail], N) :- length(Tail, N1), N is 1 + N1. Note: all loops must be implemented via recursion

Counting Loops Definition of sum/3 sum(Begin, End, Sum) :- sum(Begin, End, Begin, Sum). sum(X, X, Y, Y). sum(Begin, End, Sum1, Sum) :- Begin < End, Next is Begin + 1, Sum2 is Sum1 + Next, sum(Next, End, Sum2, Sum).

The Cut (!) A way to prevent backtracking. Used to simplify and to improve efficiency.

Negation Can’t say something is NOT true Use a closed world assumption Not simply means “I can’t prove that it is true”

Dynamic Predicates A way to write self-modifying code, in essence. Typically just storing data using Prolog’s built-in predicate database. Dynamic predicates must be declared as such.

Using Dynamic Predicates assert and variants retract –Fails if there is no clause to retract retractall –Doesn’t fail if no clauses