src/HOLCF/holcf_logic.ML
author bulwahn
Fri, 12 Mar 2010 12:14:30 +0100
changeset 35756 cfde251d03a5
parent 35548 6d3fa3a37822
permissions -rw-r--r--
refining and adding Spec_Rules to definitional packages old_primrec, primrec, recdef, size and function
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
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
8ff9a80f3c93 removed mk_prodT, mk_not (cf. HOL/hologic.ML);
wenzelm
parents: 16364
diff changeset
    15
  val ->> : typ * typ -> typ
8ff9a80f3c93 removed mk_prodT, mk_not (cf. HOL/hologic.ML);
wenzelm
parents: 16364
diff changeset
    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
8ff9a80f3c93 removed mk_prodT, mk_not (cf. HOL/hologic.ML);
wenzelm
parents: 16364
diff changeset
    26
(* sort pcpo *)
8ff9a80f3c93 removed mk_prodT, mk_not (cf. HOL/hologic.ML);
wenzelm
parents: 16364
diff changeset
    27
32010
cb1a1c94b4cd more antiquotations;
wenzelm
parents: 16843
diff changeset
    28
val pcpoS = @{sort pcpo};
16843
8ff9a80f3c93 removed mk_prodT, mk_not (cf. HOL/hologic.ML);
wenzelm
parents: 16364
diff changeset
    29
fun mk_TFree s = TFree ("'" ^ s, pcpoS);
8ff9a80f3c93 removed mk_prodT, mk_not (cf. HOL/hologic.ML);
wenzelm
parents: 16364
diff changeset
    30
8ff9a80f3c93 removed mk_prodT, mk_not (cf. HOL/hologic.ML);
wenzelm
parents: 16364
diff changeset
    31
8ff9a80f3c93 removed mk_prodT, mk_not (cf. HOL/hologic.ML);
wenzelm
parents: 16364
diff changeset
    32
(* basic types *)
4129
2fd816aa6206 HOLCFLogic.ML, contconsts.ML renamed to holcf_logic.ML, cont_consts.ML;
wenzelm
parents:
diff changeset
    33
35426
c9b9d4fc270d proper antiquotations;
wenzelm
parents: 32155
diff changeset
    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
8ff9a80f3c93 removed mk_prodT, mk_not (cf. HOL/hologic.ML);
wenzelm
parents: 16364
diff changeset
    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
c9b9d4fc270d proper antiquotations;
wenzelm
parents: 32155
diff changeset
    40
fun mk_uT T = Type (@{type_name u}, [T]);
c9b9d4fc270d proper antiquotations;
wenzelm
parents: 32155
diff changeset
    41
val trT = @{typ tr};
c9b9d4fc270d proper antiquotations;
wenzelm
parents: 32155
diff changeset
    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;