coq - 提高 coq 策略的失败级别

标签 coq coq-tactic ltac

在 Ltac 中实现复​​杂的策略时,有一些 Ltac 命令或策略调用我预计会失败以及预期失败(例如终止 repeat 或导致回溯)。这些故障通常在故障级别 0 时引发。

更高级别引发的故障“逃避”周围 tryrepeat阻止,并且可用于发出意外故障的信号。

我缺少的是一种运行策略的方法 tac并将其失败(即使是 0 级)视为更高级别,同时保留失败的消息。这会让我确保 repeat不会因我这边的 Ltac 编程错误而终止。

能不能在 Ltac 中实现这种提升失败级别的高阶战术?

最佳答案

您可以在 Ocaml 中编写策略来实现这一目标。我把它放在 GitHub here .

例如,以下应该引发错误而不是静默成功:

repeat (match goal with 
          | [ |- _ ] => 
            raise_error_level (assert (3 = 3) by idtac)
        end).

关于coq - 提高 coq 策略的失败级别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45109074/

相关文章:

coq - Coq 中 `induction n, m` 和 `induction n; induction m` 有什么区别?

coq - 使用Coq的简单图论证明

coq - Coq 分支和回溯的多次成功?

辅 enzyme Q/SSReflect : How to do case analysis when reflecting && and/\

coq - 重写 ltac 中的单个事件

coq - 证明唯一的零长度向量为零

coq - 如何在 Ltac 中进行 "negative"匹配?

coq - coq 中的模简化

coq - 破坏假设: general case

coq - 如何同时看待多个目标?