| author | wenzelm | 
| Wed, 24 Jul 2002 00:10:52 +0200 | |
| changeset 13412 | 666137b488a4 | 
| parent 12030 | 46d57d0290a2 | 
| child 14981 | e73f8140af78 | 
| 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 | 
| 12030 | 4 | License: GPL (GNU GENERAL PUBLIC LICENSE) | 
| 4129 
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 | Abstract syntax operations for HOLCF. | 
| 
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 | |
| 
2fd816aa6206
HOLCFLogic.ML, contconsts.ML renamed to holcf_logic.ML, cont_consts.ML;
 wenzelm parents: diff
changeset | 9 | infixr 6 ->>; | 
| 
2fd816aa6206
HOLCFLogic.ML, contconsts.ML renamed to holcf_logic.ML, cont_consts.ML;
 wenzelm parents: diff
changeset | 10 | |
| 
2fd816aa6206
HOLCFLogic.ML, contconsts.ML renamed to holcf_logic.ML, cont_consts.ML;
 wenzelm parents: diff
changeset | 11 | signature HOLCF_LOGIC = | 
| 
2fd816aa6206
HOLCFLogic.ML, contconsts.ML renamed to holcf_logic.ML, cont_consts.ML;
 wenzelm parents: diff
changeset | 12 | sig | 
| 
2fd816aa6206
HOLCFLogic.ML, contconsts.ML renamed to holcf_logic.ML, cont_consts.ML;
 wenzelm parents: diff
changeset | 13 | val mk_btyp: string -> typ * typ -> typ | 
| 
2fd816aa6206
HOLCFLogic.ML, contconsts.ML renamed to holcf_logic.ML, cont_consts.ML;
 wenzelm parents: diff
changeset | 14 | val mk_prodT: typ * typ -> typ | 
| 
2fd816aa6206
HOLCFLogic.ML, contconsts.ML renamed to holcf_logic.ML, cont_consts.ML;
 wenzelm parents: diff
changeset | 15 | val mk_not: term -> term | 
| 
2fd816aa6206
HOLCFLogic.ML, contconsts.ML renamed to holcf_logic.ML, cont_consts.ML;
 wenzelm parents: diff
changeset | 16 | |
| 
2fd816aa6206
HOLCFLogic.ML, contconsts.ML renamed to holcf_logic.ML, cont_consts.ML;
 wenzelm parents: diff
changeset | 17 | val HOLCF_sg: Sign.sg | 
| 
2fd816aa6206
HOLCFLogic.ML, contconsts.ML renamed to holcf_logic.ML, cont_consts.ML;
 wenzelm parents: diff
changeset | 18 | val pcpoC: class | 
| 
2fd816aa6206
HOLCFLogic.ML, contconsts.ML renamed to holcf_logic.ML, cont_consts.ML;
 wenzelm parents: diff
changeset | 19 | val pcpoS: sort | 
| 
2fd816aa6206
HOLCFLogic.ML, contconsts.ML renamed to holcf_logic.ML, cont_consts.ML;
 wenzelm parents: diff
changeset | 20 | val mk_TFree: string -> typ | 
| 
2fd816aa6206
HOLCFLogic.ML, contconsts.ML renamed to holcf_logic.ML, cont_consts.ML;
 wenzelm parents: diff
changeset | 21 | val cfun_arrow: string | 
| 
2fd816aa6206
HOLCFLogic.ML, contconsts.ML renamed to holcf_logic.ML, cont_consts.ML;
 wenzelm parents: diff
changeset | 22 | val ->> : typ * typ -> typ | 
| 
2fd816aa6206
HOLCFLogic.ML, contconsts.ML renamed to holcf_logic.ML, cont_consts.ML;
 wenzelm parents: diff
changeset | 23 | val mk_ssumT : typ * typ -> typ | 
| 
2fd816aa6206
HOLCFLogic.ML, contconsts.ML renamed to holcf_logic.ML, cont_consts.ML;
 wenzelm parents: diff
changeset | 24 | val mk_sprodT: typ * typ -> typ | 
| 
2fd816aa6206
HOLCFLogic.ML, contconsts.ML renamed to holcf_logic.ML, cont_consts.ML;
 wenzelm parents: diff
changeset | 25 | val mk_uT: typ -> typ | 
| 
2fd816aa6206
HOLCFLogic.ML, contconsts.ML renamed to holcf_logic.ML, cont_consts.ML;
 wenzelm parents: diff
changeset | 26 | val trT: typ | 
| 
2fd816aa6206
HOLCFLogic.ML, contconsts.ML renamed to holcf_logic.ML, cont_consts.ML;
 wenzelm parents: diff
changeset | 27 | val oneT: typ | 
| 
2fd816aa6206
HOLCFLogic.ML, contconsts.ML renamed to holcf_logic.ML, cont_consts.ML;
 wenzelm parents: diff
changeset | 28 | |
| 
2fd816aa6206
HOLCFLogic.ML, contconsts.ML renamed to holcf_logic.ML, cont_consts.ML;
 wenzelm parents: diff
