equal
deleted
inserted
replaced
19 |
19 |
20 consts |
20 consts |
21 tiling :: "'a set set => 'a set set"; |
21 tiling :: "'a set set => 'a set set"; |
22 |
22 |
23 inductive "tiling A" |
23 inductive "tiling A" |
24 intrs |
24 intros |
25 empty: "{} : tiling A" |
25 empty: "{} : tiling A" |
26 Un: "a : A ==> t : tiling A ==> a <= - t |
26 Un: "a : A ==> t : tiling A ==> a <= - t |
27 ==> a Un t : tiling A"; |
27 ==> a Un t : tiling A"; |
28 |
28 |
29 |
29 |
113 |
113 |
114 consts |
114 consts |
115 domino :: "(nat * nat) set set"; |
115 domino :: "(nat * nat) set set"; |
116 |
116 |
117 inductive domino |
117 inductive domino |
118 intrs |
118 intros |
119 horiz: "{(i, j), (i, j + 1)} : domino" |
119 horiz: "{(i, j), (i, j + 1)} : domino" |
120 vertl: "{(i, j), (i + 1, j)} : domino"; |
120 vertl: "{(i, j), (i + 1, j)} : domino"; |
121 |
121 |
122 lemma dominoes_tile_row: |
122 lemma dominoes_tile_row: |
123 "{i} <*> below (2 * n) : tiling domino" |
123 "{i} <*> below (2 * n) : tiling domino" |
177 qed; |
177 qed; |
178 |
178 |
179 lemma domino_finite: "d: domino ==> finite d"; |
179 lemma domino_finite: "d: domino ==> finite d"; |
180 proof (induct set: domino); |
180 proof (induct set: domino); |
181 fix i j :: nat; |
181 fix i j :: nat; |
182 show "finite {(i, j), (i, j + 1)}"; by (intro Finites.intrs); |
182 show "finite {(i, j), (i, j + 1)}"; by (intro Finites.intros); |
183 show "finite {(i, j), (i + 1, j)}"; by (intro Finites.intrs); |
183 show "finite {(i, j), (i + 1, j)}"; by (intro Finites.intros); |
184 qed; |
184 qed; |
185 |
185 |
186 |
186 |
187 subsection {* Tilings of dominoes *}; |
187 subsection {* Tilings of dominoes *}; |
188 |
188 |