src/HOL/Trancl.ML
changeset 1766 23922221ac87
parent 1760 6f41a494f3b1
child 1786 8a31d85d27b8
equal deleted inserted replaced
1765:5db6b3ea0e28 1766:23922221ac87
   123 by (Asm_full_simp_tac 1);
   123 by (Asm_full_simp_tac 1);
   124 by (Fast_tac 1);
   124 by (Fast_tac 1);
   125 qed "rtrancl_subset";
   125 qed "rtrancl_subset";
   126 
   126 
   127 goal Trancl.thy "!!R. (R^* Un S^*)^* = (R Un S)^*";
   127 goal Trancl.thy "!!R. (R^* Un S^*)^* = (R Un S)^*";
   128 by (best_tac (set_cs addIs [rtrancl_subset,r_into_rtrancl,
   128 by (best_tac (!claset addSIs [rtrancl_subset]
   129                            rtrancl_mono RS subsetD]) 1);
   129                       addIs [r_into_rtrancl, rtrancl_mono RS subsetD]) 1);
   130 qed "rtrancl_Un_rtrancl";
   130 qed "rtrancl_Un_rtrancl";
   131 
   131 
   132 goal Trancl.thy "(R^=)^* = R^*";
   132 goal Trancl.thy "(R^=)^* = R^*";
   133 by (fast_tac (rel_cs addIs [rtrancl_refl,rtrancl_subset,r_into_rtrancl]) 1);
   133 by (fast_tac (!claset addSIs [rtrancl_refl,rtrancl_subset]
       
   134                       addIs  [r_into_rtrancl]) 1);
   134 qed "rtrancl_reflcl";
   135 qed "rtrancl_reflcl";
   135 Addsimps [rtrancl_reflcl];
   136 Addsimps [rtrancl_reflcl];
   136 
   137 
   137 goal Trancl.thy "!!r. (x,y) : (converse r)^* ==> (x,y) : converse(r^*)";
   138 goal Trancl.thy "!!r. (x,y) : (converse r)^* ==> (x,y) : converse(r^*)";
   138 by (rtac converseI 1);
   139 by (rtac converseI 1);