changeset | 29 | end; | 
| 
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 | |
| 
2fd816aa6206
HOLCFLogic.ML, contconsts.ML renamed to holcf_logic.ML, cont_consts.ML;
 wenzelm parents: diff
changeset | 32 | structure HOLCFLogic: HOLCF_LOGIC = | 
| 
2fd816aa6206
HOLCFLogic.ML, contconsts.ML renamed to holcf_logic.ML, cont_consts.ML;
 wenzelm parents: diff
changeset | 33 | struct | 
| 
2fd816aa6206
HOLCFLogic.ML, contconsts.ML renamed to holcf_logic.ML, cont_consts.ML;
 wenzelm parents: diff
changeset | 34 | |
| 12030 | 35 | open HOLogic; | 
| 4129 
2fd816aa6206
HOLCFLogic.ML, contconsts.ML renamed to holcf_logic.ML, cont_consts.ML;
 wenzelm parents: diff
changeset | 36 | |
| 
2fd816aa6206
HOLCFLogic.ML, contconsts.ML renamed to holcf_logic.ML, cont_consts.ML;
 wenzelm parents: diff
changeset | 37 | 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 | 38 | val mk_prodT = mk_btyp "*"; | 
| 
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_not P  = Const ("Not", boolT --> boolT) $ P;
 | 
| 
2fd816aa6206
HOLCFLogic.ML, contconsts.ML renamed to holcf_logic.ML, cont_consts.ML;
 wenzelm parents: diff
changeset | 41 | |
| 
2fd816aa6206
HOLCFLogic.ML, contconsts.ML renamed to holcf_logic.ML, cont_consts.ML;
 wenzelm parents: diff
changeset | 42 | (* basics *) | 
| 
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 | val HOLCF_sg = sign_of HOLCF.thy; | 
| 
2fd816aa6206
HOLCFLogic.ML, contconsts.ML renamed to holcf_logic.ML, cont_consts.ML;
 wenzelm parents: diff
changeset | 45 | 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 | 46 | val pcpoS = [pcpoC]; | 
| 
2fd816aa6206
HOLCFLogic.ML, contconsts.ML renamed to holcf_logic.ML, cont_consts.ML;
 wenzelm parents: diff
changeset | 47 | fun mk_TFree s  = TFree ("'"^s, pcpoS);
 | 
| 
2fd816aa6206
HOLCFLogic.ML, contconsts.ML renamed to holcf_logic.ML, cont_consts.ML;
 wenzelm parents: diff
changeset | 48 | |
| 
2fd816aa6206
HOLCFLogic.ML, contconsts.ML renamed to holcf_logic.ML, cont_consts.ML;
 wenzelm parents: diff
changeset | 49 | (*cfun, ssum, sprod, u, tr, one *) | 
| 
2fd816aa6206
HOLCFLogic.ML, contconsts.ML renamed to holcf_logic.ML, cont_consts.ML;
 wenzelm parents: diff
changeset | 50 | |
| 
2fd816aa6206
HOLCFLogic.ML, contconsts.ML renamed to holcf_logic.ML, cont_consts.ML;
 wenzelm parents: diff
changeset | 51 | 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 | 52 | in | 
| 
2fd816aa6206
HOLCFLogic.ML, contconsts.ML renamed to holcf_logic.ML, cont_consts.ML;
 wenzelm parents: diff
changeset | 53 | val cfun_arrow = intern "->"; | 
| 
2fd816aa6206
HOLCFLogic.ML, contconsts.ML renamed to holcf_logic.ML, cont_consts.ML;
 wenzelm parents: diff
changeset | 54 | val op ->> = mk_btyp cfun_arrow; | 
| 
2fd816aa6206
HOLCFLogic.ML, contconsts.ML renamed to holcf_logic.ML, cont_consts.ML;
 wenzelm parents: diff
changeset | 55 | val mk_ssumT = mk_btyp (intern "++"); | 
| 
2fd816aa6206
HOLCFLogic.ML, contconsts.ML renamed to holcf_logic.ML, cont_consts.ML;
 wenzelm parents: diff
changeset | 56 | val mk_sprodT = mk_btyp (intern "**"); | 
| 
2fd816aa6206
HOLCFLogic.ML, contconsts.ML renamed to holcf_logic.ML, cont_consts.ML;
 wenzelm parents: diff
changeset | 57 | 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 | 58 | val trT = Type (intern "tr" ,[ ]); | 
| 
2fd816aa6206
HOLCFLogic.ML, contconsts.ML renamed to holcf_logic.ML, cont_consts.ML;
 wenzelm parents: diff
changeset | 59 | val oneT = Type (intern "one",[ ]); | 
| 
2fd816aa6206
HOLCFLogic.ML, contconsts.ML renamed to holcf_logic.ML, cont_consts.ML;
 wenzelm parents: diff
changeset | 60 | end; | 
| 
2fd816aa6206
HOLCFLogic.ML, contconsts.ML renamed to holcf_logic.ML, cont_consts.ML;
 wenzelm parents: diff
changeset | 61 | |
| 12030 | 62 | end; |