我可能遗漏了一些基本的东西。
我可以证明以下“身份”:
Theorem identity_simple : forall a : Prop, a -> a.
intro. intro. assumption.
。
然而,我似乎无法证明:
Theorem identity : forall a : Prop, a.
当然我可以做intro
,但这让我失望:
a : Prop
_________(1/1)
a
我不知道该怎么办。
第一种形式似乎是多余的,表明对于所有a
,a
暗示a
。
答案 0 :(得分:6)
forall a : Prop, a -> a.
读作“给定一些命题的证明a
我们可以构建同一命题的证明”。这是真的,因为我们可以返回原始证明。
让我们用Coq检查:
Print identity_simple.
(*
output:
identity_simple = fun (a : Prop) (H : a) => H
: forall a : Prop, a -> a
*)
证明词fun (a : Prop) (H : a) => H
完全表达了所描述的行为。
第一种形式似乎是多余的,要说明对于所有
a
,a
暗示a
。
从某种意义上说,你是对的 - 非常明显。您可以将其视为测试 - 如果您无法证明它,那么逻辑肯定存在问题。
<小时/>
forall a : Prop, a.
读作“我们可以构建任何命题的证明”。这不是真的,因为例如,你不能构造False
的证据(在空的上下文中)。这将是一场灾难 - 我们不希望使用所有可证明的逻辑。