The curried version of HOLCF is now just called HOLCF. The old
authorregensbu
Thu Jun 29 16:28:40 1995 +0200 (1995-06-29)
changeset 116874be52691d62
parent 1167 cbd32a0f2f41
child 1169 5873833cf37f
The curried version of HOLCF is now just called HOLCF. The old
uncurried version is no longer supported
src/HOLCF/Cfun1.ML
src/HOLCF/Cfun1.thy
src/HOLCF/Cfun2.ML
src/HOLCF/Cfun2.thy
src/HOLCF/Cfun3.ML
src/HOLCF/Cfun3.thy
src/HOLCF/Cont.ML
src/HOLCF/Cont.thy
src/HOLCF/Cprod1.ML
src/HOLCF/Cprod1.thy
src/HOLCF/Cprod2.ML
src/HOLCF/Cprod3.ML
src/HOLCF/Cprod3.thy
src/HOLCF/Dlist.ML
src/HOLCF/Dlist.thy
src/HOLCF/Dnat.ML
src/HOLCF/Dnat.thy
src/HOLCF/Dnat2.ML
src/HOLCF/Dnat2.thy
src/HOLCF/Fix.ML
src/HOLCF/Fix.thy
src/HOLCF/Fun1.ML
src/HOLCF/Fun1.thy
src/HOLCF/Fun2.ML
src/HOLCF/Fun2.thy
src/HOLCF/Holcfb.thy
src/HOLCF/Lift1.ML
src/HOLCF/Lift1.thy
src/HOLCF/Lift2.ML
src/HOLCF/Lift3.ML
src/HOLCF/Lift3.thy
src/HOLCF/One.ML
src/HOLCF/One.thy
src/HOLCF/Porder.ML
src/HOLCF/Porder.thy
src/HOLCF/README
src/HOLCF/ROOT.ML
src/HOLCF/Sprod0.ML
src/HOLCF/Sprod0.thy
src/HOLCF/Sprod1.ML
src/HOLCF/Sprod1.thy
src/HOLCF/Sprod2.ML
src/HOLCF/Sprod3.ML
src/HOLCF/Sprod3.thy
src/HOLCF/Ssum0.ML
src/HOLCF/Ssum0.thy
src/HOLCF/Ssum1.ML
src/HOLCF/Ssum1.thy
src/HOLCF/Ssum2.ML
src/HOLCF/Ssum3.ML
src/HOLCF/Ssum3.thy
src/HOLCF/Stream.ML
src/HOLCF/Stream.thy
src/HOLCF/Stream2.ML
src/HOLCF/Stream2.thy
src/HOLCF/Tr1.ML
src/HOLCF/Tr1.thy
src/HOLCF/Tr2.ML
src/HOLCF/Tr2.thy
src/HOLCF/Void.ML
src/HOLCF/Void.thy
src/HOLCF/ccc1.ML
src/HOLCF/ccc1.thy
src/HOLCF/ex/Coind.ML
src/HOLCF/ex/Coind.thy
src/HOLCF/ex/Dagstuhl.ML
src/HOLCF/ex/Dagstuhl.thy
src/HOLCF/ex/Hoare.ML
src/HOLCF/ex/Hoare.thy
src/HOLCF/ex/Loop.ML
src/HOLCF/ex/Loop.thy
src/HOLCF/ex/loeckx.ML
     1.1 --- a/src/HOLCF/Cfun1.ML	Thu Jun 29 16:16:24 1995 +0200
     1.2 +++ b/src/HOLCF/Cfun1.ML	Thu Jun 29 16:28:40 1995 +0200
     1.3 @@ -16,7 +16,7 @@
     1.4   (fn prems =>
     1.5  	[
     1.6  	(rtac (mem_Collect_eq RS ssubst) 1),
     1.7 -	(rtac contX_id 1)
     1.8 +	(rtac cont_id 1)
     1.9  	]);
    1.10  
    1.11  
    1.12 @@ -24,14 +24,14 @@
    1.13  (* less_cfun is a partial order on type 'a -> 'b                            *)
    1.14  (* ------------------------------------------------------------------------ *)
    1.15  
    1.16 -qed_goalw "refl_less_cfun" Cfun1.thy [less_cfun_def] "less_cfun(f,f)"
    1.17 +qed_goalw "refl_less_cfun" Cfun1.thy [less_cfun_def] "less_cfun f f"
    1.18  (fn prems =>
    1.19  	[
    1.20  	(rtac refl_less 1)
    1.21  	]);
    1.22  
    1.23  qed_goalw "antisym_less_cfun" Cfun1.thy [less_cfun_def] 
    1.24 -	"[|less_cfun(f1,f2); less_cfun(f2,f1)|] ==> f1 = f2"
    1.25 +	"[|less_cfun f1 f2; less_cfun f2 f1|] ==> f1 = f2"
    1.26  (fn prems =>
    1.27  	[
    1.28  	(cut_facts_tac prems 1),
    1.29 @@ -44,7 +44,7 @@
    1.30  	]);
    1.31  
    1.32  qed_goalw "trans_less_cfun" Cfun1.thy [less_cfun_def] 
    1.33 -	"[|less_cfun(f1,f2); less_cfun(f2,f3)|] ==> less_cfun(f1,f3)"
    1.34 +	"[|less_cfun f1 f2; less_cfun f2 f3|] ==> less_cfun f1 f3"
    1.35  (fn prems =>
    1.36  	[
    1.37  	(cut_facts_tac prems 1),
    1.38 @@ -57,14 +57,14 @@
    1.39  (* ------------------------------------------------------------------------ *)
    1.40  
    1.41  qed_goal "cfun_cong" Cfun1.thy 
    1.42 -	 "[| f=g; x=y |] ==> f[x] = g[y]"
    1.43 +	 "[| f=g; x=y |] ==> f`x = g`y"
    1.44  (fn prems =>
    1.45  	[
    1.46  	(cut_facts_tac prems 1),
    1.47  	(fast_tac HOL_cs 1)
    1.48  	]);
    1.49  
    1.50 -qed_goal "cfun_fun_cong" Cfun1.thy "f=g ==> f[x] = g[x]"
    1.51 +qed_goal "cfun_fun_cong" Cfun1.thy "f=g ==> f`x = g`x"
    1.52  (fn prems =>
    1.53  	[
    1.54  	(cut_facts_tac prems 1),
    1.55 @@ -72,7 +72,7 @@
    1.56  	(rtac refl 1)
    1.57  	]);
    1.58  
    1.59 -qed_goal "cfun_arg_cong" Cfun1.thy "x=y ==> f[x] = f[y]"
    1.60 +qed_goal "cfun_arg_cong" Cfun1.thy "x=y ==> f`x = f`y"
    1.61  (fn prems =>
    1.62  	[
    1.63  	(cut_facts_tac prems 1),
    1.64 @@ -86,7 +86,7 @@
    1.65  (* additional lemma about the isomorphism between -> and Cfun               *)
    1.66  (* ------------------------------------------------------------------------ *)
    1.67  
    1.68 -qed_goal "Abs_Cfun_inverse2" Cfun1.thy "contX(f) ==> fapp(fabs(f)) = f"
    1.69 +qed_goal "Abs_Cfun_inverse2" Cfun1.thy "cont(f) ==> fapp(fabs(f)) = f"
    1.70  (fn prems =>
    1.71  	[
    1.72  	(cut_facts_tac prems 1),
    1.73 @@ -100,7 +100,7 @@
    1.74  (* ------------------------------------------------------------------------ *)
    1.75  
    1.76  qed_goal "Cfunapp2" Cfun1.thy 
    1.77 -	"contX(f) ==> (fabs(f))[x] = f(x)"
    1.78 +	"cont(f) ==> (fabs f)`x = f x"
    1.79  (fn prems =>
    1.80  	[
    1.81  	(cut_facts_tac prems 1),
    1.82 @@ -112,7 +112,7 @@
    1.83  (* ------------------------------------------------------------------------ *)
    1.84  
    1.85  qed_goal "beta_cfun" Cfun1.thy 
    1.86 -	"contX(c1) ==> (LAM x .c1(x))[u] = c1(u)"
    1.87 +	"cont(c1) ==> (LAM x .c1 x)`u = c1 u"
    1.88  (fn prems =>
    1.89  	[
    1.90  	(cut_facts_tac prems 1),
    1.91 @@ -120,3 +120,6 @@
    1.92  	(atac 1)
    1.93  	]);
    1.94  
    1.95 +
    1.96 +
    1.97 +
     2.1 --- a/src/HOLCF/Cfun1.thy	Thu Jun 29 16:16:24 1995 +0200
     2.2 +++ b/src/HOLCF/Cfun1.thy	Thu Jun 29 16:28:40 1995 +0200
     2.3 @@ -18,8 +18,7 @@
     2.4  
     2.5  consts  
     2.6  	Cfun	:: "('a => 'b)set"
     2.7 -	fapp	:: "('a -> 'b)=>('a => 'b)"	("(_[_])" [1000,0] 1000)
     2.8 -						(* usually Rep_Cfun *)
     2.9 +	fapp	:: "('a -> 'b)=>('a => 'b)"	(* usually Rep_Cfun *)
    2.10  						(* application      *)
    2.11  
    2.12  	fabs	:: "('a => 'b)=>('a -> 'b)"	(binder "LAM " 10)
    2.13 @@ -28,18 +27,24 @@
    2.14  
    2.15  	less_cfun :: "[('a -> 'b),('a -> 'b)]=>bool"
    2.16  
    2.17 -rules 
    2.18 +syntax  "@fapp"     :: "('a -> 'b)=>('a => 'b)" ("_`_" [999,1000] 999)
    2.19 +
    2.20 +translations "f`x" == "fapp f x"
    2.21  
    2.22 -  Cfun_def	"Cfun == {f. contX(f)}"
    2.23 +defs 
    2.24 +  Cfun_def	"Cfun == {f. cont(f)}"
    2.25 +
    2.26 +rules
    2.27  
    2.28    (*faking a type definition... *)
    2.29    (* -> is isomorphic to Cfun   *)
    2.30  
    2.31 -  Rep_Cfun		"fapp(fo):Cfun"
    2.32 -  Rep_Cfun_inverse	"fabs(fapp(fo)) = fo"
    2.33 -  Abs_Cfun_inverse	"f:Cfun ==> fapp(fabs(f))=f"
    2.34 +  Rep_Cfun		"fapp fo : Cfun"
    2.35 +  Rep_Cfun_inverse	"fabs (fapp fo) = fo"
    2.36 +  Abs_Cfun_inverse	"f:Cfun ==> fapp(fabs f) = f"
    2.37  
    2.38 +defs
    2.39    (*defining the abstract constants*)
    2.40 -  less_cfun_def		"less_cfun(fo1,fo2) == ( fapp(fo1) << fapp(fo2) )"
    2.41 +  less_cfun_def		"less_cfun fo1 fo2 == ( fapp fo1 << fapp fo2 )"
    2.42  
    2.43  end
     3.1 --- a/src/HOLCF/Cfun2.ML	Thu Jun 29 16:16:24 1995 +0200
     3.2 +++ b/src/HOLCF/Cfun2.ML	Thu Jun 29 16:28:40 1995 +0200
     3.3 @@ -29,7 +29,7 @@
     3.4  	[
     3.5  	(rtac (less_cfun RS ssubst) 1),
     3.6  	(rtac (Abs_Cfun_inverse2 RS ssubst) 1),
     3.7 -	(rtac contX_const 1),
     3.8 +	(rtac cont_const 1),
     3.9  	(fold_goals_tac [UU_fun_def]),
    3.10  	(rtac minimal_fun 1)
    3.11  	]);
    3.12 @@ -37,35 +37,34 @@
    3.13  (* ------------------------------------------------------------------------ *)
    3.14  (* fapp yields continuous functions in 'a => 'b                             *)
    3.15  (* this is continuity of fapp in its 'second' argument                      *)
    3.16 -(* contX_fapp2 ==> monofun_fapp2 & contlub_fapp2                            *)
    3.17 +(* cont_fapp2 ==> monofun_fapp2 & contlub_fapp2                            *)
    3.18  (* ------------------------------------------------------------------------ *)
    3.19  
    3.20 -qed_goal "contX_fapp2" Cfun2.thy "contX(fapp(fo))"
    3.21 +qed_goal "cont_fapp2" Cfun2.thy "cont(fapp(fo))"
    3.22  (fn prems =>
    3.23  	[
    3.24 -	(res_inst_tac [("P","contX")] CollectD 1),
    3.25 +	(res_inst_tac [("P","cont")] CollectD 1),
    3.26  	(fold_goals_tac [Cfun_def]),
    3.27  	(rtac Rep_Cfun 1)
    3.28  	]);
    3.29  
    3.30 -val monofun_fapp2 = contX_fapp2 RS contX2mono;
    3.31 +val monofun_fapp2 = cont_fapp2 RS cont2mono;
    3.32  (* monofun(fapp(?fo1)) *)
    3.33  
    3.34  
    3.35 -val contlub_fapp2 = contX_fapp2 RS contX2contlub;
    3.36 +val contlub_fapp2 = cont_fapp2 RS cont2contlub;
    3.37  (* contlub(fapp(?fo1)) *)
    3.38  
    3.39  (* ------------------------------------------------------------------------ *)
    3.40 -(* expanded thms contX_fapp2, contlub_fapp2                                 *)
    3.41 -(* looks nice with mixfix syntac _[_]                                       *)
    3.42 +(* expanded thms cont_fapp2, contlub_fapp2                                 *)
    3.43 +(* looks nice with mixfix syntac                                            *)
    3.44  (* ------------------------------------------------------------------------ *)
    3.45  
    3.46 -val contX_cfun_arg = (contX_fapp2 RS contXE RS spec RS mp);
    3.47 -(* is_chain(?x1) ==> range(%i. ?fo3[?x1(i)]) <<| ?fo3[lub(range(?x1))]      *)
    3.48 +val cont_cfun_arg = (cont_fapp2 RS contE RS spec RS mp);
    3.49 +(* is_chain(?x1) ==> range (%i. ?fo3`(?x1 i)) <<| ?fo3`(lub (range ?x1))    *)
    3.50   
    3.51  val contlub_cfun_arg = (contlub_fapp2 RS contlubE RS spec RS mp);
    3.52 -(* is_chain(?x1) ==> ?fo4[lub(range(?x1))] = lub(range(%i. ?fo4[?x1(i)]))   *)
    3.53 -
    3.54 +(* is_chain(?x1) ==> ?fo4`(lub (range ?x1)) = lub (range (%i. ?fo4`(?x1 i))) *)
    3.55  
    3.56  
    3.57  (* ------------------------------------------------------------------------ *)
    3.58 @@ -84,7 +83,7 @@
    3.59  (* monotonicity of application fapp in mixfix syntax [_]_                   *)
    3.60  (* ------------------------------------------------------------------------ *)
    3.61  
    3.62 -qed_goal "monofun_cfun_fun" Cfun2.thy  "f1 << f2 ==> f1[x] << f2[x]"
    3.63 +qed_goal "monofun_cfun_fun" Cfun2.thy  "f1 << f2 ==> f1`x << f2`x"
    3.64  (fn prems =>
    3.65  	[
    3.66  	(cut_facts_tac prems 1),
    3.67 @@ -95,14 +94,14 @@
    3.68  
    3.69  
    3.70  val monofun_cfun_arg = (monofun_fapp2 RS monofunE RS spec RS spec RS mp);
    3.71 -(* ?x2 << ?x1 ==> ?fo5[?x2] << ?fo5[?x1]                                    *)
    3.72 +(* ?x2 << ?x1 ==> ?fo5`?x2 << ?fo5`?x1                                      *)
    3.73  
    3.74  (* ------------------------------------------------------------------------ *)
    3.75  (* monotonicity of fapp in both arguments in mixfix syntax [_]_             *)
    3.76  (* ------------------------------------------------------------------------ *)
    3.77  
    3.78  qed_goal "monofun_cfun" Cfun2.thy
    3.79 -	"[|f1<<f2;x1<<x2|] ==> f1[x1] << f2[x2]"
    3.80 +	"[|f1<<f2;x1<<x2|] ==> f1`x1 << f2`x2"
    3.81  (fn prems =>
    3.82  	[
    3.83  	(cut_facts_tac prems 1),
    3.84 @@ -118,7 +117,7 @@
    3.85  (* ------------------------------------------------------------------------ *)
    3.86  
    3.87  qed_goal "ch2ch_fappR" Cfun2.thy 
    3.88 - "is_chain(Y) ==> is_chain(%i. f[Y(i)])"
    3.89 + "is_chain(Y) ==> is_chain(%i. f`(Y i))"
    3.90  (fn prems =>
    3.91  	[
    3.92  	(cut_facts_tac prems 1),
    3.93 @@ -127,7 +126,7 @@
    3.94  
    3.95  
    3.96  val ch2ch_fappL = (monofun_fapp1 RS ch2ch_MF2L);
    3.97 -(* is_chain(?F) ==> is_chain(%i. ?F(i)[?x])                                 *)
    3.98 +(* is_chain(?F) ==> is_chain (%i. ?F i`?x)                                  *)
    3.99  
   3.100  
   3.101  (* ------------------------------------------------------------------------ *)
   3.102 @@ -136,7 +135,7 @@
   3.103  (* ------------------------------------------------------------------------ *)
   3.104  
   3.105  qed_goal "lub_cfun_mono" Cfun2.thy 
   3.106 -	"is_chain(F) ==> monofun(% x.lub(range(% j.F(j)[x])))"
   3.107 +	"is_chain(F) ==> monofun(% x.lub(range(% j.(F j)`x)))"
   3.108  (fn prems =>
   3.109  	[
   3.110  	(cut_facts_tac prems 1),
   3.111 @@ -153,8 +152,8 @@
   3.112  
   3.113  qed_goal "ex_lubcfun" Cfun2.thy
   3.114  	"[| is_chain(F); is_chain(Y) |] ==>\
   3.115 -\		lub(range(%j. lub(range(%i. F(j)[Y(i)])))) =\
   3.116 -\		lub(range(%i. lub(range(%j. F(j)[Y(i)]))))"
   3.117 +\		lub(range(%j. lub(range(%i. F(j)`(Y i))))) =\
   3.118 +\		lub(range(%i. lub(range(%j. F(j)`(Y i)))))"
   3.119  (fn prems =>
   3.120  	[
   3.121  	(cut_facts_tac prems 1),
   3.122 @@ -169,12 +168,12 @@
   3.123  (* the lub of a chain of cont. functions is continuous                      *)
   3.124  (* ------------------------------------------------------------------------ *)
   3.125  
   3.126 -qed_goal "contX_lubcfun" Cfun2.thy 
   3.127 -	"is_chain(F) ==> contX(% x.lub(range(% j.F(j)[x])))"
   3.128 +qed_goal "cont_lubcfun" Cfun2.thy 
   3.129 +	"is_chain(F) ==> cont(% x.lub(range(% j.F(j)`x)))"
   3.130  (fn prems =>
   3.131  	[
   3.132  	(cut_facts_tac prems 1),
   3.133 -	(rtac monocontlub2contX 1),
   3.134 +	(rtac monocontlub2cont 1),
   3.135  	(etac lub_cfun_mono 1),
   3.136  	(rtac contlubI 1),
   3.137  	(strip_tac 1),
   3.138 @@ -189,7 +188,7 @@
   3.139  (* ------------------------------------------------------------------------ *)
   3.140  
   3.141  qed_goal "lub_cfun" Cfun2.thy 
   3.142 -  "is_chain(CCF) ==> range(CCF) <<| fabs(% x.lub(range(% i.CCF(i)[x])))"
   3.143 +  "is_chain(CCF) ==> range(CCF) <<| (LAM x.lub(range(% i.CCF(i)`x)))"
   3.144  (fn prems =>
   3.145  	[
   3.146  	(cut_facts_tac prems 1),
   3.147 @@ -199,13 +198,13 @@
   3.148  	(rtac allI 1),
   3.149  	(rtac (less_cfun RS ssubst) 1),
   3.150  	(rtac (Abs_Cfun_inverse2 RS ssubst) 1),
   3.151 -	(etac contX_lubcfun 1),
   3.152 +	(etac cont_lubcfun 1),
   3.153  	(rtac (lub_fun RS is_lubE RS conjunct1 RS ub_rangeE RS spec) 1),
   3.154  	(etac (monofun_fapp1 RS ch2ch_monofun) 1),
   3.155  	(strip_tac 1),
   3.156  	(rtac (less_cfun RS ssubst) 1),
   3.157  	(rtac (Abs_Cfun_inverse2 RS ssubst) 1),
   3.158 -	(etac contX_lubcfun 1),
   3.159 +	(etac cont_lubcfun 1),
   3.160  	(rtac (lub_fun RS is_lubE RS conjunct2 RS spec RS mp) 1),
   3.161  	(etac (monofun_fapp1 RS ch2ch_monofun) 1),
   3.162  	(etac (monofun_fapp1 RS ub2ub_monofun) 1)
   3.163 @@ -213,7 +212,7 @@
   3.164  
   3.165  val thelub_cfun = (lub_cfun RS thelubI);
   3.166  (* 
   3.167 -is_chain(?CCF1) ==> lub(range(?CCF1)) = fabs(%x. lub(range(%i. ?CCF1(i)[x])))
   3.168 +is_chain(?CCF1) ==>  lub (range ?CCF1) = (LAM x. lub (range (%i. ?CCF1 i`x)))
   3.169  *)
   3.170  
   3.171  qed_goal "cpo_cfun" Cfun2.thy 
   3.172 @@ -230,7 +229,7 @@
   3.173  (* Extensionality in 'a -> 'b                                               *)
   3.174  (* ------------------------------------------------------------------------ *)
   3.175  
   3.176 -qed_goal "ext_cfun" Cfun1.thy "(!!x. f[x] = g[x]) ==> f = g"
   3.177 +qed_goal "ext_cfun" Cfun1.thy "(!!x. f`x = g`x) ==> f = g"
   3.178   (fn prems =>
   3.179  	[
   3.180  	(res_inst_tac [("t","f")] (Rep_Cfun_inverse RS subst) 1),
   3.181 @@ -245,7 +244,7 @@
   3.182  (* ------------------------------------------------------------------------ *)
   3.183  
   3.184  qed_goal "semi_monofun_fabs" Cfun2.thy 
   3.185 -	"[|contX(f);contX(g);f<<g|]==>fabs(f)<<fabs(g)"
   3.186 +	"[|cont(f);cont(g);f<<g|]==>fabs(f)<<fabs(g)"
   3.187   (fn prems =>
   3.188  	[
   3.189  	(rtac (less_cfun RS iffD2) 1),
   3.190 @@ -260,14 +259,14 @@
   3.191  (* Extenionality wrt. << in 'a -> 'b                                        *)
   3.192  (* ------------------------------------------------------------------------ *)
   3.193  
   3.194 -qed_goal "less_cfun2" Cfun2.thy "(!!x. f[x] << g[x]) ==> f << g"
   3.195 +qed_goal "less_cfun2" Cfun2.thy "(!!x. f`x << g`x) ==> f << g"
   3.196   (fn prems =>
   3.197  	[
   3.198  	(res_inst_tac [("t","f")] (Rep_Cfun_inverse RS subst) 1),
   3.199  	(res_inst_tac [("t","g")] (Rep_Cfun_inverse RS subst) 1),
   3.200  	(rtac semi_monofun_fabs 1),
   3.201 -	(rtac contX_fapp2 1),
   3.202 -	(rtac contX_fapp2 1),
   3.203 +	(rtac cont_fapp2 1),
   3.204 +	(rtac cont_fapp2 1),
   3.205  	(rtac (less_fun RS iffD2) 1),
   3.206  	(rtac allI 1),
   3.207  	(resolve_tac prems 1)
     4.1 --- a/src/HOLCF/Cfun2.thy	Thu Jun 29 16:16:24 1995 +0200
     4.2 +++ b/src/HOLCF/Cfun2.thy	Thu Jun 29 16:28:40 1995 +0200
     4.3 @@ -21,7 +21,7 @@
     4.4  
     4.5  inst_cfun_po	"((op <<)::['a->'b,'a->'b]=>bool) = less_cfun"
     4.6  
     4.7 -(* definitions *)
     4.8 +defs
     4.9  (* The least element in type 'a->'b *)
    4.10  
    4.11  UU_cfun_def	"UU_cfun == fabs(% x.UU)"
     5.1 --- a/src/HOLCF/Cfun3.ML	Thu Jun 29 16:16:24 1995 +0200
     5.2 +++ b/src/HOLCF/Cfun3.ML	Thu Jun 29 16:28:40 1995 +0200
     5.3 @@ -20,7 +20,7 @@
     5.4  	(rtac (thelub_cfun RS ssubst) 1),
     5.5  	(atac 1),
     5.6  	(rtac (Cfunapp2 RS ssubst) 1),
     5.7 -	(etac contX_lubcfun 1),
     5.8 +	(etac cont_lubcfun 1),
     5.9  	(rtac (thelub_fun RS ssubst) 1),
    5.10  	(etac (monofun_fapp1 RS ch2ch_monofun) 1),
    5.11  	(rtac refl 1)
    5.12 @@ -28,25 +28,25 @@
    5.13  
    5.14  
    5.15  (* ------------------------------------------------------------------------ *)
    5.16 -(* the contX property for fapp in its first argument                        *)
    5.17 +(* the cont property for fapp in its first argument                        *)
    5.18  (* ------------------------------------------------------------------------ *)
    5.19  
    5.20 -qed_goal "contX_fapp1" Cfun3.thy "contX(fapp)"
    5.21 +qed_goal "cont_fapp1" Cfun3.thy "cont(fapp)"
    5.22  (fn prems =>
    5.23  	[
    5.24 -	(rtac monocontlub2contX 1),
    5.25 +	(rtac monocontlub2cont 1),
    5.26  	(rtac monofun_fapp1 1),
    5.27  	(rtac contlub_fapp1 1)
    5.28  	]);
    5.29  
    5.30  
    5.31  (* ------------------------------------------------------------------------ *)
    5.32 -(* contlub, contX properties of fapp in its first argument in mixfix _[_]   *)
    5.33 +(* contlub, cont properties of fapp in its first argument in mixfix _[_]   *)
    5.34  (* ------------------------------------------------------------------------ *)
    5.35  
    5.36  qed_goal "contlub_cfun_fun" Cfun3.thy 
    5.37  "is_chain(FY) ==>\
    5.38 -\ lub(range(FY))[x] = lub(range(%i.FY(i)[x]))"
    5.39 +\ lub(range FY)`x = lub(range (%i.FY(i)`x))"
    5.40  (fn prems =>
    5.41  	[
    5.42  	(cut_facts_tac prems 1),
    5.43 @@ -58,9 +58,9 @@
    5.44  	]);
    5.45  
    5.46  
    5.47 -qed_goal "contX_cfun_fun" Cfun3.thy 
    5.48 +qed_goal "cont_cfun_fun" Cfun3.thy 
    5.49  "is_chain(FY) ==>\
    5.50 -\ range(%i.FY(i)[x]) <<| lub(range(FY))[x]"
    5.51 +\ range(%i.FY(i)`x) <<| lub(range FY)`x"
    5.52  (fn prems =>
    5.53  	[
    5.54  	(cut_facts_tac prems 1),
    5.55 @@ -71,26 +71,26 @@
    5.56  
    5.57  
    5.58  (* ------------------------------------------------------------------------ *)
    5.59 -(* contlub, contX  properties of fapp in both argument in mixfix _[_]       *)
    5.60 +(* contlub, cont  properties of fapp in both argument in mixfix _[_]       *)
    5.61  (* ------------------------------------------------------------------------ *)
    5.62  
    5.63  qed_goal "contlub_cfun" Cfun3.thy 
    5.64  "[|is_chain(FY);is_chain(TY)|] ==>\
    5.65 -\ lub(range(FY))[lub(range(TY))] = lub(range(%i.FY(i)[TY(i)]))"
    5.66 +\ (lub(range FY))`(lub(range TY)) = lub(range(%i.FY(i)`(TY i)))"
    5.67  (fn prems =>
    5.68  	[
    5.69  	(cut_facts_tac prems 1),
    5.70  	(rtac contlub_CF2 1),
    5.71 -	(rtac contX_fapp1 1),
    5.72 +	(rtac cont_fapp1 1),
    5.73  	(rtac allI 1),
    5.74 -	(rtac contX_fapp2 1),
    5.75 +	(rtac cont_fapp2 1),
    5.76  	(atac 1),
    5.77  	(atac 1)
    5.78  	]);
    5.79  
    5.80 -qed_goal "contX_cfun" Cfun3.thy 
    5.81 +qed_goal "cont_cfun" Cfun3.thy 
    5.82  "[|is_chain(FY);is_chain(TY)|] ==>\
    5.83 -\ range(%i.FY(i)[TY(i)]) <<| lub(range(FY))[lub(range(TY))]"
    5.84 +\ range(%i.(FY i)`(TY i)) <<| (lub (range FY))`(lub(range TY))"
    5.85  (fn prems =>
    5.86  	[
    5.87  	(cut_facts_tac prems 1),
    5.88 @@ -106,32 +106,32 @@
    5.89  
    5.90  
    5.91  (* ------------------------------------------------------------------------ *)
    5.92 -(* contX2contX lemma for fapp                                               *)
    5.93 +(* cont2cont lemma for fapp                                               *)
    5.94  (* ------------------------------------------------------------------------ *)
    5.95  
    5.96 -qed_goal "contX2contX_fapp" Cfun3.thy 
    5.97 -	"[|contX(%x.ft(x));contX(%x.tt(x))|] ==> contX(%x.(ft(x))[tt(x)])"
    5.98 +qed_goal "cont2cont_fapp" Cfun3.thy 
    5.99 +	"[|cont(%x.ft x);cont(%x.tt x)|] ==> cont(%x. (ft x)`(tt x))"
   5.100   (fn prems =>
   5.101  	[
   5.102  	(cut_facts_tac prems 1),
   5.103 -	(rtac contX2contX_app2 1),
   5.104 -	(rtac contX2contX_app2 1),
   5.105 -	(rtac contX_const 1),
   5.106 -	(rtac contX_fapp1 1),
   5.107 +	(rtac cont2cont_app2 1),
   5.108 +	(rtac cont2cont_app2 1),
   5.109 +	(rtac cont_const 1),
   5.110 +	(rtac cont_fapp1 1),
   5.111  	(atac 1),
   5.112 -	(rtac contX_fapp2 1),
   5.113 +	(rtac cont_fapp2 1),
   5.114  	(atac 1)
   5.115  	]);
   5.116  
   5.117  
   5.118  
   5.119  (* ------------------------------------------------------------------------ *)
   5.120 -(* contX2mono Lemma for %x. LAM y. c1(x,y)                                  *)
   5.121 +(* cont2mono Lemma for %x. LAM y. c1(x)(y)                                  *)
   5.122  (* ------------------------------------------------------------------------ *)
   5.123  
   5.124 -qed_goal "contX2mono_LAM" Cfun3.thy 
   5.125 - "[|!x.contX(c1(x)); !y.monofun(%x.c1(x,y))|] ==>\
   5.126 -\	 		monofun(%x. LAM y. c1(x,y))"
   5.127 +qed_goal "cont2mono_LAM" Cfun3.thy 
   5.128 + "[|!x.cont(c1 x); !y.monofun(%x.c1 x y)|] ==>\
   5.129 +\	 		monofun(%x. LAM y. c1 x y)"
   5.130  (fn prems =>
   5.131  	[
   5.132  	(cut_facts_tac prems 1),
   5.133 @@ -148,70 +148,70 @@
   5.134  	]);
   5.135  
   5.136  (* ------------------------------------------------------------------------ *)
   5.137 -(* contX2contX Lemma for %x. LAM y. c1(x,y)                                 *)
   5.138 +(* cont2cont Lemma for %x. LAM y. c1 x y)                                 *)
   5.139  (* ------------------------------------------------------------------------ *)
   5.140  
   5.141 -qed_goal "contX2contX_LAM" Cfun3.thy 
   5.142 - "[| !x.contX(c1(x)); !y.contX(%x.c1(x,y)) |] ==> contX(%x. LAM y. c1(x,y))"
   5.143 +qed_goal "cont2cont_LAM" Cfun3.thy 
   5.144 + "[| !x.cont(c1 x); !y.cont(%x.c1 x y) |] ==> cont(%x. LAM y. c1 x y)"
   5.145  (fn prems =>
   5.146  	[
   5.147  	(cut_facts_tac prems 1),
   5.148 -	(rtac monocontlub2contX 1),
   5.149 -	(etac contX2mono_LAM 1),
   5.150 -	(rtac (contX2mono RS allI) 1),
   5.151 +	(rtac monocontlub2cont 1),
   5.152 +	(etac cont2mono_LAM 1),
   5.153 +	(rtac (cont2mono RS allI) 1),
   5.154  	(etac spec 1),
   5.155  	(rtac contlubI 1),
   5.156  	(strip_tac 1),
   5.157  	(rtac (thelub_cfun RS ssubst) 1),
   5.158 -	(rtac (contX2mono_LAM RS ch2ch_monofun) 1),
   5.159 +	(rtac (cont2mono_LAM RS ch2ch_monofun) 1),
   5.160  	(atac 1),
   5.161 -	(rtac (contX2mono RS allI) 1),
   5.162 +	(rtac (cont2mono RS allI) 1),
   5.163  	(etac spec 1),
   5.164  	(atac 1),
   5.165  	(res_inst_tac [("f","fabs")] arg_cong 1),
   5.166  	(rtac ext 1),
   5.167  	(rtac (beta_cfun RS ext RS ssubst) 1),
   5.168  	(etac spec 1),
   5.169 -	(rtac (contX2contlub RS contlubE 
   5.170 +	(rtac (cont2contlub RS contlubE 
   5.171  		RS spec RS mp ) 1),
   5.172  	(etac spec 1),
   5.173  	(atac 1)
   5.174  	]);
   5.175  
   5.176  (* ------------------------------------------------------------------------ *)
   5.177 -(* elimination of quantifier in premisses of contX2contX_LAM yields good    *)
   5.178 -(* lemma for the contX tactic                                               *)
   5.179 +(* elimination of quantifier in premisses of cont2cont_LAM yields good    *)
   5.180 +(* lemma for the cont tactic                                               *)
   5.181  (* ------------------------------------------------------------------------ *)
   5.182  
   5.183 -val contX2contX_LAM2 = (allI RSN (2,(allI RS contX2contX_LAM)));
   5.184 +val cont2cont_LAM2 = (allI RSN (2,(allI RS cont2cont_LAM)));
   5.185  (*
   5.186 -	[| !!x. contX(?c1.0(x)); !!y. contX(%x. ?c1.0(x,y)) |] ==>
   5.187 -					contX(%x. LAM y. ?c1.0(x,y))
   5.188 +[| !!x. cont (?c1.0 x);
   5.189 +    !!y. cont (%x. ?c1.0 x y) |] ==> cont (%x. LAM y. ?c1.0 x y)
   5.190  *)
   5.191  
   5.192  (* ------------------------------------------------------------------------ *)
   5.193 -(* contX2contX tactic                                                       *)
   5.194 +(* cont2cont tactic                                                       *)
   5.195  (* ------------------------------------------------------------------------ *)
   5.196  
   5.197 -val contX_lemmas = [contX_const, contX_id, contX_fapp2,
   5.198 -			contX2contX_fapp,contX2contX_LAM2];
   5.199 +val cont_lemmas = [cont_const, cont_id, cont_fapp2,
   5.200 +			cont2cont_fapp,cont2cont_LAM2];
   5.201  
   5.202  
   5.203 -val contX_tac = (fn i => (resolve_tac contX_lemmas i));
   5.204 +val cont_tac = (fn i => (resolve_tac cont_lemmas i));
   5.205  
   5.206 -val contX_tacR = (fn i => (REPEAT (contX_tac i)));
   5.207 +val cont_tacR = (fn i => (REPEAT (cont_tac i)));
   5.208  
   5.209  (* ------------------------------------------------------------------------ *)
   5.210  (* function application _[_]  is strict in its first arguments              *)
   5.211  (* ------------------------------------------------------------------------ *)
   5.212  
   5.213 -qed_goal "strict_fapp1" Cfun3.thy "(UU::'a->'b)[x] = (UU::'b)"
   5.214 +qed_goal "strict_fapp1" Cfun3.thy "(UU::'a->'b)`x = (UU::'b)"
   5.215   (fn prems =>
   5.216  	[
   5.217  	(rtac (inst_cfun_pcpo RS ssubst) 1),
   5.218  	(rewrite_goals_tac [UU_cfun_def]),
   5.219  	(rtac (beta_cfun RS ssubst) 1),
   5.220 -	(contX_tac 1),
   5.221 +	(cont_tac 1),
   5.222  	(rtac refl 1)
   5.223  	]);
   5.224  
   5.225 @@ -224,19 +224,15 @@
   5.226  	"Istrictify(f)(UU)= (UU)"
   5.227   (fn prems =>
   5.228  	[
   5.229 -	(rtac select_equality 1),
   5.230 -	(fast_tac HOL_cs 1),
   5.231 -	(fast_tac HOL_cs 1)
   5.232 +	(simp_tac HOL_ss 1)
   5.233  	]);
   5.234  
   5.235  qed_goalw "Istrictify2" Cfun3.thy [Istrictify_def]
   5.236 -	"~x=UU ==> Istrictify(f)(x)=f[x]"
   5.237 +	"~x=UU ==> Istrictify(f)(x)=f`x"
   5.238   (fn prems =>
   5.239  	[
   5.240  	(cut_facts_tac prems 1),
   5.241 -	(rtac select_equality 1),
   5.242 -	(fast_tac HOL_cs 1),
   5.243 -	(fast_tac HOL_cs 1)
   5.244 +	(asm_simp_tac HOL_ss 1)
   5.245  	]);
   5.246  
   5.247  qed_goal "monofun_Istrictify1" Cfun3.thy "monofun(Istrictify)"
   5.248 @@ -295,7 +291,7 @@
   5.249  	(rtac (thelub_cfun RS ssubst) 1),
   5.250  	(atac 1),
   5.251  	(rtac (beta_cfun RS ssubst) 1),
   5.252 -	(rtac contX_lubcfun 1),
   5.253 +	(rtac cont_lubcfun 1),
   5.254  	(atac 1),
   5.255  	(rtac refl 1),
   5.256  	(hyp_subst_tac 1),
   5.257 @@ -326,7 +322,7 @@
   5.258  	(rtac Istrictify1 1),
   5.259  	(rtac (Istrictify2 RS ssubst) 1),
   5.260  	(atac 1),
   5.261 -	(res_inst_tac [("s","lub(range(%i. f[Y(i)]))")] trans 1),
   5.262 +	(res_inst_tac [("s","lub(range(%i. f`(Y i)))")] trans 1),
   5.263  	(rtac contlub_cfun_arg 1),
   5.264  	(atac 1),
   5.265  	(rtac lub_equal2 1),
   5.266 @@ -347,38 +343,38 @@
   5.267  	]);
   5.268  
   5.269  
   5.270 -val contX_Istrictify1 = (contlub_Istrictify1 RS 
   5.271 -	(monofun_Istrictify1 RS monocontlub2contX)); 
   5.272 +val cont_Istrictify1 = (contlub_Istrictify1 RS 
   5.273 +	(monofun_Istrictify1 RS monocontlub2cont)); 
   5.274  
   5.275 -val contX_Istrictify2 = (contlub_Istrictify2 RS 
   5.276 -	(monofun_Istrictify2 RS monocontlub2contX)); 
   5.277 +val cont_Istrictify2 = (contlub_Istrictify2 RS 
   5.278 +	(monofun_Istrictify2 RS monocontlub2cont)); 
   5.279  
   5.280  
   5.281  qed_goalw "strictify1" Cfun3.thy [strictify_def]
   5.282 -	"strictify[f][UU]=UU"
   5.283 +	"strictify`f`UU=UU"
   5.284   (fn prems =>
   5.285  	[
   5.286  	(rtac (beta_cfun RS ssubst) 1),
   5.287 -	(contX_tac 1),
   5.288 -	(rtac contX_Istrictify2 1),
   5.289 -	(rtac contX2contX_CF1L 1),
   5.290 -	(rtac contX_Istrictify1 1),
   5.291 +	(cont_tac 1),
   5.292 +	(rtac cont_Istrictify2 1),
   5.293 +	(rtac cont2cont_CF1L 1),
   5.294 +	(rtac cont_Istrictify1 1),
   5.295  	(rtac (beta_cfun RS ssubst) 1),
   5.296 -	(rtac contX_Istrictify2 1),
   5.297 +	(rtac cont_Istrictify2 1),
   5.298  	(rtac Istrictify1 1)
   5.299  	]);
   5.300  
   5.301  qed_goalw "strictify2" Cfun3.thy [strictify_def]
   5.302 -	"~x=UU ==> strictify[f][x]=f[x]"
   5.303 +	"~x=UU ==> strictify`f`x=f`x"
   5.304   (fn prems =>
   5.305  	[
   5.306  	(rtac (beta_cfun RS ssubst) 1),
   5.307 -	(contX_tac 1),
   5.308 -	(rtac contX_Istrictify2 1),
   5.309 -	(rtac contX2contX_CF1L 1),
   5.310 -	(rtac contX_Istrictify1 1),
   5.311 +	(cont_tac 1),
   5.312 +	(rtac cont_Istrictify2 1),
   5.313 +	(rtac cont2cont_CF1L 1),
   5.314 +	(rtac cont_Istrictify1 1),
   5.315  	(rtac (beta_cfun RS ssubst) 1),
   5.316 -	(rtac contX_Istrictify2 1),
   5.317 +	(rtac cont_Istrictify2 1),
   5.318  	(rtac Istrictify2 1),
   5.319  	(resolve_tac prems 1)
   5.320  	]);
   5.321 @@ -392,12 +388,12 @@
   5.322  		strictify2];
   5.323  
   5.324  (* ------------------------------------------------------------------------ *)
   5.325 -(* use contX_tac as autotac.                                                *)
   5.326 +(* use cont_tac as autotac.                                                *)
   5.327  (* ------------------------------------------------------------------------ *)
   5.328  
   5.329  val Cfun_ss = HOL_ss 
   5.330  	addsimps  Cfun_rews 
   5.331  	setsolver 
   5.332  	(fn thms => (resolve_tac (TrueI::refl::thms)) ORELSE' atac ORELSE'
   5.333 -		    (fn i => DEPTH_SOLVE_1 (contX_tac i))
   5.334 +		    (fn i => DEPTH_SOLVE_1 (cont_tac i))
   5.335  	);
     6.1 --- a/src/HOLCF/Cfun3.thy	Thu Jun 29 16:16:24 1995 +0200
     6.2 +++ b/src/HOLCF/Cfun3.thy	Thu Jun 29 16:28:40 1995 +0200
     6.3 @@ -19,13 +19,11 @@
     6.4  
     6.5  inst_cfun_pcpo	"(UU::'a->'b) = UU_cfun"
     6.6  
     6.7 -Istrictify_def	"Istrictify(f,x) == (@z.
     6.8 -			  ( x=UU --> z = UU)
     6.9 -			& (~x=UU --> z = f[x]))"	
    6.10 +defs
    6.11  
    6.12 -strictify_def	"strictify == (LAM f x.Istrictify(f,x))"
    6.13 +Istrictify_def	"Istrictify f x == if x=UU then UU else f`x"	
    6.14 +
    6.15 +strictify_def	"strictify == (LAM f x.Istrictify f x)"
    6.16  
    6.17  end
    6.18  
    6.19 -
    6.20 -
     7.1 --- a/src/HOLCF/Cont.ML	Thu Jun 29 16:16:24 1995 +0200
     7.2 +++ b/src/HOLCF/Cont.ML	Thu Jun 29 16:28:40 1995 +0200
     7.3 @@ -31,16 +31,16 @@
     7.4  	]);
     7.5  
     7.6  
     7.7 -qed_goalw "contXI" Cont.thy [contX]
     7.8 - "! Y. is_chain(Y) --> range(% i.f(Y(i))) <<| f(lub(range(Y))) ==> contX(f)"
     7.9 +qed_goalw "contI" Cont.thy [cont]
    7.10 + "! Y. is_chain(Y) --> range(% i.f(Y(i))) <<| f(lub(range(Y))) ==> cont(f)"
    7.11  (fn prems =>
    7.12  	[
    7.13  	(cut_facts_tac prems 1),
    7.14  	(atac 1)
    7.15  	]);
    7.16  
    7.17 -qed_goalw "contXE" Cont.thy [contX]
    7.18 - "contX(f) ==> ! Y. is_chain(Y) --> range(% i.f(Y(i))) <<| f(lub(range(Y)))"
    7.19 +qed_goalw "contE" Cont.thy [cont]
    7.20 + "cont(f) ==> ! Y. is_chain(Y) --> range(% i.f(Y(i))) <<| f(lub(range(Y)))"
    7.21  (fn prems =>
    7.22  	[
    7.23  	(cut_facts_tac prems 1),
    7.24 @@ -66,7 +66,7 @@
    7.25  
    7.26  (* ------------------------------------------------------------------------ *)
    7.27  (* the main purpose of cont.thy is to show:                                 *)
    7.28 -(*              monofun(f) & contlub(f)  <==> contX(f)                      *)
    7.29 +(*              monofun(f) & contlub(f)  <==> cont(f)                      *)
    7.30  (* ------------------------------------------------------------------------ *)
    7.31  
    7.32  (* ------------------------------------------------------------------------ *)
    7.33 @@ -100,11 +100,11 @@
    7.34  	]);
    7.35  
    7.36  (* ------------------------------------------------------------------------ *)
    7.37 -(* left to right: monofun(f) & contlub(f)  ==> contX(f)                     *)
    7.38 +(* left to right: monofun(f) & contlub(f)  ==> cont(f)                     *)
    7.39  (* ------------------------------------------------------------------------ *)
    7.40  
    7.41 -qed_goalw "monocontlub2contX" Cont.thy [contX]
    7.42 -	"[|monofun(f);contlub(f)|] ==> contX(f)"
    7.43 +qed_goalw "monocontlub2cont" Cont.thy [cont]
    7.44 +	"[|monofun(f);contlub(f)|] ==> cont(f)"
    7.45  (fn prems =>
    7.46  	[
    7.47  	(cut_facts_tac prems 1),
    7.48 @@ -120,49 +120,49 @@
    7.49  (* first a lemma about binary chains                                        *)
    7.50  (* ------------------------------------------------------------------------ *)
    7.51  
    7.52 -qed_goal "binchain_contX" Cont.thy
    7.53 -"[| contX(f); x << y |]  ==> range(%i. f(if(i = 0,x,y))) <<| f(y)"
    7.54 +qed_goal "binchain_cont" Cont.thy
    7.55 +"[| cont(f); x << y |]  ==> range(%i. f(if i = 0 then x else y)) <<| f(y)"
    7.56  (fn prems => 
    7.57  	[
    7.58  	(cut_facts_tac prems 1),
    7.59  	(rtac subst 1), 
    7.60 -	(etac (contXE RS spec RS mp) 2),
    7.61 +	(etac (contE RS spec RS mp) 2),
    7.62  	(etac bin_chain 2),
    7.63  	(res_inst_tac [("y","y")] arg_cong 1),
    7.64  	(etac (lub_bin_chain RS thelubI) 1)
    7.65  	]);
    7.66  
    7.67  (* ------------------------------------------------------------------------ *)
    7.68 -(* right to left: contX(f) ==> monofun(f) & contlub(f)                      *)
    7.69 -(* part1:         contX(f) ==> monofun(f                                    *)
    7.70 +(* right to left: cont(f) ==> monofun(f) & contlub(f)                      *)
    7.71 +(* part1:         cont(f) ==> monofun(f                                    *)
    7.72  (* ------------------------------------------------------------------------ *)
    7.73  
    7.74 -qed_goalw "contX2mono" Cont.thy [monofun]
    7.75 -	"contX(f) ==> monofun(f)"
    7.76 +qed_goalw "cont2mono" Cont.thy [monofun]
    7.77 +	"cont(f) ==> monofun(f)"
    7.78  (fn prems =>
    7.79  	[
    7.80  	(cut_facts_tac prems 1),
    7.81  	(strip_tac 1),
    7.82 -	(res_inst_tac [("s","if(0 = 0,x,y)")] subst 1),
    7.83 -	(rtac (binchain_contX RS is_ub_lub) 2),
    7.84 +	(res_inst_tac [("s","if 0 = 0 then x else y")] subst 1),
    7.85 +	(rtac (binchain_cont RS is_ub_lub) 2),
    7.86  	(atac 2),
    7.87  	(atac 2),
    7.88  	(simp_tac nat_ss 1)
    7.89  	]);
    7.90  
    7.91  (* ------------------------------------------------------------------------ *)
    7.92 -(* right to left: contX(f) ==> monofun(f) & contlub(f)                      *)
    7.93 -(* part2:         contX(f) ==>              contlub(f)                      *)
    7.94 +(* right to left: cont(f) ==> monofun(f) & contlub(f)                      *)
    7.95 +(* part2:         cont(f) ==>              contlub(f)                      *)
    7.96  (* ------------------------------------------------------------------------ *)
    7.97  
    7.98 -qed_goalw "contX2contlub" Cont.thy [contlub]
    7.99 -	"contX(f) ==> contlub(f)"
   7.100 +qed_goalw "cont2contlub" Cont.thy [contlub]
   7.101 +	"cont(f) ==> contlub(f)"
   7.102  (fn prems =>
   7.103  	[
   7.104  	(cut_facts_tac prems 1),
   7.105  	(strip_tac 1),
   7.106  	(rtac (thelubI RS sym) 1),
   7.107 -	(etac (contXE RS spec RS mp) 1),
   7.108 +	(etac (contE RS spec RS mp) 1),
   7.109  	(atac 1)
   7.110  	]);
   7.111  
   7.112 @@ -172,7 +172,7 @@
   7.113  (* ------------------------------------------------------------------------ *)
   7.114  
   7.115  qed_goal "ch2ch_MF2L" Cont.thy 
   7.116 -"[|monofun(MF2); is_chain(F)|] ==> is_chain(%i. MF2(F(i),x))"
   7.117 +"[|monofun(MF2); is_chain(F)|] ==> is_chain(%i. MF2 (F i) x)"
   7.118  (fn prems =>
   7.119  	[
   7.120  	(cut_facts_tac prems 1),
   7.121 @@ -182,7 +182,7 @@
   7.122  
   7.123  
   7.124  qed_goal "ch2ch_MF2R" Cont.thy 
   7.125 -"[|monofun(MF2(f)); is_chain(Y)|] ==> is_chain(%i. MF2(f,Y(i)))"
   7.126 +"[|monofun(MF2(f)); is_chain(Y)|] ==> is_chain(%i. MF2 f (Y i))"
   7.127  (fn prems =>
   7.128  	[
   7.129  	(cut_facts_tac prems 1),
   7.130 @@ -210,7 +210,7 @@
   7.131  "[|monofun(MF2::('a::po=>'b::po=>'c::pcpo));\
   7.132  \  !f.monofun(MF2(f)::('b::po=>'c::pcpo));\
   7.133  \	is_chain(F);is_chain(Y)|] ==> \
   7.134 -\	is_chain(%j. lub(range(%i. MF2(F(j),Y(i)))))"
   7.135 +\	is_chain(%j. lub(range(%i. MF2 (F j) (Y i))))"
   7.136  (fn prems =>
   7.137  	[
   7.138  	(cut_facts_tac prems 1),
   7.139 @@ -230,7 +230,7 @@
   7.140  "[|monofun(MF2::('a::po=>'b::po=>'c::pcpo));\
   7.141  \  !f.monofun(MF2(f)::('b::po=>'c::pcpo));\
   7.142  \	is_chain(F);is_chain(Y)|] ==> \
   7.143 -\	is_chain(%i. lub(range(%j. MF2(F(j),Y(i)))))"
   7.144 +\	is_chain(%i. lub(range(%j. MF2 (F j) (Y i))))"
   7.145  (fn prems =>
   7.146  	[
   7.147  	(cut_facts_tac prems 1),
   7.148 @@ -250,7 +250,7 @@
   7.149  "[|monofun(MF2::('a::po=>'b::po=>'c::pcpo));\
   7.150  \  !f.monofun(MF2(f)::('b::po=>'c::pcpo));\
   7.151  \	is_chain(F)|] ==> \
   7.152 -\	monofun(% x.lub(range(% j.MF2(F(j),x))))"
   7.153 +\	monofun(% x.lub(range(% j.MF2 (F j) (x))))"
   7.154  (fn prems =>
   7.155  	[
   7.156  	(cut_facts_tac prems 1),
   7.157 @@ -270,8 +270,8 @@
   7.158  "[|monofun(MF2::('a::po=>'b::po=>'c::pcpo));\
   7.159  \  !f.monofun(MF2(f)::('b::po=>'c::pcpo));\
   7.160  \	is_chain(F); is_chain(Y)|] ==> \
   7.161 -\		lub(range(%j. lub(range(%i. MF2(F(j),Y(i)))))) =\
   7.162 -\		lub(range(%i. lub(range(%j. MF2(F(j),Y(i))))))"
   7.163 +\		lub(range(%j. lub(range(%i. MF2(F j) (Y i))))) =\
   7.164 +\		lub(range(%i. lub(range(%j. MF2(F j) (Y i)))))"
   7.165   (fn prems =>
   7.166  	[
   7.167  	(cut_facts_tac prems 1),
   7.168 @@ -374,24 +374,24 @@
   7.169  (* ------------------------------------------------------------------------ *)
   7.170  
   7.171  qed_goal "contlub_CF2" Cont.thy 
   7.172 -"[|contX(CF2);!f.contX(CF2(f));is_chain(FY);is_chain(TY)|] ==>\
   7.173 +"[|cont(CF2);!f.cont(CF2(f));is_chain(FY);is_chain(TY)|] ==>\
   7.174  \ CF2(lub(range(FY)))(lub(range(TY))) = lub(range(%i.CF2(FY(i))(TY(i))))"
   7.175   (fn prems =>
   7.176  	[
   7.177  	(cut_facts_tac prems 1),
   7.178 -	(rtac ((hd prems) RS contX2contlub RS contlubE RS spec RS mp RS ssubst) 1),
   7.179 +	(rtac ((hd prems) RS cont2contlub RS contlubE RS spec RS mp RS ssubst) 1),
   7.180  	(atac 1),
   7.181  	(rtac (thelub_fun RS ssubst) 1),
   7.182 -	(rtac ((hd prems) RS contX2mono RS ch2ch_monofun) 1),
   7.183 +	(rtac ((hd prems) RS cont2mono RS ch2ch_monofun) 1),
   7.184  	(atac 1),
   7.185  	(rtac trans 1),
   7.186 -	(rtac (((hd (tl prems)) RS spec RS contX2contlub) RS contlubE RS                spec RS mp RS ext RS arg_cong RS arg_cong) 1),
   7.187 +	(rtac (((hd (tl prems)) RS spec RS cont2contlub) RS contlubE RS                spec RS mp RS ext RS arg_cong RS arg_cong) 1),
   7.188  	(atac 1),
   7.189  	(rtac diag_lubMF2_2 1),
   7.190 -	(etac contX2mono 1),
   7.191 +	(etac cont2mono 1),
   7.192  	(rtac allI 1),
   7.193  	(etac allE 1),
   7.194 -	(etac contX2mono 1),
   7.195 +	(etac cont2mono 1),
   7.196  	(REPEAT (atac 1))
   7.197  	]);
   7.198  
   7.199 @@ -434,7 +434,7 @@
   7.200  (* ------------------------------------------------------------------------ *)
   7.201  
   7.202  qed_goal "mono2mono_MF1L" Cont.thy 
   7.203 -	"[|monofun(c1)|] ==> monofun(%x. c1(x,y))"
   7.204 +	"[|monofun(c1)|] ==> monofun(%x. c1 x y)"
   7.205  (fn prems =>
   7.206  	[
   7.207  	(cut_facts_tac prems 1),
   7.208 @@ -444,29 +444,29 @@
   7.209  	(atac 1)
   7.210  	]);
   7.211  
   7.212 -qed_goal "contX2contX_CF1L" Cont.thy 
   7.213 -	"[|contX(c1)|] ==> contX(%x. c1(x,y))"
   7.214 +qed_goal "cont2cont_CF1L" Cont.thy 
   7.215 +	"[|cont(c1)|] ==> cont(%x. c1 x y)"
   7.216  (fn prems =>
   7.217  	[
   7.218  	(cut_facts_tac prems 1),
   7.219 -	(rtac monocontlub2contX 1),
   7.220 -	(etac (contX2mono RS mono2mono_MF1L) 1),
   7.221 +	(rtac monocontlub2cont 1),
   7.222 +	(etac (cont2mono RS mono2mono_MF1L) 1),
   7.223  	(rtac contlubI 1),
   7.224  	(strip_tac 1),
   7.225 -	(rtac ((hd prems) RS contX2contlub RS 
   7.226 +	(rtac ((hd prems) RS cont2contlub RS 
   7.227  		contlubE RS spec RS mp RS ssubst) 1),
   7.228  	(atac 1),
   7.229  	(rtac (thelub_fun RS ssubst) 1),
   7.230  	(rtac ch2ch_monofun 1),
   7.231 -	(etac contX2mono 1),
   7.232 +	(etac cont2mono 1),
   7.233  	(atac 1),
   7.234  	(rtac refl 1)
   7.235  	]);
   7.236  
   7.237 -(*********  Note "(%x.%y.c1(x,y)) = c1" ***********)
   7.238 +(*********  Note "(%x.%y.c1 x y) = c1" ***********)
   7.239  
   7.240  qed_goal "mono2mono_MF1L_rev" Cont.thy
   7.241 -	"!y.monofun(%x.c1(x,y)) ==> monofun(c1)"
   7.242 +	"!y.monofun(%x.c1 x y) ==> monofun(c1)"
   7.243  (fn prems =>
   7.244  	[
   7.245  	(cut_facts_tac prems 1),
   7.246 @@ -478,23 +478,23 @@
   7.247  	(atac 1)
   7.248  	]);
   7.249  
   7.250 -qed_goal "contX2contX_CF1L_rev" Cont.thy
   7.251 -	"!y.contX(%x.c1(x,y)) ==> contX(c1)"
   7.252 +qed_goal "cont2cont_CF1L_rev" Cont.thy
   7.253 +	"!y.cont(%x.c1 x y) ==> cont(c1)"
   7.254  (fn prems =>
   7.255  	[
   7.256  	(cut_facts_tac prems 1),
   7.257 -	(rtac monocontlub2contX 1),
   7.258 -	(rtac (contX2mono RS allI RS mono2mono_MF1L_rev ) 1),
   7.259 +	(rtac monocontlub2cont 1),
   7.260 +	(rtac (cont2mono RS allI RS mono2mono_MF1L_rev ) 1),
   7.261  	(etac spec 1),
   7.262  	(rtac contlubI 1),
   7.263  	(strip_tac 1),
   7.264  	(rtac ext 1),
   7.265  	(rtac (thelub_fun RS ssubst) 1),
   7.266 -	(rtac (contX2mono RS allI RS mono2mono_MF1L_rev RS ch2ch_monofun) 1),
   7.267 +	(rtac (cont2mono RS allI RS mono2mono_MF1L_rev RS ch2ch_monofun) 1),
   7.268  	(etac spec 1),
   7.269  	(atac 1),
   7.270  	(rtac 
   7.271 -	((hd prems) RS spec RS contX2contlub RS contlubE RS spec RS mp) 1),
   7.272 +	((hd prems) RS spec RS cont2contlub RS contlubE RS spec RS mp) 1),
   7.273  	(atac 1)
   7.274  	]);
   7.275  
   7.276 @@ -505,17 +505,17 @@
   7.277  (* ------------------------------------------------------------------------ *)
   7.278  
   7.279  qed_goal "contlub_abstraction" Cont.thy
   7.280 -"[|is_chain(Y::nat=>'a);!y.contX(%x.(c::'a=>'b=>'c)(x,y))|] ==>\
   7.281 -\ (%y.lub(range(%i.c(Y(i),y)))) = (lub(range(%i.%y.c(Y(i),y))))"
   7.282 +"[|is_chain(Y::nat=>'a);!y.cont(%x.(c::'a=>'b=>'c) x y)|] ==>\
   7.283 +\ (%y.lub(range(%i.c (Y i) y))) = (lub(range(%i.%y.c (Y i) y)))"
   7.284   (fn prems =>
   7.285  	[
   7.286  	(cut_facts_tac prems 1),
   7.287  	(rtac trans 1),
   7.288 -	(rtac (contX2contlub RS contlubE RS spec RS mp) 2),
   7.289 +	(rtac (cont2contlub RS contlubE RS spec RS mp) 2),
   7.290  	(atac 3),
   7.291 -	(etac contX2contX_CF1L_rev 2),
   7.292 +	(etac cont2cont_CF1L_rev 2),
   7.293  	(rtac ext 1), 
   7.294 -	(rtac (contX2contlub RS contlubE RS spec RS mp RS sym) 1),
   7.295 +	(rtac (cont2contlub RS contlubE RS spec RS mp RS sym) 1),
   7.296  	(etac spec 1),
   7.297  	(atac 1)
   7.298  	]);
   7.299 @@ -539,58 +539,58 @@
   7.300  	]);
   7.301  
   7.302  
   7.303 -qed_goal "contX2contlub_app" Cont.thy 
   7.304 -"[|contX(ft);!x.contX(ft(x));contX(tt)|] ==> contlub(%x.(ft(x))(tt(x)))"
   7.305 +qed_goal "cont2contlub_app" Cont.thy 
   7.306 +"[|cont(ft);!x.cont(ft(x));cont(tt)|] ==> contlub(%x.(ft(x))(tt(x)))"
   7.307   (fn prems =>
   7.308  	[
   7.309  	(cut_facts_tac prems 1),
   7.310  	(rtac contlubI 1),
   7.311  	(strip_tac 1),
   7.312  	(res_inst_tac [("f3","tt")] (contlubE RS spec RS mp RS ssubst) 1),
   7.313 -	(etac contX2contlub 1),
   7.314 +	(etac cont2contlub 1),
   7.315  	(atac 1),
   7.316  	(rtac contlub_CF2 1),
   7.317  	(REPEAT (atac 1)),
   7.318 -	(etac (contX2mono RS ch2ch_monofun) 1),
   7.319 +	(etac (cont2mono RS ch2ch_monofun) 1),
   7.320  	(atac 1)
   7.321  	]);
   7.322  
   7.323  
   7.324 -qed_goal "contX2contX_app" Cont.thy 
   7.325 -"[|contX(ft);!x.contX(ft(x));contX(tt)|] ==>\
   7.326 -\	 contX(%x.(ft(x))(tt(x)))"
   7.327 +qed_goal "cont2cont_app" Cont.thy 
   7.328 +"[|cont(ft);!x.cont(ft(x));cont(tt)|] ==>\
   7.329 +\	 cont(%x.(ft(x))(tt(x)))"
   7.330   (fn prems =>
   7.331  	[
   7.332 -	(rtac monocontlub2contX 1),
   7.333 +	(rtac monocontlub2cont 1),
   7.334  	(rtac mono2mono_app 1),
   7.335 -	(rtac contX2mono 1),
   7.336 +	(rtac cont2mono 1),
   7.337  	(resolve_tac prems 1),
   7.338  	(strip_tac 1),
   7.339 -	(rtac contX2mono 1),
   7.340 +	(rtac cont2mono 1),
   7.341  	(cut_facts_tac prems 1),
   7.342  	(etac spec 1),
   7.343 -	(rtac contX2mono 1),
   7.344 +	(rtac cont2mono 1),
   7.345  	(resolve_tac prems 1),
   7.346 -	(rtac contX2contlub_app 1),
   7.347 +	(rtac cont2contlub_app 1),
   7.348  	(resolve_tac prems 1),
   7.349  	(resolve_tac prems 1),
   7.350  	(resolve_tac prems 1)
   7.351  	]);
   7.352  
   7.353  
   7.354 -val contX2contX_app2 = (allI RSN (2,contX2contX_app));
   7.355 -(*  [| contX(?ft); !!x. contX(?ft(x)); contX(?tt) |] ==>                 *)
   7.356 -(*                                      contX(%x. ?ft(x,?tt(x)))         *)
   7.357 +val cont2cont_app2 = (allI RSN (2,cont2cont_app));
   7.358 +(*  [| cont ?ft; !!x. cont (?ft x); cont ?tt |] ==> *)
   7.359 +(*        cont (%x. ?ft x (?tt x))                    *)
   7.360  
   7.361  
   7.362  (* ------------------------------------------------------------------------ *)
   7.363  (* The identity function is continuous                                      *)
   7.364  (* ------------------------------------------------------------------------ *)
   7.365  
   7.366 -qed_goal "contX_id" Cont.thy "contX(% x.x)"
   7.367 +qed_goal "cont_id" Cont.thy "cont(% x.x)"
   7.368   (fn prems =>
   7.369  	[
   7.370 -	(rtac contXI 1),
   7.371 +	(rtac contI 1),
   7.372  	(strip_tac 1),
   7.373  	(etac thelubE 1),
   7.374  	(rtac refl 1)
   7.375 @@ -602,7 +602,7 @@
   7.376  (* constant functions are continuous                                        *)
   7.377  (* ------------------------------------------------------------------------ *)
   7.378  
   7.379 -qed_goalw "contX_const" Cont.thy [contX] "contX(%x.c)"
   7.380 +qed_goalw "cont_const" Cont.thy [cont] "cont(%x.c)"
   7.381   (fn prems =>
   7.382  	[
   7.383  	(strip_tac 1),
   7.384 @@ -617,13 +617,13 @@
   7.385  	]);
   7.386  
   7.387  
   7.388 -qed_goal "contX2contX_app3" Cont.thy 
   7.389 - "[|contX(f);contX(t) |] ==> contX(%x. f(t(x)))"
   7.390 +qed_goal "cont2cont_app3" Cont.thy 
   7.391 + "[|cont(f);cont(t) |] ==> cont(%x. f(t(x)))"
   7.392   (fn prems =>
   7.393  	[
   7.394  	(cut_facts_tac prems 1),
   7.395 -	(rtac contX2contX_app2 1),
   7.396 -	(rtac contX_const 1),
   7.397 +	(rtac cont2cont_app2 1),
   7.398 +	(rtac cont_const 1),
   7.399  	(atac 1),
   7.400  	(atac 1)
   7.401  	]);
     8.1 --- a/src/HOLCF/Cont.thy	Thu Jun 29 16:16:24 1995 +0200
     8.2 +++ b/src/HOLCF/Cont.thy	Thu Jun 29 16:28:40 1995 +0200
     8.3 @@ -21,21 +21,21 @@
     8.4  consts  
     8.5  	monofun :: "('a::po => 'b::po) => bool"	(* monotonicity    *)
     8.6  	contlub	:: "('a => 'b) => bool"		(* first cont. def *)
     8.7 -	contX	:: "('a => 'b) => bool"		(* secnd cont. def *)
     8.8 +	cont	:: "('a => 'b) => bool"		(* secnd cont. def *)
     8.9  
    8.10 -rules 
    8.11 +defs 
    8.12  
    8.13  monofun		"monofun(f) == ! x y. x << y --> f(x) << f(y)"
    8.14  
    8.15 -contlub		"contlub(f) == ! Y. is_chain(Y) --> 
    8.16 -				f(lub(range(Y))) = lub(range(% i.f(Y(i))))"
    8.17 +contlub		"contlub(f) == ! Y. is_chain(Y) --> \
    8.18 +\				f(lub(range(Y))) = lub(range(% i.f(Y(i))))"
    8.19  
    8.20 -contX		"contX(f)   == ! Y. is_chain(Y) --> 
    8.21 -				range(% i.f(Y(i))) <<| f(lub(range(Y)))"
    8.22 +cont		"cont(f)   == ! Y. is_chain(Y) --> \
    8.23 +\				range(% i.f(Y(i))) <<| f(lub(range(Y)))"
    8.24  
    8.25  (* ------------------------------------------------------------------------ *)
    8.26  (* the main purpose of cont.thy is to show:                                 *)
    8.27 -(*              monofun(f) & contlub(f)  <==> contX(f)                      *)
    8.28 +(*              monofun(f) & contlub(f)  <==> cont(f)                      *)
    8.29  (* ------------------------------------------------------------------------ *)
    8.30  
    8.31  end
     9.1 --- a/src/HOLCF/Cprod1.ML	Thu Jun 29 16:16:24 1995 +0200
     9.2 +++ b/src/HOLCF/Cprod1.ML	Thu Jun 29 16:28:40 1995 +0200
     9.3 @@ -9,14 +9,14 @@
     9.4  open Cprod1;
     9.5  
     9.6  qed_goalw "less_cprod1b" Cprod1.thy [less_cprod_def]
     9.7 - "less_cprod(p1,p2) = ( fst(p1) << fst(p2) & snd(p1) << snd(p2))"
     9.8 + "less_cprod p1 p2 = ( fst(p1) << fst(p2) & snd(p1) << snd(p2))"
     9.9   (fn prems =>
    9.10  	[
    9.11  	(rtac refl 1)
    9.12  	]);
    9.13  
    9.14  qed_goalw "less_cprod2a" Cprod1.thy [less_cprod_def]
    9.15 - "less_cprod(<x,y>,<UU,UU>) ==> x = UU & y = UU"
    9.16 + "less_cprod (x,y) (UU,UU) ==> x = UU & y = UU"
    9.17   (fn prems =>
    9.18  	[
    9.19  	(cut_facts_tac prems 1),
    9.20 @@ -33,7 +33,7 @@
    9.21  	]);
    9.22  
    9.23  qed_goal "less_cprod2b" Cprod1.thy 
    9.24 - "less_cprod(p,<UU,UU>) ==> p=<UU,UU>"
    9.25 + "less_cprod p (UU,UU) ==> p = (UU,UU)"
    9.26   (fn prems =>
    9.27  	[
    9.28  	(cut_facts_tac prems 1),
    9.29 @@ -44,7 +44,7 @@
    9.30  	]);
    9.31  
    9.32  qed_goalw "less_cprod2c" Cprod1.thy [less_cprod_def]
    9.33 - "less_cprod(<x1,y1>,<x2,y2>) ==> x1 << x2 & y1 << y2"
    9.34 + "less_cprod (x1,y1) (x2,y2) ==> x1 << x2 & y1 << y2"
    9.35   (fn prems =>
    9.36  	[
    9.37  	(cut_facts_tac prems 1),
    9.38 @@ -64,7 +64,7 @@
    9.39  (* less_cprod is a partial order on 'a * 'b                                 *)
    9.40  (* ------------------------------------------------------------------------ *)
    9.41  
    9.42 -qed_goalw "refl_less_cprod" Cprod1.thy [less_cprod_def] "less_cprod(p,p)"
    9.43 +qed_goalw "refl_less_cprod" Cprod1.thy [less_cprod_def] "less_cprod p p"
    9.44   (fn prems =>
    9.45  	[
    9.46  	(res_inst_tac [("p","p")] PairE 1),
    9.47 @@ -74,7 +74,7 @@
    9.48  	]);
    9.49  
    9.50  qed_goal "antisym_less_cprod" Cprod1.thy 
    9.51 - "[|less_cprod(p1,p2);less_cprod(p2,p1)|] ==> p1=p2"
    9.52 + "[|less_cprod p1 p2;less_cprod p2 p1|] ==> p1=p2"
    9.53   (fn prems =>
    9.54  	[
    9.55  	(cut_facts_tac prems 1),
    9.56 @@ -92,7 +92,7 @@
    9.57  
    9.58  
    9.59  qed_goal "trans_less_cprod" Cprod1.thy 
    9.60 - "[|less_cprod(p1,p2);less_cprod(p2,p3)|] ==> less_cprod(p1,p3)"
    9.61 + "[|less_cprod p1 p2;less_cprod p2 p3|] ==> less_cprod p1 p3"
    9.62   (fn prems =>
    9.63  	[
    9.64  	(cut_facts_tac prems 1),
    9.65 @@ -115,3 +115,5 @@
    9.66  	(atac 1)
    9.67  	]);
    9.68  
    9.69 +
    9.70 +
    10.1 --- a/src/HOLCF/Cprod1.thy	Thu Jun 29 16:16:24 1995 +0200
    10.2 +++ b/src/HOLCF/Cprod1.thy	Thu Jun 29 16:28:40 1995 +0200
    10.3 @@ -14,9 +14,9 @@
    10.4  consts
    10.5    less_cprod	:: "[('a::pcpo * 'b::pcpo),('a * 'b)] => bool"	
    10.6  
    10.7 -rules
    10.8 +defs
    10.9  
   10.10 -  less_cprod_def "less_cprod(p1,p2) == ( fst(p1) << fst(p2) &
   10.11 +  less_cprod_def "less_cprod p1 p2 == ( fst(p1) << fst(p2) &
   10.12  					snd(p1) << snd(p2))"
   10.13  
   10.14  end
    11.1 --- a/src/HOLCF/Cprod2.ML	Thu Jun 29 16:16:24 1995 +0200
    11.2 +++ b/src/HOLCF/Cprod2.ML	Thu Jun 29 16:28:40 1995 +0200
    11.3 @@ -9,7 +9,7 @@
    11.4  open Cprod2;
    11.5  
    11.6  qed_goal "less_cprod3a" Cprod2.thy 
    11.7 -	"p1=<UU,UU> ==> p1 << p2"
    11.8 +	"p1=(UU,UU) ==> p1 << p2"
    11.9   (fn prems =>
   11.10  	[
   11.11  	(cut_facts_tac prems 1),
   11.12 @@ -31,7 +31,7 @@
   11.13  	]);
   11.14  
   11.15  qed_goal "less_cprod4a" Cprod2.thy 
   11.16 -	"<x1,x2> << <UU,UU> ==> x1=UU & x2=UU"
   11.17 +	"(x1,x2) << (UU,UU) ==> x1=UU & x2=UU"
   11.18   (fn prems =>
   11.19  	[
   11.20  	(cut_facts_tac prems 1),
   11.21 @@ -40,7 +40,7 @@
   11.22  	]);
   11.23  
   11.24  qed_goal "less_cprod4b" Cprod2.thy 
   11.25 -	"p << <UU,UU> ==> p = <UU,UU>"
   11.26 +	"p << (UU,UU) ==> p = (UU,UU)"
   11.27  (fn prems =>
   11.28  	[
   11.29  	(cut_facts_tac prems 1),
   11.30 @@ -49,7 +49,7 @@
   11.31  	]);
   11.32  
   11.33  qed_goal "less_cprod4c" Cprod2.thy
   11.34 - " <xa,ya> << <x,y> ==> xa<<x & ya << y"
   11.35 + " (xa,ya) << (x,y) ==> xa<<x & ya << y"
   11.36  (fn prems =>
   11.37  	[
   11.38  	(cut_facts_tac prems 1),
   11.39 @@ -62,7 +62,7 @@
   11.40  (* type cprod is pointed                                                    *)
   11.41  (* ------------------------------------------------------------------------ *)
   11.42  
   11.43 -qed_goal "minimal_cprod" Cprod2.thy  "<UU,UU><<p"
   11.44 +qed_goal "minimal_cprod" Cprod2.thy  "(UU,UU)<<p"
   11.45  (fn prems =>
   11.46  	[
   11.47  	(rtac less_cprod3a 1),
   11.48 @@ -94,7 +94,7 @@
   11.49  	]);
   11.50  
   11.51  qed_goal "monofun_pair" Cprod2.thy 
   11.52 - "[|x1<<x2; y1<<y2|] ==> <x1,y1> << <x2,y2>"
   11.53 + "[|x1<<x2; y1<<y2|] ==> (x1,y1) << (x2,y2)"
   11.54   (fn prems =>
   11.55  	[
   11.56  	(cut_facts_tac prems 1),
   11.57 @@ -140,7 +140,7 @@
   11.58  
   11.59  qed_goal "lub_cprod" Cprod2.thy 
   11.60  " is_chain(S) ==> range(S) <<| \
   11.61 -\   < lub(range(%i.fst(S(i)))),lub(range(%i.snd(S(i))))> "
   11.62 +\   (lub(range(%i.fst(S i))),lub(range(%i.snd(S i)))) "
   11.63   (fn prems =>
   11.64  	[
   11.65  	(cut_facts_tac prems 1),
   11.66 @@ -166,9 +166,12 @@
   11.67  	]);
   11.68  
   11.69  val thelub_cprod = (lub_cprod RS thelubI);
   11.70 -(* "is_chain(?S1) ==> lub(range(?S1)) =                                *)
   11.71 -(*  <lub(range(%i. fst(?S1(i)))), lub(range(%i. snd(?S1(i))))>"        *)
   11.72 +(*
   11.73 +"is_chain ?S1 ==>
   11.74 + lub (range ?S1) =
   11.75 + (lub (range (%i. fst (?S1 i))), lub (range (%i. snd (?S1 i))))" : thm
   11.76  
   11.77 +*)
   11.78  
   11.79  qed_goal "cpo_cprod" Cprod2.thy 
   11.80  	"is_chain(S::nat=>'a*'b)==>? x.range(S)<<| x"
   11.81 @@ -179,3 +182,4 @@
   11.82  	(etac lub_cprod 1)
   11.83  	]);
   11.84  
   11.85 +
    12.1 --- a/src/HOLCF/Cprod3.ML	Thu Jun 29 16:16:24 1995 +0200
    12.2 +++ b/src/HOLCF/Cprod3.ML	Thu Jun 29 16:28:40 1995 +0200
    12.3 @@ -9,13 +9,13 @@
    12.4  open Cprod3;
    12.5  
    12.6  (* ------------------------------------------------------------------------ *)
    12.7 -(* continuity of <_,_> , fst, snd                                           *)
    12.8 +(* continuity of (_,_) , fst, snd                                           *)
    12.9  (* ------------------------------------------------------------------------ *)
   12.10  
   12.11  qed_goal "Cprod3_lemma1" Cprod3.thy 
   12.12  "is_chain(Y::(nat=>'a)) ==>\
   12.13 -\ <lub(range(Y)),(x::'b)> =\
   12.14 -\ <lub(range(%i. fst(<Y(i),x>))),lub(range(%i. snd(<Y(i),x>)))>"
   12.15 +\ (lub(range(Y)),(x::'b)) =\
   12.16 +\ (lub(range(%i. fst(Y i,x))),lub(range(%i. snd(Y i,x))))"
   12.17   (fn prems =>
   12.18  	[
   12.19  	(cut_facts_tac prems 1),
   12.20 @@ -51,8 +51,8 @@
   12.21  
   12.22  qed_goal "Cprod3_lemma2" Cprod3.thy 
   12.23  "is_chain(Y::(nat=>'a)) ==>\
   12.24 -\ <(x::'b),lub(range(Y))> =\
   12.25 -\ <lub(range(%i. fst(<x,Y(i)>))),lub(range(%i. snd(<x,Y(i)>)))>"
   12.26 +\ ((x::'b),lub(range Y)) =\
   12.27 +\ (lub(range(%i. fst(x,Y i))),lub(range(%i. snd(x, Y i))))"
   12.28   (fn prems =>
   12.29  	[
   12.30  	(cut_facts_tac prems 1),
   12.31 @@ -80,18 +80,18 @@
   12.32  	(etac Cprod3_lemma2 1)
   12.33  	]);
   12.34  
   12.35 -qed_goal "contX_pair1" Cprod3.thy "contX(Pair)"
   12.36 +qed_goal "cont_pair1" Cprod3.thy "cont(Pair)"
   12.37  (fn prems =>
   12.38  	[
   12.39 -	(rtac monocontlub2contX 1),
   12.40 +	(rtac monocontlub2cont 1),
   12.41  	(rtac monofun_pair1 1),
   12.42  	(rtac contlub_pair1 1)
   12.43  	]);
   12.44  
   12.45 -qed_goal "contX_pair2" Cprod3.thy "contX(Pair(x))"
   12.46 +qed_goal "cont_pair2" Cprod3.thy "cont(Pair(x))"
   12.47  (fn prems =>
   12.48  	[
   12.49 -	(rtac monocontlub2contX 1),
   12.50 +	(rtac monocontlub2cont 1),
   12.51  	(rtac monofun_pair2 1),
   12.52  	(rtac contlub_pair2 1)
   12.53  	]);
   12.54 @@ -116,18 +116,18 @@
   12.55  	(simp_tac prod_ss 1)
   12.56  	]);
   12.57  
   12.58 -qed_goal "contX_fst" Cprod3.thy "contX(fst)"
   12.59 +qed_goal "cont_fst" Cprod3.thy "cont(fst)"
   12.60  (fn prems =>
   12.61  	[
   12.62 -	(rtac monocontlub2contX 1),
   12.63 +	(rtac monocontlub2cont 1),
   12.64  	(rtac monofun_fst 1),
   12.65  	(rtac contlub_fst 1)
   12.66  	]);
   12.67  
   12.68 -qed_goal "contX_snd" Cprod3.thy "contX(snd)"
   12.69 +qed_goal "cont_snd" Cprod3.thy "cont(snd)"
   12.70  (fn prems =>
   12.71  	[
   12.72 -	(rtac monocontlub2contX 1),
   12.73 +	(rtac monocontlub2cont 1),
   12.74  	(rtac monofun_snd 1),
   12.75  	(rtac contlub_snd 1)
   12.76  	]);
   12.77 @@ -144,21 +144,21 @@
   12.78  (* ------------------------------------------------------------------------ *)
   12.79  
   12.80  qed_goalw "beta_cfun_cprod" Cprod3.thy [cpair_def]
   12.81 -	"(LAM x y.<x,y>)[a][b] = <a,b>"
   12.82 +	"(LAM x y.(x,y))`a`b = (a,b)"
   12.83   (fn prems =>
   12.84  	[
   12.85  	(rtac (beta_cfun RS ssubst) 1),
   12.86 -	(contX_tac 1),
   12.87 -	(rtac contX_pair2 1),
   12.88 -	(rtac contX2contX_CF1L 1),
   12.89 -	(rtac contX_pair1 1),
   12.90 +	(cont_tac 1),
   12.91 +	(rtac cont_pair2 1),
   12.92 +	(rtac cont2cont_CF1L 1),
   12.93 +	(rtac cont_pair1 1),
   12.94  	(rtac (beta_cfun RS ssubst) 1),
   12.95 -	(rtac contX_pair2 1),
   12.96 +	(rtac cont_pair2 1),
   12.97  	(rtac refl 1)
   12.98  	]);
   12.99  
  12.100  qed_goalw "inject_cpair" Cprod3.thy [cpair_def]
  12.101 -	" (a#b)=(aa#ba)  ==> a=aa & b=ba"
  12.102 +	" <a,b>=<aa,ba>  ==> a=aa & b=ba"
  12.103   (fn prems =>
  12.104  	[
  12.105  	(cut_facts_tac prems 1),
  12.106 @@ -168,7 +168,7 @@
  12.107  	(fast_tac HOL_cs 1)
  12.108  	]);
  12.109  
  12.110 -qed_goalw "inst_cprod_pcpo2" Cprod3.thy [cpair_def] "UU = (UU#UU)"
  12.111 +qed_goalw "inst_cprod_pcpo2" Cprod3.thy [cpair_def] "UU = <UU,UU>"
  12.112   (fn prems =>
  12.113  	[
  12.114  	(rtac sym 1),
  12.115 @@ -179,7 +179,7 @@
  12.116  	]);
  12.117  
  12.118  qed_goal "defined_cpair_rev" Cprod3.thy
  12.119 - "(a#b) = UU ==> a = UU & b = UU"
  12.120 + "<a,b> = UU ==> a = UU & b = UU"
  12.121   (fn prems =>
  12.122  	[
  12.123  	(cut_facts_tac prems 1),
  12.124 @@ -188,7 +188,7 @@
  12.125  	]);
  12.126  
  12.127  qed_goalw "Exh_Cprod2" Cprod3.thy [cpair_def]
  12.128 -	"? a b. z=(a#b) "
  12.129 +	"? a b. z=<a,b>"
  12.130   (fn prems =>
  12.131  	[
  12.132  	(rtac PairE 1),
  12.133 @@ -198,7 +198,7 @@
  12.134  	]);
  12.135  
  12.136  qed_goalw "cprodE" Cprod3.thy [cpair_def]
  12.137 -"[|!!x y. [|p=(x#y) |] ==> Q|] ==> Q"
  12.138 +"[|!!x y. [|p=<x,y> |] ==> Q|] ==> Q"
  12.139   (fn prems =>
  12.140  	[
  12.141  	(rtac PairE 1),
  12.142 @@ -207,57 +207,57 @@
  12.143  	]);
  12.144  
  12.145  qed_goalw "cfst2" Cprod3.thy [cfst_def,cpair_def] 
  12.146 -	"cfst[x#y]=x"
  12.147 +	"cfst`<x,y>=x"
  12.148   (fn prems =>
  12.149  	[
  12.150  	(cut_facts_tac prems 1),
  12.151  	(rtac (beta_cfun_cprod RS ssubst) 1),
  12.152  	(rtac (beta_cfun RS ssubst) 1),
  12.153 -	(rtac contX_fst 1),
  12.154 +	(rtac cont_fst 1),
  12.155  	(simp_tac prod_ss  1)
  12.156  	]);
  12.157  
  12.158  qed_goalw "csnd2" Cprod3.thy [csnd_def,cpair_def] 
  12.159 -	"csnd[x#y]=y"
  12.160 +	"csnd`<x,y>=y"
  12.161   (fn prems =>
  12.162  	[
  12.163  	(cut_facts_tac prems 1),
  12.164  	(rtac (beta_cfun_cprod RS ssubst) 1),
  12.165  	(rtac (beta_cfun RS ssubst) 1),
  12.166 -	(rtac contX_snd 1),
  12.167 +	(rtac cont_snd 1),
  12.168  	(simp_tac prod_ss  1)
  12.169  	]);
  12.170  
  12.171  qed_goalw "surjective_pairing_Cprod2" Cprod3.thy 
  12.172 -	[cfst_def,csnd_def,cpair_def] "(cfst[p] # csnd[p]) = p"
  12.173 +	[cfst_def,csnd_def,cpair_def] "<cfst`p , csnd`p> = p"
  12.174   (fn prems =>
  12.175  	[
  12.176  	(rtac (beta_cfun_cprod RS ssubst) 1),
  12.177  	(rtac (beta_cfun RS ssubst) 1),
  12.178 -	(rtac contX_snd 1),
  12.179 +	(rtac cont_snd 1),
  12.180  	(rtac (beta_cfun RS ssubst) 1),
  12.181 -	(rtac contX_fst 1),
  12.182 +	(rtac cont_fst 1),
  12.183  	(rtac (surjective_pairing RS sym) 1)
  12.184  	]);
  12.185  
  12.186  
  12.187  qed_goalw "less_cprod5b" Cprod3.thy [cfst_def,csnd_def,cpair_def]
  12.188 - " (p1 << p2) = (cfst[p1]<<cfst[p2] & csnd[p1]<<csnd[p2])"
  12.189 + " (p1 << p2) = (cfst`p1 << cfst`p2 & csnd`p1 << csnd`p2)"
  12.190   (fn prems =>
  12.191  	[
  12.192  	(rtac (beta_cfun RS ssubst) 1),
  12.193 -	(rtac contX_snd 1),
  12.194 +	(rtac cont_snd 1),
  12.195  	(rtac (beta_cfun RS ssubst) 1),
  12.196 -	(rtac contX_snd 1),
  12.197 +	(rtac cont_snd 1),
  12.198  	(rtac (beta_cfun RS ssubst) 1),
  12.199 -	(rtac contX_fst 1),
  12.200 +	(rtac cont_fst 1),
  12.201  	(rtac (beta_cfun RS ssubst) 1),
  12.202 -	(rtac contX_fst 1),
  12.203 +	(rtac cont_fst 1),
  12.204  	(rtac less_cprod3b 1)
  12.205  	]);
  12.206  
  12.207  qed_goalw "less_cprod5c" Cprod3.thy [cfst_def,csnd_def,cpair_def]
  12.208 - "xa#ya << x#y ==>xa<<x & ya << y"
  12.209 + "<xa,ya> << <x,y> ==> xa<<x & ya << y"
  12.210   (fn prems =>
  12.211  	[
  12.212  	(cut_facts_tac prems 1),
  12.213 @@ -270,39 +270,41 @@
  12.214  
  12.215  qed_goalw "lub_cprod2" Cprod3.thy [cfst_def,csnd_def,cpair_def]
  12.216  "[|is_chain(S)|] ==> range(S) <<| \
  12.217 -\ (lub(range(%i.cfst[S(i)])) # lub(range(%i.csnd[S(i)])))"
  12.218 +\ <(lub(range(%i.cfst`(S i)))) , lub(range(%i.csnd`(S i)))>"
  12.219   (fn prems =>
  12.220  	[
  12.221  	(cut_facts_tac prems 1),
  12.222  	(rtac (beta_cfun_cprod RS ssubst) 1),
  12.223  	(rtac (beta_cfun RS ext RS ssubst) 1),
  12.224 -	(rtac contX_snd 1),
  12.225 +	(rtac cont_snd 1),
  12.226  	(rtac (beta_cfun RS ext RS ssubst) 1),
  12.227 -	(rtac contX_fst 1),
  12.228 +	(rtac cont_fst 1),
  12.229  	(rtac lub_cprod 1),
  12.230  	(atac 1)
  12.231  	]);
  12.232  
  12.233  val thelub_cprod2 = (lub_cprod2 RS thelubI);
  12.234 -(*  "is_chain(?S1) ==> lub(range(?S1)) =                         *)
  12.235 -(*    lub(range(%i. cfst[?S1(i)]))#lub(range(%i. csnd[?S1(i)]))" *)
  12.236 -
  12.237 +(*
  12.238 +is_chain ?S1 ==>
  12.239 + lub (range ?S1) =
  12.240 + <lub (range (%i. cfst`(?S1 i))), lub (range (%i. csnd`(?S1 i)))>" 
  12.241 +*)
  12.242  qed_goalw "csplit2" Cprod3.thy [csplit_def]
  12.243 -	"csplit[f][x#y]=f[x][y]"
  12.244 +	"csplit`f`<x,y> = f`x`y"
  12.245   (fn prems =>
  12.246  	[
  12.247  	(rtac (beta_cfun RS ssubst) 1),
  12.248 -	(contX_tacR 1),
  12.249 +	(cont_tacR 1),
  12.250  	(simp_tac Cfun_ss 1),
  12.251  	(simp_tac (Cfun_ss addsimps [cfst2,csnd2]) 1)
  12.252  	]);
  12.253  
  12.254  qed_goalw "csplit3" Cprod3.thy [csplit_def]
  12.255 -  "csplit[cpair][z]=z"
  12.256 +  "csplit`cpair`z=z"
  12.257   (fn prems =>
  12.258  	[
  12.259  	(rtac (beta_cfun RS ssubst) 1),
  12.260 -	(contX_tacR 1),
  12.261 +	(cont_tacR 1),
  12.262  	(simp_tac (Cfun_ss addsimps [surjective_pairing_Cprod2]) 1)
  12.263  	]);
  12.264  
  12.265 @@ -313,3 +315,4 @@
  12.266  val Cprod_rews = [cfst2,csnd2,csplit2];
  12.267  
  12.268  val Cprod_ss = Cfun_ss addsimps Cprod_rews;
  12.269 +
    13.1 --- a/src/HOLCF/Cprod3.thy	Thu Jun 29 16:16:24 1995 +0200
    13.2 +++ b/src/HOLCF/Cprod3.thy	Thu Jun 29 16:28:40 1995 +0200
    13.3 @@ -18,18 +18,23 @@
    13.4  	csnd         :: "('a*'b)->'b"
    13.5  	csplit       :: "('a->'b->'c)->('a*'b)->'c"
    13.6  
    13.7 -syntax	"@cpair"     :: "'a => 'b => ('a*'b)" ("_#_" [101,100] 100)
    13.8 +syntax	
    13.9 +	"@ctuple"    :: "['a, args] => 'a * 'b"		("(1<_,/ _>)")
   13.10 +
   13.11  
   13.12 -translations "x#y" == "cpair[x][y]"
   13.13 +translations 
   13.14 +	"<x, y, z>"   == "<x, <y, z>>"
   13.15 +	"<x, y>"      == "cpair`x`y"
   13.16  
   13.17  rules 
   13.18  
   13.19 -inst_cprod_pcpo	"(UU::'a*'b) = <UU,UU>"
   13.20 +inst_cprod_pcpo	"(UU::'a*'b) = (UU,UU)"
   13.21  
   13.22 -cpair_def	"cpair  == (LAM x y.<x,y>)"
   13.23 +defs
   13.24 +cpair_def	"cpair  == (LAM x y.(x,y))"
   13.25  cfst_def	"cfst   == (LAM p.fst(p))"
   13.26  csnd_def	"csnd   == (LAM p.snd(p))"	
   13.27 -csplit_def	"csplit == (LAM f p.f[cfst[p]][csnd[p]])"
   13.28 +csplit_def	"csplit == (LAM f p.f`(cfst`p)`(csnd`p))"
   13.29  
   13.30  end
   13.31  
    14.1 --- a/src/HOLCF/Dlist.ML	Thu Jun 29 16:16:24 1995 +0200
    14.2 +++ b/src/HOLCF/Dlist.ML	Thu Jun 29 16:28:40 1995 +0200
    14.3 @@ -22,7 +22,7 @@
    14.4  (* Properties of dlist_copy                                                *)
    14.5  (* ------------------------------------------------------------------------*)
    14.6  
    14.7 -val temp = prove_goalw Dlist.thy  [dlist_copy_def] "dlist_copy[f][UU]=UU"
    14.8 +val temp = prove_goalw Dlist.thy  [dlist_copy_def] "dlist_copy`f`UU=UU"
    14.9   (fn prems =>
   14.10  	[
   14.11  	(asm_simp_tac (HOLCF_ss addsimps 
   14.12 @@ -33,7 +33,7 @@
   14.13  
   14.14  
   14.15  val temp = prove_goalw Dlist.thy  [dlist_copy_def,dnil_def] 
   14.16 -    "dlist_copy[f][dnil]=dnil"
   14.17 +    "dlist_copy`f`dnil=dnil"
   14.18   (fn prems =>
   14.19  	[
   14.20  	(asm_simp_tac (HOLCF_ss addsimps 
   14.21 @@ -44,7 +44,7 @@
   14.22  
   14.23  
   14.24  val temp = prove_goalw Dlist.thy  [dlist_copy_def,dcons_def] 
   14.25 -	"xl~=UU ==> dlist_copy[f][dcons[x][xl]]= dcons[x][f[xl]]"
   14.26 +	"xl~=UU ==> dlist_copy`f`(dcons`x`xl)= dcons`x`(f`xl)"
   14.27   (fn prems =>
   14.28  	[
   14.29  	(cut_facts_tac prems 1),
   14.30 @@ -64,12 +64,12 @@
   14.31  (* ------------------------------------------------------------------------*)
   14.32  
   14.33  qed_goalw "Exh_dlist" Dlist.thy [dcons_def,dnil_def]
   14.34 -	"l = UU | l = dnil | (? x xl. x~=UU &xl~=UU & l = dcons[x][xl])"
   14.35 +	"l = UU | l = dnil | (? x xl. x~=UU &xl~=UU & l = dcons`x`xl)"
   14.36   (fn prems =>
   14.37  	[
   14.38  	(simp_tac HOLCF_ss  1),
   14.39  	(rtac (dlist_rep_iso RS subst) 1),
   14.40 -	(res_inst_tac [("p","dlist_rep[l]")] ssumE 1),
   14.41 +	(res_inst_tac [("p","dlist_rep`l")] ssumE 1),
   14.42  	(rtac disjI1 1),
   14.43  	(asm_simp_tac (HOLCF_ss addsimps dlist_rews) 1),
   14.44  	(rtac disjI2 1),
   14.45 @@ -89,7 +89,7 @@
   14.46  
   14.47  
   14.48  qed_goal "dlistE" Dlist.thy 
   14.49 -"[| l=UU ==> Q; l=dnil ==> Q;!!x xl.[|l=dcons[x][xl];x~=UU;xl~=UU|]==>Q|]==>Q"
   14.50 +"[| l=UU ==> Q; l=dnil ==> Q;!!x xl.[|l=dcons`x`xl;x~=UU;xl~=UU|]==>Q|]==>Q"
   14.51   (fn prems =>
   14.52  	[
   14.53  	(rtac (Exh_dlist RS disjE) 1),
   14.54 @@ -108,7 +108,7 @@
   14.55  (* Properties of dlist_when                                                *)
   14.56  (* ------------------------------------------------------------------------*)
   14.57  
   14.58 -val temp = prove_goalw  Dlist.thy  [dlist_when_def] "dlist_when[f1][f2][UU]=UU"
   14.59 +val temp = prove_goalw  Dlist.thy  [dlist_when_def] "dlist_when`f1`f2`UU=UU"
   14.60   (fn prems =>
   14.61  	[
   14.62  	(asm_simp_tac (HOLCF_ss addsimps [dlist_iso_strict]) 1)
   14.63 @@ -117,7 +117,7 @@
   14.64  val dlist_when = [temp];
   14.65  
   14.66  val temp = prove_goalw  Dlist.thy [dlist_when_def,dnil_def]
   14.67 - "dlist_when[f1][f2][dnil]= f1"
   14.68 + "dlist_when`f1`f2`dnil= f1"
   14.69   (fn prems =>
   14.70  	[
   14.71  	(asm_simp_tac (HOLCF_ss addsimps [dlist_abs_iso]) 1)
   14.72 @@ -126,7 +126,7 @@
   14.73  val dlist_when = temp::dlist_when;
   14.74  
   14.75  val temp = prove_goalw  Dlist.thy [dlist_when_def,dcons_def]
   14.76 - "[|x~=UU;xl~=UU|] ==> dlist_when[f1][f2][dcons[x][xl]]= f2[x][xl]"
   14.77 + "[|x~=UU;xl~=UU|] ==> dlist_when`f1`f2`(dcons`x`xl)= f2`x`xl"
   14.78   (fn prems =>
   14.79  	[
   14.80  	(cut_facts_tac prems 1),
   14.81 @@ -148,10 +148,10 @@
   14.82  	]);
   14.83  
   14.84  val dlist_discsel = [
   14.85 -	prover [is_dnil_def] "is_dnil[UU]=UU",
   14.86 -	prover [is_dcons_def] "is_dcons[UU]=UU",
   14.87 -	prover [dhd_def] "dhd[UU]=UU",
   14.88 -	prover [dtl_def] "dtl[UU]=UU"
   14.89 +	prover [is_dnil_def] "is_dnil`UU=UU",
   14.90 +	prover [is_dcons_def] "is_dcons`UU=UU",
   14.91 +	prover [dhd_def] "dhd`UU=UU",
   14.92 +	prover [dtl_def] "dtl`UU=UU"
   14.93  	];
   14.94  
   14.95  fun prover defs thm = prove_goalw Dlist.thy defs thm
   14.96 @@ -163,21 +163,21 @@
   14.97  
   14.98  val dlist_discsel = [
   14.99  prover [is_dnil_def,is_dcons_def,dhd_def,dtl_def]
  14.100 -  "is_dnil[dnil]=TT",
  14.101 +  "is_dnil`dnil=TT",
  14.102  prover [is_dnil_def,is_dcons_def,dhd_def,dtl_def]
  14.103 -  "[|x~=UU;xl~=UU|] ==> is_dnil[dcons[x][xl]]=FF",
  14.104 +  "[|x~=UU;xl~=UU|] ==> is_dnil`(dcons`x`xl)=FF",
  14.105  prover [is_dnil_def,is_dcons_def,dhd_def,dtl_def]
  14.106 -  "is_dcons[dnil]=FF",
  14.107 +  "is_dcons`dnil=FF",
  14.108  prover [is_dnil_def,is_dcons_def,dhd_def,dtl_def]
  14.109 -  "[|x~=UU;xl~=UU|] ==> is_dcons[dcons[x][xl]]=TT",
  14.110 +  "[|x~=UU;xl~=UU|] ==> is_dcons`(dcons`x`xl)=TT",
  14.111  prover [is_dnil_def,is_dcons_def,dhd_def,dtl_def]
  14.112 -  "dhd[dnil]=UU",
  14.113 +  "dhd`dnil=UU",
  14.114  prover [is_dnil_def,is_dcons_def,dhd_def,dtl_def]
  14.115 -  "[|x~=UU;xl~=UU|] ==> dhd[dcons[x][xl]]=x",
  14.116 +  "[|x~=UU;xl~=UU|] ==> dhd`(dcons`x`xl)=x",
  14.117  prover [is_dnil_def,is_dcons_def,dhd_def,dtl_def]
  14.118 -  "dtl[dnil]=UU",
  14.119 +  "dtl`dnil=UU",
  14.120  prover [is_dnil_def,is_dcons_def,dhd_def,dtl_def]
  14.121 -  "[|x~=UU;xl~=UU|] ==> dtl[dcons[x][xl]]=xl"] @ dlist_discsel;
  14.122 +  "[|x~=UU;xl~=UU|] ==> dtl`(dcons`x`xl)=xl"] @ dlist_discsel;
  14.123  
  14.124  val dlist_rews = dlist_discsel @ dlist_rews;
  14.125  
  14.126 @@ -197,8 +197,9 @@
  14.127  
  14.128  
  14.129  val dlist_constrdef = [
  14.130 -prover "is_dnil[UU::'a dlist] ~= UU" "dnil~=(UU::'a dlist)",
  14.131 -prover "is_dcons[UU::'a dlist] ~= UU" "[|x~=UU;xl~=UU|]==>dcons[x::'a][xl]~=UU"
  14.132 +prover "is_dnil`(UU::'a dlist) ~= UU" "dnil~=(UU::'a dlist)",
  14.133 +prover "is_dcons`(UU::'a dlist) ~= UU" 
  14.134 +	"[|x~=UU;xl~=UU|]==>dcons`(x::'a)`xl ~= UU"
  14.135   ];
  14.136  
  14.137  
  14.138 @@ -209,8 +210,8 @@
  14.139  	]);
  14.140  
  14.141  val dlist_constrdef = [
  14.142 -	prover [dcons_def] "dcons[UU][xl]=UU",
  14.143 -	prover [dcons_def] "dcons[x][UU]=UU"
  14.144 +	prover [dcons_def] "dcons`UU`xl=UU",
  14.145 +	prover [dcons_def] "dcons`x`UU=UU"
  14.146  	] @ dlist_constrdef;
  14.147  
  14.148  val dlist_rews = dlist_constrdef @ dlist_rews;
  14.149 @@ -220,7 +221,7 @@
  14.150  (* Distinctness wrt. << and =                                              *)
  14.151  (* ------------------------------------------------------------------------*)
  14.152  
  14.153 -val temp = prove_goal Dlist.thy  "~dnil << dcons[x::'a][xl]"
  14.154 +val temp = prove_goal Dlist.thy  "~dnil << dcons`(x::'a)`xl"
  14.155   (fn prems =>
  14.156  	[
  14.157  	(res_inst_tac [("P1","TT << FF")] classical3 1),
  14.158 @@ -237,7 +238,7 @@
  14.159  
  14.160  val dlist_dist_less = [temp];
  14.161  
  14.162 -val temp = prove_goal Dlist.thy  "[|x~=UU;xl~=UU|]==>~dcons[x][xl] << dnil"
  14.163 +val temp = prove_goal Dlist.thy  "[|x~=UU;xl~=UU|]==>~ dcons`x`xl << dnil"
  14.164   (fn prems =>
  14.165  	[
  14.166  	(cut_facts_tac prems 1),
  14.167 @@ -251,7 +252,7 @@
  14.168  
  14.169  val dlist_dist_less = temp::dlist_dist_less;
  14.170  
  14.171 -val temp = prove_goal Dlist.thy  "dnil ~= dcons[x][xl]"
  14.172 +val temp = prove_goal Dlist.thy  "dnil ~= dcons`x`xl"
  14.173   (fn prems =>
  14.174  	[
  14.175  	(res_inst_tac [("Q","x=UU")] classical2 1),
  14.176 @@ -275,16 +276,16 @@
  14.177  (* ------------------------------------------------------------------------*)
  14.178  
  14.179  val temp = prove_goal Dlist.thy "[|x1~=UU; y1~=UU;x2~=UU; y2~=UU;\
  14.180 -\ dcons[x1][x2] << dcons[y1][y2]|] ==> x1<< y1 & x2 << y2"
  14.181 +\ dcons`x1`x2 << dcons`y1`y2 |] ==> x1<< y1 & x2 << y2"
  14.182   (fn prems =>
  14.183  	[
  14.184  	(cut_facts_tac prems 1),
  14.185  	(rtac conjI 1),
  14.186 -	(dres_inst_tac [("fo5","dlist_when[UU][LAM x l.x]")] monofun_cfun_arg 1),
  14.187 +	(dres_inst_tac [("fo5","dlist_when`UU`(LAM x l.x)")] monofun_cfun_arg 1),
  14.188  	(etac box_less 1),
  14.189  	(asm_simp_tac (HOLCF_ss addsimps dlist_when) 1),
  14.190  	(asm_simp_tac (HOLCF_ss addsimps dlist_when) 1),
  14.191 -	(dres_inst_tac [("fo5","dlist_when[UU][LAM x l.l]")] monofun_cfun_arg 1),
  14.192 +	(dres_inst_tac [("fo5","dlist_when`UU`(LAM x l.l)")] monofun_cfun_arg 1),
  14.193  	(etac box_less 1),
  14.194  	(asm_simp_tac (HOLCF_ss addsimps dlist_when) 1),
  14.195  	(asm_simp_tac (HOLCF_ss addsimps dlist_when) 1)
  14.196 @@ -297,16 +298,16 @@
  14.197  (* ------------------------------------------------------------------------*)
  14.198  
  14.199  val temp = prove_goal Dlist.thy "[|x1~=UU; y1~=UU;x2~=UU; y2~=UU;\
  14.200 -\ dcons[x1][x2] = dcons[y1][y2]|] ==> x1= y1 & x2 = y2"
  14.201 +\ dcons`x1`x2 = dcons`y1`y2 |] ==> x1= y1 & x2 = y2"
  14.202   (fn prems =>
  14.203  	[
  14.204  	(cut_facts_tac prems 1),
  14.205  	(rtac conjI 1),
  14.206 -	(dres_inst_tac [("f","dlist_when[UU][LAM x l.x]")] cfun_arg_cong 1),
  14.207 +	(dres_inst_tac [("f","dlist_when`UU`(LAM x l.x)")] cfun_arg_cong 1),
  14.208  	(etac box_equals 1),
  14.209  	(asm_simp_tac (HOLCF_ss addsimps dlist_when) 1),
  14.210  	(asm_simp_tac (HOLCF_ss addsimps dlist_when) 1),
  14.211 -	(dres_inst_tac [("f","dlist_when[UU][LAM x l.l]")] cfun_arg_cong 1),
  14.212 +	(dres_inst_tac [("f","dlist_when`UU`(LAM x l.l)")] cfun_arg_cong 1),
  14.213  	(etac box_equals 1),
  14.214  	(asm_simp_tac (HOLCF_ss addsimps dlist_when) 1),
  14.215  	(asm_simp_tac (HOLCF_ss addsimps dlist_when) 1)
  14.216 @@ -330,8 +331,8 @@
  14.217  
  14.218  val dlist_discsel_def = 
  14.219  	[
  14.220 -	prover "l~=UU ==> is_dnil[l]~=UU", 
  14.221 -	prover "l~=UU ==> is_dcons[l]~=UU" 
  14.222 +	prover "l~=UU ==> is_dnil`l~=UU", 
  14.223 +	prover "l~=UU ==> is_dcons`l~=UU" 
  14.224  	];
  14.225  
  14.226  val dlist_rews = dlist_discsel_def @ dlist_rews;
  14.227 @@ -340,7 +341,7 @@
  14.228  (* enhance the simplifier                                                  *)
  14.229  (* ------------------------------------------------------------------------*)
  14.230  
  14.231 -qed_goal "dhd2" Dlist.thy "xl~=UU ==> dhd[dcons[x][xl]]=x"
  14.232 +qed_goal "dhd2" Dlist.thy "xl~=UU ==> dhd`(dcons`x`xl)=x"
  14.233   (fn prems =>
  14.234  	[
  14.235  	(cut_facts_tac prems 1),
  14.236 @@ -349,7 +350,7 @@
  14.237  	(asm_simp_tac (HOLCF_ss addsimps dlist_rews) 1)
  14.238  	]);
  14.239  
  14.240 -qed_goal "dtl2" Dlist.thy "x~=UU ==> dtl[dcons[x][xl]]=xl"
  14.241 +qed_goal "dtl2" Dlist.thy "x~=UU ==> dtl`(dcons`x`xl)=xl"
  14.242   (fn prems =>
  14.243  	[
  14.244  	(cut_facts_tac prems 1),
  14.245 @@ -364,7 +365,7 @@
  14.246  (* Properties dlist_take                                                   *)
  14.247  (* ------------------------------------------------------------------------*)
  14.248  
  14.249 -val temp = prove_goalw Dlist.thy [dlist_take_def] "dlist_take(n)[UU]=UU"
  14.250 +val temp = prove_goalw Dlist.thy [dlist_take_def] "dlist_take n`UU=UU"
  14.251   (fn prems =>
  14.252  	[
  14.253  	(res_inst_tac [("n","n")] natE 1),
  14.254 @@ -375,7 +376,7 @@
  14.255  
  14.256  val dlist_take = [temp];
  14.257  
  14.258 -val temp = prove_goalw Dlist.thy [dlist_take_def] "dlist_take(0)[xs]=UU"
  14.259 +val temp = prove_goalw Dlist.thy [dlist_take_def] "dlist_take 0`xs=UU"
  14.260   (fn prems =>
  14.261  	[
  14.262  	(asm_simp_tac iterate_ss 1)
  14.263 @@ -384,7 +385,7 @@
  14.264  val dlist_take = temp::dlist_take;
  14.265  
  14.266  val temp = prove_goalw Dlist.thy [dlist_take_def]
  14.267 -	"dlist_take(Suc(n))[dnil]=dnil"
  14.268 +	"dlist_take (Suc n)`dnil=dnil"
  14.269   (fn prems =>
  14.270  	[
  14.271  	(asm_simp_tac iterate_ss 1),
  14.272 @@ -394,7 +395,7 @@
  14.273  val dlist_take = temp::dlist_take;
  14.274  
  14.275  val temp = prove_goalw Dlist.thy [dlist_take_def]
  14.276 -  "dlist_take(Suc(n))[dcons[x][xl]]=dcons[x][dlist_take(n)[xl]]"
  14.277 +  "dlist_take (Suc n)`(dcons`x`xl)= dcons`x`(dlist_take n`xl)"
  14.278   (fn prems =>
  14.279  	[
  14.280  	(res_inst_tac [("Q","x=UU")] classical2 1),
  14.281 @@ -439,7 +440,7 @@
  14.282  	]);
  14.283  
  14.284  val dlist_take_lemma = prover dlist_reach  [dlist_take_def]
  14.285 -	"(!!n.dlist_take(n)[l1]=dlist_take(n)[l2]) ==> l1=l2";
  14.286 +	"(!!n.dlist_take n`l1 = dlist_take n`l2) ==> l1=l2";
  14.287  
  14.288  
  14.289  (* ------------------------------------------------------------------------*)
  14.290 @@ -447,7 +448,7 @@
  14.291  (* ------------------------------------------------------------------------*)
  14.292  
  14.293  qed_goalw "dlist_coind_lemma" Dlist.thy [dlist_bisim_def] 
  14.294 -"dlist_bisim(R) ==> ! p q.R(p,q) --> dlist_take(n)[p]=dlist_take(n)[q]"
  14.295 +"dlist_bisim R ==> ! p q. R p q --> dlist_take n`p = dlist_take n`q"
  14.296   (fn prems =>
  14.297  	[
  14.298  	(cut_facts_tac prems 1),
  14.299 @@ -468,7 +469,7 @@
  14.300  	(fast_tac HOL_cs 1)
  14.301  	]);
  14.302  
  14.303 -qed_goal "dlist_coind" Dlist.thy "[|dlist_bisim(R);R(p,q)|] ==> p = q"
  14.304 +qed_goal "dlist_coind" Dlist.thy "[|dlist_bisim R ; R p q |] ==> p = q"
  14.305   (fn prems =>
  14.306  	[
  14.307  	(rtac dlist_take_lemma 1),
  14.308 @@ -483,8 +484,8 @@
  14.309  
  14.310  qed_goal "dlist_finite_ind" Dlist.thy
  14.311  "[|P(UU);P(dnil);\
  14.312 -\  !! x l1.[|x~=UU;l1~=UU;P(l1)|] ==> P(dcons[x][l1])\
  14.313 -\  |] ==> !l.P(dlist_take(n)[l])"
  14.314 +\  !! x l1.[|x~=UU;l1~=UU;P(l1)|] ==> P(dcons`x`l1)\
  14.315 +\  |] ==> !l.P(dlist_take n`l)"
  14.316   (fn prems =>
  14.317  	[
  14.318  	(nat_ind_tac "n" 1),
  14.319 @@ -497,7 +498,7 @@
  14.320  	(asm_simp_tac (HOLCF_ss addsimps dlist_rews) 1),
  14.321  	(resolve_tac prems 1),
  14.322  	(asm_simp_tac (HOLCF_ss addsimps dlist_rews) 1),
  14.323 -	(res_inst_tac [("Q","dlist_take(n1)[xl]=UU")] classical2 1),
  14.324 +	(res_inst_tac [("Q","dlist_take n1`xl=UU")] classical2 1),
  14.325  	(asm_simp_tac (HOLCF_ss addsimps dlist_rews) 1),
  14.326  	(resolve_tac prems 1),
  14.327  	(resolve_tac prems 1),
  14.328 @@ -507,7 +508,7 @@
  14.329  	]);
  14.330  
  14.331  qed_goal "dlist_all_finite_lemma1" Dlist.thy
  14.332 -"!l.dlist_take(n)[l]=UU |dlist_take(n)[l]=l"
  14.333 +"!l.dlist_take n`l=UU |dlist_take n`l=l"
  14.334   (fn prems =>
  14.335  	[
  14.336  	(nat_ind_tac "n" 1),
  14.337 @@ -523,18 +524,18 @@
  14.338  	(asm_simp_tac (HOLCF_ss addsimps dlist_rews) 1)
  14.339  	]);
  14.340  
  14.341 -qed_goal "dlist_all_finite_lemma2" Dlist.thy "? n.dlist_take(n)[l]=l"
  14.342 +qed_goal "dlist_all_finite_lemma2" Dlist.thy "? n.dlist_take n`l=l"
  14.343   (fn prems =>
  14.344  	[
  14.345  	(res_inst_tac [("Q","l=UU")] classical2 1),
  14.346  	(asm_simp_tac (HOLCF_ss addsimps dlist_rews) 1),
  14.347 -	(subgoal_tac "(!n.dlist_take(n)[l]=UU) |(? n.dlist_take(n)[l]=l)" 1),
  14.348 +	(subgoal_tac "(!n.dlist_take n`l=UU) |(? n.dlist_take n`l = l)" 1),
  14.349  	(etac disjE 1),
  14.350  	(eres_inst_tac [("P","l=UU")] notE 1),
  14.351  	(rtac dlist_take_lemma 1),
  14.352  	(asm_simp_tac (HOLCF_ss addsimps dlist_rews) 1),
  14.353  	(atac 1),
  14.354 -	(subgoal_tac "!n.!l.dlist_take(n)[l]=UU |dlist_take(n)[l]=l" 1),
  14.355 +	(subgoal_tac "!n.!l.dlist_take n`l=UU |dlist_take n`l=l" 1),
  14.356  	(fast_tac HOL_cs 1),
  14.357  	(rtac allI 1),
  14.358  	(rtac dlist_all_finite_lemma1 1)
  14.359 @@ -548,7 +549,7 @@
  14.360  
  14.361  qed_goal "dlist_ind" Dlist.thy
  14.362  "[|P(UU);P(dnil);\
  14.363 -\  !! x l1.[|x~=UU;l1~=UU;P(l1)|] ==> P(dcons[x][l1])|] ==> P(l)"
  14.364 +\  !! x l1.[|x~=UU;l1~=UU;P(l1)|] ==> P(dcons`x`l1)|] ==> P(l)"
  14.365   (fn prems =>
  14.366  	[
  14.367  	(rtac (dlist_all_finite_lemma2 RS exE) 1),
    15.1 --- a/src/HOLCF/Dlist.thy	Thu Jun 29 16:16:24 1995 +0200
    15.2 +++ b/src/HOLCF/Dlist.thy	Thu Jun 29 16:28:40 1995 +0200
    15.3 @@ -66,44 +66,46 @@
    15.4  (* dlist_abs is an isomorphism with inverse dlist_rep                      *)
    15.5  (* identity is the least endomorphism on 'a dlist                          *)
    15.6  
    15.7 -dlist_abs_iso	"dlist_rep[dlist_abs[x]] = x"
    15.8 -dlist_rep_iso	"dlist_abs[dlist_rep[x]] = x"
    15.9 -dlist_copy_def	"dlist_copy == (LAM f. dlist_abs oo 
   15.10 - 		(when[sinl][sinr oo (ssplit[LAM x y. x ## f[y]])])
   15.11 -                                oo dlist_rep)"
   15.12 -dlist_reach	"(fix[dlist_copy])[x]=x"
   15.13 +dlist_abs_iso	"dlist_rep`(dlist_abs`x) = x"
   15.14 +dlist_rep_iso	"dlist_abs`(dlist_rep`x) = x"
   15.15 +dlist_copy_def	"dlist_copy == (LAM f. dlist_abs oo \
   15.16 +\ 		(sswhen`sinl`(sinr oo (ssplit`(LAM x y. (|x,f`y|) ))))\
   15.17 +\                                oo dlist_rep)"
   15.18 +dlist_reach	"(fix`dlist_copy)`x=x"
   15.19  
   15.20 +
   15.21 +defs
   15.22  (* ----------------------------------------------------------------------- *)
   15.23  (* properties of additional constants                                      *)
   15.24  (* ----------------------------------------------------------------------- *)
   15.25  (* constructors                                                            *)
   15.26  
   15.27 -dnil_def	"dnil  == dlist_abs[sinl[one]]"
   15.28 -dcons_def	"dcons == (LAM x l. dlist_abs[sinr[x##l]])"
   15.29 +dnil_def	"dnil  == dlist_abs`(sinl`one)"
   15.30 +dcons_def	"dcons == (LAM x l. dlist_abs`(sinr`(|x,l|) ))"
   15.31  
   15.32  (* ----------------------------------------------------------------------- *)
   15.33  (* discriminator functional                                                *)
   15.34  
   15.35  dlist_when_def 
   15.36 -"dlist_when == (LAM f1 f2 l.
   15.37 -   when[LAM x.f1][ssplit[LAM x l.f2[x][l]]][dlist_rep[l]])"
   15.38 +"dlist_when == (LAM f1 f2 l.\
   15.39 +\   sswhen`(LAM x.f1) `(ssplit`(LAM x l.f2`x`l)) `(dlist_rep`l))"
   15.40  
   15.41  (* ----------------------------------------------------------------------- *)
   15.42  (* discriminators and selectors                                            *)
   15.43  
   15.44 -is_dnil_def	"is_dnil  == dlist_when[TT][LAM x l.FF]"
   15.45 -is_dcons_def	"is_dcons == dlist_when[FF][LAM x l.TT]"
   15.46 -dhd_def		"dhd == dlist_when[UU][LAM x l.x]"
   15.47 -dtl_def		"dtl == dlist_when[UU][LAM x l.l]"
   15.48 +is_dnil_def	"is_dnil  == dlist_when`TT`(LAM x l.FF)"
   15.49 +is_dcons_def	"is_dcons == dlist_when`FF`(LAM x l.TT)"
   15.50 +dhd_def		"dhd == dlist_when`UU`(LAM x l.x)"
   15.51 +dtl_def		"dtl == dlist_when`UU`(LAM x l.l)"
   15.52  
   15.53  (* ----------------------------------------------------------------------- *)
   15.54  (* the taker for dlists                                                   *)
   15.55  
   15.56 -dlist_take_def "dlist_take == (%n.iterate(n,dlist_copy,UU))"
   15.57 +dlist_take_def "dlist_take == (%n.iterate n dlist_copy UU)"
   15.58  
   15.59  (* ----------------------------------------------------------------------- *)
   15.60  
   15.61 -dlist_finite_def	"dlist_finite == (%s.? n.dlist_take(n)[s]=s)"
   15.62 +dlist_finite_def	"dlist_finite == (%s.? n.dlist_take n`s=s)"
   15.63  
   15.64  (* ----------------------------------------------------------------------- *)
   15.65  (* definition of bisimulation is determined by domain equation             *)
   15.66 @@ -111,11 +113,11 @@
   15.67  
   15.68  dlist_bisim_def "dlist_bisim ==
   15.69   ( %R.!l1 l2.
   15.70 - 	R(l1,l2) -->
   15.71 + 	R l1 l2 -->
   15.72    ((l1=UU & l2=UU) |
   15.73     (l1=dnil & l2=dnil) |
   15.74     (? x l11 l21. x~=UU & l11~=UU & l21~=UU & 
   15.75 -               l1=dcons[x][l11] & l2 = dcons[x][l21] & R(l11,l21))))"
   15.76 +               l1=dcons`x`l11 & l2 = dcons`x`l21 & R l11 l21)))"
   15.77  
   15.78  end
   15.79  
    16.1 --- a/src/HOLCF/Dnat.ML	Thu Jun 29 16:16:24 1995 +0200
    16.2 +++ b/src/HOLCF/Dnat.ML	Thu Jun 29 16:28:40 1995 +0200
    16.3 @@ -32,10 +32,10 @@
    16.4  
    16.5  val dnat_copy = 
    16.6  	[
    16.7 -	prover [dnat_copy_def] "dnat_copy[f][UU]=UU",
    16.8 -	prover [dnat_copy_def,dzero_def] "dnat_copy[f][dzero]= dzero",
    16.9 +	prover [dnat_copy_def] "dnat_copy`f`UU=UU",
   16.10 +	prover [dnat_copy_def,dzero_def] "dnat_copy`f`dzero= dzero",
   16.11  	prover [dnat_copy_def,dsucc_def] 
   16.12 -		"n~=UU ==> dnat_copy[f][dsucc[n]] = dsucc[f[n]]"
   16.13 +		"n~=UU ==> dnat_copy`f`(dsucc`n) = dsucc`(f`n)"
   16.14  	];
   16.15  
   16.16  val dnat_rews =  dnat_copy @ dnat_rews; 
   16.17 @@ -45,12 +45,12 @@
   16.18  (* ------------------------------------------------------------------------*)
   16.19  
   16.20  qed_goalw "Exh_dnat" Dnat.thy [dsucc_def,dzero_def]
   16.21 -	"n = UU | n = dzero | (? x . x~=UU & n = dsucc[x])"
   16.22 +	"n = UU | n = dzero | (? x . x~=UU & n = dsucc`x)"
   16.23   (fn prems =>
   16.24  	[
   16.25  	(simp_tac HOLCF_ss  1),
   16.26  	(rtac (dnat_rep_iso RS subst) 1),
   16.27 -	(res_inst_tac [("p","dnat_rep[n]")] ssumE 1),
   16.28 +	(res_inst_tac [("p","dnat_rep`n")] ssumE 1),
   16.29  	(rtac disjI1 1),
   16.30  	(asm_simp_tac (HOLCF_ss addsimps dnat_rews) 1),
   16.31  	(rtac (disjI1 RS disjI2) 1),
   16.32 @@ -64,7 +64,7 @@
   16.33  	]);
   16.34  
   16.35  qed_goal "dnatE" Dnat.thy 
   16.36 - "[| n=UU ==> Q; n=dzero ==> Q; !!x.[|n=dsucc[x];x~=UU|]==>Q|]==>Q"
   16.37 + "[| n=UU ==> Q; n=dzero ==> Q; !!x.[|n=dsucc`x;x~=UU|]==>Q|]==>Q"
   16.38   (fn prems =>
   16.39  	[
   16.40  	(rtac (Exh_dnat RS disjE) 1),
   16.41 @@ -91,10 +91,10 @@
   16.42  
   16.43  
   16.44  val dnat_when = [
   16.45 -	prover [dnat_when_def] "dnat_when[c][f][UU]=UU",
   16.46 -	prover [dnat_when_def,dzero_def] "dnat_when[c][f][dzero]=c",
   16.47 +	prover [dnat_when_def] "dnat_when`c`f`UU=UU",
   16.48 +	prover [dnat_when_def,dzero_def] "dnat_when`c`f`dzero=c",
   16.49  	prover [dnat_when_def,dsucc_def] 
   16.50 -		"n~=UU ==> dnat_when[c][f][dsucc[n]]=f[n]"
   16.51 +		"n~=UU ==> dnat_when`c`f`(dsucc`n)=f`n"
   16.52  	];
   16.53  
   16.54  val dnat_rews = dnat_when @ dnat_rews;
   16.55 @@ -110,9 +110,9 @@
   16.56  	]);
   16.57  
   16.58  val dnat_discsel = [
   16.59 -	prover [is_dzero_def] "is_dzero[UU]=UU",
   16.60 -	prover [is_dsucc_def] "is_dsucc[UU]=UU",
   16.61 -	prover [dpred_def] "dpred[UU]=UU"
   16.62 +	prover [is_dzero_def] "is_dzero`UU=UU",
   16.63 +	prover [is_dsucc_def] "is_dsucc`UU=UU",
   16.64 +	prover [dpred_def] "dpred`UU=UU"
   16.65  	];
   16.66  
   16.67  
   16.68 @@ -124,12 +124,12 @@
   16.69  	]);
   16.70  
   16.71  val dnat_discsel = [
   16.72 -	prover [is_dzero_def] "is_dzero[dzero]=TT",
   16.73 -	prover [is_dzero_def] "n~=UU ==>is_dzero[dsucc[n]]=FF",
   16.74 -	prover [is_dsucc_def] "is_dsucc[dzero]=FF",
   16.75 -	prover [is_dsucc_def] "n~=UU ==> is_dsucc[dsucc[n]]=TT",
   16.76 -	prover [dpred_def] "dpred[dzero]=UU",
   16.77 -	prover [dpred_def] "n~=UU ==> dpred[dsucc[n]]=n"
   16.78 +	prover [is_dzero_def] "is_dzero`dzero=TT",
   16.79 +	prover [is_dzero_def] "n~=UU ==>is_dzero`(dsucc`n)=FF",
   16.80 +	prover [is_dsucc_def] "is_dsucc`dzero=FF",
   16.81 +	prover [is_dsucc_def] "n~=UU ==> is_dsucc`(dsucc`n)=TT",
   16.82 +	prover [dpred_def] "dpred`dzero=UU",
   16.83 +	prover [dpred_def] "n~=UU ==> dpred`(dsucc`n)=n"
   16.84  	] @ dnat_discsel;
   16.85  
   16.86  val dnat_rews = dnat_discsel @ dnat_rews;
   16.87 @@ -149,8 +149,8 @@
   16.88  	]);
   16.89  
   16.90  val dnat_constrdef = [
   16.91 -	prover "is_dzero[UU] ~= UU" "dzero~=UU",
   16.92 -	prover "is_dsucc[UU] ~= UU" "n~=UU ==> dsucc[n]~=UU"
   16.93 +	prover "is_dzero`UU ~= UU" "dzero~=UU",
   16.94 +	prover "is_dsucc`UU ~= UU" "n~=UU ==> dsucc`n~=UU"
   16.95  	]; 
   16.96  
   16.97  
   16.98 @@ -161,7 +161,7 @@
   16.99  	]);
  16.100  
  16.101  val dnat_constrdef = [
  16.102 -	prover [dsucc_def] "dsucc[UU]=UU"
  16.103 +	prover [dsucc_def] "dsucc`UU=UU"
  16.104  	] @ dnat_constrdef;
  16.105  
  16.106  val dnat_rews = dnat_constrdef @ dnat_rews;
  16.107 @@ -171,7 +171,7 @@
  16.108  (* Distinctness wrt. << and =                                              *)
  16.109  (* ------------------------------------------------------------------------*)
  16.110  
  16.111 -val temp = prove_goal Dnat.thy  "~dzero << dsucc[n]"
  16.112 +val temp = prove_goal Dnat.thy  "~dzero << dsucc`n"
  16.113   (fn prems =>
  16.114  	[
  16.115  	(res_inst_tac [("P1","TT << FF")] classical3 1),
  16.116 @@ -186,7 +186,7 @@
  16.117  
  16.118  val dnat_dist_less = [temp];
  16.119  
  16.120 -val temp = prove_goal Dnat.thy  "n~=UU ==> ~dsucc[n] << dzero"
  16.121 +val temp = prove_goal Dnat.thy  "n~=UU ==> ~dsucc`n << dzero"
  16.122   (fn prems =>
  16.123  	[
  16.124  	(cut_facts_tac prems 1),
  16.125 @@ -200,7 +200,7 @@
  16.126  
  16.127  val dnat_dist_less = temp::dnat_dist_less;
  16.128  
  16.129 -val temp = prove_goal Dnat.thy   "dzero ~= dsucc[n]"
  16.130 +val temp = prove_goal Dnat.thy   "dzero ~= dsucc`n"
  16.131   (fn prems =>
  16.132  	[
  16.133  	(res_inst_tac [("Q","n=UU")] classical2 1),
  16.134 @@ -224,11 +224,11 @@
  16.135  val dnat_invert = 
  16.136  	[
  16.137  prove_goal Dnat.thy 
  16.138 -"[|x1~=UU; y1~=UU; dsucc[x1] << dsucc[y1] |] ==> x1<< y1"
  16.139 +"[|x1~=UU; y1~=UU; dsucc`x1 << dsucc`y1 |] ==> x1<< y1"
  16.140   (fn prems =>
  16.141  	[
  16.142  	(cut_facts_tac prems 1),
  16.143 -	(dres_inst_tac [("fo5","dnat_when[c][LAM x.x]")] monofun_cfun_arg 1),
  16.144 +	(dres_inst_tac [("fo5","dnat_when`c`(LAM x.x)")] monofun_cfun_arg 1),
  16.145  	(etac box_less 1),
  16.146  	(asm_simp_tac (HOLCF_ss addsimps dnat_rews) 1),
  16.147  	(asm_simp_tac (HOLCF_ss addsimps dnat_rews) 1)
  16.148 @@ -242,11 +242,11 @@
  16.149  val dnat_inject = 
  16.150  	[
  16.151  prove_goal Dnat.thy 
  16.152 -"[|x1~=UU; y1~=UU; dsucc[x1] = dsucc[y1] |] ==> x1= y1"
  16.153 +"[|x1~=UU; y1~=UU; dsucc`x1 = dsucc`y1 |] ==> x1= y1"
  16.154   (fn prems =>
  16.155  	[
  16.156  	(cut_facts_tac prems 1),
  16.157 -	(dres_inst_tac [("f","dnat_when[c][LAM x.x]")] cfun_arg_cong 1),
  16.158 +	(dres_inst_tac [("f","dnat_when`c`(LAM x.x)")] cfun_arg_cong 1),
  16.159  	(etac box_equals 1),
  16.160  	(asm_simp_tac (HOLCF_ss addsimps dnat_rews) 1),
  16.161  	(asm_simp_tac (HOLCF_ss addsimps dnat_rews) 1)
  16.162 @@ -269,8 +269,8 @@
  16.163  
  16.164  val dnat_discsel_def = 
  16.165  	[
  16.166 -	prover  "n~=UU ==> is_dzero[n]~=UU",
  16.167 -	prover  "n~=UU ==> is_dsucc[n]~=UU"
  16.168 +	prover  "n~=UU ==> is_dzero`n ~= UU",
  16.169 +	prover  "n~=UU ==> is_dsucc`n ~= UU"
  16.170  	];
  16.171  
  16.172  val dnat_rews = dnat_discsel_def @ dnat_rews;
  16.173 @@ -279,7 +279,7 @@
  16.174  (* ------------------------------------------------------------------------*)
  16.175  (* Properties dnat_take                                                    *)
  16.176  (* ------------------------------------------------------------------------*)
  16.177 -val temp = prove_goalw Dnat.thy [dnat_take_def] "dnat_take(n)[UU]=UU"
  16.178 +val temp = prove_goalw Dnat.thy [dnat_take_def] "dnat_take n`UU = UU"
  16.179   (fn prems =>
  16.180  	[
  16.181  	(res_inst_tac [("n","n")] natE 1),
  16.182 @@ -290,7 +290,7 @@
  16.183  
  16.184  val dnat_take = [temp];
  16.185  
  16.186 -val temp = prove_goalw Dnat.thy [dnat_take_def] "dnat_take(0)[xs]=UU"
  16.187 +val temp = prove_goalw Dnat.thy [dnat_take_def] "dnat_take 0`xs = UU"
  16.188   (fn prems =>
  16.189  	[
  16.190  	(asm_simp_tac iterate_ss 1)
  16.191 @@ -299,7 +299,7 @@
  16.192  val dnat_take = temp::dnat_take;
  16.193  
  16.194  val temp = prove_goalw Dnat.thy [dnat_take_def]
  16.195 -	"dnat_take(Suc(n))[dzero]=dzero"
  16.196 +	"dnat_take (Suc n)`dzero=dzero"
  16.197   (fn prems =>
  16.198  	[
  16.199  	(asm_simp_tac iterate_ss 1),
  16.200 @@ -309,7 +309,7 @@
  16.201  val dnat_take = temp::dnat_take;
  16.202  
  16.203  val temp = prove_goalw Dnat.thy [dnat_take_def]
  16.204 -  "dnat_take(Suc(n))[dsucc[xs]]=dsucc[dnat_take(n)[xs]]"
  16.205 +  "dnat_take (Suc n)`(dsucc`xs)=dsucc`(dnat_take n ` xs)"
  16.206   (fn prems =>
  16.207  	[
  16.208  	(res_inst_tac [("Q","xs=UU")] classical2 1),
  16.209 @@ -352,7 +352,7 @@
  16.210  	]);
  16.211  
  16.212  val dnat_take_lemma = prover dnat_reach  [dnat_take_def]
  16.213 -	"(!!n.dnat_take(n)[s1]=dnat_take(n)[s2]) ==> s1=s2";
  16.214 +	"(!!n.dnat_take n`s1 = dnat_take n`s2) ==> s1=s2";
  16.215  
  16.216  
  16.217  (* ------------------------------------------------------------------------*)
  16.218 @@ -360,7 +360,7 @@
  16.219  (* ------------------------------------------------------------------------*)
  16.220  
  16.221  qed_goalw "dnat_coind_lemma" Dnat.thy [dnat_bisim_def] 
  16.222 -"dnat_bisim(R) ==> ! p q.R(p,q) --> dnat_take(n)[p]=dnat_take(n)[q]"
  16.223 +"dnat_bisim R ==> ! p q. R p q --> dnat_take n`p = dnat_take n`q"
  16.224   (fn prems =>
  16.225  	[
  16.226  	(cut_facts_tac prems 1),
  16.227 @@ -380,7 +380,7 @@
  16.228  	(fast_tac HOL_cs 1)
  16.229  	]);
  16.230  
  16.231 -qed_goal "dnat_coind" Dnat.thy "[|dnat_bisim(R);R(p,q)|] ==> p = q"
  16.232 +qed_goal "dnat_coind" Dnat.thy "[|dnat_bisim R;R p q|] ==> p = q"
  16.233   (fn prems =>
  16.234  	[
  16.235  	(rtac dnat_take_lemma 1),
  16.236 @@ -399,7 +399,7 @@
  16.237  "[| adm(P);\
  16.238  \   P(UU);\
  16.239  \   P(dzero);\
  16.240 -\   !! s1.[|s1~=UU ; P(s1)|] ==> P(dsucc[s1])|] ==> P(s)"
  16.241 +\   !! s1.[|s1~=UU ; P(s1)|] ==> P(dsucc`s1)|] ==> P(s)"
  16.242   (fn prems =>
  16.243  	[
  16.244  	(rtac (dnat_reach RS subst) 1),
  16.245 @@ -407,7 +407,7 @@
  16.246  	(rtac fix_ind 1),
  16.247  	(rtac adm_all2 1),
  16.248  	(rtac adm_subst 1),
  16.249 -	(contX_tacR 1),
  16.250 +	(cont_tacR 1),
  16.251  	(resolve_tac prems 1),
  16.252  	(simp_tac HOLCF_ss 1),
  16.253  	(resolve_tac prems 1),
  16.254 @@ -418,7 +418,7 @@
  16.255  	(asm_simp_tac (HOLCF_ss addsimps dnat_copy) 1),
  16.256  	(resolve_tac prems 1),
  16.257  	(asm_simp_tac (HOLCF_ss addsimps dnat_copy) 1),
  16.258 -	(res_inst_tac [("Q","x[xb]=UU")] classical2 1),
  16.259 +	(res_inst_tac [("Q","x`xb=UU")] classical2 1),
  16.260  	(asm_simp_tac (HOLCF_ss addsimps dnat_rews) 1),
  16.261  	(resolve_tac prems 1),
  16.262  	(eresolve_tac prems 1),
  16.263 @@ -428,8 +428,8 @@
  16.264  
  16.265  qed_goal "dnat_finite_ind" Dnat.thy
  16.266  "[|P(UU);P(dzero);\
  16.267 -\  !! s1.[|s1~=UU;P(s1)|] ==> P(dsucc[s1])\
  16.268 -\  |] ==> !s.P(dnat_take(n)[s])"
  16.269 +\  !! s1.[|s1~=UU;P(s1)|] ==> P(dsucc`s1)\
  16.270 +\  |] ==> !s.P(dnat_take n`s)"
  16.271   (fn prems =>
  16.272  	[
  16.273  	(nat_ind_tac "n" 1),
  16.274 @@ -442,7 +442,7 @@
  16.275  	(asm_simp_tac (HOLCF_ss addsimps dnat_rews) 1),
  16.276  	(resolve_tac prems 1),
  16.277  	(asm_simp_tac (HOLCF_ss addsimps dnat_rews) 1),
  16.278 -	(res_inst_tac [("Q","dnat_take(n1)[x]=UU")] classical2 1),
  16.279 +	(res_inst_tac [("Q","dnat_take n1`x=UU")] classical2 1),
  16.280  	(asm_simp_tac (HOLCF_ss addsimps dnat_rews) 1),
  16.281  	(resolve_tac prems 1),
  16.282  	(resolve_tac prems 1),
  16.283 @@ -451,7 +451,7 @@
  16.284  	]);
  16.285  
  16.286  qed_goal "dnat_all_finite_lemma1" Dnat.thy
  16.287 -"!s.dnat_take(n)[s]=UU |dnat_take(n)[s]=s"
  16.288 +"!s.dnat_take n`s=UU |dnat_take n`s=s"
  16.289   (fn prems =>
  16.290  	[
  16.291  	(nat_ind_tac "n" 1),
  16.292 @@ -467,18 +467,18 @@
  16.293  	(asm_simp_tac (HOLCF_ss addsimps dnat_rews) 1)
  16.294  	]);
  16.295  
  16.296 -qed_goal "dnat_all_finite_lemma2" Dnat.thy "? n.dnat_take(n)[s]=s"
  16.297 +qed_goal "dnat_all_finite_lemma2" Dnat.thy "? n.dnat_take n`s=s"
  16.298   (fn prems =>
  16.299  	[
  16.300  	(res_inst_tac [("Q","s=UU")] classical2 1),
  16.301  	(asm_simp_tac (HOLCF_ss addsimps dnat_rews) 1),
  16.302 -	(subgoal_tac "(!n.dnat_take(n)[s]=UU) |(? n.dnat_take(n)[s]=s)" 1),
  16.303 +	(subgoal_tac "(!n.dnat_take(n)`s=UU) |(? n.dnat_take(n)`s=s)" 1),
  16.304  	(etac disjE 1),
  16.305  	(eres_inst_tac [("P","s=UU")] notE 1),
  16.306  	(rtac dnat_take_lemma 1),
  16.307  	(asm_simp_tac (HOLCF_ss addsimps dnat_rews) 1),
  16.308  	(atac 1),
  16.309 -	(subgoal_tac "!n.!s.dnat_take(n)[s]=UU |dnat_take(n)[s]=s" 1),
  16.310 +	(subgoal_tac "!n.!s.dnat_take(n)`s=UU |dnat_take(n)`s=s" 1),
  16.311  	(fast_tac HOL_cs 1),
  16.312  	(rtac allI 1),
  16.313  	(rtac dnat_all_finite_lemma1 1)
  16.314 @@ -487,7 +487,7 @@
  16.315  
  16.316  qed_goal "dnat_ind" Dnat.thy
  16.317  "[|P(UU);P(dzero);\
  16.318 -\  !! s1.[|s1~=UU;P(s1)|] ==> P(dsucc[s1])\
  16.319 +\  !! s1.[|s1~=UU;P(s1)|] ==> P(dsucc`s1)\
  16.320  \  |] ==> P(s)"
  16.321   (fn prems =>
  16.322  	[
    17.1 --- a/src/HOLCF/Dnat.thy	Thu Jun 29 16:16:24 1995 +0200
    17.2 +++ b/src/HOLCF/Dnat.thy	Thu Jun 29 16:28:40 1995 +0200
    17.3 @@ -61,38 +61,40 @@
    17.4  (* dnat_abs is an isomorphism with inverse dnat_rep                        *)
    17.5  (* identity is the least endomorphism on dnat                              *)
    17.6  
    17.7 -dnat_abs_iso	"dnat_rep[dnat_abs[x]] = x"
    17.8 -dnat_rep_iso	"dnat_abs[dnat_rep[x]] = x"
    17.9 +dnat_abs_iso	"dnat_rep`(dnat_abs`x) = x"
   17.10 +dnat_rep_iso	"dnat_abs`(dnat_rep`x) = x"
   17.11  dnat_copy_def	"dnat_copy == (LAM f. dnat_abs oo 
   17.12 -		 (when[sinl][sinr oo f]) oo dnat_rep )"
   17.13 -dnat_reach	"(fix[dnat_copy])[x]=x"
   17.14 +		 (sswhen`sinl`(sinr oo f)) oo dnat_rep )"
   17.15 +dnat_reach	"(fix`dnat_copy)`x=x"
   17.16  
   17.17 +
   17.18 +defs
   17.19  (* ----------------------------------------------------------------------- *)
   17.20  (* properties of additional constants                                      *)
   17.21  (* ----------------------------------------------------------------------- *)
   17.22  (* constructors                                                            *)
   17.23  
   17.24 -dzero_def	"dzero == dnat_abs[sinl[one]]"
   17.25 -dsucc_def	"dsucc == (LAM n. dnat_abs[sinr[n]])"
   17.26 +dzero_def	"dzero == dnat_abs`(sinl`one)"
   17.27 +dsucc_def	"dsucc == (LAM n. dnat_abs`(sinr`n))"
   17.28  
   17.29  (* ----------------------------------------------------------------------- *)
   17.30  (* discriminator functional                                                *)
   17.31  
   17.32 -dnat_when_def	"dnat_when == (LAM f1 f2 n.when[LAM x.f1][f2][dnat_rep[n]])"
   17.33 +dnat_when_def	"dnat_when == (LAM f1 f2 n.sswhen`(LAM x.f1)`f2`(dnat_rep`n))"
   17.34  
   17.35  
   17.36  (* ----------------------------------------------------------------------- *)
   17.37  (* discriminators and selectors                                            *)
   17.38  
   17.39 -is_dzero_def	"is_dzero == dnat_when[TT][LAM x.FF]"
   17.40 -is_dsucc_def	"is_dsucc == dnat_when[FF][LAM x.TT]"
   17.41 -dpred_def	"dpred == dnat_when[UU][LAM x.x]"
   17.42 +is_dzero_def	"is_dzero == dnat_when`TT`(LAM x.FF)"
   17.43 +is_dsucc_def	"is_dsucc == dnat_when`FF`(LAM x.TT)"
   17.44 +dpred_def	"dpred == dnat_when`UU`(LAM x.x)"
   17.45  
   17.46  
   17.47  (* ----------------------------------------------------------------------- *)
   17.48  (* the taker for dnats                                                   *)
   17.49  
   17.50 -dnat_take_def "dnat_take == (%n.iterate(n,dnat_copy,UU))"
   17.51 +dnat_take_def "dnat_take == (%n.iterate n dnat_copy UU)"
   17.52  
   17.53  (* ----------------------------------------------------------------------- *)
   17.54  (* definition of bisimulation is determined by domain equation             *)
   17.55 @@ -100,13 +102,9 @@
   17.56  
   17.57  dnat_bisim_def "dnat_bisim ==
   17.58  (%R.!s1 s2.
   17.59 - 	R(s1,s2) -->
   17.60 + 	R s1 s2 -->
   17.61    ((s1=UU & s2=UU) |(s1=dzero & s2=dzero) |
   17.62 -  (? s11 s21. s11~=UU & s21~=UU & s1=dsucc[s11] &
   17.63 -		 s2 = dsucc[s21] & R(s11,s21))))"
   17.64 +  (? s11 s21. s11~=UU & s21~=UU & s1=dsucc`s11 &
   17.65 +		 s2 = dsucc`s21 & R s11 s21)))"
   17.66  
   17.67  end
   17.68 -
   17.69 -
   17.70 -
   17.71 -
    18.1 --- a/src/HOLCF/Dnat2.ML	Thu Jun 29 16:16:24 1995 +0200
    18.2 +++ b/src/HOLCF/Dnat2.ML	Thu Jun 29 16:28:40 1995 +0200
    18.3 @@ -13,21 +13,21 @@
    18.4  (* expand fixed point properties                                             *)
    18.5  (* ------------------------------------------------------------------------- *)
    18.6  
    18.7 -val iterator_def2 = fix_prover Dnat2.thy iterator_def 
    18.8 -	"iterator = (LAM n f x. dnat_when[x][LAM m.f[iterator[m][f][x]]][n])";
    18.9 +val iterator_def2 = fix_prover2 Dnat2.thy iterator_def 
   18.10 +	"iterator = (LAM n f x. dnat_when`x`(LAM m.f`(iterator`m`f`x)) `n)";
   18.11  
   18.12  (* ------------------------------------------------------------------------- *)
   18.13  (* recursive  properties                                                     *)
   18.14  (* ------------------------------------------------------------------------- *)
   18.15  
   18.16 -qed_goal "iterator1" Dnat2.thy "iterator[UU][f][x] = UU"
   18.17 +qed_goal "iterator1" Dnat2.thy "iterator`UU`f`x = UU"
   18.18   (fn prems =>
   18.19  	[
   18.20  	(rtac (iterator_def2 RS ssubst) 1),
   18.21  	(simp_tac (HOLCF_ss addsimps dnat_when) 1)
   18.22  	]);
   18.23  
   18.24 -qed_goal "iterator2" Dnat2.thy "iterator[dzero][f][x] = x"
   18.25 +qed_goal "iterator2" Dnat2.thy "iterator`dzero`f`x = x"
   18.26   (fn prems =>
   18.27  	[
   18.28  	(rtac (iterator_def2 RS ssubst) 1),
   18.29 @@ -35,7 +35,7 @@
   18.30  	]);
   18.31  
   18.32  qed_goal "iterator3" Dnat2.thy 
   18.33 -"n~=UU ==> iterator[dsucc[n]][f][x] = f[iterator[n][f][x]]"
   18.34 +"n~=UU ==> iterator`(dsucc`n)`f`x = f`(iterator`n`f`x)"
   18.35   (fn prems =>
   18.36  	[
   18.37  	(cut_facts_tac prems 1),
    19.1 --- a/src/HOLCF/Dnat2.thy	Thu Jun 29 16:16:24 1995 +0200
    19.2 +++ b/src/HOLCF/Dnat2.thy	Thu Jun 29 16:28:40 1995 +0200
    19.3 @@ -14,19 +14,16 @@
    19.4  iterator	:: "dnat -> ('a -> 'a) -> 'a -> 'a"
    19.5  
    19.6  
    19.7 -rules
    19.8 +defs
    19.9  
   19.10 -iterator_def	"iterator = fix[LAM h n f x.
   19.11 -	dnat_when[x][LAM m.f[h[m][f][x]]][n]]"
   19.12 -
   19.13 -
   19.14 +iterator_def	"iterator == fix`(LAM h n f x.
   19.15 +			dnat_when `x `(LAM m.f`(h`m`f`x)) `n)"
   19.16  end
   19.17  
   19.18 -
   19.19  (*
   19.20  
   19.21 -		iterator[UU][f][x] = UU
   19.22 -		iterator[dzero][f][x] = x
   19.23 -      n~=UU --> iterator[dsucc[n]][f][x] = f[iterator[n][f][x]]
   19.24 +		iterator`UU`f`x = UU
   19.25 +		iterator`dzero`f`x = x
   19.26 +      n~=UU --> iterator`(dsucc`n)`f`x = f`(iterator`n`f`x)
   19.27  *)
   19.28  
    20.1 --- a/src/HOLCF/Fix.ML	Thu Jun 29 16:16:24 1995 +0200
    20.2 +++ b/src/HOLCF/Fix.ML	Thu Jun 29 16:28:40 1995 +0200
    20.3 @@ -12,13 +12,13 @@
    20.4  (* derive inductive properties of iterate from primitive recursion          *)
    20.5  (* ------------------------------------------------------------------------ *)
    20.6  
    20.7 -qed_goal "iterate_0" Fix.thy "iterate(0,F,x) = x"
    20.8 +qed_goal "iterate_0" Fix.thy "iterate 0 F x = x"
    20.9   (fn prems =>
   20.10  	[
   20.11  	(resolve_tac (nat_recs iterate_def) 1)
   20.12  	]);
   20.13  
   20.14 -qed_goal "iterate_Suc" Fix.thy "iterate(Suc(n),F,x) = F[iterate(n,F,x)]"
   20.15 +qed_goal "iterate_Suc" Fix.thy "iterate (Suc n) F x  = F`(iterate n F x)"
   20.16   (fn prems =>
   20.17  	[
   20.18  	(resolve_tac (nat_recs iterate_def) 1)
   20.19 @@ -26,7 +26,7 @@
   20.20  
   20.21  val iterate_ss = Cfun_ss addsimps [iterate_0,iterate_Suc];
   20.22  
   20.23 -qed_goal "iterate_Suc2" Fix.thy "iterate(Suc(n),F,x) = iterate(n,F,F[x])"
   20.24 +qed_goal "iterate_Suc2" Fix.thy "iterate (Suc n) F x = iterate n F (F`x)"
   20.25   (fn prems =>
   20.26  	[
   20.27  	(nat_ind_tac "n" 1),
   20.28 @@ -40,7 +40,7 @@
   20.29  (* ------------------------------------------------------------------------ *)
   20.30  
   20.31  qed_goalw "is_chain_iterate2" Fix.thy [is_chain] 
   20.32 -	" x << F[x] ==> is_chain(%i.iterate(i,F,x))"
   20.33 +	" x << F`x ==> is_chain (%i.iterate i F x)"
   20.34   (fn prems =>
   20.35  	[
   20.36  	(cut_facts_tac prems 1),
   20.37 @@ -54,7 +54,7 @@
   20.38  
   20.39  
   20.40  qed_goal "is_chain_iterate" Fix.thy  
   20.41 -	"is_chain(%i.iterate(i,F,UU))"
   20.42 +	"is_chain (%i.iterate i F UU)"
   20.43   (fn prems =>
   20.44  	[
   20.45  	(rtac is_chain_iterate2 1),
   20.46 @@ -68,7 +68,7 @@
   20.47  (* ------------------------------------------------------------------------ *)
   20.48  
   20.49  
   20.50 -qed_goalw "Ifix_eq" Fix.thy  [Ifix_def] "Ifix(F)=F[Ifix(F)]"
   20.51 +qed_goalw "Ifix_eq" Fix.thy  [Ifix_def] "Ifix F =F`(Ifix F)"
   20.52   (fn prems =>
   20.53  	[
   20.54  	(rtac (contlub_cfun_arg RS ssubst) 1),
   20.55 @@ -92,7 +92,7 @@
   20.56  	]);
   20.57  
   20.58  
   20.59 -qed_goalw "Ifix_least" Fix.thy [Ifix_def] "F[x]=x ==> Ifix(F) << x"
   20.60 +qed_goalw "Ifix_least" Fix.thy [Ifix_def] "F`x=x ==> Ifix(F) << x"
   20.61   (fn prems =>
   20.62  	[
   20.63  	(cut_facts_tac prems 1),
   20.64 @@ -165,10 +165,10 @@
   20.65  	]);
   20.66  
   20.67  
   20.68 -qed_goal "contX_iterate" Fix.thy "contX(iterate(i))"
   20.69 +qed_goal "cont_iterate" Fix.thy "cont(iterate(i))"
   20.70   (fn prems =>
   20.71  	[
   20.72 -	(rtac monocontlub2contX 1),
   20.73 +	(rtac monocontlub2cont 1),
   20.74  	(rtac monofun_iterate 1),
   20.75  	(rtac contlub_iterate 1)
   20.76  	]);
   20.77 @@ -177,7 +177,7 @@
   20.78  (* a lemma about continuity of iterate in its third argument                *)
   20.79  (* ------------------------------------------------------------------------ *)
   20.80  
   20.81 -qed_goal "monofun_iterate2" Fix.thy "monofun(iterate(n,F))"
   20.82 +qed_goal "monofun_iterate2" Fix.thy "monofun(iterate n F)"
   20.83   (fn prems =>
   20.84  	[
   20.85  	(rtac monofunI 1),
   20.86 @@ -188,7 +188,7 @@
   20.87  	(etac monofun_cfun_arg 1)
   20.88  	]);
   20.89  
   20.90 -qed_goal "contlub_iterate2" Fix.thy "contlub(iterate(n,F))"
   20.91 +qed_goal "contlub_iterate2" Fix.thy "contlub(iterate n F)"
   20.92   (fn prems =>
   20.93  	[
   20.94  	(rtac contlubI 1),
   20.95 @@ -196,17 +196,17 @@
   20.96  	(nat_ind_tac "n" 1),
   20.97  	(simp_tac iterate_ss 1),
   20.98  	(simp_tac iterate_ss 1),
   20.99 -	(res_inst_tac [("t","iterate(n1, F, lub(range(%u. Y(u))))"),
  20.100 -	("s","lub(range(%i. iterate(n1, F, Y(i))))")] ssubst 1),
  20.101 +	(res_inst_tac [("t","iterate n1 F (lub(range(%u. Y u)))"),
  20.102 +	("s","lub(range(%i. iterate n1 F (Y i)))")] ssubst 1),
  20.103  	(atac 1),
  20.104  	(rtac contlub_cfun_arg 1),
  20.105  	(etac (monofun_iterate2 RS ch2ch_monofun) 1)
  20.106  	]);
  20.107  
  20.108 -qed_goal "contX_iterate2" Fix.thy "contX(iterate(n,F))"
  20.109 +qed_goal "cont_iterate2" Fix.thy "cont (iterate n F)"
  20.110   (fn prems =>
  20.111  	[
  20.112 -	(rtac monocontlub2contX 1),
  20.113 +	(rtac monocontlub2cont 1),
  20.114  	(rtac monofun_iterate2 1),
  20.115  	(rtac contlub_iterate2 1)
  20.116  	]);
  20.117 @@ -234,7 +234,7 @@
  20.118  (* ------------------------------------------------------------------------ *)
  20.119  
  20.120  qed_goal "is_chain_iterate_lub" Fix.thy   
  20.121 -"is_chain(Y) ==> is_chain(%i. lub(range(%ia. iterate(ia,Y(i),UU))))"
  20.122 +"is_chain(Y) ==> is_chain(%i. lub(range(%ia. iterate ia (Y i) UU)))"
  20.123   (fn prems =>
  20.124  	[
  20.125  	(cut_facts_tac prems 1),
  20.126 @@ -255,7 +255,7 @@
  20.127  (* ------------------------------------------------------------------------ *)
  20.128  
  20.129  qed_goal "contlub_Ifix_lemma1" Fix.thy 
  20.130 -"is_chain(Y) ==> iterate(n,lub(range(Y)),y) = lub(range(%i. iterate(n,Y(i),y)))"
  20.131 +"is_chain(Y) ==>iterate n (lub(range Y)) y = lub(range(%i. iterate n (Y i) y))"
  20.132   (fn prems =>
  20.133  	[
  20.134  	(cut_facts_tac prems 1),
  20.135 @@ -270,8 +270,8 @@
  20.136  
  20.137  
  20.138  qed_goal "ex_lub_iterate" Fix.thy  "is_chain(Y) ==>\
  20.139 -\         lub(range(%i. lub(range(%ia. iterate(i,Y(ia),UU))))) =\
  20.140 -\         lub(range(%i. lub(range(%ia. iterate(ia,Y(i),UU)))))"
  20.141 +\         lub(range(%i. lub(range(%ia. iterate i (Y ia) UU)))) =\
  20.142 +\         lub(range(%i. lub(range(%ia. iterate ia (Y i) UU))))"
  20.143   (fn prems =>
  20.144  	[
  20.145  	(cut_facts_tac prems 1),
  20.146 @@ -313,10 +313,10 @@
  20.147  	]);
  20.148  
  20.149  
  20.150 -qed_goal "contX_Ifix" Fix.thy "contX(Ifix)"
  20.151 +qed_goal "cont_Ifix" Fix.thy "cont(Ifix)"
  20.152   (fn prems =>
  20.153  	[
  20.154 -	(rtac monocontlub2contX 1),
  20.155 +	(rtac monocontlub2cont 1),
  20.156  	(rtac monofun_Ifix 1),
  20.157  	(rtac contlub_Ifix 1)
  20.158  	]);
  20.159 @@ -325,30 +325,30 @@
  20.160  (* propagate properties of Ifix to its continuous counterpart               *)
  20.161  (* ------------------------------------------------------------------------ *)
  20.162  
  20.163 -qed_goalw "fix_eq" Fix.thy  [fix_def] "fix[F]=F[fix[F]]"
  20.164 +qed_goalw "fix_eq" Fix.thy  [fix_def] "fix`F = F`(fix`F)"
  20.165   (fn prems =>
  20.166  	[
  20.167 -	(asm_simp_tac (Cfun_ss addsimps [contX_Ifix]) 1),
  20.168 +	(asm_simp_tac (Cfun_ss addsimps [cont_Ifix]) 1),
  20.169  	(rtac Ifix_eq 1)
  20.170  	]);
  20.171  
  20.172 -qed_goalw "fix_least" Fix.thy [fix_def] "F[x]=x ==> fix[F] << x"
  20.173 +qed_goalw "fix_least" Fix.thy [fix_def] "F`x = x ==> fix`F << x"
  20.174   (fn prems =>
  20.175  	[
  20.176  	(cut_facts_tac prems 1),
  20.177 -	(asm_simp_tac (Cfun_ss addsimps [contX_Ifix]) 1),
  20.178 +	(asm_simp_tac (Cfun_ss addsimps [cont_Ifix]) 1),
  20.179  	(etac Ifix_least 1)
  20.180  	]);
  20.181  
  20.182  
  20.183 -qed_goal "fix_eq2" Fix.thy "f == fix[F] ==> f = F[f]"
  20.184 +qed_goal "fix_eq2" Fix.thy "f == fix`F ==> f = F`f"
  20.185   (fn prems =>
  20.186  	[
  20.187  	(rewrite_goals_tac prems),
  20.188  	(rtac fix_eq 1)
  20.189  	]);
  20.190  
  20.191 -qed_goal "fix_eq3" Fix.thy "f == fix[F] ==> f[x] = F[f][x]"
  20.192 +qed_goal "fix_eq3" Fix.thy "f == fix`F ==> f`x = F`f`x"
  20.193   (fn prems =>
  20.194  	[
  20.195  	(rtac trans 1),
  20.196 @@ -358,7 +358,7 @@
  20.197  
  20.198  fun fix_tac3 thm i  = ((rtac trans i) THEN (rtac (thm RS fix_eq3) i)); 
  20.199  
  20.200 -qed_goal "fix_eq4" Fix.thy "f = fix[F] ==> f = F[f]"
  20.201 +qed_goal "fix_eq4" Fix.thy "f = fix`F ==> f = F`f"
  20.202   (fn prems =>
  20.203  	[
  20.204  	(cut_facts_tac prems 1),
  20.205 @@ -366,7 +366,7 @@
  20.206  	(rtac fix_eq 1)
  20.207  	]);
  20.208  
  20.209 -qed_goal "fix_eq5" Fix.thy "f = fix[F] ==> f[x] = F[f][x]"
  20.210 +qed_goal "fix_eq5" Fix.thy "f = fix`F ==> f`x = F`f`x"
  20.211   (fn prems =>
  20.212  	[
  20.213  	(rtac trans 1),
  20.214 @@ -383,30 +383,28 @@
  20.215          (rtac (fixdef RS fix_eq4) 1),
  20.216          (rtac trans 1),
  20.217          (rtac beta_cfun 1),
  20.218 -        (contX_tacR 1),
  20.219 +        (cont_tacR 1),
  20.220          (rtac refl 1)
  20.221          ]);
  20.222  
  20.223 -(* ------------------------------------------------------------------------ 
  20.224 -
  20.225 -given the definition
  20.226 -
  20.227 -smap_def
  20.228 -  "smap = fix[LAM h f s. stream_when[LAM x l.scons[f[x]][h[f][l]]][s]]"
  20.229 +(* use this one for definitions! *)
  20.230  
  20.231 -use fix_prover for 
  20.232 -
  20.233 -val smap_def2 = fix_prover Stream2.thy smap_def 
  20.234 -        "smap = (LAM f s. stream_when[LAM x l.scons[f[x]][smap[f][l]]][s])";
  20.235 -
  20.236 -   ------------------------------------------------------------------------ *)
  20.237 +fun fix_prover2 thy fixdef thm = prove_goal thy thm
  20.238 + (fn prems =>
  20.239 +	[
  20.240 +	(rtac trans 1),
  20.241 +	(rtac (fix_eq2) 1),
  20.242 +	(rtac fixdef 1),
  20.243 +	(rtac beta_cfun 1),
  20.244 +	(cont_tacR 1)
  20.245 +        ]);
  20.246  
  20.247  (* ------------------------------------------------------------------------ *)
  20.248  (* better access to definitions                                             *)
  20.249  (* ------------------------------------------------------------------------ *)
  20.250  
  20.251  
  20.252 -qed_goal "Ifix_def2" Fix.thy "Ifix=(%x. lub(range(%i. iterate(i,x,UU))))"
  20.253 +qed_goal "Ifix_def2" Fix.thy "Ifix=(%x. lub(range(%i. iterate i x UU)))"
  20.254   (fn prems =>
  20.255  	[
  20.256  	(rtac ext 1),
  20.257 @@ -419,11 +417,11 @@
  20.258  (* ------------------------------------------------------------------------ *)
  20.259  
  20.260  qed_goalw "fix_def2" Fix.thy [fix_def]
  20.261 - "fix[F] = lub(range(%i. iterate(i,F,UU)))"
  20.262 + "fix`F = lub(range(%i. iterate i F UU))"
  20.263   (fn prems =>
  20.264  	[
  20.265  	(fold_goals_tac [Ifix_def]),
  20.266 -	(asm_simp_tac (Cfun_ss addsimps [contX_Ifix]) 1)
  20.267 +	(asm_simp_tac (Cfun_ss addsimps [cont_Ifix]) 1)
  20.268  	]);
  20.269  
  20.270  
  20.271 @@ -443,8 +441,8 @@
  20.272  	]);
  20.273  
  20.274  qed_goalw "admw_def2" Fix.thy [admw_def]
  20.275 -	"admw(P) = (!F.((!n.P(iterate(n,F,UU)))-->\
  20.276 -\			 P(lub(range(%i.iterate(i,F,UU))))))"
  20.277 +	"admw(P) = (!F.(!n.P(iterate n F UU)) -->\
  20.278 +\			 P (lub(range(%i.iterate i F UU))))"
  20.279   (fn prems =>
  20.280  	[
  20.281  	(rtac refl 1)
  20.282 @@ -470,7 +468,7 @@
  20.283  (* ------------------------------------------------------------------------ *)
  20.284  
  20.285  qed_goal "fix_ind"  Fix.thy  
  20.286 -"[| adm(P);P(UU);!!x. P(x) ==> P(F[x])|] ==> P(fix[F])"
  20.287 +"[| adm(P);P(UU);!!x. P(x) ==> P(F`x)|] ==> P(fix`F)"
  20.288   (fn prems =>
  20.289  	[
  20.290  	(cut_facts_tac prems 1),
  20.291 @@ -492,7 +490,7 @@
  20.292  (* ------------------------------------------------------------------------ *)
  20.293  
  20.294  qed_goal "wfix_ind"  Fix.thy  
  20.295 -"[| admw(P); !n. P(iterate(n,F,UU))|] ==> P(fix[F])"
  20.296 +"[| admw(P); !n. P(iterate n F UU)|] ==> P(fix`F)"
  20.297   (fn prems =>
  20.298  	[
  20.299  	(cut_facts_tac prems 1),
  20.300 @@ -508,7 +506,7 @@
  20.301  (* ------------------------------------------------------------------------ *)
  20.302  
  20.303  qed_goalw "adm_max_in_chain"  Fix.thy  [adm_def]
  20.304 -"!Y. is_chain(Y::nat=>'a) --> (? n.max_in_chain(n,Y)) ==> adm(P::'a=>bool)"
  20.305 +"!Y. is_chain(Y::nat=>'a) --> (? n.max_in_chain n Y) ==> adm(P::'a=>bool)"
  20.306   (fn prems =>
  20.307  	[
  20.308  	(cut_facts_tac prems 1),
  20.309 @@ -590,24 +588,24 @@
  20.310  (* ------------------------------------------------------------------------ *)
  20.311  
  20.312  qed_goal "iso_strict"  Fix.thy  
  20.313 -"!!f g.[|!y.f[g[y]]=(y::'b) ; !x.g[f[x]]=(x::'a) |] \
  20.314 -\ ==> f[UU]=UU & g[UU]=UU"
  20.315 +"!!f g.[|!y.f`(g`y)=(y::'b) ; !x.g`(f`x)=(x::'a) |] \
  20.316 +\ ==> f`UU=UU & g`UU=UU"
  20.317   (fn prems =>
  20.318  	[
  20.319  	(rtac conjI 1),
  20.320  	(rtac UU_I 1),
  20.321 -	(res_inst_tac [("s","f[g[UU::'b]]"),("t","UU::'b")] subst 1),
  20.322 +	(res_inst_tac [("s","f`(g`(UU::'b))"),("t","UU::'b")] subst 1),
  20.323  	(etac spec 1),
  20.324  	(rtac (minimal RS monofun_cfun_arg) 1),
  20.325  	(rtac UU_I 1),
  20.326 -	(res_inst_tac [("s","g[f[UU::'a]]"),("t","UU::'a")] subst 1),
  20.327 +	(res_inst_tac [("s","g`(f`(UU::'a))"),("t","UU::'a")] subst 1),
  20.328  	(etac spec 1),
  20.329  	(rtac (minimal RS monofun_cfun_arg) 1)
  20.330  	]);
  20.331  
  20.332  
  20.333  qed_goal "isorep_defined" Fix.thy 
  20.334 -	"[|!x.rep[abs[x]]=x;!y.abs[rep[y]]=y;z~=UU|] ==> rep[z]~=UU"
  20.335 +	"[|!x.rep`(abs`x)=x;!y.abs`(rep`y)=y; z~=UU|] ==> rep`z ~= UU"
  20.336   (fn prems =>
  20.337  	[
  20.338  	(cut_facts_tac prems 1),
  20.339 @@ -621,7 +619,7 @@
  20.340  	]);
  20.341  
  20.342  qed_goal "isoabs_defined" Fix.thy 
  20.343 -	"[|!x.rep[abs[x]]=x;!y.abs[rep[y]]=y;z~=UU|] ==> abs[z]~=UU"
  20.344 +	"[|!x.rep`(abs`x) = x;!y.abs`(rep`y)=y ; z~=UU|] ==> abs`z ~= UU"
  20.345   (fn prems =>
  20.346  	[
  20.347  	(cut_facts_tac prems 1),
  20.348 @@ -639,21 +637,21 @@
  20.349  (* ------------------------------------------------------------------------ *)
  20.350  
  20.351  qed_goalw "chfin2chfin"  Fix.thy  [chain_finite_def]
  20.352 -"!!f g.[|chain_finite(x::'a); !y.f[g[y]]=(y::'b) ; !x.g[f[x]]=(x::'a) |] \
  20.353 +"!!f g.[|chain_finite(x::'a); !y.f`(g`y)=(y::'b) ; !x.g`(f`x)=(x::'a) |] \
  20.354  \ ==> chain_finite(y::'b)"
  20.355   (fn prems =>
  20.356  	[
  20.357  	(rewrite_goals_tac [max_in_chain_def]),
  20.358  	(strip_tac 1),
  20.359  	(rtac exE 1),
  20.360 -	(res_inst_tac [("P","is_chain(%i.g[Y(i)])")] mp 1),
  20.361 +	(res_inst_tac [("P","is_chain(%i.g`(Y i))")] mp 1),
  20.362  	(etac spec 1),
  20.363  	(etac ch2ch_fappR 1),
  20.364  	(rtac exI 1),
  20.365  	(strip_tac 1),
  20.366 -	(res_inst_tac [("s","f[g[Y(x)]]"),("t","Y(x)")] subst 1),
  20.367 +	(res_inst_tac [("s","f`(g`(Y x))"),("t","Y(x)")] subst 1),
  20.368  	(etac spec 1),
  20.369 -	(res_inst_tac [("s","f[g[Y(j)]]"),("t","Y(j)")] subst 1),
  20.370 +	(res_inst_tac [("s","f`(g`(Y j))"),("t","Y(j)")] subst 1),
  20.371  	(etac spec 1),
  20.372  	(rtac cfun_arg_cong 1),
  20.373  	(rtac mp 1),
  20.374 @@ -662,28 +660,28 @@
  20.375  	]);
  20.376  
  20.377  qed_goalw "flat2flat"  Fix.thy  [flat_def]
  20.378 -"!!f g.[|flat(x::'a); !y.f[g[y]]=(y::'b) ; !x.g[f[x]]=(x::'a) |] \
  20.379 +"!!f g.[|flat(x::'a); !y.f`(g`y)=(y::'b) ; !x.g`(f`x)=(x::'a) |] \
  20.380  \ ==> flat(y::'b)"
  20.381   (fn prems =>
  20.382  	[
  20.383  	(strip_tac 1),
  20.384  	(rtac disjE 1),
  20.385 -	(res_inst_tac [("P","g[x]<<g[y]")] mp 1),
  20.386 +	(res_inst_tac [("P","g`x<<g`y")] mp 1),
  20.387  	(etac monofun_cfun_arg 2),
  20.388  	(dtac spec 1),
  20.389  	(etac spec 1),
  20.390  	(rtac disjI1 1),
  20.391  	(rtac trans 1),
  20.392 -	(res_inst_tac [("s","f[g[x]]"),("t","x")] subst 1),
  20.393 +	(res_inst_tac [("s","f`(g`x)"),("t","x")] subst 1),
  20.394  	(etac spec 1),
  20.395  	(etac cfun_arg_cong 1),
  20.396  	(rtac (iso_strict RS conjunct1) 1),
  20.397  	(atac 1),
  20.398  	(atac 1),
  20.399  	(rtac disjI2 1),
  20.400 -	(res_inst_tac [("s","f[g[x]]"),("t","x")] subst 1),
  20.401 +	(res_inst_tac [("s","f`(g`x)"),("t","x")] subst 1),
  20.402  	(etac spec 1),
  20.403 -	(res_inst_tac [("s","f[g[y]]"),("t","y")] subst 1),
  20.404 +	(res_inst_tac [("s","f`(g`y)"),("t","y")] subst 1),
  20.405  	(etac spec 1),
  20.406  	(etac cfun_arg_cong 1)
  20.407  	]);
  20.408 @@ -693,23 +691,23 @@
  20.409  (* ------------------------------------------------------------------------- *)
  20.410  
  20.411  qed_goalw "flat_codom" Fix.thy [flat_def]
  20.412 -"[|flat(y::'b);f[x::'a]=(c::'b)|] ==> f[UU::'a]=(UU::'b) | (!z.f[z::'a]=c)"
  20.413 +"[|flat(y::'b);f`(x::'a)=(c::'b)|] ==> f`(UU::'a)=(UU::'b) | (!z.f`(z::'a)=c)"
  20.414   (fn prems =>
  20.415  	[
  20.416  	(cut_facts_tac prems 1),
  20.417 -	(res_inst_tac [("Q","f[x::'a]=(UU::'b)")] classical2 1),
  20.418 +	(res_inst_tac [("Q","f`(x::'a)=(UU::'b)")] classical2 1),
  20.419  	(rtac disjI1 1),
  20.420  	(rtac UU_I 1),
  20.421 -	(res_inst_tac [("s","f[x]"),("t","UU::'b")] subst 1),
  20.422 +	(res_inst_tac [("s","f`(x)"),("t","UU::'b")] subst 1),
  20.423  	(atac 1),
  20.424  	(rtac (minimal RS monofun_cfun_arg) 1),
  20.425 -	(res_inst_tac [("Q","f[UU::'a]=(UU::'b)")] classical2 1),
  20.426 +	(res_inst_tac [("Q","f`(UU::'a)=(UU::'b)")] classical2 1),
  20.427  	(etac disjI1 1),
  20.428  	(rtac disjI2 1),
  20.429  	(rtac allI 1),
  20.430 -	(res_inst_tac [("s","f[x]"),("t","c")] subst 1),
  20.431 +	(res_inst_tac [("s","f`x"),("t","c")] subst 1),
  20.432  	(atac 1),
  20.433 -	(res_inst_tac [("a","f[UU::'a]")] (refl RS box_equals) 1),
  20.434 +	(res_inst_tac [("a","f`(UU::'a)")] (refl RS box_equals) 1),
  20.435  	(etac allE 1),(etac allE 1),
  20.436  	(dtac mp 1),
  20.437  	(res_inst_tac [("fo5","f")] (minimal RS monofun_cfun_arg) 1),
  20.438 @@ -730,27 +728,27 @@
  20.439  (* ------------------------------------------------------------------------ *)
  20.440  
  20.441  qed_goalw "adm_less"  Fix.thy [adm_def]
  20.442 -	"[|contX(u);contX(v)|]==> adm(%x.u(x)<<v(x))"
  20.443 +	"[|cont u;cont v|]==> adm(%x.u x << v x)"
  20.444   (fn prems =>
  20.445  	[
  20.446  	(cut_facts_tac prems 1),
  20.447  	(strip_tac 1),
  20.448 -	(etac (contX2contlub RS contlubE RS spec RS mp RS ssubst) 1),
  20.449 +	(etac (cont2contlub RS contlubE RS spec RS mp RS ssubst) 1),
  20.450  	(atac 1),
  20.451 -	(etac (contX2contlub RS contlubE RS spec RS mp RS ssubst) 1),
  20.452 +	(etac (cont2contlub RS contlubE RS spec RS mp RS ssubst) 1),
  20.453  	(atac 1),
  20.454  	(rtac lub_mono 1),
  20.455  	(cut_facts_tac prems 1),
  20.456 -	(etac (contX2mono RS ch2ch_monofun) 1),
  20.457 +	(etac (cont2mono RS ch2ch_monofun) 1),
  20.458  	(atac 1),
  20.459  	(cut_facts_tac prems 1),
  20.460 -	(etac (contX2mono RS ch2ch_monofun) 1),
  20.461 +	(etac (cont2mono RS ch2ch_monofun) 1),
  20.462  	(atac 1),
  20.463  	(atac 1)
  20.464  	]);
  20.465  
  20.466  qed_goal "adm_conj"  Fix.thy  
  20.467 -	"[| adm(P); adm(Q) |] ==> adm(%x.P(x)&Q(x))"
  20.468 +	"[| adm P; adm Q |] ==> adm(%x. P x & Q x)"
  20.469   (fn prems =>
  20.470  	[
  20.471  	(cut_facts_tac prems 1),
  20.472 @@ -768,7 +766,7 @@
  20.473  	]);
  20.474  
  20.475  qed_goal "adm_cong"  Fix.thy  
  20.476 -	"(!x. P(x) = Q(x)) ==> adm(P)=adm(Q)"
  20.477 +	"(!x. P x = Q x) ==> adm P = adm Q "
  20.478   (fn prems =>
  20.479  	[
  20.480  	(cut_facts_tac prems 1),
  20.481 @@ -785,7 +783,7 @@
  20.482  	]);
  20.483  
  20.484  qed_goalw "adm_not_less"  Fix.thy [adm_def]
  20.485 -	"contX(t) ==> adm(%x.~ t(x) << u)"
  20.486 +	"cont t ==> adm(%x.~ (t x) << u)"
  20.487   (fn prems =>
  20.488  	[
  20.489  	(cut_facts_tac prems 1),
  20.490 @@ -794,13 +792,13 @@
  20.491  	(etac spec 1),
  20.492  	(rtac trans_less 1),
  20.493  	(atac 2),
  20.494 -	(etac (contX2mono RS monofun_fun_arg) 1),
  20.495 +	(etac (cont2mono RS monofun_fun_arg) 1),
  20.496  	(rtac is_ub_thelub 1),
  20.497  	(atac 1)
  20.498  	]);
  20.499  
  20.500  qed_goal "adm_all"  Fix.thy  
  20.501 -	" !y.adm(P(y)) ==> adm(%x.!y.P(y,x))"
  20.502 +	" !y.adm(P y) ==> adm(%x.!y.P y x)"
  20.503   (fn prems =>
  20.504  	[
  20.505  	(cut_facts_tac prems 1),
  20.506 @@ -817,18 +815,18 @@
  20.507  val adm_all2 = (allI RS adm_all);
  20.508  
  20.509  qed_goal "adm_subst"  Fix.thy  
  20.510 -	"[|contX(t); adm(P)|] ==> adm(%x.P(t(x)))"
  20.511 +	"[|cont t; adm P|] ==> adm(%x. P (t x))"
  20.512   (fn prems =>
  20.513  	[
  20.514  	(cut_facts_tac prems 1),
  20.515  	(rtac (adm_def2 RS iffD2) 1),
  20.516  	(strip_tac 1),
  20.517 -	(rtac (contX2contlub RS contlubE RS spec RS mp RS ssubst) 1),
  20.518 +	(rtac (cont2contlub RS contlubE RS spec RS mp RS ssubst) 1),
  20.519  	(atac 1),
  20.520  	(atac 1),
  20.521  	(rtac (adm_def2 RS iffD1 RS spec RS mp RS mp) 1),
  20.522  	(atac 1),
  20.523 -	(rtac (contX2mono RS ch2ch_monofun) 1),
  20.524 +	(rtac (cont2mono RS ch2ch_monofun) 1),
  20.525  	(atac 1),
  20.526  	(atac 1),
  20.527  	(atac 1)
  20.528 @@ -843,7 +841,7 @@
  20.529  	]);
  20.530  
  20.531  qed_goalw "adm_not_UU"  Fix.thy [adm_def] 
  20.532 -	"contX(t)==> adm(%x.~ t(x) = UU)"
  20.533 +	"cont(t)==> adm(%x.~ (t x) = UU)"
  20.534   (fn prems =>
  20.535  	[
  20.536  	(cut_facts_tac prems 1),
  20.537 @@ -851,17 +849,17 @@
  20.538  	(rtac contrapos 1),
  20.539  	(etac spec 1),
  20.540  	(rtac (chain_UU_I RS spec) 1),
  20.541 -	(rtac (contX2mono RS ch2ch_monofun) 1),
  20.542 +	(rtac (cont2mono RS ch2ch_monofun) 1),
  20.543  	(atac 1),
  20.544  	(atac 1),
  20.545 -	(rtac (contX2contlub RS contlubE RS spec RS mp RS subst) 1),
  20.546 +	(rtac (cont2contlub RS contlubE RS spec RS mp RS subst) 1),
  20.547  	(atac 1),
  20.548  	(atac 1),
  20.549  	(atac 1)
  20.550  	]);
  20.551  
  20.552  qed_goal "adm_eq"  Fix.thy 
  20.553 -	"[|contX(u);contX(v)|]==> adm(%x.u(x)= v(x))"
  20.554 +	"[|cont u ; cont v|]==> adm(%x. u x = v x)"
  20.555   (fn prems =>
  20.556  	[
  20.557  	(rtac (adm_cong RS iffD1) 1),
  20.558 @@ -887,7 +885,7 @@
  20.559  (* ------------------------------------------------------------------------ *)
  20.560  
  20.561  qed_goal "adm_disj_lemma1"  Pcpo.thy 
  20.562 -"[| is_chain(Y); !n.P(Y(n))|Q(Y(n))|]\
  20.563 +"[| is_chain Y; !n.P (Y n) | Q(Y n)|]\
  20.564  \ ==> (? i.!j. i<j --> Q(Y(j))) | (!i.? j.i<j & P(Y(j)))"
  20.565   (fn prems =>
  20.566  	[
  20.567 @@ -914,7 +912,7 @@
  20.568  
  20.569  qed_goal "adm_disj_lemma3"  Fix.thy
  20.570  "[| is_chain(Y); ! j. i < j --> Q(Y(j)) |] ==>\
  20.571 -\         is_chain(%m. if(m < Suc(i),Y(Suc(i)),Y(m)))"
  20.572 +\         is_chain(%m. if m < Suc i then Y(Suc i) else Y m)"
  20.573   (fn prems =>
  20.574  	[
  20.575  	(cut_facts_tac prems 1),
  20.576 @@ -946,29 +944,26 @@
  20.577  
  20.578  qed_goal "adm_disj_lemma4"  Fix.thy
  20.579  "[| ! j. i < j --> Q(Y(j)) |] ==>\
  20.580 -\	 ! n. Q(if(n < Suc(i),Y(Suc(i)),Y(n)))"
  20.581 +\	 ! n. Q( if n < Suc i then Y(Suc i) else Y n)"
  20.582   (fn prems =>
  20.583  	[
  20.584  	(cut_facts_tac prems 1),
  20.585  	(rtac allI 1),
  20.586  	(res_inst_tac [("m","n"),("n","Suc(i)")] nat_less_cases 1),
  20.587 -	(res_inst_tac[("s","Y(Suc(i))"),("t","if(n<Suc(i),Y(Suc(i)),Y(n))")]
  20.588 -		ssubst 1),
  20.589 +	(res_inst_tac[("s","Y(Suc(i))"),("t","if n<Suc(i) then Y(Suc(i)) else Y n")] ssubst 1),
  20.590  	(asm_simp_tac nat_ss 1),
  20.591  	(etac allE 1),
  20.592  	(rtac mp 1),
  20.593  	(atac 1),
  20.594  	(asm_simp_tac nat_ss 1),
  20.595 -	(res_inst_tac[("s","Y(n)"),("t","if(n<Suc(i),Y(Suc(i)),Y(n))")] 
  20.596 -		ssubst 1),
  20.597 +	(res_inst_tac[("s","Y(n)"),("t","if n<Suc(i) then Y(Suc(i)) else Y(n)")] ssubst 1),
  20.598  	(asm_simp_tac nat_ss 1),
  20.599  	(hyp_subst_tac 1),
  20.600  	(dtac spec 1),
  20.601  	(rtac mp 1),
  20.602  	(atac 1),
  20.603  	(asm_simp_tac nat_ss 1),
  20.604 -	(res_inst_tac [("s","Y(n)"),("t","if(n < Suc(i),Y(Suc(i)),Y(n))")] 
  20.605 -		ssubst 1),
  20.606 +	(res_inst_tac [("s","Y(n)"),("t","if n < Suc(i) then Y(Suc(i)) else Y(n)")] ssubst 1),
  20.607  	(res_inst_tac [("s","False"),("t","n < Suc(i)")] ssubst 1),
  20.608  	(rtac iffI 1),
  20.609  	(etac FalseE 2),
  20.610 @@ -984,7 +979,7 @@
  20.611  
  20.612  qed_goal "adm_disj_lemma5"  Fix.thy
  20.613  "[| is_chain(Y::nat=>'a); ! j. i < j --> Q(Y(j)) |] ==>\
  20.614 -\         lub(range(Y)) = lub(range(%m. if(m < Suc(i),Y(Suc(i)),Y(m))))"
  20.615 +\         lub(range(Y)) = lub(range(%m. if m< Suc(i) then Y(Suc(i)) else Y m))"
  20.616   (fn prems =>
  20.617  	[
  20.618  	(cut_facts_tac prems 1),
  20.619 @@ -1013,7 +1008,7 @@
  20.620  	[
  20.621  	(cut_facts_tac prems 1),
  20.622  	(etac exE 1),
  20.623 -	(res_inst_tac [("x","%m.if(m< Suc(i),Y(Suc(i)),Y(m))")] exI 1),
  20.624 +	(res_inst_tac [("x","%m.if m<Suc(i) then Y(Suc(i)) else Y m")] exI 1),
  20.625  	(rtac conjI 1),
  20.626  	(rtac adm_disj_lemma3 1),
  20.627  	(atac 1),
  20.628 @@ -1133,7 +1128,7 @@
  20.629  	]);
  20.630  
  20.631  qed_goal "adm_disj"  Fix.thy  
  20.632 -	"[| adm(P); adm(Q) |] ==> adm(%x.P(x)|Q(x))"
  20.633 +	"[| adm P; adm Q |] ==> adm(%x.P x | Q x)"
  20.634   (fn prems =>
  20.635  	[
  20.636  	(cut_facts_tac prems 1),
  20.637 @@ -1154,11 +1149,11 @@
  20.638  
  20.639  
  20.640  qed_goal "adm_impl"  Fix.thy  
  20.641 -	"[| adm(%x.~P(x)); adm(Q) |] ==> adm(%x.P(x)-->Q(x))"
  20.642 +	"[| adm(%x.~(P x)); adm Q |] ==> adm(%x.P x --> Q x)"
  20.643   (fn prems =>
  20.644  	[
  20.645  	(cut_facts_tac prems 1),
  20.646 -	(res_inst_tac [("P2","%x.~P(x)|Q(x)")] (adm_cong RS iffD1) 1),
  20.647 +	(res_inst_tac [("P2","%x.~(P x)|Q x")] (adm_cong RS iffD1) 1),
  20.648  	(fast_tac HOL_cs 1),
  20.649  	(rtac adm_disj 1),
  20.650  	(atac 1),
    21.1 --- a/src/HOLCF/Fix.thy	Thu Jun 29 16:16:24 1995 +0200
    21.2 +++ b/src/HOLCF/Fix.thy	Thu Jun 29 16:28:40 1995 +0200
    21.3 @@ -20,22 +20,22 @@
    21.4  chain_finite :: "'a=>bool"
    21.5  flat         :: "'a=>bool"
    21.6  
    21.7 -rules
    21.8 +defs
    21.9  
   21.10 -iterate_def   "iterate(n,F,c) == nat_rec(n,c,%n x.F[x])"
   21.11 -Ifix_def      "Ifix(F) == lub(range(%i.iterate(i,F,UU)))"
   21.12 -fix_def       "fix == (LAM f. Ifix(f))"
   21.13 +iterate_def   "iterate n F c == nat_rec n c (%n x.F`x)"
   21.14 +Ifix_def      "Ifix F == lub(range(%i.iterate i F UU))"
   21.15 +fix_def       "fix == (LAM f. Ifix f)"
   21.16  
   21.17 -adm_def       "adm(P) == !Y. is_chain(Y) --> 
   21.18 -                        (!i.P(Y(i))) --> P(lub(range(Y)))"
   21.19 +adm_def       "adm P == !Y. is_chain(Y) --> 
   21.20 +                        (!i.P(Y i)) --> P(lub(range Y))"
   21.21  
   21.22 -admw_def      "admw(P)== (!F.((!n.P(iterate(n,F,UU)))-->
   21.23 -			 P(lub(range(%i.iterate(i,F,UU))))))" 
   21.24 +admw_def      "admw P == !F. (!n.P (iterate n F UU)) -->
   21.25 +			    P (lub(range (%i. iterate i F UU)))" 
   21.26  
   21.27 -chain_finite_def  "chain_finite(x::'a)==
   21.28 -                        !Y. is_chain(Y::nat=>'a) --> (? n.max_in_chain(n,Y))"
   21.29 +chain_finite_def  "chain_finite (x::'a)==
   21.30 +                        !Y. is_chain (Y::nat=>'a) --> (? n.max_in_chain n Y)"
   21.31  
   21.32 -flat_def          "flat(x::'a) ==
   21.33 +flat_def          "flat (x::'a) ==
   21.34                          ! x y. (x::'a) << y --> (x = UU) | (x=y)"
   21.35  
   21.36  end
    22.1 --- a/src/HOLCF/Fun1.ML	Thu Jun 29 16:16:24 1995 +0200
    22.2 +++ b/src/HOLCF/Fun1.ML	Thu Jun 29 16:28:40 1995 +0200
    22.3 @@ -12,14 +12,14 @@
    22.4  (* less_fun is a partial order on 'a => 'b                                  *)
    22.5  (* ------------------------------------------------------------------------ *)
    22.6  
    22.7 -qed_goalw "refl_less_fun" Fun1.thy [less_fun_def] "less_fun(f,f)"
    22.8 +qed_goalw "refl_less_fun" Fun1.thy [less_fun_def] "less_fun f f"
    22.9  (fn prems =>
   22.10  	[
   22.11  	(fast_tac (HOL_cs addSIs [refl_less]) 1)
   22.12  	]);
   22.13  
   22.14  qed_goalw "antisym_less_fun" Fun1.thy [less_fun_def] 
   22.15 -	"[|less_fun(f1,f2); less_fun(f2,f1)|] ==> f1 = f2"
   22.16 +	"[|less_fun f1 f2; less_fun f2 f1|] ==> f1 = f2"
   22.17  (fn prems =>
   22.18  	[
   22.19  	(cut_facts_tac prems 1),
   22.20 @@ -28,7 +28,7 @@
   22.21  	]);
   22.22  
   22.23  qed_goalw "trans_less_fun" Fun1.thy [less_fun_def] 
   22.24 -	"[|less_fun(f1,f2); less_fun(f2,f3)|] ==> less_fun(f1,f3)"
   22.25 +	"[|less_fun f1 f2; less_fun f2 f3 |] ==> less_fun f1 f3"
   22.26  (fn prems =>
   22.27  	[
   22.28  	(cut_facts_tac prems 1),
    23.1 --- a/src/HOLCF/Fun1.thy	Thu Jun 29 16:16:24 1995 +0200
    23.2 +++ b/src/HOLCF/Fun1.thy	Thu Jun 29 16:28:40 1995 +0200
    23.3 @@ -17,11 +17,11 @@
    23.4  consts
    23.5    less_fun	:: "['a=>'b::po,'a=>'b] => bool"	
    23.6  
    23.7 -rules
    23.8 +defs
    23.9     (* definition of the ordering less_fun            *)
   23.10     (* in fun1.ML it is proved that less_fun is a po *)
   23.11     
   23.12 -  less_fun_def "less_fun(f1,f2) == ! x. f1(x) << f2(x)"  
   23.13 +  less_fun_def "less_fun f1 f2 == ! x. f1(x) << f2(x)"  
   23.14  
   23.15  end
   23.16  
    24.1 --- a/src/HOLCF/Fun2.ML	Thu Jun 29 16:16:24 1995 +0200
    24.2 +++ b/src/HOLCF/Fun2.ML	Thu Jun 29 16:28:40 1995 +0200
    24.3 @@ -54,7 +54,7 @@
    24.4  (* ------------------------------------------------------------------------ *)
    24.5  
    24.6  qed_goal "ub2ub_fun" Fun2.thy 
    24.7 -   " range(S::nat=>('a::term => 'b::po)) <| u ==> range(%i. S(i,x)) <| u(x)"
    24.8 +   " range(S::nat=>('a::term => 'b::po)) <| u ==> range(%i. S i x) <| u(x)"
    24.9  (fn prems =>
   24.10  	[
   24.11  	(cut_facts_tac prems 1),
   24.12 @@ -93,7 +93,7 @@
   24.13  	]);
   24.14  
   24.15  val thelub_fun = (lub_fun RS thelubI);
   24.16 -(* is_chain(?S1) ==> lub(range(?S1)) = (%x. lub(range(%i. ?S1(i,x)))) *)
   24.17 +(* is_chain ?S1 ==> lub (range ?S1) = (%x. lub (range (%i. ?S1 i x))) *)
   24.18  
   24.19  qed_goal "cpo_fun"  Fun2.thy
   24.20  	"is_chain(S::nat=>('a::term => 'b::pcpo)) ==> ? x. range(S) <<| x"
    25.1 --- a/src/HOLCF/Fun2.thy	Thu Jun 29 16:16:24 1995 +0200
    25.2 +++ b/src/HOLCF/Fun2.thy	Thu Jun 29 16:28:40 1995 +0200
    25.3 @@ -24,7 +24,8 @@
    25.4  
    25.5  inst_fun_po	"((op <<)::['a=>'b::po,'a=>'b::po ]=>bool) = less_fun"
    25.6  
    25.7 -(* definitions *)
    25.8 +defs
    25.9 +
   25.10  (* The least element in type 'a::term => 'b::pcpo *)
   25.11  
   25.12  UU_fun_def	"UU_fun == (% x.UU)"
    26.1 --- a/src/HOLCF/Holcfb.thy	Thu Jun 29 16:16:24 1995 +0200
    26.2 +++ b/src/HOLCF/Holcfb.thy	Thu Jun 29 16:28:40 1995 +0200
    26.3 @@ -13,9 +13,9 @@
    26.4  
    26.5  theleast     :: "(nat=>bool)=>nat"
    26.6  
    26.7 -rules
    26.8 +defs
    26.9  
   26.10 -theleast_def    "theleast(P) == (@z.(P(z) & (!n.P(n)-->z<=n)))"
   26.11 +theleast_def    "theleast P == (@z.(P z & (!n.P n --> z<=n)))"
   26.12  
   26.13  end
   26.14  
    27.1 --- a/src/HOLCF/Lift1.ML	Thu Jun 29 16:16:24 1995 +0200
    27.2 +++ b/src/HOLCF/Lift1.ML	Thu Jun 29 16:28:40 1995 +0200
    27.3 @@ -45,7 +45,7 @@
    27.4  	(atac 1)
    27.5  	]);
    27.6  
    27.7 -qed_goalw "defined_Iup" Lift1.thy [Iup_def,UU_lift_def] "~ Iup(x)=UU_lift"
    27.8 +qed_goalw "defined_Iup" Lift1.thy [Iup_def,UU_lift_def] "Iup(x)~=UU_lift"
    27.9   (fn prems =>
   27.10  	[
   27.11  	(rtac notI 1),
   27.12 @@ -76,7 +76,7 @@
   27.13  	]);
   27.14  
   27.15  qed_goalw "Ilift2"  Lift1.thy [Ilift_def,Iup_def]
   27.16 -	"Ilift(f)(Iup(x))=f[x]"
   27.17 +	"Ilift(f)(Iup(x))=f`x"
   27.18   (fn prems =>
   27.19  	[
   27.20  	(rtac (Abs_Lift_inverse RS ssubst) 1),
   27.21 @@ -96,7 +96,7 @@
   27.22  	]);
   27.23  
   27.24  qed_goalw "less_lift1b"  Lift1.thy [Iup_def,less_lift_def,UU_lift_def]
   27.25 -	"~less_lift(Iup(x),UU_lift)"
   27.26 +	"~less_lift (Iup x) UU_lift"
   27.27   (fn prems =>
   27.28  	[
   27.29  	(rtac notI 1),
   27.30 @@ -110,7 +110,7 @@
   27.31  	]);
   27.32  
   27.33  qed_goalw "less_lift1c"  Lift1.thy [Iup_def,less_lift_def,UU_lift_def]
   27.34 -	"less_lift(Iup(x),Iup(y))=(x<<y)"
   27.35 +	"less_lift (Iup x) (Iup y)=(x<<y)"
   27.36   (fn prems =>
   27.37  	[
   27.38  	(rtac (Abs_Lift_inverse RS ssubst) 1),
   27.39 @@ -121,7 +121,7 @@
   27.40  	]);
   27.41  
   27.42  
   27.43 -qed_goal "refl_less_lift"  Lift1.thy "less_lift(p,p)"
   27.44 +qed_goal "refl_less_lift"  Lift1.thy "less_lift p p"
   27.45   (fn prems =>
   27.46  	[
   27.47  	(res_inst_tac [("p","p")] liftE 1),
   27.48 @@ -133,7 +133,7 @@
   27.49  	]);
   27.50  
   27.51  qed_goal "antisym_less_lift"  Lift1.thy 
   27.52 -	"[|less_lift(p1,p2);less_lift(p2,p1)|] ==> p1=p2"
   27.53 +	"[|less_lift p1 p2;less_lift p2 p1|] ==> p1=p2"
   27.54   (fn prems =>
   27.55  	[
   27.56  	(cut_facts_tac prems 1),
   27.57 @@ -143,13 +143,13 @@
   27.58  	(hyp_subst_tac 1),
   27.59  	(rtac refl 1),
   27.60  	(hyp_subst_tac 1),
   27.61 -	(res_inst_tac [("P","less_lift(Iup(x),UU_lift)")] notE 1),
   27.62 +	(res_inst_tac [("P","less_lift (Iup x) UU_lift")] notE 1),
   27.63  	(rtac less_lift1b 1),
   27.64  	(atac 1),
   27.65  	(hyp_subst_tac 1),
   27.66  	(res_inst_tac [("p","p2")] liftE 1),
   27.67  	(hyp_subst_tac 1),
   27.68 -	(res_inst_tac [("P","less_lift(Iup(x),UU_lift)")] notE 1),
   27.69 +	(res_inst_tac [("P","less_lift (Iup x) UU_lift")] notE 1),
   27.70  	(rtac less_lift1b 1),
   27.71  	(atac 1),
   27.72  	(hyp_subst_tac 1),
   27.73 @@ -160,7 +160,7 @@
   27.74  	]);
   27.75  
   27.76  qed_goal "trans_less_lift"  Lift1.thy 
   27.77 -	"[|less_lift(p1,p2);less_lift(p2,p3)|] ==> less_lift(p1,p3)"
   27.78 +	"[|less_lift p1 p2;less_lift p2 p3|] ==> less_lift p1 p3"
   27.79   (fn prems =>
   27.80  	[
   27.81  	(cut_facts_tac prems 1),
    28.1 --- a/src/HOLCF/Lift1.thy	Thu Jun 29 16:16:24 1995 +0200
    28.2 +++ b/src/HOLCF/Lift1.thy	Thu Jun 29 16:28:40 1995 +0200
    28.3 @@ -36,11 +36,12 @@
    28.4  
    28.5     (*defining the abstract constants*)
    28.6  
    28.7 +defs
    28.8    UU_lift_def   "UU_lift == Abs_Lift(Inl(UU))"
    28.9    Iup_def       "Iup(x)  == Abs_Lift(Inr(x))"
   28.10  
   28.11    Ilift_def     "Ilift(f)(x)== 
   28.12 -                case Rep_Lift(x) of Inl(y) => UU | Inr(z) => f[z]"
   28.13 +                case Rep_Lift(x) of Inl(y) => UU | Inr(z) => f`z"
   28.14   
   28.15    less_lift_def "less_lift(x1)(x2) == 		
   28.16            (case Rep_Lift(x1) of 		
    29.1 --- a/src/HOLCF/Lift2.ML	Thu Jun 29 16:16:24 1995 +0200
    29.2 +++ b/src/HOLCF/Lift2.ML	Thu Jun 29 16:28:40 1995 +0200
    29.3 @@ -132,7 +132,7 @@
    29.4  	]);
    29.5  
    29.6  qed_goal "lub_lift1b" Lift2.thy 
    29.7 -"[|is_chain(Y);!i x.~Y(i)=Iup(x)|] ==>\
    29.8 +"[|is_chain(Y);!i x. Y(i)~=Iup(x)|] ==>\
    29.9  \ range(Y) <<| UU_lift"
   29.10   (fn prems =>
   29.11  	[
   29.12 @@ -155,13 +155,16 @@
   29.13  	]);
   29.14  
   29.15  val thelub_lift1a = lub_lift1a RS thelubI;
   29.16 -(* [| is_chain(?Y1); ? i x. ?Y1(i) = Iup(x) |] ==>                *)
   29.17 -(* lub(range(?Y1)) = Iup(lub(range(%i. Ilift(LAM x. x,?Y1(i)))))  *)
   29.18 +(*
   29.19 +[| is_chain ?Y1; ? i x. ?Y1 i = Iup x |] ==>
   29.20 + lub (range ?Y1) = Iup (lub (range (%i. Ilift (LAM x. x) (?Y1 i))))
   29.21 +*)
   29.22  
   29.23  val thelub_lift1b = lub_lift1b RS thelubI;
   29.24 -(* [| is_chain(?Y1); ! i x. ~ ?Y1(i) = Iup(x) |] ==>              *)
   29.25 -(*                                     lub(range(?Y1)) = UU_lift  *)
   29.26 -
   29.27 +(*
   29.28 +[| is_chain ?Y1; ! i x. ?Y1 i ~= Iup x |] ==>
   29.29 + lub (range ?Y1) = UU_lift
   29.30 +*)
   29.31  
   29.32  qed_goal "cpo_lift" Lift2.thy 
   29.33  	"is_chain(Y::nat=>('a)u) ==> ? x.range(Y) <<|x"
    30.1 --- a/src/HOLCF/Lift3.ML	Thu Jun 29 16:16:24 1995 +0200
    30.2 +++ b/src/HOLCF/Lift3.ML	Thu Jun 29 16:28:40 1995 +0200
    30.3 @@ -19,7 +19,7 @@
    30.4  	(rtac less_lift2b 1)
    30.5  	]);
    30.6  
    30.7 -qed_goal "defined_Iup2" Lift3.thy "~ Iup(x) = UU"
    30.8 +qed_goal "defined_Iup2" Lift3.thy "Iup(x) ~= UU"
    30.9   (fn prems =>
   30.10  	[
   30.11  	(rtac (inst_lift_pcpo RS ssubst) 1),
   30.12 @@ -47,10 +47,10 @@
   30.13  	(asm_simp_tac Lift_ss 1)
   30.14  	]);
   30.15  
   30.16 -qed_goal "contX_Iup" Lift3.thy "contX(Iup)"
   30.17 +qed_goal "cont_Iup" Lift3.thy "cont(Iup)"
   30.18   (fn prems =>
   30.19  	[
   30.20 -	(rtac monocontlub2contX 1),
   30.21 +	(rtac monocontlub2cont 1),
   30.22  	(rtac monofun_Iup 1),
   30.23  	(rtac contlub_Iup 1)
   30.24  	]);
   30.25 @@ -124,18 +124,18 @@
   30.26  	(atac 1)
   30.27  	]);
   30.28  
   30.29 -qed_goal "contX_Ilift1" Lift3.thy "contX(Ilift)"
   30.30 +qed_goal "cont_Ilift1" Lift3.thy "cont(Ilift)"
   30.31   (fn prems =>
   30.32  	[
   30.33 -	(rtac monocontlub2contX 1),
   30.34 +	(rtac monocontlub2cont 1),
   30.35  	(rtac monofun_Ilift1 1),
   30.36  	(rtac contlub_Ilift1 1)
   30.37  	]);
   30.38  
   30.39 -qed_goal "contX_Ilift2" Lift3.thy "contX(Ilift(f))"
   30.40 +qed_goal "cont_Ilift2" Lift3.thy "cont(Ilift(f))"
   30.41   (fn prems =>
   30.42  	[
   30.43 -	(rtac monocontlub2contX 1),
   30.44 +	(rtac monocontlub2cont 1),
   30.45  	(rtac monofun_Ilift2 1),
   30.46  	(rtac contlub_Ilift2 1)
   30.47  	]);
   30.48 @@ -145,100 +145,100 @@
   30.49  (* continuous versions of lemmas for ('a)u                                  *)
   30.50  (* ------------------------------------------------------------------------ *)
   30.51  
   30.52 -qed_goalw "Exh_Lift1" Lift3.thy [up_def] "z = UU | (? x. z = up[x])"
   30.53 +qed_goalw "Exh_Lift1" Lift3.thy [up_def] "z = UU | (? x. z = up`x)"
   30.54   (fn prems =>
   30.55  	[
   30.56 -	(simp_tac (Lift_ss addsimps [contX_Iup]) 1),
   30.57 +	(simp_tac (Lift_ss addsimps [cont_Iup]) 1),
   30.58  	(rtac (inst_lift_pcpo RS ssubst) 1),
   30.59  	(rtac Exh_Lift 1)
   30.60  	]);
   30.61  
   30.62 -qed_goalw "inject_up" Lift3.thy [up_def] "up[x]=up[y] ==> x=y"
   30.63 +qed_goalw "inject_up" Lift3.thy [up_def] "up`x=up`y ==> x=y"
   30.64   (fn prems =>
   30.65  	[
   30.66  	(cut_facts_tac prems 1),
   30.67  	(rtac inject_Iup 1),
   30.68  	(etac box_equals 1),
   30.69 -	(simp_tac (Lift_ss addsimps [contX_Iup]) 1),
   30.70 -	(simp_tac (Lift_ss addsimps [contX_Iup]) 1)
   30.71 +	(simp_tac (Lift_ss addsimps [cont_Iup]) 1),
   30.72 +	(simp_tac (Lift_ss addsimps [cont_Iup]) 1)
   30.73  	]);
   30.74  
   30.75 -qed_goalw "defined_up" Lift3.thy [up_def] "~ up[x]=UU"
   30.76 +qed_goalw "defined_up" Lift3.thy [up_def] " up`x ~= UU"
   30.77   (fn prems =>
   30.78  	[
   30.79 -	(simp_tac (Lift_ss addsimps [contX_Iup]) 1),
   30.80 +	(simp_tac (Lift_ss addsimps [cont_Iup]) 1),
   30.81  	(rtac defined_Iup2 1)
   30.82  	]);
   30.83  
   30.84  qed_goalw "liftE1" Lift3.thy [up_def] 
   30.85 -	"[| p=UU ==> Q; !!x. p=up[x]==>Q|] ==>Q"
   30.86 +	"[| p=UU ==> Q; !!x. p=up`x==>Q|] ==>Q"
   30.87   (fn prems =>
   30.88  	[
   30.89  	(rtac liftE 1),
   30.90  	(resolve_tac prems 1),
   30.91  	(etac (inst_lift_pcpo RS ssubst) 1),
   30.92  	(resolve_tac (tl prems) 1),
   30.93 -	(asm_simp_tac (Lift_ss addsimps [contX_Iup]) 1)
   30.94 +	(asm_simp_tac (Lift_ss addsimps [cont_Iup]) 1)
   30.95  	]);
   30.96  
   30.97  
   30.98 -qed_goalw "lift1" Lift3.thy [up_def,lift_def] "lift[f][UU]=UU"
   30.99 +qed_goalw "lift1" Lift3.thy [up_def,lift_def] "lift`f`UU=UU"
  30.100   (fn prems =>
  30.101  	[
  30.102  	(rtac (inst_lift_pcpo RS ssubst) 1),
  30.103  	(rtac (beta_cfun RS ssubst) 1),
  30.104 -	(REPEAT (resolve_tac (contX_lemmas @ [contX_Iup,contX_Ilift1,
  30.105 -		contX_Ilift2,contX2contX_CF1L]) 1)),
  30.106 +	(REPEAT (resolve_tac (cont_lemmas @ [cont_Iup,cont_Ilift1,
  30.107 +		cont_Ilift2,cont2cont_CF1L]) 1)),
  30.108  	(rtac (beta_cfun RS ssubst) 1),
  30.109 -	(REPEAT (resolve_tac (contX_lemmas @ [contX_Iup,contX_Ilift1,
  30.110 -		contX_Ilift2,contX2contX_CF1L]) 1)),
  30.111 -	(simp_tac (Lift_ss addsimps [contX_Iup,contX_Ilift1,contX_Ilift2]) 1)
  30.112 +	(REPEAT (resolve_tac (cont_lemmas @ [cont_Iup,cont_Ilift1,
  30.113 +		cont_Ilift2,cont2cont_CF1L]) 1)),
  30.114 +	(simp_tac (Lift_ss addsimps [cont_Iup,cont_Ilift1,cont_Ilift2]) 1)
  30.115  	]);
  30.116  
  30.117 -qed_goalw "lift2" Lift3.thy [up_def,lift_def] "lift[f][up[x]]=f[x]"
  30.118 +qed_goalw "lift2" Lift3.thy [up_def,lift_def] "lift`f`(up`x)=f`x"
  30.119   (fn prems =>
  30.120  	[
  30.121  	(rtac (beta_cfun RS ssubst) 1),
  30.122 -	(rtac contX_Iup 1),
  30.123 +	(rtac cont_Iup 1),
  30.124  	(rtac (beta_cfun RS ssubst) 1),
  30.125 -	(REPEAT (resolve_tac (contX_lemmas @ [contX_Iup,contX_Ilift1,
  30.126 -		contX_Ilift2,contX2contX_CF1L]) 1)),
  30.127 +	(REPEAT (resolve_tac (cont_lemmas @ [cont_Iup,cont_Ilift1,
  30.128 +		cont_Ilift2,cont2cont_CF1L]) 1)),
  30.129  	(rtac (beta_cfun RS ssubst) 1),
  30.130 -	(rtac contX_Ilift2 1),
  30.131 -	(simp_tac (Lift_ss addsimps [contX_Iup,contX_Ilift1,contX_Ilift2]) 1)
  30.132 +	(rtac cont_Ilift2 1),
  30.133 +	(simp_tac (Lift_ss addsimps [cont_Iup,cont_Ilift1,cont_Ilift2]) 1)
  30.134  	]);
  30.135  
  30.136 -qed_goalw "less_lift4b" Lift3.thy [up_def,lift_def] "~ up[x] << UU"
  30.137 +qed_goalw "less_lift4b" Lift3.thy [up_def,lift_def] "~ up`x << UU"
  30.138   (fn prems =>
  30.139  	[
  30.140 -	(simp_tac (Lift_ss addsimps [contX_Iup]) 1),
  30.141 +	(simp_tac (Lift_ss addsimps [cont_Iup]) 1),
  30.142  	(rtac less_lift3b 1)
  30.143  	]);
  30.144  
  30.145  qed_goalw "less_lift4c" Lift3.thy [up_def,lift_def]
  30.146 -	 "(up[x]<<up[y]) = (x<<y)"
  30.147 +	 "(up`x << up`y) = (x<<y)"
  30.148   (fn prems =>
  30.149  	[
  30.150 -	(simp_tac (Lift_ss addsimps [contX_Iup]) 1),
  30.151 +	(simp_tac (Lift_ss addsimps [cont_Iup]) 1),
  30.152  	(rtac less_lift2c 1)
  30.153  	]);
  30.154  
  30.155  qed_goalw "thelub_lift2a" Lift3.thy [up_def,lift_def] 
  30.156 -"[| is_chain(Y); ? i x. Y(i) = up[x] |] ==>\
  30.157 -\      lub(range(Y)) = up[lub(range(%i. lift[LAM x. x][Y(i)]))]"
  30.158 +"[| is_chain(Y); ? i x. Y(i) = up`x |] ==>\
  30.159 +\      lub(range(Y)) = up`(lub(range(%i. lift`(LAM x. x)`(Y i))))"
  30.160   (fn prems =>
  30.161  	[
  30.162  	(cut_facts_tac prems 1),
  30.163  	(rtac (beta_cfun RS ssubst) 1),
  30.164 -	(REPEAT (resolve_tac (contX_lemmas @ [contX_Iup,contX_Ilift1,
  30.165 -		contX_Ilift2,contX2contX_CF1L]) 1)),
  30.166 +	(REPEAT (resolve_tac (cont_lemmas @ [cont_Iup,cont_Ilift1,
  30.167 +		cont_Ilift2,cont2cont_CF1L]) 1)),
  30.168  	(rtac (beta_cfun RS ssubst) 1),
  30.169 -	(REPEAT (resolve_tac (contX_lemmas @ [contX_Iup,contX_Ilift1,
  30.170 -		contX_Ilift2,contX2contX_CF1L]) 1)),
  30.171 +	(REPEAT (resolve_tac (cont_lemmas @ [cont_Iup,cont_Ilift1,
  30.172 +		cont_Ilift2,cont2cont_CF1L]) 1)),
  30.173  
  30.174  	(rtac (beta_cfun RS ext RS ssubst) 1),
  30.175 -	(REPEAT (resolve_tac (contX_lemmas @ [contX_Iup,contX_Ilift1,
  30.176 -		contX_Ilift2,contX2contX_CF1L]) 1)),
  30.177 +	(REPEAT (resolve_tac (cont_lemmas @ [cont_Iup,cont_Ilift1,
  30.178 +		cont_Ilift2,cont2cont_CF1L]) 1)),
  30.179  	(rtac thelub_lift1a 1),
  30.180  	(atac 1),
  30.181  	(etac exE 1),
  30.182 @@ -247,13 +247,13 @@
  30.183  	(rtac exI 1),
  30.184  	(etac box_equals 1),
  30.185  	(rtac refl 1),
  30.186 -	(simp_tac (Lift_ss addsimps [contX_Iup]) 1)
  30.187 +	(simp_tac (Lift_ss addsimps [cont_Iup]) 1)
  30.188  	]);
  30.189  
  30.190  
  30.191  
  30.192  qed_goalw "thelub_lift2b" Lift3.thy [up_def,lift_def] 
  30.193 -"[| is_chain(Y); ! i x. ~ Y(i) = up[x] |] ==> lub(range(Y)) = UU"
  30.194 +"[| is_chain(Y); ! i x. Y(i) ~= up`x |] ==> lub(range(Y)) = UU"
  30.195   (fn prems =>
  30.196  	[
  30.197  	(cut_facts_tac prems 1),
  30.198 @@ -268,11 +268,11 @@
  30.199  	(dtac notnotD 1),
  30.200  	(etac box_equals 1),
  30.201  	(rtac refl 1),
  30.202 -	(simp_tac (Lift_ss addsimps [contX_Iup]) 1)
  30.203 +	(simp_tac (Lift_ss addsimps [cont_Iup]) 1)
  30.204  	]);
  30.205  
  30.206  
  30.207 -qed_goal "lift_lemma2" Lift3.thy  " (? x.z = up[x]) = (~z=UU)"
  30.208 +qed_goal "lift_lemma2" Lift3.thy  " (? x.z = up`x) = (z~=UU)"
  30.209   (fn prems =>
  30.210  	[
  30.211  	(rtac iffI 1),
  30.212 @@ -287,7 +287,7 @@
  30.213  
  30.214  
  30.215  qed_goal "thelub_lift2a_rev" Lift3.thy  
  30.216 -"[| is_chain(Y); lub(range(Y)) = up[x] |] ==> ? i x. Y(i) = up[x]"
  30.217 +"[| is_chain(Y); lub(range(Y)) = up`x |] ==> ? i x. Y(i) = up`x"
  30.218   (fn prems =>
  30.219  	[
  30.220  	(cut_facts_tac prems 1),
  30.221 @@ -301,7 +301,7 @@
  30.222  	]);
  30.223  
  30.224  qed_goal "thelub_lift2b_rev" Lift3.thy  
  30.225 -"[| is_chain(Y); lub(range(Y)) = UU |] ==> ! i x. ~ Y(i) = up[x]"
  30.226 +"[| is_chain(Y); lub(range(Y)) = UU |] ==> ! i x.  Y(i) ~= up`x"
  30.227   (fn prems =>
  30.228  	[
  30.229  	(cut_facts_tac prems 1),
  30.230 @@ -318,7 +318,7 @@
  30.231  
  30.232  qed_goal "thelub_lift3" Lift3.thy  
  30.233  "is_chain(Y) ==> lub(range(Y)) = UU |\
  30.234 -\                lub(range(Y)) = up[lub(range(%i. lift[LAM x. x][Y(i)]))]"
  30.235 +\                lub(range(Y)) = up`(lub(range(%i. lift`(LAM x.x)`(Y i))))"
  30.236   (fn prems =>
  30.237  	[
  30.238  	(cut_facts_tac prems 1),
  30.239 @@ -334,7 +334,7 @@
  30.240  	(fast_tac HOL_cs 1)
  30.241  	]);
  30.242  
  30.243 -qed_goal "lift3" Lift3.thy "lift[up][x]=x"
  30.244 +qed_goal "lift3" Lift3.thy "lift`up`x=x"
  30.245   (fn prems =>
  30.246  	[
  30.247  	(res_inst_tac [("p","x")] liftE1 1),
    31.1 --- a/src/HOLCF/Lift3.thy	Thu Jun 29 16:16:24 1995 +0200
    31.2 +++ b/src/HOLCF/Lift3.thy	Thu Jun 29 16:28:40 1995 +0200
    31.3 @@ -18,10 +18,11 @@
    31.4  
    31.5  rules 
    31.6  
    31.7 -inst_lift_pcpo	"(UU::('a)u) = UU_lift"
    31.8 +	inst_lift_pcpo	"(UU::('a)u) = UU_lift"
    31.9  
   31.10 -up_def		"up     == (LAM x.Iup(x))"
   31.11 -lift_def	"lift   == (LAM f p.Ilift(f)(p))"
   31.12 +defs
   31.13 +	up_def		"up     == (LAM x.Iup(x))"
   31.14 +	lift_def	"lift   == (LAM f p.Ilift(f)(p))"
   31.15  
   31.16  end
   31.17  
    32.1 --- a/src/HOLCF/One.ML	Thu Jun 29 16:16:24 1995 +0200
    32.2 +++ b/src/HOLCF/One.ML	Thu Jun 29 16:28:40 1995 +0200
    32.3 @@ -15,7 +15,7 @@
    32.4  qed_goalw "Exh_one" One.thy [one_def] "z=UU | z = one"
    32.5   (fn prems =>
    32.6  	[
    32.7 -	(res_inst_tac [("p","rep_one[z]")] liftE1 1),
    32.8 +	(res_inst_tac [("p","rep_one`z")] liftE1 1),
    32.9  	(rtac disjI1 1),
   32.10  	(rtac ((abs_one_iso RS allI) RS ((rep_one_iso RS allI) RS iso_strict )
   32.11  		RS conjunct2 RS subst) 1),
   32.12 @@ -55,7 +55,7 @@
   32.13  	])
   32.14  ];
   32.15  
   32.16 -val  dist_eq_one = [prove_goal One.thy "~one=UU"
   32.17 +val  dist_eq_one = [prove_goal One.thy "one~=UU"
   32.18   (fn prems =>
   32.19  	[
   32.20  	(rtac not_less2not_eq 1),
   32.21 @@ -94,5 +94,5 @@
   32.22  	RS iso_strict) RS conjunct1] )1)
   32.23  	]);
   32.24  
   32.25 -val one_when = map prover ["one_when[x][UU] = UU","one_when[x][one] = x"];
   32.26 +val one_when = map prover ["one_when`x`UU = UU","one_when`x`one = x"];
   32.27  
    33.1 --- a/src/HOLCF/One.thy	Thu Jun 29 16:16:24 1995 +0200
    33.2 +++ b/src/HOLCF/One.thy	Thu Jun 29 16:28:40 1995 +0200
    33.3 @@ -29,12 +29,12 @@
    33.4  	one_when 	:: "'c -> one -> 'c"
    33.5  
    33.6  rules
    33.7 -  abs_one_iso	"abs_one[rep_one[u]] = u"
    33.8 -  rep_one_iso  "rep_one[abs_one[x]] = x"
    33.9 +  abs_one_iso	"abs_one`(rep_one`u) = u"
   33.10 +  rep_one_iso	"rep_one`(abs_one`x) = x"
   33.11  
   33.12 -  one_def	"one == abs_one[up[UU]]"
   33.13 -  one_when_def "one_when == (LAM c u.lift[LAM x.c][rep_one[u]])"
   33.14 -
   33.15 +defs
   33.16 +  one_def	"one == abs_one`(up`UU)"
   33.17 +  one_when_def "one_when == (LAM c u.lift`(LAM x.c)`(rep_one`u))"
   33.18  end
   33.19  
   33.20  
    34.1 --- a/src/HOLCF/Porder.ML	Thu Jun 29 16:16:24 1995 +0200
    34.2 +++ b/src/HOLCF/Porder.ML	Thu Jun 29 16:28:40 1995 +0200
    34.3 @@ -301,7 +301,7 @@
    34.4  (* ------------------------------------------------------------------------ *)
    34.5  
    34.6  qed_goalw "lub_finch1" Porder.thy [max_in_chain_def]
    34.7 -	"[| is_chain(C) ; max_in_chain(i,C)|] ==> range(C) <<| C(i)"
    34.8 +	"[| is_chain(C) ; max_in_chain i C|] ==> range(C) <<| C(i)"
    34.9  (fn prems =>
   34.10  	[
   34.11  	(cut_facts_tac prems 1),
   34.12 @@ -323,7 +323,7 @@
   34.13  	]);	
   34.14  
   34.15  qed_goalw "lub_finch2" Porder.thy [finite_chain_def]
   34.16 -	"finite_chain(C) ==> range(C) <<| C(@ i. max_in_chain(i,C))"
   34.17 +	"finite_chain(C) ==> range(C) <<| C(@ i. max_in_chain i C)"
   34.18   (fn prems=>
   34.19  	[
   34.20  	(cut_facts_tac prems 1),
   34.21 @@ -334,7 +334,7 @@
   34.22  	]);
   34.23  
   34.24  
   34.25 -qed_goal "bin_chain" Porder.thy "x<<y ==> is_chain(%i. if(i=0,x,y))"
   34.26 +qed_goal "bin_chain" Porder.thy "x<<y ==> is_chain (%i. if i=0 then x else y)"
   34.27   (fn prems =>
   34.28  	[
   34.29  	(cut_facts_tac prems 1),
   34.30 @@ -347,7 +347,7 @@
   34.31  	]);
   34.32  
   34.33  qed_goalw "bin_chainmax" Porder.thy [max_in_chain_def,le_def]
   34.34 -	"x<<y ==> max_in_chain(Suc(0),%i. if(i=0,x,y))"
   34.35 +	"x<<y ==> max_in_chain (Suc 0) (%i. if (i=0) then x else y)"
   34.36  (fn prems =>
   34.37  	[
   34.38  	(cut_facts_tac prems 1),
   34.39 @@ -358,10 +358,10 @@
   34.40  	]);
   34.41  
   34.42  qed_goal "lub_bin_chain" Porder.thy 
   34.43 -	"x << y ==> range(%i. if(i = 0,x,y)) <<| y"
   34.44 +	"x << y ==> range(%i. if (i=0) then x else y) <<| y"
   34.45  (fn prems=>
   34.46  	[ (cut_facts_tac prems 1),
   34.47 -	(res_inst_tac [("s","if(Suc(0) = 0,x,y)")] subst 1),
   34.48 +	(res_inst_tac [("s","if (Suc 0) = 0 then x else y")] subst 1),
   34.49  	(rtac lub_finch1 2),
   34.50  	(etac bin_chain 2),
   34.51  	(etac bin_chainmax 2),
    35.1 --- a/src/HOLCF/Porder.thy	Thu Jun 29 16:16:24 1995 +0200
    35.2 +++ b/src/HOLCF/Porder.thy	Thu Jun 29 16:28:40 1995 +0200
    35.3 @@ -18,14 +18,13 @@
    35.4  	max_in_chain :: "[nat,nat=>'a::po]=>bool"
    35.5  	finite_chain :: "(nat=>'a::po)=>bool"
    35.6  
    35.7 -rules
    35.8 +defs
    35.9  
   35.10  (* class definitions *)
   35.11  
   35.12  is_ub		"S  <| x == ! y.y:S --> y<<x"
   35.13  is_lub		"S <<| x == S <| x & (! u. S <| u  --> x << u)"
   35.14  
   35.15 -lub		"lub(S) = (@x. S <<| x)"
   35.16  
   35.17  (* Arbitrary chains are total orders    *)                  
   35.18  is_tord		"is_tord(S) == ! x y. x:S & y:S --> (x<<y | y<<x)"
   35.19 @@ -35,8 +34,14 @@
   35.20  
   35.21  (* finite chains, needed for monotony of continouous functions *)
   35.22  
   35.23 -max_in_chain_def "max_in_chain(i,C) == ! j. i <= j --> C(i) = C(j)" 
   35.24 +max_in_chain_def "max_in_chain i C == ! j. i <= j --> C(i) = C(j)" 
   35.25 +
   35.26 +finite_chain_def "finite_chain(C) == is_chain(C) & (? i. max_in_chain i C)"
   35.27  
   35.28 -finite_chain_def "finite_chain(C) == is_chain(C) & (? i. max_in_chain(i,C))"
   35.29 +rules
   35.30 +
   35.31 +lub		"lub(S) = (@x. S <<| x)"
   35.32  
   35.33  end 
   35.34 +
   35.35 +
    36.1 --- a/src/HOLCF/README	Thu Jun 29 16:16:24 1995 +0200
    36.2 +++ b/src/HOLCF/README	Thu Jun 29 16:28:40 1995 +0200
    36.3 @@ -13,4 +13,9 @@
    36.4                       Dissertation, Technische Universit"at M"unchen, 1994
    36.5  
    36.6  Changes:
    36.7 -14.10. New translation mechanism for continuous infixes
    36.8 +14.10.94 New translation mechanism for continuous infixes
    36.9 +18.05.95 Conversion to curried version of HOL. 
   36.10 +
   36.11 +28.06.95 The old uncurried version of HOLCF is no longer supported
   36.12 +	 in the distribution.
   36.13 + 
    37.1 --- a/src/HOLCF/ROOT.ML	Thu Jun 29 16:16:24 1995 +0200
    37.2 +++ b/src/HOLCF/ROOT.ML	Thu Jun 29 16:28:40 1995 +0200
    37.3 @@ -7,12 +7,13 @@
    37.4  Should be executed in subdirectory HOLCF.
    37.5  *)
    37.6  
    37.7 -val banner = "Higher-order Logic of Computable Functions";
    37.8 +val banner = "Higher-order Logic of Computable Functions; curried version";
    37.9  writeln banner;
   37.10  print_depth 1;
   37.11  
   37.12  init_thy_reader();
   37.13  
   37.14 +
   37.15  use_thy "Holcfb";
   37.16  use_thy "Void";
   37.17  
   37.18 @@ -63,6 +64,7 @@
   37.19  
   37.20  use_thy "Stream";
   37.21  use_thy "Stream2";
   37.22 +
   37.23  use_thy "Dlist";
   37.24  
   37.25  use "../Pure/install_pp.ML";
    38.1 --- a/src/HOLCF/Sprod0.ML	Thu Jun 29 16:16:24 1995 +0200
    38.2 +++ b/src/HOLCF/Sprod0.ML	Thu Jun 29 16:28:40 1995 +0200
    38.3 @@ -13,7 +13,7 @@
    38.4  (* ------------------------------------------------------------------------ *)
    38.5  
    38.6  qed_goalw "SprodI" Sprod0.thy [Sprod_def]
    38.7 -	"Spair_Rep(a,b):Sprod"
    38.8 +	"(Spair_Rep a b):Sprod"
    38.9  (fn prems =>
   38.10  	[
   38.11  	(EVERY1 [rtac CollectI, rtac exI,rtac exI, rtac refl])
   38.12 @@ -21,7 +21,7 @@
   38.13  
   38.14  
   38.15  qed_goal "inj_onto_Abs_Sprod" Sprod0.thy 
   38.16 -	"inj_onto(Abs_Sprod,Sprod)"
   38.17 +	"inj_onto Abs_Sprod Sprod"
   38.18  (fn prems =>
   38.19  	[
   38.20  	(rtac inj_onto_inverseI 1),
   38.21 @@ -35,7 +35,7 @@
   38.22  
   38.23  
   38.24  qed_goalw "strict_Spair_Rep" Sprod0.thy [Spair_Rep_def]
   38.25 - "(a=UU | b=UU) ==> (Spair_Rep(a,b) = Spair_Rep(UU,UU))"
   38.26 + "(a=UU | b=UU) ==> (Spair_Rep a b) = (Spair_Rep UU UU)"
   38.27   (fn prems =>
   38.28  	[
   38.29  	(cut_facts_tac prems 1),
   38.30 @@ -47,7 +47,7 @@
   38.31  	]);
   38.32  
   38.33  qed_goalw "defined_Spair_Rep_rev" Sprod0.thy [Spair_Rep_def]
   38.34 - "(Spair_Rep(a,b) = Spair_Rep(UU,UU)) ==> (a=UU | b=UU)"
   38.35 + "(Spair_Rep a b) = (Spair_Rep UU UU) ==> (a=UU | b=UU)"
   38.36   (fn prems =>
   38.37  	[
   38.38  	(res_inst_tac [("Q","a=UU|b=UU")] classical2 1),
   38.39 @@ -65,7 +65,7 @@
   38.40  (* ------------------------------------------------------------------------ *)
   38.41  
   38.42  qed_goalw "inject_Spair_Rep" Sprod0.thy [Spair_Rep_def]
   38.43 -"[|~aa=UU ; ~ba=UU ; Spair_Rep(a,b)=Spair_Rep(aa,ba) |] ==> a=aa & b=ba"
   38.44 +"[|~aa=UU ; ~ba=UU ; Spair_Rep a b = Spair_Rep aa ba |] ==> a=aa & b=ba"
   38.45   (fn prems =>
   38.46  	[
   38.47  	(cut_facts_tac prems 1),
   38.48 @@ -77,7 +77,7 @@
   38.49  
   38.50  
   38.51  qed_goalw "inject_Ispair" Sprod0.thy [Ispair_def]
   38.52 -	"[|~aa=UU ; ~ba=UU ; Ispair(a,b)=Ispair(aa,ba) |] ==> a=aa & b=ba"
   38.53 +	"[|~aa=UU ; ~ba=UU ; Ispair a b = Ispair aa ba |] ==> a=aa & b=ba"
   38.54  (fn prems =>
   38.55  	[
   38.56  	(cut_facts_tac prems 1),
   38.57 @@ -94,7 +94,7 @@
   38.58  (* ------------------------------------------------------------------------ *)
   38.59  
   38.60  qed_goalw "strict_Ispair" Sprod0.thy [Ispair_def] 
   38.61 - "(a=UU | b=UU) ==> Ispair(a,b)=Ispair(UU,UU)"
   38.62 + "(a=UU | b=UU) ==> Ispair a b = Ispair UU UU"
   38.63  (fn prems =>
   38.64  	[
   38.65  	(cut_facts_tac prems 1),
   38.66 @@ -102,7 +102,7 @@
   38.67  	]);
   38.68  
   38.69  qed_goalw "strict_Ispair1" Sprod0.thy [Ispair_def]
   38.70 -	"Ispair(UU,b) = Ispair(UU,UU)"
   38.71 +	"Ispair UU b  = Ispair UU UU"
   38.72  (fn prems =>
   38.73  	[
   38.74  	(rtac (strict_Spair_Rep RS arg_cong) 1),
   38.75 @@ -111,7 +111,7 @@
   38.76  	]);
   38.77  
   38.78  qed_goalw "strict_Ispair2" Sprod0.thy [Ispair_def]
   38.79 -	"Ispair(a,UU) = Ispair(UU,UU)"
   38.80 +	"Ispair a UU = Ispair UU UU"
   38.81  (fn prems =>
   38.82  	[
   38.83  	(rtac (strict_Spair_Rep RS arg_cong) 1),
   38.84 @@ -120,7 +120,7 @@
   38.85  	]);
   38.86  
   38.87  qed_goal "strict_Ispair_rev" Sprod0.thy 
   38.88 -	"~Ispair(x,y)=Ispair(UU,UU) ==> ~x=UU & ~y=UU"
   38.89 +	"~Ispair x y = Ispair UU UU ==> ~x=UU & ~y=UU"
   38.90  (fn prems =>
   38.91  	[
   38.92  	(cut_facts_tac prems 1),
   38.93 @@ -130,7 +130,7 @@
   38.94  	]);
   38.95  
   38.96  qed_goalw "defined_Ispair_rev" Sprod0.thy [Ispair_def]
   38.97 -	"Ispair(a,b) = Ispair(UU,UU) ==> (a = UU | b = UU)"
   38.98 +	"Ispair a b  = Ispair UU UU ==> (a = UU | b = UU)"
   38.99  (fn prems =>
  38.100  	[
  38.101  	(cut_facts_tac prems 1),
  38.102 @@ -142,7 +142,7 @@
  38.103  	]);
  38.104  
  38.105  qed_goal "defined_Ispair" Sprod0.thy  
  38.106 -"[|~a=UU; ~b=UU|] ==> ~(Ispair(a,b) = Ispair(UU,UU))" 
  38.107 +"[|a~=UU; b~=UU|] ==> (Ispair a b) ~= (Ispair UU UU)" 
  38.108  (fn prems =>
  38.109  	[
  38.110  	(cut_facts_tac prems 1),
  38.111 @@ -159,7 +159,7 @@
  38.112  (* ------------------------------------------------------------------------ *)
  38.113  
  38.114  qed_goalw "Exh_Sprod" Sprod0.thy [Ispair_def]
  38.115 -	"z=Ispair(UU,UU) | (? a b. z=Ispair(a,b) & ~a=UU & ~b=UU)"
  38.116 +	"z=Ispair UU UU | (? a b. z=Ispair a b & a~=UU & b~=UU)"
  38.117  (fn prems =>
  38.118  	[
  38.119  	(rtac (rewrite_rule [Sprod_def] Rep_Sprod RS CollectE) 1),
  38.120 @@ -186,7 +186,7 @@
  38.121  (* ------------------------------------------------------------------------ *)
  38.122  
  38.123  qed_goal "IsprodE" Sprod0.thy
  38.124 -"[|p=Ispair(UU,UU) ==> Q ;!!x y. [|p=Ispair(x,y); ~x=UU ; ~y=UU|] ==> Q|] ==> Q"
  38.125 +"[|p=Ispair UU UU ==> Q ;!!x y. [|p=Ispair x y; x~=UU ; y~=UU|] ==> Q|] ==> Q"
  38.126  (fn prems =>
  38.127  	[
  38.128  	(rtac (Exh_Sprod RS disjE) 1),
  38.129 @@ -206,7 +206,7 @@
  38.130  (* ------------------------------------------------------------------------ *)
  38.131  
  38.132  qed_goalw "strict_Isfst" Sprod0.thy [Isfst_def] 
  38.133 -	"p=Ispair(UU,UU)==>Isfst(p)=UU"
  38.134 +	"p=Ispair UU UU ==> Isfst p = UU"
  38.135  (fn prems =>
  38.136  	[
  38.137  	(cut_facts_tac prems 1),
  38.138 @@ -214,7 +214,7 @@
  38.139  	(rtac conjI 1),
  38.140  	(fast_tac HOL_cs  1),
  38.141  	(strip_tac 1),
  38.142 -	(res_inst_tac [("P","Ispair(UU,UU) = Ispair(a,b)")] notE 1),
  38.143 +	(res_inst_tac [("P","Ispair UU UU = Ispair a b")] notE 1),
  38.144  	(rtac not_sym 1),
  38.145  	(rtac defined_Ispair 1),
  38.146  	(REPEAT (fast_tac HOL_cs  1))
  38.147 @@ -222,7 +222,7 @@
  38.148  
  38.149  
  38.150  qed_goal "strict_Isfst1" Sprod0.thy
  38.151 -	"Isfst(Ispair(UU,y)) = UU"
  38.152 +	"Isfst(Ispair UU y) = UU"
  38.153  (fn prems =>
  38.154  	[
  38.155  	(rtac (strict_Ispair1 RS ssubst) 1),
  38.156 @@ -231,7 +231,7 @@
  38.157  	]);
  38.158  
  38.159  qed_goal "strict_Isfst2" Sprod0.thy
  38.160 -	"Isfst(Ispair(x,UU)) = UU"
  38.161 +	"Isfst(Ispair x UU) = UU"
  38.162  (fn prems =>
  38.163  	[
  38.164  	(rtac (strict_Ispair2 RS ssubst) 1),
  38.165 @@ -241,7 +241,7 @@
  38.166  
  38.167  
  38.168  qed_goalw "strict_Issnd" Sprod0.thy [Issnd_def] 
  38.169 -	"p=Ispair(UU,UU)==>Issnd(p)=UU"
  38.170 +	"p=Ispair UU UU ==>Issnd p=UU"
  38.171  (fn prems =>
  38.172  	[
  38.173  	(cut_facts_tac prems 1),
  38.174 @@ -249,14 +249,14 @@
  38.175  	(rtac conjI 1),
  38.176  	(fast_tac HOL_cs  1),
  38.177  	(strip_tac 1),
  38.178 -	(res_inst_tac [("P","Ispair(UU,UU) = Ispair(a,b)")] notE 1),
  38.179 +	(res_inst_tac [("P","Ispair UU UU = Ispair a b")] notE 1),
  38.180  	(rtac not_sym 1),
  38.181  	(rtac defined_Ispair 1),
  38.182  	(REPEAT (fast_tac HOL_cs  1))
  38.183  	]);
  38.184  
  38.185  qed_goal "strict_Issnd1" Sprod0.thy
  38.186 -	"Issnd(Ispair(UU,y)) = UU"
  38.187 +	"Issnd(Ispair UU y) = UU"
  38.188  (fn prems =>
  38.189  	[
  38.190  	(rtac (strict_Ispair1 RS ssubst) 1),
  38.191 @@ -265,7 +265,7 @@
  38.192  	]);
  38.193  
  38.194  qed_goal "strict_Issnd2" Sprod0.thy
  38.195 -	"Issnd(Ispair(x,UU)) = UU"
  38.196 +	"Issnd(Ispair x UU) = UU"
  38.197  (fn prems =>
  38.198  	[
  38.199  	(rtac (strict_Ispair2 RS ssubst) 1),
  38.200 @@ -274,14 +274,14 @@
  38.201  	]);
  38.202  
  38.203  qed_goalw "Isfst" Sprod0.thy [Isfst_def]
  38.204 -	"[|~x=UU ;~y=UU |] ==> Isfst(Ispair(x,y)) = x"
  38.205 +	"[|x~=UU ;y~=UU |] ==> Isfst(Ispair x y) = x"
  38.206  (fn prems =>
  38.207  	[
  38.208  	(cut_facts_tac prems 1),
  38.209  	(rtac  select_equality 1),
  38.210  	(rtac conjI 1),
  38.211  	(strip_tac 1),
  38.212 -	(res_inst_tac [("P","Ispair(x,y) = Ispair(UU,UU)")] notE 1),
  38.213 +	(res_inst_tac [("P","Ispair x y = Ispair UU UU")] notE 1),
  38.214  	(etac defined_Ispair 1),
  38.215  	(atac 1),
  38.216  	(atac 1),
  38.217 @@ -294,14 +294,14 @@
  38.218  	]);
  38.219  
  38.220  qed_goalw "Issnd" Sprod0.thy [Issnd_def]
  38.221 -	"[|~x=UU ;~y=UU |] ==> Issnd(Ispair(x,y)) = y"
  38.222 +	"[|x~=UU ;y~=UU |] ==> Issnd(Ispair x y) = y"
  38.223  (fn prems =>
  38.224  	[
  38.225  	(cut_facts_tac prems 1),
  38.226  	(rtac  select_equality 1),
  38.227  	(rtac conjI 1),
  38.228  	(strip_tac 1),
  38.229 -	(res_inst_tac [("P","Ispair(x,y) = Ispair(UU,UU)")] notE 1),
  38.230 +	(res_inst_tac [("P","Ispair x y = Ispair UU UU")] notE 1),
  38.231  	(etac defined_Ispair 1),
  38.232  	(atac 1),
  38.233  	(atac 1),
  38.234 @@ -313,7 +313,7 @@
  38.235  	(fast_tac HOL_cs  1)
  38.236  	]);
  38.237  
  38.238 -qed_goal "Isfst2" Sprod0.thy "~y=UU ==>Isfst(Ispair(x,y))=x"
  38.239 +qed_goal "Isfst2" Sprod0.thy "y~=UU ==>Isfst(Ispair x y)=x"
  38.240  (fn prems =>
  38.241  	[
  38.242  	(cut_facts_tac prems 1),
  38.243 @@ -324,7 +324,7 @@
  38.244  	(rtac strict_Isfst1 1)
  38.245  	]);
  38.246  
  38.247 -qed_goal "Issnd2" Sprod0.thy "~x=UU ==>Issnd(Ispair(x,y))=y"
  38.248 +qed_goal "Issnd2" Sprod0.thy "~x=UU ==>Issnd(Ispair x y)=y"
  38.249  (fn prems =>
  38.250  	[
  38.251  	(cut_facts_tac prems 1),
  38.252 @@ -347,7 +347,7 @@
  38.253  
  38.254  
  38.255  qed_goal "defined_IsfstIssnd" Sprod0.thy 
  38.256 -	"~p=Ispair(UU,UU) ==> ~Isfst(p)=UU & ~Issnd(p)=UU"
  38.257 +	"p~=Ispair UU UU ==> Isfst p ~= UU & Issnd p ~= UU"
  38.258   (fn prems =>
  38.259  	[
  38.260  	(cut_facts_tac prems 1),
  38.261 @@ -365,7 +365,7 @@
  38.262  (* ------------------------------------------------------------------------ *)
  38.263  
  38.264  qed_goal "surjective_pairing_Sprod" Sprod0.thy 
  38.265 -	"z = Ispair(Isfst(z))(Issnd(z))"
  38.266 +	"z = Ispair(Isfst z)(Issnd z)"
  38.267  (fn prems =>
  38.268  	[
  38.269  	(res_inst_tac [("z1","z")] (Exh_Sprod RS disjE) 1),
    39.1 --- a/src/HOLCF/Sprod0.thy	Thu Jun 29 16:16:24 1995 +0200
    39.2 +++ b/src/HOLCF/Sprod0.thy	Thu Jun 29 16:28:40 1995 +0200
    39.3 @@ -23,13 +23,13 @@
    39.4    Isfst		:: "('a ** 'b) => 'a"
    39.5    Issnd		:: "('a ** 'b) => 'b"  
    39.6  
    39.7 -rules
    39.8 -
    39.9 +defs
   39.10    Spair_Rep_def		"Spair_Rep == (%a b. %x y.
   39.11  				(~a=UU & ~b=UU --> x=a  & y=b ))"
   39.12  
   39.13 -  Sprod_def		"Sprod == {f. ? a b. f = Spair_Rep(a,b)}"
   39.14 +  Sprod_def		"Sprod == {f. ? a b. f = Spair_Rep a b}"
   39.15  
   39.16 +rules
   39.17    (*faking a type definition... *)
   39.18    (* "**" is isomorphic to Sprod *)
   39.19  
   39.20 @@ -37,17 +37,18 @@
   39.21    Rep_Sprod_inverse	"Abs_Sprod(Rep_Sprod(p)) = p"	
   39.22    Abs_Sprod_inverse	"f:Sprod ==> Rep_Sprod(Abs_Sprod(f)) = f"
   39.23  
   39.24 +defs
   39.25     (*defining the abstract constants*)
   39.26  
   39.27 -  Ispair_def	"Ispair(a,b) == Abs_Sprod(Spair_Rep(a,b))"
   39.28 +  Ispair_def	"Ispair a b == Abs_Sprod(Spair_Rep a b)"
   39.29  
   39.30    Isfst_def	"Isfst(p) == @z.
   39.31 -					(p=Ispair(UU,UU) --> z=UU)
   39.32 -		&(! a b. ~a=UU & ~b=UU & p=Ispair(a,b)   --> z=a)"  
   39.33 +					(p=Ispair UU UU --> z=UU)
   39.34 +		&(! a b. ~a=UU & ~b=UU & p=Ispair a b   --> z=a)"  
   39.35  
   39.36    Issnd_def	"Issnd(p) == @z.
   39.37 -					(p=Ispair(UU,UU) --> z=UU)
   39.38 -		&(! a b. ~a=UU & ~b=UU & p=Ispair(a,b)   --> z=b)"  
   39.39 +					(p=Ispair UU UU  --> z=UU)
   39.40 +		&(! a b. ~a=UU & ~b=UU & p=Ispair a b    --> z=b)"  
   39.41  
   39.42  end
   39.43  
    40.1 --- a/src/HOLCF/Sprod1.ML	Thu Jun 29 16:16:24 1995 +0200
    40.2 +++ b/src/HOLCF/Sprod1.ML	Thu Jun 29 16:28:40 1995 +0200
    40.3 @@ -14,39 +14,24 @@
    40.4  
    40.5  
    40.6  qed_goalw "less_sprod1a" Sprod1.thy [less_sprod_def]
    40.7 -	"p1=Ispair(UU,UU) ==> less_sprod(p1,p2)"
    40.8 -(fn prems =>
    40.9 +	"p1=Ispair UU UU ==> less_sprod p1 p2"
   40.10 + (fn prems =>
   40.11  	[
   40.12  	(cut_facts_tac prems 1),
   40.13 -	(rtac eqTrueE 1),
   40.14 -	(rtac select_equality 1),
   40.15 -	(rtac conjI 1),
   40.16 -	(fast_tac HOL_cs 1),
   40.17 -	(strip_tac 1),
   40.18 -	(contr_tac 1),
   40.19 -	(dtac conjunct1 1),
   40.20 -	(etac rev_mp 1),
   40.21 -	(atac 1)
   40.22 +	(asm_simp_tac HOL_ss 1)
   40.23  	]);
   40.24  
   40.25  qed_goalw "less_sprod1b" Sprod1.thy [less_sprod_def]
   40.26 - "~p1=Ispair(UU,UU) ==> \
   40.27 -\ less_sprod(p1,p2) = ( Isfst(p1) << Isfst(p2) & Issnd(p1) << Issnd(p2))"
   40.28 -(fn prems =>
   40.29 + "p1~=Ispair UU UU ==> \
   40.30 +\ less_sprod p1 p2 = ( Isfst p1 << Isfst p2 & Issnd p1 << Issnd p2)"
   40.31 + (fn prems =>
   40.32  	[
   40.33  	(cut_facts_tac prems 1),
   40.34 -	(rtac select_equality 1),
   40.35 -	(rtac conjI 1),
   40.36 -	(strip_tac 1),
   40.37 -	(contr_tac 1),
   40.38 -	(fast_tac HOL_cs 1),
   40.39 -	(dtac conjunct2 1),
   40.40 -	(etac rev_mp 1),
   40.41 -	(atac 1)
   40.42 +	(asm_simp_tac HOL_ss 1)
   40.43  	]);
   40.44  
   40.45  qed_goal "less_sprod2a" Sprod1.thy
   40.46 -	"less_sprod(Ispair(x,y),Ispair(UU,UU)) ==> x = UU | y = UU"
   40.47 +	"less_sprod(Ispair x y)(Ispair UU UU) ==> x = UU | y = UU"
   40.48  (fn prems =>
   40.49  	[
   40.50  	(cut_facts_tac prems 1),
   40.51 @@ -55,18 +40,18 @@
   40.52  	(rtac disjI1 1),
   40.53  	(rtac antisym_less 1),
   40.54  	(rtac minimal 2),
   40.55 -	(res_inst_tac [("s","Isfst(Ispair(x,y))"),("t","x")] subst 1),
   40.56 +	(res_inst_tac [("s","Isfst(Ispair x y)"),("t","x")] subst 1),
   40.57  	(rtac Isfst 1),
   40.58  	(fast_tac HOL_cs 1),
   40.59  	(fast_tac HOL_cs 1),
   40.60 -	(res_inst_tac [("s","Isfst(Ispair(UU,UU))"),("t","UU")] subst 1),
   40.61 +	(res_inst_tac [("s","Isfst(Ispair UU UU)"),("t","UU")] subst 1),
   40.62  	(simp_tac Sprod_ss 1),
   40.63  	(rtac (defined_Ispair RS less_sprod1b RS iffD1 RS conjunct1) 1),
   40.64  	(REPEAT (fast_tac HOL_cs 1))
   40.65  	]);
   40.66  
   40.67  qed_goal "less_sprod2b" Sprod1.thy
   40.68 - "less_sprod(p,Ispair(UU,UU)) ==> p = Ispair(UU,UU)"
   40.69 + "less_sprod p (Ispair UU UU) ==> p = Ispair UU UU"
   40.70  (fn prems =>
   40.71  	[
   40.72  	(cut_facts_tac prems 1),
   40.73 @@ -78,22 +63,22 @@
   40.74  	]);
   40.75  
   40.76  qed_goal "less_sprod2c" Sprod1.thy 
   40.77 - "[|less_sprod(Ispair(xa,ya),Ispair(x,y));\
   40.78 -\~ xa = UU ; ~ ya = UU;~ x = UU ; ~ y = UU |] ==> xa << x & ya << y"
   40.79 + "[|less_sprod(Ispair xa ya)(Ispair x y);\
   40.80 +\  xa ~= UU ; ya ~= UU; x ~= UU ;  y ~= UU |] ==> xa << x & ya << y"
   40.81  (fn prems =>
   40.82  	[
   40.83  	(rtac conjI 1),
   40.84 -	(res_inst_tac [("s","Isfst(Ispair(xa,ya))"),("t","xa")] subst 1),
   40.85 +	(res_inst_tac [("s","Isfst(Ispair xa ya)"),("t","xa")] subst 1),
   40.86  	(simp_tac (Sprod_ss addsimps prems)1),
   40.87 -	(res_inst_tac [("s","Isfst(Ispair(x,y))"),("t","x")] subst 1),
   40.88 +	(res_inst_tac [("s","Isfst(Ispair x y)"),("t","x")] subst 1),
   40.89  	(simp_tac (Sprod_ss addsimps prems)1),
   40.90  	(rtac (defined_Ispair RS less_sprod1b RS iffD1 RS conjunct1) 1),
   40.91  	(resolve_tac prems 1),
   40.92  	(resolve_tac prems 1),
   40.93  	(simp_tac (Sprod_ss addsimps prems)1),
   40.94 -	(res_inst_tac [("s","Issnd(Ispair(xa,ya))"),("t","ya")] subst 1),
   40.95 +	(res_inst_tac [("s","Issnd(Ispair xa ya)"),("t","ya")] subst 1),
   40.96  	(simp_tac (Sprod_ss addsimps prems)1),
   40.97 -	(res_inst_tac [("s","Issnd(Ispair(x,y))"),("t","y")] subst 1),
   40.98 +	(res_inst_tac [("s","Issnd(Ispair x y)"),("t","y")] subst 1),
   40.99  	(simp_tac (Sprod_ss addsimps prems)1),
  40.100  	(rtac (defined_Ispair RS less_sprod1b RS iffD1 RS conjunct2) 1),
  40.101  	(resolve_tac prems 1),
  40.102 @@ -105,7 +90,7 @@
  40.103  (* less_sprod is a partial order on Sprod                                   *)
  40.104  (* ------------------------------------------------------------------------ *)
  40.105  
  40.106 -qed_goal "refl_less_sprod" Sprod1.thy "less_sprod(p,p)"
  40.107 +qed_goal "refl_less_sprod" Sprod1.thy "less_sprod p p"
  40.108  (fn prems =>
  40.109  	[
  40.110  	(res_inst_tac [("p","p")] IsprodE 1),
  40.111 @@ -118,7 +103,7 @@
  40.112  
  40.113  
  40.114  qed_goal "antisym_less_sprod" Sprod1.thy 
  40.115 - "[|less_sprod(p1,p2);less_sprod(p2,p1)|] ==> p1=p2"
  40.116 + "[|less_sprod p1 p2;less_sprod p2 p1|] ==> p1=p2"
  40.117   (fn prems =>
  40.118  	[
  40.119  	(cut_facts_tac prems 1),
  40.120 @@ -146,7 +131,7 @@
  40.121  	]);
  40.122  
  40.123  qed_goal "trans_less_sprod" Sprod1.thy 
  40.124 - "[|less_sprod(p1::'a**'b,p2);less_sprod(p2,p3)|] ==> less_sprod(p1,p3)"
  40.125 + "[|less_sprod (p1::'a**'b) p2;less_sprod p2 p3|] ==> less_sprod p1 p3"
  40.126   (fn prems =>
  40.127  	[
  40.128  	(cut_facts_tac prems 1),
  40.129 @@ -155,11 +140,11 @@
  40.130  	(hyp_subst_tac 1),
  40.131  	(res_inst_tac [("p","p3")] IsprodE 1),
  40.132  	(hyp_subst_tac 1),
  40.133 -	(res_inst_tac [("s","p2"),("t","Ispair(UU::'a,UU::'b)")] subst 1),
  40.134 +	(res_inst_tac [("s","p2"),("t","Ispair (UU::'a)(UU::'b)")] subst 1),
  40.135  	(etac less_sprod2b 1),
  40.136  	(atac 1),
  40.137  	(hyp_subst_tac 1),
  40.138 -	(res_inst_tac [("Q","p2=Ispair(UU::'a,UU::'b)")]
  40.139 +	(res_inst_tac [("Q","p2=Ispair(UU::'a)(UU::'b)")]
  40.140  		 (excluded_middle RS disjE) 1),
  40.141  	(rtac (defined_Ispair RS less_sprod1b RS ssubst) 1),
  40.142  	(REPEAT (atac 1)),
  40.143 @@ -181,7 +166,7 @@
  40.144  	(rtac (less_sprod1b RS subst) 1),
  40.145  	(REPEAT (atac 1)),
  40.146  	(hyp_subst_tac 1),
  40.147 -	(res_inst_tac [("s","Ispair(UU::'a,UU::'b)"),("t","Ispair(x,y)")] 
  40.148 +	(res_inst_tac [("s","Ispair(UU::'a)(UU::'b)"),("t","Ispair x y")] 
  40.149  		subst 1),
  40.150  	(etac (less_sprod2b RS sym) 1),
  40.151  	(atac 1)
    41.1 --- a/src/HOLCF/Sprod1.thy	Thu Jun 29 16:16:24 1995 +0200
    41.2 +++ b/src/HOLCF/Sprod1.thy	Thu Jun 29 16:28:40 1995 +0200
    41.3 @@ -11,12 +11,10 @@
    41.4  consts
    41.5    less_sprod	:: "[('a ** 'b),('a ** 'b)] => bool"	
    41.6  
    41.7 -rules
    41.8 -
    41.9 -  less_sprod_def "less_sprod(p1,p2) == @z.
   41.10 -	 ( p1=Ispair(UU,UU) --> z = True)
   41.11 -	&(~p1=Ispair(UU,UU) --> z = (   Isfst(p1) << Isfst(p2) &
   41.12 -					Issnd(p1) << Issnd(p2)))"
   41.13 +defs
   41.14 +  less_sprod_def "less_sprod p1 p2 == 
   41.15 +	if p1 = Ispair UU UU
   41.16 +		then True
   41.17 +		else Isfst p1 << Isfst p2 & Issnd p1 << Issnd p2"
   41.18  
   41.19  end
   41.20 -
    42.1 --- a/src/HOLCF/Sprod2.ML	Thu Jun 29 16:16:24 1995 +0200
    42.2 +++ b/src/HOLCF/Sprod2.ML	Thu Jun 29 16:28:40 1995 +0200
    42.3 @@ -14,7 +14,7 @@
    42.4  (* ------------------------------------------------------------------------ *)
    42.5  
    42.6  qed_goal "less_sprod3a" Sprod2.thy 
    42.7 -	"p1=Ispair(UU,UU) ==> p1 << p2"
    42.8 +	"p1=Ispair UU UU ==> p1 << p2"
    42.9  (fn prems =>
   42.10  	[
   42.11  	(cut_facts_tac prems 1),
   42.12 @@ -24,7 +24,7 @@
   42.13  
   42.14  
   42.15  qed_goal "less_sprod3b" Sprod2.thy
   42.16 - "~p1=Ispair(UU,UU) ==>\
   42.17 + "p1~=Ispair UU UU ==>\
   42.18  \	(p1<<p2) = (Isfst(p1)<<Isfst(p2) & Issnd(p1)<<Issnd(p2))" 
   42.19  (fn prems =>
   42.20  	[
   42.21 @@ -34,7 +34,7 @@
   42.22  	]);
   42.23  
   42.24  qed_goal "less_sprod4b" Sprod2.thy 
   42.25 -	"p << Ispair(UU,UU) ==> p = Ispair(UU,UU)"
   42.26 +	"p << Ispair UU UU ==> p = Ispair UU UU"
   42.27  (fn prems =>
   42.28  	[
   42.29  	(cut_facts_tac prems 1),
   42.30 @@ -43,10 +43,10 @@
   42.31  	]);
   42.32  
   42.33  val less_sprod4a = (less_sprod4b RS defined_Ispair_rev);
   42.34 -(* Ispair(?a,?b) << Ispair(UU,UU) ==> ?a = UU | ?b = UU *)
   42.35 +(* Ispair ?a ?b << Ispair UU UU ==> ?a = UU | ?b = UU *)
   42.36  
   42.37  qed_goal "less_sprod4c" Sprod2.thy
   42.38 - "[|Ispair(xa,ya)<<Ispair(x,y);~xa=UU;~ya=UU;~x=UU;~y=UU|] ==>\
   42.39 + "[|Ispair xa ya << Ispair x y; xa~=UU; ya~=UU; x~=UU; y~=UU|] ==>\
   42.40  \		xa<<x & ya << y"
   42.41  (fn prems =>
   42.42  	[
   42.43 @@ -60,7 +60,7 @@
   42.44  (* type sprod is pointed                                                    *)
   42.45  (* ------------------------------------------------------------------------ *)
   42.46  
   42.47 -qed_goal "minimal_sprod" Sprod2.thy  "Ispair(UU,UU)<<p"
   42.48 +qed_goal "minimal_sprod" Sprod2.thy  "Ispair UU UU << p"
   42.49  (fn prems =>
   42.50  	[
   42.51  	(rtac less_sprod3a 1),
   42.52 @@ -78,9 +78,9 @@
   42.53  	(rtac (less_fun RS iffD2) 1),
   42.54  	(strip_tac 1),
   42.55  	(res_inst_tac [("Q",
   42.56 -	" Ispair(y,xa) =Ispair(UU,UU)")] (excluded_middle RS disjE) 1),
   42.57 +	" Ispair y xa = Ispair UU UU")] (excluded_middle RS disjE) 1),
   42.58  	(res_inst_tac [("Q",
   42.59 -	" Ispair(x,xa) =Ispair(UU,UU)")] (excluded_middle RS disjE) 1),
   42.60 +	" Ispair x xa = Ispair UU UU")] (excluded_middle RS disjE) 1),
   42.61  	(rtac (less_sprod3b RS iffD2) 1),
   42.62  	(atac 1),
   42.63  	(rtac conjI 1),
   42.64 @@ -100,9 +100,9 @@
   42.65  	(rtac refl_less 1),
   42.66  	(etac less_sprod3a 1),
   42.67  	(res_inst_tac [("Q",
   42.68 -	" Ispair(x,xa) =Ispair(UU,UU)")] (excluded_middle RS disjE) 1),
   42.69 +	" Ispair x xa  = Ispair UU UU")] (excluded_middle RS disjE) 1),
   42.70  	(etac less_sprod3a 2),
   42.71 -	(res_inst_tac [("P","Ispair(y,xa) = Ispair(UU,UU)")] notE 1),
   42.72 +	(res_inst_tac [("P","Ispair y xa = Ispair UU UU")] notE 1),
   42.73  	(atac 2),
   42.74  	(rtac defined_Ispair 1),
   42.75  	(etac notUU_I 1),
   42.76 @@ -116,9 +116,9 @@
   42.77  	[
   42.78  	(strip_tac 1),
   42.79  	(res_inst_tac [("Q",
   42.80 -	" Ispair(x,y) =Ispair(UU,UU)")] (excluded_middle RS disjE) 1),
   42.81 +	" Ispair x y = Ispair UU UU")] (excluded_middle RS disjE) 1),
   42.82  	(res_inst_tac [("Q",
   42.83 -	" Ispair(x,xa) =Ispair(UU,UU)")] (excluded_middle RS disjE) 1),
   42.84 +	" Ispair x xa = Ispair UU UU")] (excluded_middle RS disjE) 1),
   42.85  	(rtac (less_sprod3b RS iffD2) 1),
   42.86  	(atac 1),
   42.87  	(rtac conjI 1),
   42.88 @@ -138,9 +138,9 @@
   42.89  	(atac 1),
   42.90  	(etac less_sprod3a 1),
   42.91  	(res_inst_tac [("Q",
   42.92 -	" Ispair(x,xa) =Ispair(UU,UU)")] (excluded_middle RS disjE) 1),
   42.93 +	" Ispair x xa = Ispair UU UU")] (excluded_middle RS disjE) 1),
   42.94  	(etac less_sprod3a 2),
   42.95 -	(res_inst_tac [("P","Ispair(x,y) = Ispair(UU,UU)")] notE 1),
   42.96 +	(res_inst_tac [("P","Ispair x y = Ispair UU UU")] notE 1),
   42.97  	(atac 2),
   42.98  	(rtac defined_Ispair 1),
   42.99  	(etac (strict_Ispair_rev RS  conjunct1) 1),
  42.100 @@ -149,7 +149,7 @@
  42.101  	]);
  42.102  
  42.103  qed_goal " monofun_Ispair" Sprod2.thy 
  42.104 - "[|x1<<x2; y1<<y2|] ==> Ispair(x1,y1)<<Ispair(x2,y2)"
  42.105 + "[|x1<<x2; y1<<y2|] ==> Ispair x1 y1 << Ispair x2 y2"
  42.106  (fn prems =>
  42.107  	[
  42.108  	(cut_facts_tac prems 1),
  42.109 @@ -179,7 +179,7 @@
  42.110  	(hyp_subst_tac 1),
  42.111  	(res_inst_tac [("p","y")] IsprodE 1),
  42.112  	(hyp_subst_tac 1),
  42.113 -	(res_inst_tac [("t","Isfst(Ispair(xa,ya))")] subst 1),
  42.114 +	(res_inst_tac [("t","Isfst(Ispair xa ya)")] subst 1),
  42.115  	(rtac refl_less 2),
  42.116  	(etac (less_sprod4b RS sym RS arg_cong) 1),
  42.117  	(hyp_subst_tac 1),
  42.118 @@ -206,7 +206,7 @@
  42.119  	(hyp_subst_tac 1),
  42.120  	(res_inst_tac [("p","y")] IsprodE 1),
  42.121  	(hyp_subst_tac 1),
  42.122 -	(res_inst_tac [("t","Issnd(Ispair(xa,ya))")] subst 1),
  42.123 +	(res_inst_tac [("t","Issnd(Ispair xa ya)")] subst 1),
  42.124  	(rtac refl_less 2),
  42.125  	(etac (less_sprod4b RS sym RS arg_cong) 1),
  42.126  	(hyp_subst_tac 1),
  42.127 @@ -227,7 +227,7 @@
  42.128  
  42.129  qed_goal "lub_sprod" Sprod2.thy 
  42.130  "[|is_chain(S)|] ==> range(S) <<| \
  42.131 -\ Ispair(lub(range(%i.Isfst(S(i)))),lub(range(%i.Issnd(S(i)))))"
  42.132 +\ Ispair (lub(range(%i.Isfst(S i)))) (lub(range(%i.Issnd(S i))))"
  42.133  (fn prems =>
  42.134  	[
  42.135  	(cut_facts_tac prems 1),
  42.136 @@ -253,8 +253,7 @@
  42.137  	]);
  42.138  
  42.139  val thelub_sprod = (lub_sprod RS thelubI);
  42.140 -(* is_chain(?S1) ==> lub(range(?S1)) =                                     *)
  42.141 -(* Ispair(lub(range(%i. Isfst(?S1(i)))),lub(range(%i. Issnd(?S1(i)))))     *)
  42.142 +
  42.143  
  42.144  qed_goal "cpo_sprod" Sprod2.thy 
  42.145  	"is_chain(S::nat=>'a**'b)==>? x.range(S)<<| x"
    43.1 --- a/src/HOLCF/Sprod3.ML	Thu Jun 29 16:16:24 1995 +0200
    43.2 +++ b/src/HOLCF/Sprod3.ML	Thu Jun 29 16:28:40 1995 +0200
    43.3 @@ -14,9 +14,9 @@
    43.4  
    43.5  qed_goal "sprod3_lemma1" Sprod3.thy 
    43.6  "[| is_chain(Y);  x~= UU;  lub(range(Y))~= UU |] ==>\
    43.7 -\ Ispair(lub(range(Y)),x) =\
    43.8 -\ Ispair(lub(range(%i. Isfst(Ispair(Y(i),x)))),\
    43.9 -\        lub(range(%i. Issnd(Ispair(Y(i),x)))))"
   43.10 +\ Ispair (lub(range Y)) x =\
   43.11 +\ Ispair (lub(range(%i. Isfst(Ispair(Y i) x)))) \
   43.12 +\        (lub(range(%i. Issnd(Ispair(Y i) x))))"
   43.13   (fn prems =>
   43.14  	[
   43.15  	(cut_facts_tac prems 1),
   43.16 @@ -50,10 +50,10 @@
   43.17  	]);
   43.18  
   43.19  qed_goal "sprod3_lemma2" Sprod3.thy 
   43.20 -"[| is_chain(Y); ~ x = UU; lub(range(Y)) = UU |] ==>\
   43.21 -\   Ispair(lub(range(Y)),x) =\
   43.22 -\   Ispair(lub(range(%i. Isfst(Ispair(Y(i),x)))),\
   43.23 -\          lub(range(%i. Issnd(Ispair(Y(i),x)))))"
   43.24 +"[| is_chain(Y); x ~= UU; lub(range(Y)) = UU |] ==>\
   43.25 +\   Ispair (lub(range Y)) x =\
   43.26 +\   Ispair (lub(range(%i. Isfst(Ispair(Y i) x))))\
   43.27 +\          (lub(range(%i. Issnd(Ispair(Y i) x))))"
   43.28   (fn prems =>
   43.29  	[
   43.30  	(cut_facts_tac prems 1),
   43.31 @@ -73,9 +73,9 @@
   43.32  
   43.33  qed_goal "sprod3_lemma3" Sprod3.thy 
   43.34  "[| is_chain(Y); x = UU |] ==>\
   43.35 -\          Ispair(lub(range(Y)),x) =\
   43.36 -\          Ispair(lub(range(%i. Isfst(Ispair(Y(i),x)))),\
   43.37 -\                  lub(range(%i. Issnd(Ispair(Y(i),x)))))"
   43.38 +\          Ispair (lub(range Y)) x =\
   43.39 +\          Ispair (lub(range(%i. Isfst(Ispair (Y i) x))))\
   43.40 +\                 (lub(range(%i. Issnd(Ispair (Y i) x))))"
   43.41   (fn prems =>
   43.42  	[
   43.43  	(cut_facts_tac prems 1),
   43.44 @@ -118,17 +118,17 @@
   43.45  	]);
   43.46  
   43.47  qed_goal "sprod3_lemma4" Sprod3.thy 
   43.48 -"[| is_chain(Y); ~ x = UU; ~ lub(range(Y)) = UU |] ==>\
   43.49 -\         Ispair(x,lub(range(Y))) =\
   43.50 -\         Ispair(lub(range(%i. Isfst(Ispair(x,Y(i))))),\
   43.51 -\                lub(range(%i. Issnd(Ispair(x,Y(i))))))"
   43.52 +"[| is_chain(Y); x ~= UU; lub(range(Y)) ~= UU |] ==>\
   43.53 +\         Ispair x (lub(range Y)) =\
   43.54 +\         Ispair (lub(range(%i. Isfst (Ispair x (Y i)))))\
   43.55 +\                (lub(range(%i. Issnd (Ispair x (Y i)))))"
   43.56   (fn prems =>
   43.57  	[
   43.58  	(cut_facts_tac prems 1),
   43.59  	(res_inst_tac [("f1","Ispair")] (arg_cong RS cong) 1),
   43.60  	(rtac sym 1),
   43.61  	(rtac lub_chain_maxelem 1),
   43.62 -	(res_inst_tac [("P","%j.~Y(j)=UU")] exE 1),
   43.63 +	(res_inst_tac [("P","%j.Y(j)~=UU")] exE 1),
   43.64  	(rtac (notall2ex RS iffD1) 1),
   43.65  	(res_inst_tac [("Q","lub(range(Y)) = UU")] contrapos 1),
   43.66  	(atac 1),
   43.67 @@ -154,10 +154,10 @@
   43.68  	]);
   43.69  
   43.70  qed_goal "sprod3_lemma5" Sprod3.thy 
   43.71 -"[| is_chain(Y); ~ x = UU; lub(range(Y)) = UU |] ==>\
   43.72 -\         Ispair(x,lub(range(Y))) =\
   43.73 -\         Ispair(lub(range(%i. Isfst(Ispair(x,Y(i))))),\
   43.74 -\                lub(range(%i. Issnd(Ispair(x,Y(i))))))"
   43.75 +"[| is_chain(Y); x ~= UU; lub(range(Y)) = UU |] ==>\
   43.76 +\         Ispair x (lub(range Y)) =\
   43.77 +\         Ispair (lub(range(%i. Isfst(Ispair x (Y i)))))\
   43.78 +\                (lub(range(%i. Issnd(Ispair x (Y i)))))"
   43.79   (fn prems =>
   43.80  	[
   43.81  	(cut_facts_tac prems 1),
   43.82 @@ -176,9 +176,9 @@
   43.83  
   43.84  qed_goal "sprod3_lemma6" Sprod3.thy 
   43.85  "[| is_chain(Y); x = UU |] ==>\
   43.86 -\         Ispair(x,lub(range(Y))) =\
   43.87 -\         Ispair(lub(range(%i. Isfst(Ispair(x,Y(i))))),\
   43.88 -\                lub(range(%i. Issnd(Ispair(x,Y(i))))))"
   43.89 +\         Ispair x (lub(range Y)) =\
   43.90 +\         Ispair (lub(range(%i. Isfst (Ispair x (Y i)))))\
   43.91 +\                (lub(range(%i. Issnd (Ispair x (Y i)))))"
   43.92  (fn prems =>
   43.93  	[
   43.94  	(cut_facts_tac prems 1),
   43.95 @@ -215,19 +215,19 @@
   43.96  	]);
   43.97  
   43.98  
   43.99 -qed_goal "contX_Ispair1" Sprod3.thy "contX(Ispair)"
  43.100 +qed_goal "cont_Ispair1" Sprod3.thy "cont(Ispair)"
  43.101  (fn prems =>
  43.102  	[
  43.103 -	(rtac monocontlub2contX 1),
  43.104 +	(rtac monocontlub2cont 1),
  43.105  	(rtac monofun_Ispair1 1),
  43.106  	(rtac contlub_Ispair1 1)
  43.107  	]);
  43.108  
  43.109  
  43.110 -qed_goal "contX_Ispair2" Sprod3.thy "contX(Ispair(x))"
  43.111 +qed_goal "cont_Ispair2" Sprod3.thy "cont(Ispair(x))"
  43.112  (fn prems =>
  43.113  	[
  43.114 -	(rtac monocontlub2contX 1),
  43.115 +	(rtac monocontlub2cont 1),
  43.116  	(rtac monofun_Ispair2 1),
  43.117  	(rtac contlub_Ispair2 1)
  43.118  	]);
  43.119 @@ -289,18 +289,18 @@
  43.120  	]);
  43.121  
  43.122  
  43.123 -qed_goal "contX_Isfst" Sprod3.thy "contX(Isfst)"
  43.124 +qed_goal "cont_Isfst" Sprod3.thy "cont(Isfst)"
  43.125  (fn prems =>
  43.126  	[
  43.127 -	(rtac monocontlub2contX 1),
  43.128 +	(rtac monocontlub2cont 1),
  43.129  	(rtac monofun_Isfst 1),
  43.130  	(rtac contlub_Isfst 1)
  43.131  	]);
  43.132  
  43.133 -qed_goal "contX_Issnd" Sprod3.thy "contX(Issnd)"
  43.134 +qed_goal "cont_Issnd" Sprod3.thy "cont(Issnd)"
  43.135  (fn prems =>
  43.136  	[
  43.137 -	(rtac monocontlub2contX 1),
  43.138 +	(rtac monocontlub2cont 1),
  43.139  	(rtac monofun_Issnd 1),
  43.140  	(rtac contlub_Issnd 1)
  43.141  	]);
  43.142 @@ -312,7 +312,7 @@
  43.143   -------------------------------------------------------------------------- 
  43.144  *)
  43.145  
  43.146 -qed_goal "spair_eq" Sprod3.thy "[|x1=x2;y1=y2|] ==> x1##y1 = x2##y2"
  43.147 +qed_goal "spair_eq" Sprod3.thy "[|x1=x2;y1=y2|] ==> (|x1,y1|) = (|x2,y2|)"
  43.148   (fn prems =>
  43.149  	[
  43.150  	(cut_facts_tac prems 1),
  43.151 @@ -324,21 +324,21 @@
  43.152  (* ------------------------------------------------------------------------ *)
  43.153  
  43.154  qed_goalw "beta_cfun_sprod" Sprod3.thy [spair_def]
  43.155 -	"(LAM x y.Ispair(x,y))[a][b] = Ispair(a,b)"
  43.156 +	"(LAM x y.Ispair x y)`a`b = Ispair a b"
  43.157   (fn prems =>
  43.158  	[
  43.159  	(rtac (beta_cfun RS ssubst) 1),
  43.160 -	(contX_tac 1),
  43.161 -	(rtac contX_Ispair2 1),
  43.162 -	(rtac contX2contX_CF1L 1),
  43.163 -	(rtac contX_Ispair1 1),
  43.164 +	(cont_tac 1),
  43.165 +	(rtac cont_Ispair2 1),
  43.166 +	(rtac cont2cont_CF1L 1),
  43.167 +	(rtac cont_Ispair1 1),
  43.168  	(rtac (beta_cfun RS ssubst) 1),
  43.169 -	(rtac contX_Ispair2 1),
  43.170 +	(rtac cont_Ispair2 1),
  43.171  	(rtac refl 1)
  43.172  	]);
  43.173  
  43.174  qed_goalw "inject_spair" Sprod3.thy [spair_def]
  43.175 -	"[|~aa=UU ; ~ba=UU ; (a##b)=(aa##ba) |] ==> a=aa & b=ba"
  43.176 +	"[| aa~=UU ; ba~=UU ; (|a,b|)=(|aa,ba|) |] ==> a=aa & b=ba"
  43.177   (fn prems =>
  43.178  	[
  43.179  	(cut_facts_tac prems 1),
  43.180 @@ -349,7 +349,7 @@
  43.181  	(rtac beta_cfun_sprod 1)
  43.182  	]);
  43.183  
  43.184 -qed_goalw "inst_sprod_pcpo2" Sprod3.thy [spair_def] "UU = (UU##UU)"
  43.185 +qed_goalw "inst_sprod_pcpo2" Sprod3.thy [spair_def] "UU = (|UU,UU|)"
  43.186   (fn prems =>
  43.187  	[
  43.188  	(rtac sym 1),
  43.189 @@ -360,7 +360,7 @@
  43.190  	]);
  43.191  
  43.192  qed_goalw "strict_spair" Sprod3.thy [spair_def] 
  43.193 -	"(a=UU | b=UU) ==> (a##b)=UU"
  43.194 +	"(a=UU | b=UU) ==> (|a,b|)=UU"
  43.195   (fn prems =>
  43.196  	[
  43.197  	(cut_facts_tac prems 1),
  43.198 @@ -371,7 +371,7 @@
  43.199  	(etac strict_Ispair 1)
  43.200  	]);
  43.201  
  43.202 -qed_goalw "strict_spair1" Sprod3.thy [spair_def] "(UU##b) = UU"
  43.203 +qed_goalw "strict_spair1" Sprod3.thy [spair_def] "(|UU,b|) = UU"
  43.204   (fn prems =>
  43.205  	[
  43.206  	(rtac (beta_cfun_sprod RS ssubst) 1),
  43.207 @@ -380,7 +380,7 @@
  43.208  	(rtac strict_Ispair1 1)
  43.209  	]);
  43.210  
  43.211 -qed_goalw "strict_spair2" Sprod3.thy [spair_def] "(a##UU) = UU"
  43.212 +qed_goalw "strict_spair2" Sprod3.thy [spair_def] "(|a,UU|) = UU"
  43.213   (fn prems =>
  43.214  	[
  43.215  	(rtac (beta_cfun_sprod RS ssubst) 1),
  43.216 @@ -390,7 +390,7 @@
  43.217  	]);
  43.218  
  43.219  qed_goalw "strict_spair_rev" Sprod3.thy [spair_def]
  43.220 -	"~(x##y)=UU ==> ~x=UU & ~y=UU"
  43.221 +	"(|x,y|)~=UU ==> ~x=UU & ~y=UU"
  43.222   (fn prems =>
  43.223  	[
  43.224  	(cut_facts_tac prems 1),
  43.225 @@ -401,7 +401,7 @@
  43.226  	]);
  43.227  
  43.228  qed_goalw "defined_spair_rev" Sprod3.thy [spair_def]
  43.229 - "(a##b) = UU ==> (a = UU | b = UU)"
  43.230 + "(|a,b|) = UU ==> (a = UU | b = UU)"
  43.231   (fn prems =>
  43.232  	[
  43.233  	(cut_facts_tac prems 1),
  43.234 @@ -412,7 +412,7 @@
  43.235  	]);
  43.236  
  43.237  qed_goalw "defined_spair" Sprod3.thy [spair_def]
  43.238 -	"[|~a=UU; ~b=UU|] ==> ~(a##b) = UU"
  43.239 +	"[|a~=UU; b~=UU|] ==> (|a,b|) ~= UU"
  43.240   (fn prems =>
  43.241  	[
  43.242  	(cut_facts_tac prems 1),
  43.243 @@ -423,7 +423,7 @@
  43.244  	]);
  43.245  
  43.246  qed_goalw "Exh_Sprod2" Sprod3.thy [spair_def]
  43.247 -	"z=UU | (? a b. z=(a##b) & ~a=UU & ~b=UU)"
  43.248 +	"z=UU | (? a b. z=(|a,b|) & a~=UU & b~=UU)"
  43.249   (fn prems =>
  43.250  	[
  43.251  	(rtac (Exh_Sprod RS disjE) 1),
  43.252 @@ -443,7 +443,7 @@
  43.253  
  43.254  
  43.255  qed_goalw "sprodE" Sprod3.thy [spair_def]
  43.256 -"[|p=UU ==> Q;!!x y. [|p=(x##y);~x=UU ; ~y=UU|] ==> Q|] ==> Q"
  43.257 +"[|p=UU ==> Q;!!x y. [|p=(|x,y|);x~=UU ; y~=UU|] ==> Q|] ==> Q"
  43.258  (fn prems =>
  43.259  	[
  43.260  	(rtac IsprodE 1),
  43.261 @@ -459,101 +459,101 @@
  43.262  
  43.263  
  43.264  qed_goalw "strict_sfst" Sprod3.thy [sfst_def] 
  43.265 -	"p=UU==>sfst[p]=UU"
  43.266 +	"p=UU==>sfst`p=UU"
  43.267   (fn prems =>
  43.268  	[
  43.269  	(cut_facts_tac prems 1),
  43.270  	(rtac (beta_cfun RS ssubst) 1),
  43.271 -	(rtac contX_Isfst 1),
  43.272 +	(rtac cont_Isfst 1),
  43.273  	(rtac strict_Isfst 1),
  43.274  	(rtac (inst_sprod_pcpo RS subst) 1),
  43.275  	(atac 1)
  43.276  	]);
  43.277  
  43.278  qed_goalw "strict_sfst1" Sprod3.thy [sfst_def,spair_def] 
  43.279 -	"sfst[UU##y] = UU"
  43.280 +	"sfst`(|UU,y|) = UU"
  43.281   (fn prems =>
  43.282  	[
  43.283  	(rtac (beta_cfun_sprod RS ssubst) 1),
  43.284  	(rtac (beta_cfun RS ssubst) 1),
  43.285 -	(rtac contX_Isfst 1),
  43.286 +	(rtac cont_Isfst 1),
  43.287  	(rtac strict_Isfst1 1)
  43.288  	]);
  43.289   
  43.290  qed_goalw "strict_sfst2" Sprod3.thy [sfst_def,spair_def] 
  43.291 -	"sfst[x##UU] = UU"
  43.292 +	"sfst`(|x,UU|) = UU"
  43.293   (fn prems =>
  43.294  	[
  43.295  	(rtac (beta_cfun_sprod RS ssubst) 1),
  43.296  	(rtac (beta_cfun RS ssubst) 1),
  43.297 -	(rtac contX_Isfst 1),
  43.298 +	(rtac cont_Isfst 1),
  43.299  	(rtac strict_Isfst2 1)
  43.300  	]);
  43.301  
  43.302  qed_goalw "strict_ssnd" Sprod3.thy [ssnd_def] 
  43.303 -	"p=UU==>ssnd[p]=UU"
  43.304 +	"p=UU==>ssnd`p=UU"
  43.305   (fn prems =>
  43.306  	[
  43.307  	(cut_facts_tac prems 1),
  43.308  	(rtac (beta_cfun RS ssubst) 1),
  43.309 -	(rtac contX_Issnd 1),
  43.310 +	(rtac cont_Issnd 1),
  43.311  	(rtac strict_Issnd 1),
  43.312  	(rtac (inst_sprod_pcpo RS subst) 1),
  43.313  	(atac 1)
  43.314  	]);
  43.315  
  43.316  qed_goalw "strict_ssnd1" Sprod3.thy [ssnd_def,spair_def] 
  43.317 -	"ssnd[UU##y] = UU"
  43.318 +	"ssnd`(|UU,y|) = UU"
  43.319   (fn prems =>
  43.320  	[
  43.321  	(rtac (beta_cfun_sprod RS ssubst) 1),
  43.322  	(rtac (beta_cfun RS ssubst) 1),
  43.323 -	(rtac contX_Issnd 1),
  43.324 +	(rtac cont_Issnd 1),
  43.325  	(rtac strict_Issnd1 1)
  43.326  	]);
  43.327  
  43.328  qed_goalw "strict_ssnd2" Sprod3.thy [ssnd_def,spair_def] 
  43.329 -	"ssnd[x##UU] = UU"
  43.330 +	"ssnd`(|x,UU|) = UU"
  43.331   (fn prems =>
  43.332  	[
  43.333  	(rtac (beta_cfun_sprod RS ssubst) 1),
  43.334  	(rtac (beta_cfun RS ssubst) 1),
  43.335 -	(rtac contX_Issnd 1),
  43.336 +	(rtac cont_Issnd 1),
  43.337  	(rtac strict_Issnd2 1)
  43.338  	]);
  43.339  
  43.340  qed_goalw "sfst2" Sprod3.thy [sfst_def,spair_def] 
  43.341 -	"~y=UU ==>sfst[x##y]=x"
  43.342 +	"y~=UU ==>sfst`(|x,y|)=x"
  43.343   (fn prems =>
  43.344  	[
  43.345  	(cut_facts_tac prems 1),
  43.346  	(rtac (beta_cfun_sprod RS ssubst) 1),
  43.347  	(rtac (beta_cfun RS ssubst) 1),
  43.348 -	(rtac contX_Isfst 1),
  43.349 +	(rtac cont_Isfst 1),
  43.350  	(etac Isfst2 1)
  43.351  	]);
  43.352  
  43.353  qed_goalw "ssnd2" Sprod3.thy [ssnd_def,spair_def] 
  43.354 -	"~x=UU ==>ssnd[x##y]=y"
  43.355 +	"x~=UU ==>ssnd`(|x,y|)=y"
  43.356   (fn prems =>
  43.357  	[
  43.358  	(cut_facts_tac prems 1),
  43.359  	(rtac (beta_cfun_sprod RS ssubst) 1),
  43.360  	(rtac (beta_cfun RS ssubst) 1),
  43.361 -	(rtac contX_Issnd 1),
  43.362 +	(rtac cont_Issnd 1),
  43.363  	(etac Issnd2 1)
  43.364  	]);
  43.365  
  43.366  
  43.367  qed_goalw "defined_sfstssnd" Sprod3.thy [sfst_def,ssnd_def,spair_def]
  43.368 -	"~p=UU ==> ~sfst[p]=UU & ~ssnd[p]=UU"
  43.369 +	"p~=UU ==> sfst`p ~=UU & ssnd`p ~=UU"
  43.370   (fn prems =>
  43.371  	[
  43.372  	(cut_facts_tac prems 1),
  43.373  	(rtac (beta_cfun RS ssubst) 1),
  43.374 -	(rtac contX_Issnd 1),
  43.375 +	(rtac cont_Issnd 1),
  43.376  	(rtac (beta_cfun RS ssubst) 1),
  43.377 -	(rtac contX_Isfst 1),
  43.378 +	(rtac cont_Isfst 1),
  43.379  	(rtac defined_IsfstIssnd 1),
  43.380  	(rtac (inst_sprod_pcpo RS subst) 1),
  43.381  	(atac 1)
  43.382 @@ -561,31 +561,31 @@
  43.383   
  43.384  
  43.385  qed_goalw "surjective_pairing_Sprod2" Sprod3.thy 
  43.386 -	[sfst_def,ssnd_def,spair_def] "(sfst[p] ## ssnd[p]) = p"
  43.387 +	[sfst_def,ssnd_def,spair_def] "(|sfst`p , ssnd`p|) = p"
  43.388   (fn prems =>
  43.389  	[
  43.390  	(rtac (beta_cfun_sprod RS ssubst) 1),
  43.391  	(rtac (beta_cfun RS ssubst) 1),
  43.392 -	(rtac contX_Issnd 1),
  43.393 +	(rtac cont_Issnd 1),
  43.394  	(rtac (beta_cfun RS ssubst) 1),
  43.395 -	(rtac contX_Isfst 1),
  43.396 +	(rtac cont_Isfst 1),
  43.397  	(rtac (surjective_pairing_Sprod RS sym) 1)
  43.398  	]);
  43.399  
  43.400  
  43.401  qed_goalw "less_sprod5b" Sprod3.thy [sfst_def,ssnd_def,spair_def]
  43.402 - "~p1=UU ==> (p1<<p2) = (sfst[p1]<<sfst[p2] & ssnd[p1]<<ssnd[p2])"
  43.403 + "p1~=UU ==> (p1<<p2) = (sfst`p1<<sfst`p2 & ssnd`p1<<ssnd`p2)"
  43.404   (fn prems =>
  43.405  	[
  43.406  	(cut_facts_tac prems 1),
  43.407  	(rtac (beta_cfun RS ssubst) 1),
  43.408 -	(rtac contX_Issnd 1),
  43.409 +	(rtac cont_Issnd 1),
  43.410  	(rtac (beta_cfun RS ssubst) 1),
  43.411 -	(rtac contX_Issnd 1),
  43.412 +	(rtac cont_Issnd 1),
  43.413  	(rtac (beta_cfun RS ssubst) 1),
  43.414 -	(rtac contX_Isfst 1),
  43.415 +	(rtac cont_Isfst 1),
  43.416  	(rtac (beta_cfun RS ssubst) 1),
  43.417 -	(rtac contX_Isfst 1),
  43.418 +	(rtac cont_Isfst 1),
  43.419  	(rtac less_sprod3b 1),
  43.420  	(rtac (inst_sprod_pcpo RS subst) 1),
  43.421  	(atac 1)
  43.422 @@ -593,7 +593,7 @@
  43.423  
  43.424   
  43.425  qed_goalw "less_sprod5c" Sprod3.thy [sfst_def,ssnd_def,spair_def]
  43.426 - "[|xa##ya<<x##y;~xa=UU;~ya=UU;~x=UU;~y=UU|] ==>xa<<x & ya << y"
  43.427 + "[|(|xa,ya|) << (|x,y|);xa~=UU;ya~=UU;x~=UU;y~=UU|] ==>xa<<x & ya << y"
  43.428   (fn prems =>
  43.429  	[
  43.430  	(cut_facts_tac prems 1),
  43.431 @@ -606,48 +606,49 @@
  43.432  
  43.433  qed_goalw "lub_sprod2" Sprod3.thy [sfst_def,ssnd_def,spair_def]
  43.434  "[|is_chain(S)|] ==> range(S) <<| \
  43.435 -\ (lub(range(%i.sfst[S(i)])) ## lub(range(%i.ssnd[S(i)])))"
  43.436 +\ (| lub(range(%i.sfst`(S i))), lub(range(%i.ssnd`(S i))) |)"
  43.437   (fn prems =>
  43.438  	[
  43.439  	(cut_facts_tac prems 1),
  43.440  	(rtac (beta_cfun_sprod RS ssubst) 1),
  43.441  	(rtac (beta_cfun RS ext RS ssubst) 1),
  43.442 -	(rtac contX_Issnd 1),
  43.443 +	(rtac cont_Issnd 1),
  43.444  	(rtac (beta_cfun RS ext RS ssubst) 1),
  43.445 -	(rtac contX_Isfst 1),
  43.446 +	(rtac cont_Isfst 1),
  43.447  	(rtac lub_sprod 1),
  43.448  	(resolve_tac prems 1)
  43.449  	]);
  43.450  
  43.451  
  43.452  val thelub_sprod2 = (lub_sprod2 RS thelubI);
  43.453 -(* is_chain(?S1) ==> lub(range(?S1)) =                                    *) 
  43.454 -(*     (lub(range(%i. sfst[?S1(i)]))## lub(range(%i. ssnd[?S1(i)])))        *)
  43.455 -
  43.456 -
  43.457 +(*
  43.458 + "is_chain ?S1 ==>
  43.459 + lub (range ?S1) =
  43.460 + (|lub (range (%i. sfst`(?S1 i))), lub (range (%i. ssnd`(?S1 i)))|)" : thm
  43.461 +*)
  43.462  
  43.463  qed_goalw "ssplit1" Sprod3.thy [ssplit_def]
  43.464 -	"ssplit[f][UU]=UU"
  43.465 +	"ssplit`f`UU=UU"
  43.466   (fn prems =>
  43.467  	[
  43.468  	(rtac (beta_cfun RS ssubst) 1),
  43.469 -	(contX_tacR 1),
  43.470 +	(cont_tacR 1),
  43.471  	(rtac (strictify1 RS ssubst) 1),
  43.472  	(rtac refl 1)
  43.473  	]);
  43.474  
  43.475  qed_goalw "ssplit2" Sprod3.thy [ssplit_def]
  43.476 -	"[|~x=UU;~y=UU|] ==> ssplit[f][x##y]=f[x][y]"
  43.477 +	"[|x~=UU;y~=UU|] ==> ssplit`f`(|x,y|)= f`x`y"
  43.478   (fn prems =>
  43.479  	[
  43.480  	(rtac (beta_cfun RS ssubst) 1),
  43.481 -	(contX_tacR 1),
  43.482 +	(cont_tacR 1),
  43.483  	(rtac (strictify2 RS ssubst) 1),
  43.484  	(rtac defined_spair 1),
  43.485  	(resolve_tac prems 1),
  43.486  	(resolve_tac prems 1),
  43.487  	(rtac (beta_cfun RS ssubst) 1),
  43.488 -	(contX_tacR 1),
  43.489 +	(cont_tacR 1),
  43.490  	(rtac (sfst2 RS ssubst) 1),
  43.491  	(resolve_tac prems 1),
  43.492  	(rtac (ssnd2 RS ssubst) 1),
  43.493 @@ -657,11 +658,11 @@
  43.494  
  43.495  
  43.496  qed_goalw "ssplit3" Sprod3.thy [ssplit_def]
  43.497 -  "ssplit[spair][z]=z"
  43.498 +  "ssplit`spair`z=z"
  43.499   (fn prems =>
  43.500  	[
  43.501  	(rtac (beta_cfun RS ssubst) 1),
  43.502 -	(contX_tacR 1),
  43.503 +	(cont_tacR 1),
  43.504  	(res_inst_tac [("Q","z=UU")] classical2 1),
  43.505  	(hyp_subst_tac 1),
  43.506  	(rtac strictify1 1),
  43.507 @@ -669,7 +670,7 @@
  43.508  	(rtac strictify2 1),
  43.509  	(atac 1),
  43.510  	(rtac (beta_cfun RS ssubst) 1),
  43.511 -	(contX_tacR 1),
  43.512 +	(cont_tacR 1),
  43.513  	(rtac surjective_pairing_Sprod2 1)
  43.514  	]);
  43.515  
    44.1 --- a/src/HOLCF/Sprod3.thy	Thu Jun 29 16:16:24 1995 +0200
    44.2 +++ b/src/HOLCF/Sprod3.thy	Thu Jun 29 16:28:40 1995 +0200
    44.3 @@ -16,17 +16,22 @@
    44.4  	ssnd         :: "('a**'b)->'b"
    44.5  	ssplit       :: "('a->'b->'c)->('a**'b)->'c"
    44.6  
    44.7 -syntax  "@spair"     :: "'a => 'b => ('a**'b)" ("_##_" [101,100] 100)
    44.8 +syntax  
    44.9 +	"@stuple"    :: "['a, args] => 'a ** 'b"	("(1'(|_,/ _|'))")
   44.10  
   44.11 -translations "x##y" == "spair[x][y]"
   44.12 +translations
   44.13 +	"(|x, y, z|)"   == "(|x, (|y, z|)|)"
   44.14 +	"(|x, y|)"      == "spair`x`y"
   44.15  
   44.16  rules 
   44.17  
   44.18 -inst_sprod_pcpo	"(UU::'a**'b) = Ispair(UU,UU)"
   44.19 -spair_def	"spair  == (LAM x y.Ispair(x,y))"
   44.20 -sfst_def	"sfst   == (LAM p.Isfst(p))"
   44.21 -ssnd_def	"ssnd   == (LAM p.Issnd(p))"	
   44.22 -ssplit_def	"ssplit == (LAM f. strictify[LAM p.f[sfst[p]][ssnd[p]]])"
   44.23 +inst_sprod_pcpo	"(UU::'a**'b) = Ispair UU UU"
   44.24 +
   44.25 +defs
   44.26 +spair_def	"spair  == (LAM x y.Ispair x y)"
   44.27 +sfst_def	"sfst   == (LAM p.Isfst p)"
   44.28 +ssnd_def	"ssnd   == (LAM p.Issnd p)"	
   44.29 +ssplit_def	"ssplit == (LAM f. strictify`(LAM p.f`(sfst`p)`(ssnd`p)))"
   44.30  
   44.31  end
   44.32  
    45.1 --- a/src/HOLCF/Ssum0.ML	Thu Jun 29 16:16:24 1995 +0200
    45.2 +++ b/src/HOLCF/Ssum0.ML	Thu Jun 29 16:28:40 1995 +0200
    45.3 @@ -30,7 +30,7 @@
    45.4  	(rtac refl 1)
    45.5  	]);
    45.6  
    45.7 -qed_goal "inj_onto_Abs_Ssum" Ssum0.thy "inj_onto(Abs_Ssum,Ssum)"
    45.8 +qed_goal "inj_onto_Abs_Ssum" Ssum0.thy "inj_onto Abs_Ssum Ssum"
    45.9  (fn prems =>
   45.10  	[
   45.11  	(rtac inj_onto_inverseI 1),
   45.12 @@ -125,7 +125,7 @@
   45.13  	]);
   45.14  
   45.15  qed_goalw "inject_Sinl_Rep2" Ssum0.thy [Sinl_Rep_def]
   45.16 -"[|~a1=UU ; ~a2=UU ; Sinl_Rep(a1)=Sinl_Rep(a2) |] ==> a1=a2"
   45.17 +"[| a1~=UU ; a2~=UU ; Sinl_Rep(a1)=Sinl_Rep(a2) |] ==> a1=a2"
   45.18   (fn prems =>
   45.19  	[
   45.20  	(rtac ((nth_elem (2,prems)) RS fun_cong  RS fun_cong RS fun_cong 
   45.21 @@ -135,7 +135,7 @@
   45.22  	]);
   45.23  
   45.24  qed_goalw "inject_Sinr_Rep2" Ssum0.thy [Sinr_Rep_def]
   45.25 -"[|~b1=UU ; ~b2=UU ; Sinr_Rep(b1)=Sinr_Rep(b2) |] ==> b1=b2"
   45.26 +"[|b1~=UU ; b2~=UU ; Sinr_Rep(b1)=Sinr_Rep(b2) |] ==> b1=b2"
   45.27   (fn prems =>
   45.28  	[
   45.29  	(rtac ((nth_elem (2,prems)) RS fun_cong  RS fun_cong RS fun_cong 
   45.30 @@ -201,7 +201,7 @@
   45.31  	]);
   45.32  
   45.33  qed_goal "inject_Isinl_rev" Ssum0.thy  
   45.34 -"~a1=a2 ==> ~Isinl(a1) = Isinl(a2)"
   45.35 +"a1~=a2 ==> Isinl(a1) ~= Isinl(a2)"
   45.36   (fn prems =>
   45.37  	[
   45.38  	(cut_facts_tac prems 1),
   45.39 @@ -211,7 +211,7 @@
   45.40  	]);
   45.41  
   45.42  qed_goal "inject_Isinr_rev" Ssum0.thy  
   45.43 -"~b1=b2 ==> ~Isinr(b1) = Isinr(b2)"
   45.44 +"b1~=b2 ==> Isinr(b1) ~= Isinr(b2)"
   45.45   (fn prems =>
   45.46  	[
   45.47  	(cut_facts_tac prems 1),
   45.48 @@ -226,7 +226,7 @@
   45.49  (* ------------------------------------------------------------------------ *)
   45.50  
   45.51  qed_goalw "Exh_Ssum" Ssum0.thy [Isinl_def,Isinr_def]
   45.52 -	"z=Isinl(UU) | (? a. z=Isinl(a) & ~a=UU) | (? b. z=Isinr(b) & ~b=UU)"
   45.53 +	"z=Isinl(UU) | (? a. z=Isinl(a) & a~=UU) | (? b. z=Isinr(b) & b~=UU)"
   45.54   (fn prems =>
   45.55  	[
   45.56  	(rtac (rewrite_rule [Ssum_def] Rep_Ssum RS CollectE) 1),
   45.57 @@ -272,8 +272,8 @@
   45.58  
   45.59  qed_goal "IssumE" Ssum0.thy
   45.60  	"[|p=Isinl(UU) ==> Q ;\
   45.61 -\	!!x.[|p=Isinl(x); ~x=UU |] ==> Q;\
   45.62 -\	!!y.[|p=Isinr(y); ~y=UU |] ==> Q|] ==> Q"
   45.63 +\	!!x.[|p=Isinl(x); x~=UU |] ==> Q;\
   45.64 +\	!!y.[|p=Isinr(y); y~=UU |] ==> Q|] ==> Q"
   45.65   (fn prems =>
   45.66  	[
   45.67  	(rtac (Exh_Ssum RS disjE) 1),
   45.68 @@ -307,7 +307,7 @@
   45.69  (* ------------------------------------------------------------------------ *)
   45.70  
   45.71  qed_goalw "Iwhen1" Ssum0.thy [Iwhen_def]
   45.72 -	"Iwhen(f)(g)(Isinl(UU)) = UU"
   45.73 +	"Iwhen f g (Isinl UU) = UU"
   45.74   (fn prems =>
   45.75  	[
   45.76  	(rtac  select_equality 1),
   45.77 @@ -332,7 +332,7 @@
   45.78  
   45.79  
   45.80  qed_goalw "Iwhen2" Ssum0.thy [Iwhen_def]
   45.81 -	"~x=UU ==> Iwhen(f)(g)(Isinl(x)) = f[x]"
   45.82 +	"x~=UU ==> Iwhen f g (Isinl x) = f`x"
   45.83   (fn prems =>
   45.84  	[
   45.85  	(cut_facts_tac prems 1),
   45.86 @@ -358,7 +358,7 @@
   45.87  	]);
   45.88  
   45.89  qed_goalw "Iwhen3" Ssum0.thy [Iwhen_def]
   45.90 -	"~y=UU ==> Iwhen(f)(g)(Isinr(y)) = g[y]"
   45.91 +	"y~=UU ==> Iwhen f g (Isinr y) = g`y"
   45.92   (fn prems =>
   45.93  	[
   45.94  	(cut_facts_tac prems 1),
    46.1 --- a/src/HOLCF/Ssum0.thy	Thu Jun 29 16:16:24 1995 +0200
    46.2 +++ b/src/HOLCF/Ssum0.thy	Thu Jun 29 16:28:40 1995 +0200
    46.3 @@ -24,16 +24,17 @@
    46.4    Isinr		:: "'b => ('a ++ 'b)"
    46.5    Iwhen		:: "('a->'c)=>('b->'c)=>('a ++ 'b)=> 'c"
    46.6  
    46.7 -rules
    46.8 +defs
    46.9  
   46.10    Sinl_Rep_def		"Sinl_Rep == (%a.%x y p.
   46.11 -				(~a=UU --> x=a  & p))"
   46.12 +				(a~=UU --> x=a  & p))"
   46.13  
   46.14    Sinr_Rep_def		"Sinr_Rep == (%b.%x y p.
   46.15 -				(~b=UU --> y=b  & ~p))"
   46.16 +				(b~=UU --> y=b  & ~p))"
   46.17  
   46.18    Ssum_def		"Ssum =={f.(? a.f=Sinl_Rep(a))|(? b.f=Sinr_Rep(b))}"
   46.19  
   46.20 +rules
   46.21    (*faking a type definition... *)
   46.22    (* "++" is isomorphic to Ssum *)
   46.23  
   46.24 @@ -41,14 +42,14 @@
   46.25    Rep_Ssum_inverse	"Abs_Ssum(Rep_Ssum(p)) = p"	
   46.26    Abs_Ssum_inverse	"f:Ssum ==> Rep_Ssum(Abs_Ssum(f)) = f"
   46.27  
   46.28 -   (*defining the abstract constants*)
   46.29 +defs   (*defining the abstract constants*)
   46.30    Isinl_def	"Isinl(a) == Abs_Ssum(Sinl_Rep(a))"
   46.31    Isinr_def	"Isinr(b) == Abs_Ssum(Sinr_Rep(b))"
   46.32  
   46.33    Iwhen_def	"Iwhen(f)(g)(s) == @z.
   46.34  				    (s=Isinl(UU) --> z=UU)
   46.35 -			&(!a. ~a=UU & s=Isinl(a) --> z=f[a])
   46.36 -			&(!b. ~b=UU & s=Isinr(b) --> z=g[b])"  
   46.37 +			&(!a. a~=UU & s=Isinl(a) --> z=f`a)  
   46.38 +			&(!b. b~=UU & s=Isinr(b) --> z=g`b)"  
   46.39  
   46.40  end
   46.41  
    47.1 --- a/src/HOLCF/Ssum1.ML	Thu Jun 29 16:16:24 1995 +0200
    47.2 +++ b/src/HOLCF/Ssum1.ML	Thu Jun 29 16:28:40 1995 +0200
    47.3 @@ -41,7 +41,7 @@
    47.4  in
    47.5  
    47.6  val less_ssum1a = prove_goalw Ssum1.thy [less_ssum_def]
    47.7 -"[|s1=Isinl(x::'a); s2=Isinl(y::'a)|] ==> less_ssum(s1,s2) = (x << y)"
    47.8 +"[|s1=Isinl(x::'a); s2=Isinl(y::'a)|] ==> less_ssum s1 s2 = (x << y)"
    47.9   (fn prems =>
   47.10  	[
   47.11  	(cut_facts_tac prems 1),
   47.12 @@ -82,7 +82,7 @@
   47.13  
   47.14  
   47.15  val less_ssum1b = prove_goalw Ssum1.thy [less_ssum_def]
   47.16 -"[|s1=Isinr(x::'b); s2=Isinr(y::'b)|] ==> less_ssum(s1,s2) = (x << y)"
   47.17 +"[|s1=Isinr(x::'b); s2=Isinr(y::'b)|] ==> less_ssum s1 s2 = (x << y)"
   47.18   (fn prems =>
   47.19  	[
   47.20  	(cut_facts_tac prems 1),
   47.21 @@ -124,7 +124,7 @@
   47.22  
   47.23  
   47.24  val less_ssum1c = prove_goalw Ssum1.thy [less_ssum_def]
   47.25 -"[|s1=Isinl(x::'a); s2=Isinr(y::'b)|] ==> less_ssum(s1,s2) = ((x::'a) = UU)"
   47.26 +"[|s1=Isinl(x::'a); s2=Isinr(y::'b)|] ==> less_ssum s1 s2 = ((x::'a) = UU)"
   47.27   (fn prems =>
   47.28  	[
   47.29  	(cut_facts_tac prems 1),
   47.30 @@ -166,7 +166,7 @@
   47.31  
   47.32  
   47.33  val less_ssum1d = prove_goalw Ssum1.thy [less_ssum_def]
   47.34 -"[|s1=Isinr(x); s2=Isinl(y)|] ==> less_ssum(s1,s2) = (x = UU)"
   47.35 +"[|s1=Isinr(x); s2=Isinl(y)|] ==> less_ssum s1 s2 = (x = UU)"
   47.36   (fn prems =>
   47.37  	[
   47.38  	(cut_facts_tac prems 1),
   47.39 @@ -213,7 +213,7 @@
   47.40  (* ------------------------------------------------------------------------ *)
   47.41  
   47.42  qed_goal "less_ssum2a" Ssum1.thy 
   47.43 -	"less_ssum(Isinl(x),Isinl(y)) = (x << y)"
   47.44 +	"less_ssum (Isinl x) (Isinl y) = (x << y)"
   47.45   (fn prems =>
   47.46  	[
   47.47  	(rtac less_ssum1a 1),
   47.48 @@ -222,7 +222,7 @@
   47.49  	]);
   47.50  
   47.51  qed_goal "less_ssum2b" Ssum1.thy 
   47.52 -	"less_ssum(Isinr(x),Isinr(y)) = (x << y)"
   47.53 +	"less_ssum (Isinr x) (Isinr y) = (x << y)"
   47.54   (fn prems =>
   47.55  	[
   47.56  	(rtac less_ssum1b 1),
   47.57 @@ -231,7 +231,7 @@
   47.58  	]);
   47.59  
   47.60  qed_goal "less_ssum2c" Ssum1.thy 
   47.61 -	"less_ssum(Isinl(x),Isinr(y)) = (x = UU)"
   47.62 +	"less_ssum (Isinl x) (Isinr y) = (x = UU)"
   47.63   (fn prems =>
   47.64  	[
   47.65  	(rtac less_ssum1c 1),
   47.66 @@ -240,7 +240,7 @@
   47.67  	]);
   47.68  
   47.69  qed_goal "less_ssum2d" Ssum1.thy 
   47.70 -	"less_ssum(Isinr(x),Isinl(y)) = (x = UU)"
   47.71 +	"less_ssum (Isinr x) (Isinl y) = (x = UU)"
   47.72   (fn prems =>
   47.73  	[
   47.74  	(rtac less_ssum1d 1),
   47.75 @@ -253,7 +253,7 @@
   47.76  (* less_ssum is a partial order on ++                                     *)
   47.77  (* ------------------------------------------------------------------------ *)
   47.78  
   47.79 -qed_goal "refl_less_ssum" Ssum1.thy "less_ssum(p,p)"
   47.80 +qed_goal "refl_less_ssum" Ssum1.thy "less_ssum p p"
   47.81   (fn prems =>
   47.82  	[
   47.83  	(res_inst_tac [("p","p")] IssumE2 1),
   47.84 @@ -266,7 +266,7 @@
   47.85  	]);
   47.86  
   47.87  qed_goal "antisym_less_ssum" Ssum1.thy 
   47.88 - "[|less_ssum(p1,p2);less_ssum(p2,p1)|] ==> p1=p2"
   47.89 + "[|less_ssum p1 p2; less_ssum p2 p1|] ==> p1=p2"
   47.90   (fn prems =>
   47.91  	[
   47.92  	(cut_facts_tac prems 1),
   47.93 @@ -296,7 +296,7 @@
   47.94  	]);
   47.95  
   47.96  qed_goal "trans_less_ssum" Ssum1.thy 
   47.97 - "[|less_ssum(p1,p2);less_ssum(p2,p3)|] ==> less_ssum(p1,p3)"
   47.98 + "[|less_ssum p1 p2; less_ssum p2 p3|] ==> less_ssum p1 p3"
   47.99   (fn prems =>
  47.100  	[
  47.101  	(cut_facts_tac prems 1),
    48.1 --- a/src/HOLCF/Ssum1.thy	Thu Jun 29 16:16:24 1995 +0200
    48.2 +++ b/src/HOLCF/Ssum1.thy	Thu Jun 29 16:28:40 1995 +0200
    48.3 @@ -14,7 +14,7 @@
    48.4  
    48.5  rules
    48.6  
    48.7 -  less_ssum_def "less_ssum(s1,s2) == (@z.
    48.8 +  less_ssum_def "less_ssum s1 s2 == (@z.
    48.9  	 (! u x.s1=Isinl(u) & s2=Isinl(x) --> z = (u << x))
   48.10  	&(! v y.s1=Isinr(v) & s2=Isinr(y) --> z = (v << y))
   48.11  	&(! u y.s1=Isinl(u) & s2=Isinr(y) --> z = (u = UU))
    49.1 --- a/src/HOLCF/Ssum2.ML	Thu Jun 29 16:16:24 1995 +0200
    49.2 +++ b/src/HOLCF/Ssum2.ML	Thu Jun 29 16:28:40 1995 +0200
    49.3 @@ -166,7 +166,7 @@
    49.4  
    49.5  
    49.6  qed_goal "ssum_lemma1" Ssum2.thy 
    49.7 -"[|~(!i.? x.Y(i::nat)=Isinl(x))|] ==> (? i.! x.~Y(i)=Isinl(x))"
    49.8 +"[|~(!i.? x.Y(i::nat)=Isinl(x))|] ==> (? i.! x.Y(i)~=Isinl(x))"
    49.9   (fn prems =>
   49.10  	[
   49.11  	(cut_facts_tac prems 1),
   49.12 @@ -174,8 +174,8 @@
   49.13  	]);
   49.14  
   49.15  qed_goal "ssum_lemma2" Ssum2.thy 
   49.16 -"[|(? i.!x.~(Y::nat => 'a++'b)(i::nat)=Isinl(x::'a))|] ==>\
   49.17 -\   (? i y. (Y::nat => 'a++'b)(i::nat)=Isinr(y::'b) & ~y=UU)"
   49.18 +"[|(? i.!x.(Y::nat => 'a++'b)(i::nat)~=Isinl(x::'a))|] ==>\
   49.19 +\   (? i y. (Y::nat => 'a++'b)(i::nat)=Isinr(y::'b) & y~=UU)"
   49.20   (fn prems =>
   49.21  	[
   49.22  	(cut_facts_tac prems 1),
   49.23 @@ -271,7 +271,7 @@
   49.24  (* ------------------------------------------------------------------------ *)
   49.25  
   49.26  qed_goal "ssum_lemma7" Ssum2.thy 
   49.27 -"[|Isinl(x) << z; ~x=UU|] ==> ? y.z=Isinl(y) & ~y=UU"
   49.28 +"[|Isinl(x) << z; x~=UU|] ==> ? y.z=Isinl(y) & y~=UU"
   49.29   (fn prems =>
   49.30  	[
   49.31  	(cut_facts_tac prems 1),
   49.32 @@ -289,7 +289,7 @@
   49.33  	]);
   49.34  
   49.35  qed_goal "ssum_lemma8" Ssum2.thy 
   49.36 -"[|Isinr(x) << z; ~x=UU|] ==> ? y.z=Isinr(y) & ~y=UU"
   49.37 +"[|Isinr(x) << z; x~=UU|] ==> ? y.z=Isinr(y) & y~=UU"
   49.38   (fn prems =>
   49.39  	[
   49.40  	(cut_facts_tac prems 1),
   49.41 @@ -311,7 +311,7 @@
   49.42  qed_goal "lub_ssum1a" Ssum2.thy 
   49.43  "[|is_chain(Y);(!i.? x.Y(i)=Isinl(x))|] ==>\
   49.44  \ range(Y) <<|\
   49.45 -\ Isinl(lub(range(%i.(Iwhen (LAM x.x) (LAM y.UU))(Y(i)))))"
   49.46 +\ Isinl(lub(range(%i.(Iwhen (LAM x.x) (LAM y.UU))(Y i))))"
   49.47   (fn prems =>
   49.48  	[
   49.49  	(cut_facts_tac prems 1),
   49.50 @@ -352,7 +352,7 @@
   49.51  qed_goal "lub_ssum1b" Ssum2.thy 
   49.52  "[|is_chain(Y);(!i.? x.Y(i)=Isinr(x))|] ==>\
   49.53  \ range(Y) <<|\
   49.54 -\ Isinr(lub(range(%i.(Iwhen (LAM y.UU) (LAM x.x))(Y(i)))))"
   49.55 +\ Isinr(lub(range(%i.(Iwhen (LAM y.UU) (LAM x.x))(Y i))))"
   49.56   (fn prems =>
   49.57  	[
   49.58  	(cut_facts_tac prems 1),
   49.59 @@ -391,12 +391,18 @@
   49.60  
   49.61  
   49.62  val thelub_ssum1a = lub_ssum1a RS thelubI;
   49.63 -(* [| is_chain(?Y1); ! i. ? x. ?Y1(i) = Isinl(x) |] ==>                     *)
   49.64 -(* lub(range(?Y1)) = Isinl(lub(range(%i. Iwhen(LAM x. x,LAM y. UU,?Y1(i)))))*)
   49.65 +(*
   49.66 +[| is_chain ?Y1; ! i. ? x. ?Y1 i = Isinl x |] ==>
   49.67 + lub (range ?Y1) = Isinl
   49.68 + (lub (range (%i. Iwhen (LAM x. x) (LAM y. UU) (?Y1 i))))
   49.69 +*)
   49.70  
   49.71  val thelub_ssum1b = lub_ssum1b RS thelubI;
   49.72 -(* [| is_chain(?Y1); ! i. ? x. ?Y1(i) = Isinr(x) |] ==>                     *)
   49.73 -(* lub(range(?Y1)) = Isinr(lub(range(%i. Iwhen(LAM y. UU,LAM x. x,?Y1(i)))))*)
   49.74 +(*
   49.75 +[| is_chain ?Y1; ! i. ? x. ?Y1 i = Isinr x |] ==>
   49.76 + lub (range ?Y1) = Isinr
   49.77 + (lub (range (%i. Iwhen (LAM y. UU) (LAM x. x) (?Y1 i))))
   49.78 +*)
   49.79  
   49.80  qed_goal "cpo_ssum" Ssum2.thy 
   49.81  	"is_chain(Y::nat=>'a ++'b) ==> ? x.range(Y) <<|x"
   49.82 @@ -412,3 +418,4 @@
   49.83  	(etac lub_ssum1b 1),
   49.84  	(atac 1)
   49.85  	]);
   49.86 +
    50.1 --- a/src/HOLCF/Ssum3.ML	Thu Jun 29 16:16:24 1995 +0200
    50.2 +++ b/src/HOLCF/Ssum3.ML	Thu Jun 29 16:28:40 1995 +0200
    50.3 @@ -76,18 +76,18 @@
    50.4  	(asm_simp_tac Ssum_ss 1)
    50.5  	]);
    50.6  
    50.7 -qed_goal "contX_Isinl" Ssum3.thy "contX(Isinl)"
    50.8 +qed_goal "cont_Isinl" Ssum3.thy "cont(Isinl)"
    50.9   (fn prems =>
   50.10  	[
   50.11 -	(rtac monocontlub2contX 1),
   50.12 +	(rtac monocontlub2cont 1),
   50.13  	(rtac monofun_Isinl 1),
   50.14  	(rtac contlub_Isinl 1)
   50.15  	]);
   50.16  
   50.17 -qed_goal "contX_Isinr" Ssum3.thy "contX(Isinr)"
   50.18 +qed_goal "cont_Isinr" Ssum3.thy "cont(Isinr)"
   50.19   (fn prems =>
   50.20  	[
   50.21 -	(rtac monocontlub2contX 1),
   50.22 +	(rtac monocontlub2cont 1),
   50.23  	(rtac monofun_Isinr 1),
   50.24  	(rtac contlub_Isinr 1)
   50.25  	]);
   50.26 @@ -188,7 +188,7 @@
   50.27  
   50.28  qed_goal "ssum_lemma11" Ssum3.thy 
   50.29  "[| is_chain(Y); lub(range(Y)) = Isinl(UU) |] ==>\
   50.30 -\   Iwhen(f,g,lub(range(Y))) = lub(range(%i. Iwhen(f,g,Y(i))))"
   50.31 +\   Iwhen f g (lub(range Y)) = lub(range(%i. Iwhen f g (Y i)))"
   50.32   (fn prems =>
   50.33  	[
   50.34  	(cut_facts_tac prems 1),
   50.35 @@ -204,8 +204,8 @@
   50.36  	]);
   50.37  
   50.38  qed_goal "ssum_lemma12" Ssum3.thy 
   50.39 -"[| is_chain(Y); lub(range(Y)) = Isinl(x); ~ x = UU |] ==>\
   50.40 -\   Iwhen(f,g,lub(range(Y))) = lub(range(%i. Iwhen(f,g,Y(i))))"
   50.41 +"[| is_chain(Y); lub(range(Y)) = Isinl(x); x ~= UU |] ==>\
   50.42 +\   Iwhen f g (lub(range Y)) = lub(range(%i. Iwhen f g (Y i)))"
   50.43   (fn prems =>
   50.44  	[
   50.45  	(cut_facts_tac prems 1),
   50.46 @@ -263,8 +263,8 @@
   50.47  
   50.48  
   50.49  qed_goal "ssum_lemma13" Ssum3.thy 
   50.50 -"[| is_chain(Y); lub(range(Y)) = Isinr(x); ~ x = UU |] ==>\
   50.51 -\   Iwhen(f,g,lub(range(Y))) = lub(range(%i. Iwhen(f,g,Y(i))))"
   50.52 +"[| is_chain(Y); lub(range(Y)) = Isinr(x); x ~= UU |] ==>\
   50.53 +\   Iwhen f g (lub(range Y)) = lub(range(%i. Iwhen f g (Y i)))"
   50.54   (fn prems =>
   50.55  	[
   50.56  	(cut_facts_tac prems 1),
   50.57 @@ -342,26 +342,26 @@
   50.58  	(atac 1)
   50.59  	]);
   50.60  
   50.61 -qed_goal "contX_Iwhen1" Ssum3.thy "contX(Iwhen)"
   50.62 +qed_goal "cont_Iwhen1" Ssum3.thy "cont(Iwhen)"
   50.63   (fn prems =>
   50.64  	[
   50.65 -	(rtac monocontlub2contX 1),
   50.66 +	(rtac monocontlub2cont 1),
   50.67  	(rtac monofun_Iwhen1 1),
   50.68  	(rtac contlub_Iwhen1 1)
   50.69  	]);
   50.70  
   50.71 -qed_goal "contX_Iwhen2" Ssum3.thy "contX(Iwhen(f))"
   50.72 +qed_goal "cont_Iwhen2" Ssum3.thy "cont(Iwhen(f))"
   50.73   (fn prems =>
   50.74  	[
   50.75 -	(rtac monocontlub2contX 1),
   50.76 +	(rtac monocontlub2cont 1),
   50.77  	(rtac monofun_Iwhen2 1),
   50.78  	(rtac contlub_Iwhen2 1)
   50.79  	]);
   50.80  
   50.81 -qed_goal "contX_Iwhen3" Ssum3.thy "contX(Iwhen(f)(g))"
   50.82 +qed_goal "cont_Iwhen3" Ssum3.thy "cont(Iwhen(f)(g))"
   50.83   (fn prems =>
   50.84  	[
   50.85 -	(rtac monocontlub2contX 1),
   50.86 +	(rtac monocontlub2cont 1),
   50.87  	(rtac monofun_Iwhen3 1),
   50.88  	(rtac contlub_Iwhen3 1)
   50.89  	]);
   50.90 @@ -370,56 +370,56 @@
   50.91  (* continuous versions of lemmas for 'a ++ 'b                               *)
   50.92  (* ------------------------------------------------------------------------ *)
   50.93  
   50.94 -qed_goalw "strict_sinl" Ssum3.thy [sinl_def] "sinl[UU]=UU"
   50.95 +qed_goalw "strict_sinl" Ssum3.thy [sinl_def] "sinl`UU =UU"
   50.96   (fn prems =>
   50.97  	[
   50.98 -	(simp_tac (Ssum_ss addsimps [contX_Isinl]) 1),
   50.99 +	(simp_tac (Ssum_ss addsimps [cont_Isinl]) 1),
  50.100  	(rtac (inst_ssum_pcpo RS sym) 1)
  50.101  	]);
  50.102  
  50.103 -qed_goalw "strict_sinr" Ssum3.thy [sinr_def] "sinr[UU]=UU"
  50.104 +qed_goalw "strict_sinr" Ssum3.thy [sinr_def] "sinr`UU=UU"
  50.105   (fn prems =>
  50.106  	[
  50.107 -	(simp_tac (Ssum_ss addsimps [contX_Isinr]) 1),
  50.108 +	(simp_tac (Ssum_ss addsimps [cont_Isinr]) 1),
  50.109  	(rtac (inst_ssum_pcpo RS sym) 1)
  50.110  	]);
  50.111  
  50.112  qed_goalw "noteq_sinlsinr" Ssum3.thy [sinl_def,sinr_def] 
  50.113 -	"sinl[a]=sinr[b] ==> a=UU & b=UU"
  50.114 +	"sinl`a=sinr`b ==> a=UU & b=UU"
  50.115   (fn prems =>
  50.116  	[
  50.117  	(cut_facts_tac prems 1),
  50.118  	(rtac noteq_IsinlIsinr 1),
  50.119  	(etac box_equals 1),
  50.120 -	(asm_simp_tac (Ssum_ss addsimps [contX_Isinr,contX_Isinl]) 1),
  50.121 -	(asm_simp_tac (Ssum_ss addsimps [contX_Isinr,contX_Isinl]) 1)
  50.122 +	(asm_simp_tac (Ssum_ss addsimps [cont_Isinr,cont_Isinl]) 1),
  50.123 +	(asm_simp_tac (Ssum_ss addsimps [cont_Isinr,cont_Isinl]) 1)
  50.124  	]);
  50.125  
  50.126  qed_goalw "inject_sinl" Ssum3.thy [sinl_def,sinr_def] 
  50.127 -	"sinl[a1]=sinl[a2]==> a1=a2"
  50.128 +	"sinl`a1=sinl`a2==> a1=a2"
  50.129   (fn prems =>
  50.130  	[
  50.131  	(cut_facts_tac prems 1),
  50.132  	(rtac inject_Isinl 1),
  50.133  	(etac box_equals 1),
  50.134 -	(asm_simp_tac (Ssum_ss addsimps [contX_Isinr,contX_Isinl]) 1),
  50.135 -	(asm_simp_tac (Ssum_ss addsimps [contX_Isinr,contX_Isinl]) 1)
  50.136 +	(asm_simp_tac (Ssum_ss addsimps [cont_Isinr,cont_Isinl]) 1),
  50.137 +	(asm_simp_tac (Ssum_ss addsimps [cont_Isinr,cont_Isinl]) 1)
  50.138  	]);
  50.139  
  50.140  qed_goalw "inject_sinr" Ssum3.thy [sinl_def,sinr_def] 
  50.141 -	"sinr[a1]=sinr[a2]==> a1=a2"
  50.142 +	"sinr`a1=sinr`a2==> a1=a2"
  50.143   (fn prems =>
  50.144  	[
  50.145  	(cut_facts_tac prems 1),
  50.146  	(rtac inject_Isinr 1),
  50.147  	(etac box_equals 1),
  50.148 -	(asm_simp_tac (Ssum_ss addsimps [contX_Isinr,contX_Isinl]) 1),
  50.149 -	(asm_simp_tac (Ssum_ss addsimps [contX_Isinr,contX_Isinl]) 1)
  50.150 +	(asm_simp_tac (Ssum_ss addsimps [cont_Isinr,cont_Isinl]) 1),
  50.151 +	(asm_simp_tac (Ssum_ss addsimps [cont_Isinr,cont_Isinl]) 1)
  50.152  	]);
  50.153  
  50.154  
  50.155  qed_goal "defined_sinl" Ssum3.thy  
  50.156 -	"~x=UU ==> ~sinl[x]=UU"
  50.157 +	"x~=UU ==> sinl`x ~= UU"
  50.158   (fn prems =>
  50.159  	[
  50.160  	(cut_facts_tac prems 1),
  50.161 @@ -430,7 +430,7 @@
  50.162  	]);
  50.163  
  50.164  qed_goal "defined_sinr" Ssum3.thy  
  50.165 -	"~x=UU ==> ~sinr[x]=UU"
  50.166 +	"x~=UU ==> sinr`x ~= UU"
  50.167   (fn prems =>
  50.168  	[
  50.169  	(cut_facts_tac prems 1),
  50.170 @@ -441,10 +441,10 @@
  50.171  	]);
  50.172  
  50.173  qed_goalw "Exh_Ssum1" Ssum3.thy [sinl_def,sinr_def] 
  50.174 -	"z=UU | (? a. z=sinl[a] & ~a=UU) | (? b. z=sinr[b] & ~b=UU)"
  50.175 +	"z=UU | (? a. z=sinl`a & a~=UU) | (? b. z=sinr`b & b~=UU)"
  50.176   (fn prems =>
  50.177  	[
  50.178 -	(asm_simp_tac (Ssum_ss addsimps [contX_Isinr,contX_Isinl]) 1),
  50.179 +	(asm_simp_tac (Ssum_ss addsimps [cont_Isinr,cont_Isinl]) 1),
  50.180  	(rtac (inst_ssum_pcpo RS ssubst) 1),
  50.181  	(rtac Exh_Ssum 1)
  50.182  	]);
  50.183 @@ -452,8 +452,8 @@
  50.184  
  50.185  qed_goalw "ssumE" Ssum3.thy [sinl_def,sinr_def] 
  50.186  	"[|p=UU ==> Q ;\
  50.187 -\	!!x.[|p=sinl[x]; ~x=UU |] ==> Q;\
  50.188 -\	!!y.[|p=sinr[y]; ~y=UU |] ==> Q|] ==> Q"
  50.189 +\	!!x.[|p=sinl`x; x~=UU |] ==> Q;\
  50.190 +\	!!y.[|p=sinr`y; y~=UU |] ==> Q|] ==> Q"
  50.191   (fn prems =>
  50.192  	[
  50.193  	(rtac IssumE 1),
  50.194 @@ -462,165 +462,165 @@
  50.195  	(atac 1),
  50.196  	(resolve_tac prems 1),
  50.197  	(atac 2),
  50.198 -	(asm_simp_tac (Ssum_ss addsimps [contX_Isinr,contX_Isinl]) 1),
  50.199 +	(asm_simp_tac (Ssum_ss addsimps [cont_Isinr,cont_Isinl]) 1),
  50.200  	(resolve_tac prems 1),
  50.201  	(atac 2),
  50.202 -	(asm_simp_tac (Ssum_ss addsimps [contX_Isinr,contX_Isinl]) 1)
  50.203 +	(asm_simp_tac (Ssum_ss addsimps [cont_Isinr,cont_Isinl]) 1)
  50.204  	]);
  50.205  
  50.206  
  50.207  qed_goalw "ssumE2" Ssum3.thy [sinl_def,sinr_def] 
  50.208 -      "[|!!x.[|p=sinl[x]|] ==> Q;\
  50.209 -\	!!y.[|p=sinr[y]|] ==> Q|] ==> Q"
  50.210 +      "[|!!x.[|p=sinl`x|] ==> Q;\
  50.211 +\	 !!y.[|p=sinr`y|] ==> Q|] ==> Q"
  50.212   (fn prems =>
  50.213  	[
  50.214  	(rtac IssumE2 1),
  50.215  	(resolve_tac prems 1),
  50.216  	(rtac (beta_cfun RS ssubst) 1),
  50.217 -	(rtac contX_Isinl 1),
  50.218 +	(rtac cont_Isinl 1),
  50.219  	(atac 1),
  50.220  	(resolve_tac prems 1),
  50.221  	(rtac (beta_cfun RS ssubst) 1),
  50.222 -	(rtac contX_Isinr 1),
  50.223 +	(rtac cont_Isinr 1),
  50.224  	(atac 1)
  50.225  	]);
  50.226  
  50.227 -qed_goalw "when1" Ssum3.thy [when_def,sinl_def,sinr_def] 
  50.228 -	"when[f][g][UU] = UU"
  50.229 +qed_goalw "sswhen1" Ssum3.thy [sswhen_def,sinl_def,sinr_def] 
  50.230 +	"sswhen`f`g`UU = UU"
  50.231   (fn prems =>
  50.232  	[
  50.233  	(rtac (inst_ssum_pcpo RS ssubst) 1),
  50.234  	(rtac (beta_cfun RS ssubst) 1),
  50.235 -	(REPEAT (resolve_tac (contX_lemmas @ [contX_Iwhen1,contX_Iwhen2,
  50.236 -		contX_Iwhen3,contX2contX_CF1L]) 1)),
  50.237 +	(REPEAT (resolve_tac (cont_lemmas @ [cont_Iwhen1,cont_Iwhen2,
  50.238 +		cont_Iwhen3,cont2cont_CF1L]) 1)),
  50.239  	(rtac (beta_cfun RS ssubst) 1),
  50.240 -	(REPEAT (resolve_tac (contX_lemmas @ [contX_Iwhen1,contX_Iwhen2,
  50.241 -		contX_Iwhen3,contX2contX_CF1L]) 1)),
  50.242 +	(REPEAT (resolve_tac (cont_lemmas @ [cont_Iwhen1,cont_Iwhen2,
  50.243 +		cont_Iwhen3,cont2cont_CF1L]) 1)),
  50.244  	(rtac (beta_cfun RS ssubst) 1),
  50.245 -	(REPEAT (resolve_tac (contX_lemmas @ [contX_Iwhen1,contX_Iwhen2,
  50.246 -		contX_Iwhen3,contX2contX_CF1L]) 1)),
  50.247 +	(REPEAT (resolve_tac (cont_lemmas @ [cont_Iwhen1,cont_Iwhen2,
  50.248 +		cont_Iwhen3,cont2cont_CF1L]) 1)),
  50.249  	(simp_tac Ssum_ss  1)
  50.250  	]);
  50.251  
  50.252 -qed_goalw "when2" Ssum3.thy [when_def,sinl_def,sinr_def] 
  50.253 -	"~x=UU==>when[f][g][sinl[x]] = f[x]"
  50.254 +qed_goalw "sswhen2" Ssum3.thy [sswhen_def,sinl_def,sinr_def] 
  50.255 +	"x~=UU==> sswhen`f`g`(sinl`x) = f`x"
  50.256   (fn prems =>
  50.257  	[
  50.258  	(cut_facts_tac prems 1),
  50.259  	(rtac (beta_cfun RS ssubst) 1),
  50.260 -	(REPEAT (resolve_tac (contX_lemmas @ [contX_Iwhen1,contX_Iwhen2,
  50.261 -		contX_Iwhen3,contX_Isinl,contX_Isinr,contX2contX_CF1L]) 1)),
  50.262 +	(REPEAT (resolve_tac (cont_lemmas @ [cont_Iwhen1,cont_Iwhen2,
  50.263 +		cont_Iwhen3,cont_Isinl,cont_Isinr,cont2cont_CF1L]) 1)),
  50.264  	(rtac (beta_cfun RS ssubst) 1),
  50.265 -	(REPEAT (resolve_tac (contX_lemmas @ [contX_Iwhen1,contX_Iwhen2,
  50.266 -		contX_Iwhen3,contX_Isinl,contX_Isinr,contX2contX_CF1L]) 1)),
  50.267 +	(REPEAT (resolve_tac (cont_lemmas @ [cont_Iwhen1,cont_Iwhen2,
  50.268 +		cont_Iwhen3,cont_Isinl,cont_Isinr,cont2cont_CF1L]) 1)),
  50.269  	(rtac (beta_cfun RS ssubst) 1),
  50.270 -	(REPEAT (resolve_tac (contX_lemmas @ [contX_Iwhen1,contX_Iwhen2,
  50.271 -		contX_Iwhen3,contX_Isinl,contX_Isinr,contX2contX_CF1L]) 1)),
  50.272 +	(REPEAT (resolve_tac (cont_lemmas @ [cont_Iwhen1,cont_Iwhen2,
  50.273 +		cont_Iwhen3,cont_Isinl,cont_Isinr,cont2cont_CF1L]) 1)),
  50.274  	(rtac (beta_cfun RS ssubst) 1),
  50.275 -	(REPEAT (resolve_tac (contX_lemmas @ [contX_Iwhen1,contX_Iwhen2,
  50.276 -		contX_Iwhen3,contX_Isinl,contX_Isinr,contX2contX_CF1L]) 1)),
  50.277 +	(REPEAT (resolve_tac (cont_lemmas @ [cont_Iwhen1,cont_Iwhen2,
  50.278 +		cont_Iwhen3,cont_Isinl,cont_Isinr,cont2cont_CF1L]) 1)),
  50.279  	(asm_simp_tac Ssum_ss  1)
  50.280  	]);
  50.281  
  50.282  
  50.283  
  50.284 -qed_goalw "when3" Ssum3.thy [when_def,sinl_def,sinr_def] 
  50.285 -	"~x=UU==>when[f][g][sinr[x]] = g[x]"
  50.286 +qed_goalw "sswhen3" Ssum3.thy [sswhen_def,sinl_def,sinr_def] 
  50.287 +	"x~=UU==> sswhen`f`g`(sinr`x) = g`x"
  50.288   (fn prems =>
  50.289  	[
  50.290  	(cut_facts_tac prems 1),
  50.291  	(rtac (beta_cfun RS ssubst) 1),
  50.292 -	(REPEAT (resolve_tac (contX_lemmas @ [contX_Iwhen1,contX_Iwhen2,
  50.293 -		contX_Iwhen3,contX_Isinl,contX_Isinr,contX2contX_CF1L]) 1)),
  50.294 +	(REPEAT (resolve_tac (cont_lemmas @ [cont_Iwhen1,cont_Iwhen2,
  50.295 +		cont_Iwhen3,cont_Isinl,cont_Isinr,cont2cont_CF1L]) 1)),
  50.296  	(rtac (beta_cfun RS ssubst) 1),
  50.297 -	(REPEAT (resolve_tac (contX_lemmas @ [contX_Iwhen1,contX_Iwhen2,
  50.298 -		contX_Iwhen3,contX_Isinl,contX_Isinr,contX2contX_CF1L]) 1)),
  50.299 +	(REPEAT (resolve_tac (cont_lemmas @ [cont_Iwhen1,cont_Iwhen2,
  50.300 +		cont_Iwhen3,cont_Isinl,cont_Isinr,cont2cont_CF1L]) 1)),
  50.301  	(rtac (beta_cfun RS ssubst) 1),
  50.302 -	(REPEAT (resolve_tac (contX_lemmas @ [contX_Iwhen1,contX_Iwhen2,
  50.303 -		contX_Iwhen3,contX_Isinl,contX_Isinr,contX2contX_CF1L]) 1)),
  50.304 +	(REPEAT (resolve_tac (cont_lemmas @ [cont_Iwhen1,cont_Iwhen2,
  50.305 +		cont_Iwhen3,cont_Isinl,cont_Isinr,cont2cont_CF1L]) 1)),
  50.306  	(rtac (beta_cfun RS ssubst) 1),
  50.307 -	(REPEAT (resolve_tac (contX_lemmas @ [contX_Iwhen1,contX_Iwhen2,
  50.308 -		contX_Iwhen3,contX_Isinl,contX_Isinr,contX2contX_CF1L]) 1)),
  50.309 +	(REPEAT (resolve_tac (cont_lemmas @ [cont_Iwhen1,cont_Iwhen2,
  50.310 +		cont_Iwhen3,cont_Isinl,cont_Isinr,cont2cont_CF1L]) 1)),
  50.311  	(asm_simp_tac Ssum_ss  1)
  50.312  	]);
  50.313  
  50.314  
  50.315  qed_goalw "less_ssum4a" Ssum3.thy [sinl_def,sinr_def] 
  50.316 -	"(sinl[x] << sinl[y]) = (x << y)"
  50.317 +	"(sinl`x << sinl`y) = (x << y)"
  50.318   (fn prems =>
  50.319  	[
  50.320  	(rtac (beta_cfun RS ssubst) 1),
  50.321 -	(REPEAT (resolve_tac (contX_lemmas @ [contX_Iwhen1,contX_Iwhen2,
  50.322 -		contX_Iwhen3,contX_Isinl,contX_Isinr,contX2contX_CF1L]) 1)),
  50.323 +	(REPEAT (resolve_tac (cont_lemmas @ [cont_Iwhen1,cont_Iwhen2,
  50.324 +		cont_Iwhen3,cont_Isinl,cont_Isinr,cont2cont_CF1L]) 1)),
  50.325  	(rtac (beta_cfun RS ssubst) 1),
  50.326 -	(REPEAT (resolve_tac (contX_lemmas @ [contX_Iwhen1,contX_Iwhen2,
  50.327 -		contX_Iwhen3,contX_Isinl,contX_Isinr,contX2contX_CF1L]) 1)),
  50.328 +	(REPEAT (resolve_tac (cont_lemmas @ [cont_Iwhen1,cont_Iwhen2,
  50.329 +		cont_Iwhen3,cont_Isinl,cont_Isinr,cont2cont_CF1L]) 1)),
  50.330  	(rtac less_ssum3a 1)
  50.331  	]);
  50.332  
  50.333  qed_goalw "less_ssum4b" Ssum3.thy [sinl_def,sinr_def] 
  50.334 -	"(sinr[x] << sinr[y]) = (x << y)"
  50.335 +	"(sinr`x << sinr`y) = (x << y)"
  50.336   (fn prems =>
  50.337  	[
  50.338  	(rtac (beta_cfun RS ssubst) 1),
  50.339 -	(REPEAT (resolve_tac (contX_lemmas @ [contX_Iwhen1,contX_Iwhen2,
  50.340 -		contX_Iwhen3,contX_Isinl,contX_Isinr,contX2contX_CF1L]) 1)),
  50.341 +	(REPEAT (resolve_tac (cont_lemmas @ [cont_Iwhen1,cont_Iwhen2,
  50.342 +		cont_Iwhen3,cont_Isinl,cont_Isinr,cont2cont_CF1L]) 1)),
  50.343  	(rtac (beta_cfun RS ssubst) 1),
  50.344 -	(REPEAT (resolve_tac (contX_lemmas @ [contX_Iwhen1,contX_Iwhen2,
  50.345 -		contX_Iwhen3,contX_Isinl,contX_Isinr,contX2contX_CF1L]) 1)),
  50.346 +	(REPEAT (resolve_tac (cont_lemmas @ [cont_Iwhen1,cont_Iwhen2,
  50.347 +		cont_Iwhen3,cont_Isinl,cont_Isinr,cont2cont_CF1L]) 1)),
  50.348  	(rtac less_ssum3b 1)
  50.349  	]);
  50.350  
  50.351  qed_goalw "less_ssum4c" Ssum3.thy [sinl_def,sinr_def] 
  50.352 -	"(sinl[x] << sinr[y]) = (x = UU)"
  50.353 +	"(sinl`x << sinr`y) = (x = UU)"
  50.354   (fn prems =>
  50.355  	[
  50.356  	(rtac (beta_cfun RS ssubst) 1),
  50.357 -	(REPEAT (resolve_tac (contX_lemmas @ [contX_Iwhen1,contX_Iwhen2,
  50.358 -		contX_Iwhen3,contX_Isinl,contX_Isinr,contX2contX_CF1L]) 1)),
  50.359 +	(REPEAT (resolve_tac (cont_lemmas @ [cont_Iwhen1,cont_Iwhen2,
  50.360 +		cont_Iwhen3,cont_Isinl,cont_Isinr,cont2cont_CF1L]) 1)),
  50.361  	(rtac (beta_cfun RS ssubst) 1),
  50.362 -	(REPEAT (resolve_tac (contX_lemmas @ [contX_Iwhen1,contX_Iwhen2,
  50.363 -		contX_Iwhen3,contX_Isinl,contX_Isinr,contX2contX_CF1L]) 1)),
  50.364 +	(REPEAT (resolve_tac (cont_lemmas @ [cont_Iwhen1,cont_Iwhen2,
  50.365 +		cont_Iwhen3,cont_Isinl,cont_Isinr,cont2cont_CF1L]) 1)),
  50.366  	(rtac less_ssum3c 1)
  50.367  	]);
  50.368  
  50.369  qed_goalw "less_ssum4d" Ssum3.thy [sinl_def,sinr_def] 
  50.370 -	"(sinr[x] << sinl[y]) = (x = UU)"
  50.371 +	"(sinr`x << sinl`y) = (x = UU)"
  50.372   (fn prems =>
  50.373  	[
  50.374  	(rtac (beta_cfun RS ssubst) 1),
  50.375 -	(REPEAT (resolve_tac (contX_lemmas @ [contX_Iwhen1,contX_Iwhen2,
  50.376 -		contX_Iwhen3,contX_Isinl,contX_Isinr,contX2contX_CF1L]) 1)),
  50.377 +	(REPEAT (resolve_tac (cont_lemmas @ [cont_Iwhen1,cont_Iwhen2,
  50.378 +		cont_Iwhen3,cont_Isinl,cont_Isinr,cont2cont_CF1L]) 1)),
  50.379  	(rtac (beta_cfun RS ssubst) 1),
  50.380 -	(REPEAT (resolve_tac (contX_lemmas @ [contX_Iwhen1,contX_Iwhen2,
  50.381 -		contX_Iwhen3,contX_Isinl,contX_Isinr,contX2contX_CF1L]) 1)),
  50.382 +	(REPEAT (resolve_tac (cont_lemmas @ [cont_Iwhen1,cont_Iwhen2,
  50.383 +		cont_Iwhen3,cont_Isinl,cont_Isinr,cont2cont_CF1L]) 1)),
  50.384  	(rtac less_ssum3d 1)
  50.385  	]);
  50.386  
  50.387  qed_goalw "ssum_chainE" Ssum3.thy [sinl_def,sinr_def] 
  50.388 -	"is_chain(Y) ==> (!i.? x.Y(i)=sinl[x])|(!i.? y.Y(i)=sinr[y])"
  50.389 +	"is_chain(Y) ==> (!i.? x.(Y i)=sinl`x)|(!i.? y.(Y i)=sinr`y)"
  50.390   (fn prems =>
  50.391  	[
  50.392  	(cut_facts_tac prems 1),
  50.393 -	(asm_simp_tac (Ssum_ss addsimps [contX_Isinr,contX_Isinl]) 1),
  50.394 +	(asm_simp_tac (Ssum_ss addsimps [cont_Isinr,cont_Isinl]) 1),
  50.395  	(etac ssum_lemma4 1)
  50.396  	]);
  50.397  
  50.398  
  50.399 -qed_goalw "thelub_ssum2a" Ssum3.thy [sinl_def,sinr_def,when_def] 
  50.400 -"[| is_chain(Y); !i.? x. Y(i) = sinl[x] |] ==>\ 
  50.401 -\   lub(range(Y)) = sinl[lub(range(%i. when[LAM x. x][LAM y. UU][Y(i)]))]"
  50.402 +qed_goalw "thelub_ssum2a" Ssum3.thy [sinl_def,sinr_def,sswhen_def] 
  50.403 +"[| is_chain(Y); !i.? x. Y(i) = sinl`x |] ==>\ 
  50.404 +\   lub(range(Y)) = sinl`(lub(range(%i. sswhen`(LAM x. x)`(LAM y. UU)`(Y i))))"
  50.405   (fn prems =>
  50.406  	[
  50.407  	(cut_facts_tac prems 1),
  50.408  	(rtac (beta_cfun RS ssubst) 1),
  50.409 -	(REPEAT (resolve_tac (contX_lemmas @ [contX_Iwhen1,contX_Iwhen2,		contX_Iwhen3,contX_Isinl,contX_Isinr,contX2contX_CF1L]) 1)),
  50.410 +	(REPEAT (resolve_tac (cont_lemmas @ [cont_Iwhen1,cont_Iwhen2,		cont_Iwhen3,cont_Isinl,cont_Isinr,cont2cont_CF1L]) 1)),
  50.411  	(rtac (beta_cfun RS ssubst) 1),
  50.412 -	(REPEAT (resolve_tac (contX_lemmas @ [contX_Iwhen1,contX_Iwhen2,		contX_Iwhen3,contX_Isinl,contX_Isinr,contX2contX_CF1L]) 1)),
  50.413 +	(REPEAT (resolve_tac (cont_lemmas @ [cont_Iwhen1,cont_Iwhen2,		cont_Iwhen3,cont_Isinl,cont_Isinr,cont2cont_CF1L]) 1)),
  50.414  	(rtac (beta_cfun RS ssubst) 1),
  50.415 -	(REPEAT (resolve_tac (contX_lemmas @ [contX_Iwhen1,contX_Iwhen2,		contX_Iwhen3,contX_Isinl,contX_Isinr,contX2contX_CF1L]) 1)),
  50.416 +	(REPEAT (resolve_tac (cont_lemmas @ [cont_Iwhen1,cont_Iwhen2,		cont_Iwhen3,cont_Isinl,cont_Isinr,cont2cont_CF1L]) 1)),
  50.417  	(rtac (beta_cfun RS ext RS ssubst) 1),
  50.418 -	(REPEAT (resolve_tac (contX_lemmas @ [contX_Iwhen1,contX_Iwhen2,		contX_Iwhen3,contX_Isinl,contX_Isinr,contX2contX_CF1L]) 1)),
  50.419 +	(REPEAT (resolve_tac (cont_lemmas @ [cont_Iwhen1,cont_Iwhen2,		cont_Iwhen3,cont_Isinl,cont_Isinr,cont2cont_CF1L]) 1)),
  50.420  	(rtac thelub_ssum1a 1),
  50.421  	(atac 1),
  50.422  	(rtac allI 1),
  50.423 @@ -629,27 +629,27 @@
  50.424  	(rtac exI 1),
  50.425  	(etac box_equals 1),
  50.426  	(rtac refl 1),
  50.427 -	(asm_simp_tac (Ssum_ss addsimps [contX_Isinl]) 1)
  50.428 +	(asm_simp_tac (Ssum_ss addsimps [cont_Isinl]) 1)
  50.429  	]);
  50.430  
  50.431 -qed_goalw "thelub_ssum2b" Ssum3.thy [sinl_def,sinr_def,when_def] 
  50.432 -"[| is_chain(Y); !i.? x. Y(i) = sinr[x] |] ==>\ 
  50.433 -\   lub(range(Y)) = sinr[lub(range(%i. when[LAM y. UU][LAM x. x][Y(i)]))]"
  50.434 +qed_goalw "thelub_ssum2b" Ssum3.thy [sinl_def,sinr_def,sswhen_def] 
  50.435 +"[| is_chain(Y); !i.? x. Y(i) = sinr`x |] ==>\ 
  50.436 +\   lub(range(Y)) = sinr`(lub(range(%i. sswhen`(LAM y. UU)`(LAM x.x)`(Y i))))"
  50.437   (fn prems =>
  50.438  	[
  50.439  	(cut_facts_tac prems 1),
  50.440  	(rtac (beta_cfun RS ssubst) 1),
  50.441 -	(REPEAT (resolve_tac (contX_lemmas @ [contX_Iwhen1,contX_Iwhen2,
  50.442 -		contX_Iwhen3,contX_Isinl,contX_Isinr,contX2contX_CF1L]) 1)),
  50.443 +	(REPEAT (resolve_tac (cont_lemmas @ [cont_Iwhen1,cont_Iwhen2,
  50.444 +		cont_Iwhen3,cont_Isinl,cont_Isinr,cont2cont_CF1L]) 1)),
  50.445  	(rtac (beta_cfun RS ssubst) 1),
  50.446 -	(REPEAT (resolve_tac (contX_lemmas @ [contX_Iwhen1,contX_Iwhen2,
  50.447 -		contX_Iwhen3,contX_Isinl,contX_Isinr,contX2contX_CF1L]) 1)),
  50.448 +	(REPEAT (resolve_tac (cont_lemmas @ [cont_Iwhen1,cont_Iwhen2,
  50.449 +		cont_Iwhen3,cont_Isinl,cont_Isinr,cont2cont_CF1L]) 1)),
  50.450  	(rtac (beta_cfun RS ssubst) 1),
  50.451 -	(REPEAT (resolve_tac (contX_lemmas @ [contX_Iwhen1,contX_Iwhen2,
  50.452 -		contX_Iwhen3,contX_Isinl,contX_Isinr,contX2contX_CF1L]) 1)),
  50.453 +	(REPEAT (resolve_tac (cont_lemmas @ [cont_Iwhen1,cont_Iwhen2,
  50.454 +		cont_Iwhen3,cont_Isinl,cont_Isinr,cont2cont_CF1L]) 1)),
  50.455  	(rtac (beta_cfun RS ext RS ssubst) 1),
  50.456 -	(REPEAT (resolve_tac (contX_lemmas @ [contX_Iwhen1,contX_Iwhen2,
  50.457 -		contX_Iwhen3,contX_Isinl,contX_Isinr,contX2contX_CF1L]) 1)),
  50.458 +	(REPEAT (resolve_tac (cont_lemmas @ [cont_Iwhen1,cont_Iwhen2,
  50.459 +		cont_Iwhen3,cont_Isinl,cont_Isinr,cont2cont_CF1L]) 1)),
  50.460  	(rtac thelub_ssum1b 1),
  50.461  	(atac 1),
  50.462  	(rtac allI 1),
  50.463 @@ -659,42 +659,42 @@
  50.464  	(etac box_equals 1),
  50.465  	(rtac refl 1),
  50.466  	(asm_simp_tac (Ssum_ss addsimps 
  50.467 -	[contX_Isinr,contX_Isinl,contX_Iwhen1,contX_Iwhen2,
  50.468 -	contX_Iwhen3]) 1)
  50.469 +	[cont_Isinr,cont_Isinl,cont_Iwhen1,cont_Iwhen2,
  50.470 +	cont_Iwhen3]) 1)
  50.471  	]);
  50.472  
  50.473  qed_goalw "thelub_ssum2a_rev" Ssum3.thy [sinl_def,sinr_def] 
  50.474 -	"[| is_chain(Y); lub(range(Y)) = sinl[x]|] ==> !i.? x.Y(i)=sinl[x]"
  50.475 +	"[| is_chain(Y); lub(range(Y)) = sinl`x|] ==> !i.? x.Y(i)=sinl`x"
  50.476   (fn prems =>
  50.477  	[
  50.478  	(cut_facts_tac prems 1),
  50.479  	(asm_simp_tac (Ssum_ss addsimps 
  50.480 -	[contX_Isinr,contX_Isinl,contX_Iwhen1,contX_Iwhen2,
  50.481 -	contX_Iwhen3]) 1),
  50.482 +	[cont_Isinr,cont_Isinl,cont_Iwhen1,cont_Iwhen2,
  50.483 +	cont_Iwhen3]) 1),
  50.484  	(etac ssum_lemma9 1),
  50.485  	(asm_simp_tac (Ssum_ss addsimps 
  50.486 -	[contX_Isinr,contX_Isinl,contX_Iwhen1,contX_Iwhen2,
  50.487 -	contX_Iwhen3]) 1)
  50.488 +	[cont_Isinr,cont_Isinl,cont_Iwhen1,cont_Iwhen2,
  50.489 +	cont_Iwhen3]) 1)
  50.490  	]);
  50.491  
  50.492  qed_goalw "thelub_ssum2b_rev" Ssum3.thy [sinl_def,sinr_def] 
  50.493 -	"[| is_chain(Y); lub(range(Y)) = sinr[x]|] ==> !i.? x.Y(i)=sinr[x]"
  50.494 +	"[| is_chain(Y); lub(range(Y)) = sinr`x|] ==> !i.? x.Y(i)=sinr`x"
  50.495   (fn prems =>
  50.496  	[
  50.497  	(cut_facts_tac prems 1),
  50.498  	(asm_simp_tac (Ssum_ss addsimps 
  50.499 -	[contX_Isinr,contX_Isinl,contX_Iwhen1,contX_Iwhen2,
  50.500 -	contX_Iwhen3]) 1),
  50.501 +	[cont_Isinr,cont_Isinl,cont_Iwhen1,cont_Iwhen2,
  50.502 +	cont_Iwhen3]) 1),
  50.503  	(etac ssum_lemma10 1),
  50.504  	(asm_simp_tac (Ssum_ss addsimps 
  50.505 -	[contX_Isinr,contX_Isinl,contX_Iwhen1,contX_Iwhen2,
  50.506 -	contX_Iwhen3]) 1)
  50.507 +	[cont_Isinr,cont_Isinl,cont_Iwhen1,cont_Iwhen2,
  50.508 +	cont_Iwhen3]) 1)
  50.509  	]);
  50.510  
  50.511  qed_goal "thelub_ssum3" Ssum3.thy  
  50.512  "is_chain(Y) ==>\ 
  50.513 -\   lub(range(Y)) = sinl[lub(range(%i. when[LAM x. x][LAM y. UU][Y(i)]))]\
  50.514 -\ | lub(range(Y)) = sinr[lub(range(%i. when[LAM y. UU][LAM x. x][Y(i)]))]"
  50.515 +\   lub(range(Y)) = sinl`(lub(range(%i. sswhen`(LAM x. x)`(LAM y.UU)`(Y i))))\
  50.516 +\ | lub(range(Y)) = sinr`(lub(range(%i. sswhen`(LAM y. UU)`(LAM x.x)`(Y i))))"
  50.517   (fn prems =>
  50.518  	[
  50.519  	(cut_facts_tac prems 1),
  50.520 @@ -709,14 +709,14 @@
  50.521  	]);
  50.522  
  50.523  
  50.524 -qed_goal "when4" Ssum3.thy  
  50.525 -	"when[sinl][sinr][z]=z"
  50.526 +qed_goal "sswhen4" Ssum3.thy  
  50.527 +	"sswhen`sinl`sinr`z=z"
  50.528   (fn prems =>
  50.529  	[
  50.530  	(res_inst_tac [("p","z")] ssumE 1),
  50.531 -	(asm_simp_tac (Cfun_ss addsimps [when1,when2,when3]) 1),
  50.532 -	(asm_simp_tac (Cfun_ss addsimps [when1,when2,when3]) 1),
  50.533 -	(asm_simp_tac (Cfun_ss addsimps [when1,when2,when3]) 1)
  50.534 +	(asm_simp_tac (Cfun_ss addsimps [sswhen1,sswhen2,sswhen3]) 1),
  50.535 +	(asm_simp_tac (Cfun_ss addsimps [sswhen1,sswhen2,sswhen3]) 1),
  50.536 +	(asm_simp_tac (Cfun_ss addsimps [sswhen1,sswhen2,sswhen3]) 1)
  50.537  	]);
  50.538  
  50.539  
  50.540 @@ -724,5 +724,5 @@
  50.541  (* install simplifier for Ssum                                              *)
  50.542  (* ------------------------------------------------------------------------ *)
  50.543  
  50.544 -val Ssum_rews = [strict_sinl,strict_sinr,when1,when2,when3];
  50.545 +val Ssum_rews = [strict_sinl,strict_sinr,sswhen1,sswhen2,sswhen3];
  50.546  val Ssum_ss = Cfun_ss addsimps Ssum_rews;
    51.1 --- a/src/HOLCF/Ssum3.thy	Thu Jun 29 16:16:24 1995 +0200
    51.2 +++ b/src/HOLCF/Ssum3.thy	Thu Jun 29 16:28:40 1995 +0200
    51.3 @@ -11,19 +11,19 @@
    51.4  arities "++" :: (pcpo,pcpo)pcpo			(* Witness ssum2.ML *)
    51.5  
    51.6  consts  
    51.7 -	sinl	     :: "'a -> ('a++'b)" 
    51.8 -	sinr	     :: "'b -> ('a++'b)" 
    51.9 -	when         :: "('a->'c)->('b->'c)->('a ++ 'b)-> 'c"
   51.10 +	sinl	:: "'a -> ('a++'b)" 
   51.11 +	sinr	:: "'b -> ('a++'b)" 
   51.12 +	sswhen	:: "('a->'c)->('b->'c)->('a ++ 'b)-> 'c"
   51.13  
   51.14  rules 
   51.15  
   51.16  inst_ssum_pcpo	"(UU::'a++'b) = Isinl(UU)"
   51.17  
   51.18 +
   51.19 +defs
   51.20 +
   51.21  sinl_def	"sinl   == (LAM x.Isinl(x))"
   51.22  sinr_def	"sinr   == (LAM x.Isinr(x))"
   51.23 -when_def	"when   == (LAM f g s.Iwhen(f)(g)(s))"
   51.24 +sswhen_def	"sswhen   == (LAM f g s.Iwhen(f)(g)(s))"
   51.25  
   51.26  end
   51.27 -
   51.28 -
   51.29 -
    52.1 --- a/src/HOLCF/Stream.ML	Thu Jun 29 16:16:24 1995 +0200
    52.2 +++ b/src/HOLCF/Stream.ML	Thu Jun 29 16:28:40 1995 +0200
    52.3 @@ -32,9 +32,9 @@
    52.4  
    52.5  val stream_copy = 
    52.6  	[
    52.7 -	prover [stream_copy_def] "stream_copy[f][UU]=UU",
    52.8 +	prover [stream_copy_def] "stream_copy`f`UU=UU",
    52.9  	prover [stream_copy_def,scons_def] 
   52.10 -	"x~=UU ==> stream_copy[f][scons[x][xs]]= scons[x][f[xs]]"
   52.11 +	"x~=UU ==> stream_copy`f`(scons`x`xs)= scons`x`(f`xs)"
   52.12  	];
   52.13  
   52.14  val stream_rews =  stream_copy @ stream_rews; 
   52.15 @@ -44,12 +44,12 @@
   52.16  (* ------------------------------------------------------------------------*)
   52.17  
   52.18  qed_goalw "Exh_stream" Stream.thy [scons_def]
   52.19 -	"s = UU | (? x xs. x~=UU & s = scons[x][xs])"
   52.20 +	"s = UU | (? x xs. x~=UU & s = scons`x`xs)"
   52.21   (fn prems =>
   52.22  	[
   52.23  	(simp_tac HOLCF_ss  1),
   52.24  	(rtac (stream_rep_iso RS subst) 1),
   52.25 -	(res_inst_tac [("p","stream_rep[s]")] sprodE 1),
   52.26 +	(res_inst_tac [("p","stream_rep`s")] sprodE 1),
   52.27  	(asm_simp_tac (HOLCF_ss addsimps stream_rews) 1),
   52.28  	(asm_simp_tac HOLCF_ss  1),
   52.29  	(res_inst_tac [("p","y")] liftE1 1),
   52.30 @@ -62,7 +62,7 @@
   52.31  	]);
   52.32  
   52.33  qed_goal "streamE" Stream.thy 
   52.34 -	"[| s=UU ==> Q; !!x xs.[|s=scons[x][xs];x~=UU|]==>Q|]==>Q"
   52.35 +	"[| s=UU ==> Q; !!x xs.[|s=scons`x`xs;x~=UU|]==>Q|]==>Q"
   52.36   (fn prems =>
   52.37  	[
   52.38  	(rtac (Exh_stream RS disjE) 1),
   52.39 @@ -88,9 +88,9 @@
   52.40  
   52.41  
   52.42  val stream_when = [
   52.43 -	prover [stream_when_def] "stream_when[f][UU]=UU",
   52.44 +	prover [stream_when_def] "stream_when`f`UU=UU",
   52.45  	prover [stream_when_def,scons_def] 
   52.46 -		"x~=UU ==> stream_when[f][scons[x][xs]]= f[x][xs]"
   52.47 +		"x~=UU ==> stream_when`f`(scons`x`xs)= f`x`xs"
   52.48  	];
   52.49  
   52.50  val stream_rews = stream_when @ stream_rews;
   52.51 @@ -106,9 +106,9 @@
   52.52  	]);
   52.53  
   52.54  val stream_discsel = [
   52.55 -	prover [is_scons_def] "is_scons[UU]=UU",
   52.56 -	prover [shd_def] "shd[UU]=UU",
   52.57 -	prover [stl_def] "stl[UU]=UU"
   52.58 +	prover [is_scons_def] "is_scons`UU=UU",
   52.59 +	prover [shd_def] "shd`UU=UU",
   52.60 +	prover [stl_def] "stl`UU=UU"
   52.61  	];
   52.62  
   52.63  fun prover defs thm = prove_goalw Stream.thy defs thm
   52.64 @@ -119,9 +119,9 @@
   52.65  	]);
   52.66  
   52.67  val stream_discsel = [
   52.68 -prover [is_scons_def,shd_def,stl_def] "x~=UU ==> is_scons[scons[x][xs]]=TT",
   52.69 -prover [is_scons_def,shd_def,stl_def] "x~=UU ==> shd[scons[x][xs]]=x",
   52.70 -prover [is_scons_def,shd_def,stl_def] "x~=UU ==> stl[scons[x][xs]]=xs"
   52.71 +prover [is_scons_def,shd_def,stl_def] "x~=UU ==> is_scons`(scons`x`xs)=TT",
   52.72 +prover [is_scons_def,shd_def,stl_def] "x~=UU ==> shd`(scons`x`xs)=x",
   52.73 +prover [is_scons_def,shd_def,stl_def] "x~=UU ==> stl`(scons`x`xs)=xs"
   52.74  	] @ stream_discsel;
   52.75  
   52.76  val stream_rews = stream_discsel @ stream_rews;
   52.77 @@ -141,7 +141,7 @@
   52.78  	]);
   52.79  
   52.80  val stream_constrdef = [
   52.81 -	prover "is_scons[UU::'a stream] ~= UU" "x~=UU ==> scons[x::'a][xs]~=UU"
   52.82 +	prover "is_scons`(UU::'a stream)~=UU" "x~=UU ==> scons`(x::'a)`xs~=UU"
   52.83  	]; 
   52.84  
   52.85  fun prover defs thm = prove_goalw Stream.thy defs thm
   52.86 @@ -151,7 +151,7 @@
   52.87  	]);
   52.88  
   52.89  val stream_constrdef = [
   52.90 -	prover [scons_def] "scons[UU][xs]=UU"
   52.91 +	prover [scons_def] "scons`UU`xs=UU"
   52.92  	] @ stream_constrdef;
   52.93  
   52.94  val stream_rews = stream_constrdef @ stream_rews;
   52.95 @@ -169,16 +169,16 @@
   52.96  val stream_invert =
   52.97  	[
   52.98  prove_goal Stream.thy "[|x1~=UU; y1~=UU;\
   52.99 -\ scons[x1][x2] << scons[y1][y2]|] ==> x1<< y1 & x2 << y2"
  52.100 +\ scons`x1`x2 << scons`y1`y2|] ==> x1<< y1 & x2 << y2"
  52.101   (fn prems =>
  52.102  	[
  52.103  	(cut_facts_tac prems 1),
  52.104  	(rtac conjI 1),
  52.105 -	(dres_inst_tac [("fo5","stream_when[LAM x l.x]")] monofun_cfun_arg 1),
  52.106 +	(dres_inst_tac [("fo5","stream_when`(LAM x l.x)")] monofun_cfun_arg 1),
  52.107  	(etac box_less 1),
  52.108  	(asm_simp_tac (HOLCF_ss addsimps stream_when) 1),
  52.109  	(asm_simp_tac (HOLCF_ss addsimps stream_when) 1),
  52.110 -	(dres_inst_tac [("fo5","stream_when[LAM x l.l]")] monofun_cfun_arg 1),
  52.111 +	(dres_inst_tac [("fo5","stream_when`(LAM x l.l)")] monofun_cfun_arg 1),
  52.112  	(etac box_less 1),
  52.113  	(asm_simp_tac (HOLCF_ss addsimps stream_when) 1),
  52.114  	(asm_simp_tac (HOLCF_ss addsimps stream_when) 1)
  52.115 @@ -192,16 +192,16 @@
  52.116  val stream_inject = 
  52.117  	[
  52.118  prove_goal Stream.thy "[|x1~=UU; y1~=UU;\
  52.119 -\ scons[x1][x2] = scons[y1][y2]|] ==> x1= y1 & x2 = y2"
  52.120 +\ scons`x1`x2 = scons`y1`y2 |] ==> x1= y1 & x2 = y2"
  52.121   (fn prems =>
  52.122  	[
  52.123  	(cut_facts_tac prems 1),
  52.124  	(rtac conjI 1),
  52.125 -	(dres_inst_tac [("f","stream_when[LAM x l.x]")] cfun_arg_cong 1),
  52.126 +	(dres_inst_tac [("f","stream_when`(LAM x l.x)")] cfun_arg_cong 1),
  52.127  	(etac box_equals 1),
  52.128  	(asm_simp_tac (HOLCF_ss addsimps stream_when) 1),
  52.129  	(asm_simp_tac (HOLCF_ss addsimps stream_when) 1),
  52.130 -	(dres_inst_tac [("f","stream_when[LAM x l.l]")] cfun_arg_cong 1),
  52.131 +	(dres_inst_tac [("f","stream_when`(LAM x l.l)")] cfun_arg_cong 1),
  52.132  	(etac box_equals 1),
  52.133  	(asm_simp_tac (HOLCF_ss addsimps stream_when) 1),
  52.134  	(asm_simp_tac (HOLCF_ss addsimps stream_when) 1)
  52.135 @@ -223,8 +223,8 @@
  52.136  
  52.137  val stream_discsel_def = 
  52.138  	[
  52.139 -	prover "s~=UU ==> is_scons[s]~=UU", 
  52.140 -	prover "s~=UU ==> shd[s]~=UU" 
  52.141 +	prover "s~=UU ==> is_scons`s ~= UU", 
  52.142 +	prover "s~=UU ==> shd`s ~=UU" 
  52.143  	];
  52.144  
  52.145  val stream_rews = stream_discsel_def @ stream_rews;
  52.146 @@ -236,7 +236,7 @@
  52.147  
  52.148  val stream_take =
  52.149  	[
  52.150 -prove_goalw Stream.thy [stream_take_def] "stream_take(n)[UU]=UU"
  52.151 +prove_goalw Stream.thy [stream_take_def] "stream_take n`UU = UU"
  52.152   (fn prems =>
  52.153  	[
  52.154  	(res_inst_tac [("n","n")] natE 1),
  52.155 @@ -244,7 +244,7 @@
  52.156  	(asm_simp_tac iterate_ss 1),
  52.157  	(simp_tac (HOLCF_ss addsimps stream_rews) 1)
  52.158  	]),
  52.159 -prove_goalw Stream.thy [stream_take_def] "stream_take(0)[xs]=UU"
  52.160 +prove_goalw Stream.thy [stream_take_def] "stream_take 0`xs=UU"
  52.161   (fn prems =>
  52.162  	[
  52.163  	(asm_simp_tac iterate_ss 1)
  52.164 @@ -260,7 +260,7 @@
  52.165  
  52.166  val stream_take = [
  52.167  prover 
  52.168 -  "x~=UU ==> stream_take(Suc(n))[scons[x][xs]]=scons[x][stream_take(n)[xs]]"
  52.169 +  "x~=UU ==> stream_take (Suc n)`(scons`x`xs) = scons`x`(stream_take n`xs)"
  52.170  	] @ stream_take;
  52.171  
  52.172  val stream_rews = stream_take @ stream_rews;
  52.173 @@ -270,7 +270,7 @@
  52.174  (* ------------------------------------------------------------------------*)
  52.175  
  52.176  qed_goal "stream_copy2" Stream.thy 
  52.177 -     "stream_copy[f][scons[x][xs]]= scons[x][f[xs]]"
  52.178 +     "stream_copy`f`(scons`x`xs) = scons`x`(f`xs)"
  52.179   (fn prems =>
  52.180  	[
  52.181  	(res_inst_tac [("Q","x=UU")] classical2 1),
  52.182 @@ -278,7 +278,7 @@
  52.183  	(asm_simp_tac (HOLCF_ss addsimps stream_rews) 1)
  52.184  	]);
  52.185  
  52.186 -qed_goal "shd2" Stream.thy "shd[scons[x][xs]]=x"
  52.187 +qed_goal "shd2" Stream.thy "shd`(scons`x`xs) = x"
  52.188   (fn prems =>
  52.189  	[
  52.190  	(res_inst_tac [("Q","x=UU")] classical2 1),
  52.191 @@ -287,7 +287,7 @@
  52.192  	]);
  52.193  
  52.194  qed_goal "stream_take2" Stream.thy 
  52.195 - "stream_take(Suc(n))[scons[x][xs]]=scons[x][stream_take(n)[xs]]"
  52.196 + "stream_take (Suc n)`(scons`x`xs) = scons`x`(stream_take n`xs)"
  52.197   (fn prems =>
  52.198  	[
  52.199  	(res_inst_tac [("Q","x=UU")] classical2 1),
  52.200 @@ -327,10 +327,10 @@
  52.201  	]);
  52.202  
  52.203  val stream_take_lemma = prover stream_reach  [stream_take_def]
  52.204 -	"(!!n.stream_take(n)[s1]=stream_take(n)[s2]) ==> s1=s2";
  52.205 +	"(!!n.stream_take n`s1 = stream_take n`s2) ==> s1=s2";
  52.206  
  52.207  
  52.208 -qed_goal "stream_reach2" Stream.thy  "lub(range(%i.stream_take(i)[s]))=s"
  52.209 +qed_goal "stream_reach2" Stream.thy  "lub(range(%i.stream_take i`s))=s"
  52.210   (fn prems =>
  52.211  	[
  52.212  	(res_inst_tac [("t","s")] (stream_reach RS subst) 1),
  52.213 @@ -346,7 +346,7 @@
  52.214  (* ------------------------------------------------------------------------*)
  52.215  
  52.216  qed_goalw "stream_coind_lemma" Stream.thy [stream_bisim_def] 
  52.217 -"stream_bisim(R) ==> ! p q.R(p,q) --> stream_take(n)[p]=stream_take(n)[q]"
  52.218 +"stream_bisim R ==> ! p q. R p q --> stream_take n`p = stream_take n`q"
  52.219   (fn prems =>
  52.220  	[
  52.221  	(cut_facts_tac prems 1),
  52.222 @@ -365,7 +365,7 @@
  52.223  	(fast_tac HOL_cs 1)
  52.224  	]);
  52.225  
  52.226 -qed_goal "stream_coind" Stream.thy "[|stream_bisim(R);R(p,q)|] ==> p = q"
  52.227 +qed_goal "stream_coind" Stream.thy "[|stream_bisim R ;R p q|] ==> p = q"
  52.228   (fn prems =>
  52.229  	[
  52.230  	(rtac stream_take_lemma 1),
  52.231 @@ -380,8 +380,8 @@
  52.232  
  52.233  qed_goal "stream_finite_ind" Stream.thy
  52.234  "[|P(UU);\
  52.235 -\  !! x s1.[|x~=UU;P(s1)|] ==> P(scons[x][s1])\
  52.236 -\  |] ==> !s.P(stream_take(n)[s])"
  52.237 +\  !! x s1.[|x~=UU;P(s1)|] ==> P(scons`x`s1)\
  52.238 +\  |] ==> !s.P(stream_take n`s)"
  52.239   (fn prems =>
  52.240  	[
  52.241  	(nat_ind_tac "n" 1),
  52.242 @@ -398,7 +398,7 @@
  52.243  	]);
  52.244  
  52.245  qed_goalw "stream_finite_ind2" Stream.thy  [stream_finite_def]
  52.246 -"(!!n.P(stream_take(n)[s])) ==>  stream_finite(s) -->P(s)"
  52.247 +"(!!n.P(stream_take n`s)) ==>  stream_finite(s) -->P(s)"
  52.248   (fn prems =>
  52.249  	[
  52.250  	(strip_tac 1),
  52.251 @@ -409,7 +409,7 @@
  52.252  
  52.253  qed_goal "stream_finite_ind3" Stream.thy 
  52.254  "[|P(UU);\
  52.255 -\  !! x s1.[|x~=UU;P(s1)|] ==> P(scons[x][s1])\
  52.256 +\  !! x s1.[|x~=UU;P(s1)|] ==> P(scons`x`s1)\
  52.257  \  |] ==> stream_finite(s) --> P(s)"
  52.258   (fn prems =>
  52.259  	[
  52.260 @@ -426,7 +426,7 @@
  52.261  qed_goal "stream_ind" Stream.thy
  52.262  "[|adm(P);\
  52.263  \  P(UU);\
  52.264 -\  !! x s1.[|x~=UU;P(s1)|] ==> P(scons[x][s1])\
  52.265 +\  !! x s1.[|x~=UU;P(s1)|] ==> P(scons`x`s1)\
  52.266  \  |] ==> P(s)"
  52.267   (fn prems =>
  52.268  	[
  52.269 @@ -446,7 +446,7 @@
  52.270  qed_goal "stream_ind" Stream.thy
  52.271  "[|adm(P);\
  52.272  \  P(UU);\
  52.273 -\  !! x s1.[|x~=UU;P(s1)|] ==> P(scons[x][s1])\
  52.274 +\  !! x s1.[|x~=UU;P(s1)|] ==> P(scons`x`s1)\
  52.275  \  |] ==> P(s)"
  52.276   (fn prems =>
  52.277  	[
  52.278 @@ -456,7 +456,7 @@
  52.279  	(rtac adm_impl_admw 1),
  52.280  	(REPEAT (resolve_tac adm_thms 1)),
  52.281  	(rtac adm_subst 1),
  52.282 -	(contX_tacR 1),
  52.283 +	(cont_tacR 1),
  52.284  	(resolve_tac prems 1),
  52.285  	(rtac allI 1),
  52.286  	(rtac (rewrite_rule [stream_take_def] stream_finite_ind) 1),
  52.287 @@ -469,7 +469,7 @@
  52.288  (* simplify use of Co-induction                                            *)
  52.289  (* ------------------------------------------------------------------------*)
  52.290  
  52.291 -qed_goal "surjectiv_scons" Stream.thy "scons[shd[s]][stl[s]]=s"
  52.292 +qed_goal "surjectiv_scons" Stream.thy "scons`(shd`s)`(stl`s)=s"
  52.293   (fn prems =>
  52.294  	[
  52.295  	(res_inst_tac [("s","s")] streamE 1),
  52.296 @@ -479,7 +479,7 @@
  52.297  
  52.298  
  52.299  qed_goalw "stream_coind_lemma2" Stream.thy [stream_bisim_def]
  52.300 -"!s1 s2. R(s1, s2)-->shd[s1]=shd[s2] & R(stl[s1],stl[s2]) ==>stream_bisim(R)"
  52.301 +"!s1 s2. R s1 s2 --> shd`s1 = shd`s2 & R (stl`s1) (stl`s2) ==> stream_bisim R"
  52.302   (fn prems =>
  52.303  	[
  52.304  	(cut_facts_tac prems 1),
  52.305 @@ -495,21 +495,21 @@
  52.306  	(rtac disjI2 1),
  52.307  	(rtac disjE 1),
  52.308  	(etac (de_morgan2 RS ssubst) 1),
  52.309 -	(res_inst_tac [("x","shd[s1]")] exI 1),
  52.310 -	(res_inst_tac [("x","stl[s1]")] exI 1),
  52.311 -	(res_inst_tac [("x","stl[s2]")] exI 1),
  52.312 +	(res_inst_tac [("x","shd`s1")] exI 1),
  52.313 +	(res_inst_tac [("x","stl`s1")] exI 1),
  52.314 +	(res_inst_tac [("x","stl`s2")] exI 1),
  52.315  	(rtac conjI 1),
  52.316  	(eresolve_tac stream_discsel_def 1),
  52.317  	(asm_simp_tac (HOLCF_ss addsimps stream_rews addsimps [surjectiv_scons]) 1),
  52.318 -	(eres_inst_tac [("s","shd[s1]"),("t","shd[s2]")] subst 1),
  52.319 +	(eres_inst_tac [("s","shd`s1"),("t","shd`s2")] subst 1),
  52.320  	(simp_tac (HOLCF_ss addsimps stream_rews addsimps [surjectiv_scons]) 1),
  52.321 -	(res_inst_tac [("x","shd[s2]")] exI 1),
  52.322 -	(res_inst_tac [("x","stl[s1]")] exI 1),
  52.323 -	(res_inst_tac [("x","stl[s2]")] exI 1),
  52.324 +	(res_inst_tac [("x","shd`s2")] exI 1),
  52.325 +	(res_inst_tac [("x","stl`s1")] exI 1),
  52.326 +	(res_inst_tac [("x","stl`s2")] exI 1),
  52.327  	(rtac conjI 1),
  52.328  	(eresolve_tac stream_discsel_def 1),
  52.329  	(asm_simp_tac (HOLCF_ss addsimps stream_rews addsimps [surjectiv_scons]) 1),
  52.330 -	(res_inst_tac [("s","shd[s1]"),("t","shd[s2]")] ssubst 1),
  52.331 +	(res_inst_tac [("s","shd`s1"),("t","shd`s2")] ssubst 1),
  52.332  	(etac sym 1),
  52.333  	(simp_tac (HOLCF_ss addsimps stream_rews addsimps [surjectiv_scons]) 1)
  52.334  	]);
  52.335 @@ -545,7 +545,7 @@
  52.336  (* a lemma about shd                                                       *)
  52.337  (* ----------------------------------------------------------------------- *)
  52.338  
  52.339 -qed_goal "stream_shd_lemma1" Stream.thy "shd[s]=UU --> s=UU"
  52.340 +qed_goal "stream_shd_lemma1" Stream.thy "shd`s=UU --> s=UU"
  52.341   (fn prems =>
  52.342  	[
  52.343  	(res_inst_tac [("s","s")] streamE 1),
  52.344 @@ -561,7 +561,7 @@
  52.345  
  52.346  qed_goal "stream_take_lemma1" Stream.thy 
  52.347   "!x xs.x~=UU --> \
  52.348 -\  stream_take(Suc(n))[scons[x][xs]] = scons[x][xs] --> stream_take(n)[xs]=xs"
  52.349 +\  stream_take (Suc n)`(scons`x`xs) = scons`x`xs --> stream_take n`xs=xs"
  52.350   (fn prems =>
  52.351  	[
  52.352  	(rtac allI 1),
  52.353 @@ -577,7 +577,7 @@
  52.354  
  52.355  
  52.356  qed_goal "stream_take_lemma2" Stream.thy 
  52.357 - "! s2. stream_take(n)[s2] = s2 --> stream_take(Suc(n))[s2]=s2"
  52.358 + "! s2. stream_take n`s2 = s2 --> stream_take (Suc n)`s2=s2"
  52.359   (fn prems =>
  52.360  	[
  52.361  	(nat_ind_tac "n" 1),
  52.362 @@ -590,7 +590,7 @@
  52.363  	(asm_simp_tac (HOLCF_ss addsimps stream_rews) 1),
  52.364  	(asm_simp_tac (HOLCF_ss addsimps stream_rews) 1),
  52.365  	(strip_tac 1 ),
  52.366 -	(subgoal_tac "stream_take(n1)[xs] = xs" 1),
  52.367 +	(subgoal_tac "stream_take n1`xs = xs" 1),
  52.368  	(rtac ((hd stream_inject) RS conjunct2) 2),
  52.369  	(atac 4),
  52.370  	(atac 2),
  52.371 @@ -601,13 +601,13 @@
  52.372  
  52.373  qed_goal "stream_take_lemma3" Stream.thy 
  52.374   "!x xs.x~=UU --> \
  52.375 -\  stream_take(n)[scons[x][xs]] = scons[x][xs] --> stream_take(n)[xs]=xs"
  52.376 +\  stream_take n`(scons`x`xs) = scons`x`xs --> stream_take n`xs=xs"
  52.377   (fn prems =>
  52.378  	[
  52.379  	(nat_ind_tac "n" 1),
  52.380  	(asm_simp_tac (HOLCF_ss addsimps stream_rews) 1),
  52.381  	(strip_tac 1 ),
  52.382 -	(res_inst_tac [("P","scons[x][xs]=UU")] notE 1),
  52.383 +	(res_inst_tac [("P","scons`x`xs=UU")] notE 1),
  52.384  	(eresolve_tac stream_constrdef 1),
  52.385  	(etac sym 1),
  52.386  	(strip_tac 1 ),
  52.387 @@ -620,7 +620,7 @@
  52.388  
  52.389  qed_goal "stream_take_lemma4" Stream.thy 
  52.390   "!x xs.\
  52.391 -\stream_take(n)[xs]=xs --> stream_take(Suc(n))[scons[x][xs]] = scons[x][xs]"
  52.392 +\stream_take n`xs=xs --> stream_take (Suc n)`(scons`x`xs) = scons`x`xs"
  52.393   (fn prems =>
  52.394  	[
  52.395  	(nat_ind_tac "n" 1),
  52.396 @@ -631,7 +631,7 @@
  52.397  (* ---- *)
  52.398  
  52.399  qed_goal "stream_take_lemma5" Stream.thy 
  52.400 -"!s. stream_take(n)[s]=s --> iterate(n,stl,s)=UU"
  52.401 +"!s. stream_take n`s=s --> iterate n stl s=UU"
  52.402   (fn prems =>
  52.403  	[
  52.404  	(nat_ind_tac "n" 1),
  52.405 @@ -652,7 +652,7 @@
  52.406  	]);
  52.407  
  52.408  qed_goal "stream_take_lemma6" Stream.thy 
  52.409 -"!s.iterate(n,stl,s)=UU --> stream_take(n)[s]=s"
  52.410 +"!s.iterate n stl s =UU --> stream_take n`s=s"
  52.411   (fn prems =>
  52.412  	[
  52.413  	(nat_ind_tac "n" 1),
  52.414 @@ -669,7 +669,7 @@
  52.415  	]);
  52.416  
  52.417  qed_goal "stream_take_lemma7" Stream.thy 
  52.418 -"(iterate(n,stl,s)=UU) = (stream_take(n)[s]=s)"
  52.419 +"(iterate n stl s=UU) = (stream_take n`s=s)"
  52.420   (fn prems =>
  52.421  	[
  52.422  	(rtac iffI 1),
  52.423 @@ -679,7 +679,7 @@
  52.424  
  52.425  
  52.426  qed_goal "stream_take_lemma8" Stream.thy
  52.427 -"[|adm(P); !n. ? m. n < m & P(stream_take(m)[s])|] ==> P(s)"
  52.428 +"[|adm(P); !n. ? m. n < m & P (stream_take m`s)|] ==> P(s)"
  52.429   (fn prems =>
  52.430  	[
  52.431  	(cut_facts_tac prems 1),
  52.432 @@ -697,7 +697,7 @@
  52.433  (* ----------------------------------------------------------------------- *)
  52.434  
  52.435  qed_goalw "stream_finite_lemma1" Stream.thy [stream_finite_def]
  52.436 - "stream_finite(xs) ==> stream_finite(scons[x][xs])"
  52.437 + "stream_finite(xs) ==> stream_finite(scons`x`xs)"
  52.438   (fn prems =>
  52.439  	[
  52.440  	(cut_facts_tac prems 1),
  52.441 @@ -707,7 +707,7 @@
  52.442  	]);
  52.443  
  52.444  qed_goalw "stream_finite_lemma2" Stream.thy [stream_finite_def]
  52.445 - "[|x~=UU; stream_finite(scons[x][xs])|] ==> stream_finite(xs)"
  52.446 + "[|x~=UU; stream_finite(scons`x`xs)|] ==> stream_finite(xs)"
  52.447   (fn prems =>
  52.448  	[
  52.449  	(cut_facts_tac prems 1),
  52.450 @@ -718,7 +718,7 @@
  52.451  	]);
  52.452  
  52.453  qed_goal "stream_finite_lemma3" Stream.thy 
  52.454 - "x~=UU ==> stream_finite(scons[x][xs]) = stream_finite(xs)"
  52.455 + "x~=UU ==> stream_finite(scons`x`xs) = stream_finite(xs)"
  52.456   (fn prems =>
  52.457  	[
  52.458  	(cut_facts_tac prems 1),
  52.459 @@ -730,7 +730,7 @@
  52.460  
  52.461  
  52.462  qed_goalw "stream_finite_lemma5" Stream.thy [stream_finite_def]
  52.463 - "(!n. s1 << s2  --> stream_take(n)[s2] = s2 --> stream_finite(s1))\
  52.464 + "(!n. s1 << s2  --> stream_take n`s2 = s2 --> stream_finite(s1))\
  52.465  \=(s1 << s2  --> stream_finite(s2) --> stream_finite(s1))"
  52.466   (fn prems =>
  52.467  	[
  52.468 @@ -740,7 +740,7 @@
  52.469  	]);
  52.470  
  52.471  qed_goal "stream_finite_lemma6" Stream.thy
  52.472 - "!s1 s2. s1 << s2  --> stream_take(n)[s2] = s2 --> stream_finite(s1)"
  52.473 + "!s1 s2. s1 << s2  --> stream_take n`s2 = s2 --> stream_finite(s1)"
  52.474   (fn prems =>
  52.475  	[
  52.476  	(nat_ind_tac "n" 1),
  52.477 @@ -767,7 +767,7 @@
  52.478  	(strip_tac 1 ),
  52.479  	(rtac stream_finite_lemma1 1),
  52.480  	(subgoal_tac "xs << xsa" 1),
  52.481 -	(subgoal_tac "stream_take(n1)[xsa] = xsa" 1),
  52.482 +	(subgoal_tac "stream_take n1`xsa = xsa" 1),
  52.483  	(fast_tac HOL_cs 1),
  52.484  	(res_inst_tac  [("x1.1","xa"),("y1.1","xa")] 
  52.485                     ((hd stream_inject) RS conjunct2) 1),
  52.486 @@ -791,7 +791,7 @@
  52.487  	]);
  52.488  
  52.489  qed_goalw "stream_finite_lemma8" Stream.thy [stream_finite_def]
  52.490 -"stream_finite(s) = (? n. iterate(n,stl,s)=UU)"
  52.491 +"stream_finite(s) = (? n. iterate n stl s = UU)"
  52.492   (fn prems =>
  52.493  	[
  52.494  	(simp_tac (HOL_ss addsimps [stream_take_lemma7]) 1)
  52.495 @@ -819,8 +819,8 @@
  52.496  
  52.497  (* ----------------------------------------------------------------------- *)
  52.498  (* alternative prove for admissibility of ~stream_finite                   *)
  52.499 -(* show that stream_finite(s) = (? n. iterate(n, stl, s) = UU)             *)
  52.500 -(* and prove adm. of ~(? n. iterate(n, stl, s) = UU)                       *)
  52.501 +(* show that stream_finite(s) = (? n. iterate n stl s = UU)                *)
  52.502 +(* and prove adm. of ~(? n. iterate n stl s = UU)                          *)
  52.503  (* proof uses theorems stream_take_lemma5-7; stream_finite_lemma8          *)
  52.504  (* ----------------------------------------------------------------------- *)
  52.505  
  52.506 @@ -828,10 +828,10 @@
  52.507  qed_goal "adm_not_stream_finite" Stream.thy "adm(%s. ~ stream_finite(s))"
  52.508   (fn prems =>
  52.509  	[
  52.510 -	(subgoal_tac "(!s.(~stream_finite(s))=(!n.iterate(n,stl,s)~=UU))" 1),
  52.511 +	(subgoal_tac "(!s.(~stream_finite(s))=(!n.iterate n stl s ~=UU))" 1),
  52.512  	(etac (adm_cong RS iffD2)1),
  52.513  	(REPEAT(resolve_tac adm_thms 1)),
  52.514 -	(rtac  contX_iterate2 1),
  52.515 +	(rtac  cont_iterate2 1),
  52.516  	(rtac allI 1),
  52.517  	(rtac (stream_finite_lemma8 RS ssubst) 1),
  52.518  	(fast_tac HOL_cs 1)
    53.1 --- a/src/HOLCF/Stream.thy	Thu Jun 29 16:16:24 1995 +0200
    53.2 +++ b/src/HOLCF/Stream.thy	Thu Jun 29 16:28:40 1995 +0200
    53.3 @@ -62,40 +62,41 @@
    53.4  (* stream_abs is an isomorphism with inverse stream_rep                    *)
    53.5  (* identity is the least endomorphism on 'a stream                         *)
    53.6  
    53.7 -stream_abs_iso	"stream_rep[stream_abs[x]] = x"
    53.8 -stream_rep_iso	"stream_abs[stream_rep[x]] = x"
    53.9 +stream_abs_iso	"stream_rep`(stream_abs`x) = x"
   53.10 +stream_rep_iso	"stream_abs`(stream_rep`x) = x"
   53.11  stream_copy_def	"stream_copy == (LAM f. stream_abs oo 
   53.12 - 		(ssplit[LAM x y. x ## (lift[up oo f])[y]] oo stream_rep))"
   53.13 -stream_reach	"(fix[stream_copy])[x]=x"
   53.14 + 		(ssplit`(LAM x y. (|x , (lift`(up oo f))`y|) )) oo stream_rep)"
   53.15 +stream_reach	"(fix`stream_copy)`x = x"
   53.16  
   53.17 +defs
   53.18  (* ----------------------------------------------------------------------- *)
   53.19  (* properties of additional constants                                      *)
   53.20  (* ----------------------------------------------------------------------- *)
   53.21  (* constructors                                                            *)
   53.22  
   53.23 -scons_def	"scons == (LAM x l. stream_abs[x##up[l]])"
   53.24 +scons_def	"scons == (LAM x l. stream_abs`(| x, up`l |))"
   53.25  
   53.26  (* ----------------------------------------------------------------------- *)
   53.27  (* discriminator functional                                                *)
   53.28  
   53.29  stream_when_def 
   53.30 -"stream_when == (LAM f l.ssplit[LAM x l.f[x][lift[ID][l]]][stream_rep[l]])"
   53.31 +"stream_when == (LAM f l.ssplit `(LAM x l.f`x`(lift`ID`l)) `(stream_rep`l))"
   53.32  
   53.33  (* ----------------------------------------------------------------------- *)
   53.34  (* discriminators and selectors                                            *)
   53.35  
   53.36 -is_scons_def	"is_scons == stream_when[LAM x l.TT]"
   53.37 -shd_def		"shd == stream_when[LAM x l.x]"
   53.38 -stl_def		"stl == stream_when[LAM x l.l]"
   53.39 +is_scons_def	"is_scons == stream_when`(LAM x l.TT)"
   53.40 +shd_def		"shd == stream_when`(LAM x l.x)"
   53.41 +stl_def		"stl == stream_when`(LAM x l.l)"
   53.42  
   53.43  (* ----------------------------------------------------------------------- *)
   53.44  (* the taker for streams                                                   *)
   53.45  
   53.46 -stream_take_def "stream_take == (%n.iterate(n,stream_copy,UU))"
   53.47 +stream_take_def "stream_take == (%n.iterate n stream_copy UU)"
   53.48  
   53.49  (* ----------------------------------------------------------------------- *)
   53.50  
   53.51 -stream_finite_def	"stream_finite == (%s.? n.stream_take(n)[s]=s)"
   53.52 +stream_finite_def	"stream_finite == (%s.? n.stream_take n `s=s)"
   53.53  
   53.54  (* ----------------------------------------------------------------------- *)
   53.55  (* definition of bisimulation is determined by domain equation             *)
   53.56 @@ -103,9 +104,9 @@
   53.57  
   53.58  stream_bisim_def "stream_bisim ==
   53.59  (%R.!s1 s2.
   53.60 - 	R(s1,s2) -->
   53.61 + 	R s1 s2 -->
   53.62    ((s1=UU & s2=UU) |
   53.63 -  (? x s11 s21. x~=UU & s1=scons[x][s11] & s2 = scons[x][s21] & R(s11,s21))))"
   53.64 +  (? x s11 s21. x~=UU & s1=scons`x`s11 & s2 = scons`x`s21 & R s11 s21)))"
   53.65  
   53.66  end
   53.67  
    54.1 --- a/src/HOLCF/Stream2.ML	Thu Jun 29 16:16:24 1995 +0200
    54.2 +++ b/src/HOLCF/Stream2.ML	Thu Jun 29 16:28:40 1995 +0200
    54.3 @@ -12,8 +12,8 @@
    54.4  (* expand fixed point properties                                             *)
    54.5  (* ------------------------------------------------------------------------- *)
    54.6  
    54.7 -val smap_def2 = fix_prover Stream2.thy smap_def 
    54.8 -	"smap = (LAM f s. stream_when[LAM x l.scons[f[x]][smap[f][l]]][s])";
    54.9 +val smap_def2 = fix_prover2 Stream2.thy smap_def 
   54.10 +	"smap = (LAM f s. stream_when`(LAM x l.scons`(f`x) `(smap`f`l)) `s)";
   54.11  
   54.12  
   54.13  (* ------------------------------------------------------------------------- *)
   54.14 @@ -21,7 +21,7 @@
   54.15  (* ------------------------------------------------------------------------- *)
   54.16  
   54.17  
   54.18 -qed_goal "smap1" Stream2.thy "smap[f][UU] = UU"
   54.19 +qed_goal "smap1" Stream2.thy "smap`f`UU = UU"
   54.20   (fn prems =>
   54.21  	[
   54.22  	(rtac (smap_def2 RS ssubst) 1),
   54.23 @@ -29,7 +29,7 @@
   54.24  	]);
   54.25  
   54.26  qed_goal "smap2" Stream2.thy 
   54.27 -	"x~=UU ==> smap[f][scons[x][xs]] = scons[f[x]][smap[f][xs]]"
   54.28 +	"x~=UU ==> smap`f`(scons`x`xs) = scons `(f`x) `(smap`f`xs)"
   54.29   (fn prems =>
   54.30  	[
   54.31  	(cut_facts_tac prems 1),
    55.1 --- a/src/HOLCF/Stream2.thy	Thu Jun 29 16:16:24 1995 +0200
    55.2 +++ b/src/HOLCF/Stream2.thy	Thu Jun 29 16:28:40 1995 +0200
    55.3 @@ -12,18 +12,18 @@
    55.4  
    55.5  smap		:: "('a -> 'b) -> 'a stream -> 'b stream"
    55.6  
    55.7 -rules
    55.8 +defs
    55.9  
   55.10  smap_def
   55.11 -  "smap = fix[LAM h f s. stream_when[LAM x l.scons[f[x]][h[f][l]]][s]]"
   55.12 +  "smap == fix`(LAM h f s. stream_when`(LAM x l.scons `(f`x) `(h`f`l)) `s)"
   55.13  
   55.14  
   55.15  end
   55.16        
   55.17  
   55.18  (*
   55.19 -		smap[f][UU] = UU
   55.20 -      x~=UU --> smap[f][scons[x][xs]] = scons[f[x]][smap[f][xs]]
   55.21 +		smap`f`UU = UU
   55.22 +      x~=UU --> smap`f`(scons`x`xs) = scons `(f`x) `(smap`f`xs)
   55.23  
   55.24  *)
   55.25  
    56.1 --- a/src/HOLCF/Tr1.ML	Thu Jun 29 16:16:24 1995 +0200
    56.2 +++ b/src/HOLCF/Tr1.ML	Thu Jun 29 16:28:40 1995 +0200
    56.3 @@ -70,7 +70,7 @@
    56.4  	(resolve_tac dist_less_tr 1)
    56.5  	]);
    56.6  
    56.7 -val dist_eq_tr = map prover ["~TT=UU","~FF=UU","~TT=FF"];
    56.8 +val dist_eq_tr = map prover ["TT~=UU","FF~=UU","TT~=FF"];
    56.9  val dist_eq_tr = dist_eq_tr @ (map (fn thm => (thm RS not_sym)) dist_eq_tr);
   56.10  
   56.11  (* ------------------------------------------------------------------------ *) 
   56.12 @@ -80,7 +80,7 @@
   56.13  qed_goalw "Exh_tr" Tr1.thy [FF_def,TT_def] "t=UU | t = TT | t = FF"
   56.14   (fn prems =>
   56.15  	[
   56.16 -	(res_inst_tac [("p","rep_tr[t]")] ssumE 1),
   56.17 +	(res_inst_tac [("p","rep_tr`t")] ssumE 1),
   56.18  	(rtac disjI1 1),
   56.19  	(rtac ((abs_tr_iso RS allI) RS ((rep_tr_iso RS allI) RS iso_strict )
   56.20  		  RS conjunct2 RS subst) 1),
   56.21 @@ -155,12 +155,8 @@
   56.22  	]);
   56.23  
   56.24  val tr_when = map prover [
   56.25 -			"tr_when[x][y][UU] = UU",
   56.26 -			"tr_when[x][y][TT] = x",
   56.27 -			"tr_when[x][y][FF] = y"
   56.28 +			"tr_when`x`y`UU = UU",
   56.29 +			"tr_when`x`y`TT = x",
   56.30 +			"tr_when`x`y`FF = y"
   56.31  			];
   56.32  
   56.33 -
   56.34 -
   56.35 -
   56.36 -
    57.1 --- a/src/HOLCF/Tr1.thy	Thu Jun 29 16:16:24 1995 +0200
    57.2 +++ b/src/HOLCF/Tr1.thy	Thu Jun 29 16:28:40 1995 +0200
    57.3 @@ -31,22 +31,14 @@
    57.4  
    57.5  rules
    57.6  
    57.7 -  abs_tr_iso	"abs_tr[rep_tr[u]] = u"
    57.8 -  rep_tr_iso	"rep_tr[abs_tr[x]] = x"
    57.9 +  abs_tr_iso	"abs_tr`(rep_tr`u) = u"
   57.10 +  rep_tr_iso	"rep_tr`(abs_tr`x) = x"
   57.11  
   57.12 -  TT_def	"TT == abs_tr[sinl[one]]"
   57.13 -  FF_def	"FF == abs_tr[sinr[one]]"
   57.14 -
   57.15 -  tr_when_def "tr_when == (LAM e1 e2 t.when[LAM x.e1][LAM y.e2][rep_tr[t]])"
   57.16 -
   57.17 -end
   57.18 +defs
   57.19  
   57.20 -
   57.21 -
   57.22 -
   57.23 -
   57.24 +  TT_def	"TT == abs_tr`(sinl`one)"
   57.25 +  FF_def	"FF == abs_tr`(sinr`one)"
   57.26  
   57.27 -
   57.28 -
   57.29 -
   57.30 -
   57.31 +  tr_when_def "tr_when == 
   57.32 +	(LAM e1 e2 t. sswhen`(LAM x.e1)`(LAM y.e2)`(rep_tr`t))"
   57.33 +end
    58.1 --- a/src/HOLCF/Tr2.ML	Thu Jun 29 16:16:24 1995 +0200
    58.2 +++ b/src/HOLCF/Tr2.ML	Thu Jun 29 16:28:40 1995 +0200
    58.3 @@ -72,9 +72,9 @@
    58.4  	]);
    58.5  
    58.6  val neg_thms = map prover [
    58.7 -			"neg[TT] = FF",
    58.8 -			"neg[FF] = TT",
    58.9 -			"neg[UU] = UU"
   58.10 +			"neg`TT = FF",
   58.11 +			"neg`FF = TT",
   58.12 +			"neg`UU = UU"
   58.13  			];
   58.14  
   58.15  (* ------------------------------------------------------------------------ *) 
    59.1 --- a/src/HOLCF/Tr2.thy	Thu Jun 29 16:16:24 1995 +0200
    59.2 +++ b/src/HOLCF/Tr2.thy	Thu Jun 29 16:28:40 1995 +0200
    59.3 @@ -19,20 +19,15 @@
    59.4  	"@andalso"	:: "tr => tr => tr" ("_ andalso _" [36,35] 35)
    59.5  	"@orelse"	:: "tr => tr => tr" ("_ orelse _"  [31,30] 30)
    59.6   
    59.7 -translations "x andalso y" == "trand[x][y]"
    59.8 -             "x orelse y"  == "tror[x][y]"
    59.9 -             "If b then e1 else e2 fi" == "Icifte[b][e1][e2]"
   59.10 +translations "x andalso y" == "trand`x`y"
   59.11 +             "x orelse y"  == "tror`x`y"
   59.12 +             "If b then e1 else e2 fi" == "Icifte`b`e1`e2"
   59.13                
   59.14 -rules
   59.15 +defs
   59.16  
   59.17 -  ifte_def    "Icifte == (LAM t e1 e2.tr_when[e1][e2][t])"
   59.18 -  andalso_def "trand == (LAM t1 t2.tr_when[t2][FF][t1])"
   59.19 -  orelse_def  "tror  == (LAM t1 t2.tr_when[TT][t2][t1])"
   59.20 -  neg_def     "neg == (LAM t. tr_when[FF][TT][t])"
   59.21 +  ifte_def    "Icifte == (LAM t e1 e2.tr_when`e1`e2`t)"
   59.22 +  andalso_def "trand == (LAM t1 t2.tr_when`t2`FF`t1)"
   59.23 +  orelse_def  "tror  == (LAM t1 t2.tr_when`TT`t2`t1)"
   59.24 +  neg_def     "neg == (LAM t. tr_when`FF`TT`t)"
   59.25  
   59.26  end
   59.27 -
   59.28 -
   59.29 -
   59.30 -
   59.31 -
    60.1 --- a/src/HOLCF/Void.ML	Thu Jun 29 16:16:24 1995 +0200
    60.2 +++ b/src/HOLCF/Void.ML	Thu Jun 29 16:28:40 1995 +0200
    60.3 @@ -27,14 +27,14 @@
    60.4  (* less_void is a partial ordering on void                                  *)
    60.5  (* ------------------------------------------------------------------------ *)
    60.6  
    60.7 -qed_goalw "refl_less_void" Void.thy [ less_void_def ] "less_void(x,x)"
    60.8 +qed_goalw "refl_less_void" Void.thy [ less_void_def ] "less_void x x"
    60.9  (fn prems =>
   60.10  	[
   60.11  	(fast_tac HOL_cs 1)
   60.12  	]);
   60.13  
   60.14  qed_goalw "antisym_less_void" Void.thy [ less_void_def ] 
   60.15 -	"[|less_void(x,y); less_void(y,x)|] ==> x = y"
   60.16 +	"[|less_void x y; less_void y x|] ==> x = y"
   60.17  (fn prems =>
   60.18  	[
   60.19  	(cut_facts_tac prems 1),
   60.20 @@ -44,7 +44,7 @@
   60.21  	]);
   60.22  
   60.23  qed_goalw "trans_less_void" Void.thy [ less_void_def ] 
   60.24 -	"[|less_void(x,y); less_void(y,z)|] ==> less_void(x,z)"
   60.25 +	"[|less_void x y; less_void y z|] ==> less_void x z"
   60.26  (fn prems =>
   60.27  	[
   60.28  	(cut_facts_tac prems 1),
    61.1 --- a/src/HOLCF/Void.thy	Thu Jun 29 16:16:24 1995 +0200
    61.2 +++ b/src/HOLCF/Void.thy	Thu Jun 29 16:28:40 1995 +0200
    61.3 @@ -23,13 +23,20 @@
    61.4    UU_void	:: "void"
    61.5    less_void	:: "[void,void] => bool"	
    61.6  
    61.7 -rules
    61.8 +defs
    61.9  
   61.10    (* The unique element in Void is False:bool *)
   61.11  
   61.12    UU_void_Rep_def	"UU_void_Rep == False"
   61.13    Void_def		"Void == {x. x = UU_void_Rep}"
   61.14  
   61.15 +   (*defining the abstract constants*)
   61.16 +
   61.17 +  UU_void_def	"UU_void == Abs_Void(UU_void_Rep)"  
   61.18 +  less_void_def "less_void x y == (Rep_Void x = Rep_Void y)"  
   61.19 +
   61.20 +rules
   61.21 +
   61.22    (*faking a type definition... *)
   61.23    (* void is isomorphic to Void *)
   61.24  
   61.25 @@ -37,10 +44,6 @@
   61.26    Rep_Void_inverse	"Abs_Void(Rep_Void(x)) = x"	
   61.27    Abs_Void_inverse	"y:Void ==> Rep_Void(Abs_Void(y)) = y"
   61.28  
   61.29 -   (*defining the abstract constants*)
   61.30 -
   61.31 -  UU_void_def	"UU_void == Abs_Void(UU_void_Rep)"  
   61.32 -  less_void_def "less_void(x,y) == (Rep_Void(x) = Rep_Void(y))"  
   61.33  end
   61.34  
   61.35  
    62.1 --- a/src/HOLCF/ccc1.ML	Thu Jun 29 16:16:24 1995 +0200
    62.2 +++ b/src/HOLCF/ccc1.ML	Thu Jun 29 16:28:40 1995 +0200
    62.3 @@ -14,36 +14,36 @@
    62.4  (* ------------------------------------------------------------------------ *)
    62.5  
    62.6  
    62.7 -qed_goalw "ID1" ccc1.thy [ID_def] "ID[x]=x"
    62.8 +qed_goalw "ID1" ccc1.thy [ID_def] "ID`x=x"
    62.9   (fn prems =>
   62.10  	[
   62.11  	(rtac (beta_cfun RS ssubst) 1),
   62.12 -	(rtac contX_id 1),
   62.13 +	(rtac cont_id 1),
   62.14  	(rtac refl 1)
   62.15  	]);
   62.16  
   62.17 -qed_goalw "cfcomp1" ccc1.thy [oo_def] "(f oo g)=(LAM x.f[g[x]])"
   62.18 +qed_goalw "cfcomp1" ccc1.thy [oo_def] "(f oo g)=(LAM x.f`(g`x))"
   62.19   (fn prems =>
   62.20  	[
   62.21  	(rtac (beta_cfun RS ssubst) 1),
   62.22 -	(contX_tacR 1),
   62.23 +	(cont_tacR 1),
   62.24  	(rtac (beta_cfun RS ssubst) 1),
   62.25 -	(contX_tacR 1),
   62.26 +	(cont_tacR 1),
   62.27  	(rtac refl 1)
   62.28  	]);
   62.29  
   62.30 -qed_goal "cfcomp2" ccc1.thy  "(f oo g)[x]=f[g[x]]"
   62.31 +qed_goal "cfcomp2" ccc1.thy  "(f oo g)`x=f`(g`x)"
   62.32   (fn prems =>
   62.33  	[
   62.34  	(rtac (cfcomp1 RS ssubst) 1),
   62.35  	(rtac (beta_cfun RS ssubst) 1),
   62.36 -	(contX_tacR 1),
   62.37 +	(cont_tacR 1),
   62.38  	(rtac refl 1)
   62.39  	]);
   62.40  
   62.41  
   62.42  (* ------------------------------------------------------------------------ *)
   62.43 -(* Show that interpretation of (pcpo,_->_) is a ategory                     *)
   62.44 +(* Show that interpretation of (pcpo,_->_) is a category                    *)
   62.45  (* The class of objects is interpretation of syntactical class pcpo         *)
   62.46  (* The class of arrows  between objects 'a and 'b is interpret. of 'a -> 'b *)
   62.47  (* The identity arrow is interpretation of ID                               *)
   62.48 @@ -74,7 +74,7 @@
   62.49   (fn prems =>
   62.50  	[
   62.51  	(rtac ext_cfun 1),
   62.52 -	(res_inst_tac [("s","f[g[h[x]]]")] trans  1),
   62.53 +	(res_inst_tac [("s","f`(g`(h`x))")] trans  1),
   62.54  	(rtac  (cfcomp2 RS ssubst) 1),
   62.55  	(rtac  (cfcomp2 RS ssubst) 1),
   62.56  	(rtac refl 1),
    63.1 --- a/src/HOLCF/ccc1.thy	Thu Jun 29 16:16:24 1995 +0200
    63.2 +++ b/src/HOLCF/ccc1.thy	Thu Jun 29 16:28:40 1995 +0200
    63.3 @@ -15,12 +15,12 @@
    63.4  
    63.5  syntax	"@oo"	:: "('b->'c)=>('a->'b)=>'a->'c" ("_ oo _" [101,100] 100)
    63.6       
    63.7 -translations 	"f1 oo f2" == "cfcomp[f1][f2]"
    63.8 +translations 	"f1 oo f2" == "cfcomp`f1`f2"
    63.9  
   63.10 -rules
   63.11 +defs
   63.12  
   63.13    ID_def	"ID ==(LAM x.x)"
   63.14 -  oo_def	"cfcomp == (LAM f g x.f[g[x]])" 
   63.15 +  oo_def	"cfcomp == (LAM f g x.f`(g`x))" 
   63.16  
   63.17  end
   63.18  
    64.1 --- a/src/HOLCF/ex/Coind.ML	Thu Jun 29 16:16:24 1995 +0200
    64.2 +++ b/src/HOLCF/ex/Coind.ML	Thu Jun 29 16:28:40 1995 +0200
    64.3 @@ -11,11 +11,11 @@
    64.4  (* ------------------------------------------------------------------------- *)
    64.5  
    64.6  
    64.7 -val nats_def2 = fix_prover Coind.thy nats_def 
    64.8 -	"nats = scons[dzero][smap[dsucc][nats]]";
    64.9 +val nats_def2 = fix_prover2 Coind.thy nats_def 
   64.10 +	"nats = scons`dzero`(smap`dsucc`nats)";
   64.11  
   64.12 -val from_def2 = fix_prover Coind.thy from_def 
   64.13 -	"from = (LAM n.scons[n][from[dsucc[n]]])";
   64.14 +val from_def2 = fix_prover2 Coind.thy from_def 
   64.15 +	"from = (LAM n.scons`n`(from`(dsucc`n)))";
   64.16  
   64.17  
   64.18  
   64.19 @@ -24,7 +24,7 @@
   64.20  (* ------------------------------------------------------------------------- *)
   64.21  
   64.22  
   64.23 -val from = prove_goal Coind.thy "from[n] = scons[n][from[dsucc[n]]]"
   64.24 +val from = prove_goal Coind.thy "from`n = scons`n`(from`(dsucc`n))"
   64.25   (fn prems =>
   64.26  	[
   64.27  	(rtac trans 1),
   64.28 @@ -34,7 +34,7 @@
   64.29  	]);
   64.30  
   64.31  
   64.32 -val from1 = prove_goal Coind.thy "from[UU] = UU"
   64.33 +val from1 = prove_goal Coind.thy "from`UU = UU"
   64.34   (fn prems =>
   64.35  	[
   64.36  	(rtac trans 1),
   64.37 @@ -49,12 +49,12 @@
   64.38  
   64.39  (* ------------------------------------------------------------------------- *)
   64.40  (* the example                                                               *)
   64.41 -(* prove:        nats = from[dzero]                                          *)
   64.42 +(* prove:        nats = from`dzero                                           *)
   64.43  (* ------------------------------------------------------------------------- *)
   64.44  
   64.45  
   64.46 -val coind_lemma1 = prove_goal Coind.thy "iterator[n][smap[dsucc]][nats] =\
   64.47 -\		 scons[n][iterator[dsucc[n]][smap[dsucc]][nats]]"
   64.48 +val coind_lemma1 = prove_goal Coind.thy "iterator`n`(smap`dsucc)`nats =\
   64.49 +\		 scons`n`(iterator`(dsucc`n)`(smap`dsucc)`nats)"
   64.50   (fn prems =>
   64.51  	[
   64.52  	(res_inst_tac [("s","n")] dnat_ind 1),
   64.53 @@ -74,11 +74,11 @@
   64.54  	]);
   64.55  
   64.56  
   64.57 -val nats_eq_from = prove_goal Coind.thy "nats = from[dzero]"
   64.58 +val nats_eq_from = prove_goal Coind.thy "nats = from`dzero"
   64.59   (fn prems =>
   64.60  	[
   64.61  	(res_inst_tac [("R",
   64.62 -"% p q.? n. p = iterator[n][smap[dsucc]][nats] & q = from[n]")] stream_coind 1),
   64.63 +"% p q.? n. p = iterator`n`(smap`dsucc)`nats & q = from`n")] stream_coind 1),
   64.64  	(res_inst_tac [("x","dzero")] exI 2),
   64.65  	(asm_simp_tac (HOLCF_ss addsimps coind_rews) 2),
   64.66  	(rewrite_goals_tac [stream_bisim_def]),
   64.67 @@ -91,24 +91,24 @@
   64.68  	(etac conjE 1),
   64.69  	(hyp_subst_tac 1),
   64.70  	(res_inst_tac [("x","n")] exI 1),
   64.71 -	(res_inst_tac [("x","iterator[dsucc[n]][smap[dsucc]][nats]")] exI 1),
   64.72 -	(res_inst_tac [("x","from[dsucc[n]]")] exI 1),
   64.73 +	(res_inst_tac [("x","iterator`(dsucc`n)`(smap`dsucc)`nats")] exI 1),
   64.74 +	(res_inst_tac [("x","from`(dsucc`n)")] exI 1),
   64.75  	(etac conjI 1),
   64.76  	(rtac conjI 1),
   64.77  	(rtac coind_lemma1 1),
   64.78  	(rtac conjI 1),
   64.79  	(rtac from 1),
   64.80 -	(res_inst_tac [("x","dsucc[n]")] exI 1),
   64.81 +	(res_inst_tac [("x","dsucc`n")] exI 1),
   64.82  	(fast_tac HOL_cs 1)
   64.83  	]);
   64.84  
   64.85  (* another proof using stream_coind_lemma2 *)
   64.86  
   64.87 -val nats_eq_from = prove_goal Coind.thy "nats = from[dzero]"
   64.88 +val nats_eq_from = prove_goal Coind.thy "nats = from`dzero"
   64.89   (fn prems =>
   64.90  	[
   64.91  	(res_inst_tac [("R","% p q.? n. p = \
   64.92 -\	iterator[n][smap[dsucc]][nats] & q = from[n]")] stream_coind 1),
   64.93 +\	iterator`n`(smap`dsucc)`nats & q = from`n")] stream_coind 1),
   64.94  	(rtac stream_coind_lemma2 1),
   64.95  	(strip_tac 1),
   64.96  	(etac exE 1),
   64.97 @@ -122,7 +122,7 @@
   64.98  	(rtac (coind_lemma1 RS ssubst) 1),
   64.99  	(rtac (from RS ssubst) 1),
  64.100  	(asm_simp_tac (HOLCF_ss addsimps stream_rews) 1),
  64.101 -	(res_inst_tac [("x","dsucc[n]")] exI 1),
  64.102 +	(res_inst_tac [("x","dsucc`n")] exI 1),
  64.103  	(rtac conjI 1),
  64.104  	(rtac trans 1),
  64.105  	(rtac (coind_lemma1 RS ssubst) 1),
    65.1 --- a/src/HOLCF/ex/Coind.thy	Thu Jun 29 16:16:24 1995 +0200
    65.2 +++ b/src/HOLCF/ex/Coind.thy	Thu Jun 29 16:28:40 1995 +0200
    65.3 @@ -11,27 +11,23 @@
    65.4  
    65.5  consts
    65.6  
    65.7 -nats		:: "dnat stream"
    65.8 -from		:: "dnat -> dnat stream"
    65.9 +	nats		:: "dnat stream"
   65.10 +	from		:: "dnat -> dnat stream"
   65.11  
   65.12 -rules
   65.13 +defs
   65.14 +	nats_def	"nats == fix`(LAM h.scons`dzero`(smap`dsucc`h))"
   65.15  
   65.16 -nats_def	"nats = fix[LAM h.scons[dzero][smap[dsucc][h]]]"
   65.17 -
   65.18 -from_def	"from = fix[LAM h n.scons[n][h[dsucc[n]]]]"
   65.19 +	from_def	"from == fix`(LAM h n.scons`n`(h`(dsucc`n)))"
   65.20  
   65.21  end
   65.22  
   65.23  (*
   65.24 -
   65.25 -		smap[f][UU] = UU
   65.26 -      x~=UU --> smap[f][scons[x][xs]] = scons[f[x]][smap[f][xs]]
   65.27 +		smap`f`UU = UU
   65.28 +      x~=UU --> smap`f`(scons`x`xs) = scons`(f`x)`(smap`f`xs)
   65.29  
   65.30 -		nats = scons[dzero][smap[dsucc][nats]]
   65.31 +		nats = scons`dzero`(smap`dsucc`nats)
   65.32  
   65.33 -		from[n] = scons[n][from[dsucc[n]]]
   65.34 -
   65.35 -
   65.36 +		from`n = scons`n`(from`(dsucc`n))
   65.37  *)
   65.38  
   65.39  
    66.1 --- a/src/HOLCF/ex/Dagstuhl.ML	Thu Jun 29 16:16:24 1995 +0200
    66.2 +++ b/src/HOLCF/ex/Dagstuhl.ML	Thu Jun 29 16:28:40 1995 +0200
    66.3 @@ -1,52 +1,49 @@
    66.4 -(*
    66.5  (* $Id$ *)
    66.6 -*)
    66.7 -
    66.8  
    66.9  open Dagstuhl;
   66.10  
   66.11 -val YS_def2  = fix_prover Dagstuhl.thy  YS_def  "YS  = scons[y][YS]";
   66.12 -val YYS_def2 = fix_prover Dagstuhl.thy YYS_def "YYS = scons[y][scons[y][YYS]]";
   66.13 +val YS_def2  = fix_prover2 Dagstuhl.thy  YS_def  "YS = scons`y`YS";
   66.14 +val YYS_def2 = fix_prover2 Dagstuhl.thy YYS_def "YYS = scons`y`(scons`y`YYS)";
   66.15  
   66.16  
   66.17 -val prems = goal Dagstuhl.thy "YYS << scons[y][YYS]";
   66.18 -by (rtac (YYS_def RS ssubst) 1);
   66.19 +val prems = goal Dagstuhl.thy "YYS << scons`y`YYS";
   66.20 +by (rewrite_goals_tac [YYS_def]);
   66.21  by (rtac fix_ind 1);
   66.22  by (resolve_tac adm_thms 1);
   66.23 -by (contX_tacR 1);
   66.24 +by (cont_tacR 1);
   66.25  by (rtac minimal 1);
   66.26  by (rtac (beta_cfun RS ssubst) 1);
   66.27 -by (contX_tacR 1);
   66.28 +by (cont_tacR 1);
   66.29  by (rtac monofun_cfun_arg 1);
   66.30  by (rtac monofun_cfun_arg 1);
   66.31  by (atac 1);
   66.32 -qed "lemma3";
   66.33 +val lemma3 = result();
   66.34  
   66.35 -val prems = goal Dagstuhl.thy "scons[y][YYS] << YYS";
   66.36 +val prems = goal Dagstuhl.thy "scons`y`YYS << YYS";
   66.37  by (rtac (YYS_def2 RS ssubst) 1);
   66.38  back();
   66.39  by (rtac monofun_cfun_arg 1);
   66.40  by (rtac lemma3 1);
   66.41 -qed "lemma4";
   66.42 +val lemma4=result();
   66.43  
   66.44  (* val  lemma5 = lemma3 RS (lemma4 RS antisym_less) *)
   66.45  
   66.46 -val prems = goal Dagstuhl.thy "scons[y][YYS] = YYS";
   66.47 +val prems = goal Dagstuhl.thy "scons`y`YYS = YYS";
   66.48  by (rtac antisym_less 1);
   66.49  by (rtac lemma4 1);
   66.50  by (rtac lemma3 1);
   66.51 -qed "lemma5";
   66.52 +val lemma5=result();
   66.53  
   66.54  val prems = goal Dagstuhl.thy "YS = YYS";
   66.55  by (rtac stream_take_lemma 1);
   66.56  by (nat_ind_tac "n" 1);
   66.57  by (simp_tac (HOLCF_ss addsimps stream_rews) 1);
   66.58 -by (res_inst_tac [("y1","y")] (YS_def2 RS ssubst) 1);
   66.59 -by (res_inst_tac [("y1","y")] (YYS_def2 RS ssubst) 1);
   66.60 +by (rtac (YS_def2 RS ssubst) 1);
   66.61 +by (rtac (YYS_def2 RS ssubst) 1);
   66.62  by (asm_simp_tac (HOLCF_ss addsimps stream_rews) 1);
   66.63  by (rtac (lemma5 RS sym RS subst) 1);
   66.64  by (rtac refl 1);
   66.65 -qed "wir_moel";
   66.66 +val wir_moel=result();
   66.67  
   66.68  (* ------------------------------------------------------------------------ *)
   66.69  (* Zweite L"osung: Bernhard M"oller                                         *)
   66.70 @@ -55,95 +52,24 @@
   66.71  (* ------------------------------------------------------------------------ *)
   66.72  
   66.73  val prems = goal Dagstuhl.thy "YYS << YS";
   66.74 -by (rtac (YYS_def RS ssubst) 1);
   66.75 +by (rewrite_goals_tac [YYS_def]);
   66.76  by (rtac fix_least 1);
   66.77  by (rtac (beta_cfun RS ssubst) 1);
   66.78 -by (contX_tacR 1);
   66.79 +by (cont_tacR 1);
   66.80  by (simp_tac (HOLCF_ss addsimps [YS_def2 RS sym]) 1);
   66.81 -qed "lemma6";
   66.82 +val lemma6=result();
   66.83  
   66.84  val prems = goal Dagstuhl.thy "YS << YYS";
   66.85 -by (rtac (YS_def RS ssubst) 1);
   66.86 +by (rewrite_goals_tac [YS_def]);
   66.87  by (rtac fix_ind 1);
   66.88  by (resolve_tac adm_thms 1);
   66.89 -by (contX_tacR 1);
   66.90 +by (cont_tacR 1);
   66.91  by (rtac minimal 1);
   66.92  by (rtac (beta_cfun RS ssubst) 1);
   66.93 -by (contX_tacR 1);
   66.94 -by (res_inst_tac [("y2","y10")] (lemma5 RS sym RS ssubst) 1);
   66.95 +by (cont_tacR 1);
   66.96 +by (rtac (lemma5 RS sym RS ssubst) 1);
   66.97  by (etac monofun_cfun_arg 1);
   66.98 -qed "lemma7";
   66.99 +val lemma7 = result();
  66.100  
  66.101  val  wir_moel = lemma6 RS (lemma7 RS antisym_less);
  66.102  
  66.103 -
  66.104 -(* ------------------------------------------------------------------------ *)
  66.105 -(* L"osung aus Dagstuhl (F.R.)                                              *)
  66.106 -(* Wie oben, jedoch ohne Konstantendefinition f"ur YS, YYS                  *)
  66.107 -(* ------------------------------------------------------------------------ *)
  66.108 -
  66.109 -val prems = goal Stream2.thy
  66.110 -    "(fix[LAM x. scons[y][x]]) = scons[y][fix[LAM x. scons[y][x]]]";
  66.111 -by (rtac (fix_eq RS ssubst) 1);
  66.112 -back();
  66.113 -back();
  66.114 -by (rtac (beta_cfun RS ssubst) 1);
  66.115 -by (contX_tacR 1);
  66.116 -by (rtac refl 1);
  66.117 -qed "lemma1";
  66.118 -
  66.119 -val prems = goal Stream2.thy
  66.120 -    "(fix[ LAM z. scons[y][scons[y][z]]]) = \
  66.121 -\     scons[y][scons[y][(fix[ LAM z. scons[y][scons[y][z]]])]]";
  66.122 -by (rtac (fix_eq RS ssubst) 1);
  66.123 -back();
  66.124 -back();
  66.125 -by (rtac (beta_cfun RS ssubst) 1);
  66.126 -by (contX_tacR 1);
  66.127 -by (rtac refl 1);
  66.128 -qed "lemma2";
  66.129 -
  66.130 -val prems = goal Stream2.thy
  66.131 -"fix[LAM z. scons[y][scons[y][z]]] << \
  66.132 -\ scons[y][fix[LAM z. scons[y][scons[y][z]]]]";
  66.133 -by (rtac fix_ind 1);
  66.134 -by (resolve_tac adm_thms 1);
  66.135 -by (contX_tacR 1);
  66.136 -by (rtac minimal 1);
  66.137 -by (asm_simp_tac (HOLCF_ss addsimps stream_rews) 1);
  66.138 -by (rtac monofun_cfun_arg 1);
  66.139 -by (rtac monofun_cfun_arg 1);
  66.140 -by (atac 1);
  66.141 -qed "lemma3";
  66.142 -
  66.143 -val prems = goal Stream2.thy
  66.144 -" scons[y][fix[LAM z. scons[y][scons[y][z]]]] <<\
  66.145 -\ fix[LAM z. scons[y][scons[y][z]]]";
  66.146 -by (rtac (lemma2 RS ssubst) 1);
  66.147 -back();
  66.148 -by (rtac monofun_cfun_arg 1);
  66.149 -by (rtac lemma3 1);
  66.150 -qed "lemma4";
  66.151 -
  66.152 -val prems = goal Stream2.thy
  66.153 -" scons[y][fix[LAM z. scons[y][scons[y][z]]]] =\
  66.154 -\ fix[LAM z. scons[y][scons[y][z]]]";
  66.155 -by (rtac antisym_less 1);
  66.156 -by (rtac lemma4 1);
  66.157 -by (rtac lemma3 1);
  66.158 -qed "lemma5";
  66.159 -
  66.160 -val prems = goal Stream2.thy
  66.161 -    "(fix[LAM x. scons[y][x]]) = (fix[ LAM z. scons[y][scons[y][z]]])";
  66.162 -by (rtac stream_take_lemma 1);
  66.163 -by (nat_ind_tac "n" 1);
  66.164 -by (simp_tac (HOLCF_ss addsimps stream_rews) 1);
  66.165 -by (rtac (lemma1 RS ssubst) 1);
  66.166 -by (rtac (lemma2 RS ssubst) 1);
  66.167 -by (asm_simp_tac (HOLCF_ss addsimps stream_rews) 1);
  66.168 -by (rtac (lemma5 RS sym RS subst) 1);
  66.169 -by (rtac refl 1);
  66.170 -qed "wir_moel";
  66.171 -
  66.172 -
  66.173 -
    67.1 --- a/src/HOLCF/ex/Dagstuhl.thy	Thu Jun 29 16:16:24 1995 +0200
    67.2 +++ b/src/HOLCF/ex/Dagstuhl.thy	Thu Jun 29 16:28:40 1995 +0200
    67.3 @@ -4,13 +4,14 @@
    67.4  Dagstuhl  =  Stream2 +
    67.5  
    67.6  consts
    67.7 +	y  :: "'a"
    67.8         YS  :: "'a stream"
    67.9         YYS :: "'a stream"
   67.10  
   67.11 -rules
   67.12 +defs
   67.13  
   67.14 -YS_def    "YS  = fix[LAM x. scons[y][x]]"
   67.15 -YYS_def   "YYS = fix[LAM z. scons[y][scons[y][z]]]"
   67.16 +YS_def    "YS  == fix`(LAM x. scons`y`x)"
   67.17 +YYS_def   "YYS == fix`(LAM z. scons`y`(scons`y`z))"
   67.18    
   67.19  end
   67.20  
    68.1 --- a/src/HOLCF/ex/Hoare.ML	Thu Jun 29 16:16:24 1995 +0200
    68.2 +++ b/src/HOLCF/ex/Hoare.ML	Thu Jun 29 16:28:40 1995 +0200
    68.3 @@ -8,7 +8,7 @@
    68.4  
    68.5  (* --------- pure HOLCF logic, some little lemmas ------ *)
    68.6  
    68.7 -val hoare_lemma2 = prove_goal HOLCF.thy "~b=TT ==> b=FF | b=UU"
    68.8 +val hoare_lemma2 = prove_goal HOLCF.thy "b~=TT ==> b=FF | b=UU"
    68.9   (fn prems =>
   68.10  	[
   68.11  	(cut_facts_tac prems 1),
   68.12 @@ -20,15 +20,15 @@
   68.13  	]);
   68.14  
   68.15  val hoare_lemma3 = prove_goal HOLCF.thy 
   68.16 -" (!k.b1[iterate(k,g,x)]=TT) | (? k.~ b1[iterate(k,g,x)]=TT)"
   68.17 +" (!k.b1`(iterate k g x) = TT) | (? k. b1`(iterate k g x)~=TT)"
   68.18   (fn prems =>
   68.19  	[
   68.20  	(fast_tac HOL_cs 1)
   68.21  	]);
   68.22  
   68.23  val hoare_lemma4 = prove_goal HOLCF.thy 
   68.24 -"(? k.~ b1[iterate(k,g,x)]=TT) ==> \
   68.25 -\ ? k.b1[iterate(k,g,x)]=FF | b1[iterate(k,g,x)]=UU"
   68.26 +"(? k. b1`(iterate k g x) ~= TT) ==> \
   68.27 +\ ? k. b1`(iterate k g x) = FF | b1`(iterate k g x) = UU"
   68.28   (fn prems =>
   68.29  	[
   68.30  	(cut_facts_tac prems 1),
   68.31 @@ -39,9 +39,9 @@
   68.32  	]);
   68.33  
   68.34  val hoare_lemma5 = prove_goal HOLCF.thy 
   68.35 -"[|(? k.~ b1[iterate(k,g,x)]=TT);\
   68.36 -\   k=theleast(%n.~ b1[iterate(n,g,x)]=TT)|] ==> \
   68.37 -\ b1[iterate(k,g,x)]=FF | b1[iterate(k,g,x)]=UU"
   68.38 +"[|(? k. b1`(iterate k g x) ~= TT);\
   68.39 +\   k=theleast(%n. b1`(iterate n g x) ~= TT)|] ==> \
   68.40 +\ b1`(iterate k g x)=FF | b1`(iterate k g x)=UU"
   68.41   (fn prems =>
   68.42  	[
   68.43  	(cut_facts_tac prems 1),
   68.44 @@ -51,7 +51,7 @@
   68.45  	(etac theleast1 1)
   68.46  	]);
   68.47  
   68.48 -val hoare_lemma6 = prove_goal HOLCF.thy "b=UU ==> ~b=TT"
   68.49 +val hoare_lemma6 = prove_goal HOLCF.thy "b=UU ==> b~=TT"
   68.50   (fn prems =>
   68.51  	[
   68.52  	(cut_facts_tac prems 1),
   68.53 @@ -59,7 +59,7 @@
   68.54  	(resolve_tac dist_eq_tr 1)
   68.55  	]);
   68.56  
   68.57 -val hoare_lemma7 = prove_goal HOLCF.thy "b=FF ==> ~b=TT"
   68.58 +val hoare_lemma7 = prove_goal HOLCF.thy "b=FF ==> b~=TT"
   68.59   (fn prems =>
   68.60  	[
   68.61  	(cut_facts_tac prems 1),
   68.62 @@ -68,16 +68,16 @@
   68.63  	]);
   68.64  
   68.65  val hoare_lemma8 = prove_goal HOLCF.thy 
   68.66 -"[|(? k.~ b1[iterate(k,g,x)]=TT);\
   68.67 -\   k=theleast(%n.~ b1[iterate(n,g,x)]=TT)|] ==> \
   68.68 -\ !m. m<k --> b1[iterate(m,g,x)]=TT"
   68.69 +"[|(? k. b1`(iterate k g x) ~= TT);\
   68.70 +\   k=theleast(%n. b1`(iterate n g x) ~= TT)|] ==> \
   68.71 +\ !m. m < k --> b1`(iterate m g x)=TT"
   68.72   (fn prems =>
   68.73  	[
   68.74  	(cut_facts_tac prems 1),
   68.75  	(hyp_subst_tac 1),
   68.76  	(etac exE 1),
   68.77  	(strip_tac 1),
   68.78 -	(res_inst_tac [("p","b1[iterate(m,g,x)]")] trE 1),
   68.79 +	(res_inst_tac [("p","b1`(iterate m g x)")] trE 1),
   68.80  	(atac 2),
   68.81  	(rtac (le_less_trans RS less_anti_refl) 1),
   68.82  	(atac 2),
   68.83 @@ -89,8 +89,9 @@
   68.84  	(etac hoare_lemma7 1)
   68.85  	]);
   68.86  
   68.87 +
   68.88  val hoare_lemma28 = prove_goal HOLCF.thy 
   68.89 -"b1[y::'a]=(UU::tr) ==> b1[UU] = UU"
   68.90 +"b1`(y::'a)=(UU::tr) ==> b1`UU = UU"
   68.91   (fn prems =>
   68.92  	[
   68.93  	(cut_facts_tac prems 1),
   68.94 @@ -103,15 +104,15 @@
   68.95  (* ----- access to definitions ----- *)
   68.96  
   68.97  val p_def2 = prove_goalw Hoare.thy [p_def]
   68.98 -"p = fix[LAM f x. If b1[x] then f[g[x]] else x fi]"
   68.99 +"p = fix`(LAM f x. If b1`x then f`(g`x) else x fi)"
  68.100   (fn prems =>
  68.101  	[
  68.102  	(rtac refl 1)
  68.103  	]);
  68.104  
  68.105  val q_def2 = prove_goalw Hoare.thy [q_def]
  68.106 -"q = fix[LAM f x. If b1[x] orelse b2[x] then \
  68.107 -\     f[g[x]] else x fi]"
  68.108 +"q = fix`(LAM f x. If b1`x orelse b2`x then \
  68.109 +\     f`(g`x) else x fi)"
  68.110   (fn prems =>
  68.111  	[
  68.112  	(rtac refl 1)
  68.113 @@ -119,7 +120,7 @@
  68.114  
  68.115  
  68.116  val p_def3 = prove_goal Hoare.thy 
  68.117 -"p[x] = If b1[x] then p[g[x]] else x fi"
  68.118 +"p`x = If b1`x then p`(g`x) else x fi"
  68.119   (fn prems =>
  68.120  	[
  68.121  	(fix_tac3 p_def 1),
  68.122 @@ -127,7 +128,7 @@
  68.123  	]);
  68.124  
  68.125  val q_def3 = prove_goal Hoare.thy 
  68.126 -"q[x] = If b1[x] orelse b2[x] then q[g[x]] else x fi"
  68.127 +"q`x = If b1`x orelse b2`x then q`(g`x) else x fi"
  68.128   (fn prems =>
  68.129  	[
  68.130  	(fix_tac3 q_def 1),
  68.131 @@ -137,18 +138,18 @@
  68.132  (** --------- proves about iterations of p and q ---------- **)
  68.133  
  68.134  val hoare_lemma9 = prove_goal Hoare.thy 
  68.135 -"(! m. m<Suc(k) --> b1[iterate(m,g,x)]=TT) -->\
  68.136 -\  p[iterate(k,g,x)]=p[x]"
  68.137 +"(! m. m< Suc k --> b1`(iterate m g x)=TT) -->\
  68.138 +\  p`(iterate k g x)=p`x"
  68.139   (fn prems =>
  68.140  	[
  68.141  	(nat_ind_tac "k" 1),
  68.142  	(simp_tac iterate_ss 1),
  68.143  	(simp_tac iterate_ss 1),
  68.144  	(strip_tac 1),
  68.145 -	(res_inst_tac [("s","p[iterate(k1,g,x)]")] trans 1),
  68.146 +	(res_inst_tac [("s","p`(iterate k1 g x)")] trans 1),
  68.147  	(rtac trans 1),
  68.148  	(rtac (p_def3 RS sym) 2),
  68.149 -	(res_inst_tac [("s","TT"),("t","b1[iterate(k1,g,x)]")] ssubst 1),
  68.150 +	(res_inst_tac [("s","TT"),("t","b1`(iterate k1 g x)")] ssubst 1),
  68.151  	(rtac mp 1),
  68.152  	(etac spec 1),
  68.153  	(simp_tac nat_ss 1),
  68.154 @@ -162,18 +163,18 @@
  68.155  	]);
  68.156  
  68.157  val hoare_lemma24 = prove_goal Hoare.thy 
  68.158 -"(! m. m<Suc(k) --> b1[iterate(m,g,x)]=TT) --> \
  68.159 -\ q[iterate(k,g,x)]=q[x]"
  68.160 +"(! m. m< Suc k --> b1`(iterate m g x)=TT) --> \
  68.161 +\ q`(iterate k g x)=q`x"
  68.162   (fn prems =>
  68.163  	[
  68.164  	(nat_ind_tac "k" 1),
  68.165  	(simp_tac iterate_ss 1),
  68.166  	(simp_tac iterate_ss 1),
  68.167  	(strip_tac 1),
  68.168 -	(res_inst_tac [("s","q[iterate(k1,g,x)]")] trans 1),
  68.169 +	(res_inst_tac [("s","q`(iterate k1 g x)")] trans 1),
  68.170  	(rtac trans 1),
  68.171  	(rtac (q_def3 RS sym) 2),
  68.172 -	(res_inst_tac [("s","TT"),("t","b1[iterate(k1,g,x)]")] ssubst 1),
  68.173 +	(res_inst_tac [("s","TT"),("t","b1`(iterate k1 g x)")] ssubst 1),
  68.174  	(rtac mp 1),
  68.175  	(etac spec 1),
  68.176  	(simp_tac nat_ss 1),
  68.177 @@ -186,20 +187,21 @@
  68.178  	(simp_tac nat_ss 1)
  68.179  	]);
  68.180  
  68.181 -(* -------- results about p for case (? k.~ b1[iterate(k,g,x)]=TT) ------- *)
  68.182 +(* -------- results about p for case (? k. b1`(iterate k g x)~=TT) ------- *)
  68.183  
  68.184  
  68.185  val hoare_lemma10 = (hoare_lemma8 RS (hoare_lemma9 RS mp));
  68.186  (* 
  68.187 -[| ? k. ~ b1[iterate(k,g,?x1)] = TT;
  68.188 -   Suc(?k3) = theleast(%n. ~ b1[iterate(n,g,?x1)] = TT) |] ==>
  68.189 -p[iterate(?k3,g,?x1)] = p[?x1]
  68.190 +val hoare_lemma10 = "[| ? k. b1`(iterate k g ?x1) ~= TT;
  68.191 +    Suc ?k3 = theleast (%n. b1`(iterate n g ?x1) ~= TT) |] ==>
  68.192 + p`(iterate ?k3 g ?x1) = p`?x1" : thm
  68.193 +
  68.194  *)
  68.195  
  68.196  val hoare_lemma11 = prove_goal Hoare.thy 
  68.197 -"(? n.b1[iterate(n,g,x)]~=TT) ==>\
  68.198 -\ k=theleast(%n.b1[iterate(n,g,x)]~=TT) & b1[iterate(k,g,x)]=FF \
  68.199 -\ --> p[x] = iterate(k,g,x)"
  68.200 +"(? n.b1`(iterate n g x) ~= TT) ==>\
  68.201 +\ k=theleast(%n.b1`(iterate n g x) ~= TT) & b1`(iterate k g x)=FF \
  68.202 +\ --> p`x = iterate k g x"
  68.203   (fn prems =>
  68.204  	[
  68.205  	(cut_facts_tac prems 1),
  68.206 @@ -211,7 +213,7 @@
  68.207  	(rtac trans 1),
  68.208  	(rtac p_def3 1),
  68.209  	(asm_simp_tac HOLCF_ss  1),
  68.210 -	(eres_inst_tac [("s","0"),("t","theleast(%n. b1[iterate(n, g, x)] ~= TT)")]
  68.211 +	(eres_inst_tac [("s","0"),("t","theleast(%n. b1`(iterate n g x) ~= TT)")]
  68.212  	subst 1),
  68.213  	(simp_tac iterate_ss 1),
  68.214  	(hyp_subst_tac 1),
  68.215 @@ -222,7 +224,7 @@
  68.216  	(atac 1),
  68.217  	(rtac trans 1),
  68.218  	(rtac p_def3 1),
  68.219 -	(res_inst_tac [("s","TT"),("t","b1[iterate(xa,g,x)]")] ssubst 1),
  68.220 +	(res_inst_tac [("s","TT"),("t","b1`(iterate xa g x)")] ssubst 1),
  68.221  	(rtac (hoare_lemma8 RS spec RS mp) 1),
  68.222  	(atac 1),
  68.223  	(atac 1),
  68.224 @@ -236,9 +238,9 @@
  68.225  	]);
  68.226  
  68.227  val hoare_lemma12 = prove_goal Hoare.thy 
  68.228 -"(? n.~ b1[iterate(n,g,x)]=TT) ==>\
  68.229 -\ k=theleast(%n.~ b1[iterate(n,g,x)]=TT) & b1[iterate(k,g,x)]=UU \
  68.230 -\ --> p[x] = UU"
  68.231 +"(? n. b1`(iterate n g x) ~= TT) ==>\
  68.232 +\ k=theleast(%n. b1`(iterate n g x)~=TT) & b1`(iterate k g x)=UU \
  68.233 +\ --> p`x = UU"
  68.234   (fn prems =>
  68.235  	[
  68.236  	(cut_facts_tac prems 1),
  68.237 @@ -260,7 +262,7 @@
  68.238  	(atac 1),
  68.239  	(rtac trans 1),
  68.240  	(rtac p_def3 1),
  68.241 -	(res_inst_tac [("s","TT"),("t","b1[iterate(xa,g,x)]")] ssubst 1),
  68.242 +	(res_inst_tac [("s","TT"),("t","b1`(iterate xa g x)")] ssubst 1),
  68.243  	(rtac (hoare_lemma8 RS spec RS mp) 1),
  68.244  	(atac 1),
  68.245  	(atac 1),
  68.246 @@ -271,10 +273,10 @@
  68.247  	(asm_simp_tac HOLCF_ss  1)
  68.248  	]);
  68.249  
  68.250 -(* -------- results about p for case  (! k. b1[iterate(k,g,x)]=TT) ------- *)
  68.251 +(* -------- results about p for case  (! k. b1`(iterate k g x)=TT) ------- *)
  68.252  
  68.253  val fernpass_lemma = prove_goal Hoare.thy 
  68.254 -"(! k. b1[iterate(k,g,x)]=TT) ==> !k.p[iterate(k,g,x)] = UU"
  68.255 +"(! k. b1`(iterate k g x)=TT) ==> !k.p`(iterate k g x) = UU"
  68.256   (fn prems =>
  68.257  	[
  68.258  	(cut_facts_tac prems 1),
  68.259 @@ -283,13 +285,13 @@
  68.260  	(rtac adm_all 1),
  68.261  	(rtac allI 1),
  68.262  	(rtac adm_eq 1),
  68.263 -	(contX_tacR 1),
  68.264 +	(cont_tacR 1),
  68.265  	(rtac allI 1),
  68.266  	(rtac (strict_fapp1 RS ssubst) 1),
  68.267  	(rtac refl 1),
  68.268  	(simp_tac iterate_ss 1),
  68.269  	(rtac allI 1),
  68.270 -	(res_inst_tac [("s","TT"),("t","b1[iterate(k,g,x)]")] ssubst 1),
  68.271 +	(res_inst_tac [("s","TT"),("t","b1`(iterate k g x)")] ssubst 1),
  68.272  	(etac spec 1),
  68.273  	(asm_simp_tac HOLCF_ss 1),
  68.274  	(rtac (iterate_Suc RS subst) 1),
  68.275 @@ -297,7 +299,7 @@
  68.276  	]);
  68.277  
  68.278  val hoare_lemma16 = prove_goal Hoare.thy 
  68.279 -"(! k. b1[iterate(k,g,x)]=TT) ==> p[x] = UU"
  68.280 +"(! k. b1`(iterate k g x)=TT) ==> p`x = UU"
  68.281   (fn prems =>
  68.282  	[
  68.283  	(cut_facts_tac prems 1),
  68.284 @@ -305,10 +307,10 @@
  68.285  	(etac (fernpass_lemma RS spec) 1)
  68.286  	]);
  68.287  
  68.288 -(* -------- results about q for case  (! k. b1[iterate(k,g,x)]=TT) ------- *)
  68.289 +(* -------- results about q for case  (! k. b1`(iterate k g x)=TT) ------- *)
  68.290  
  68.291  val hoare_lemma17 = prove_goal Hoare.thy 
  68.292 -"(! k. b1[iterate(k,g,x)]=TT) ==> !k.q[iterate(k,g,x)] = UU"
  68.293 +"(! k. b1`(iterate k g x)=TT) ==> !k.q`(iterate k g x) = UU"
  68.294   (fn prems =>
  68.295  	[
  68.296  	(cut_facts_tac prems 1),
  68.297 @@ -317,13 +319,13 @@
  68.298  	(rtac adm_all 1),
  68.299  	(rtac allI 1),
  68.300  	(rtac adm_eq 1),
  68.301 -	(contX_tacR 1),
  68.302 +	(cont_tacR 1),
  68.303  	(rtac allI 1),
  68.304  	(rtac (strict_fapp1 RS ssubst) 1),
  68.305  	(rtac refl 1),
  68.306  	(rtac allI 1),
  68.307  	(simp_tac iterate_ss 1),
  68.308 -	(res_inst_tac [("s","TT"),("t","b1[iterate(k,g,x)]")] ssubst 1),
  68.309 +	(res_inst_tac [("s","TT"),("t","b1`(iterate k g x)")] ssubst 1),
  68.310  	(etac spec 1),
  68.311  	(asm_simp_tac HOLCF_ss  1),
  68.312  	(rtac (iterate_Suc RS subst) 1),
  68.313 @@ -331,7 +333,7 @@
  68.314  	]);
  68.315  
  68.316  val hoare_lemma18 = prove_goal Hoare.thy 
  68.317 -"(! k. b1[iterate(k,g,x)]=TT) ==> q[x] = UU"
  68.318 +"(! k. b1`(iterate k g x)=TT) ==> q`x = UU"
  68.319   (fn prems =>
  68.320  	[
  68.321  	(cut_facts_tac prems 1),
  68.322 @@ -340,7 +342,7 @@
  68.323  	]);
  68.324  
  68.325  val hoare_lemma19 = prove_goal Hoare.thy 
  68.326 -"(!k. (b1::'a->tr)[iterate(k,g,x)]=TT) ==> b1[UU::'a] = UU | (!y.b1[y::'a]=TT)"
  68.327 +"(!k. (b1::'a->tr)`(iterate k g x)=TT) ==> b1`(UU::'a) = UU | (!y.b1`(y::'a)=TT)"
  68.328   (fn prems =>
  68.329  	[
  68.330  	(cut_facts_tac prems 1),
  68.331 @@ -350,7 +352,7 @@
  68.332  	]);
  68.333  
  68.334  val hoare_lemma20 = prove_goal Hoare.thy 
  68.335 -"(! y. b1[y::'a]=TT) ==> !k.q[iterate(k,g,x::'a)] = UU"
  68.336 +"(! y. b1`(y::'a)=TT) ==> !k.q`(iterate k g (x::'a)) = UU"
  68.337   (fn prems =>
  68.338  	[
  68.339  	(cut_facts_tac prems 1),
  68.340 @@ -359,13 +361,13 @@
  68.341  	(rtac adm_all 1),
  68.342  	(rtac allI 1),
  68.343  	(rtac adm_eq 1),
  68.344 -	(contX_tacR 1),
  68.345 +	(cont_tacR 1),
  68.346  	(rtac allI 1),
  68.347  	(rtac (strict_fapp1 RS ssubst) 1),
  68.348  	(rtac refl 1),
  68.349  	(rtac allI 1),
  68.350  	(simp_tac iterate_ss 1),
  68.351 -	(res_inst_tac [("s","TT"),("t","b1[iterate(k,g,x::'a)]")] ssubst 1),
  68.352 +	(res_inst_tac [("s","TT"),("t","b1`(iterate k g (x::'a))")] ssubst 1),
  68.353  	(etac spec 1),
  68.354  	(asm_simp_tac HOLCF_ss  1),
  68.355  	(rtac (iterate_Suc RS subst) 1),
  68.356 @@ -373,7 +375,7 @@
  68.357  	]);
  68.358  
  68.359  val hoare_lemma21 = prove_goal Hoare.thy 
  68.360 -"(! y. b1[y::'a]=TT) ==> q[x::'a] = UU"
  68.361 +"(! y. b1`(y::'a)=TT) ==> q`(x::'a) = UU"
  68.362   (fn prems =>
  68.363  	[
  68.364  	(cut_facts_tac prems 1),
  68.365 @@ -382,7 +384,7 @@
  68.366  	]);
  68.367  
  68.368  val hoare_lemma22 = prove_goal Hoare.thy 
  68.369 -"b1[UU::'a]=UU ==> q[UU::'a] = UU"
  68.370 +"b1`(UU::'a)=UU ==> q`(UU::'a) = UU"
  68.371   (fn prems =>
  68.372  	[
  68.373  	(cut_facts_tac prems 1),
  68.374 @@ -390,19 +392,19 @@
  68.375  	(asm_simp_tac HOLCF_ss  1)
  68.376  	]);
  68.377  
  68.378 -(* -------- results about q for case (? k.~ b1[iterate(k,g,x)]=TT) ------- *)
  68.379 +(* -------- results about q for case (? k. b1`(iterate k g x) ~= TT) ------- *)
  68.380  
  68.381  val hoare_lemma25 = (hoare_lemma8 RS (hoare_lemma24 RS mp) );
  68.382  (* 
  68.383 -[| ? k. ~ ?b1.1[iterate(k,?g1,?x1)] = TT;
  68.384 -   Suc(?k3) = theleast(%n. ~ ?b1.1[iterate(n,?g1,?x1)] = TT) |] ==>
  68.385 -q[iterate(?k3,?g1,?x1)] = q[?x1]
  68.386 +val hoare_lemma25 = "[| ? k. b1`(iterate k g ?x1) ~= TT;
  68.387 +    Suc ?k3 = theleast (%n. b1`(iterate n g ?x1) ~= TT) |] ==>
  68.388 + q`(iterate ?k3 g ?x1) = q`?x1" : thm
  68.389  *)
  68.390  
  68.391  val hoare_lemma26 = prove_goal Hoare.thy 
  68.392 -"(? n.~ b1[iterate(n,g,x)]=TT) ==>\
  68.393 -\ k=theleast(%n.~ b1[iterate(n,g,x)]=TT) & b1[iterate(k,g,x)]=FF \
  68.394 -\ --> q[x] = q[iterate(k,g,x)]"
  68.395 +"(? n. b1`(iterate n g x)~=TT) ==>\
  68.396 +\ k=theleast(%n. b1`(iterate n g x) ~= TT) & b1`(iterate k g x) =FF \
  68.397 +\ --> q`x = q`(iterate k g x)"
  68.398   (fn prems =>
  68.399  	[
  68.400  	(cut_facts_tac prems 1),
  68.401 @@ -419,7 +421,7 @@
  68.402  	(atac 1),
  68.403  	(rtac trans 1),
  68.404  	(rtac q_def3 1),
  68.405 -	(res_inst_tac [("s","TT"),("t","b1[iterate(xa,g,x)]")] ssubst 1),
  68.406 +	(res_inst_tac [("s","TT"),("t","b1`(iterate xa g x)")] ssubst 1),
  68.407  	(rtac (hoare_lemma8 RS spec RS mp) 1),
  68.408  	(atac 1),
  68.409  	(atac 1),
  68.410 @@ -429,9 +431,9 @@
  68.411  
  68.412  
  68.413  val hoare_lemma27 = prove_goal Hoare.thy 
  68.414 -"(? n.~ b1[iterate(n,g,x)]=TT) ==>\
  68.415 -\ k=theleast(%n.~ b1[iterate(n,g,x)]=TT) & b1[iterate(k,g,x)]=UU \
  68.416 -\ --> q[x] = UU"
  68.417 +"(? n. b1`(iterate n g x) ~= TT) ==>\
  68.418 +\ k=theleast(%n. b1`(iterate n g x)~=TT) & b1`(iterate k g x)=UU \
  68.419 +\ --> q`x = UU"
  68.420   (fn prems =>
  68.421  	[
  68.422  	(cut_facts_tac prems 1),
  68.423 @@ -452,7 +454,7 @@
  68.424  	(atac 1),
  68.425  	(rtac trans 1),
  68.426  	(rtac q_def3 1),
  68.427 -	(res_inst_tac [("s","TT"),("t","b1[iterate(xa,g,x)]")] ssubst 1),
  68.428 +	(res_inst_tac [("s","TT"),("t","b1`(iterate xa g x)")] ssubst 1),
  68.429  	(rtac (hoare_lemma8 RS spec RS mp) 1),
  68.430  	(atac 1),
  68.431  	(atac 1),
  68.432 @@ -463,10 +465,10 @@
  68.433  	(asm_simp_tac HOLCF_ss  1)
  68.434  	]);
  68.435  
  68.436 -(* ------- (! k. b1[iterate(k,g,x)]=TT) ==> q o p = q   ----- *)
  68.437 +(* ------- (! k. b1`(iterate k g x)=TT) ==> q o p = q   ----- *)
  68.438  
  68.439  val hoare_lemma23 = prove_goal Hoare.thy 
  68.440 -"(! k. b1[iterate(k,g,x)]=TT) ==> q[p[x]] = q[x]"
  68.441 +"(! k. b1`(iterate k g x)=TT) ==> q`(p`x) = q`x"
  68.442   (fn prems =>
  68.443  	[
  68.444  	(cut_facts_tac prems 1),
  68.445 @@ -486,10 +488,10 @@
  68.446  	(rtac refl 1)
  68.447  	]);
  68.448  
  68.449 -(* ------------  ? k. ~ b1[iterate(k,g,x)] = TT ==> q o p = q   ----- *)
  68.450 +(* ------------  ? k. b1~(iterate k g x) ~= TT ==> q o p = q   ----- *)
  68.451  
  68.452  val hoare_lemma29 = prove_goal Hoare.thy 
  68.453 -"? k. ~ b1[iterate(k,g,x)] = TT ==> q[p[x]] = q[x]"
  68.454 +"? k. b1`(iterate k g x) ~= TT ==> q`(p`x) = q`x"
  68.455   (fn prems =>
  68.456  	[
  68.457  	(cut_facts_tac prems 1),
    69.1 --- a/src/HOLCF/ex/Hoare.thy	Thu Jun 29 16:16:24 1995 +0200
    69.2 +++ b/src/HOLCF/ex/Hoare.thy	Thu Jun 29 16:28:40 1995 +0200
    69.3 @@ -5,12 +5,12 @@
    69.4  
    69.5  Theory for an example by C.A.R. Hoare 
    69.6  
    69.7 -p x = if b1(x) 
    69.8 -         then p(g(x))
    69.9 +p x = if b1 x 
   69.10 +         then p (g x)
   69.11           else x fi
   69.12  
   69.13 -q x = if b1(x) orelse b2(x) 
   69.14 -         then q (g(x))
   69.15 +q x = if b1 x orelse b2 x 
   69.16 +         then q (g x)
   69.17           else x fi
   69.18  
   69.19  Prove: for all b1 b2 g . 
   69.20 @@ -30,14 +30,13 @@
   69.21  	p :: "'a -> 'a"
   69.22  	q :: "'a -> 'a"
   69.23  
   69.24 -rules
   69.25 +defs
   69.26  
   69.27 -  p_def  "p == fix[LAM f. LAM x.
   69.28 -                 If b1[x] then f[g[x]] else x fi]"
   69.29 +  p_def  "p == fix`(LAM f. LAM x.
   69.30 +                 If b1`x then f`(g`x) else x fi)"
   69.31  
   69.32 -  q_def  "q == fix[LAM f. LAM x.
   69.33 -                 If b1[x] orelse b2[x] then f[g[x]] else x fi]"
   69.34 -
   69.35 +  q_def  "q == fix`(LAM f. LAM x.
   69.36 +                 If b1`x orelse b2`x then f`(g`x) else x fi)"
   69.37  
   69.38  end
   69.39   
    70.1 --- a/src/HOLCF/ex/Loop.ML	Thu Jun 29 16:16:24 1995 +0200
    70.2 +++ b/src/HOLCF/ex/Loop.ML	Thu Jun 29 16:28:40 1995 +0200
    70.3 @@ -13,14 +13,14 @@
    70.4  (* --------------------------------------------------------------------------- *)
    70.5  
    70.6  val step_def2 = prove_goalw Loop.thy [step_def]
    70.7 -"step[b][g][x] = If b[x] then g[x] else x fi"
    70.8 +"step`b`g`x = If b`x then g`x else x fi"
    70.9   (fn prems =>
   70.10  	[
   70.11  	(simp_tac Cfun_ss 1)
   70.12  	]);
   70.13  
   70.14  val while_def2 = prove_goalw Loop.thy [while_def]
   70.15 -"while[b][g] = fix[LAM f x. If b[x] then f[g[x]] else x fi]"
   70.16 +"while`b`g = fix`(LAM f x. If b`x then f`(g`x) else x fi)"
   70.17   (fn prems =>
   70.18  	[
   70.19  	(simp_tac Cfun_ss 1)
   70.20 @@ -32,7 +32,7 @@
   70.21  (* ------------------------------------------------------------------------- *)
   70.22  
   70.23  val while_unfold = prove_goal Loop.thy 
   70.24 -"while[b][g][x] = If b[x] then while[b][g][g[x]] else x fi"
   70.25 +"while`b`g`x = If b`x then while`b`g`(g`x) else x fi"
   70.26   (fn prems =>
   70.27  	[
   70.28  	(fix_tac5  while_def2 1),
   70.29 @@ -40,7 +40,7 @@
   70.30  	]);
   70.31  
   70.32  val while_unfold2 = prove_goal Loop.thy 
   70.33 -	"!x.while[b][g][x] = while[b][g][iterate(k,step[b][g],x)]"
   70.34 +	"!x.while`b`g`x = while`b`g`(iterate k (step`b`g) x)"
   70.35   (fn prems =>
   70.36  	[
   70.37  	(nat_ind_tac "k" 1),
   70.38 @@ -53,10 +53,10 @@
   70.39  	(rtac trans 1),
   70.40  	(etac spec 2),
   70.41  	(rtac (step_def2 RS ssubst) 1),
   70.42 -	(res_inst_tac [("p","b[x]")] trE 1),
   70.43 +	(res_inst_tac [("p","b`x")] trE 1),
   70.44  	(asm_simp_tac HOLCF_ss 1),
   70.45  	(rtac (while_unfold RS ssubst) 1),
   70.46 -	(res_inst_tac [("s","UU"),("t","b[UU]")] ssubst 1),
   70.47 +	(res_inst_tac [("s","UU"),("t","b`UU")]ssubst 1),
   70.48  	(etac (flat_tr RS flat_codom RS disjE) 1),
   70.49  	(atac 1),
   70.50  	(etac spec 1),
   70.51 @@ -68,10 +68,11 @@
   70.52  	]);
   70.53  
   70.54  val while_unfold3 = prove_goal Loop.thy 
   70.55 -	"while[b][g][x] = while[b][g][step[b][g][x]]"
   70.56 +	"while`b`g`x = while`b`g`(step`b`g`x)"
   70.57   (fn prems =>
   70.58  	[
   70.59 -	(res_inst_tac [("s","while[b][g][iterate(Suc(0),step[b][g],x)]")] trans 1),
   70.60 +	(res_inst_tac [("s",
   70.61 +		"while`b`g`(iterate (Suc 0) (step`b`g) x)")] trans 1),
   70.62  	(rtac (while_unfold2 RS spec) 1),
   70.63  	(simp_tac iterate_ss 1)
   70.64  	]);
   70.65 @@ -82,7 +83,7 @@
   70.66  (* --------------------------------------------------------------------------- *)
   70.67  
   70.68  val loop_lemma1 = prove_goal Loop.thy
   70.69 -"[|? y.b[y]=FF; iterate(k,step[b][g],x)=UU|]==>iterate(Suc(k),step[b][g],x)=UU"
   70.70 +"[|? y.b`y=FF; iterate k (step`b`g) x = UU|]==>iterate(Suc k) (step`b`g) x=UU"
   70.71   (fn prems =>
   70.72  	[
   70.73  	(cut_facts_tac prems 1),
   70.74 @@ -97,8 +98,8 @@
   70.75  	]);
   70.76  
   70.77  val loop_lemma2 = prove_goal Loop.thy
   70.78 -"[|? y.b[y]=FF;~iterate(Suc(k),step[b][g],x)=UU |]==>\
   70.79 -\~iterate(k,step[b][g],x)=UU"
   70.80 +"[|? y.b`y=FF;iterate (Suc k) (step`b`g) x ~=UU |]==>\
   70.81 +\iterate k (step`b`g) x ~=UU"
   70.82   (fn prems =>
   70.83  	[
   70.84  	(cut_facts_tac prems 1),
   70.85 @@ -109,9 +110,9 @@
   70.86  	]);
   70.87  
   70.88  val loop_lemma3 = prove_goal Loop.thy
   70.89 -"[|!x. INV(x) & b[x]=TT & ~g[x]=UU --> INV(g[x]);\
   70.90 -\? y.b[y]=FF; INV(x)|] ==>\
   70.91 -\~iterate(k,step[b][g],x)=UU --> INV(iterate(k,step[b][g],x))"
   70.92 +"[|!x. INV x & b`x=TT & g`x~=UU --> INV (g`x);\
   70.93 +\? y.b`y=FF; INV x|] ==>\
   70.94 +\iterate k (step`b`g) x ~=UU --> INV (iterate k (step`b`g) x)"
   70.95   (fn prems =>
   70.96  	[
   70.97  	(cut_facts_tac prems 1),
   70.98 @@ -119,15 +120,15 @@
   70.99  	(asm_simp_tac iterate_ss 1),
  70.100  	(strip_tac 1),
  70.101  	(simp_tac (iterate_ss addsimps [step_def2]) 1),
  70.102 -	(res_inst_tac [("p","b[iterate(k1, step[b][g], x)]")] trE 1),
  70.103 +	(res_inst_tac [("p","b`(iterate k1 (step`b`g) x)")] trE 1),
  70.104  	(etac notE 1),
  70.105  	(asm_simp_tac (HOLCF_ss addsimps [step_def2,iterate_Suc] ) 1),
  70.106  	(asm_simp_tac HOLCF_ss  1),
  70.107  	(rtac mp 1),
  70.108  	(etac spec  1),
  70.109  	(asm_simp_tac (HOLCF_ss addsimps [loop_lemma2] ) 1),
  70.110 -	(res_inst_tac [("s","iterate(Suc(k1), step[b][g], x)"),
  70.111 -		("t","g[iterate(k1, step[b][g], x)]")] ssubst 1),
  70.112 +	(res_inst_tac [("s","iterate (Suc k1) (step`b`g) x"),
  70.113 +		("t","g`(iterate k1 (step`b`g) x)")] ssubst 1),
  70.114  	(atac 2),
  70.115  	(asm_simp_tac (HOLCF_ss addsimps [iterate_Suc,step_def2] ) 1),
  70.116  	(asm_simp_tac (HOLCF_ss addsimps [loop_lemma2] ) 1)
  70.117 @@ -135,7 +136,7 @@
  70.118  
  70.119  
  70.120  val loop_lemma4 = prove_goal Loop.thy
  70.121 -"!x. b[iterate(k,step[b][g],x)]=FF --> while[b][g][x]=iterate(k,step[b][g],x)"
  70.122 +"!x. b`(iterate k (step`b`g) x)=FF --> while`b`g`x= iterate k (step`b`g) x"
  70.123   (fn prems =>
  70.124  	[
  70.125  	(nat_ind_tac "k" 1),
  70.126 @@ -152,8 +153,8 @@
  70.127  	]);
  70.128  
  70.129  val loop_lemma5 = prove_goal Loop.thy
  70.130 -"!k. ~b[iterate(k,step[b][g],x)]=FF ==>\
  70.131 -\ !m. while[b][g][iterate(m,step[b][g],x)]=UU"
  70.132 +"!k. b`(iterate k (step`b`g) x) ~= FF ==>\
  70.133 +\ !m. while`b`g`(iterate m (step`b`g) x)=UU"
  70.134   (fn prems =>
  70.135  	[
  70.136  	(cut_facts_tac prems 1),
  70.137 @@ -161,14 +162,14 @@
  70.138  	(rtac fix_ind 1),
  70.139  	(rtac (allI RS adm_all) 1),
  70.140  	(rtac adm_eq 1),
  70.141 -	(contX_tacR 1),
  70.142 +	(cont_tacR 1),
  70.143  	(simp_tac HOLCF_ss  1),
  70.144  	(rtac allI 1),
  70.145  	(simp_tac HOLCF_ss  1),
  70.146 -	(res_inst_tac [("p","b[iterate(m, step[b][g],x)]")] trE 1),
  70.147 +	(res_inst_tac [("p","b`(iterate m (step`b`g) x)")] trE 1),
  70.148  	(asm_simp_tac HOLCF_ss  1),
  70.149  	(asm_simp_tac HOLCF_ss  1),
  70.150 -	(res_inst_tac [("s","xa[iterate(Suc(m), step[b][g], x)]")] trans 1),
  70.151 +	(res_inst_tac [("s","xa`(iterate (Suc m) (step`b`g) x)")] trans 1),
  70.152  	(etac spec 2),
  70.153  	(rtac cfun_arg_cong 1),
  70.154  	(rtac trans 1),
  70.155 @@ -180,7 +181,7 @@
  70.156  
  70.157  
  70.158  val loop_lemma6 = prove_goal Loop.thy
  70.159 -"!k. ~b[iterate(k,step[b][g],x)]=FF ==> while[b][g][x]=UU"
  70.160 +"!k. b`(iterate k (step`b`g) x) ~= FF ==> while`b`g`x=UU"
  70.161   (fn prems =>
  70.162  	[
  70.163  	(res_inst_tac [("t","x")] (iterate_0 RS subst) 1),
  70.164 @@ -189,7 +190,7 @@
  70.165  	]);
  70.166  
  70.167  val loop_lemma7 = prove_goal Loop.thy
  70.168 -"~while[b][g][x]=UU ==> ? k. b[iterate(k,step[b][g],x)]=FF"
  70.169 +"while`b`g`x ~= UU ==> ? k. b`(iterate k (step`b`g) x) = FF"
  70.170   (fn prems =>
  70.171  	[
  70.172  	(cut_facts_tac prems 1),
  70.173 @@ -199,7 +200,7 @@
  70.174  	]);
  70.175  
  70.176  val loop_lemma8 = prove_goal Loop.thy
  70.177 -"~while[b][g][x]=UU ==> ? y. b[y]=FF"
  70.178 +"while`b`g`x ~= UU ==> ? y. b`y=FF"
  70.179   (fn prems =>
  70.180  	[
  70.181  	(cut_facts_tac prems 1),
  70.182 @@ -208,17 +209,17 @@
  70.183  	]);
  70.184  
  70.185  
  70.186 -(* --------------------------------------------------------------------------- *)
  70.187 -(* an invariant rule for loops                                                 *)
  70.188 -(* --------------------------------------------------------------------------- *)
  70.189 +(* ------------------------------------------------------------------------- *)
  70.190 +(* an invariant rule for loops                                               *)
  70.191 +(* ------------------------------------------------------------------------- *)
  70.192  
  70.193  val loop_inv2 = prove_goal Loop.thy
  70.194 -"[| (!y. INV(y) & b[y]=TT & ~g[y]=UU --> INV(g[y]));\
  70.195 -\   (!y. INV(y) & b[y]=FF --> Q(y));\
  70.196 -\   INV(x); ~while[b][g][x]=UU |] ==> Q(while[b][g][x])"
  70.197 +"[| (!y. INV y & b`y=TT & g`y ~= UU --> INV (g`y));\
  70.198 +\   (!y. INV y & b`y=FF --> Q y);\
  70.199 +\   INV x; while`b`g`x~=UU |] ==> Q (while`b`g`x)"
  70.200   (fn prems =>
  70.201  	[
  70.202 -	(res_inst_tac [("P","%k.b[iterate(k,step[b][g],x)]=FF")] exE 1),
  70.203 +	(res_inst_tac [("P","%k. b`(iterate k (step`b`g) x)=FF")] exE 1),
  70.204  	(rtac loop_lemma7 1),
  70.205  	(resolve_tac prems 1),
  70.206  	(rtac ((loop_lemma4 RS spec RS mp) RS ssubst) 1),
  70.207 @@ -240,9 +241,9 @@
  70.208  	]);
  70.209  
  70.210  val loop_inv3 = prove_goal Loop.thy
  70.211 -"[| !!y.[| INV(y); b[y]=TT; ~g[y]=UU|] ==> INV(g[y]);\
  70.212 -\   !!y.[| INV(y); b[y]=FF|]==> Q(y);\
  70.213 -\   INV(x); ~while[b][g][x]=UU |] ==> Q(while[b][g][x])"
  70.214 +"[| !!y.[| INV y; b`y=TT; g`y~=UU|] ==> INV (g`y);\
  70.215 +\   !!y.[| INV y; b`y=FF|]==> Q y;\
  70.216 +\   INV x; while`b`g`x~=UU |] ==> Q (while`b`g`x)"
  70.217   (fn prems =>
  70.218  	[
  70.219  	(rtac loop_inv2 1),
  70.220 @@ -263,10 +264,10 @@
  70.221  
  70.222  val loop_inv = prove_goal Loop.thy
  70.223  "[| P(x);\
  70.224 -\   !!y.P(y) ==> INV(y);\
  70.225 -\   !!y.[| INV(y); b[y]=TT; ~g[y]=UU|] ==> INV(g[y]);\
  70.226 -\   !!y.[| INV(y); b[y]=FF|]==> Q(y);\
  70.227 -\   ~while[b][g][x]=UU |] ==> Q(while[b][g][x])"
  70.228 +\   !!y.P y ==> INV y;\
  70.229 +\   !!y.[| INV y; b`y=TT; g`y~=UU|] ==> INV (g`y);\
  70.230 +\   !!y.[| INV y; b`y=FF|]==> Q y;\
  70.231 +\   while`b`g`x ~= UU |] ==> Q (while`b`g`x)"
  70.232   (fn prems =>
  70.233  	[
  70.234  	(rtac loop_inv3 1),
    71.1 --- a/src/HOLCF/ex/Loop.thy	Thu Jun 29 16:16:24 1995 +0200
    71.2 +++ b/src/HOLCF/ex/Loop.thy	Thu Jun 29 16:28:40 1995 +0200
    71.3 @@ -13,12 +13,11 @@
    71.4  	step  :: "('a -> tr)->('a -> 'a)->'a->'a"
    71.5  	while :: "('a -> tr)->('a -> 'a)->'a->'a"
    71.6  
    71.7 -rules
    71.8 +defs
    71.9  
   71.10 -  step_def	"step == (LAM b g x. If b[x] then g[x] else x fi)"
   71.11 -  while_def	"while == (LAM b g. fix[LAM f x.
   71.12 -                 If b[x] then f[g[x]] else x fi])"
   71.13 -
   71.14 +  step_def	"step == (LAM b g x. If b`x then g`x else x fi)"
   71.15 +  while_def	"while == (LAM b g. fix`(LAM f x.
   71.16 +                   If b`x then f`(g`x) else x fi))"
   71.17  
   71.18  end
   71.19   
    72.1 --- a/src/HOLCF/ex/loeckx.ML	Thu Jun 29 16:16:24 1995 +0200
    72.2 +++ b/src/HOLCF/ex/loeckx.ML	Thu Jun 29 16:28:40 1995 +0200
    72.3 @@ -3,7 +3,7 @@
    72.4  (* Loeckx & Sieber S.88                                 *)
    72.5  
    72.6  val prems = goalw Fix.thy [Ifix_def]
    72.7 -"Ifix(F)=lub(range(%i.%G.iterate(i,G,UU)))(F)";
    72.8 +"Ifix F= lub (range (%i.%G.iterate i G UU)) F";
    72.9  by (rtac (thelub_fun RS ssubst) 1);
   72.10  by (rtac ch2ch_fun 1);
   72.11  back();
   72.12 @@ -19,72 +19,76 @@
   72.13  
   72.14  (* 
   72.15  
   72.16 -Idea: %i.%G.iterate(i,G,UU)) is a chain of continuous functions and
   72.17 +Idea: (%i.%G.iterate i G UU) is a chain of continuous functions and
   72.18        Ifix is the lub of this chain. Hence Ifix is continuous.
   72.19  
   72.20  ----- The proof  in HOLCF ----------------------- 
   72.21  
   72.22  Since we already proved the theorem
   72.23  
   72.24 -val contX_lubcfun = prove_goal Cfun2.thy 
   72.25 -	"is_chain(F) ==> contX(% x.lub(range(% j.F(j)[x])))"
   72.26 +val cont_lubcfun = prove_goal Cfun2.thy 
   72.27 +	"is_chain ?F ==> cont (%x. lub (range (%j. ?F j`x)))"
   72.28  
   72.29  
   72.30 -we suffices to prove:
   72.31 +it suffices to prove:
   72.32  
   72.33 -Ifix  = (%f.lub(range(%j.(LAM f. iterate(j, f, UU))[f])))
   72.34 +Ifix  = (%f.lub (range (%j. (LAM f. iterate j f UU)`f)))
   72.35  
   72.36  and 
   72.37  
   72.38 -contX(%f.lub(range(%j.(LAM f. iterate(j, f, UU))[f])))
   72.39 +cont (%f.lub (range (%j. (LAM f. iterate j f UU)`f)))
   72.40  
   72.41  Note that if we use the term 
   72.42  
   72.43 -%i.%G.iterate(i,G,UU)) instead of (%j.(LAM f. iterate(j, f, UU)))
   72.44 +%i.%G.iterate i G UU instead of (%j.(LAM f. iterate j f UU))
   72.45  
   72.46 -we cannot use the theorem contX_lubcfun    
   72.47 +we cannot use the theorem cont_lubcfun    
   72.48  
   72.49  *)
   72.50  
   72.51 -val prems = goal Fix.thy  "contX(Ifix)";
   72.52 -by (res_inst_tac [("t","Ifix"),("s","(%f.lub(range(%j.(LAM f. iterate(j, f, UU))[f])))")] ssubst 1);
   72.53 +val prems = goal Fix.thy  "cont(Ifix)";
   72.54 +by (res_inst_tac 
   72.55 + [("t","Ifix"),("s","(%f.lub(range(%j.(LAM f. iterate j f UU)`f)))")]
   72.56 +  ssubst 1);
   72.57  by (rtac ext 1);
   72.58  by (rewrite_goals_tac [Ifix_def] );
   72.59 -by (subgoal_tac " range(% i.iterate(i, f, UU)) = range(%j.(LAM f. iterate(j, f, UU))[f])" 1);
   72.60 +by (subgoal_tac 
   72.61 +  "range(% i.iterate i f UU) = range(%j.(LAM f. iterate j f UU)`f)" 1);
   72.62  by (etac arg_cong 1);
   72.63 -by (subgoal_tac " (% i.iterate(i, f, UU)) = (%j.(LAM f. iterate(j, f, UU))[f])" 1);
   72.64 +by (subgoal_tac 
   72.65 +	"(% i.iterate i f UU) = (%j.(LAM f. iterate j f UU)`f)" 1);
   72.66  by (etac arg_cong 1);
   72.67  by (rtac ext 1);
   72.68  by (rtac (beta_cfun RS ssubst) 1);
   72.69 -by (rtac  contX2contX_CF1L 1);
   72.70 -by (rtac contX_iterate 1);
   72.71 +by (rtac  cont2cont_CF1L 1);
   72.72 +by (rtac cont_iterate 1);
   72.73  by (rtac refl 1);
   72.74 -by (rtac contX_lubcfun 1);
   72.75 +by (rtac cont_lubcfun 1);
   72.76  by (rtac is_chainI 1);
   72.77  by (strip_tac 1);
   72.78  by (rtac less_cfun2 1);
   72.79  by (rtac (beta_cfun RS ssubst) 1);
   72.80 -by (rtac  contX2contX_CF1L 1);
   72.81 -by (rtac contX_iterate 1);
   72.82 +by (rtac  cont2cont_CF1L 1);
   72.83 +by (rtac cont_iterate 1);
   72.84  by (rtac (beta_cfun RS ssubst) 1);
   72.85 -by (rtac  contX2contX_CF1L 1);
   72.86 -by (rtac contX_iterate 1);
   72.87 +by (rtac  cont2cont_CF1L 1);
   72.88 +by (rtac cont_iterate 1);
   72.89  by (rtac (is_chain_iterate RS is_chainE RS spec) 1);
   72.90 -val contX_Ifix2 = result();
   72.91 +val cont_Ifix2 = result();
   72.92  
   72.93  (* the proof in little steps *)
   72.94  
   72.95  val prems = goal Fix.thy  
   72.96 -"(% i.iterate(i, f, UU)) = (%j.(LAM f. iterate(j, f, UU))[f])";
   72.97 +"(% i.iterate i f UU) = (%j.(LAM f. iterate j f UU)`f)";
   72.98  by (rtac ext 1);
   72.99  by (rtac (beta_cfun RS ssubst) 1);
  72.100 -by (rtac  contX2contX_CF1L 1);
  72.101 -by (rtac contX_iterate 1);
  72.102 +by (rtac  cont2cont_CF1L 1);
  72.103 +by (rtac cont_iterate 1);
  72.104  by (rtac refl 1);
  72.105  val fix_lemma1 = result();
  72.106  
  72.107  val prems = goal Fix.thy  
  72.108 -" Ifix = (%f.lub(range(%j.(LAM f.iterate(j,f,UU))[f])))";
  72.109 +" Ifix = (%f.lub(range(%j.(LAM f.iterate j f UU)`f)))";
  72.110  by (rtac ext 1);
  72.111  by (rewrite_goals_tac [Ifix_def] ); 
  72.112  by (rtac (fix_lemma1 RS ssubst) 1);
  72.113 @@ -92,30 +96,23 @@
  72.114  val fix_lemma2 = result();
  72.115  
  72.116  (*
  72.117 -- contX_lubcfun;
  72.118 -val it = "is_chain(?F) ==> contX(%x. lub(range(%j. ?F(j)[x])))" : thm
  72.119 +- cont_lubcfun;
  72.120 +val it = "is_chain ?F ==> cont (%x. lub (range (%j. ?F j`x)))" : thm   
  72.121  
  72.122  *)
  72.123  
  72.124 -val prems = goal Fix.thy "contX(Ifix)";
  72.125 +val prems = goal Fix.thy "cont Ifix";
  72.126  by (rtac ( fix_lemma2  RS ssubst) 1);
  72.127 -by (rtac contX_lubcfun 1);
  72.128 +by (rtac cont_lubcfun 1);
  72.129  by (rtac is_chainI 1);
  72.130  by (strip_tac 1);
  72.131  by (rtac less_cfun2 1);
  72.132  by (rtac (beta_cfun RS ssubst) 1);
  72.133 -by (rtac  contX2contX_CF1L 1);
  72.134 -by (rtac contX_iterate 1);
  72.135 +by (rtac  cont2cont_CF1L 1);
  72.136 +by (rtac cont_iterate 1);
  72.137  by (rtac (beta_cfun RS ssubst) 1);
  72.138 -by (rtac  contX2contX_CF1L 1);
  72.139 -by (rtac contX_iterate 1);
  72.140 +by (rtac  cont2cont_CF1L 1);
  72.141 +by (rtac cont_iterate 1);
  72.142  by (rtac (is_chain_iterate RS is_chainE RS spec) 1);
  72.143 -val contX_Ifix2 = result();
  72.144 +val cont_Ifix2 = result();
  72.145  
  72.146 -
  72.147 -
  72.148 -
  72.149 -
  72.150 -
  72.151 -
  72.152 -