exception AssertFailure of string;;
exception TypeCheckerFailure of string;;
+exception SortExpectedMetaFound of string;; (* TODO temp *)
let fdebug = ref 0;;
let debug t context =
eat_lambdas ((Some (name,(C.Decl so)))::context) (n - 1) ta
in
(te, k + 1, context')
- | (_, _) -> raise (AssertFailure "9")
+ | (n, te) ->
+ raise (AssertFailure (sprintf "9 (%d, %s)" n (CicPp.ppterm te)))
(*CSC: Tutto quello che segue e' l'intuzione di luca ;-) *)
and check_is_really_smaller_arg context n nn kl x safes te =
when (s2 = C.Prop or s2 = C.Set or s2 = C.CProp) -> (* different from Coq manual!!! *)
C.Sort s2
| (C.Sort s1, C.Sort s2) -> C.Sort C.Type (*CSC manca la gestione degli universi!!! *)
- | (_,_) ->
- raise (TypeCheckerFailure (sprintf
+ | (_,_) -> raise (SortExpectedMetaFound (sprintf
"Prod: expected two sorts, found = %s, %s" (CicPp.ppterm t1')
(CicPp.ppterm t2')))
+(* raise (TypeCheckerFailure (sprintf *)
and eat_prods context hetype =
(*CSC: siamo sicuri che le are_convertible non lavorino con termini non *)
* http://cs.unibo.it/helm/.
*)
-(* This is the only exception that will be raised *)
+(* These are the only exceptions that will be raised *)
exception TypeCheckerFailure of string
exception AssertFailure of string
+exception SortExpectedMetaFound of string
val typecheck : UriManager.uri -> unit