假设通过应用策略--inspect-brk
来获得子目标列表:
T
假设我们知道引理______________________________________(1/10)
A
______________________________________(2/10)
A'
______________________________________(3/10)
A''
可用于证明L
和A
,但不 A''
。
我的问题是,我们可以使用A'
的应用结果对T
进行排序,这只留下了一个子目标L
吗?
我尝试A'
没有成功,因为测序似乎需要证明所有分支/子目标。
我还尝试使用SSReflect中的T;apply L.
来控制自动化,这是建议的。不幸的是,Coq也陷入困境,并报告by T;apply L.
答案 0 :(得分:4)
您可以使用try
战术,如下所示:
T; try by apply L.
这样做如下。首先,它适用T
。然后,在每个子目标上,它应用策略by apply L
。如果战术成功,那就好。否则,如果失败,try
什么都不做。
答案 1 :(得分:4)
我会推荐Arthur的T; try by apply L.
。但如果您需要更多控制权,可以使用
T; [ (* first goal *) now apply L
| (* second goal *) now apply L
| (* last goal *) idtac ].
答案 2 :(得分:4)
Coq 8.6也有目标选择器,所以如果T创建4个子目标,你可以写
T. 1-2,4: apply L.
除了第三个子目标外,其他所有人都适用。
答案 3 :(得分:2)
如Vilhelm所述,Coq 8.6有目标选择器。
您还可以执行T; only 1,3: apply L.
,其优势在于只编号由策略T
生成的子目标。
请参阅https://coq.inria.fr/refman/proof-engine/ltac.html#goal-selectors