aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEmilio Jesus Gallego Arias2020-03-02 01:50:26 -0500
committerEmilio Jesus Gallego Arias2020-03-19 17:18:10 -0400
commit92b61209c60b368bbc095950786187b94b167632 (patch)
tree5cceb7b23780618d89143d674aca2b3ccb481742
parent139d206294f98194e9bdb19a7d5da73f9b104db5 (diff)
[declare] Remove one use of inline_private_constants
We instead favor the `build_by_tactic` function which should at some point better integrated in the declare core.
-rw-r--r--tactics/pfedit.ml6
-rw-r--r--tactics/pfedit.mli6
-rw-r--r--vernac/auto_ind_decl.ml16
-rw-r--r--vernac/obligations.ml12
-rw-r--r--vernac/vernacentries.ml4
5 files changed, 21 insertions, 23 deletions
diff --git a/tactics/pfedit.ml b/tactics/pfedit.ml
index 438892e75e..a2edb5fe49 100644
--- a/tactics/pfedit.ml
+++ b/tactics/pfedit.ml
@@ -129,10 +129,10 @@ let build_constant_by_tactic ~name ?(opaque=Proof_global.Transparent) ctx sign ~
| _ ->
CErrors.anomaly Pp.(str "[build_constant_by_tactic] close_proof returned more than one proof term")
-let build_by_tactic ?(side_eff=true) env sigma ~poly typ tac =
+let build_by_tactic ?(side_eff=true) env ~uctx ~poly ~typ tac =
let name = Id.of_string ("temporary_proof"^string_of_int (next())) in
let sign = val_of_named_context (named_context env) in
- let ce, status, univs = build_constant_by_tactic ~name sigma sign ~poly typ tac in
+ let ce, status, univs = build_constant_by_tactic ~name uctx sign ~poly typ tac in
let cb, univs =
if side_eff then Declare.inline_private_constants ~univs env ce
else
@@ -140,7 +140,7 @@ let build_by_tactic ?(side_eff=true) env sigma ~poly typ tac =
let (cb, ctx), _eff = Future.force ce.Declare.proof_entry_body in
cb, UState.merge ~sideff:false Evd.univ_rigid univs ctx
in
- cb, status, univs
+ cb, ce.Declare.proof_entry_type, status, univs
let refine_by_tactic ~name ~poly env sigma ty tac =
(* Save the initial side-effects to restore them afterwards. We set the
diff --git a/tactics/pfedit.mli b/tactics/pfedit.mli
index 3cf3a13262..c1f656376d 100644
--- a/tactics/pfedit.mli
+++ b/tactics/pfedit.mli
@@ -74,11 +74,11 @@ val build_constant_by_tactic
val build_by_tactic
: ?side_eff:bool
-> env
- -> UState.t
+ -> uctx:UState.t
-> poly:bool
- -> EConstr.types
+ -> typ:EConstr.types
-> unit Proofview.tactic
- -> constr * bool * UState.t
+ -> constr * types option * bool * UState.t
val refine_by_tactic
: name:Id.t
diff --git a/vernac/auto_ind_decl.ml b/vernac/auto_ind_decl.ml
index 9ed371bcfb..0c9b9c7255 100644
--- a/vernac/auto_ind_decl.ml
+++ b/vernac/auto_ind_decl.ml
@@ -691,10 +691,10 @@ let make_bl_scheme mode mind =
let lnonparrec,lnamesparrec = (* TODO subst *)
context_chop (nparams-nparrec) mib.mind_params_ctxt in
let bl_goal, eff = compute_bl_goal ind lnamesparrec nparrec in
- let ctx = UState.make ~lbound:(Global.universes_lbound ()) (Global.universes ()) in
+ let uctx = UState.make ~lbound:(Global.universes_lbound ()) (Global.universes ()) in
let side_eff = side_effect_of_mode mode in
let bl_goal = EConstr.of_constr bl_goal in
- let (ans, _, ctx) = Pfedit.build_by_tactic ~poly:false ~side_eff (Global.env()) ctx bl_goal
+ let (ans, _, _, ctx) = Pfedit.build_by_tactic ~poly:false ~side_eff (Global.env()) ~uctx ~typ:bl_goal
(compute_bl_tact mode (!bl_scheme_kind_aux()) (ind, EConstr.EInstance.empty) lnamesparrec nparrec)
in
([|ans|], ctx), eff
@@ -821,10 +821,10 @@ let make_lb_scheme mode mind =
let lnonparrec,lnamesparrec =
context_chop (nparams-nparrec) mib.mind_params_ctxt in
let lb_goal, eff = compute_lb_goal ind lnamesparrec nparrec in
- let ctx = UState.make ~lbound:(Global.universes_lbound ()) (Global.universes ()) in
+ let uctx = UState.make ~lbound:(Global.universes_lbound ()) (Global.universes ()) in
let side_eff = side_effect_of_mode mode in
let lb_goal = EConstr.of_constr lb_goal in
- let (ans, _, ctx) = Pfedit.build_by_tactic ~poly:false ~side_eff (Global.env()) ctx lb_goal
+ let (ans, _, _, ctx) = Pfedit.build_by_tactic ~poly:false ~side_eff (Global.env()) ~uctx ~typ:lb_goal
(compute_lb_tact mode (!lb_scheme_kind_aux()) ind lnamesparrec nparrec)
in
([|ans|], ctx), eff
@@ -997,13 +997,13 @@ let make_eq_decidability mode mind =
let nparams = mib.mind_nparams in
let nparrec = mib.mind_nparams_rec in
let u = Univ.Instance.empty in
- let ctx = UState.make ~lbound:(Global.universes_lbound ()) (Global.universes ()) in
+ let uctx = UState.make ~lbound:(Global.universes_lbound ()) (Global.universes ()) in
let lnonparrec,lnamesparrec =
context_chop (nparams-nparrec) mib.mind_params_ctxt in
let side_eff = side_effect_of_mode mode in
- let (ans, _, ctx) = Pfedit.build_by_tactic ~poly:false ~side_eff (Global.env()) ctx
- (EConstr.of_constr (compute_dec_goal (ind,u) lnamesparrec nparrec))
- (compute_dec_tact ind lnamesparrec nparrec)
+ let (ans, _, _, ctx) = Pfedit.build_by_tactic ~poly:false ~side_eff (Global.env()) ~uctx
+ ~typ:(EConstr.of_constr (compute_dec_goal (ind,u) lnamesparrec nparrec))
+ (compute_dec_tact ind lnamesparrec nparrec)
in
([|ans|], ctx), Evd.empty_side_effects
diff --git a/vernac/obligations.ml b/vernac/obligations.ml
index b38c23631f..c022d93f34 100644
--- a/vernac/obligations.ml
+++ b/vernac/obligations.ml
@@ -416,16 +416,14 @@ let warn_solve_errored = CWarnings.create ~name:"solve_obligation_error" ~catego
Pp.seq [str "Solve Obligations tactic returned error: "; err; fnl ();
str "This will become an error in the future"])
-let solve_by_tac ?loc name evi t poly ctx =
- (* spiwack: the status is dropped. *)
+let solve_by_tac ?loc name evi t poly uctx =
try
- let (entry,_,ctx') =
- Pfedit.build_constant_by_tactic
- ~name ~poly ctx evi.evar_hyps evi.evar_concl t in
+ (* the status is dropped. *)
let env = Global.env () in
- let body, ctx' = Declare.inline_private_constants ~univs:ctx' env entry in
+ let body, types, _, ctx' =
+ Pfedit.build_by_tactic env ~uctx ~poly ~typ:evi.evar_concl t in
Inductiveops.control_only_guard env (Evd.from_ctx ctx') (EConstr.of_constr body);
- Some (body, entry.Declare.proof_entry_type, ctx')
+ Some (body, types, ctx')
with
| Refiner.FailError (_, s) as exn ->
let _ = Exninfo.capture exn in
diff --git a/vernac/vernacentries.ml b/vernac/vernacentries.ml
index b5ecd62dad..e7930cc091 100644
--- a/vernac/vernacentries.ml
+++ b/vernac/vernacentries.ml
@@ -474,8 +474,8 @@ let program_inference_hook env sigma ev =
if not (Evarutil.is_ground_env sigma env &&
Evarutil.is_ground_term sigma concl)
then raise Exit;
- let c, _, ctx =
- Pfedit.build_by_tactic ~poly:false env (Evd.evar_universe_context sigma) concl tac
+ let c, _, _, ctx =
+ Pfedit.build_by_tactic ~poly:false env ~uctx:(Evd.evar_universe_context sigma) ~typ:concl tac
in Evd.set_universe_context sigma ctx, EConstr.of_constr c
with Logic_monad.TacticFailure e when noncritical e ->
user_err Pp.(str "The statement obligations could not be resolved \