src/HOL/Transitive_Closure_lemmas.ML
changeset 12566 fe20540bcf93
parent 12487 bbd564190c9b
equal deleted inserted replaced
12565:9df4b3934487 12566:fe20540bcf93
    66 by (blast_tac (claset() addIs prems) 2);
    66 by (blast_tac (claset() addIs prems) 2);
    67 by (blast_tac (claset() addIs prems) 2);
    67 by (blast_tac (claset() addIs prems) 2);
    68 by (REPEAT (eresolve_tac ([asm_rl,exE,disjE,conjE]@prems) 1));
    68 by (REPEAT (eresolve_tac ([asm_rl,exE,disjE,conjE]@prems) 1));
    69 qed "rtranclE";
    69 qed "rtranclE";
    70 
    70 
    71 bind_thm ("rtrancl_into_rtrancl2", r_into_rtrancl RS rtrancl_trans);
    71 bind_thm ("converse_rtrancl_into_rtrancl", r_into_rtrancl RS rtrancl_trans);
    72 
    72 
    73 (*** More r^* equations and inclusions ***)
    73 (*** More r^* equations and inclusions ***)
    74 
    74 
    75 Goal "(r^*)^* = r^*";
    75 Goal "(r^*)^* = r^*";
    76 by Auto_tac;
    76 by Auto_tac;
   165 bind_thm ("converse_rtranclE2", split_rule
   165 bind_thm ("converse_rtranclE2", split_rule
   166   (read_instantiate [("x","(xa,xb)"), ("z","(za,zb)")] converse_rtranclE));
   166   (read_instantiate [("x","(xa,xb)"), ("z","(za,zb)")] converse_rtranclE));
   167 
   167 
   168 Goal "r O r^* = r^* O r";
   168 Goal "r O r^* = r^* O r";
   169 by (blast_tac (claset() addEs [rtranclE, converse_rtranclE] 
   169 by (blast_tac (claset() addEs [rtranclE, converse_rtranclE] 
   170 	               addIs [rtrancl_into_rtrancl, rtrancl_into_rtrancl2]) 1);
   170 	               addIs [rtrancl_into_rtrancl, converse_rtrancl_into_rtrancl]) 1);
   171 qed "r_comp_rtrancl_eq";
   171 qed "r_comp_rtrancl_eq";
   172 
   172 
   173 
   173 
   174 (**** The relation trancl ****)
   174 (**** The relation trancl ****)
   175 
   175