说我想在伊莎贝尔/伊萨尔证明引理∃ n m k . [n, m, k] = [2, 3, 5]
。如果按照第45页的Isabelle / HOL教程的建议继续进行,我的证据如下:
lemma "∃ n m k . [n, m, k] = [2, 3, 5]"
proof
show "∃ m k . [2, m, k] = [2, 3, 5]"
proof
show "∃ k . [2, 3, k] = [2, 3, 5]"
proof
show "[2, 3, 5] = [2, 3, 5]" by simp
qed
qed
qed
当然,这太冗长了。如何证明上述命题,使证明简洁易读?
答案 0 :(得分:3)
通过多次应用单量词导入规则,可以在一个步骤中引入多个存在量词。例如,证明方法(rule exI)+
引入了所有最外层的存在量词。
lemma "∃n m k. [n, m, k] = [2, 3, 5]"
proof(rule exI)+
show "[2, 3, 5] = [2, 3, 5]" by simp
qed
或者,您可以先声明实例化属性,然后使用自动校对方法进行实例化。通常blast
在这里运行良好,因为它不会调用simplfier。在您的示例中,您将不得不添加类型注释,因为数字已超载。
lemma "∃n m k :: nat. [n, m, k] = [2, 3, 5]"
proof -
have "[2, 3, 5 :: nat] = [2, 3, 5]" by simp
then show ?thesis by blast
qed