--- /dev/null
+exception NotWellTyped of string;;
+
+let typecheck uri =
+ let rec typecheck_term curi t =
+ let module T = Theory in
+ let module P = CicTypeChecker in
+ let module C = CicCache in
+ let module U = UriManager in
+ let obj_typecheck uri =
+ try
+ P.typecheck (U.uri_of_string uri)
+ with
+ P.NotWellTyped s ->
+ raise (NotWellTyped
+ ("Type Checking was NOT successfull due to an error during " ^
+ "type-checking of term " ^ uri ^ ":\n\n" ^ s))
+ in
+ match t with
+ T.Theorem uri -> obj_typecheck (curi ^ "/" ^ uri)
+ | T.Definition uri -> obj_typecheck (curi ^ "/" ^ uri)
+ | T.Axiom uri -> obj_typecheck (curi ^ "/" ^ uri)
+ | T.Variable uri -> obj_typecheck (curi ^ "/" ^ uri)
+ | T.Section (uri,l) -> typecheck_theory l (curi ^ "/" ^ uri)
+ and typecheck_theory l curi =
+ List.iter (typecheck_term curi) l
+ in
+ let (uri, l) = TheoryCache.get_theory uri in
+ typecheck_theory l uri
+;;