(************************************************************************) (* v * The Coq Proof Assistant / The Coq Development Team *) (* t type accumulator type tag = int type arity = int type reloc_table = (tag * arity) array type annot_sw = { asw_ind : inductive; asw_ci : case_info; asw_reloc : reloc_table; asw_finite : bool; asw_prefix : string } val eq_annot_sw : annot_sw -> annot_sw -> bool val hash_annot_sw : annot_sw -> int type sort_annot = string * int type rec_pos = int array val eq_rec_pos : rec_pos -> rec_pos -> bool type atom = | Arel of int | Aconstant of constant | Aind of inductive | Asort of sorts | Avar of identifier | Acase of annot_sw * accumulator * t * (t -> t) | Afix of t array * t array * rec_pos * int | Acofix of t array * t array * int * t | Acofixe of t array * t array * int * t | Aprod of name * t * (t -> t) (* Constructors *) val mk_accu : atom -> t val mk_rel_accu : int -> t val mk_rels_accu : int -> int -> t array val mk_constant_accu : constant -> t val mk_ind_accu : inductive -> t val mk_sort_accu : sorts -> t val mk_var_accu : identifier -> t val mk_sw_accu : annot_sw -> accumulator -> t -> (t -> t) val mk_prod_accu : name -> t -> t -> t val mk_fix_accu : rec_pos -> int -> t array -> t array -> t val mk_cofix_accu : int -> t array -> t array -> t val upd_cofix : t -> t -> unit val force_cofix : t -> t val mk_const : tag -> t val mk_block : tag -> t array -> t val mk_int : int -> t val napply : t -> t array -> t (* Functions over accumulators *) val dummy_value : unit -> t val atom_of_accu : accumulator -> atom val args_of_accu : accumulator -> t list val accu_nargs : accumulator -> int val cast_accu : t -> accumulator (* Functions over block: i.e constructors *) type block val block_size : block -> int val block_field : block -> int -> t val block_tag : block -> int (* kind_of_value *) type kind_of_value = | Vaccu of accumulator | Vfun of (t -> t) | Vconst of int | Vblock of block val kind_of_value : t -> kind_of_value (* *) val is_accu : t -> bool val str_encode : 'a -> string val str_decode : string -> 'a