blob: e8c9b691fcc858315770bae8c457ff0d3287b28d [file] [log] [blame] [edit]
open Ast
type env = Env.t
type subst = Subst.t
val (let*) : subst option -> (subst -> subst option) -> subst option
val reduce_exp : env -> exp -> exp
val reduce_typ : env -> typ -> typ
val reduce_typdef : env -> typ -> deftyp
val reduce_arg : env -> arg -> arg
val equiv_functyp : env -> param list * typ -> param list * typ -> bool
val equiv_typ : env -> typ -> typ -> bool
val sub_typ : env -> typ -> typ -> bool
exception Irred (* indicates that argument is not normalised enough to decide *)
val match_iter : env -> subst -> iter -> iter -> subst option (* raises Irred *)
val match_exp : env -> subst -> exp -> exp -> subst option (* raises Irred *)
val match_typ : env -> subst -> typ -> typ -> subst option (* raises Irred *)
val match_arg : env -> subst -> arg -> arg -> subst option (* raises Irred *)
val match_list :
(env -> subst -> 'a -> 'a -> subst option) ->
env -> subst -> 'a list -> 'a list -> subst option