| author | paulson | 
| Wed, 25 Jul 2001 17:58:26 +0200 | |
| changeset 11454 | 7514e5e21cb8 | 
| parent 4129 | 2fd816aa6206 | 
| child 12030 | 46d57d0290a2 | 
| permissions | -rw-r--r-- | 
| 
4129
 
2fd816aa6206
HOLCFLogic.ML, contconsts.ML renamed to holcf_logic.ML, cont_consts.ML;
 
wenzelm 
parents:  
diff
changeset
 | 
1  | 
(* Title: HOLCF/holcf_logic.ML  | 
| 
 
2fd816aa6206
HOLCFLogic.ML, contconsts.ML renamed to holcf_logic.ML, cont_consts.ML;
 
wenzelm 
parents:  
diff
changeset
 | 
2  | 
ID: $Id$  | 
| 
 
2fd816aa6206
HOLCFLogic.ML, contconsts.ML renamed to holcf_logic.ML, cont_consts.ML;
 
wenzelm 
parents:  
diff
changeset
 | 
3  | 
Author: David von Oheimb  | 
| 
 
2fd816aa6206
HOLCFLogic.ML, contconsts.ML renamed to holcf_logic.ML, cont_consts.ML;
 
wenzelm 
parents:  
diff
changeset
 | 
4  | 
|
| 
 
2fd816aa6206
HOLCFLogic.ML, contconsts.ML renamed to holcf_logic.ML, cont_consts.ML;
 
wenzelm 
parents:  
diff
changeset
 | 
5  | 
Abstract syntax operations for HOLCF.  | 
| 
 
2fd816aa6206
HOLCFLogic.ML, contconsts.ML renamed to holcf_logic.ML, cont_consts.ML;
 
wenzelm 
parents:  
diff
changeset
 | 
6  | 
*)  | 
| 
 
2fd816aa6206
HOLCFLogic.ML, contconsts.ML renamed to holcf_logic.ML, cont_consts.ML;
 
wenzelm 
parents:  
diff
changeset
 | 
7  | 
|
| 
 
2fd816aa6206
HOLCFLogic.ML, contconsts.ML renamed to holcf_logic.ML, cont_consts.ML;
 
wenzelm 
parents:  
diff
changeset
 | 
8  | 
infixr 6 ->>;  | 
| 
 
2fd816aa6206
HOLCFLogic.ML, contconsts.ML renamed to holcf_logic.ML, cont_consts.ML;
 
wenzelm 
parents:  
diff
changeset
 | 
9  | 
|
| 
 
2fd816aa6206
HOLCFLogic.ML, contconsts.ML renamed to holcf_logic.ML, cont_consts.ML;
 
wenzelm 
parents:  
diff
changeset
 | 
10  | 
signature HOLCF_LOGIC =  | 
| 
 
2fd816aa6206
HOLCFLogic.ML, contconsts.ML renamed to holcf_logic.ML, cont_consts.ML;
 
wenzelm 
parents:  
diff
changeset
 | 
11  | 
sig  | 
| 
 
2fd816aa6206
HOLCFLogic.ML, contconsts.ML renamed to holcf_logic.ML, cont_consts.ML;
 
wenzelm 
parents:  
diff
changeset
 | 
12  | 
val mk_btyp: string -> typ * typ -> typ  | 
| 
 
2fd816aa6206
HOLCFLogic.ML, contconsts.ML renamed to holcf_logic.ML, cont_consts.ML;
 
wenzelm 
parents:  
diff
changeset
 | 
13  | 
val mk_prodT: typ * typ -> typ  | 
| 
 
2fd816aa6206
HOLCFLogic.ML, contconsts.ML renamed to holcf_logic.ML, cont_consts.ML;
 
wenzelm 
parents:  
diff
changeset
 | 
14  | 
val mk_not: term -> term  | 
| 
 
2fd816aa6206
HOLCFLogic.ML, contconsts.ML renamed to holcf_logic.ML, cont_consts.ML;
 
wenzelm 
parents:  
diff
changeset
 | 
15  | 
|
| 
 
2fd816aa6206
HOLCFLogic.ML, contconsts.ML renamed to holcf_logic.ML, cont_consts.ML;
 
wenzelm 
parents:  
diff
changeset
 | 
