src/HOL/Isar_examples/MutilatedCheckerboard.thy
changeset 8814 0a5edcbe0695
parent 8703 816d8f6513be
child 9475 b24516d96847
--- a/src/HOL/Isar_examples/MutilatedCheckerboard.thy	Fri May 05 22:29:02 2000 +0200
+++ b/src/HOL/Isar_examples/MutilatedCheckerboard.thy	Fri May 05 22:30:14 2000 +0200
@@ -23,7 +23,7 @@
 inductive "tiling A"
   intrs
     empty: "{} : tiling A"
-    Un:    "[| a : A;  t : tiling A;  a <= - t |]
+    Un:    "a : A ==> t : tiling A ==> a <= - t
               ==> a Un t : tiling A";
 
 
@@ -67,12 +67,12 @@
   by (simp add: below_def);
 
 lemma Sigma_Suc1:
-    "below (Suc n) <*> B = ({n} <*> B) Un (below n <*> B)";
+    "m = n + 1 ==> below m <*> B = ({n} <*> B) Un (below n <*> B)";
   by (simp add: below_def less_Suc_eq) blast;
 
 lemma Sigma_Suc2:
-    "A <*> below (Suc n) = (A <*> {n}) Un (A <*> (below n))";
-  by (simp add: below_def less_Suc_eq) blast;
+    "m = n + 2 ==> A <*> below m = (A <*> {n}) Un (A <*> {n + 1}) Un (A <*> below n)";
+  by (auto simp add: below_def) arith;
 
 lemmas Sigma_Suc = Sigma_Suc1 Sigma_Suc2;
 
@@ -81,10 +81,10 @@
 
 constdefs
   evnodd :: "(nat * nat) set => nat => (nat * nat) set"
-  "evnodd A b == A Int {(i, j). (i + j) mod 2 = b}";
+  "evnodd A b == A Int {(i, j). (i + j) mod #2 = b}";
 
 lemma evnodd_iff:
-    "(i, j): evnodd A b = ((i, j): A  & (i + j) mod 2 = b)";
+    "(i, j): evnodd A b = ((i, j): A  & (i + j) mod #2 = b)";
   by (simp add: evnodd_def);
 
 lemma evnodd_subset: "evnodd A b <= A";
@@ -106,7 +106,7 @@
   by (simp add: evnodd_def);
 
 lemma evnodd_insert: "evnodd (insert (i, j) C) b =
-    (if (i + j) mod 2 = b
+    (if (i + j) mod #2 = b
       then insert (i, j) (evnodd C b) else evnodd C b)";
   by (simp add: evnodd_def) blast;
 
@@ -130,7 +130,8 @@
   fix n; assume hyp: "?P n";
   let ?a = "{i} <*> {2 * n + 1} Un {i} <*> {2 * n}";
 
-  have "?B (Suc n) = ?a Un ?B n"; by (simp add: Sigma_Suc Un_assoc);
+  have "?B (Suc n) = ?a Un ?B n";
+    by (auto simp add: Sigma_Suc Un_assoc);
   also; have "... : ?T";
   proof (rule tiling.Un);
     have "{(i, 2 * n), (i, 2 * n + 1)} : domino";
@@ -163,7 +164,7 @@
 qed;
 
 lemma domino_singleton:
-  "[| d : domino; b < 2 |] ==> EX i j. evnodd d b = {(i, j)}";
+  "d : domino ==> b < 2 ==> EX i j. evnodd d b = {(i, j)}";
 proof -;
   assume b: "b < 2";
   assume "d : domino";