【发布时间】:2018-09-12 19:05:00
【问题描述】:
对于像自然数nat这样的简单归纳类型,很容易证明两个构造函数(零和后继)给出所有可能的自然数,
Lemma nat_destruct (n : nat) : n = O \/ exists m : nat, n = S m.
Proof.
destruct n. left. reflexivity. right. exists n. reflexivity.
Qed.
但是我听说相等性证明并不是那么简单。只有一个等式构造函数eq_refl,但 Coq 无法证明这一点
eq_destruct : forall (A : Type) (x : A) (prEq : x = x), prEq = eq_refl
究竟是什么阻碍了这个证明?可能第一个问题是相等不仅仅是一个类型,而是一个类型族eq : forall A : Type, A -> A -> Prop。是否有一个更简单的类型族,这样的证明是不可能的?可能有 1 个或 2 个参数而不是 3 个?
【问题讨论】:
标签: coq