(CicSubstitution.lift 1 termty)
isSetType (CicSubstitution.lift 1 term))
| [] -> ProofEngineReduction.replace_lifting
(CicSubstitution.lift 1 termty)
isSetType (CicSubstitution.lift 1 term))
| [] -> ProofEngineReduction.replace_lifting
| [] when isSetType -> Cic.Lambda (
(Cic.Name ("lambda" ^ (string_of_int nright))),
(ProofEngineReduction.replace_lifting
| [] when isSetType -> Cic.Lambda (
(Cic.Name ("lambda" ^ (string_of_int nright))),
(ProofEngineReduction.replace_lifting
~what: (rightparameters_ )
~with_what: (List.map (CicSubstitution.lift (-1)) created_vars)
~where:termty), (* type of H with replaced right parameters *)
~what: (rightparameters_ )
~with_what: (List.map (CicSubstitution.lift (-1)) created_vars)
~where:termty), (* type of H with replaced right parameters *)
let private_inversion_tac ~term (proof, goal) =
(*DEBUG*) debug_print (lazy ("private inversion begins"));
let private_inversion_tac ~term (proof, goal) =
(*DEBUG*) debug_print (lazy ("private inversion begins"));
- let _,metasenv,_,_, _ = proof in
+ let _,metasenv,_subst,_,_, _ = proof in
let uri_of_eq =
match LibraryObjects.eq_URI () with
None -> raise EqualityNotDefinedYet
| Some uri -> uri
in
let (_,context,goalty) = CicUtil.lookup_meta goal metasenv in
let uri_of_eq =
match LibraryObjects.eq_URI () with
None -> raise EqualityNotDefinedYet
| Some uri -> uri
in
let (_,context,goalty) = CicUtil.lookup_meta goal metasenv in
let (_,_,typeno,_) =
match termty with
C.MutInd (uri,typeno,exp_named_subst) -> (uri,exp_named_subst,typeno,[])
let (_,_,typeno,_) =
match termty with
C.MutInd (uri,typeno,exp_named_subst) -> (uri,exp_named_subst,typeno,[])
(*DEBUG*) debug_print (lazy ("after apply HCUT;reflexivity
in private inversion"));
(* apply (ledx_ind( lambda x. lambda y, ...)) *)
(*DEBUG*) debug_print (lazy ("after apply HCUT;reflexivity
in private inversion"));
(* apply (ledx_ind( lambda x. lambda y, ...)) *)
- let t1,metasenv,t3,t4, attrs = proof2 in
+ let t1,metasenv,_subst,t3,t4, attrs = proof2 in
let goal2 = List.hd (List.tl gl1) in
let (_,context,_) = CicUtil.lookup_meta goal2 metasenv in
(* rightparameters type list *)
let goal2 = List.hd (List.tl gl1) in
let (_,context,_) = CicUtil.lookup_meta goal2 metasenv in
(* rightparameters type list *)
(*DEBUG*) debug_print (lazy ("private inversion: term before refinement: " ^
CicPp.ppterm t));
let (ref_t,_,metasenv'',_) = CicRefine.type_of_aux' metasenv context t
(*DEBUG*) debug_print (lazy ("private inversion: term before refinement: " ^
CicPp.ppterm t));
let (ref_t,_,metasenv'',_) = CicRefine.type_of_aux' metasenv context t
- let proof2 = (t1,metasenv'',t3,t4, attrs) in
+ let proof2 = (t1,metasenv'',_subst,t3,t4, attrs) in
- let (_,metasenv''',_,_, _) = proof in
+ let (_,metasenv''',_subst,_,_, _) = proof in
let module PET = ProofEngineTypes in
let inversion_tac ~term (proof, goal) =
(*DEBUG*) debug_print (lazy ("inversion begins"));
let module PET = ProofEngineTypes in
let inversion_tac ~term (proof, goal) =
(*DEBUG*) debug_print (lazy ("inversion begins"));
- let _,metasenv,_,_, _ = proof in
+ let _,metasenv,_subst,_,_, _ = proof in
let name,nleft,arity,cons_list =
match obj with
Cic.InductiveDefinition (tys,_,nleft,_) ->
let name,nleft,arity,cons_list =
match obj with
Cic.InductiveDefinition (tys,_,nleft,_) ->
- (* apply i_inv ? ...? H). *)
- Cic.Appl ([Cic.Const(uri,[])] @ !a @ [Cic.Rel 1])
+ (* apply i_inv ? ...? H). *)
+ Cic.Appl ([Cic.Const(uri,[])] @ !a @ [term])
- let (t1,metasenv,t3,t4, attrs) = proof in
+ let (t1,metasenv,_subst,t3,t4, attrs) = proof in
let (ref_t,_,metasenv'',_) = CicRefine.type_of_aux' metasenv context t
let (ref_t,_,metasenv'',_) = CicRefine.type_of_aux' metasenv context t
- let proof = (t1,metasenv'',t3,t4, attrs) in
+ let proof = (t1,metasenv'',_subst,t3,t4, attrs) in
- let (_,metasenv''',_,_, _) = proof3 in
+ let (_,metasenv''',_subst,_,_, _) = proof3 in