equal
deleted
inserted
replaced
52 qed; |
52 qed; |
53 qed; |
53 qed; |
54 qed; |
54 qed; |
55 |
55 |
56 |
56 |
57 subsection {* Basic properties of below *}; |
57 subsection {* Basic properties of ``below'' *}; |
58 |
58 |
59 constdefs |
59 constdefs |
60 below :: "nat => nat set" |
60 below :: "nat => nat set" |
61 "below n == {i. i < n}"; |
61 "below n == {i. i < n}"; |
62 |
62 |
75 by (simp add: below_def less_Suc_eq) blast; |
75 by (simp add: below_def less_Suc_eq) blast; |
76 |
76 |
77 lemmas Sigma_Suc = Sigma_Suc1 Sigma_Suc2; |
77 lemmas Sigma_Suc = Sigma_Suc1 Sigma_Suc2; |
78 |
78 |
79 |
79 |
80 subsection {* Basic properties of evnodd *}; |
80 subsection {* Basic properties of ``evnodd'' *}; |
81 |
81 |
82 constdefs |
82 constdefs |
83 evnodd :: "(nat * nat) set => nat => (nat * nat) set" |
83 evnodd :: "(nat * nat) set => nat => (nat * nat) set" |
84 "evnodd A b == A Int {(i, j). (i + j) mod 2 = b}"; |
84 "evnodd A b == A Int {(i, j). (i + j) mod 2 = b}"; |
85 |
85 |
221 fix b; assume "b < 2"; |
221 fix b; assume "b < 2"; |
222 have "EX i j. ?e a b = {(i, j)}"; by (rule domino_singleton); |
222 have "EX i j. ?e a b = {(i, j)}"; by (rule domino_singleton); |
223 thus "?thesis b"; |
223 thus "?thesis b"; |
224 proof (elim exE); |
224 proof (elim exE); |
225 have "?e (a Un t) b = ?e a b Un ?e t b"; by (rule evnodd_Un); |
225 have "?e (a Un t) b = ?e a b Un ?e t b"; by (rule evnodd_Un); |
226 also; fix i j; assume e: "?e a b = {(i, j)}"; |
226 also; fix i j; assume "?e a b = {(i, j)}"; |
227 also; have "... Un ?e t b = insert (i, j) (?e t b)"; by simp; |
227 also; have "... Un ?e t b = insert (i, j) (?e t b)"; by simp; |
228 also; have "card ... = Suc (card (?e t b))"; |
228 also; have "card ... = Suc (card (?e t b))"; |
229 proof (rule card_insert_disjoint); |
229 proof (rule card_insert_disjoint); |
230 show "finite (?e t b)"; |
230 show "finite (?e t b)"; |
231 by (rule evnodd_finite, rule tiling_domino_finite); |
231 by (rule evnodd_finite, rule tiling_domino_finite); |
290 also; from t; have "... = card (?e ?t 1)"; |
290 also; from t; have "... = card (?e ?t 1)"; |
291 by (rule tiling_domino_01); |
291 by (rule tiling_domino_01); |
292 also; have "?e ?t 1 = ?e ?t'' 1"; by simp; |
292 also; have "?e ?t 1 = ?e ?t'' 1"; by simp; |
293 also; from t''; have "card ... = card (?e ?t'' 0)"; |
293 also; from t''; have "card ... = card (?e ?t'' 0)"; |
294 by (rule tiling_domino_01 [RS sym]); |
294 by (rule tiling_domino_01 [RS sym]); |
295 finally; show False; ..; |
295 finally; have "... < ..."; .; thus False; ..; |
296 qed; |
296 qed; |
297 qed; |
297 qed; |
298 |
298 |
299 end; |
299 end; |