在我的 coq 开发过程中,我正在学习如何创建针对我的问题领域的新策略,就像 Adam Chlipala 教授一样。在该页面上,他描述了如何通过结合来创建强大的自定义repeat
策略match
。
现在,我已经有一个强大的单发战术在使用,auto
. 它将从提示数据库中找到的步骤链串在一起。我已经投入了一些精力来管理这些提示数据库,所以我也想继续使用它。
然而,这提出了一个问题。 目前尚不清楚将auto
's 的功能合并到定制策略中的“正确”方式是什么。
例如,由于(按其页面)auto
总是要么解决目标要么什么都不做,将它放在循环中并不比在循环后调用它一次更强大。
要了解为什么这不理想,请考虑一种直接调用 的单个“步骤”的假设方法,auto
如果可以进行更改(而不是仅在解决目标时),则该步骤成功,否则失败。这样的单步可以与匹配重复循环中的自定义行为交错,允许我们在搜索树中的例如try contradiction
或try congruence
中间点。
是否有很好的设计模式可以将auto
's 的功能整合到自定义策略中?
的行为是否可以auto
分解为我们可以使用的“单步”策略?