| author | bulwahn |
| Fri, 12 Mar 2010 12:14:30 +0100 | |
| changeset 35756 | cfde251d03a5 |
| parent 35548 | 6d3fa3a37822 |
| 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 |
Author: David von Oheimb |
|
2fd816aa6206
HOLCFLogic.ML, contconsts.ML renamed to holcf_logic.ML, cont_consts.ML;
wenzelm
parents:
diff
changeset
|
3 |
|
|
2fd816aa6206
HOLCFLogic.ML, contconsts.ML renamed to holcf_logic.ML, cont_consts.ML;
wenzelm
parents:
diff
changeset
|
4 |
Abstract syntax operations for HOLCF. |
|
2fd816aa6206
HOLCFLogic.ML, contconsts.ML renamed to holcf_logic.ML, cont_consts.ML;
wenzelm
parents:
diff
changeset
|
5 |
*) |
|
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 |
infixr 6 ->>; |
|
2fd816aa6206
HOLCFLogic.ML, contconsts.ML renamed to holcf_logic.ML, cont_consts.ML;
wenzelm
parents:
diff
changeset
|
8 |
|
|
2fd816aa6206
HOLCFLogic.ML, contconsts.ML renamed to holcf_logic.ML, cont_consts.ML;
wenzelm
parents:
diff
changeset
|
9 |
signature HOLCF_LOGIC = |
|
2fd816aa6206
HOLCFLogic.ML, contconsts.ML renamed to holcf_logic.ML, cont_consts.ML;
wenzelm
parents:
diff
changeset
|
10 |
sig |
|
2fd816aa6206
HOLCFLogic.ML, contconsts.ML renamed to holcf_logic.ML, cont_consts.ML;
wenzelm
parents:
diff
changeset
|
11 |
val mk_btyp: string -> typ * typ -> typ |
|
2fd816aa6206
HOLCFLogic.ML, contconsts.ML renamed to holcf_logic.ML, cont_consts.ML;
wenzelm
parents:
diff
changeset
|
12 |
val pcpoS: sort |
|
2fd816aa6206
HOLCFLogic.ML, contconsts.ML renamed to holcf_logic.ML, cont_consts.ML;
wenzelm
parents:
diff
changeset
|
13 |
val mk_TFree: string -> typ |
|
2fd816aa6206
HOLCFLogic.ML, contconsts.ML renamed to holcf_logic.ML, cont_consts.ML;
wenzelm
parents:
diff
changeset
|
14 |
val cfun_arrow: string |
| 16843 | 15 |
val ->> : typ * typ -> typ |
16 |
val mk_ssumT: typ * typ -> typ |
|
|
4129
2fd816aa6206
HOLCFLogic.ML, contconsts.ML renamed to holcf_logic.ML, cont_consts.ML;
wenzelm
parents:
diff
changeset
|
17 |
val mk_sprodT: typ * typ -> typ |
|
2fd816aa6206
HOLCFLogic.ML, contconsts.ML renamed to holcf_logic.ML, cont_consts.ML;
wenzelm
parents:
diff
changeset
|
18 |
val mk_uT: typ -> typ |
|
2fd816aa6206
HOLCFLogic.ML, contconsts.ML renamed to holcf_logic.ML, cont_consts.ML;
wenzelm
parents:
diff
changeset
|
19 |
val trT: typ |
|
2fd816aa6206
HOLCFLogic.ML, contconsts.ML renamed to holcf_logic.ML, cont_consts.ML;
wenzelm
parents:
diff
changeset
|
20 |
val oneT: typ |
|
2fd816aa6206
HOLCFLogic.ML, contconsts.ML renamed to holcf_logic.ML, cont_consts.ML;
wenzelm
parents:
diff
changeset
|
21 |
end; |
|
2fd816aa6206
HOLCFLogic.ML, contconsts.ML renamed to holcf_logic.ML, cont_consts.ML;
wenzelm
parents:
diff
changeset
|
22 |
|
|
2fd816aa6206
HOLCFLogic.ML, contconsts.ML renamed to holcf_logic.ML, cont_consts.ML;
wenzelm
parents:
diff
changeset
|
23 |
structure HOLCFLogic: HOLCF_LOGIC = |
|
2fd816aa6206
HOLCFLogic.ML, contconsts.ML renamed to holcf_logic.ML, cont_consts.ML;
wenzelm
parents:
diff
changeset
|
24 |
struct |
|
2fd816aa6206
HOLCFLogic.ML, contconsts.ML renamed to holcf_logic.ML, cont_consts.ML;
wenzelm
parents:
diff
changeset
|
25 |
|
| 16843 | 26 |
(* sort pcpo *) |
27 |
||
| 32010 | 28 |
val pcpoS = @{sort pcpo};
|
| 16843 | 29 |
fun mk_TFree s = TFree ("'" ^ s, pcpoS);
|
30 |
||
31 |
||
32 |
(* basic types *) |
|
|
4129
2fd816aa6206
HOLCFLogic.ML, contconsts.ML renamed to holcf_logic.ML, cont_consts.ML;
wenzelm
parents:
diff
changeset
|
33 |
|
| 35426 | 34 |
fun mk_btyp t (S, T) = Type (t, [S, T]); |
|
4129
2fd816aa6206
HOLCFLogic.ML, contconsts.ML renamed to holcf_logic.ML, cont_consts.ML;
wenzelm
parents:
diff
changeset
|
35 |
|
|
35548
6d3fa3a37822
proper names for types cfun, sprod, ssum (cf. fa231b86cb1e);
wenzelm
parents:
35426
diff
changeset
|
36 |
val cfun_arrow = @{type_name "cfun"};
|
| 16843 | 37 |
val op ->> = mk_btyp cfun_arrow; |
|
35548
6d3fa3a37822
proper names for types cfun, sprod, ssum (cf. fa231b86cb1e);
wenzelm
parents:
35426
diff
changeset
|
38 |
val mk_ssumT = mk_btyp (@{type_name "ssum"});
|
|
6d3fa3a37822
proper names for types cfun, sprod, ssum (cf. fa231b86cb1e);
wenzelm
parents:
35426
diff
changeset
|
39 |
val mk_sprodT = mk_btyp (@{type_name "sprod"});
|
| 35426 | 40 |
fun mk_uT T = Type (@{type_name u}, [T]);
|
41 |
val trT = @{typ tr};
|
|
42 |
val oneT = @{typ one};
|
|
|
4129
2fd816aa6206
HOLCFLogic.ML, contconsts.ML renamed to holcf_logic.ML, cont_consts.ML;
wenzelm
parents:
diff
changeset
|
43 |
|
|
2fd816aa6206
HOLCFLogic.ML, contconsts.ML renamed to holcf_logic.ML, cont_consts.ML;
wenzelm
parents:
diff
changeset
|
44 |
end; |