嗨,我是一个新手,试图学习如何在伊莎贝尔中使用共归纳法。我一直在查看 HOL/Datatype_Examples/Process.thy (Andrei Popescu) 2012。随着 2019 年 Isabelle 的进步很大(而不是因为任何个人技能),我已经简化了证明,但仍然不明白他们为什么决定做第一个步。
工作简化证明是
lemma solution_PROC[simp]: "solution sys (PROC p) = p"
proof-
{fix q assume "q = solution sys (PROC p)" (* How did they know to do this! *)
hence "p = q"
proof (coinduct rule: process.coinduct)
case (Eq_process process process')
then show ?case
by simp
qed
}
thus ?thesis by metis
qed
我失败的天真方法是:
lemma solution_PROCFail: " p = solution sys (PROC p)"
proof (coinduct rule: process.coinduct) (* look up process.coinduct and
you can see the extra goal forced by the misalignment*)
case Eq_process
then show ?thesis (* cannot solve*)
qed
两个问题:
- 语法 {fix q 假设 "q = solution sys (PROC p)" .....} 是本地引理的旧语法吗?
更重要的是 2. 我怎么知道什么时候尝试这种技术?
非常感谢大卫