Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.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_Coq Tactic_Ltac - Fatal编程技术网

Coq中的条件证明策略

Coq中的条件证明策略,coq,coq-tactic,ltac,Coq,Coq Tactic,Ltac,我相信这个标题是不言自明的: 我想有一个策略,假设一个命题,然后继续寻找另一个命题,如果成功,那么我发现第一个命题意味着第二个命题,这是作为上下文中的一个假设 例如,Ltac cp p Q创建一个子目标Q,并将Pin置于上下文中。如果我确实可以达到子目标Q,那么子目标被释放,P->Q被添加到上下文中。我怎样才能做到这一点 编辑:很明显,在证明 断言P->Q。 简介。 完成了这项工作,但我无法将它们组合到Ltac策略中,这会产生一个错误,即没有集中的校对,没有正在进行的校对编辑。要定义新策略,您需

我相信这个标题是不言自明的:

我想有一个策略,假设一个命题,然后继续寻找另一个命题,如果成功,那么我发现第一个命题意味着第二个命题,这是作为上下文中的一个假设

例如,Ltac cp p Q创建一个子目标Q,并将Pin置于上下文中。如果我确实可以达到子目标Q,那么子目标被释放,P->Q被添加到上下文中。我怎样才能做到这一点

编辑:很明显,在证明 断言P->Q。 简介。
完成了这项工作,但我无法将它们组合到Ltac策略中,这会产生一个错误,即没有集中的校对,没有正在进行的校对编辑。

要定义新策略,您需要将它们与;组合起来


要定义新的战术,您需要将它们组合为


已经有了这样一种策略,它被称为足够,因为它足以证明p。它假设p,现在你可以用p完成你的证明。当你完成了,你必须证明p

如果很容易完成,您可以使用by作为assert。我经常用subst做足够多的bla-bla;汽车或者类似的事情,这让我有了目标

您可能也会发现这种策略很有用,例如,如果您不想在“足够”语句中键入整个复杂的先行项:

Ltac postpone_antecedent H :=
  match type of H with  ?A -> _ =>
    let Q := fresh in enough A as Q ; [specialize (H Q) | ]
  end.

已经有了这样一种策略,它被称为足够,因为它足以证明p。它假设p,现在你可以用p完成你的证明。当你完成了,你必须证明p

如果很容易完成,您可以使用by作为assert。我经常用subst做足够多的bla-bla;汽车或者类似的事情,这让我有了目标

您可能也会发现这种策略很有用,例如,如果您不想在“足够”语句中键入整个复杂的先行项:

Ltac postpone_antecedent H :=
  match type of H with  ?A -> _ =>
    let Q := fresh in enough A as Q ; [specialize (H Q) | ]
  end.