summaryrefslogtreecommitdiff
path: root/proofs/evar_refiner.mli
blob: d57e1b84be3e72ed2279b2736fb36d5facf66c1d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
(************************************************************************)
(*  v      *   The Coq Proof Assistant  /  The Coq Development Team     *)
(* <O___,, * CNRS-Ecole Polytechnique-INRIA Futurs-Universite Paris Sud *)
(*   \VV/  **************************************************************)
(*    //   *      This file is distributed under the terms of the       *)
(*         *       GNU Lesser General Public License Version 2.1        *)
(************************************************************************)

(*i $Id: evar_refiner.mli,v 1.28.2.2 2005/01/21 16:41:51 herbelin Exp $ i*)

(*i*)
open Names
open Term
open Sign
open Environ
open Evd
open Refiner
open Proof_type
(*i*)

type wc = named_context sigma (* for a better reading of the following *)

(* Refinement of existential variables. *)

val rc_of_pfsigma : proof_tree sigma -> wc
val rc_of_glsigma : goal sigma -> wc

(* A [w_tactic] is a tactic which modifies the a set of evars of which
   a goal depend, either by instantiating one, or by declaring a new
   dependent goal *)
type w_tactic = wc -> wc

val startWalk : goal sigma -> wc * (wc -> tactic)

val extract_decl : evar -> w_tactic
val restore_decl : evar -> evar_info -> w_tactic
val w_Declare    : evar -> types -> w_tactic
val w_Define     : evar -> constr -> w_tactic

val w_Underlying : wc -> evar_map
val w_env        : wc -> env
val w_hyps       : wc -> named_context
val w_whd        : wc -> constr -> constr
val w_type_of    : wc -> constr -> constr
val w_add_sign   : (identifier * types) -> w_tactic

val w_whd_betadeltaiota : wc -> constr -> constr
val w_hnf_constr        : wc -> constr -> constr
val w_conv_x            : wc -> constr -> constr -> bool
val w_const_value       : wc -> constant -> constr
val w_defined_evar      : wc -> existential_key -> bool

val instantiate : int -> constr -> identifier Tacexpr.gsimple_clause -> tactic
(*i
val instantiate_tac : tactic_arg list -> tactic
i*)
val instantiate_pf_com : int -> Topconstr.constr_expr -> pftreestate -> pftreestate