Module Term.Model
type fi
=
{
fi_ty_args : Type.t list;
fi_ty_ret : Type.t;
fi_cases : (term list * term) list;
fi_else : term;
}
function interpretation
type t
=
{
tys : (Type.t * term list) list;
interpretation of types
consts : (Var.t * term) list;
interpretation of variables
funs : (Var.t * fi) list;
functions
}
val empty : t
val make_fi : Var.t -> (term list * term) list -> default:term -> fi
make_fi f cases ~default
builds a ite-tree fromcases
anddefault
val make : ?tys:(Type.t * term list) list -> ?funs:(Var.t * fi) list -> consts:(Var.t * term) list -> unit -> t
val term_of_fi : fi -> term
Make a lambda term from the function interpretation