事实上给出了连词和否定表。写一个谓词:“解决AX ^ 2 + BX + C = 0是X”。所有值都是布尔值,1 - 真,0 - 假。 事实表是这样的:
c(true, true, true).
c(true, false, false).
c(false, true, false).
c(false, false, false).
n(true, false).
n(false, true).
我不知道该做什么以及从哪里开始。
答案 0 :(得分:0)
基本上我使用给定的事实编写了一个关于析取的谓词,并使用连接和析取重写了等式。
conjunction(true, true, true).
conjunction(true, false, false).
conjunction(false, true, false).
conjunction(false, false, false).
negation(true, false).
negation(false, true).
disjunction(Bool, Bool2, Result):-negation(Bool, NBool),
negation(Bool2, NBool2),
conjunction(NBool, NBool2, Conj),
negation(Conj, Result).
%X^2 is X*X in this case X^X whis is always equal to X.
equation(A,B,C,X):-conjunction(A, X, AtimesX2), %A*(X*X)
conjunction(B, X, BtimesX), %B*X
disjunction(AtimesX2, BtimesX, AX2plusBX), %A*X^2+B*X
disjunction(AX2plusBX, C, Res), %A*X^2+B*X+C
Res = false. %Checking if
%A*X^2+B*X+C is equal to 0