equal
deleted
inserted
replaced
60 goal Relation.thy "!!r s. [| r'<=r; s'<=s |] ==> (r' O s') <= (r O s)"; |
60 goal Relation.thy "!!r s. [| r'<=r; s'<=s |] ==> (r' O s') <= (r O s)"; |
61 by (fast_tac comp_cs 1); |
61 by (fast_tac comp_cs 1); |
62 qed "comp_mono"; |
62 qed "comp_mono"; |
63 |
63 |
64 goal Relation.thy |
64 goal Relation.thy |
65 "!!r s. [| s <= Sigma A (%x.B); r <= Sigma B (%x.C) |] ==> \ |
65 "!!r s. [| s <= A Times B; r <= B Times C |] ==> \ |
66 \ (r O s) <= Sigma A (%x.C)"; |
66 \ (r O s) <= A Times C"; |
67 by (fast_tac comp_cs 1); |
67 by (fast_tac comp_cs 1); |
68 qed "comp_subset_Sigma"; |
68 qed "comp_subset_Sigma"; |
69 |
69 |
70 (** Natural deduction for trans(r) **) |
70 (** Natural deduction for trans(r) **) |
71 |
71 |
159 (etac RangeE 1), |
159 (etac RangeE 1), |
160 (rtac (hd prems) 1), |
160 (rtac (hd prems) 1), |
161 (REPEAT (etac bexE 1 ORELSE ares_tac prems 1)) ]); |
161 (REPEAT (etac bexE 1 ORELSE ares_tac prems 1)) ]); |
162 |
162 |
163 qed_goal "Image_subset" Relation.thy |
163 qed_goal "Image_subset" Relation.thy |
164 "!!A B r. r <= Sigma A (%x.B) ==> r^^C <= B" |
164 "!!A B r. r <= A Times B ==> r^^C <= B" |
165 (fn _ => |
165 (fn _ => |
166 [ (rtac subsetI 1), |
166 [ (rtac subsetI 1), |
167 (REPEAT (eresolve_tac [asm_rl, ImageE, subsetD RS SigmaD2] 1)) ]); |
167 (REPEAT (eresolve_tac [asm_rl, ImageE, subsetD RS SigmaD2] 1)) ]); |
168 |
168 |
169 val rel_cs = converse_cs addSIs [converseI] |
169 val rel_cs = converse_cs addSIs [converseI] |