3- Which of the following sequences of characters are atoms, which are variables, which are complex terms, and which are not terms at all? Give the functor and arity of each complex term: 1. loves(Vincent,mia)
2. ’loves(Vincent,mia)’
3. Butch(boxer)
4. boxer(Butch)
5. and(big(burger),kahuna(burger))
6. and(big(X),kahuna(X))
7. _and(big(X),kahuna(X))
8. (Butch kills Vincent)
9. kills(Butch Vincent)
10. kills(Butch,Vincent
4- How many facts, rules, clauses, and predicates are there in the following knowledge base? What are the heads of the rules, and what are the goals they contain?
facts: 3
rules: 4
clauses: 7
predicates: 5
woman(vincent).
woman(mia).
man(jules).
person(X) :- man(X); woman(X).
loves(X,Y) :- knows(Y,X).
father(Y,Z) :- man(Y), son(Z,Y).
father(Y,Z) :- man(Y), daughter(Z,Y). 5- Represent the following in Prolog: 1. Butch is a killer.
2. Mia and Marcellus are married.
3. Zed is dead.
4. Marcellus kills everyone who gives Mia a footmassage.
5. Mia loves everyone who is a good dancer.
6. Jules eats anything that is nutritious or tasty. 6- Suppose we are working with the following knowledge base:
wizard(ron).
hasWand(harry).
quidditchPlayer(harry).
wizard(X) :- hasBroom(X),hasWand(X).
hasBroom(X) :- quidditchPlayer(X). How does Prolog respond to the following queries?
1. wizard(ron).
2. witch(ron).
3. wizard(hermione).
4. witch(hermione).
5. wizard(harry).
6. wizard(Y).
7. witch(Y).
7- Which of the following pairs of terms match? Where relevant, give the variable instantiations that lead to successful matching: 1. bread = bread -> true
2. ’Bread’ = bread -> false
3. ’bread’ = bread -> true
4. Bread = bread bread -> Bread = bread.
5. bread = sausage -> false
6. food(bread) = bread -> false
7. food(bread) = X -> X = food(bread).
8. food(X) = food(bread) -> X = bread.
9. food(bread,X) = food(Y,sausage) -> X = sausage, Y = bread.
14. meal(food(bread),X) = meal(X,drink(beer)) -> false 8- We are working with the following knowledge base: house_elf(dobby).
witch(hermione).
witch(’McGonagall’).
witch(rita_skeeter).
magic(X):-house_elf(X).
magic(X):-wizard(X).
magic(X):-witch(X). Which of the following queries are satisfied? Where relevant, give all the variable instantiations that lead to success. 1. ?- magic(house_elf).
Hermione = rita_skeeter. 9- Here is a tiny lexicon and mini grammar with only one rule which defines a sentence as consisting of five words: an article, a noun, a verb, and again an article and a noun.
word(article,a).
word(article,every).
word(noun,criminal).
word(noun,’big kahuna burger’).
word(verb,eats).
word(verb,likes).
sentence(Word1,Word2,Word3,Word4,Word5) :-
word(article,Word1),
word(noun,Word2),
word(verb,Word3),
word(article,Word4),
word(noun,Word5).
What query do you have to pose in order to find out which sentences the grammar can generate? List all sentences that this grammar can generate in the order Prolog will generate them. Make sure that you understand why Prolog generates them in this order.
sentence(A, B, C, D, E). -> generates all possibilities: The following are sample of possibilities:
A = a A = every A = a
B = criminal B = criminal B = criminal
C = eats C = eats C = eats
D = a D = a D = every
E = criminal E = big kahuna burger E = big kahuna burger
?- has(X,Y),not fruit(Y). 11- Here are six English words:
abalone, abandon, anagram, connect, elegant, enhance. They are to be arranged in a crossword puzzle like fashion in the given grid given below. The following knowledge base represents a lexicon containing these words. word(abalone,a,b,a,l,o,n,e).
word(abandon,a,b,a,n,d,o,n).
word(enhance,e,n,h,a,n,c,e).
word(anagram,a,n,a,g,r,a,m).
word(connect,c,o,n,n,e,c,t).
word(elegant,e,l,e,g,a,n,t). Write a predicate crosswd/6 that tells us how to fill the grid, i.e. the first three arguments should be the vertical words from left to right and the following three arguments the horizontal words from top to bottom.