Prooftype data = {| sigma : Evd.evar_map; | (* A representation of the evar_map  | 
| goals : Evar.t list; | (* Focused goals*) | 
| entry : Proofview.entry; | (* Entry for the proofview*) | 
| stack : (Evar.t list * Evar.t list) list; | (* A representation of the focus stack*) | 
| name : Names.Id.t; | (* The name of the theorem whose proof is being constructed*) | 
| poly : bool; | (* polymorphism*) | 
}val start : 
  name:Names.Id.t ->
  poly:bool ->
  ?typing_flags:Declarations.typing_flags ->
  Evd.evar_map ->
  (Environ.env * EConstr.types) list ->
  tval dependent_start : 
  name:Names.Id.t ->
  poly:bool ->
  ?typing_flags:Declarations.typing_flags ->
  Proofview.telescope ->
  tval is_done : t -> boolval is_complete : t -> boolval partial_proof : t -> EConstr.constr listupdate_sigma_univs lifts UState.update_sigma_univs to the proof
exception OpenProof of Names.Id.t option * open_error_reasonval return : ?pid:Names.Id.t -> t -> Evd.evar_mapval new_focus_kind : unit -> 'a focus_kindval no_cond : ?loose_end:bool -> 'a focus_kind -> 'a focus_conditionval done_cond : ?loose_end:bool -> 'a focus_kind -> 'a focus_conditionval focus : 'a focus_condition -> 'a -> int -> t -> tval focus_id : 'a focus_condition -> 'a -> Names.Id.t -> t -> texception NoSuchGoal of Names.Id.t optionval unfocus : 'a focus_kind -> t -> unit -> tval unfocused : t -> boolval get_at_focus : 'a focus_kind -> t -> 'aval is_last_focus : 'a focus_kind -> t -> boolval no_focused_goal : t -> boolval run_tactic : 
  Environ.env ->
  'a Proofview.tactic ->
  t ->
  t * (bool * Proofview_monad.Info.tree) * 'aval maximal_unfocus : 'a focus_kind -> t -> tval goal_uid : Evar.t -> stringval all_goals : t -> Evar.Set.tsolve (SelectNth n) tac applies tactic tac to the nth subgoal of the current focused proof. solve SelectAll
    tac applies tac to all subgoals.
val solve : 
  ?with_end_tac:unit Proofview.tactic ->
  Goal_select.t ->
  int option ->
  unit Proofview.tactic ->
  t ->
  t * boolOption telling if unification heuristics should be used.
val refine_by_tactic : 
  name:Names.Id.t ->
  poly:bool ->
  Environ.env ->
  Evd.evar_map ->
  EConstr.types ->
  unit Proofview.tactic ->
  Constr.constr * Evd.evar_mapA variant of the above function that handles open terms as well. Caveat: all effects are purged in the returned term at the end, but other evars solved by side-effects are NOT purged, so that unexpected failures may occur. Ideally all code using this function should be rewritten in the monad.
exception SuggestNoSuchGoals of int * tval get_goal_context_gen : t -> int -> Evd.evar_map * Environ.envHelpers to obtain proof state when in an interactive proof
val get_proof_context : t -> Evd.evar_map * Environ.envget_proof_context () gets the goal context for the first subgoal of the proof