作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
让我们有一个由foo
索引的归纳类型x : X
。
Parameter X : Type.
Inductive foo : X -> Type :=
| constr : forall (x : X), foo x.
foo x = foo y
暗示
x = y
。我不知道如何证明这一点。
Lemma type_equality_implies_index_equality : forall (x y : X), foo x = foo y -> x = y.
最佳答案
无法证明。设置X := bool
时,请考虑以下定理的特殊情况:
foo true = foo false -> true = false
true
和
false
不同,如果该定理是可证明的,则应该有可能表明
foo true
和
foo false
不同。问题在于这两种类型是同构的:
Inductive foo : bool -> Type :=
| constr : forall (x : bool), foo x.
(* An isomorphism between foo true and foo false *)
Definition foo_t_f (x : foo true) : foo false := constr false.
Definition foo_f_t (x : foo false) : foo true := constr true.
(* Proofs that the functions are inverses of each other *)
Lemma foo_t_fK x : foo_f_t (foo_t_f x) = x.
Proof. unfold foo_f_t, foo_t_f. now destruct x. Qed.
Lemma foo_f_tK x : foo_t_f (foo_f_t x) = x.
Proof. unfold foo_f_t, foo_t_f. now destruct x. Qed.
关于coq - 相等索引的归纳类型意味着相等的索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58807891/
我一直在阅读Practical Foundations for Programming Languages并发现迭代和同时归纳定义很有趣。我能够很容易地对偶函数和奇函数的相互递归版本进行编码 onli
我是一名优秀的程序员,十分优秀!