equal
deleted
inserted
replaced
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 |