:- dynamic somepig/1.
runtest :-
assert(somepig(6)), % Edit : just to be more precise, somepig is dynamic
somepig(X),
writeln(X+3).
このコードは最終的に「6+3」を出力します。X が算術演算を実行できない型を取っているか、「somepig」を割り当てているときに「6」が自動的に文字列と見なされるか、そうでないかのいずれかだと思います。
とにかく、X を整数またはそれ以外に明示的に指定できるものはありますか? このようなものでしょうか?
runtest :-
somepig(X is int)
writeln(X+3). % outputs 9