parameters_tys goalty uri_of_eq in
(*DEBUG*) debug_print (lazy ("cut term " ^ CicPp.ppterm cut_term));
debug_print (lazy ("CONTEXT before apply HCUT: " ^
- (CicMetaSubst.ppcontext [] context )));
+ (CicMetaSubst.ppcontext ~metasenv [] context )));
debug_print (lazy ("termty " ^ CicPp.ppterm termty));
(* cut DXn=DXn \to GOAL *)
let proof1,gl1 = PET.apply_tactic (P.cut_tac cut_term) (proof,goal) in
debug_print
(lazy ("Right param: " ^ (CicPp.ppterm (Cic.Appl rightparameters))));
debug_print (lazy ("CONTEXT before refinement: " ^
- (CicMetaSubst.ppcontext [] context )));
+ (CicMetaSubst.ppcontext ~metasenv [] context )));
(*DEBUG*) debug_print (lazy ("private inversion: term before refinement: " ^
CicPp.ppterm t));
let (ref_t,_,metasenv'',_) = CicRefine.type_of_aux' metasenv context t
let (_,metasenv,_,_) = proof in
let (_,context,goalty) = CicUtil.lookup_meta goal metasenv in
let termty,_ = T.type_of_aux' metasenv context term CicUniv.empty_ugraph in
- let uri = baseuri_of_term termty in
+ let uri, typeno =
+ match termty with
+ | Cic.MutInd (uri,typeno,_)
+ | Cic.Appl(Cic.MutInd (uri,typeno,_)::_) -> uri,typeno
+ | _ -> assert false
+ in
+ (* let uri = baseuri_of_term termty in *)
let obj,_ = CicEnvironment.get_obj CicUniv.empty_ugraph uri in
let name,nleft,arity,cons_list =
match obj with
Cic.InductiveDefinition (tys,_,nleft,_) ->
- (*we suppose there is only one inductiveType in the definition,
- so typeno=0 identically *)
- let typeno = 0 in
let (name,_,arity,cons_list) = List.nth tys typeno in
(name,nleft,arity,cons_list)
|_ -> assert false