home *** CD-ROM | disk | FTP | other *** search
/ Programmer 7500 / MAX_PROGRAMMERS.iso / CLIPPER / MISC / MURDER2.ZIP / MURDER.PRO < prev   
Encoding:
Prolog Source  |  1986-05-29  |  2.0 KB  |  92 lines

  1. domains
  2.  
  3.     name,sex,occupation,reason,object = symbol.
  4.     age = integer.
  5.  
  6. predicates
  7.  
  8.     person(name,age,sex,occupation).
  9.     had_affair(name,name).
  10.     motive(reason).
  11.     killed_with(name,object).
  12.     smeared_in(name,object).
  13.     owns(name,object).
  14.     operates_identically(object,object).
  15.     owns_probably(name,object).
  16.     suspect(name)    
  17.  
  18. goal
  19.     
  20.     suspect(X) and owns(X,Object) and
  21.     operates_identically(Object,club),
  22.     makewindow(1,7,7,"Murder Solution",5,25,5,30),
  23.     cursor(2,5),
  24.     write("The killer is ",X).
  25.  
  26. clauses
  27.     person(allan,25,m,football_player).
  28.     person(allan,25,m,butcher).
  29.     person(barbara,22,f,hairdresser).
  30.     person(bert,55,m,carpenter).
  31.     person(john,25,m,pickpocket).
  32.     
  33.     had_affair(barbara,john).
  34.     had_affair(barbara,bert).
  35.     had_affair(susan,john).
  36.     
  37.     killed_with(susan,club).
  38.     
  39.     motive(money).
  40.     motive(jealousy).
  41.     
  42.     smeared_in(catherine,blood).
  43.     smeared_in(allan,mud).
  44.     
  45.     owns(bert,wooden_leg).
  46.     owns(john,pistol).
  47.     
  48. /* background knowledge */
  49.  
  50.     operates_identically(wooden_leg,club).
  51.     operates_identically(bar,club).
  52.     operates_identically(pair_of_scissors,knife).
  53.     operates_identically(football_boot,club).
  54.     
  55.     owns_probably(X,football_boot) if 
  56.         person(X,_,_,football_player).    
  57.  
  58.     owns_probably(X,pair_of_scissors) if
  59.         person(X,_,_,_).
  60.             
  61.     owns_probably(X,Object) if
  62.         owns(X,Object).
  63.         
  64. /* suspect all people who own a weapon with which Susan 
  65.    could possibly have been killed */
  66.        
  67.        suspect(X) if
  68.            killed_with(susan,Weapon) and
  69.            operates_identically(Object,Weapon) and
  70.            owns_probably(X,Object).
  71.            
  72. /* suspect men that have had an affair with Susan */
  73.  
  74.     suspect(X) if
  75.         motive(jealousy) and
  76.         person(X,_,m,_) and
  77.         had_affair(susan,X).
  78.         
  79. /* suspect women who have had an affair with a man Susan knows */
  80.  
  81.     suspect(X) if
  82.         motive(jealousy) and
  83.         person(X,_,f,_) and
  84.         had_affair(X,Man) and
  85.         had_affair(susan,Man).
  86.         
  87. /* suspect pickpockets whose motive could be money */
  88.  
  89.     suspect(X) if
  90.         motive(money) and
  91.         person(X,_,_,pickpocket).
  92.