首页 > 解决方案 > Coq 引理语句中的定义与命题相等

问题描述

当在 Coq(CPDT 风格)证明中编写高度自动化的证明时,基于对 的广泛使用eauto N,我必须经常修改我的引理语句以允许eauto轻松使用它们。特别是,我必须将形式 (1) 的陈述forall vars, P (f args)...P出现在论文中或假设中的地方)替换为形式 (2) forall x args, x = f args -> P x -> ...。使用形式(2),可以根据需要eauto实例化为适当的表达式(通过统一找到),并通过其通常的证明搜索单独证明。相反,对于形式 (1),有必要在证明期间重写,这是 IIUC不做的事情(除非使用 dedicated )。xee = f argse = f argseautoHint Extern

是否有更好的现有策略以这种方式实现相同的结果,可能是自动化的?我见过的最接近的事情是applys_eqSoftware Foundations 的 LibTactics 中的策略,它允许在形式 (1) 中应用引理,但将e = f args其作为单独的目标;然而,这种策略需要一个完全手动的规范。

我明白我的要求可能太难或太慢;知道这是一种合理的方法将有助于停止寻找并继续。我听说至少有一位经验丰富的 Coq 用户描述了同样的问题和同样的方法。

标签: coqcoq-tactic

解决方案


推荐阅读