Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- fact(Fact):-
- clause(Fact, true).
- kind_of(X, Y):-
- is_a(X, Thing),
- kind_of(Thing, Y).
- kind_of(X, Y):-
- \+ kind(X),
- fact(kind_of(X, Z)),
- kind_of(Z, Y).
- can_be(X, Y):-
- never(X, Y),
- !, fail.
- can_be(X, Y):-
- is_a(X, Thing),
- can_be(Thing, Y).
- can_be(X, Y):-
- can_be(X, Y, _).
- can_be(X, Y, []):-
- fact(can_be(X, Y)).
- can_be(X, Y, [Op|Ops]):-
- findall(Kind, kind_of(X, Kind), Kinds),
- member(K, [X|Kinds]),
- fact(can_be(K, [Op|Ops])),
- member(Y, [Op|Ops]),
- \+ never(X, Y),
- \+ (member(Always, [Op|Ops]), always(X, Always), Always \= Y).
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement