src/HOL/Relation.ML
changeset 1642 21db0cf9a1a4
parent 1605 248e1e125ca0
child 1694 3452958f85a8
equal deleted inserted replaced
1641:46d2d4a249ca 1642:21db0cf9a1a4
    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]