DOC PREVIEW
UCI ICS 171 - Prolog

This preview shows page 1-2-3-4-5 out of 16 pages.

Save
View full document
View full document
Premium Document
Do you want full access? Go Premium and unlock all 16 pages.
Access to all documents
Download any document
Ad free experience
View full document
Premium Document
Do you want full access? Go Premium and unlock all 16 pages.
Access to all documents
Download any document
Ad free experience
View full document
Premium Document
Do you want full access? Go Premium and unlock all 16 pages.
Access to all documents
Download any document
Ad free experience
View full document
Premium Document
Do you want full access? Go Premium and unlock all 16 pages.
Access to all documents
Download any document
Ad free experience
View full document
Premium Document
Do you want full access? Go Premium and unlock all 16 pages.
Access to all documents
Download any document
Ad free experience
Premium Document
Do you want full access? Go Premium and unlock all 16 pages.
Access to all documents
Download any document
Ad free experience

Unformatted text preview:

PrologHistoryCharacteristicsSWI-Prolog NotesExampleSlide 6FamilyInformal SummaryMapColoringUnification: (matching) termsSatisfiability: uses unificationList Operator [H |T]Member TestsPermutation & InsertDFSLimitationsPrologThe language of logicHistory•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


View Full Document

UCI ICS 171 - Prolog

Documents in this Course
PROJECT

PROJECT

3 pages

Quiz 6

Quiz 6

9 pages

Load more
Download Prolog
Our administrator received your request to download this document. We will send you the file to your email shortly.
Loading Unlocking...
Login

Join to view Prolog and access 3M+ class-specific study document.

or
We will never post anything without your permission.
Don't have an account?
Sign Up

Join to view Prolog 2 2 and access 3M+ class-specific study document.

or

By creating an account you agree to our Privacy Policy and Terms Of Use

Already a member?