Prolog - PowerPoint PPT Presentation

About This Presentation
Title:

Prolog

Description:

Other Prolog features Support for tree structures and lists (similar to Haskell) Many built-in predicates (arithmetic, logic, I/O, etc.) ... – PowerPoint PPT presentation

Number of Views:52
Avg rating:3.0/5.0
Slides: 18
Provided by: MarkPu2
Category:
Tags: prolog

less

Transcript and Presenter's Notes

Title: Prolog


1
Prolog
  • CS 171/271

2
Before we begin
  • Download and install SWI-Prolog, version 5.6.4
    http//gollem.science.uva.nl/cgi-bin/nph-download/
    SWI-Prolog/w32pl564.exe

3
What is Prolog?
  • A logic programming language
  • Prolog stands for Programming in Logic (or
    Programmation en Logique in French)
  • Designed in 1972 by Alain Colmerauer and Robert
    Kowalski (much later than Lisp)
  • Used in AI programming, expert systems, and
    computational linguistics
  • Functional programming (ala Lisp) is possible,
    but very cumbersome

4
Logic Programming
  • Creates logical models that describe the world in
    which a problem exists
  • Uses first-order logic (but can also be used with
    propositional logic)
  • A subset of declarative programming
  • Creates a set of conditions that describe a
    solution space
  • Two phases declaration and interpretation

5
Step 1 Declaration
  • Creating a knowledge base (KB) of sentences
    describing the world
  • Declaring facts
  • fun(ai). (AI is fun!)
  • likes(mark,bacon). (Mark likes bacon)
  • Defining rules
  • heartbroken(X) - loves(X,Y), not(loves(Y,X)). (X
    is heartbroken if X loves Y and Y does not love
    X sniff)
  • Sentences end with a period

6
A simple Knowledge Base
  • orbits(mercury, sun).
  • orbits(venus, sun).
  • orbits(earth, sun).
  • orbits(mars, sun).
  • orbits(moon, earth).
  • orbits(phobos, mars).
  • orbits(deimos, mars).
  • planet(P) - orbits(P,sun).
  • satellite(S) - orbits(S,P), planet(P).

7
Step 2 Interpretation
  • Deriving new sentences from the sentences in the
    KB by making queries
  • Uses a Prolog interpreter
  • SWI-Prolog, GNU Prolog, etc.
  • Knowledge bases must first be loaded/consulted
    using consult(filename.pl).

8
Some simple queries
  • ?- consult(solar.pl).
  • Is the moon a satellite?
  • ?- satellite(moon).
  • Is the sun a planet?
  • ?- planet(sun).
  • Is Uranus a planet?
  • ?- planet(uranus).
  • What are the planets?
  • ?- planet(Planet).
  • What objects orbit Mars?
  • ?- orbits(X, mars).
  • Is the moon made of cheese?
  • ?- made_of_cheese(moon).

9
Another KB example
  • parents(william, diana, charles).
  • parents(henry, diana, charles).
  • parents(charles, elizabeth, philip).
  • parents(diana, frances, edward).
  • parents(anne, elizabeth, philip).
  • parents(andrew, elizabeth, philip).
  • parents(edwardW, elizabeth, philip).
  • married(diana, charles).
  • married(elizabeth, philip).
  • married(frances, edward).
  • married(anne, mark).
  • parent(C,M) - parents(C,M,D).
  • parent(C,D) - parents(C,M,D).
  • sibling(X,Y) - parents(X,M,D), parents(Y,M,D).
    Whats wrong with this?
  • aORuDirect(C, A) - parent(C,P), sibling(P,A).
  • aORuMarr(C, A) - aORuDirect(C,X),
    married(X,A).
  • aORuMarr(C, A) - aORuDirect(C,X),
    married(A,X).

10
Predicates
  • Used to express facts or statements about objects
    and their relationships
  • Examples likes heartbroken orbits
  • Have arguments
  • teaches(jpv,cs171). (2 arguments)
  • Names/atoms are alphanumeric, can contain
    underscores, begin with a lowercase letter
  • Meanings of predicates, arguments, and order of
    arguments are arbitrary (but should be
    descriptive and consistent!)

11
Variables
  • Can be used to stand for any object
  • Are instantiated during matching
  • Examples Planet X
  • Scope is statement-wide
  • Usually used in rules, but can also be used in
    facts
  • goes_to_heaven(Dog) - dog(Dog). (All dogs go to
    heaven.)
  • must_perish(Thing). (All things must perish.)
  • Variable names are alphanumeric, can contain
    underscores, must begin with an uppercase letter
  • Use the underscore to indicate an anonymous
    variable
  • female(X) - mother(X,_). (All mothers are
    female, regardless of who the child is.)

12
Queries
  • Describe problems to be solved
  • Consist of goals to be satisfied
  • Example father(X) - male(X), parent(X,_).
  • Goals are male(X) and parent (X,_).
  • Goals are checked against facts in the KB
  • Rules are satisfied if all the goals in the if
    part (in the body, separated by commas) are
    satisfied
  • Variables can take on any value
  • Press semi-colon to look for further matches
  • Uses backtracking to satisfy goals in all
    possible ways (brute-forcing it)

13
Prolog and FOL
  • Rules are usually in the form of Horn clauses
  • - is ? reversed
  • Backtracking in Prolog is known in FOL terms as
    backward chaining
  • Begins with a goal (the query)
  • Recursively builds a set of substitutions that
    satisfy the goals necessary to conclude the goal
  • All variables in Prolog are assumed to be
    universally quantified (though skolemization can
    still be done)

14
Recursion and Functions
  • Make sure theyre not left-recursive
  • ancestor(Person, Ancestor) - parent(Person,
    Ancestor).
  • ancestor(Person, Ancestor) - parent(Person, P1),
    ancestor(P1, Ancestor).
  • Functions are defined as relations
  • fac(0,1).
  • fac(N,F) - N gt 0, M is N - 1, fac(M,Fm), F
    is N Fm.

15
Other Prolog features
  • Support for tree structures and lists (similar to
    Haskell)
  • Many built-in predicates (arithmetic, logic, I/O,
    etc.) and operators
  • Can parse context-free grammars through definite
    clause grammars (DCGs)

16
Towers of Hanoi in Prolog
  • hanoi(N) - move(N,a,b,c).
  • move(0,_,_,_).
  • move(N,From,To,Using) - M is N-1,
    move(M,From,Using,To), print_move(From,To),
    move(M,Using,To,From).
  • print_move(From,To) - write(move,disk,from,From
    ,to,To), nl.

17
Resources
  • SWI-Prolog
  • http//www.swi-prolog.org/
  • Visual Prolog
  • http//www.visual-prolog.com/
  • GNU Prolog
  • http//gnu-prolog.inria.fr/
  • InterProlog (Java)
  • http//www.declarativa.com/interprolog/
  • P (.NET)
  • http//www.dcs.ed.ac.uk/home/jjc/psharp/psharp-1.1
    .4/dlpsharp.html
Write a Comment
User Comments (0)
About PowerShow.com