Isabelle/Isar(その7)
では,Isarらしい,読み易い証明をステップ毎に改行して書いて見ます.
lemma kudoi: fixes "a" :: "nat => real" and "n" :: "nat" assumes 1: "a 0 = 0" and 2: "ALL n. a (Suc n) = 2 * a n + 1" shows "a n = 2 ^ n - 1" proof (induction n) show "a 0 = 2 ^ 0 - 1" proof simp show "a 0 = 0" proof (rule 1) qed qed next fix n assume "a n = 2 ^ n - 1" from this and 2 have "a (Suc n) = 2 * (2 ^ n - 1) + 1" proof simp qed also have "... = 2 ^ (Suc n) - 1" proof simp qed finally show "a (Suc n) = 2 ^ (Suc n) - 1" proof this qed qed
初見でも自然に読み下せるのではないでしょうか?これがIsarの可読性です.また,定理の参照や入れ子の証明もtacticのそれより簡単です.ただし,計算機による定理証明に可読性が必要か? また,ご覧の通りくどく,書くのが面倒なので,Isarでも簡潔に書く為の様々なお約束を用いるのが普通であり,その究極がtacticですから,どの辺りで手を打つかはもはや好みの問題かも知れません.