如何實現乙個簡單的定理證明器?

時間 2021-05-31 04:44:22

1樓:三水製糖廠長

如果想從C語言開始完全重新開始編寫定理證明器,那麼就要先了解自動定理證明的過程。自動定理證明的方法有很多,一種常用的方法是從結論(Conclusion)到假設(Premise)的反向證明,被稱為Resolution。相比於從假設到結論的正向證明,反向證明所需要的搜尋空間比較小。

在這其中還涉及到模式匹配技術,被稱為Unification,它可以被用來操作各種變數。還有一種技術是Rewriting,在處理等價表示式的時候經常用到。編寫完這些基本功能以後,再編寫相應的公理,就實現了乙個(簡單的)定理證明器。

如果是想在已有的邏輯語言或者定理證明核心上實現乙個可以證明某些特定定理的證明器,那麼就需要編寫公理(Axiom)。對於一階邏輯來說,可以使用Prolog,以謂詞邏輯的形式編寫公理。然後給定乙個目標(Goal),也就是你想要證明的結論,讓它自動求解。

此外,其實Prolog也可以處理高階邏輯,但比較繁瑣。更強大的高階邏輯定理證明核心是Isabelle/HOL,它直接就支援高階邏輯,但是定義公理的過程比Prolog繁瑣。在Isabelle中,表示式是通過函式定義的,而且是有Type的(具體可以參考函式式程式設計有關知識);而在Prolog中,表示式是通過謂詞定義的,而且沒有Type。

所以在Isabelle中,要先對各種表示式進行定義,才能開始編寫需要證明的定理。在Isabelle中,定理的形式是 Axiom ==> Goal,或者說是 Premise ==> Conslusion,規則被寫在左手邊,而右邊是目標。經歷這些繁瑣的編寫以後,就可以使用Isabelle的各種自帶強力自動定理證明演算法,例如傳說中的雷神之鎚(sledgehammer),自動證明剛才編寫的這些定理。

2樓:Akim Wu

代數方面不知道,幾何的話是有的。直接安利一下吧,中科院做的乙個很神奇的幾何定理自動證明軟體,geometry expert ,知道的人很少。可以自動證明所有初等幾何定理,也可以解決各種幾何證明題。

其中用到了各種演算法,比如吳氏方法等。我第一次見到這個軟體實際演示的時候實在是太震驚了……

請戳鏈結http://www.

mmrc.iss.ac.cn/gex/

題主,這是個大坑。

3樓:rainoftime

很多演算法的核心原理是(。。

先把公式取反,轉到CNF(Conjunctive normal form),或者限制輸入為CNF,

1. 不斷用以下Resolution規則生成新clause直到生成empty clause(矛盾),比如。以上過程準確來說並非演算法,只是一種原則(resolution refutation),不一定好實現...

2. SAT求解的DPLL演算法..

3. Stallmarck演算法(不需要CNF)

如何實現乙個簡單的推薦系統

遇見更好的自己 問題應該是,如何把演算法進行編碼吧!第一,檢視你說的演算法在python中被打包模組,如果有直接研究這個模組,並且呼叫即可。第二,如果沒有,那就要自己寫,可以參考網上寫的,如果沒有,研究演算法框架,和資料流。根據資料流自己寫乙個。本質就是協同過濾演算法,網上有原始碼應該 最簡單的,比...

如何實現乙個簡單的服務發現框架?

任弘迪 zk的ephemeral node,consul的service,etcd的session都行呀。服務端啟動時候註冊,客戶端監聽變更。 zookeeper是乙個強一致 不嚴格 的分布式資料庫,由多個節點共同組成乙個分布式集群,掛掉任意乙個節點,資料庫仍然可以正常工作,客戶端無感知故障切換。客...

如何實現乙個簡單的家庭雲儲存(NAS)系統?

貝銳蒲公英異地組網 很多人都提到用黑群暉之類的方案自建NAS,實際上利用路由器USB介面外接硬碟也可以輕鬆滿足題主的需求,但是一般來說遠端訪問,外出隨時訪問資料會有些麻煩。儘管遠端訪問路由器硬碟的方法可以找到很多,但大多都需要公網IP,同時操作過程也非常複雜。要知道,如今不少網路運營商並不會主動分配...