Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Coq矢量在验证模式下爆炸?_Coq - Fatal编程技术网

Coq矢量在验证模式下爆炸?

Coq矢量在验证模式下爆炸?,coq,Coq,一个关于Coq向量的机械问题。 我有证据 input: Vector.t nat 1 ================================== compliacted_fixpoint_for input = true 我正在寻找一个可以分解向量的定理/策略,这样我就可以用内部nat重写,如下所示,这样我就可以使用cbn input: Vector.t nat 1 n: nat Hin: input = [n] ==================================

一个关于Coq向量的机械问题。 我有证据

input: Vector.t nat 1
==================================
compliacted_fixpoint_for input = true
我正在寻找一个可以分解向量的定理/策略,这样我就可以用内部nat重写,如下所示,这样我就可以使用
cbn

input: Vector.t nat 1
n: nat
Hin: input = [n]
==================================
complicated_fixpoint_for [n] = true
反转输入
确实引入了
n:nat
,但出乎意料的是没有引入
Hin
,这对我以后调用
cbn
没有帮助。

改用。 如果要反转的对象是目标中出现的一个术语,而不仅仅是一个证明/假设,那么您需要使用
依赖反转

来代替。
当你想反转的是目标中出现的一个术语,而不仅仅是一个证明/假设时,你想使用
相关反转
我想你是在寻找
重写(eta输入)。

下面是两个有用的引理:

Import VectorNotations.

Lemma vec0 {T}: forall (v:Vector.t T 0), v = [].
  apply (case0 (fun x => x=[])).
  reflexivity.
Qed.

Lemma vec1 {T} : forall (v:Vector.t T 1), v = [hd v].
  intros.
  rewrite (VectorSpec.eta v).
  apply f_equal.
  apply vec0.
Qed.

我想您正在寻找
重写(eta输入)。

下面是两个有用的引理:

Import VectorNotations.

Lemma vec0 {T}: forall (v:Vector.t T 0), v = [].
  apply (case0 (fun x => x=[])).
  reflexivity.
Qed.

Lemma vec1 {T} : forall (v:Vector.t T 1), v = [hd v].
  intros.
  rewrite (VectorSpec.eta v).
  apply f_equal.
  apply vec0.
Qed.

这正是我需要的谢谢!这正是我需要的谢谢!