--- /dev/null
+(*
+ ||M|| This file is part of HELM, an Hypertextual, Electronic
+ ||A|| Library of Mathematics, developed at the Computer Science
+ ||T|| Department, University of Bologna, Italy.
+ ||I||
+ ||T|| HELM is free software; you can redistribute it and/or
+ ||A|| modify it under the terms of the GNU General Public License
+ \ / version 2 or (at your option) any later version.
+ \ / This software is distributed as is, NO WARRANTY.
+ V_______________________________________________________________ *)
+
+module U = NUri
+module L = Log
+module E = Entity
+module B = Brg
+module BE = BrgEnvironment
+module BR = BrgReduction
+module BT = BrgType
+
+(* Interface functions ******************************************************)
+
+(* to share *)
+let type_check err f st = function
+ | a, uri, E.Abst (n, t) ->
+ let f xt tt =
+ let e = BE.set_entity (a, uri, E.Abst (n, xt)) in f tt e
+ in
+ L.loc := U.string_of_uri uri; BT.type_of err f st BR.empty_kam t
+ | a, uri, E.Abbr t ->
+ let f xt tt =
+ let xt = match xt with
+ | B.Cast _ -> xt
+ | _ -> B.Cast ([], tt, xt)
+ in
+ let e = BE.set_entity (a, uri, E.Abbr xt) in f tt e
+ in
+ L.loc := U.string_of_uri uri; BT.type_of err f st BR.empty_kam t
+ | _, _, E.Void -> assert false