Presentation on theme: "Lecturer: Dr. Abeer Mahmoud Logic Programming in Prolog."— Presentation transcript:
Lecturer: Dr. Abeer Mahmoud Logic Programming in Prolog
2 acknowledgement Patrick Blackburn, Johan Bos & Kristina Striegnitz (lecture notes on logic programming in prolog)
3 Lecture 3
4 Quiz Define the predicate parent_of Sibling (person have the same parent) Grandparent_of Greatgrandparent_of
5 exercise Convert the following paragraph into fact or rule: 1. a person may be a smart buyer for something if the person is a smart and he likes the thing and the thing is valuable and the thing has a discount. 2. Bob likes all kind of game. Football is a game. Anything anyone plays and not killed by is a game.
6 a person may be a smart buyer for something if the person is a smart and he likes the thing and the thing is valuable and the thing has a discount. smart(ahmed). smart(nada). smart(noha). smart(islam). valuable(gold). valuable(books). valuable(leather-jackets). discount(books). discount(perfumes). Smart-buyer(X,Y):- smart(X),likes(X,Y),valuable(Y), discount(Y). likes(ahmed, leather-jackets). likes(ahmed, sun-glasses). likes(soha,sun-glasses). likes(islam,books). likes(nada, perfume).
7 Bob likes all kind of game. Football is a game. Anything anyone plays and not killed by is a game. plays(player1,football). plays(player2,tennis). plays(player3,handball). plays(player4,car-racing). likes(‘Bob’, X):-game(X). game(Anything):- plays(_,Anything),not-killed(Anything) not-killed(football). not-killed(tennis). not-killed(handball).
8 Prolog Syntax What exactly are facts, rules and queries built out of? Terms Simple TermsComplex Terms ConstantsVariables AtomsNumbers Terms Simple TermsComplex Terms ConstantsVariables AtomsNumbers
9 Atoms A sequence of characters of upper-case letters, lower-case letters, digits, or underscore, starting with a lowercase letter Examples: butch, big_kahuna_burger, playGuitar An arbitrary sequence of characters enclosed in single quotes Examples: 'Vincent', 'Five dollar shake', A sequence of special characters Examples: :, ;. :-
10 Numbers Integers: 12, -34, Floats:
11 Variables If we want to get more interest information about fact or rule, we can use variable to get more than Yes/No answer. A sequence of characters of upper-case letters, lower-case letters, digits, or underscore, starting with either an uppercase letter or an underscore Examples: X, Y, Variable, Vincent, _tag
12 variable name must begin with capital letter. *using variable we can get all possible answer about a particular fact or rule. Variables
13 Variables Always begin with a capital letter –?- likes (john,X). –?- likes (john, Something). But not –?- likes (john,something)
14 Example of usage of variable Facts: likes(john,flowers). likes(john,mary). likes(paul,mary). Question: ?- likes(john,X) Answer: X=flowers and wait ; mary ; no
15 Complex Terms Atoms, numbers and variables are building blocks for complex terms Complex terms are built out of a functor directly followed by a sequence of arguments Arguments are put in round brackets, separated by commas
16 Complex terms are of the form: functor (argument,..., argument). Functors have to be atoms. Arguments can be any kind of Prolog term, e.g., complex terms. date April date(“Aprile”,13,1988)
17 Examples of complex terms Examples we have seen before: –playsAirGuitar(jody) –loves(vincent, mia) –jealous(marsellus, W)
18 Arity The number of arguments a complex term has is called its arity Examples: woman(mia) is a term with arity 1 loves(vincent,mia) has arity 2 father(father(butch)) arity 1
19 Arity is important In Prolog you can define two predicates with the same functor but with different arity Prolog would treat this as two different predicates In Prolog documentation arity of a predicate is usually indicated with the suffix "/" followed by a number to indicate the arity
20 Example of Arity This knowledge base defines –happy/1 –listens2music/1 –playsAirGuitar/1 happy(yolanda). listens2music(mia). listens2music(yolanda):- happy(yolanda). playsAirGuitar(mia):- listens2music(mia). playsAirGuitar(yolanda):- listens2music(yolanda).
21 summary data type Prolog supports the following data type to define program entries. 1.Integer: to define numerical value like 1, 20, 0,-3,-50, ect. 2.Real: to define the decimal value like 2.4, 3.0, 5,-2.67, ect. 3.Char: to define single character, the character can be of type small letter or capital letter or even of type integer under one condition it must be surrounded by single quota. For example, ‘a’,’C’,’123’. 4.string : to define a sequence of character like “good” i.e define word or statement entries the string must be surrounded by double quota for example “computer”, “134”, “a”. The string can be of any length and type. 5.Symbol: anther type of data type to define single character or sequence of character but it must begin with small letter and don’t surround with single quota or double quota.
22 summary program structure Prolog program structure consists of five segments, not all of them must appear in each program. The following segment must be included in each program predicates, clauses, and goal. 1.Domains: define global parameter used in the program. I= integer C= char S = string R = real 2.Data base: define internal data base generated by the program Database Greater (integer) 3.Predicates: define rule and fact used in the program. Mark(symbol,integer).
23 summary program structure Prolog program structure consists of five segments, not all of them must appear in each program. The following segment must be included in each program predicates, clauses, and goal. 4. Clauses: define the body of the program.. For the above predicates the clauses portion may contain Mark (a, 20). 5.Goal: can be internal or external, internal goal written after clauses portion, external goal supported by the prolog compiler if the program syntax is correct
24 summary mathematical and logical operation
25 summary Other mathematical function
26 summary Read and write function Read functionWrite function readint(Var) : read integer variable. Write(Var) : write variable of any type. Readchar(Var) : read character variable. Readreal(Var) : read read (decimal) variable. Readln(Var) : read string.