为什么 simp "fail to apply initial proof method" where blast 用同样的事实成功?
Why does simp "fail to apply initial proof method" where blast succeeds with the same facts?
我建模了this calculus in Isabelle as an exercise. Here's my code so far.
我使用大锤来证明简单的定理,通常建议使用 blast 补充微积分规则的子集,例如:
by (blast intro: DH_bdiam2_f Fbox2_R l2)
这很好用,但如果我尝试使用 simp 添加相同的规则,例如:
by (simp only: DH_bdiam2_f Fbox2_R l2)
我收到一条错误消息,指出 none 条规则适用
Failed to apply initial proof method⌂:
到底是怎么回事?我期待 simp 终止或超时,但肯定不是这样。我错过了什么?
这是您在策略未能生成证明步骤时收到的错误消息。对于 simp
,当没有规则匹配时就是这种情况(即重写 DH_bdiam2_f
... 是不可能的)。查看您的代码,这些规则来自归纳谓词。通常,这些不适合作为重写(=简化)规则。 Programming and Proving in Isabelle/HOL 中散布着关于什么是合适的简化 和介绍 规则的提示,以及关于什么策略是合适的解释。
我建模了this calculus in Isabelle as an exercise. Here's my code so far.
我使用大锤来证明简单的定理,通常建议使用 blast 补充微积分规则的子集,例如:
by (blast intro: DH_bdiam2_f Fbox2_R l2)
这很好用,但如果我尝试使用 simp 添加相同的规则,例如:
by (simp only: DH_bdiam2_f Fbox2_R l2)
我收到一条错误消息,指出 none 条规则适用
Failed to apply initial proof method⌂:
到底是怎么回事?我期待 simp 终止或超时,但肯定不是这样。我错过了什么?
这是您在策略未能生成证明步骤时收到的错误消息。对于 simp
,当没有规则匹配时就是这种情况(即重写 DH_bdiam2_f
... 是不可能的)。查看您的代码,这些规则来自归纳谓词。通常,这些不适合作为重写(=简化)规则。 Programming and Proving in Isabelle/HOL 中散布着关于什么是合适的简化 和介绍 规则的提示,以及关于什么策略是合适的解释。