Prolog-节点、叶、对称

Prolog-节点、叶、对称,prolog,Prolog,我一直在试图理解以下查询在Prolog中是如何计算的: reflection(leaf,leaf). reflection(node(S1,S2),node(T2,T1)) :- reflection(S1,T1), reflection(S2,T2). symmetric(T) :- reflection(T,T). | ?- symmetric(X). X = leaf X = node(leaf,leaf) X = node(node(leaf,leaf),node(l

我一直在试图理解以下查询在Prolog中是如何计算的:

reflection(leaf,leaf).
reflection(node(S1,S2),node(T2,T1)) :-
   reflection(S1,T1),
   reflection(S2,T2).

symmetric(T) :-
  reflection(T,T).

| ?- symmetric(X).
X = leaf
X = node(leaf,leaf)
X = node(node(leaf,leaf),node(leaf,leaf))
X = node(node(leaf,node(leaf,leaf)),node(node(leaf,leaf),leaf))
X = ...

我把X实例化为leaf,然后实例化为node(leaf,leaf),但我不能理解后者。请解释一下,谢谢

Prolog尝试了所有的可能性,从
symmetric(X)
开始,它将生成
反射的所有组合,并使用相同的节点作为参数。尝试通过在每一步手工绘制一棵可能选择的树来完成计算的某些步骤。