从 KB [Prolog] 添加两个 int 变量

Adding two int variables from a KB [Prolog]

我是 Prolog 新手,目前正在同时学习计算逻辑,所以请原谅我在这个主题上缺乏连贯性。

我正在尝试提供一个条件,允许用户将 1、2 和 3 中的任意两个相加来求和。我想让查询接受加法的两个输入以及保存计算总和的第三个变量:

?- sum(1, 2, X)
X = 3.

在这种情况下,我不确定如何以包含此查询的方式定义知识库。我可以避免为每个数字定义单独的谓词吗?

谢谢

allowed_input(1).    % your
allowed_input(2).    %    knowledge
allowed_input(3).    %        base

restricted_sum(A,B,C):-
   allowed_input(A),      % test user input's
   allowed_input(B),      %    validity
   C is A+B.              % test the result

(根据 OP 的说明 )。测试:

2 ?- restricted_sum(1,2,3).
true.

3 ?- restricted_sum(3,2,5).
true.

4 ?- restricted_sum(3,2,15).
false.

5 ?- restricted_sum(3,4,7).
false.

你问:

Can I avoid defining separate predicates for each number?

是的,您可以改为定义

allowed_input(A):- A < 4, A > 0.