16  | 
val HOLCF_sg: Sign.sg  | 
| 
 
2fd816aa6206
HOLCFLogic.ML, contconsts.ML renamed to holcf_logic.ML, cont_consts.ML;
 
wenzelm 
parents:  
diff
changeset
 | 
17  | 
val pcpoC: class  | 
| 
 
2fd816aa6206
HOLCFLogic.ML, contconsts.ML renamed to holcf_logic.ML, cont_consts.ML;
 
wenzelm 
parents:  
diff
changeset
 | 
18  | 
val pcpoS: sort  | 
| 
 
2fd816aa6206
HOLCFLogic.ML, contconsts.ML renamed to holcf_logic.ML, cont_consts.ML;
 
wenzelm 
parents:  
diff
changeset
 | 
19  | 
val mk_TFree: string -> typ  | 
| 
 
2fd816aa6206
HOLCFLogic.ML, contconsts.ML renamed to holcf_logic.ML, cont_consts.ML;
 
wenzelm 
parents:  
diff
changeset
 | 
20  | 
val cfun_arrow: string  | 
| 
 
2fd816aa6206
HOLCFLogic.ML, contconsts.ML renamed to holcf_logic.ML, cont_consts.ML;
 
wenzelm 
parents:  
diff
changeset
 | 
21  | 
val ->> : typ * typ -> typ  | 
| 
 
2fd816aa6206
HOLCFLogic.ML, contconsts.ML renamed to holcf_logic.ML, cont_consts.ML;
 
wenzelm 
parents:  
diff
changeset
 | 
22  | 
val mk_ssumT : typ * typ -> typ  | 
| 
 
2fd816aa6206
HOLCFLogic.ML, contconsts.ML renamed to holcf_logic.ML, cont_consts.ML;
 
wenzelm 
parents:  
diff
changeset
 | 
23  | 
val mk_sprodT: typ * typ -> typ  | 
| 
 
2fd816aa6206
HOLCFLogic.ML, contconsts.ML renamed to holcf_logic.ML, cont_consts.ML;
 
wenzelm 
parents:  
diff
changeset
 | 
24  | 
val mk_uT: typ -> typ  | 
| 
 
2fd816aa6206
HOLCFLogic.ML, contconsts.ML renamed to holcf_logic.ML, cont_consts.ML;
 
wenzelm 
parents:  
diff
changeset
 | 
25  | 
val trT: typ  | 
| 
 
2fd816aa6206
HOLCFLogic.ML, contconsts.ML renamed to holcf_logic.ML, cont_consts.ML;
 
wenzelm 
parents:  
diff
changeset
 | 
26  | 
val oneT: typ  | 
| 
 
2fd816aa6206
HOLCFLogic.ML, contconsts.ML renamed to holcf_logic.ML, cont_consts.ML;
 
wenzelm 
parents:  
diff
changeset
 | 
27  | 
|
| 
 
2fd816aa6206
HOLCFLogic.ML, contconsts.ML renamed to holcf_logic.ML, cont_consts.ML;
 
wenzelm 
parents:  
diff
changeset
 | 
28  | 
end;  | 
| 
 
2fd816aa6206
HOLCFLogic.ML, contconsts.ML renamed to holcf_logic.ML, cont_consts.ML;
 
wenzelm 
parents:  
diff
changeset
 | 
29  | 
|
| 
 
2fd816aa6206
HOLCFLogic.ML, contconsts.ML renamed to holcf_logic.ML, cont_consts.ML;
 
wenzelm 
parents:  
diff
changeset
 | 
30  | 
|
| 
 
2fd816aa6206
HOLCFLogic.ML, contconsts.ML renamed to holcf_logic.ML, cont_consts.ML;
 
wenzelm 
parents:  
diff
changeset
 | 
31  | 
structure HOLCFLogic: HOLCF_LOGIC =  | 
| 
 
2fd816aa6206
HOLCFLogic.ML, contconsts.ML renamed to holcf_logic.ML, cont_consts.ML;
 
wenzelm 
parents:  
diff
changeset
 | 
32  | 
struct  | 
| 
 
2fd816aa6206
HOLCFLogic.ML, contconsts.ML renamed to holcf_logic.ML, cont_consts.ML;
 
wenzelm 
parents:  
diff
changeset
 | 
