1 / 28

Logic Programming

Logic Programming. Programming Lecture 1: Getting started with Prolog. 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

Télécharger la présentation

Logic Programming

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Logic Programming • Programming Lecture 1: • Getting started with Prolog

  2. 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. 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

  4. 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

  5. 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, many library copies

  6. Hello World • Prolog is an interactive language. • $ sicstus

  7. Hello World • Prolog is an interactive language. • $ sicstus • ?- Prompt

  8. Hello World • Prolog is an interactive language. • $ sicstus • ?- print(’hello world’). Goal

  9. Hello World • Prolog is an interactive language. • $ sicstus • ?- print(’hello world’). • hello world • yes Output response

  10. 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’

  11. Variables • A variable is a sequence of alphanumeric characters • usually starting with an uppercase letter • Examples: • X Y Z Parent Child Foo _Bar

  12. 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)

  13. 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

  14. Facts Punctuation is important! • 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).

  15. 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

  16. 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

  17. 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

  18. 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).

  19. Miscellaneous • Comments • % single line comment • /* multiple • line • comment */ • To quit Sicstus, type • ?- halt. • (or just control-D)

  20. 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’).

  21. Consulting (2) • If the file name ends with '.pl', can just write: • ?- consult(simpsons). • Also, can just write • ?- [simpsons].

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

  23. Tracing • trace/0 turns on tracing • notrace/0 turns tracing off • debugging/0 shows tracing status

  24. 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

  25. Complex terms • A complex term is of the form • f(t1,...,tn) • where f is an atom and t1...tn are terms • Examples: • f(1,2) node(leaf,leaf) cons(42,nil) • household(homer, marge, bart, lisa, maggie)

  26. 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

  27. Exercises • Using simpsons.pl, write goal bodies for: • classmate(X,Y) • employer(X) • parent(X,Y) • grandparent(X,Y) • More in tutorial problems handout

  28. Next time • Equality and unification • How Prolog searches for answers • Reminder: Tutorials start in week 3

More Related