证明中的自定义案例区别

时间:2018-01-26 12:02:40

标签: isabelle isar

Isabelle在证明陈述时是否支持自定义案件区别?让我们说我想证明所有自然数n的陈述,但证据完全不同,取决于n是偶数还是奇数。是否可以在证明中区分这种情况,例如

 proof(cases n) 
   assume "n mod 2 = 0"
   <proof>
   next assume "n mod 2 = 1"
   <proof>
qed

到目前为止,我将引理/定理分成两个单独的部分(假设n偶数/奇数),然后使用这些部分来证明所有自然数的语句,但这不会出现成为最佳解决方案。

2 个答案:

答案 0 :(得分:5)

在Isabelle2017中,您可以轻松地证明特殊案例区分规则,如下:

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

答案 1 :(得分:0)

您可以尝试以下方法:

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