Module Proof

type t
val proof : t -> Goal.goal list * (Goal.goal list * Goal.goal list) list * Goal.goal list * Goal.goal list * Evd.evar_map
val initial_goals : t -> (EConstr.constr * EConstr.types) list
val initial_euctx : t -> UState.t
type data = {
sigma : Evd.evar_map;

A representation of the evar_map EJGA wouldn't it better to just return the proofview?

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

shelf : Evar.t list;

A representation of the shelf

given_up : Evar.t list;

A representation of the given up goals

initial_euctx : UState.t;

The initial universe context (for the statement)

name : Names.Id.t;

The name of the theorem whose proof is being constructed

poly : bool;

polymorphism

}
val data : t -> data
type 'a pre_goals = {
fg_goals : 'a list;

List of the focussed goals

bg_goals : ('a list * 'a list) list;

Zipper representing the unfocussed background goals

shelved_goals : 'a list;

List of the goals on the shelf.

given_up_goals : 'a list;

List of the goals that have been given up

}
val map_structured_proof : t -> (Evd.evar_map -> Goal.goal -> 'a) -> 'a pre_goals
val start : name:Names.Id.t -> poly:bool -> Evd.evar_map -> (Environ.env * EConstr.types) list -> t
val dependent_start : name:Names.Id.t -> poly:bool -> Proofview.telescope -> t
val is_done : t -> bool
val is_complete : t -> bool
val partial_proof : t -> EConstr.constr list
val compact : t -> t
type open_error_reason =
| UnfinishedProof
| HasGivenUpGoals
exception OpenProof of Names.Id.t option * open_error_reason
val return : ?⁠pid:Names.Id.t -> t -> Evd.evar_map
type 'a focus_kind
val new_focus_kind : unit -> 'a focus_kind
type 'a focus_condition
val no_cond : ?⁠loose_end:bool -> 'a focus_kind -> 'a focus_condition
val done_cond : ?⁠loose_end:bool -> 'a focus_kind -> 'a focus_condition
val focus : 'a focus_condition -> 'a -> int -> t -> t
val focus_id : 'aa focus_condition -> 'a -> Names.Id.t -> t -> t
exception FullyUnfocused
exception CannotUnfocusThisWay
exception NoSuchGoals of int * int
val unfocus : 'a focus_kind -> t -> unit -> t
val unfocused : t -> bool
exception NoSuchFocus
val get_at_focus : 'a focus_kind -> t -> 'a
val is_last_focus : 'a focus_kind -> t -> bool
val no_focused_goal : t -> bool
val run_tactic : Environ.env -> unit Proofview.tactic -> t -> t * (bool * Proofview_monad.Info.tree)
val maximal_unfocus : 'a focus_kind -> t -> t
val in_proof : t -> (Evd.evar_map -> 'a) -> 'a
val unshelve : t -> t
val pr_proof : t -> Pp.t
module V82 : sig ... end
val all_goals : t -> Goal.Set.t