Coq 如何同时看待多个目标?

Coq 如何同时看待多个目标?,coq,coq-tactic,ltac,Coq,Coq Tactic,Ltac,我正在考虑写一些战术,这些战术将着眼于多个目标,并根据这些目标做出决策。然而,当我使用将目标与匹配并盯着一个目标看时,我如何说“请找到另一个类似的目标” 或者,更一般的问题是,我如何在Ltac中的目标之间切换?正如我们在评论中所讨论的,在这种情况下,目前无法在Ltac中实现对当前验证目标的此类检查 但是,可以在ocaml级别上或使用较新的策略语言(如ltac2或mtac)编写这样的策略。您可以举一个简单的例子,说明您想“切换”目标吗?在使用类似于destruct..或inclusion…的策略

我正在考虑写一些战术,这些战术将着眼于多个目标,并根据这些目标做出决策。然而,当我使用
将目标与
匹配并盯着一个目标看时,我如何说“请找到另一个类似的目标”



或者,更一般的问题是,我如何在Ltac中的目标之间切换?

正如我们在评论中所讨论的,在这种情况下,目前无法在Ltac中实现对当前验证目标的此类检查


但是,可以在ocaml级别上或使用较新的策略语言(如
ltac2
mtac

)编写这样的策略。您可以举一个简单的例子,说明您想“切换”目标吗?在使用类似于
destruct..
inclusion…
的策略后,您通常可以看到所有可用的目标,并且可以使用
focus n
为第n个目标聚焦这些目标。@nesreka一个简单的例子是,当您在特定期限内进行
依赖归纳时,归纳假设可能会产生一个
\u=\ u
条件,这在很大程度上限制了术语应该是什么。在
eapply
假设之后,如果它生成一个存在的var,那么就没有太多的选择余地了,而
auto/eauto
没有足够的智慧来解决这个问题。像
all:
这样的策略可能就足够了吗?在进行
依赖性诱导后
可以运行
;subst
以消除所有子目标中的等式。“让我知道这是否适合您,我将把它转换为一个。”nesreka
subst
不起作用,目标选择器也不起作用,因为它不参与自动验证流程<代码>依赖归纳法
通常涉及到更复杂的结构等式和evar,这在这里不是很有用。人类知道填写什么,如果偶然的证据搜索按正确的顺序进行,eauto有时可以正确填写。但这不是一个确定性的解决方案。你能解释一下“不参与自动验证流程”的意思吗?