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