我想编写一个可以进行演绎推理的程序:
物业:
1.所有的猫都是鸟。
2.每只鸟都能飞。
结论: 每只猫都可以飞。 (虽然这是胡说八道)
(这只是一个例子。实际上它会比这更复杂)
我希望的程序将能够接收用户输入的结论并检查它是否在已经存储在程序内的给定场所下是有效的,并且如果可能的话,能够建议哪些结论是有效的。
所以,我的问题是,有没有可以以这种方式为我工作的图书馆?
答案 0 :(得分:1)
你没有提到一种语言,所以我不知道你真正想要的是一个图书馆。您所描述的内容听起来像自动定理证明,因此您可能会很好地调查该主题。一个自动定理证明语言 - 或交互式证明助手,或任何你喜欢的 - 是Coq。我没有使用它,但Wikipedia页面提供了丰富的信息。我试图把一个简单的证据放在一起,但坦率地说它有点复杂。
另一种选择是逻辑编程。例如,PROLOG会让你做类似的事情:
canfly(X) :- isbird(X).
isbird(X) :- iscat(X).
iscat(tom).
?- canfly(tom).
Yes