Module Reductionops.Stack
type 'a member=|App of 'a app_node|Case of Constr.case_info * 'a * ('a, EConstr.EInstance.t) Constr.case_invert * 'a array|Proj of Names.Projection.t|Fix of ('a, 'a) Constr.pfixpoint * 'a t|Primitive of CPrimitives.t * Names.Constant.t * EConstr.EInstance.t * 'a t * CPrimitives.args_redand 'a t= 'a member list
val pr : ('a -> Pp.t) -> 'a t -> Pp.tval empty : 'a tval is_empty : 'a t -> boolval append_app : 'a array -> 'a t -> 'a tval decomp : 'a t -> ('a * 'a t) optionval decomp_node_last : 'a app_node -> 'a t -> 'a * 'a tval compare_shape : 'a t -> 'a t -> bool
val fold2 : ('a -> EConstr.constr -> EConstr.constr -> 'a) -> 'a -> EConstr.constr t -> EConstr.constr t -> 'afold2 f x sk1 sk2foldsfon any pair of term in(sk1,sk2).- returns
 the result and the lifts to apply on the terms
- raises IncompatibleFold2
 when
sk1andsk2have incompatible shapes
val map : ('a -> 'a) -> 'a t -> 'a tval append_app_list : 'a list -> 'a t -> 'a tval strip_app : 'a t -> 'a t * 'a tif
strip_app s=(a,b), thens = a @ bandbdoes not start by App
val strip_n_app : int -> 'a t -> ('a t * 'a * 'a t) option- returns
 (the nth first elements, the (n+1)th element, the remaining stack)
val not_purely_applicative : 'a t -> boolval list_of_app_stack : EConstr.constr t -> EConstr.constr list optionval assign : 'a t -> int -> 'a -> 'a tval args_size : 'a t -> intval tail : int -> 'a t -> 'a tval nth : 'a t -> int -> 'aval zip : Evd.evar_map -> (EConstr.constr * EConstr.constr t) -> EConstr.constr