新智元报道
新智元报道
陶哲轩:AI攻克数学猜想第一步
你可能好奇,为什么不直接让AI去解决数学问题,非要搞什么「形式化」?这里有个关键点:数学猜想通常是用自然语言描述,对人来说很直观,但对计算机来说却像「天书」。陶哲轩表示,「提出一个数学猜想容易,证明它却难如登天」。
如果直接让AI去处理这些模糊的表述,它很可能只是在技术细节上「钻空子」。
数学猜想库上线,破解世纪难题钥匙
GitHub项目主页中介绍,形式化猜想——一份使用mathlib在Lean中形式化表述的猜想集合。目标尽管包含证明的形式化定理库日益增长,但仅陈述形式化的开放猜想仍十分匮乏。填补这一空白将具有多重意义:• 为自动定理证明器和形式化工具提供优质基准测试集• 通过形式化澄清猜想的精确含义• 通过突显缺失定义,促进mathlib的扩展形式化准确性 无证明的数学陈述形式化具有固有挑战性,原始猜想的微妙之处可能在形式化表述中失真。为缓解该问题,DeepMind将采取两项措施:1 对贡献内容进行严格人工审核2 定期使用AlphaProof识别潜在错误形式化如何参与贡献
DeepMind在此诚邀各方大佬前来贡献,每个人可添加最喜爱的猜想(或创建issue描述)。贡献方式 本仓库接受多种形式的贡献:1. 新增问题形式化不同于千禧难题、斯梅尔问题列表等传统猜想集,本仓库鼓励多元来源的贡献,包括但不限于:· 数学教材· 研究论文(含arXiv预印本)· MathOverflow提问· 专题问题集(如埃尔德什问题、维基百科未解决问题列表、苏格兰咖啡馆问题集等)2. 提交形式化需求,创建issue时请提供:· 可靠参考文献链接· 精确的非形式化猜想陈述3. 完善现有内容· 补充参考文献指针· 增加AMS数学主题分类标签4. 修正错误形式化提交PR修复错误或创建issue指正问题用法、结构与特性
这是一个基于lake管理、依赖mathlib的Lean 4项目。使用前需安装:1. elan + lake + Lean2.(可选)VSCode及相关插件初始化命令:
lake exe cache get
lake build
Util/
:存放工具组件• 分类属性标签系统• answer()
elaborator• 代码检查器· ForMathlib/
:可向上游提交至mathlib的代码(遵循mathlib目录结构)核心特性 1. 分类属性标签用于标记问题陈述的类别,当前支持:· research open
:学界未解决的数学问题· research solved
:学界已公认解决的问题(不要求形式化证明)· graduate
:研究生级别问题· undergraduate
:本科级别问题· high_school
:中学级别问题· API
:围绕新定义的基础理论构建· test
:用于测试定义的「单元测试」使用示例:@[category research open]
theorem foo : Transcendental ℚ (rexp 1 + π) := by sorry
@[category research solved]
theorem bar : FermatLastTheorem := by sorry
@[AMS 11] -- "数论"分类
theorem flt : FermatLastTheorem := by sorry
#AMS
命令查看所有可选值• VSCode中悬停标签可显示对应学科• 支持多标签组合:@[AMS foo bar]
3. answer()
elaborator用于需用户提供答案的开放问题(如Hadwiger-Nelson问题):@[category research open]
theorem HadwigerNelsonProblem :
IsLeast {n : ℕ | ExistsColoring n} answer(sorry) := by sorry
· 在
answer()
中提供项及证明不意味问题已解决· 答案的数学意义评估不在本仓库范畴内风格规范1. 文件组织· 每个问题独立成文件(变体与特例可合并)· 维基百科来源的问题应置于FormalConjectures/Wikipedia/
2. 定义与API· 允许自定义定义(需有助于阐明问题)· 鼓励为定义提供基础API以验证行为3. 陈述格式· 基准问题使用theorem
声明· 测试用例优先使用example
· 必须包含至少一个AMS标签5. 问题转译· 英语疑问句形式:/-- 原文:"Does P hold ?" -/
theorem myConjecture : P ↔ answer(sorry) := by sorry
answer(True/False)
· 非疑问句形式:/-- 原文:"P holds" -/
theorem myConjecture : P := by sorry
¬ P
版本· 跟踪mathlib月度发布版本(而非master分支)· 若问题需mathlib未收录的定义,可暂存于ForMathlib/
目录文章原文