src/HOLCF/Cfun3.ML
changeset 1267 bca91b4e1710
parent 1168 74be52691d62
child 1461 6bcb44e4d6e5
equal deleted inserted replaced
1266:3ae9fe3c0f68 1267:bca91b4e1710
   222 
   222 
   223 qed_goalw "Istrictify1" Cfun3.thy [Istrictify_def]
   223 qed_goalw "Istrictify1" Cfun3.thy [Istrictify_def]
   224 	"Istrictify(f)(UU)= (UU)"
   224 	"Istrictify(f)(UU)= (UU)"
   225  (fn prems =>
   225  (fn prems =>
   226 	[
   226 	[
   227 	(simp_tac HOL_ss 1)
   227 	(Simp_tac 1)
   228 	]);
   228 	]);
   229 
   229 
   230 qed_goalw "Istrictify2" Cfun3.thy [Istrictify_def]
   230 qed_goalw "Istrictify2" Cfun3.thy [Istrictify_def]
   231 	"~x=UU ==> Istrictify(f)(x)=f`x"
   231 	"~x=UU ==> Istrictify(f)(x)=f`x"
   232  (fn prems =>
   232  (fn prems =>
   233 	[
   233 	[
   234 	(cut_facts_tac prems 1),
   234 	(cut_facts_tac prems 1),
   235 	(asm_simp_tac HOL_ss 1)
   235 	(Asm_simp_tac 1)
   236 	]);
   236 	]);
   237 
   237 
   238 qed_goal "monofun_Istrictify1" Cfun3.thy "monofun(Istrictify)"
   238 qed_goal "monofun_Istrictify1" Cfun3.thy "monofun(Istrictify)"
   239  (fn prems =>
   239  (fn prems =>
   240 	[
   240 	[
   382 
   382 
   383 (* ------------------------------------------------------------------------ *)
   383 (* ------------------------------------------------------------------------ *)
   384 (* Instantiate the simplifier                                               *)
   384 (* Instantiate the simplifier                                               *)
   385 (* ------------------------------------------------------------------------ *)
   385 (* ------------------------------------------------------------------------ *)
   386 
   386 
   387 val Cfun_rews  = [minimal,refl_less,beta_cfun,strict_fapp1,strictify1,
   387 Addsimps [minimal,refl_less,beta_cfun,strict_fapp1,strictify1, strictify2];
   388 		strictify2];
   388 
   389 
   389 
   390 (* ------------------------------------------------------------------------ *)
   390 (* ------------------------------------------------------------------------ *)
   391 (* use cont_tac as autotac.                                                *)
   391 (* use cont_tac as autotac.                                                *)
   392 (* ------------------------------------------------------------------------ *)
   392 (* ------------------------------------------------------------------------ *)
   393 
   393 
   394 val Cfun_ss = HOL_ss 
   394 simpset := !simpset setsolver 
   395 	addsimps  Cfun_rews 
   395            (fn thms => (resolve_tac (TrueI::refl::thms)) ORELSE' atac ORELSE'
   396 	setsolver 
   396                        (fn i => DEPTH_SOLVE_1 (cont_tac i))
   397 	(fn thms => (resolve_tac (TrueI::refl::thms)) ORELSE' atac ORELSE'
   397            );
   398 		    (fn i => DEPTH_SOLVE_1 (cont_tac i))
       
   399 	);