X-Git-Url: http://matita.cs.unibo.it/gitweb/?a=blobdiff_plain;f=helm%2Fsoftware%2Fcomponents%2Ftactics%2Fparamodulation%2Fsaturation.ml;h=5df1d7d6f243222f4a7cedcaf57b726f8bf6db06;hb=298868e07163c21863d542136733d24bfbec2482;hp=6e792201964824db331fce7d3fc7813bac10be2a;hpb=373eac375c2950d0090cac177f44dbfb761389d5;p=helm.git diff --git a/helm/software/components/tactics/paramodulation/saturation.ml b/helm/software/components/tactics/paramodulation/saturation.ml index 6e7922019..5df1d7d6f 100644 --- a/helm/software/components/tactics/paramodulation/saturation.ml +++ b/helm/software/components/tactics/paramodulation/saturation.ml @@ -1277,10 +1277,11 @@ let fix_proof metasenv context all_implicits p = let metasenv,s = aux metasenv n s in let metasenv,t = aux metasenv (n+1) t in metasenv,Cic.Prod(name,s,t) - | Cic.LetIn(name,s,t) -> + | Cic.LetIn(name,s,ty,t) -> let metasenv,s = aux metasenv n s in + let metasenv,ty = aux metasenv n ty in let metasenv,t = aux metasenv (n+1) t in - metasenv,Cic.LetIn(name,s,t) + metasenv,Cic.LetIn(name,s,ty,t) | Cic.Const(uri,ens) -> let metasenv,ens = List.fold_right @@ -1361,20 +1362,33 @@ let build_proof prerr_endline "THE PROOF DOES NOT TYPECHECK! "; raise exn in + let old_insert_coercions = !CicRefine.insert_coercions in let goal_proof,goal_ty,real_menv,_ = (* prerr_endline ("parte la refine per: " ^ (CicPp.pp goal_proof names)); *) try debug_print (lazy (CicPp.ppterm goal_proof)); - CicRefine.type_of_aux' real_menv context goal_proof CicUniv.empty_ugraph + CicRefine.insert_coercions := false; + let res = + CicRefine.type_of_aux' + real_menv context goal_proof CicUniv.empty_ugraph + in + CicRefine.insert_coercions := old_insert_coercions; + res with | CicRefine.RefineFailure s | CicRefine.Uncertain s | CicRefine.AssertFailure s as exn -> + CicRefine.insert_coercions := old_insert_coercions; pp_error goal_proof names (Lazy.force s) exn | CicUtil.Meta_not_found i as exn -> + CicRefine.insert_coercions := old_insert_coercions; pp_error goal_proof names ("META NOT FOUND: "^string_of_int i) exn | Invalid_argument "list_fold_left2" as exn -> + CicRefine.insert_coercions := old_insert_coercions; pp_error goal_proof names "Invalid_argument: list_fold_left2" exn + | exn -> + CicRefine.insert_coercions := old_insert_coercions; + raise exn in let subst_side_effects,real_menv,_ = try