我想编写一个能够进行如下演绎推理的程序:
前提:
1. 所有的猫都是鸟。
2. 每只鸟都会飞。
结论:每只猫都会飞。(尽管这很荒谬)
(这只是一个例子。实际上会比这更复杂)
我希望的程序能够接收用户输入的结论,并检查在程序中已存储的前提下该结论是否有效,如果可能,还能够建议哪些结论是有效的。
所以,我的疑问是,是否有可以帮助我实现这一功能的库?
回答:
你没有提到具体的编程语言,所以我不知道你是否真正需要的是一个库。你描述的听起来像是自动定理证明,因此你可以深入研究这个主题。一种自动定理证明语言 – 或者交互式证明助手,或者任何你喜欢的称呼 – 是Coq。我没有使用过它,但维基百科页面提供了有用的信息。我尝试过组装一个简单的证明,但坦白说,这有点复杂。
另一种选择是逻辑编程。例如,PROLOG可以让你做类似的事情:
canfly(X) :- isbird(X).isbird(X) :- iscat(X).iscat(tom).?- canfly(tom).Yes