Advertisement
Guest User

Untitled

a guest
Dec 21st, 2014
140
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.56 KB | None | 0 0
  1. fact(Fact):-
  2. clause(Fact, true).
  3.  
  4. kind_of(X, Y):-
  5. is_a(X, Thing),
  6. kind_of(Thing, Y).
  7.  
  8. kind_of(X, Y):-
  9. \+ kind(X),
  10. fact(kind_of(X, Z)),
  11. kind_of(Z, Y).
  12.  
  13. can_be(X, Y):-
  14. never(X, Y),
  15. !, fail.
  16.  
  17. can_be(X, Y):-
  18. is_a(X, Thing),
  19. can_be(Thing, Y).
  20.  
  21. can_be(X, Y):-
  22. can_be(X, Y, _).
  23.  
  24. can_be(X, Y, []):-
  25. fact(can_be(X, Y)).
  26.  
  27. can_be(X, Y, [Op|Ops]):-
  28. findall(Kind, kind_of(X, Kind), Kinds),
  29. member(K, [X|Kinds]),
  30. fact(can_be(K, [Op|Ops])),
  31. member(Y, [Op|Ops]),
  32. \+ never(X, Y),
  33. \+ (member(Always, [Op|Ops]), always(X, Always), Always \= Y).
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement