isabelle - Isabelle/ZF nat 不等式
问题描述
我是伊莎贝尔的新手,我试图证明这样的事情:
lemma refl_add_help: "[| n:nat; m:nat |] ==> 0 #+ n \<le> m #+ n"
by(rule add_le_mono1, simp)
theorem mult_le_self: "[| 0 < m; n:nat; m:nat |] ==> n \<le> n #* m"
apply(case_tac m, auto)
apply(simp add: refl_add_help)
oops
我还试图证明一个引理:
lemma "[| n:nat; m:nat |] ==> n \<le> m #+ n"
但我也无法成功。谁能给我一些关于如何解决问题的建议?非常感谢。
顺便说一句,是不是不可能像 ZF 一样显示价值
value "{m:nat. m < 5}"
我已经导入了这样的理论:
theory mytheory
imports ZF.Arith
解决方案
我对伊莎贝尔/采埃孚不是很熟悉。也就是说,您可以按如下方式证明您的结果:
theorem mult_le_self: "⟦ 0 < m; n:nat; m:nat ⟧ ⟹ n ≤ n #* m"
apply (case_tac m, simp)
apply (frule_tac ?m="n #* x" in refl_add_help)
apply (auto simp add: add_commute)
done
lemma "⟦ n:nat; m:nat ⟧ ⟹ n ≤ m #+ n"
by (frule refl_add_help, auto)
有关frule
和frule_tac
方法的更多信息,请分别参阅Isabelle/Isar 参考手册第 9.2 节和第 7.3 节。但是,我鼓励您使用 Isabelle/Isar 而不是证明脚本。例如,您的引理可以证明如下:
lemma "⟦ n:nat; m:nat ⟧ ⟹ n ≤ m #+ n"
proof -
assume "n:nat" and "m:nat"
then show ?thesis using refl_add_help by simp
qed
或者,更简洁地说,如下:
lemma
assumes "n:nat" and "m:nat"
shows "n ≤ m #+ n"
using assms and refl_add_help by simp
关于value
命令,我认为它在 Isabelle/ZF 中不起作用。
推荐阅读
- spring-boot - 使用休眠环境频繁查询时出错
- count - Amazon Athena - 如何计算不同的值?
- javascript - 无法从 ref (Vue3) 访问 Ionic 组件方法
- sabre - SABRE 酒店被动段 API
- php - 显示 count_all_results 记录以查看
- vue.js - Vuex:如何将变量传递给 getter?
- java - 2048 game Java:如何根据用户输入打印游戏板?
- javascript - 如何使用 chart.js 3.0.0 在 React 上下文中访问 Chart.helpers.color?
- css - 使用 CSS 旋转和裁剪 svg 背景
- python - BeautifulSoup 昨天没有获取所有 HTML 元素,并且没有更改任何代码