Isabelle自定义自然数递归小于关系的基础性质证明求助
问题解答
1. 小于关系定义正确性判断
你的natt_less定义完全正确,符合自然数小于关系的标准递归语义:
- 任意自然数都不小于0
- 对于
n < Succ m',若n是0则恒成立,否则等价于n的前驱n'小于m'
这个定义可以正确推导出所有自然数小于关系的预期性质,无需修改。
2. 证明卡壳原因与解决方法
你遇到的归纳步无法推进的核心问题是归纳时没有将随归纳变量变化的自由变量用arbitrary量化,导致归纳假设只能适用于固定的a,无法匹配归纳步中解构出的子项。
第一步:证明基础辅助引理
先证明更简单的单侧Succ引理作为突破口:
lemma less_Succ_2: "a < b ⟹ a < Succ b" proof (induction b arbitrary: a) case Zero then show ?case by simp next case (Succ b) (* 归纳假设对任意a成立,而非固定a *) assume IH: "⋀a. a < b ⟹ a < Succ b" assume H: "a < Succ b" then show ?case by (cases a) (simp_all add: IH) qed
第二步:证明你卡壳的Succ a < b ⟹ a < b
lemma less_Succ_1: "Succ a < b ⟹ a < b" proof (induction b arbitrary: a) case Zero then show ?case by simp next case (Succ b) assume IH: "⋀a. Succ a < b ⟹ a < b" assume H: "Succ a < Succ b" then have "a < b" by simp then show ?case using less_Succ_2 by simp qed
第三步:推导三大核心性质
有了两个辅助引理后,三大性质都可以通过结构归纳+cases分支拆分快速证明,以非对称性为例:
lemma less_asym: "a < b ⟹ ¬ (b < a)" proof (induction b arbitrary: a) case Zero then show ?case by simp next case (Succ b) assume IH: "⋀a. a < b ⟹ ¬ b < a" assume H1: "a < Succ b" and H2: "Succ b < a" then obtain a' where "a = Succ a'" "b < a'" by (cases a) simp_all from H1 have "a = Zero ∨ (∃a''. a = Succ a'' ∧ a'' < b)" by (cases a) simp_all then show False using IH by blast qed
传递性、三分律的证明逻辑完全一致,只要保证归纳时把所有变化的自由变量做arbitrary量化即可。
内容的提问来源于stack exchange,提问作者Luiz Martins
相关产品推荐
相关产品推荐

