Таможенные различия в доказательствах

Поддерживает ли Изабель пользовательские различия в регистрах утверждений? Допустим, я хочу доказать утверждение для всех натуральных чисел n, но доказательство совершенно другое в зависимости от того, n четный или нечетный. Можно ли провести такое различие в доказательстве, например

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

Пока что я разделил бы лемму / теорему на две отдельные части (предполагая n четное / нечетное), а затем используйте эти части для доказательства утверждения для всех натуральных чисел, но это не является оптимальным решением.

2 ответа

Решение

В 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

Возможно, вы можете попробовать следующее:

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
Другие вопросы по тегам