Prolog Programming slides written by Dr W.F. Clocksin The Plan An example p

 www.phwiki.com

 

The Above Picture is Related Image of Another Journal

 

Prolog Programming slides written by Dr W.F. Clocksin The Plan An example p

Central Washington University, US has reference to this Academic Journal, Prolog Programming slides written by Dr W.F. Clocksin The Plan An example program Syntax of terms Some simple programs Terms as data structures, unification The Cut Writing real programs What is Prolog? Prolog is the most widely used language so that have been inspired by logic programming research. Some features: Prolog uses logical variables. These are not the same as variables in other languages. Programmers can use them as ?holes? in data structures that are gradually filled in as computation proceeds.

 Noory, George Central Washington University www.phwiki.com

 

Related University That Contributed for this Journal are Acknowledged in the above Image

 

?More Unification is a built-in term-manipulation method that passes parameters, returns results, selects in addition to constructs data structures. Basic control flow model is backtracking. Program clauses in addition to data have the same form. The relational form of procedures makes it possible so that define ?reversible? procedures. ?More Clauses provide a convenient way so that express case analysis in addition to nondeterminism. Sometimes it is necessary so that use control features that are not part of ?logic?. A Prolog program can also be seen as a relational database containing rules as well as facts. What a program looks like /* At the Zoo */ elephant(george). elephant(mary). panda(chi_chi). panda(ming_ming). dangerous(X) :- big_teeth(X). dangerous(X) :- venomous(X). guess(X, tiger) :- stripey(X), big_teeth(X), isaCat(X). guess(X, koala) :- arboreal(X), sleepy(X). guess(X, zebra) :- stripey(X), isaHorse(X).

Prolog is a ?declarative? language Clauses are statements about what is true about a problem, instead of instructions how so that accomplish the solution. The Prolog system uses the clauses so that work out how so that accomplish the solution by searching through the space of possible solutions. Not all problems have pure declarative specifications. Sometimes extralogical statements are needed. Example: Concatenate lists a in addition to b list procedure cat(list a, list b) { list t = list u = copylist(a); while (t.tail != nil) t = t.tail; t.tail = b; return u; } In an imperative language In a declarative language In a functional language cat(a,b) ? if b = nil then a else cons(head(a), cat(tail(a),b)) cat([], Z, Z). cat([H|T], L, [H|Z]) :- cat(T, L, Z). Complete Syntax of Terms Term Constant Variable Compound Term Atom Number alpha17 gross_pay john_smith dyspepsia + =/= ?12Q&A? 0 1 57 1.618 2.04e-27 -13.6 likes(john, mary) book(dickens, Z, cricket) f(x) [1, 3, g(a), 7, 9] -(+(15, 17), t) 15 + 17 – t X Gross_pay Diagnosis _257 _ Names an individual Stands in consideration of an individual unable so that be named when program is written Names an individual that has parts

Mendelian Inheritance & Principles How are traits inherited? Dihybrid Crosses Interpreting the Data

