Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/wcf/4.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_Convoy Pattern - Fatal编程技术网

Coq 从匹配中提取平等证据

Coq 从匹配中提取平等证据,coq,convoy-pattern,Coq,Convoy Pattern,我正在努力完成以下工作: Definition gen `{A:Type} {i o: nat} (f: nat -> (option nat)) {ibound: forall (n n':nat), f n = Some n' -> n' < i} (x: svector A i) (t:nat) (ti: t < o): option A := match (f t)

我正在努力完成以下工作:

    Definition gen `{A:Type}
           {i o: nat}
           (f: nat -> (option nat))
           {ibound: forall (n n':nat), f n = Some n' -> n' < i}
           (x: svector A i) (t:nat) (ti: t < o): option A
  := match (f t) with
     | None => None
     | Some t' => Vnth x (ibound t t' _)
     end.
definitiongen`{A:Type}
{IO:nat}
(f:nat->(选项nat))
{ibound:forall(n n':nat),fn=一些n'->n'无
|一些t'=>Vnth x(ibound t'\
结束。
我需要一个证据来代替最后一个“u”,证明“f t”等于“Some t”。我不知道如何从比赛中得到它。Vnth定义为:

Vnth
     : ∀ (A : Type) (n : nat), vector A n → ∀ i : nat, i < n → A
Vnth
: ∀ (A:Type)(n:nat),向量A:n→ ∀ 我:纳特,我→ A.

编写此函数需要一个称为护航模式的实例(请参阅)。我相信下面的方法应该有效,尽管我不能测试它,因为我没有你剩下的定义

Definition gen `{A:Type}
           {i o: nat}
           (f: nat -> (option nat))
           {ibound: forall (n n':nat), f n = Some n' -> n' < i}
           (x: svector A i) (t:nat) (ti: t < o): option A
  := match f t as x return f t = x -> option A with
     | None => fun _ => None
     | Some t' => fun p => Vnth x (ibound t t' p)
     end (eq_refl (f t)).
definitiongen`{A:Type}
{IO:nat}
(f:nat->(选项nat))
{ibound:forall(n n':nat),fn=一些n'->n'选项A与
|无=>乐趣=>无
|一些t'=>funp=>vnthx(我觉得t'p)
结束(eq_refl(f t))。