let (m, eaten, context') =
eat_lambdas ~subst (types @ context) (x + 1) bo
in
- let rec_uri, rec_uri_len =
+ let rec_uri, rec_uri_len =
+ let he =
match List.hd context' with
- | Some (_,Cic.Decl (Cic.MutInd (uri,_,_)))
- | Some (_,Cic.Decl (Cic.Appl (Cic.MutInd (uri,_,_)::_))) ->
+ Some (_,Cic.Decl he) -> he
+ | _ -> assert false
+ in
+ match CicReduction.whd ~subst (List.tl context') he with
+ | Cic.MutInd (uri,_,_)
+ | Cic.Appl (Cic.MutInd (uri,_,_)::_) ->
uri,
- (match
- CicEnvironment.get_obj
+ (match
+ CicEnvironment.get_obj
CicUniv.oblivion_ugraph uri
with
| Cic.InductiveDefinition (tl,_,_,_), _ ->
List.length tl
| _ -> assert false)
| _ -> assert false
- in
+ in
(*
let's control the guarded by
destructors conditions D{f,k,x,M}