Compound Terms parents(spot, fido, rover) The parents of Spot are Fido in addition to Rover. Functor (an atom) of arity 3. components (any terms) It is possible so that depict the term as a tree: parents rover fido spot Compound Terms =/=(15+X, (0*a)+(2<<< 2 + a * 0 X + 15 =/= 5 More about operators Any atom may be designated an operator. The only purpose is in consideration of convenience; the only effect is how the term containing the atom is parsed. Operators are ?syntactic sugar?. We won?t be designating operators in this course, but it is as well so that understand them, because a number of atoms have built-in designations as operators. Operators have three properties: position, precedence in addition to associativity. more? Examples of operator properties Position Operator Syntax Normal Syntax Prefix: -2 -(2) Infix: 5+17 +(17,5) Postfix: N! !(N) Associativity: left, right, none. X+Y+Z is parsed as (X+Y)+Z because addition is left-associative. Precedence: an integer. X+Y*Z is parsed as X+(Y*Z) because multiplication has higher precedence. These are all the same as the normal rules of arithmetic. The last point about Compound Terms? Constants are simply compound terms of arity 0. badger means the same as badger() Structure of Programs Programs consist of procedures. Procedures consist of clauses. Each clause is a fact or a rule. Programs are executed by posing queries. An example? Example elephant(george). elephant(mary). elephant(X) :- grey(X), mammal(X), hasTrunk(X). Procedure in consideration of elephant Predicate Clauses Rule Facts Example ?- elephant(george). yes ?- elephant(jane). no Queries Replies Clauses: Facts in addition to Rules Head :- Body. This is a rule. Head. This is a fact. ?if? ?provided that? ?turnstile? Full stop at the end. Body of a (rule) clause contains goals. likes(mary, X) :- human(X), honest(X). Head Body Goals Exercise: Identify all the parts of Prolog text you have seen so far. Interpretation of Clauses Clauses can be given a declarative reading or a procedural reading. H :- G1, G2, ?, Gn. ?That H is provable follows from goals G1, G2, ?, Gn being provable.? ?To execute procedure H, the procedures called by goals G1, G2, ?, Gn are executed first.? Declarative reading: Procedural reading: Form of clause: male(bertram). male(percival). female(lucinda). female(camilla). pair(X, Y) :- male(X), female(Y). ?- pair(percival, X). ?- pair(apollo, daphne). ?- pair(camilla, X). ?- pair(X, lucinda). ?- pair(X, X). ?- pair(bertram, lucinda). ?- pair(X, daphne). ?- pair(X, Y). Worksheet 2 drinks(john, martini). drinks(mary, gin). drinks(susan, vodka). drinks(john, gin). drinks(fred, gin). pair(X, Y, Z) :- drinks(X, Z), drinks(Y, Z). ?- pair(X, john, martini). ?- pair(mary, susan, gin). ?- pair(john, mary, gin). ?- pair(john, john, gin). ?- pair(X, Y, gin). ?- pair(bertram, lucinda). ?- pair(bertram, lucinda, vodka). ?- pair(X, Y, Z). This definition forces X in addition to Y so that be distinct: pair(X, Y, Z) :- drinks(X, Z), drinks(Y, Z), X == Y. Worksheet 3 berkshire wiltshire surrey hampshire sussex kent How so that represent this relation? Note that borders are symmetric. (a) Representing a symmetric relation. (b) Implementing a strange ticket condition. WS3 border(sussex, kent). border(sussex, surrey). border(surrey, kent). border(hampshire, sussex). border(hampshire, surrey). border(hampshire, berkshire). border(berkshire, surrey). border(wiltshire, hampshire). border(wiltshire, berkshire). This relation represents one ?direction? of border: What about the other? (a) Say border(kent, sussex). border(sussex, kent). (b) Say adjacent(X, Y) :- border(X, Y). adjacent(X, Y) :- border(Y, X). (c) Say border(X, Y) :- border(Y, X). WS3 valid(X, Y) :- adjacent(X, Z), adjacent(Z, Y) Now a somewhat strange type of discount ticket. For the ticket so that be valid, one must pass through an intermediate county. A valid ticket between a start in addition to end county obeys the following rule: WS3 border(sussex, kent). border(sussex, surrey). border(surrey, kent). border(hampshire, sussex). border(hampshire, surrey). border(hampshire, berkshire). border(berkshire, surrey). border(wiltshire, hampshire). border(wiltshire, berkshire). adjacent(X, Y) :- border(X, Y). adjacent(X, Y) :- border(Y, X). ?- valid(wiltshire, sussex). ?- valid(wiltshire, kent). ?- valid(hampshire, hampshire). ?- valid(X, kent). ?- valid(sussex, X). ?- valid(X, Y). valid(X, Y) :- adjacent(X, Z), adjacent(Z, Y) Worksheet 4 a(g, h). a(g, d). a(e, d). a(h, f). a(e, f). a(a, e). a(a, b). a(b, f). a(b, c). a(f, c). arc a e d g h f c b path(X, X). path(X, Y) :- a(X, Z), path(Z, Y). Note that Prolog can distinguish between the 0-ary constant a (the name of a node) in addition to the 2-ary functor a (the name of a relation). ?- path(f, f). ?- path(a, c). ?- path(g, e). ?- path(g, X). ?- path(X, h). But what happens if? a(g, h). a(g, d). a(e, d). a(h, f). a(e, f). a(a, e). a(a, b). a(b, f). a(b, c). a(f, c). a(d, a). a e d g h f c b path(X, X). path(X, Y) :- a(X, Z), path(Z, Y). This program works only in consideration of acyclic graphs. The program may infinitely loop given a cyclic graph. We need so that leave a ?trail? of visited nodes. This is accomplished alongside a data structure (to be seen later). Unification Two terms unify if substitutions can be made in consideration of any variables in the terms so that the terms are made identical. If no such substitution exists, the terms do not unify. The Unification Algorithm proceeds by recursive descent of the two terms. Constants unify if they are identical Variables unify alongside any term, including other variables Compound terms unify if their functors in addition to components unify. Examples The terms f(X, a(b,c)) in addition to f(d, a(Z, c)) unify. Z c a d f b c a X f The terms are made equal if d is substituted in consideration of X, in addition to b is substituted in consideration of Z. We also say X is instantiated so that d in addition to Z is instantiated so that b, or X/d, Z/b. Exercise ? Alternative Method C/17+E, B/E, D/17, A/17, Z/17+E 17 E + f g + 17 17 E 17 + f g + E 17 E 17 17 E 17 E E 17 Exercise ? Alternative Method E/17, C/17+E, B/E, D/17, A/17, Z/C 17 E + f g + 17 17 E 17 + f g + E 17 E 17 17 E 17 E E 17 Exercise ? Alternative Method E/17, C/17+17, B/17, D/17, A/17, Z/C 17 17 + f g + 17 17 17 17 + f g + 17 17 17 17 17 17 17 17 17 17

Noory, George Interim Editor

Noory, George is from United States and they belong to Interim Editor and work for Sahuarita Sun, The in the AZ state United States got related to this Particular Article.

Journal Ratings by Central Washington University

This Particular Journal got reviewed and rated by WS3 valid(X, Y) :- adjacent(X, Z), adjacent(Z, Y) Now a somewhat strange type of discount ticket. For the ticket so that be valid, one must pass through an intermediate county. A valid ticket between a start in addition to end county obeys the following rule: WS3 border(sussex, kent). border(sussex, surrey). border(surrey, kent). border(hampshire, sussex). border(hampshire, surrey). border(hampshire, berkshire). border(berkshire, surrey). border(wiltshire, hampshire). border(wiltshire, berkshire). adjacent(X, Y) :- border(X, Y). adjacent(X, Y) :- border(Y, X). ?- valid(wiltshire, sussex). ?- valid(wiltshire, kent). ?- valid(hampshire, hampshire). ?- valid(X, kent). ?- valid(sussex, X). ?- valid(X, Y). valid(X, Y) :- adjacent(X, Z), adjacent(Z, Y) Worksheet 4 a(g, h). a(g, d). a(e, d). a(h, f). a(e, f). a(a, e). a(a, b). a(b, f). a(b, c). a(f, c). arc a e d g h f c b path(X, X). path(X, Y) :- a(X, Z), path(Z, Y). Note that Prolog can distinguish between the 0-ary constant a (the name of a node) in addition to the 2-ary functor a (the name of a relation). ?- path(f, f). ?- path(a, c). ?- path(g, e). ?- path(g, X). ?- path(X, h). and short form of this particular Institution is US and gave this Journal an Excellent Rating.