src/HOLCF/domain/theorems.ML
changeset 5291 5706f0ef1d43
parent 4861 7ed04b370b71
child 6092 d9db67970c73
equal deleted inserted replaced
5290:b755c7240348 5291:5706f0ef1d43
    39 val kill_neq_tac = dtac trueI2 end;
    39 val kill_neq_tac = dtac trueI2 end;
    40 fun case_UU_tac rews i v =      case_tac (v^"=UU") i THEN
    40 fun case_UU_tac rews i v =      case_tac (v^"=UU") i THEN
    41                                 asm_simp_tac (HOLCF_ss addsimps rews) i;
    41                                 asm_simp_tac (HOLCF_ss addsimps rews) i;
    42 
    42 
    43 val chain_tac = REPEAT_DETERM o resolve_tac 
    43 val chain_tac = REPEAT_DETERM o resolve_tac 
    44                 [chain_iterate, ch2ch_fappR, ch2ch_fappL];
    44                 [chain_iterate, ch2ch_Rep_CFunR, ch2ch_Rep_CFunL];
    45 
    45 
    46 (* ----- general proofs ----------------------------------------------------- *)
    46 (* ----- general proofs ----------------------------------------------------- *)
    47 
    47 
    48 val all2E = prove_goal HOL.thy "[| !x y . P x y; P x y ==> R |] ==> R"
    48 val all2E = prove_goal HOL.thy "[| !x y . P x y; P x y ==> R |] ==> R"
    49  (fn prems =>[
    49  (fn prems =>[
   173 val when_strict = pg [] (bind_fun(mk_trp(strict when_app))) [
   173 val when_strict = pg [] (bind_fun(mk_trp(strict when_app))) [
   174                         simp_tac(HOLCF_ss addsimps [when_appl,rep_strict]) 1];
   174                         simp_tac(HOLCF_ss addsimps [when_appl,rep_strict]) 1];
   175 val when_apps = let fun one_when n (con,args) = pg axs_con_def 
   175 val when_apps = let fun one_when n (con,args) = pg axs_con_def 
   176                 (bind_fun (lift_defined % (nonlazy args, 
   176                 (bind_fun (lift_defined % (nonlazy args, 
   177                 mk_trp(when_app`(con_app con args) ===
   177                 mk_trp(when_app`(con_app con args) ===
   178                        mk_cfapp(bound_fun n 0,map %# args)))))[
   178                        mk_cRep_CFun(bound_fun n 0,map %# args)))))[
   179                 asm_simp_tac (HOLCF_ss addsimps [when_appl,ax_abs_iso]) 1];
   179                 asm_simp_tac (HOLCF_ss addsimps [when_appl,ax_abs_iso]) 1];
   180         in mapn one_when 1 cons end;
   180         in mapn one_when 1 cons end;
   181 end;
   181 end;
   182 val when_rews = when_strict::when_apps;
   182 val when_rews = when_strict::when_apps;
   183 
   183