automation - coq auto 说简单的应用失败,但它可以手动工作

标签 automation coq

(练习来自软件基础,​​我可以给出所有相关的定义,但会有很多)考虑一下:

Goal empty_st =[ X := 1 ]=> (X ↦ 1).
debug auto.    (* (* debug auto: *)
                  * assumption. (*fail*)
                  * intro. (*fail*)
                  * simple apply E_Ass (in core). (*fail*) <- note this fails
                  * simple apply E_Skip (in core). (*fail*) *)
simple apply E_Ass. (* <- but this works *)
Qed.

通常,我对 auto 的问题是它无法找到要应用的相关内容。在这里它完美地做到了这一点,但由于某种原因未能应用它。我怎样才能说服它更加努力?

(是的,这是同一个 E_Ass。不,展开没有帮助。)

最佳答案

它可能会失败,因为 E_Ass 的结论并不立即符合您的目标。 auto 确实会预先检查这一点,如果结论不直接匹配,甚至不会尝试应用引理。 Afair fail 包括“没有尝试”。甚至 simple_apply 也会在应用的引理和目标之间进行一些转换。您可以尝试添加带有 E_Ass 变体的提示,该变体将被转换以匹配目标。 E_Ass 的类型是什么?

关于automation - coq auto 说简单的应用失败,但它可以手动工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67020464/

相关文章:

java - 如何在提交时删除 Intellij IDEA 中未使用的导入?

linux - 如何将 Rundeck key 存储传递给脚本

ubuntu - ubuntu 上的 Appium 设置

python - 在 Selenium 中处理弹出窗口

coq - 在 Coq 模块系统中导入 <Module> 与包含 <Module>

functional-programming - 无法猜测 Coq 中嵌套匹配修复的递减参数

coq - 如何在通用量化下捕获参数(使用模块?部分?)

java - TestNG 线程计数到底做了什么?

coq - 最大与非最大隐式参数的目的

c++ - 以下 C++ 代码的属性的严格证明?