精益 4 'unknown identifier Proof'

Lean 4 'unknown identifier Proof'

我在使用 Lean 4 时遇到了问题。

我在 Propositions and Proofs 部分阅读文档时 运行 进入了它。在作为类型的命题下,文档介绍了 Proof 类型:

We could then introduce, for each element p : Prop, another type Proof p, for the type of proofs of p.

下面显示了检查 Proof 类型的代码片段,其中 returns Proof : Prop → Type:

#check Proof   -- Proof : Prop → Type

当我尝试 运行 这段代码时,出现以下错误:

example.lean:3:7: error: unknown identifier 'Proof'

暗示lean找不到Proof类型。这是我的问题,如何让 Lean 识别 Proof?

谢谢!

不存在名为 Proof 的类型。文档提到它作为如何实施精益的示例,但继续解释为什么没有那样实施。

《精益4中的定理证明》还在建设中(实际上精益4本身还在快速变化),所以你可能会发现里面有很多问题。然而,在这种情况下,我认为问题在于它是在假设性地谈论一种 可以 建立的方式,而实际上这并不是在精益中完成的方式。

这是使这些代码块真正编译的一种方法:

namespace TPIL

axiom Prop' : Type
axiom And : Prop' → Prop' → Prop'
axiom Or : Prop' → Prop' → Prop'
axiom Not : Prop' → Prop'
axiom Implies : Prop' → Prop' → Prop'
axiom Proof : Prop' → Type

variable (p q r : Prop')
#check And p q                      -- Prop'
#check Or (And p q) r               -- Prop'
#check Implies (And p q) (And q p)  -- Prop'

#check Proof   -- Proof : Prop' → Type

axiom and_comm (p q : Prop') : Proof (Implies (And p q) (And q p))

variable (p q : Prop')
#check and_comm p q     -- Proof (Implies (And p q) (And q p))

axiom modus_ponens : (p q : Prop') → Proof (Implies p q) →  Proof p → Proof q

axiom implies_intro : (p q : Prop') → (Proof p → Proof q) → Proof (Implies p q)

您必须使用 Prop'«Prop»,因为 Prop 是关键字。