33  | 
|
| 
 
2fd816aa6206
HOLCFLogic.ML, contconsts.ML renamed to holcf_logic.ML, cont_consts.ML;
 
wenzelm 
parents:  
diff
changeset
 | 
34  | 
local  | 
| 
 
2fd816aa6206
HOLCFLogic.ML, contconsts.ML renamed to holcf_logic.ML, cont_consts.ML;
 
wenzelm 
parents:  
diff
changeset
 | 
35  | 
|
| 
 
2fd816aa6206
HOLCFLogic.ML, contconsts.ML renamed to holcf_logic.ML, cont_consts.ML;
 
wenzelm 
parents:  
diff
changeset
 | 
36  | 
open HOLogic;  | 
| 
 
2fd816aa6206
HOLCFLogic.ML, contconsts.ML renamed to holcf_logic.ML, cont_consts.ML;
 
wenzelm 
parents:  
diff
changeset
 | 
37  | 
|
| 
 
2fd816aa6206
HOLCFLogic.ML, contconsts.ML renamed to holcf_logic.ML, cont_consts.ML;
 
wenzelm 
parents:  
diff
changeset
 | 
38  | 
in  | 
| 
 
2fd816aa6206
HOLCFLogic.ML, contconsts.ML renamed to holcf_logic.ML, cont_consts.ML;
 
wenzelm 
parents:  
diff
changeset
 | 
39  | 
|
| 
 
2fd816aa6206
HOLCFLogic.ML, contconsts.ML renamed to holcf_logic.ML, cont_consts.ML;
 
wenzelm 
parents:  
diff
changeset
 | 
40  | 
fun mk_btyp t (S,T) = Type (t,[S,T]);  | 
| 
 
2fd816aa6206
HOLCFLogic.ML, contconsts.ML renamed to holcf_logic.ML, cont_consts.ML;
 
wenzelm 
parents:  
diff
changeset
 | 
41  | 
val mk_prodT = mk_btyp "*";  | 
| 
 
2fd816aa6206
HOLCFLogic.ML, contconsts.ML renamed to holcf_logic.ML, cont_consts.ML;
 
wenzelm 
parents:  
diff
changeset
 | 
42  | 
|
| 
 
2fd816aa6206
HOLCFLogic.ML, contconsts.ML renamed to holcf_logic.ML, cont_consts.ML;
 
wenzelm 
parents:  
diff
changeset
 | 
43  | 
fun mk_not P  = Const ("Not", boolT --> boolT) $ P;
 | 
| 
 
2fd816aa6206
HOLCFLogic.ML, contconsts.ML renamed to holcf_logic.ML, cont_consts.ML;
 
wenzelm 
parents:  
diff
changeset
 | 
44  | 
|
| 
 
2fd816aa6206
HOLCFLogic.ML, contconsts.ML renamed to holcf_logic.ML, cont_consts.ML;
 
wenzelm 
parents:  
diff
changeset
 | 
45  | 
(* basics *)  | 
| 
 
2fd816aa6206
HOLCFLogic.ML, contconsts.ML renamed to holcf_logic.ML, cont_consts.ML;
 
wenzelm 
parents:  
diff
changeset
 | 
46  | 
|
| 
 
2fd816aa6206
HOLCFLogic.ML, contconsts.ML renamed to holcf_logic.ML, cont_consts.ML;
 
wenzelm 
parents:  
diff
changeset
 | 
47  | 
val HOLCF_sg = sign_of HOLCF.thy;  | 
| 
 
2fd816aa6206
HOLCFLogic.ML, contconsts.ML renamed to holcf_logic.ML, cont_consts.ML;
 
wenzelm 
parents:  
diff
changeset
 | 
48  | 
val pcpoC = Sign.intern_class HOLCF_sg "pcpo";  | 
| 
 
2fd816aa6206
HOLCFLogic.ML, contconsts.ML renamed to holcf_logic.ML, cont_consts.ML;
 
wenzelm 
parents:  
diff
changeset
 | 
49  | 
val pcpoS = [pcpoC];  | 
| 
 
2fd816aa6206
HOLCFLogic.ML, contconsts.ML renamed to holcf_logic.ML, cont_consts.ML;
 
wenzelm 
parents:  
diff
changeset
 | 
