src/HOLCF/ex/loeckx.ML
changeset 9248 e1dee89de037
parent 4721 c8a8482a8124
child 10835 f4745d77e620
--- a/src/HOLCF/ex/loeckx.ML	Wed Jul 05 14:26:58 2000 +0200
+++ b/src/HOLCF/ex/loeckx.ML	Wed Jul 05 16:37:52 2000 +0200
@@ -2,20 +2,12 @@
 (* Elegant proof for continuity of fixed-point operator *)
 (* Loeckx & Sieber S.88                                 *)
 
-val prems = goalw Fix.thy [Ifix_def]
-"Ifix F= lub (range (%i.%G. iterate i G UU)) F";
+Goalw [Ifix_def] "Ifix F= lub (range (%i.%G. iterate i G UU)) F";
 by (stac thelub_fun 1);
-by (rtac ch2ch_fun 1);
-back();
 by (rtac refl 2);
-by (rtac chainI 1);
-by (strip_tac 1);
-by (rtac (less_fun RS iffD2) 1);
-by (strip_tac 1);
-by (rtac (less_fun RS iffD2) 1);
-by (strip_tac 1);
-by (rtac (chain_iterate RS chainE RS spec) 1);
-val loeckx_sieber = result();
+by (blast_tac (claset() addIs [ch2ch_fun, chainI, less_fun RS iffD2,
+                               chain_iterate RS chainE]) 1); 
+qed "loeckx_sieber";
 
 (* 
 
@@ -46,7 +38,7 @@
 
 *)
 
-val prems = goal Fix.thy  "cont(Ifix)";
+Goal "cont(Ifix)";
 by (res_inst_tac 
  [("t","Ifix"),("s","(%f. lub(range(%j.(LAM f. iterate j f UU)`f)))")]
   ssubst 1);
@@ -73,27 +65,20 @@
 by (stac beta_cfun 1);
 by (rtac  cont2cont_CF1L 1);
 by (rtac cont_iterate 1);
-by (rtac (chain_iterate RS chainE RS spec) 1);
-val cont_Ifix2 = result();
+by (rtac (chain_iterate RS chainE) 1);
+qed "cont_Ifix2";
 
 (* the proof in little steps *)
 
-val prems = goal Fix.thy  
-"(% i. iterate i f UU) = (%j.(LAM f. iterate j f UU)`f)";
+Goal "(% i. iterate i f UU) = (%j.(LAM f. iterate j f UU)`f)";
 by (rtac ext 1);
-by (stac beta_cfun 1);
-by (rtac  cont2cont_CF1L 1);
-by (rtac cont_iterate 1);
-by (rtac refl 1);
-val fix_lemma1 = result();
+by (simp_tac (simpset() addsimps [beta_cfun, cont2cont_CF1L, cont_iterate]) 1);
+qed "fix_lemma1";
 
-val prems = goal Fix.thy  
-" Ifix = (%f. lub(range(%j.(LAM f. iterate j f UU)`f)))";
+Goal "Ifix = (%f. lub(range(%j.(LAM f. iterate j f UU)`f)))";
 by (rtac ext 1);
-by (rewtac Ifix_def ); 
-by (stac fix_lemma1 1);
-by (rtac refl 1);
-val fix_lemma2 = result();
+by (simp_tac (simpset() addsimps [Ifix_def, fix_lemma1]) 1);
+qed "fix_lemma2";
 
 (*
 - cont_lubcfun;
@@ -101,11 +86,10 @@
 
 *)
 
-val prems = goal Fix.thy "cont Ifix";
+Goal "cont Ifix";
 by (stac fix_lemma2 1);
 by (rtac cont_lubcfun 1);
 by (rtac chainI 1);
-by (strip_tac 1);
 by (rtac less_cfun2 1);
 by (stac beta_cfun 1);
 by (rtac  cont2cont_CF1L 1);
@@ -113,6 +97,6 @@
 by (stac beta_cfun 1);
 by (rtac  cont2cont_CF1L 1);
 by (rtac cont_iterate 1);
-by (rtac (chain_iterate RS chainE RS spec) 1);
-val cont_Ifix2 = result();
+by (rtac (chain_iterate RS chainE) 1);
+qed "cont_Ifix2";