如何在 Coq 中证明 (n = n) = (m = m)?

How to prove (n = n) = (m = m) in Coq?

我对 Coq 中的证据和 Prop 等感到困惑。我们如何证明(n = n) = (m = m)

我的目的是要表明这是某种方式 True=True。但这甚至是正确的表述?

到目前为止我尝试的是:

Theorem test: forall m n:nat, (n = n) = (m = m).
Proof. intros. simpl.

但是 simpl. 什么也不做,reflexivity 什么也不做。这只是一个例子,一般来说,如果可能的话,我需要为任何类型证明这一点X

不可能在不假设额外公理的情况下证明您的要求;比照。 this answer.

n = nm = m 都是 命题 ,所以它们属于 Prop 而不是 Set。这基本上意味着 n = n 就像一个陈述(必须证明)而不是像 true : boolean.

相反,您可以尝试证明如下内容:n-n = m-m,或者,您可以定义一个函数 nat_equal : nat -> bool,给定一个自然值,将其映射到 bool,然后证明 nat_equal n = nat_equal m.

如果你真的想断言陈述是相等的,你需要命题外延性。