SlideServe
Menu
Préférences
© SlideServe · v2026

Introduction to Logic Programming with Prolog

brandonkennedy avatar
31 diapositives · 417 Views · Jan 07, 2020

Explore the fundamentals of Logic Programming using Prolog, a declarative paradigm for problem-solving. Learn about predicates, rules, and goals to solve complex problems efficiently. Join us for a practical and theory-based course orientation.

Introduction to Logic Programming with Prolog - slide 1
01 / 31Introduction to Logic Programming with Prolog
1 / 17

Télécharger la présentation

Introduction to Logic Programming with Prolog
Une image / un lien ci-dessous est fourni (tel quel) pour télécharger la présentation

Politique de téléchargement : le contenu du site vous est fourni TEL QUEL pour votre information et votre usage personnel ; il ne peut être vendu, concédé sous licence ni partagé sur d’autres sites sans l’accord de son auteur.Le contenu vous est fourni TEL QUEL, pour votre information et votre usage personnel uniquement. Téléchargez la présentation en cliquant sur ce lien. Lors du téléchargement, si vous ne parvenez pas à télécharger une présentation, l’éditeur a peut-être supprimé le fichier de son serveur.Pendant le téléchargement, si vous ne parvenez pas à obtenir une présentation, le fichier a peut-être été supprimé par l’éditeur.

F I N

Plus de contenu associé

Transcription de la présentation
  1. Logic Programming • Lecture 1: • Course orientation; • Getting started with Prolog

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

  9. 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%

  10. Getting started • We’ll use SICStus Prolog • Free for UofE students • Can request through Windows support • Available on all DICE machines • Tutorials, exams will be based on this version • Online documentation • http://www.sics.se/isl/sicstuswww/site/index.html

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

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

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

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

  15. 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. Variables • A variable is a sequence of alphanumeric characters • usually starting with an uppercase letter • Examples: • X Y Z Parent Child Foo

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

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

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

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

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

  22. 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. 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. Miscellaneous • Comments • % single line comment • /* multiple • line • comment */ • To quit Sicstus, type • ?- exit. • (or just control-D)

  25. 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. Consulting (2) • If the file name ends with '.pl', can just write: • ?- consult(simpsons). • Also, can just write • ?- [simpsons].

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

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

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

  30. 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. Next time • Compound terms • Equality and unification • How Prolog searches for answers