24
Logic Programming Lecture 1: Course orientation; Getting started with Prolog Assoc. Prof. Zeki Bayram Based on slides by James Cheney

Logic Programming

  • Upload
    emele

  • View
    72

  • Download
    0

Embed Size (px)

DESCRIPTION

Logic Programming. Lecture 1: Course orientation; Getting started with Prolog Assoc. Prof. Zeki Bayram Based on slides by James Cheney. What is Logic Programming?. Logic Programming is a programming paradigm cf. object-oriented or functional programming - PowerPoint PPT Presentation

Citation preview

Page 1: Logic Programming

Logic Programming

Lecture 1: Course orientation;

Getting started with Prolog

Assoc. Prof. Zeki Bayram

Based on slides by James Cheney

Page 2: Logic Programming

Logic Programming

What is Logic Programming?

• Logic Programming is a programming paradigm

• cf. object-oriented or functional programming

• Not a particular language (like Java or Haskell)

•Declarative philosophy

• specify problem, let computer search for answer

Page 3: Logic Programming

Logic Programming

The declarative dream

•Slogan: "Algorithm = Logic + Control"

•Would like to write a program that describes the solutions to the problem

•Computer then finds answers

•Programmer shouldn't have to think about how the system works

Page 4: Logic Programming

Logic Programming

The reality

•Purely declarative programming can only get you so far

•I/O, interaction with outside world, seem inherently "imperative"

•For efficiency/termination, sometimes need finer-grained control over search

Page 5: Logic Programming

Logic Programming

Prolog•Prolog is the best-known LP language

•Core based on first-order (predicate) logic

•Algorithmic realization via unification, search

•Many implementations that make it into a full-fledged programming language

• I/O, primitive ops, efficiency issues complicate declarative story

Page 6: Logic Programming

Logic Programming

Why learn LP?• LP often great for rapidly prototyping

algorithms/search strategies

• "Declarative" ideas arise in many areas of CS

• LP concepts very important in AI, databases, PL

• SAT solvers, model-checking, constraint programming

• Becoming important in program analysis, Semantic Web

• Learning a very different "way to think about problems" makes you a better programmer

Page 7: Logic Programming

Logic Programming

Course objectives• Theory

• first-order logic, semantics of LP

• unification, resolution proof search

• Programming

• basic LP techniques in Prolog

• how to use LP to solve interesting problems

• AI, parsing, search, symbolic processing

Page 8: Logic Programming

Logic Programming

Atoms•An atom is

• a sequence of alphanumeric characters

• usually starting with lower case letter

• or, a string enclosed in single quotes

•Examples:

•homer marge lisa bart

•‘Mr. Burns’ ’Principal Skinner’

Page 9: Logic Programming

Logic Programming

Variables

•A variable is a sequence of alphanumeric characters

•usually starting with an uppercase letter

•Examples:

•X Y Z Parent Child Foo

Page 10: Logic Programming

Logic Programming

Predicates•A predicate has the form

•p(t1,...,tn)

•where p is an atom and t1...tn are terms

•(For now a term is just an atom or variable)

•Examples:

•father(homer, bart)

•mother(marge, bart)

Page 11: Logic Programming

Logic Programming

Predicates (2)•A predicate has a name

• = atom p in p(t1,...,tn)

•and an arity

• = number of arguments (n)

•Predicates with same name but different arity are different

•We write foo/1, foo/2, ... to refer to these different predicates

Page 12: Logic Programming

Logic Programming

Facts

•A fact is an assertion that a predicate is true:

•father(homer, bart).

•mother(marge, bart).

•A collection of facts is sometimes called a knowledge base (or database).

Punctuation is Punctuation is important!important!

Page 13: Logic Programming

Logic Programming

Goals•A goal is a sequence of predicates

•p(t1,...,tn), ..., q(t1',...,tn').

•We interpret “,” as conjunction

•Logically, read as "p holds of t1...tn and ... and q holds of t1'...tm'"

•Predicates can be 0-ary

•Some built-ins: true, false, fail

Page 14: Logic Programming

Logic Programming

Answers•Given a goal, Prolog searches for

answers

• “yes” (possibly with answer substitution)

• “no”

•Substitutions are bindings of variables that make goal true

•Use “;” to see more answers

Page 15: Logic Programming

Logic Programming

Examples• ?- father(X,bart).

• X = homer ;

• no

• ?- father(X,Z), mother(Y,Z).

• X = homer, Y = marge, Z = bart ;

• X = homer, Y = marge, Z = lisa ;

• X = homer, Y = marge, Z = maggie ;

• no

Page 16: Logic Programming

Logic Programming

Rules• A rule is an assertion of the form

• p(ts) :- q(ts’), ..., r(ts’’).

• where ts, ts’, ts’’ are sequences of terms

• “p(ts) holds if q(ts’) holds and ... and r(ts’’) holds”

• Example:

• sibling(X,Y) :- parent(Z,X),

• parent(Z,Y).

Page 17: Logic Programming

Logic Programming

Miscellaneous

•Comments

•% single line comment

•/* multiple

• line

• comment */

Page 18: Logic Programming

Logic Programming

Consulting

•A Prolog program is a collection of facts and rules, or clauses

• stored in one or more files

•The predicate consult/1 loads the facts/rules in a file

•?- consult(‘simpsons.pro’).

Page 19: Logic Programming

Logic Programming

Consulting (2)

•If the file name ends with '.pl', can just write:

•?- consult(simpsons).

•Also, can just write

•?- [simpsons].

Page 20: Logic Programming

Logic Programming

A complete program

• /* hello.pl

• * James Cheney

• * Sept. 20, 2010

• */

• main :- write('hello world').

Page 21: Logic Programming

Logic Programming

Tracing

•trace/0 turns on tracing

•notrace/0 turns tracing off

•debugging/0 shows tracing status

•But: better to use Amzi Prolog’s built-in debugger

Page 22: Logic Programming

Logic Programming

Further reading•Quick Start Prolog notes (Dave Robertson)

•http://www.inf.ed.ac.uk/teaching/courses/lp/prolognotes.pdf

•Learn Prolog Now! (Blackburn, Bos, Striegnitz)

• online, free

•http://www.learnprolognow.org/

•Programming in Prolog (Clocksin & Mellish)

• a standard/classic text

Page 23: Logic Programming

Logic Programming

Exercises•Using simpsons.pro, write goal

bodies for:

• classmate(X,Y)

• employer(X)

• parent(X,Y)

• grandparent(X,Y)

Page 24: Logic Programming

Logic Programming

Next time

•Compound terms

•Equality and unification

•How Prolog searches for answers