Formalia
首页 › 使用说明

使用说明

一分钟看懂

所以一个猜想页就像维基百科的消歧义页:上面列出这个猜想的所有已知写法。哪一种写法忠实于原猜想,Formalia 不下结论,留给数学家判断。

怎样读一个表述页

  1. 基本信息:编号、提交者、日期、来源、许可,以及检查时用的 Lean 和 Mathlib 版本。
  2. Lean 代码:登记的原文。冒号后面、:= 后面那部分就是命题本身。
  3. 检查器报告:机器自动检查的结果。能否编译、有没有 sorry(未完成的证明)、有没有 native_decide(绕过内核的计算),用到了哪些公理。只用 propext、Classical.choice、Quot.sound 三条标准公理才算干净。
  4. 定义链:表述里直接用到的每个名字来自哪里。绝大多数来自 Mathlib;如果表述自己定义了新概念,会单独标出“自定义定义”,这是最需要人仔细看的地方。
  5. AI 导读:AI 对每个定义的解释和逐句翻译,可以在下面直接向它提问。它可能出错,只解释代码,不评价表述好坏。
  6. 非正式复述:提交者自己对代码的理解。
  7. 声称的证明:谁、何时、在哪里声称证明了这个编号。
  8. 编辑历史:这一条被谁改过什么。

不会 Lean 也能做的事

登记一条新表述

  1. 在猜想页点“+ 新增一条表述”,或在首页点“+ 登记一条表述”(也可以顺便登记一个新猜想)。
  2. 在 import 里每行写一个 Mathlib 模块名,例如 Mathlib.Data.Nat.Prime.Defs。
  3. 在 命题 里只写命题本身,例如:∀ n : ℕ, 2 < n → Even n → ∃ p q : ℕ, Nat.Prime p ∧ Nat.Prime q ∧ n = p + q。系统会自动包成 def S<编号> : Prop := …。
  4. 需要自己定义概念时,写在 辅助定义 里。
  5. 选来源类型和许可。改编别人的作品要填来源链接,并选与原作兼容的许可。
  6. 提交后会跳到状态页,几分钟内显示结果。

为了安全,代码只能用 Lean 的一个子集。下面这些会被拒绝:#eval 等 # 开头的命令、@[…] 属性、macro、syntax、set_option、IO、字符串、sorry、native_decide。import 只能来自 Mathlib 或 Batteries。

提交之后

不接受什么

常见问题

为什么不能直接改别人的 Lean 代码? 因为“某人证明了 #20261014-01”这句话必须永远指向同一段代码。要改代码,就登记一条新表述,旧编号保留。

我的提交为什么没通过? 打开状态页看原因。最常见的是 Mathlib 里的名字写错,或用了上面列出的被禁写法。

可以在自己电脑上检查吗? 可以。每个表述页底部有“自己验证”的命令,也可以点“在 Lean 4 Web 中打开”在浏览器里试编译。

中国大陆能用吗? 网站和编辑表单都不依赖 GitHub 账号。GitHub 页面打不开也没关系,状态页会显示同样的结果。

我的 IP 会被公开吗? 不会。公开的只有由 IP 派生的匿名编号,详见隐私与编辑规则。