blob: e45b3db50451e925affa1f6671e49610c985671e [file] [edit]
open Ast
module Map : Map.S with type key = string with type 'a t = 'a Map.Make(String).t
type subst =
{ varid : exp Map.t;
typid : typ Map.t;
gramid : sym Map.t;
defid : id Map.t;
unop : unop Map.t;
}
type t = subst
val empty : subst
val union : subst -> subst -> subst (* right overrides *)
val pm_fst : subst
val pm_snd : subst
val add_varid : subst -> id -> exp -> subst
val add_typid : subst -> id -> typ -> subst
val add_gramid : subst -> id -> sym -> subst
val add_defid : subst -> id -> id -> subst
val add_unop : subst -> unop -> unop -> subst
val mem_varid : subst -> id -> bool
val mem_typid : subst -> id -> bool
val mem_gramid : subst -> id -> bool
val mem_defid : subst -> id -> bool
val mem_unop : subst -> unop -> bool
val subst_iter : subst -> iter -> iter
val subst_typ : subst -> typ -> typ
val subst_exp : subst -> exp -> exp
val subst_path : subst -> path -> path
val subst_prem : subst -> prem -> prem
val subst_sym : subst -> sym -> sym
val subst_arg : subst -> arg -> arg
val subst_param : subst -> param -> param
val subst_unop : subst -> unop -> unop
val subst_prod : subst -> prod -> prod
val subst_def : subst -> def -> def
val subst_list : (subst -> 'a -> 'a) -> subst -> 'a list -> 'a list
val subst_nl_list : (subst -> 'a -> 'a) -> subst -> 'a nl_list -> 'a nl_list