Reductionops.Stacktype member = | | App of app_node | 
| | Case of case_stk | 
| | Proj of Names.Projection.t | 
| | Fix of EConstr.fixpoint * t | 
| | Primitive of CPrimitives.t
  * Names.Constant.t * EConstr.EInstance.t
  * t
  * CPrimitives.args_red | 
and t = member listval empty : tval is_empty : t -> boolval fold2 : 
  ( 'a -> EConstr.constr -> EConstr.constr -> 'a ) ->
  'a ->
  t ->
  t ->
  'afold2 f x sk1 sk2 folds f on any pair of term in (sk1,sk2).
append_app_list args sk pushes list of arguments args on sk
if strip_app sk = (sk1,sk2), then sk = sk1 @ sk2 with sk1 purely applicative and sk2 does not start with an argument
decomp sk extracts the first argument of reversed stack sk is there is some
val not_purely_applicative : t -> boolnot_purely_applicative sk
val list_of_app_stack : t -> EConstr.constr list optionlist_of_app_stack sk either returns Some sk turned into a list of arguments if sk is purely applicative and None otherwise
val args_size : t -> intargs_size sk returns the number of arguments available at the head of sk
val zip : Evd.evar_map -> (EConstr.constr * t) -> EConstr.constrzip sigma t sk
val expand_case : 
  Environ.env ->
  Evd.evar_map ->
  case_stk ->
  Constr.case_info
  * EConstr.EInstance.t
  * EConstr.constr array
  * (EConstr.rel_context * EConstr.constr)
  * (EConstr.rel_context * EConstr.constr) array