【发布时间】:2018-04-16 19:08:51
【问题描述】:
我需要创建一个规则来搜索与 my_rule 匹配的事实。这些事实将用于改变知识库。 (my_rule (Conclusion, Premise))。
我有这个知识库开始:
:- dynamic( is/2 ).
is( m1, house ).
is( m1, thing ).
is( m2, house ).
is( m2, thing ).
is( m3, niche ).
is( m3, house ).
is( m3, thing ).
is( m4, car ).
is( m4, mobile ).
is( m4, house ).
is( m4, thing ).
my_rule( is( X, thing ), is( X, house ) ).
my_rule( is( X, house ), is( X, niche ) ).
找到规则后,代码将搜索数据库中是否存在结论及其前提。
我不知道如何做到这一点,是的,这是一个家庭作业。 我只想有人指出从哪里开始。
谢谢。
【问题讨论】:
-
你到底想做什么?您是否想根据是否可以用
my_rule/2推断出is/2事实的数量(使用retract/1)?将您的事实输入 Prolog 并使用查询my_rule(Fact1, Fact2), call(Fact1), call(Fact2)。如果my_rule建立的两个事实都在您的数据库中,则此操作成功。因此,如果它确实成功了,您可以撤回Fact1或Fact2,因为其中一个可以从另一个推导出来。 -
@lurker 是的,这就是练习的目的。谢谢你的回答。
标签: prolog prolog-directive-dynamic