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” 量化宽松 到目前为止,我将引理/定理分成两个独

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
偶数/奇数),然后使用这些部分来证明所有自然数的陈述,但这似乎不是最佳解决方案。

在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