[英]Expressing an equation in prolog
事实给出了合取和取反表。 写一个谓词:“ 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).
我不知道该怎么做,从哪里开始。
基本上,我使用给定的事实写出了一个析取谓词,并使用合取和析取来重写该方程。
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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.