src/HOL/Isar_examples/Mutilated_Checkerboard.thy
changeset 32960 69916a850301
parent 32456 341c83339aeb
equal deleted inserted replaced
32959:23a8c5ac35f8 32960:69916a850301
    41   next
    41   next
    42     case (Un a t)
    42     case (Un a t)
    43     show "(a Un t) Un u : ?T"
    43     show "(a Un t) Un u : ?T"
    44     proof -
    44     proof -
    45       have "a Un (t Un u) : ?T"
    45       have "a Un (t Un u) : ?T"
    46 	using `a : A`
    46         using `a : A`
    47       proof (rule tiling.Un)
    47       proof (rule tiling.Un)
    48         from `(a Un t) Int u = {}` have "t Int u = {}" by blast
    48         from `(a Un t) Int u = {}` have "t Int u = {}" by blast
    49         then show "t Un u: ?T" by (rule Un)
    49         then show "t Un u: ?T" by (rule Un)
    50         from `a <= - t` and `(a Un t) Int u = {}`
    50         from `a <= - t` and `(a Un t) Int u = {}`
    51 	show "a <= - (t Un u)" by blast
    51         show "a <= - (t Un u)" by blast
    52       qed
    52       qed
    53       also have "a Un (t Un u) = (a Un t) Un u"
    53       also have "a Un (t Un u) = (a Un t) Un u"
    54         by (simp only: Un_assoc)
    54         by (simp only: Un_assoc)
    55       finally show ?thesis .
    55       finally show ?thesis .
    56     qed
    56     qed
   227     qed
   227     qed
   228     moreover have "... Un ?e t b = insert (i, j) (?e t b)" by simp
   228     moreover have "... Un ?e t b = insert (i, j) (?e t b)" by simp
   229     moreover have "card ... = Suc (card (?e t b))"
   229     moreover have "card ... = Suc (card (?e t b))"
   230     proof (rule card_insert_disjoint)
   230     proof (rule card_insert_disjoint)
   231       from `t \<in> tiling domino` have "finite t"
   231       from `t \<in> tiling domino` have "finite t"
   232 	by (rule tiling_domino_finite)
   232         by (rule tiling_domino_finite)
   233       then show "finite (?e t b)"
   233       then show "finite (?e t b)"
   234         by (rule evnodd_finite)
   234         by (rule evnodd_finite)
   235       from e have "(i, j) : ?e a b" by simp
   235       from e have "(i, j) : ?e a b" by simp
   236       with at show "(i, j) ~: ?e t b" by (blast dest: evnoddD)
   236       with at show "(i, j) ~: ?e t b" by (blast dest: evnoddD)
   237     qed
   237     qed