Presentation is loading. Please wait.

Presentation is loading. Please wait.

Logic Programming Programming Lecture 1: Getting started with Prolog.

Similar presentations


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

1 Logic Programming Programming Lecture 1: Getting started with Prolog

2 James CheneyLogic ProgrammingSeptember 18, 2014 Recap Logic programming is a form of declarative programming "Algorithm = logic + control" Specify a problem, let computer find solution This does not always work out as well as we would wish Writing effective logic programs generally still requires pragmatic knowledge

3 James CheneyLogic ProgrammingSeptember 18, 2014 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

4 James CheneyLogic ProgrammingSeptember 18, 2014 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

5 James CheneyLogic ProgrammingSeptember 18, 2014 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

6 James CheneyLogic ProgrammingSeptember 18, 2014 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

7 James CheneyLogic ProgrammingSeptember 18, 2014 Why learn LP? Learning a very different "way to think about problems" makes you a better programmer LP works well for rapidly prototyping algorithms/search strategies, which can be transferred to mainstream language "Declarative" ideas arise in many areas of CS and AI LP concepts very important in AI, databases, PL SAT solvers, model-checking, constraint programming Becoming important in program analysis, Semantic Web Learning how logic provides a foundation for computation can improve your understanding of both

8 James CheneyLogic ProgrammingSeptember 18, 2014 Course objectives This course teaches both the theory and practice of logic programming Theory: what it means for a programming language to be based on logic first-order logic, semantics of LP unification, resolution proof search Programming: how to write programs that actually run and do something useful basic LP techniques in Prolog how to use LP to solve interesting problems applications: AI, parsing, search, symbolic processing

9 James CheneyLogic ProgrammingSeptember 18, 2014 Organization Lectures M,Th 15:00 First two weeks: 2 programming, 2 theory Remainder of semester: alternate Theory Monday, programming Thursday No lectures week of Nov 1 Tutorial/lab sessions: M,Th,F 16:00, from week 3 Slides, tutorial problems posted on course web page: www.inf.ed.ac.uk/teaching/courses/lp/

10 James CheneyLogic ProgrammingSeptember 18, 2014 Evaluation 10 point UG3 course No coursework but tutorial participation strongly encouraged Tutorial exercises representative of exam problems Final exam: Programming 50% Theory 50% UG3 students: pass mark 40% MSc students: pass mark 50%

11 James CheneyLogic ProgrammingSeptember 18, 2014 Getting started There are many Prolog implementations & dialects We’ll use SICStus Prolog Free for UofE students Can request through Windows support Available on all DICE machines You should become familiar with running on DICE Tutorials, assignments, exams will be based on this version Online documentation http://sicstus.sics.se/documentation.html

12 James CheneyLogic ProgrammingSeptember 18, 2014 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

13 James CheneyLogic ProgrammingSeptember 18, 2014 Hello World Prolog is an interactive language. $ sicstus

14 James CheneyLogic ProgrammingSeptember 18, 2014 Hello World Prolog is an interactive language. $ sicstus ?- Prompt

15 James CheneyLogic ProgrammingSeptember 18, 2014 Hello World Prolog is an interactive language. $ sicstus ?- print(’hello world’). Goal

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

17 James CheneyLogic ProgrammingSeptember 18, 2014 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’

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

19 James CheneyLogic ProgrammingSeptember 18, 2014 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)

20 James CheneyLogic ProgrammingSeptember 18, 2014 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

21 James CheneyLogic ProgrammingSeptember 18, 2014 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!

22 James CheneyLogic ProgrammingSeptember 18, 2014 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

23 James CheneyLogic ProgrammingSeptember 18, 2014 Answers Given a goal, Prolog searches for answer(s) “yes” (possibly with answer substitution) “no” Substitutions are bindings of variables that make goal true Use “;” to see more answers

24 James CheneyLogic ProgrammingSeptember 18, 2014 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

25 James CheneyLogic ProgrammingSeptember 18, 2014 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).

26 James CheneyLogic ProgrammingSeptember 18, 2014 Miscellaneous Comments % single line comment /* multiple line comment */ To quit Sicstus, type ?- halt. (or just control-D)

27 James CheneyLogic ProgrammingSeptember 18, 2014 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’).

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

29 James CheneyLogic ProgrammingSeptember 18, 2014 A complete program /* hello.pl * James Cheney * Sept. 18, 2014 */ main :- print('hello world').

30 James CheneyLogic ProgrammingSeptember 18, 2014 Tracing trace/0 turns on tracing notrace/0 turns tracing off debugging/0 shows tracing status

31 James CheneyLogic ProgrammingSeptember 18, 2014 More kinds of terms Story so far... Atoms: homer marge 'Mr. Burns' Variables: X Y Z MR_BURNS Also have... Numbers: 1 2 3 42 -0.12345 Lists [1,2,3] and other complex terms Additional constants and infix operators

32 James CheneyLogic ProgrammingSeptember 18, 2014 Complex terms A complex term is of the form f(t 1,...,t n ) where f is an atom and t 1...t n are terms Examples: f(1,2) node(leaf,leaf) cons(42,nil) household(homer, marge, bart, lisa, maggie)

33 James CheneyLogic ProgrammingSeptember 18, 2014 More about lists Lists are built-in (and very useful) data structures Syntax: [1,2,3,4] [a,[1,2,3],42,'forty-two'] [a,b,c|Xs] (Lots) More next week

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

35 James CheneyLogic ProgrammingSeptember 18, 2014 Next time Equality and unification How Prolog searches for answers Reminder: Tutorials start in week 3


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

Similar presentations


Ads by Google