src/HOLCF/Tools/domain/domain_library.ML
changeset 31228 bcacfd816d28
parent 31162 6dc708ca4a8f
child 31229 8a890890d143
equal deleted inserted replaced
31227:0aa6afd229d3 31228:bcacfd816d28
    87   val mk_iterate : term * term * term -> term;
    87   val mk_iterate : term * term * term -> term;
    88   val mk_fail : term;
    88   val mk_fail : term;
    89   val mk_return : term -> term;
    89   val mk_return : term -> term;
    90   val cproj : term -> 'a list -> int -> term;
    90   val cproj : term -> 'a list -> int -> term;
    91   val list_ccomb : term * term list -> term;
    91   val list_ccomb : term * term list -> term;
       
    92 (*
    92   val con_app : string -> ('a * 'b * string) list -> term;
    93   val con_app : string -> ('a * 'b * string) list -> term;
       
    94 *)
    93   val con_app2 : string -> ('a -> term) -> 'a list -> term;
    95   val con_app2 : string -> ('a -> term) -> 'a list -> term;
    94   val proj : term -> 'a list -> int -> term;
    96   val proj : term -> 'a list -> int -> term;
    95   val prj : ('a -> 'b -> 'a) -> ('a -> 'b -> 'a) -> 'a -> 'b list -> int -> 'a;
    97   val prj : ('a -> 'b -> 'a) -> ('a -> 'b -> 'a) -> 'a -> 'b list -> int -> 'a;
    96   val mk_ctuple_pat : term list -> term;
    98   val mk_ctuple_pat : term list -> term;
    97   val mk_branch : term -> term;
    99   val mk_branch : term -> term;
   121   val ===> : term * term -> term;
   123   val ===> : term * term -> term;
   122   val ==> : term * term -> term;
   124   val ==> : term * term -> term;
   123   val mk_All : string * term -> term;
   125   val mk_All : string * term -> term;
   124 
   126 
   125   (* Domain specifications *)
   127   (* Domain specifications *)
   126   type arg = (bool * int * DatatypeAux.dtyp) * string option * string;
   128   eqtype arg;
   127   type cons = string * arg list;
   129   type cons = string * arg list;
   128   type eq = (string * typ list) * cons list;
   130   type eq = (string * typ list) * cons list;
       
   131   val mk_arg : (bool * int * DatatypeAux.dtyp) * string option * string -> arg;
   129   val is_lazy : arg -> bool;
   132   val is_lazy : arg -> bool;
   130   val rec_of : arg -> int;
   133   val rec_of : arg -> int;
   131   val sel_of : arg -> string option;
   134   val sel_of : arg -> string option;
   132   val vname : arg -> string;
   135   val vname : arg -> string;
   133   val upd_vname : (string -> string) -> arg -> arg;
   136   val upd_vname : (string -> string) -> arg -> arg;
   140   val when_body : cons list -> (int * int -> term) -> term;
   143   val when_body : cons list -> (int * int -> term) -> term;
   141   val when_funs : 'a list -> string list;
   144   val when_funs : 'a list -> string list;
   142   val bound_arg : ''a list -> ''a -> term; (* ''a = arg or string *)
   145   val bound_arg : ''a list -> ''a -> term; (* ''a = arg or string *)
   143   val idx_name : 'a list -> string -> int -> string;
   146   val idx_name : 'a list -> string -> int -> string;
   144   val app_rec_arg : (int -> term) -> arg -> term;
   147   val app_rec_arg : (int -> term) -> arg -> term;
       
   148   val con_app : string -> arg list -> term;
       
   149 
   145 
   150 
   146   (* Name mangling *)
   151   (* Name mangling *)
   147   val strip_esc : string -> string;
   152   val strip_esc : string -> string;
   148   val extern_name : string -> string;
   153   val extern_name : string -> string;
   149   val dis_name : string -> string;
   154   val dis_name : string -> string;
   209 type eq =
   214 type eq =
   210   (string *		(* name      of abstracted type *)
   215   (string *		(* name      of abstracted type *)
   211    typ list) *		(* arguments of abstracted type *)
   216    typ list) *		(* arguments of abstracted type *)
   212   cons list;		(* represented type, as a constructor list *)
   217   cons list;		(* represented type, as a constructor list *)
   213 
   218 
       
   219 val mk_arg = I;
   214 fun rec_of arg  = second (first arg);
   220 fun rec_of arg  = second (first arg);
   215 fun is_lazy arg = first (first arg);
   221 fun is_lazy arg = first (first arg);
   216 val sel_of    =       second;
   222 val sel_of    =       second;
   217 val     vname =       third;
   223 val     vname =       third;
   218 val upd_vname =   upd_third;
   224 val upd_vname =   upd_third;