Presentation is loading. Please wait.

Presentation is loading. Please wait.

Logic Programming Lecture 1: Course orientation; Getting started with Prolog.

Similar presentations


Presentation on theme: "Logic Programming Lecture 1: Course orientation; Getting started with Prolog."— Presentation transcript:

1 Logic Programming Lecture 1: Course orientation; Getting started with Prolog

2 James CheneyLogic ProgrammingSeptember 19, 2011 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

3 James CheneyLogic ProgrammingSeptember 19, 2011 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

4 James CheneyLogic ProgrammingSeptember 19, 2011 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

5 James CheneyLogic ProgrammingSeptember 19, 2011 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

6 James CheneyLogic ProgrammingSeptember 19, 2011 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

7 James CheneyLogic ProgrammingSeptember 19, 2011 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

8 James CheneyLogic ProgrammingSeptember 19, 2011 Organization Lectures M,Th 15:00 Programming Monday (James Cheney) Theory Thursday (Alex Simpson) No lectures week of October 17-21 Tutorial/lab sessions: TBA, from week 3 Assignment 1 (programming) due: October 24 Assignment 2 (theory) due: November 14 Slides, tutorial problems posted on course web page: www.inf.ed.ac.uk/teaching/courses/lp/

9 James CheneyLogic ProgrammingSeptember 19, 2011 Evaluation 10 point UG3 course Coursework There will be two formatively assessed assignments Marking/feedback provided but not part of final grade Tutorial participation strongly encouraged Final exam: Programming 50% Theory 50% Tutorial, coursework exercises representative of exam problems UG3 students: pass mark 40% MSc students: pass mark 50%

10 James CheneyLogic ProgrammingSeptember 19, 2011 Getting started We’ll use SICStus Prolog Available on all DICE machines Tutorials, exams will be based on this version Windows, Mac version free for UofE students Can request through Computing Support Online documentation http://www.sics.se/isl/sicstuswww/site/index.html

11 James CheneyLogic ProgrammingSeptember 19, 2011 Hello World Prolog is an interactive language. $ sicstus

12 James CheneyLogic ProgrammingSeptember 19, 2011 Hello World Prolog is an interactive language. $ sicstus ?- Prompt

13 James CheneyLogic ProgrammingSeptember 19, 2011 Hello World Prolog is an interactive language. $ sicstus ?- print(’hello world’). Goal

14 James CheneyLogic ProgrammingSeptember 19, 2011 Hello World Prolog is an interactive language. $ sicstus ?- print(’hello world’). hello world yes Output response

15 James CheneyLogic ProgrammingSeptember 19, 2011 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’

16 James CheneyLogic ProgrammingSeptember 19, 2011 Variables A variable is a sequence of alphanumeric characters usually starting with an uppercase letter Examples: X Y Z Parent Child Foo

17 James CheneyLogic ProgrammingSeptember 19, 2011 Predicates A predicate has the form p(t 1,...,t n ) where p is an atom and t 1...t n are terms (For now a term is just an atom or variable) Examples: father(homer, bart) mother(marge, bart)

18 James CheneyLogic ProgrammingSeptember 19, 2011 Predicates (2) A predicate has a name = atom p in p(t 1,...,t n ) 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

19 James CheneyLogic ProgrammingSeptember 19, 2011 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 important!

20 James CheneyLogic ProgrammingSeptember 19, 2011 Goals A goal is a sequence of predicates p(t 1,...,t n ),..., q(t 1 ',...,t n '). We interpret “,” as conjunction Logically, read as "p holds of t 1...t n and... and q holds of t 1 '...t m '" Predicates can be 0-ary Some built-ins: true, false, fail

21 James CheneyLogic ProgrammingSeptember 19, 2011 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

22 James CheneyLogic ProgrammingSeptember 19, 2011 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

23 James CheneyLogic ProgrammingSeptember 19, 2011 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).

24 James CheneyLogic ProgrammingSeptember 19, 2011 Miscellaneous Comments % single line comment /* multiple line comment */ To quit Sicstus, type ?- exit. (or just control-D)

25 James CheneyLogic ProgrammingSeptember 19, 2011 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.pl’).

26 James CheneyLogic ProgrammingSeptember 19, 2011 Consulting (2) If the file name ends with '.pl', can just write: ?- consult(simpsons). Also, can just write ?- [simpsons].

27 James CheneyLogic ProgrammingSeptember 19, 2011 A complete program /* hello.pl * James Cheney * Sept. 20, 2010 */ main :- print('hello world').

28 James CheneyLogic ProgrammingSeptember 19, 2011 Tracing trace/0 turns on tracing notrace/0 turns tracing off debugging/0 shows tracing status

29 James CheneyLogic ProgrammingSeptember 19, 2011 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/ http://www.learnprolognow.org Programming in Prolog (Clocksin & Mellish) a standard/classic text, many library copies

30 James CheneyLogic ProgrammingSeptember 19, 2011 Exercises Using simpsons.pl, write goal bodies for: classmate(X,Y) employer(X) parent(X,Y) grandparent(X,Y) More in tutorial problems handout

31 James CheneyLogic ProgrammingSeptember 19, 2011 Next time Compound terms Equality and unification How Prolog searches for answers


Download ppt "Logic Programming Lecture 1: Course orientation; Getting started with Prolog."

Similar presentations


Ads by Google