prolog l.
Download
Skip this Video
Loading SlideShow in 5 Seconds..
Prolog PowerPoint Presentation
Download Presentation
Prolog

Loading in 2 Seconds...

play fullscreen
1 / 16

Prolog - PowerPoint PPT Presentation


  • 307 Views
  • Uploaded on

Prolog. The language of logic. History. Kowalski: late 60’s Logician who showed logical proof can support computation. Colmerauer: early 70’s Developed early version of Prolog for natural language processing, mainly multiple parses.

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about 'Prolog' - liam


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.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript
prolog

Prolog

The language of logic

history
History
  • Kowalski: late 60’s Logician who showed logical proof can support computation.
  • Colmerauer: early 70’s Developed early version of Prolog for natural language processing, mainly multiple parses.
  • Warren: mid 70’s First version of Prolog that was efficient.
characteristics
Characteristics
  • Prolog approximates first-order logic.
  • Every program is a set of Horn clauses.
  • Inference is by resolution.
  • Search is by backtracking with unification.
  • Basic data structure is term or tree.
  • Variables are unknowns not locations.
  • Prolog does not distinguish between inputs and outputs. It solves relations/predicates.
swi prolog notes
SWI-Prolog Notes
  • Free! Down Loadable
  • To load a file:
    • consult( ‘C:\\kibler\\prolog\\test’).
  • For help:
    • help(predicate-name).
  • “ ; “ will give you next solution.
  • listing(member) will give definition.
example
Example
  • Facts: ()
    • likes(john,mary).
    • likes(john,X). % Variables begin with capital
  • Queries
    • ?- likes(X,Y).
    • X=john, y=Mary. % hit “;” for more
    • ?- likes(X,X).
    • X=john.
example6
Example
  • Rules
    • likes(john,X) :- likes(X,wine). % :- = if
    • likes(john,X):- female(X), likes(X,john).
  • Note: variables are dummy. Standarized apart
  • Some Facts:
    • likes(bill,wine). female(mary). female(sue).
  • Query: ? - likes(john,Y).
    • Y = bill ;
    • no.
family
Family

father(a,b).

father(e,d).

mother(c,b).

mother(d,f).

parent(X,Y) :- father(X,Y).

parent(X,Y) :- mother(X,Y).

grandfather(X,Y):- father(X,Z),parent(Z,Y).

% Do your own for practice.

informal summary
Informal Summary
  • Program is facts + rules. (horn clauses).
  • Query = conjunct of predicates.
  • First set of bindings for variables that solve query are reported. If none, then Prolog returns no.
  • Use “;” to get other solutions.
  • Can be viewed as constraint satisfaction program.
mapcoloring
MapColoring
  • color(r). color(g). color(b).
  • colormap(C1,C2,C3):-color(C1),color(C2),color(C3), C1\==C2,

C1\==C3, C2\==C3.

  • Query: colormap(X,Y,Z).
    • X = r, Y= g, Z=b.
  • Is that it. Yes! Turn on trace.
unification matching terms
Unification: (matching) terms
  • Two terms UNIFY if there is a common substitution for all variables which makes them identical.
  • f(g(X),Y) = f(Z,Z). % = cheap unification
    • X = _G225, Y=g(_G225).
  • Look at parse tree for each term.
    • variables match
    • variable matches anything (set the binding)
    • function symbols only match identical function symbols.
satisfiability uses unification
Satisfiability: uses unification
  • sat(true). % base case
  • sat(not(false)). % base case
  • sat(or(X,Y)):- sat(X).
  • sat(or(X,Y)):-sat(Y).
  • sat(and(X,Y)):-sat(X),sat(Y).
  • test1(X,Y):- sat(and(not(X),X)).
  • test2(X,Y):- sat(and(X,not(Y))).
list operator h t
List Operator [H |T]
  • [a,b,c] is a list in Prolog.
  • [H|T] = [a,b,c] results in
    • H = a i.e. the head of list
    • T = [b,c] i.e. the tail of the list.
  • membership definition
    • member(H,[H|T]). % base case first. Why?
    • member(H,[_|T]):- member(H,T).
    • Use it.
member tests
Member Tests
  • ?- member(3,X).
    • X = [3| _G109]. % _G.., system generated variable
    • X= [_G11,3| _]. % etc.
  • ?- member(X,Y).
    • X = _G131, Y= [_G131|, _G321].
permutation insert
Permutation & Insert
  • insert(X,L, [X|L]).
  • insert(X,[H|T],[H|T1]):- insert(X,T,T1).
  • perm([],[]).
  • perm([H|T],P):-perm(T,T1),insert(H,T1,P).
slide15
DFS

% solve(goal, solution Path)

% s(state, successor-state)

dfs(N,[N]) :- goal(N).

dfs(N,[N|Sol1]):- s(N,N1), dfs(N1,Sol1).

s(a,b). s(a,c). s(b,d). s(b,e). s(c,f).

s(c,g). s(d,h). s(e,i). s(e,j). s(f,k).

goal(i). goal(f).

?- dfs(a,N).

N = [a, b, e, i] ;

N = [a, c, f] ;

limitations
Limitations
  • 2nd order: Can’t ask what is relationship between heart and lungs?
  • Probabilities: What is likelihood of fire destroying Julian?