是否可以在生产规则中引用事实?

Is it possible to reference facts in production rules?

假设我有一个看起来像这样的数据库:

regular_player('Xi').
regular_player('Doyle').

expert_player('Houdini').
expert_player('Gandhi').

% don't allow expert players to be paired together
start       --> good_pair.
good_pair   --> (player, expert) ;  (expert, player) ; (player, player).
player      --> ['Xi'] ; ['Doyle'].
expert      --> ['Houdini'] ; ['Gandhi'].

是否可以从生产规则中引用事实来消除我这里的重复。

您可以删除事实并改用 playerexpert 规则。

或者,定义

player --> [P], { regular_player(P) }.
expert --> [E], { expert_player(E) }.

至于哪种方法合适取决于应用程序。