home *** CD-ROM | disk | FTP | other *** search
Prolog Source | 1986-05-29 | 2.0 KB | 92 lines |
- domains
-
- name,sex,occupation,reason,object = symbol.
- age = integer.
-
- predicates
-
- person(name,age,sex,occupation).
- had_affair(name,name).
- motive(reason).
- killed_with(name,object).
- smeared_in(name,object).
- owns(name,object).
- operates_identically(object,object).
- owns_probably(name,object).
- suspect(name)
-
- goal
-
- suspect(X) and owns(X,Object) and
- operates_identically(Object,club),
- makewindow(1,7,7,"Murder Solution",5,25,5,30),
- cursor(2,5),
- write("The killer is ",X).
-
- clauses
- person(allan,25,m,football_player).
- person(allan,25,m,butcher).
- person(barbara,22,f,hairdresser).
- person(bert,55,m,carpenter).
- person(john,25,m,pickpocket).
-
- had_affair(barbara,john).
- had_affair(barbara,bert).
- had_affair(susan,john).
-
- killed_with(susan,club).
-
- motive(money).
- motive(jealousy).
-
- smeared_in(catherine,blood).
- smeared_in(allan,mud).
-
- owns(bert,wooden_leg).
- owns(john,pistol).
-
- /* background knowledge */
-
- operates_identically(wooden_leg,club).
- operates_identically(bar,club).
- operates_identically(pair_of_scissors,knife).
- operates_identically(football_boot,club).
-
- owns_probably(X,football_boot) if
- person(X,_,_,football_player).
-
- owns_probably(X,pair_of_scissors) if
- person(X,_,_,_).
-
- owns_probably(X,Object) if
- owns(X,Object).
-
- /* suspect all people who own a weapon with which Susan
- could possibly have been killed */
-
- suspect(X) if
- killed_with(susan,Weapon) and
- operates_identically(Object,Weapon) and
- owns_probably(X,Object).
-
- /* suspect men that have had an affair with Susan */
-
- suspect(X) if
- motive(jealousy) and
- person(X,_,m,_) and
- had_affair(susan,X).
-
- /* suspect women who have had an affair with a man Susan knows */
-
- suspect(X) if
- motive(jealousy) and
- person(X,_,f,_) and
- had_affair(X,Man) and
- had_affair(susan,Man).
-
- /* suspect pickpockets whose motive could be money */
-
- suspect(X) if
- motive(money) and
- person(X,_,_,pickpocket).
-