Prolog

1 / 16

# Prolog - PowerPoint PPT Presentation

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.

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

## 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

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.
• Warren: mid 70’s First version of Prolog that was efficient.
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
• 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
• 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.
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

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
• 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
• 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
• 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
• 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]
• [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(3,X).
• X = [3| _G109]. % _G.., system generated variable
• X= [_G11,3| _]. % etc.
• ?- member(X,Y).
• X = _G131, Y= [_G131|, _G321].
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).
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
• 2nd order: Can’t ask what is relationship between heart and lungs?
• Probabilities: What is likelihood of fire destroying Julian?