src/HOL/UNITY/Extend.ML
changeset 6822 8932f33259d4
parent 6647 9ec7b9723f43
child 6834 44da4a2a9ef3
equal deleted inserted replaced
6821:350f27e2d649 6822:8932f33259d4
   365 by (dres_inst_tac [("f", "op `` f_act")] arg_cong 1);
   365 by (dres_inst_tac [("f", "op `` f_act")] arg_cong 1);
   366 by (asm_full_simp_tac 
   366 by (asm_full_simp_tac 
   367     (simpset() addsimps [Acts_Join, image_Un, image_compose RS sym, o_def]) 1);
   367     (simpset() addsimps [Acts_Join, image_Un, image_compose RS sym, o_def]) 1);
   368 qed "extend_Join_eq_extend_D";
   368 qed "extend_Join_eq_extend_D";
   369 
   369 
   370 Goal "F : X guarantees Y \
   370 Goal "F : X guar Y ==> extend h F : (extend h `` X) guar (extend h `` Y)";
   371 \     ==> extend h F : (extend h `` X) guarantees (extend h `` Y)";
       
   372 by (rtac guaranteesI 1);
   371 by (rtac guaranteesI 1);
   373 by Auto_tac;
   372 by Auto_tac;
   374 by (blast_tac (claset() addDs [extend_Join_eq_extend_D, guaranteesD]) 1);
   373 by (blast_tac (claset() addDs [extend_Join_eq_extend_D, guaranteesD]) 1);
   375 qed "guarantees_imp_extend_guarantees";
   374 qed "guarantees_imp_extend_guarantees";
   376 
   375 
   377 Goal "extend h F : (extend h `` X) guarantees (extend h `` Y) \
   376 Goal "extend h F : (extend h `` X) guar (extend h `` Y) ==> F : X guar Y";
   378 \     ==> F : X guarantees Y";
       
   379 by (rtac guaranteesI 1);
   377 by (rtac guaranteesI 1);
   380 by (rewrite_goals_tac [guarantees_def, component_def]);
   378 by (rewrite_goals_tac [guarantees_def, component_def]);
   381 by Auto_tac;
   379 by Auto_tac;
   382 by (dtac spec 1);
   380 by (dtac spec 1);
   383 by (dtac (mp RS mp) 1);
   381 by (dtac (mp RS mp) 1);
   384 by (Blast_tac 2);
   382 by (Blast_tac 2);
   385 by (blast_tac (claset() addSDs [inj_extend RS inj_image_mem_iff RS iffD1]) 2);
   383 by (blast_tac (claset() addSDs [inj_extend RS inj_image_mem_iff RS iffD1]) 2);
   386 by Auto_tac;
   384 by Auto_tac;
   387 qed "extend_guarantees_imp_guarantees";
   385 qed "extend_guarantees_imp_guarantees";
   388 
   386 
   389 Goal "(extend h F : (extend h `` X) guarantees (extend h `` Y)) \
   387 Goal "(extend h F : (extend h `` X) guar (extend h `` Y)) = (F : X guar Y)";
   390 \     = (F : X guarantees Y)";
       
   391 by (blast_tac (claset() addIs [guarantees_imp_extend_guarantees,
   388 by (blast_tac (claset() addIs [guarantees_imp_extend_guarantees,
   392 			       extend_guarantees_imp_guarantees]) 1);
   389 			       extend_guarantees_imp_guarantees]) 1);
   393 qed "extend_guarantees_eq";
   390 qed "extend_guarantees_eq";
   394 
   391 
   395 
   392