Isabelle 证据中的习惯案例区分
Isabelle在证明陈述时是否支持自定义案例区分?假设我想证明所有自然数Isabelle 证据中的习惯案例区分,isabelle,isar,Isabelle,Isar,Isabelle在证明陈述时是否支持自定义案例区分?假设我想证明所有自然数n的一个语句,但是证明完全不同,这取决于n是偶数还是奇数。有可能在一个证明中做这种区分吗 proof(cases n) assume "n mod 2 = 0" <proof> next assume "n mod 2 = 1" <proof> qed 证明(案例n) 假设“n模2=0” 接下来假设“n mod 2=1” 量化宽松 到目前为止,我将引理/定理分成两个独
n
的一个语句,但是证明完全不同,这取决于n
是偶数还是奇数。有可能在一个证明中做这种区分吗
proof(cases n)
assume "n mod 2 = 0"
<proof>
next assume "n mod 2 = 1"
<proof>
qed
证明(案例n)
假设“n模2=0”
接下来假设“n mod 2=1”
量化宽松
到目前为止,我将引理/定理分成两个独立的部分(假设
n
偶数/奇数),然后使用这些部分来证明所有自然数的陈述,但这似乎不是最佳解决方案。在Isabelle 2017中,您可以很容易地证明特殊情况区分规则,如下所示:
lemma "P (n::nat)"
proof -
consider (odd) "odd n" | (even) "even n" by auto
then show ?thesis
proof cases
case odd
then show ?thesis sorry
next
case even
then show ?thesis sorry
qed
qed
您可能可以尝试以下方法:
proof -
have "your statement" when "n mod 2 = 0"
<proof>
moreover
have "your statement" when "n mod 2 = 1"
<proof>
ultimately
show "your statement"
by <some tactic>
qed
证明-
当“n mod 2=0”时有“您的声明”
此外
当“n mod 2=1”时有“您的声明”
最终
显示“你的声明”
通过
量化宽松
虽然这是正确的(并且有一些优点,例如能够使用案例
),但奇数n
只是、偶数n
的缩写,因此可以使用默认的案例区分规则:让P证明案例假设为“偶数n”…接下来假设为“奇数n”…qed