functor (T : TermInner.S->
  sig
    type term = T.t
    type ty = T.t
    val ty :
      env:(Env.Util.term, Env.Util.ty) Env.t ->
      Env.Util.term -> Env.Util.ty TermInner.or_error
    val ty_exn :
      env:(Env.Util.term, Env.Util.ty) Env.t -> Env.Util.term -> Env.Util.ty
    val info_of_ty :
      env:(Env.Util.term, Env.Util.ty) Env.t ->
      Env.Util.ty -> (Env.Util.term, Env.Util.ty) Env.info TermInner.or_error
    exception No_head of Env.Util.ty
    val info_of_ty_exn :
      env:(Env.Util.term, Env.Util.ty) Env.t ->
      Env.Util.ty -> (Env.Util.term, Env.Util.ty) Env.info
  end