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

时间:2015-12-08 15:45:52

标签: coq coq-tactic

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

我的意图是以某种方式显示True=True。但这甚至是正确的表述?

到目前为止我尝试的是:

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

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

2 个答案:

答案 0 :(得分:2)

n = nm = m都是道具,因此他们排序Prop而不是排序Set。这基本上意味着n = n就像一个声明(必须被证明)而不是像true : boolean那样。

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

如果你真的想断言陈述是平等的,那你就需要命题扩展性。

答案 1 :(得分:1)

比照this answer