external指令は、外部のパッケージに述語があることを宣言します。
この宣言の結果、コンパイラは、述語の定義がないとのメッセージを出さず、 実行時には、外部述語がはじめてアクセスされたときに、動的に そのパッケージをロードします。
述語が多くある場合は、package指令を使ってください。
:- external(bb,[b/1,b/2]). a(Z) :- b(X), b(X,Z).
a(Z) :- b(X), b(X,Z).