# HG changeset patch # User wenzelm # Date 1433925568 -7200 # Node ID a197387e185497a74bf067935304b5710f9bb090 # Parent 240ad53041c9813918dd685e19edfd274b2168fd tuned proofs; diff -r 240ad53041c9 -r a197387e1854 src/HOL/Isar_Examples/Hoare_Ex.thy --- a/src/HOL/Isar_Examples/Hoare_Ex.thy Wed Jun 10 10:29:32 2015 +0200 +++ b/src/HOL/Isar_Examples/Hoare_Ex.thy Wed Jun 10 10:39:28 2015 +0200 @@ -99,7 +99,7 @@ lemma "\ \\M = \N\ \M := \M + 1 \\M \ \N\" proof - - have "\m n::nat. m = n \ m + 1 \ n" + have "m = n \ m + 1 \ n" for m n :: nat -- \inclusion of assertions expressed in ``pure'' logic,\ -- \without mentioning the state space\ by simp @@ -192,13 +192,13 @@ also have "\ \ ?while \?inv \S \I \ \ \I \ n\" proof let ?body = "\S := \S + \I; \I := \I + 1" - have "\s i. ?inv s i \ i \ n \ ?inv (s + i) (i + 1)" + have "?inv s i \ i \ n \ ?inv (s + i) (i + 1)" for s i by simp also have "\ \\S + \I = ?sum (\I + 1)\ ?body \?inv \S \I\" by hoare finally show "\ \?inv \S \I \ \I \ n\ ?body \?inv \S \I\" . qed - also have "\s i. s = ?sum i \ \ i \ n \ s = ?sum n" + also have "s = ?sum i \ \ i \ n \ s = ?sum n" for s i by simp finally show ?thesis . qed diff -r 240ad53041c9 -r a197387e1854 src/HOL/Isar_Examples/Mutilated_Checkerboard.thy --- a/src/HOL/Isar_Examples/Mutilated_Checkerboard.thy Wed Jun 10 10:29:32 2015 +0200 +++ b/src/HOL/Isar_Examples/Mutilated_Checkerboard.thy Wed Jun 10 10:39:28 2015 +0200 @@ -208,10 +208,8 @@ let ?e = evnodd note hyp = \card (?e t 0) = card (?e t 1)\ and at = \a \ - t\ - have card_suc: - "\b. b < 2 \ card (?e (a \ t) b) = Suc (card (?e t b))" + have card_suc: "b < 2 \ card (?e (a \ t) b) = Suc (card (?e t b))" for b :: nat proof - - fix b :: nat assume "b < 2" have "?e (a \ t) b = ?e a b \ ?e t b" by (rule evnodd_Un) also obtain i j where e: "?e a b = {(i, j)}" @@ -230,7 +228,7 @@ from e have "(i, j) \ ?e a b" by simp with at show "(i, j) \ ?e t b" by (blast dest: evnoddD) qed - finally show "?thesis b" . + finally show ?thesis . qed then have "card (?e (a \ t) 0) = Suc (card (?e t 0))" by simp also from hyp have "card (?e t 0) = card (?e t 1)" . diff -r 240ad53041c9 -r a197387e1854 src/HOL/Isar_Examples/Puzzle.thy --- a/src/HOL/Isar_Examples/Puzzle.thy Wed Jun 10 10:29:32 2015 +0200 +++ b/src/HOL/Isar_Examples/Puzzle.thy Wed Jun 10 10:39:28 2015 +0200 @@ -16,52 +16,46 @@ assumes f_ax: "\n. f (f n) < f (Suc n)" shows "f n = n" proof (rule order_antisym) - { - fix n show "n \ f n" - proof (induct "f n" arbitrary: n rule: less_induct) - case less - show "n \ f n" - proof (cases n) - case (Suc m) - from f_ax have "f (f m) < f n" by (simp only: Suc) - with less have "f m \ f (f m)" . - also from f_ax have "\ < f n" by (simp only: Suc) - finally have "f m < f n" . - with less have "m \ f m" . - also note \\ < f n\ - finally have "m < f n" . - then have "n \ f n" by (simp only: Suc) - then show ?thesis . - next - case 0 - then show ?thesis by simp - qed + show ge: "n \ f n" for n + proof (induct "f n" arbitrary: n rule: less_induct) + case less + show "n \ f n" + proof (cases n) + case (Suc m) + from f_ax have "f (f m) < f n" by (simp only: Suc) + with less have "f m \ f (f m)" . + also from f_ax have "\ < f n" by (simp only: Suc) + finally have "f m < f n" . + with less have "m \ f m" . + also note \\ < f n\ + finally have "m < f n" . + then have "n \ f n" by (simp only: Suc) + then show ?thesis . + next + case 0 + then show ?thesis by simp qed - } note ge = this + qed - { - fix m n :: nat - assume "m \ n" - then have "f m \ f n" - proof (induct n) - case 0 - then have "m = 0" by simp - then show ?case by simp + have mono: "m \ n \ f m \ f n" for m n :: nat + proof (induct n) + case 0 + then have "m = 0" by simp + then show ?case by simp + next + case (Suc n) + from Suc.prems show "f m \ f (Suc n)" + proof (rule le_SucE) + assume "m \ n" + with Suc.hyps have "f m \ f n" . + also from ge f_ax have "\ < f (Suc n)" + by (rule le_less_trans) + finally show ?thesis by simp next - case (Suc n) - from Suc.prems show "f m \ f (Suc n)" - proof (rule le_SucE) - assume "m \ n" - with Suc.hyps have "f m \ f n" . - also from ge f_ax have "\ < f (Suc n)" - by (rule le_less_trans) - finally show ?thesis by simp - next - assume "m = Suc n" - then show ?thesis by simp - qed + assume "m = Suc n" + then show ?thesis by simp qed - } note mono = this + qed show "f n \ n" proof -