X-Git-Url: http://matita.cs.unibo.it/gitweb/?a=blobdiff_plain;f=helm%2Fsoftware%2Fcomponents%2Fgrafite_engine%2FgrafiteEngine.ml;h=71ac2939a7c8d6a7ab94c17a584871c19ec6eabc;hb=fcbe3e8f67fa42c84a57e343ba5ef6a97ba8ca67;hp=1b6878aba1414bb619b525c40a28155402ab6a7e;hpb=58ed5ecaefbcb025dedfdf709e6023292559e44a;p=helm.git diff --git a/helm/software/components/grafite_engine/grafiteEngine.ml b/helm/software/components/grafite_engine/grafiteEngine.ml index 1b6878aba..71ac2939a 100644 --- a/helm/software/components/grafite_engine/grafiteEngine.ml +++ b/helm/software/components/grafite_engine/grafiteEngine.ml @@ -533,9 +533,12 @@ let index_obj_for_auto status (uri, height, _, _, kind) = match kind with | NCic.Fixpoint _ -> [] | NCic.Inductive _ -> [] - | NCic.Constant (_,_,_, ty, _) -> - let ty = (* saturare *) ty in + | NCic.Constant (_,_,Some _, ty, _) -> + let ty,_,_ = NCicMetaSubst.saturate [] [] [] ty 0 in [ty,NCic.Const(NReference.reference_of_spec uri (NReference.Def height))] + | NCic.Constant (_,_,None, ty, _) -> + let ty,_,_ = NCicMetaSubst.saturate [] [] [] ty 0 in + [ty,NCic.Const(NReference.reference_of_spec uri (NReference.Decl))] in let status = basic_index_obj data status in let dump = record_index_obj data :: status#dump in @@ -826,7 +829,29 @@ let rec eval_ncommand opts status (text,prefix_len,cmd) = | NCicTypeChecker.TypeCheckerFailure _ -> HLog.warn "error in generating projection/eliminator"; status,uris - ) (status,`New [] (* uris *)) boxml in + ) (status,`New [] (* uris *)) boxml in + let _,_,_,_,nobj = obj in + let status = match nobj with + NCic.Inductive (true,leftno,[it],_) -> + let _,ind_name,ty,cl = it in + List.fold_left + (fun status outsort -> + let status = status#set_ng_mode `ProofMode in + try + (let status,invobj = NInversion.mk_inverter + (ind_name ^ "_inv_" ^ (snd (NCicElim.ast_of_sort outsort))) + it leftno outsort status status#baseuri in + let _,_,menv,_,_ = invobj in + fst (match menv with + [] -> eval_ncommand opts status ("",0,GrafiteAst.NQed Stdpp.dummy_loc) + | _ -> status,`New [])) + with _ -> HLog.warn "error in generating inversion principle"; + let status = status#set_ng_mode `CommandMode in status) + status + (NCic.Prop:: + List.map (fun s -> NCic.Type s) (NCicEnvironment.get_universes ())) + | _ -> status + in let coercions = match obj with _,_,_,_,NCic.Inductive