equal
deleted
inserted
replaced
33 "t : tiling A --> u : tiling A --> t Int u = {} |
33 "t : tiling A --> u : tiling A --> t Int u = {} |
34 --> t Un u : tiling A"; |
34 --> t Un u : tiling A"; |
35 proof; |
35 proof; |
36 assume "t : tiling A" (is "_ : ?T"); |
36 assume "t : tiling A" (is "_ : ?T"); |
37 thus "u : ?T --> t Int u = {} --> t Un u : ?T" (is "?P t"); |
37 thus "u : ?T --> t Int u = {} --> t Un u : ?T" (is "?P t"); |
38 proof (induct t set: tiling); |
38 proof (induct t in set: tiling); |
39 show "?P {}"; by simp; |
39 show "?P {}"; by simp; |
40 |
40 |
41 fix a t; |
41 fix a t; |
42 assume "a : A" "t : ?T" "?P t" "a <= - t"; |
42 assume "a : A" "t : ?T" "?P t" "a <= - t"; |
43 show "?P (a Un t)"; |
43 show "?P (a Un t)"; |
166 "[| d : domino; b < 2 |] ==> EX i j. evnodd d b = {(i, j)}"; |
166 "[| d : domino; b < 2 |] ==> EX i j. evnodd d b = {(i, j)}"; |
167 proof -; |
167 proof -; |
168 assume b: "b < 2"; |
168 assume b: "b < 2"; |
169 assume "d : domino"; |
169 assume "d : domino"; |
170 thus ?thesis (is "?P d"); |
170 thus ?thesis (is "?P d"); |
171 proof (induct d set: domino); |
171 proof (induct d in set: domino); |
172 from b; have b_cases: "b = 0 | b = 1"; by arith; |
172 from b; have b_cases: "b = 0 | b = 1"; by arith; |
173 fix i j; |
173 fix i j; |
174 note [simp] = evnodd_empty evnodd_insert mod_Suc; |
174 note [simp] = evnodd_empty evnodd_insert mod_Suc; |
175 from b_cases; show "?P {(i, j), (i, j + 1)}"; by rule auto; |
175 from b_cases; show "?P {(i, j), (i, j + 1)}"; by rule auto; |
176 from b_cases; show "?P {(i, j), (i + 1, j)}"; by rule auto; |
176 from b_cases; show "?P {(i, j), (i + 1, j)}"; by rule auto; |
190 lemma tiling_domino_finite: |
190 lemma tiling_domino_finite: |
191 "t : tiling domino ==> finite t" (is "t : ?T ==> ?F t"); |
191 "t : tiling domino ==> finite t" (is "t : ?T ==> ?F t"); |
192 proof -; |
192 proof -; |
193 assume "t : ?T"; |
193 assume "t : ?T"; |
194 thus "?F t"; |
194 thus "?F t"; |
195 proof (induct t set: tiling); |
195 proof (induct t in set: tiling); |
196 show "?F {}"; by (rule Finites.emptyI); |
196 show "?F {}"; by (rule Finites.emptyI); |
197 fix a t; assume "?F t"; |
197 fix a t; assume "?F t"; |
198 assume "a : domino"; hence "?F a"; by (rule domino_finite); |
198 assume "a : domino"; hence "?F a"; by (rule domino_finite); |
199 thus "?F (a Un t)"; by (rule finite_UnI); |
199 thus "?F (a Un t)"; by (rule finite_UnI); |
200 qed; |
200 qed; |
204 "t : tiling domino ==> card (evnodd t 0) = card (evnodd t 1)" |
204 "t : tiling domino ==> card (evnodd t 0) = card (evnodd t 1)" |
205 (is "t : ?T ==> ?P t"); |
205 (is "t : ?T ==> ?P t"); |
206 proof -; |
206 proof -; |
207 assume "t : ?T"; |
207 assume "t : ?T"; |
208 thus "?P t"; |
208 thus "?P t"; |
209 proof (induct t set: tiling); |
209 proof (induct t in set: tiling); |
210 show "?P {}"; by (simp add: evnodd_def); |
210 show "?P {}"; by (simp add: evnodd_def); |
211 |
211 |
212 fix a t; |
212 fix a t; |
213 let ?e = evnodd; |
213 let ?e = evnodd; |
214 assume "a : domino" "t : ?T" |
214 assume "a : domino" "t : ?T" |