【发布时间】:2015-10-10 17:18:12
【问题描述】:
我想在 LogicBlox 中对“隐含”逻辑进行编码。 我有一个谓词:
Number(n),hasNumberName(n:i)->int(i).
isTrue[n] = i -> Number(n), boolean(i).
我在那个谓词中添加了一些数据:
+Number(1).
现在,我想按照这个逻辑规则创建数字 2 和数字 3,以及这两个数字的真值:
如果 isTrue[1] 为真,则 isTrue[2] 为真或 isTrue[3] 为真。 (isTrue[1] 暗示 (isTrue[2] 或 isTrue[3]))
所以我创建了一个谓词:
implies[n1,n2,n3] = e -> Number(n1), Number(n2), Number(n3),boolean(e).
然后我尝试创建这样的规则:
isTrue[n2] = true;isTrue[n3] = true <- isTrue[n1] = true,implies[n1,n2,n3] = true.
但 LogicBlox 报告:“错误:规则头部不支持析取”
那么我如何在 LogicBlox 中编码这意味着逻辑?
【问题讨论】:
标签: encoding prolog logic datalog logicblox