src/HOL/Isar_Examples/Mutilated_Checkerboard.thy
changeset 46582 dcc312f22ee8
parent 46008 c296c75f4cf4
child 55656 eb07b0acbebc
equal deleted inserted replaced
46581:1544a8703787 46582:dcc312f22ee8
   240 
   240 
   241 
   241 
   242 subsection {* Main theorem *}
   242 subsection {* Main theorem *}
   243 
   243 
   244 definition mutilated_board :: "nat => nat => (nat * nat) set"
   244 definition mutilated_board :: "nat => nat => (nat * nat) set"
   245 where
   245   where
   246   "mutilated_board m n =
   246     "mutilated_board m n =
   247     below (2 * (m + 1)) <*> below (2 * (n + 1))
   247       below (2 * (m + 1)) <*> below (2 * (n + 1))
   248       - {(0, 0)} - {(2 * m + 1, 2 * n + 1)}"
   248         - {(0, 0)} - {(2 * m + 1, 2 * n + 1)}"
   249 
   249 
   250 theorem mutil_not_tiling: "mutilated_board m n ~: tiling domino"
   250 theorem mutil_not_tiling: "mutilated_board m n ~: tiling domino"
   251 proof (unfold mutilated_board_def)
   251 proof (unfold mutilated_board_def)
   252   let ?T = "tiling domino"
   252   let ?T = "tiling domino"
   253   let ?t = "below (2 * (m + 1)) <*> below (2 * (n + 1))"
   253   let ?t = "below (2 * (m + 1)) <*> below (2 * (n + 1))"
   254   let ?t' = "?t - {(0, 0)}"
   254   let ?t' = "?t - {(0, 0)}"
   255   let ?t'' = "?t' - {(2 * m + 1, 2 * n + 1)}"
   255   let ?t'' = "?t' - {(2 * m + 1, 2 * n + 1)}"
   256   
   256 
   257   show "?t'' ~: ?T"
   257   show "?t'' ~: ?T"
   258   proof
   258   proof
   259     have t: "?t : ?T" by (rule dominoes_tile_matrix)
   259     have t: "?t : ?T" by (rule dominoes_tile_matrix)
   260     assume t'': "?t'' : ?T"
   260     assume t'': "?t'' : ?T"
   261 
   261