Prolog 如何将规则添加到此程序?

Prolog 如何将规则添加到此程序?,prolog,Prolog,假设在prolog中加载了以下程序: ?- listing. fast(ann). slow(bob). slow(norm). true. ?- 如何将以下规则添加到此程序 faster(X,Y) :- fast(X), slow(Y). 有人能帮我写吗?有两种选择 将规则放在一个文件中,比如说faster.pl,然后用[faster]加载该文件。 发出[用户]。提示,然后键入规则并发出EOF(SWI Prolog中的Ctrl+D) Prolog是动态的:使用/1和retract/1可以完

假设在prolog中加载了以下程序:

?- listing.
fast(ann).
slow(bob).
slow(norm).
true.
?-
如何将以下规则添加到此程序

faster(X,Y) :- fast(X), slow(Y).
有人能帮我写吗?

有两种选择

  • 将规则放在一个文件中,比如说
    faster.pl
    ,然后用
    [faster]加载该文件。
  • 发出
    [用户]。
    提示,然后键入规则并发出EOF(SWI Prolog中的Ctrl+D)
  • Prolog是动态的:使用/1和retract/1可以完成对规则库的修改。然后,再加上@larsman answer,你可以写

    ?- assertz((faster(X,Y) :- fast(X), slow(Y))).
    
    在那之后,从你的事实基础上:

    ?- faster(X,Y).
    X = ann,
    Y = bob ;
    X = ann,
    Y = norm.