if not branches_ok then
raise
(TypeCheckerFailure "Case analysys: wrong branch type");
- if not need_dummy then
- (C.Appl ((outtype::arguments)@[term])),ugraph5
- else if arguments = [] then
- outtype,ugraph5
- else
- (C.Appl (outtype::arguments)),ugraph5
+ let arguments =
+ if not need_dummy then outtype::arguments@[term]
+ else outtype::arguments in
+ let outtype =
+ if arguments = [] then outtype
+ else CicReduction.head_beta_reduce (C.Appl arguments)
+ in
+ outtype,ugraph5
| C.Fix (i,fl) ->
let types_times_kl,ugraph1 =
(* WAS: list rev list map *)
(** wrappers which instantiate fresh loggers *)
-let type_of_aux' ?(subst = []) metasenv context t =
+let type_of_aux' ?(subst = []) metasenv context t ugraph =
let logger = new CicLogger.logger in
- type_of_aux' ~logger ~subst metasenv context t
+ type_of_aux' ~logger ~subst metasenv context t ugraph
let typecheck_mutual_inductive_defs uri (itl, uris, indparamsno) =
let logger = new CicLogger.logger in