回想一下这个证明元循环
solve(true, true).
solve([], []).
solve([A|B],[ProofA|ProofB]) :-
solve(A,ProofA),
solve(B, ProofB).
solve(A, node(A,Proof)) :-
rule(A,B),
solve(B,Proof).
假设解释器的第三条规则发生变化,而解释器的其他规则不变,如下:
% Signature: solve(Exp, Proof)/2 solve(true, true).
solve([], []).
solve([A|B], [ProofA|ProofB]) :-
solve(B, ProofB), %3
solve(A, ProofA).
solve(A, node(A, Proof)) :-
rule(A, B),
solve(B, Proof).
考虑将在两个版本中为某些查询创建的证明树。只能在一个版本中实现任何变量替换吗?解释。任何真叶可以移动到最左边的无限分支的另一侧吗?解释。如果答案是肯定的,请在这两个问题中举例说明。这对证明有何影响?
请帮我 !发送