在Prolog中创建含义,其中A暗示B,B暗示A,通过通用规则


没有火就没有烟

,没有烟就没有火。

使用Prolog程序确定上述陈述的结论和条件。在答案中,结论一定是,有火就有烟,有烟就一定有火。

我该怎么做?

请解释答案。

两者都是可能的,因为有人可能会争辩说,没有火就没有烟,没有烟就没有火。

但是,在没有关于火和烟雾的先验知识的情况下,您只能得出结论,只有发生火灾才能有烟雾。所以烟是条件,因为">如果你看到烟雾(条件(",你"知道有火(结论("。但只给出一句话,如果你知道有火,你就不能确定有烟。

我假设这个问题是关于如何创建合理的规则,根据已知有关某些原子的其他事实,暗示事实是正确的。如果位置"a"正在吸烟,则位置"a"必须着火,因此"a"有火。

smoke(a).
smoke(b).
fire(c).
fire(X) :- smoke(X).
smoke(X) :- fire(X).
?- fire(a).
true
?- fire(b).
true
?- fire(c).
true
?- smoke(c).
true

如果您想专门检查是否有东西着火或冒烟:

isFire(X) :- fire(X);smoke(X).
isSmoke(X) :- smoke(X);fire(X).

例:

?- isFire(asbestos), smoke(asbestos).
false <- the first statement is never true so the second never gets called

;符号表示 OR,因此如果火或烟对于给定事实为真,它将返回 true。

我假设你想为以下对象编写谓词规则:如果有烟,那就罚款。

答:气味(烟,如果(^反应(火(

相关内容

  • 没有找到相关文章

最新更新