Automation 证明自动化

Automation 证明自动化,automation,coq,proof,Automation,Coq,Proof,假设通过应用策略T,有一系列子目标: ______________________________________(1/10) A ______________________________________(2/10) A' ______________________________________(3/10) A'' 假设我们知道引理L可以用来证明A和A',但是不是A' 我的问题是,我们能否用L的应用结果对T进行排序,这只给我留下了一个子目标A' 我试过T;应用L.但没有成功,因为排序似

假设通过应用策略
T
,有一系列子目标:

______________________________________(1/10)
A
______________________________________(2/10)
A'
______________________________________(3/10)
A''
假设我们知道引理
L
可以用来证明
A
A'
,但是不是
A'

我的问题是,我们能否用
L
的应用结果对
T
进行排序,这只给我留下了一个子目标
A'

我试过
T;应用L.
但没有成功,因为排序似乎需要证明所有分支/子目标


我还试着用T的
来控制自动化;从SSReflect应用L.
,这是本文建议的。不幸的是,Coq也被卡住了,并将
Ltac调用报告给。。。上次呼叫失败。

您可以使用
尝试
战术,如下所示:

T; try by apply L.

这将执行以下操作。首先,它适用于
T
。然后,在每个子目标上,它通过应用L应用策略
。如果策略成功,那就好了。否则,如果失败,
try
什么也不做。

我建议使用
T;请按Arthur提供的应用L.
进行尝试。但是如果你需要更多的控制,你可以使用

T; [ (* first goal *) now apply L 
   | (* second goal *) now apply L 
   | (* last goal *) idtac ].

Coq8.6也有目标选择器,所以如果T创建了4个子目标,您可以编写

T. 1-2,4: apply L.

要在除第三个子目标以外的所有子目标中应用L。

正如Vilhelm所提到的,Coq 8.6有目标选择器

你也可以做
T;仅1,3:应用L.
,其优点是只对战术
T
生成的子目标进行编号