type 'a hyp = Names.Id.t list * 'a option * 'atype info = {evar : Evar.t;name : Names.Id.t option;
}type 'a reified_goal = {info : info;ty : 'a;hyp : 'a hyp list;
}type 'a ser_goals = {goals : 'a list;stack : ('a list * 'a list) list;shelf : 'a list;given_up : 'a list;bullet : Pp.t option;
}val get_goals_gen :
(Environ.env -> Evd.evar_map -> Constr.t -> 'a) ->
doc:Stm.doc ->
Stateid.t ->
'a reified_goal ser_goals option