1956年IPL-I版逻辑理论家定理证明器的重现
摘要
重现第一个公开发布版本(1956年,IPL-I)的逻辑理论家定理证明器,这是Newell、Shaw和Simon开创性的人工智能程序,附带可运行的Python代码和文档。
查看缓存全文
缓存时间: 2026/05/16 21:42
dmoews/logic-theorist
来源:https://github.com/dmoews/logic-theorist
本代码的目标是实现首个公开版本的逻辑理论机(Logic Theory Machine,亦称 Logic Theorist)。
逻辑理论机
逻辑理论机是由 Allen Newell、J. C. Shaw 和 Herbert A. Simon 在启发式问题解决方法研究过程中编写的程序。它旨在利用《数学原理》[1]中的逻辑系统证明命题逻辑定理。Newell 和 Simon 于 1955 年末左右开始编写该程序。他们最初通过手工模拟程序,一度借助 Simon 的妻子、孩子以及一些研究生协助进行。[3]程序最初用一种名为 IPL-I 的伪代码编写,但该伪代码从未实际实现。[2][3]首个在计算机上运行的版本采用 IPL-II 编写,并在 JOHNNIAC 计算机上运行,于 1956 年 8 月产生第一个证明。[1][2][3][4]随后由 Fred Tonge 转换为 IPL-V,并由 Einar Stefferud 进一步开发。[5]
逻辑理论机首个公开版本
一个早期版本的逻辑理论机源代码于 1956 年发表在文献 [6] 和 [7] 中;该代码采用 IPL-I 编写,这是一种面向抽象机器的类汇编语言。两份参考文献中的代码几乎完全相同。遗憾的是,代码中存在一些拼写错误和问题,其印刷形式无法直接运行。我已尝试按需修复这些问题,具体说明见源代码文件。
逻辑系统
《数学原理》[8] 中的命题逻辑系统通过一元否定(~)和二元或(\/)从命题变量构建公式。蕴涵(->)定义为 ( p -> q ) 等于 ( ~ p \/ q ),这两个表达式视为可互换(*1.01)。五个公理如下:
( ( p \/ p ) -> p )(*1.2)( q -> ( p \/ q ) )(*1.3)( ( p \/ q ) -> ( q \/ p ) )(*1.4)( ( p \/ ( q \/ r ) ) -> ( q \/ ( p \/ r ) ) )(*1.5)( ( q -> r ) -> ( ( p \/ q ) -> ( p \/ r ) ) )(*1.6)
推理规则包括分离规则(*1.11),即从p和( p -> q )推断出q;以及将表达式代入已知公理或定理的命题变量中(尽管在《数学原理》中,代入并未被明确列为演绎规则,但在 *2 开头被广泛使用并承认是可接受的)。除代入和分离外,逻辑理论机还使用了链式证明方法,即从( p -> q )和( q -> r )推断出( p -> r )。这可由《数学原理》中的定理 *2.05 或 *2.06 证明。
关于代码
此处可直接运行的 Python 文件包括 logic.py、run_logic.py 和 analyze_output.py。使用 --help 选项调用时,它们将打印基本用法信息。
logic.py 是 IPL-I 抽象机器的解释器。
analyze_output.py 旨在从 logic.py 打印的输出中提取找到的证明(如果有的话),因为提供的 IPL-I 源代码中没有相关的打印机制。建议与 logic.py 的 --info 选项配合使用。
run_logic.py 旨在模仿文献 [1],在《数学原理》*2 中的每个定理上依次运行程序,允许在证明每个定理时使用所有公理以及 *2 中之前的全部定理(无论是否成功证明它们)。
文件列表
README.md— 本文件- IPL-I 源代码:
logic-routines.txt— 逻辑理论机的 IPL-I 源代码,已修订为可运行版本orig-logic-routines.txt— 文献 [7] 中印刷的原始 IPL-I 源代码,仅包含标签、操作码和操作数transcription.txt— 文献 [7] 中所有源代码的转录,包括注释
- 《数学原理》:
pm-axioms.txt— 《数学原理》*1 中的五个命题逻辑公理pm-theorems.txt— 《数学原理》*2 中的定理
- IPL-I 解释器:
analyze_output.py— 提取并验证解释器所找到的证明的程序grammar.py— 包含 CFG 例程的模块logic.py— IPL-I 抽象机器的解释器run_logic.py— 驱动程序simple_parser.py— 包含 CFG 解析器的模块utils.py— 包含语法和代入工具例程的模块
- 测试:
test.sh,test.py— 测试框架analyze_output.test,analyze_output.test-input,analyze_output.usage—analyze_output.py的测试logic.test,test-source.txt,test-source-2.txt,test-source-3.txt,test-theorems-1.txt,test-theorems-2.txt,test-theorems-3.txt,logic.usage—logic.py的测试run_logic.test,say-hi.py,run_logic.usage—run_logic.py的测试verify.py— 验证orig-logic-routines.txt中的源代码与transcription.txt的一致性
参考文献
关于逻辑理论机/逻辑理论家的更多信息,请参见 CMU 数字馆藏档案,其中包含 Newell 和 Simon 的专题收藏。见 URL ,特别是 和 。
[1]: Empirical Explorations of the Logic Theory Machine: a Case Study in Heuristic, A. Newell, J. C. Shaw, H. A. Simon, IRE-AIEE-ACM ’57 (Western): Papers presented at the February 26-28, 1957, Western joint computer conference: Techniques for reliability, Feb. 1957, pp. 218-230, DOI: 10.1145/1455567.1455605 (https://dx.doi.org/10.1145/1455567.1455605).
[2]: Introduction to the First Edition in: Information Processing Language-V Manual, second ed., Allen Newell et al., RAND Corporation, pub. Englewood Cliffs, NJ : Prentice-Hall, Inc., 1964, .
[3] Chapter 13, Models of My Life, Herbert A. Simon, Cambridge, Mass., etc.: MIT Press, 1996 (first pub. 1991, Basic Books.)
[4] Programming the Logic Theory Machine, A. Newell, J. C. Shaw, IRE-AIEE-ACM ’57 (Western): Papers presented at the February 26-28, 1957, Western joint computer conference: Techniques for reliability, Feb. 1957, pp. 230-240, DOI: 10.1145/1455567.1455606 (https://dx.doi.org/10.1145/1455567.1455606).
[5] Introduction in: The Logic Theory Machine: A Model Heuristic Program, Einar Stefferud, RAND Research Memorandum RM-3731-CC, June 1963, .
[6] The Logic Theory Machine–A Complex Information Processing System, A. Newell, H. Simon, IRE Transactions on Information Theory 2, #3 (September 1956), pp. 61-79, DOI: 10.1109/TIT.1956.1056797 (https://dx.doi.org/10.1109/TIT.1956.1056797).
[7] The Logic Theory Machine: A Complex Information Processing System, Allen Newell, Herbert A. Simon, RAND paper P-868, July 12, 1956, Revised, . (与 [6] 极为相似.)
[8] *1 and *2, Principia Mathematica, A. N. Whitehead and B. Russell, Volume I, Cambridge: Cambridge University Press, 1910. 可在 HathiTrust 获取;参见 .
相似文章
@logic_int: 新消息:Aleph Prover 已形式化 OpenAI 对保罗·埃尔德什平面单位问题的反证。我们正在发布形式化…
Aleph Prover 已在 Lean 4 中形式化了 OpenAI 对保罗·埃尔德什平面单位问题的反证,并将其作为开源发布以供独立验证,展示了人工智能在加速数学研究中的作用,同时提供了可验证的证明数据。
OpenProver: 基于 Lean 4 的智能体和交互式定理证明
OpenProver 是一个开源系统,利用 Lean 4 进行 LLM 驱动的自动定理证明,采用规划器-工作器-验证器架构,并支持自主和交互两种模式。它实现了数学证明搜索中的可重复评估和人机协同。
基于 Lean 的过程验证强化学习用于定理证明
本文提出了过程验证强化学习,利用 Lean 证明助手作为过程预言机,在训练期间提供细粒度的策略级反馈,从而提升定理证明性能。
计算机科学逻辑的理论级自动形式化
引入LCS-Bench,这是一个基于计算机科学逻辑的理论级自动形式化基准,覆盖327个教科书条目、4,076个Lean声明。对14个模型的评估表明该基准具有挑战性,最先进模型在自动形式化任务上仅达到20.1%。
Theoria: 非正式推理状态下的重写可接受性验证
Theoria 是一种验证架构,将 AI 解决方案重写为可审计的状态转换,在 HLE 问题上实现了高精度,并能检测隐藏前提、虚假引用等细微错误。