最小的Herbrand模型

时间:2016-05-26 09:50:45

标签: prolog

鉴于以下prolog计划:

way(a,b,c).
way(a,d,e).
way(b,f,g).
way(f,h,i).
way(h,j,k).
way(l,j,m).
reachable(a, []).
reachable(X, [W|WS]) :- reachable(Y, WS), way(Y,X,W).

使用T-operator的最小herbrand模型是什么?

成为解释,然后:

I_0 = \emptyset
I_1 = T_P(I_0) = {a,b,c,d,e,f,g,h,I,j,k,l,m} // all constants
I_2 = T_P(I_1) = I_1 \cup {way(a,b,c), way(a,d,e), way(b,f,g), way(f,h,i), way(h,j,k), way(l,j,m), reachable(a, [])}

但现在我不知道如何继续。有人可以帮忙吗?

1 个答案:

答案 0 :(得分:1)

reachable/2是一个递归谓词。您需要做的是应用最后一条规则,直到申请后解释保持不变为止。

I_3 = T_P(I_2) = I_2 \cup {reachable(b, [c]),reachable(d, [e])}
I_4 = T_P(I_3) = I_3 \cup {reachable(f, [g,c])}
....
I_6 = T_P(I_5) = I_5 \cup {reachable(j, [k,i,g,c])}
I_7 = T_P(I_6) = I_6

如果存在可以访问的X且某些Y存在way(Y,X,W),则可以直接访问元素W。在应用规则后,将W添加到第二个参数中。

您现在可以显式枚举I_6中的所有元素以获取最小模型。