summaryrefslogtreecommitdiff
path: root/proofs/evar_refiner.ml
diff options
context:
space:
mode:
authorGravatar Stephane Glondu <steph@glondu.net>2009-07-04 13:28:35 +0200
committerGravatar Stephane Glondu <steph@glondu.net>2009-07-04 13:28:35 +0200
commite4282ea99c664d8d58067bee199cbbcf881b60d5 (patch)
treed4c4a873eb055c728666f367469fa26c3417793a /proofs/evar_refiner.ml
parenta0a94c1340a63cdb824507b973393882666ba52a (diff)
Imported Upstream version 8.2.pl1+dfsgupstream/8.2.pl1+dfsg
Diffstat (limited to 'proofs/evar_refiner.ml')
-rw-r--r--proofs/evar_refiner.ml15
1 files changed, 8 insertions, 7 deletions
diff --git a/proofs/evar_refiner.ml b/proofs/evar_refiner.ml
index d19d81e0..f4613f8d 100644
--- a/proofs/evar_refiner.ml
+++ b/proofs/evar_refiner.ml
@@ -6,7 +6,7 @@
(* * GNU Lesser General Public License Version 2.1 *)
(************************************************************************)
-(* $Id: evar_refiner.ml 11309 2008-08-06 10:30:35Z herbelin $ *)
+(* $Id: evar_refiner.ml 12102 2009-04-24 10:48:11Z herbelin $ *)
open Util
open Names
@@ -15,6 +15,7 @@ open Evd
open Sign
open Proof_trees
open Refiner
+open Pretyping
(******************************************)
(* Instantiation of existential variables *)
@@ -22,21 +23,21 @@ open Refiner
(* w_tactic pour instantiate *)
-let w_refine evk rawc evd =
+let w_refine evk (ltac_vars,rawc) evd =
if Evd.is_defined (evars_of evd) evk then
error "Instantiate called on already-defined evar";
let e_info = Evd.find (evars_of evd) evk in
let env = Evd.evar_env e_info in
- let sigma,typed_c =
- try Pretyping.Default.understand_tcc ~resolve_classes:false
- (evars_of evd) env ~expected_type:e_info.evar_concl rawc
+ let evd',typed_c =
+ try Pretyping.Default.understand_ltac
+ (evars_of evd) env ltac_vars (OfType (Some e_info.evar_concl)) rawc
with _ ->
let loc = Rawterm.loc_of_rawconstr rawc in
user_err_loc
(loc,"",Pp.str ("Instance is not well-typed in the environment of " ^
string_of_existential evk))
in
- evar_define evk typed_c (evars_reset_evd sigma evd)
+ evar_define evk typed_c (evars_reset_evd (evars_of evd') evd)
(* vernac command Existential *)
@@ -55,5 +56,5 @@ let instantiate_pf_com n com pfts =
let env = Evd.evar_env evi in
let rawc = Constrintern.intern_constr sigma env com in
let evd = create_goal_evar_defs sigma in
- let evd' = w_refine evk rawc evd in
+ let evd' = w_refine evk (([],[]),rawc) evd in
change_constraints_pftreestate (evars_of evd') pfts