50  | 
fun mk_TFree s  = TFree ("'"^s, pcpoS);
 | 
| 
 
2fd816aa6206
HOLCFLogic.ML, contconsts.ML renamed to holcf_logic.ML, cont_consts.ML;
 
wenzelm 
parents:  
diff
changeset
 | 
51  | 
|
| 
 
2fd816aa6206
HOLCFLogic.ML, contconsts.ML renamed to holcf_logic.ML, cont_consts.ML;
 
wenzelm 
parents:  
diff
changeset
 | 
52  | 
(*cfun, ssum, sprod, u, tr, one *)  | 
| 
 
2fd816aa6206
HOLCFLogic.ML, contconsts.ML renamed to holcf_logic.ML, cont_consts.ML;
 
wenzelm 
parents:  
diff
changeset
 | 
53  | 
|
| 
 
2fd816aa6206
HOLCFLogic.ML, contconsts.ML renamed to holcf_logic.ML, cont_consts.ML;
 
wenzelm 
parents:  
diff
changeset
 | 
54  | 
local val intern = Sign.intern_tycon HOLCF_sg;  | 
| 
 
2fd816aa6206
HOLCFLogic.ML, contconsts.ML renamed to holcf_logic.ML, cont_consts.ML;
 
wenzelm 
parents:  
diff
changeset
 | 
55  | 
in  | 
| 
 
2fd816aa6206
HOLCFLogic.ML, contconsts.ML renamed to holcf_logic.ML, cont_consts.ML;
 
wenzelm 
parents:  
diff
changeset
 | 
56  | 
val cfun_arrow = intern "->";  | 
| 
 
2fd816aa6206
HOLCFLogic.ML, contconsts.ML renamed to holcf_logic.ML, cont_consts.ML;
 
wenzelm 
parents:  
diff
changeset
 | 
57  | 
val op ->> = mk_btyp cfun_arrow;  | 
| 
 
2fd816aa6206
HOLCFLogic.ML, contconsts.ML renamed to holcf_logic.ML, cont_consts.ML;
 
wenzelm 
parents:  
diff
changeset
 | 
58  | 
val mk_ssumT = mk_btyp (intern "++");  | 
| 
 
2fd816aa6206
HOLCFLogic.ML, contconsts.ML renamed to holcf_logic.ML, cont_consts.ML;
 
wenzelm 
parents:  
diff
changeset
 | 
59  | 
val mk_sprodT = mk_btyp (intern "**");  | 
| 
 
2fd816aa6206
HOLCFLogic.ML, contconsts.ML renamed to holcf_logic.ML, cont_consts.ML;
 
wenzelm 
parents:  
diff
changeset
 | 
60  | 
fun mk_uT T = Type (intern "u" ,[T]);  | 
| 
 
2fd816aa6206
HOLCFLogic.ML, contconsts.ML renamed to holcf_logic.ML, cont_consts.ML;
 
wenzelm 
parents:  
diff
changeset
 | 
61  | 
val trT = Type (intern "tr" ,[ ]);  | 
| 
 
2fd816aa6206
HOLCFLogic.ML, contconsts.ML renamed to holcf_logic.ML, cont_consts.ML;
 
wenzelm 
parents:  
diff
changeset
 | 
62  | 
val oneT = Type (intern "one",[ ]);  | 
| 
 
2fd816aa6206
HOLCFLogic.ML, contconsts.ML renamed to holcf_logic.ML, cont_consts.ML;
 
wenzelm 
parents:  
diff
changeset
 | 
63  | 
end;  | 
| 
 
2fd816aa6206
HOLCFLogic.ML, contconsts.ML renamed to holcf_logic.ML, cont_consts.ML;
 
wenzelm 
parents:  
diff
changeset
 | 
64  | 
|
| 
 
2fd816aa6206
HOLCFLogic.ML, contconsts.ML renamed to holcf_logic.ML, cont_consts.ML;
 
wenzelm 
parents:  
diff
changeset
 | 
65  | 
end; (* local *)  | 
| 
 
2fd816aa6206
HOLCFLogic.ML, contconsts.ML renamed to holcf_logic.ML, cont_consts.ML;
 
wenzelm 
parents:  
diff
changeset
 | 
66  | 
end; (* struct *)  |