Module Flx_print


module Flx_print: sig .. end

val string_of_typecode : Flx_ast.typecode_t -> string
val string_of_btypecode : Flx_types.symbol_table_t -> Flx_types.btypecode_t -> string
val sbt : Flx_types.symbol_table_t -> Flx_types.btypecode_t -> string
val special_string_of_typecode : Flx_ast.typecode_t -> string
val string_of_expr : Flx_ast.expr_t -> string
val string_of_bound_expression : Flx_types.symbol_table_t -> Flx_types.tbexpr_t -> string
val string_of_bound_expression_with_type : Flx_types.symbol_table_t -> Flx_types.tbexpr_t -> string
val sbe : Flx_types.symbol_table_t -> Flx_types.tbexpr_t -> string
val tsbe : Flx_types.symbol_table_t -> Flx_types.tbexpr_t -> string
val string_of_properties : Flx_ast.property_t list -> string
val string_of_pattern : Flx_ast.pattern_t -> string
val string_of_tpattern : Flx_ast.tpattern_t -> string
val string_of_literal : Flx_ast.literal_t -> string
val string_of_parameters : Flx_ast.params_t -> string
val string_of_arguments : Flx_ast.expr_t list -> string
val string_of_statement : int -> Flx_ast.statement_t -> string
val string_of_compilation_unit : Flx_ast.compilation_unit_t -> string
val string_of_desugared : Flx_types.asm_t list -> string
val string_of_suffixed_name : Flx_ast.suffixed_name_t -> string
val string_of_qualified_name : Flx_ast.qualified_name_t -> string
val string_of_dcl : int ->
Flx_ast.id_t -> int option -> Flx_ast.vs_list_t -> Flx_types.dcl_t -> string
val string_of_bexe : Flx_types.symbol_table_t -> int -> Flx_types.bexe_t -> string
val sbx : Flx_types.symbol_table_t -> Flx_types.bexe_t -> string
val string_of_exe : int -> Flx_ast.exe_t -> string
val qualified_name_of_index : Flx_types.symbol_table_t -> int -> string
val string_of_bbdcl : Flx_types.symbol_table_t -> Flx_types.bbdcl_t -> int -> string
val string_of_symdef : Flx_types.symbol_definition_t -> string -> Flx_ast.ivs_list_t -> string
val string_of_entry_kind : Flx_types.entry_kind_t -> string
val full_string_of_entry_kind : Flx_types.symbol_table_t -> Flx_types.entry_kind_t -> string
val string_of_entry_set : Flx_types.entry_set_t -> string
val full_string_of_entry_set : Flx_types.symbol_table_t -> Flx_types.entry_set_t -> string
val print_name_table : Flx_types.symbol_table_t -> Flx_types.name_map_t -> unit
val string_of_myentry : Flx_types.symbol_table_t -> Flx_types.entry_kind_t -> string
val string_of_varlist : Flx_types.symbol_table_t -> (int * Flx_types.btypecode_t) list -> string
val string_of_bigint : Flx_ast.bigint -> string
val print_env : Flx_types.env_t -> unit
val print_env_short : Flx_types.env_t -> unit
val print_functions : Flx_types.symbol_table_t -> Flx_types.fully_bound_symbol_table_t -> unit
val print_function_body : Flx_types.symbol_table_t ->
string ->
int -> Flx_types.bvs_t -> Flx_types.bexe_t list -> int option -> unit
val print_function : Flx_types.symbol_table_t ->
Flx_types.fully_bound_symbol_table_t -> int -> unit
val print_vs : Flx_ast.vs_list_t -> string
val print_ivs : Flx_ast.ivs_list_t -> string
val print_ivs_with_index : Flx_ast.ivs_list_t -> string
val string_of_ast_term : int -> Flx_ast.ast_term_t -> string
val string_of_string : string -> string
val string_of_bquals : Flx_types.symbol_table_t -> Flx_types.btype_qual_t list -> string
val print_bvs : Flx_types.bvs_t -> string
type felix_term_t = [ `AST_abs_decl of
Flx_ast.range_srcref * Flx_ast.id_t * Flx_ast.vs_list_t *
Flx_ast.type_qual_t list * Flx_ast.c_t * Flx_ast.raw_req_expr_t
| `AST_andlist of Flx_ast.range_srcref * Flx_ast.expr_t list
| `AST_apply of Flx_ast.range_srcref * (Flx_ast.expr_t * Flx_ast.expr_t)
| `AST_apply_ctor of
Flx_ast.range_srcref * Flx_ast.id_t * Flx_ast.expr_t * Flx_ast.expr_t
| `AST_arrayof of Flx_ast.range_srcref * Flx_ast.expr_t list
| `AST_arrow of Flx_ast.range_srcref * (Flx_ast.expr_t * Flx_ast.expr_t)
| `AST_as of Flx_ast.range_srcref * (Flx_ast.expr_t * string)
| `AST_assert of Flx_ast.range_srcref * Flx_ast.expr_t
| `AST_assign of
Flx_ast.range_srcref * string * Flx_ast.tlvalue_t * Flx_ast.expr_t
| `AST_axiom of
Flx_ast.range_srcref * Flx_ast.id_t * Flx_ast.vs_list_t *
Flx_ast.params_t * Flx_ast.axiom_method_t
| `AST_call of Flx_ast.range_srcref * Flx_ast.expr_t * Flx_ast.expr_t
| `AST_callback of Flx_ast.range_srcref * Flx_ast.qualified_name_t
| `AST_callback_decl of
Flx_ast.range_srcref * Flx_ast.id_t * Flx_ast.typecode_t list *
Flx_ast.typecode_t * Flx_ast.raw_req_expr_t
| `AST_case of
Flx_ast.range_srcref * Flx_ast.expr_t * string list * Flx_ast.expr_t
| `AST_case_arg of Flx_ast.range_srcref * (int * Flx_ast.expr_t)
| `AST_case_index of Flx_ast.range_srcref * Flx_ast.expr_t
| `AST_case_tag of Flx_ast.range_srcref * int
| `AST_cassign of Flx_ast.range_srcref * Flx_ast.expr_t * Flx_ast.expr_t
| `AST_cclass of
Flx_ast.range_srcref * Flx_ast.id_t * Flx_ast.vs_list_t *
Flx_ast.class_member_t list
| `AST_class of
Flx_ast.range_srcref * Flx_ast.id_t * Flx_ast.vs_list_t *
Flx_ast.statement_t list
| `AST_code of Flx_ast.range_srcref * Flx_ast.c_t
| `AST_coercion of
Flx_ast.range_srcref * (Flx_ast.expr_t * Flx_ast.typecode_t)
| `AST_comment of string
| `AST_cond of
Flx_ast.range_srcref * (Flx_ast.expr_t * Flx_ast.expr_t * Flx_ast.expr_t)
| `AST_const_decl of
Flx_ast.range_srcref * Flx_ast.id_t * Flx_ast.vs_list_t *
Flx_ast.typecode_t * Flx_ast.c_t * Flx_ast.raw_req_expr_t
| `AST_cparse of Flx_ast.range_srcref * string
| `AST_cstring of string
| `AST_cstruct of
Flx_ast.range_srcref * Flx_ast.id_t * Flx_ast.vs_list_t *
(Flx_ast.id_t * Flx_ast.typecode_t) list
| `AST_ctor_arg of
Flx_ast.range_srcref * (Flx_ast.qualified_name_t * Flx_ast.expr_t)
| `AST_ctypes of
Flx_ast.range_srcref * (Flx_ast.srcref * Flx_ast.id_t) list *
Flx_ast.type_qual_t list * Flx_ast.raw_req_expr_t
| `AST_curry of
Flx_ast.range_srcref * Flx_ast.id_t * Flx_ast.vs_list_t *
Flx_ast.params_t list * (Flx_ast.typecode_t * Flx_ast.expr_t option) *
Flx_ast.funkind_t * Flx_ast.statement_t list
| `AST_deref of Flx_ast.range_srcref * Flx_ast.expr_t
| `AST_dot of Flx_ast.range_srcref * (Flx_ast.expr_t * Flx_ast.expr_t)
| `AST_ellipsis of Flx_ast.range_srcref
| `AST_export_fun of Flx_ast.range_srcref * Flx_ast.suffixed_name_t * string
| `AST_export_type of Flx_ast.range_srcref * Flx_ast.typecode_t * string
| `AST_expr of Flx_ast.range_srcref * string * Flx_ast.typecode_t
| `AST_expr_macro of
Flx_ast.range_srcref * Flx_ast.id_t * Flx_ast.macro_parameter_t list *
Flx_ast.expr_t
| `AST_float of string * string
| `AST_fun_decl of
Flx_ast.range_srcref * Flx_ast.id_t * Flx_ast.vs_list_t *
Flx_ast.typecode_t list * Flx_ast.typecode_t * Flx_ast.c_t *
Flx_ast.raw_req_expr_t * Flx_ast.prec_t
| `AST_fun_return of Flx_ast.range_srcref * Flx_ast.expr_t
| `AST_function of
Flx_ast.range_srcref * Flx_ast.id_t * Flx_ast.vs_list_t *
Flx_ast.params_t * (Flx_ast.typecode_t * Flx_ast.expr_t option) *
Flx_ast.property_t list * Flx_ast.statement_t list
| `AST_get_n of Flx_ast.range_srcref * (int * Flx_ast.expr_t)
| `AST_get_named_method of
Flx_ast.range_srcref *
(string * int * Flx_ast.typecode_t list * Flx_ast.expr_t)
| `AST_get_named_variable of Flx_ast.range_srcref * (string * Flx_ast.expr_t)
| `AST_glr of
Flx_ast.range_srcref * string * Flx_ast.typecode_t *
(Flx_ast.range_srcref * Flx_ast.production_t * Flx_ast.expr_t) list
| `AST_goto of Flx_ast.range_srcref * Flx_ast.id_t
| `AST_halt of Flx_ast.range_srcref * string
| `AST_ifdo of
Flx_ast.range_srcref * Flx_ast.expr_t * Flx_ast.statement_t list *
Flx_ast.statement_t list
| `AST_ifgoto of Flx_ast.range_srcref * Flx_ast.expr_t * Flx_ast.id_t
| `AST_ifnotgoto of Flx_ast.range_srcref * Flx_ast.expr_t * Flx_ast.id_t
| `AST_ifreturn of Flx_ast.range_srcref * Flx_ast.expr_t
| `AST_include of Flx_ast.range_srcref * string
| `AST_index of Flx_ast.range_srcref * string * int
| `AST_inherit of
Flx_ast.range_srcref * Flx_ast.id_t * Flx_ast.vs_list_t *
Flx_ast.qualified_name_t
| `AST_inherit_fun of
Flx_ast.range_srcref * Flx_ast.id_t * Flx_ast.vs_list_t *
Flx_ast.qualified_name_t
| `AST_init of Flx_ast.range_srcref * Flx_ast.id_t * Flx_ast.expr_t
| `AST_inject_module of Flx_ast.range_srcref * Flx_ast.qualified_name_t
| `AST_insert of
Flx_ast.range_srcref * Flx_ast.id_t * Flx_ast.vs_list_t * Flx_ast.c_t *
Flx_ast.ikind_t * Flx_ast.raw_req_expr_t
| `AST_instance of
Flx_ast.range_srcref * Flx_ast.vs_list_t * Flx_ast.qualified_name_t *
Flx_ast.statement_t list
| `AST_int of string * Flx_ast.bigint
| `AST_interpolate of Flx_ast.range_srcref * string
| `AST_jump of Flx_ast.range_srcref * Flx_ast.expr_t * Flx_ast.expr_t
| `AST_label of Flx_ast.range_srcref * Flx_ast.id_t
| `AST_lambda of
Flx_ast.range_srcref *
(Flx_ast.vs_list_t * Flx_ast.params_t list * Flx_ast.typecode_t *
Flx_ast.statement_t list)
| `AST_lazy_decl of
Flx_ast.range_srcref * Flx_ast.id_t * Flx_ast.vs_list_t *
Flx_ast.typecode_t option * Flx_ast.expr_t option
| `AST_lemma of
Flx_ast.range_srcref * Flx_ast.id_t * Flx_ast.vs_list_t *
Flx_ast.params_t * Flx_ast.axiom_method_t
| `AST_letin of
Flx_ast.range_srcref *
(Flx_ast.pattern_t * Flx_ast.expr_t * Flx_ast.expr_t)
| `AST_lift of Flx_ast.range_srcref * Flx_ast.expr_t
| `AST_literal of Flx_ast.range_srcref * Flx_ast.literal_t
| `AST_longarrow of Flx_ast.range_srcref * (Flx_ast.expr_t * Flx_ast.expr_t)
| `AST_lookup of
Flx_ast.range_srcref *
(Flx_ast.expr_t * string * Flx_ast.typecode_t list)
| `AST_loop of Flx_ast.range_srcref * Flx_ast.id_t * Flx_ast.expr_t
| `AST_lvalue of Flx_ast.range_srcref * Flx_ast.expr_t
| `AST_macro_assign of
Flx_ast.range_srcref * Flx_ast.id_t list * Flx_ast.expr_t
| `AST_macro_block of Flx_ast.range_srcref * Flx_ast.statement_t list
| `AST_macro_ctor of Flx_ast.range_srcref * (string * Flx_ast.expr_t)
| `AST_macro_forget of Flx_ast.range_srcref * Flx_ast.id_t list
| `AST_macro_goto of Flx_ast.range_srcref * Flx_ast.id_t
| `AST_macro_ifgoto of Flx_ast.range_srcref * Flx_ast.expr_t * Flx_ast.id_t
| `AST_macro_ifor of
Flx_ast.range_srcref * Flx_ast.id_t * Flx_ast.id_t list *
Flx_ast.statement_t list
| `AST_macro_label of Flx_ast.range_srcref * Flx_ast.id_t
| `AST_macro_name of Flx_ast.range_srcref * Flx_ast.id_t * Flx_ast.id_t
| `AST_macro_names of Flx_ast.range_srcref * Flx_ast.id_t * Flx_ast.id_t list
| `AST_macro_proc_return of Flx_ast.range_srcref
| `AST_macro_statements of Flx_ast.range_srcref * Flx_ast.statement_t list
| `AST_macro_val of Flx_ast.range_srcref * Flx_ast.id_t list * Flx_ast.expr_t
| `AST_macro_vals of
Flx_ast.range_srcref * Flx_ast.id_t * Flx_ast.expr_t list
| `AST_macro_var of Flx_ast.range_srcref * Flx_ast.id_t list * Flx_ast.expr_t
| `AST_macro_vfor of
Flx_ast.range_srcref * Flx_ast.id_t list * Flx_ast.expr_t *
Flx_ast.statement_t list
| `AST_map of Flx_ast.range_srcref * Flx_ast.expr_t * Flx_ast.expr_t
| `AST_match of
Flx_ast.range_srcref *
(Flx_ast.expr_t * (Flx_ast.pattern_t * Flx_ast.expr_t) list)
| `AST_match_case of Flx_ast.range_srcref * (int * Flx_ast.expr_t)
| `AST_match_ctor of
Flx_ast.range_srcref * (Flx_ast.qualified_name_t * Flx_ast.expr_t)
| `AST_method_apply of
Flx_ast.range_srcref *
(Flx_ast.id_t * Flx_ast.expr_t * Flx_ast.typecode_t list)
| `AST_name of Flx_ast.range_srcref * string * Flx_ast.typecode_t list
| `AST_namespace of
Flx_ast.range_srcref * Flx_ast.id_t * Flx_ast.vs_list_t *
Flx_ast.statement_t list
| `AST_new of Flx_ast.range_srcref * Flx_ast.expr_t
| `AST_newtype of
Flx_ast.range_srcref * Flx_ast.id_t * Flx_ast.vs_list_t *
Flx_ast.typecode_t
| `AST_noexpand of Flx_ast.range_srcref * Flx_ast.expr_t
| `AST_nop of Flx_ast.range_srcref * string
| `AST_noreturn_code of Flx_ast.range_srcref * Flx_ast.c_t
| `AST_object of
Flx_ast.range_srcref * Flx_ast.id_t * Flx_ast.vs_list_t *
Flx_ast.params_t * Flx_ast.statement_t list
| `AST_open of
Flx_ast.range_srcref * Flx_ast.vs_list_t * Flx_ast.qualified_name_t
| `AST_orlist of Flx_ast.range_srcref * Flx_ast.expr_t list
| `AST_parse of
Flx_ast.range_srcref * Flx_ast.expr_t *
(Flx_ast.range_srcref * Flx_ast.production_t * Flx_ast.expr_t) list
| `AST_patany of Flx_ast.range_srcref
| `AST_patvar of Flx_ast.range_srcref * string
| `AST_private of Flx_ast.range_srcref * Flx_ast.statement_t
| `AST_proc_return of Flx_ast.range_srcref
| `AST_product of Flx_ast.range_srcref * Flx_ast.expr_t list
| `AST_record of Flx_ast.range_srcref * (string * Flx_ast.expr_t) list
| `AST_record_type of
Flx_ast.range_srcref * (string * Flx_ast.typecode_t) list
| `AST_reduce of
Flx_ast.range_srcref * Flx_ast.id_t * Flx_ast.vs_list_t *
Flx_ast.simple_parameter_t list * Flx_ast.expr_t * Flx_ast.expr_t
| `AST_ref of Flx_ast.range_srcref * Flx_ast.expr_t
| `AST_ref_decl of
Flx_ast.range_srcref * Flx_ast.id_t * Flx_ast.vs_list_t *
Flx_ast.typecode_t option * Flx_ast.expr_t option
| `AST_regdef of Flx_ast.range_srcref * string * Flx_ast.regexp_t
| `AST_reglex of
Flx_ast.range_srcref *
(Flx_ast.expr_t * Flx_ast.expr_t *
(Flx_ast.regexp_t * Flx_ast.expr_t) list)
| `AST_regmatch of
Flx_ast.range_srcref *
(Flx_ast.expr_t * Flx_ast.expr_t *
(Flx_ast.regexp_t * Flx_ast.expr_t) list)
| `AST_seq of Flx_ast.range_srcref * Flx_ast.statement_t list
| `AST_setintersection of Flx_ast.range_srcref * Flx_ast.expr_t list
| `AST_setunion of Flx_ast.range_srcref * Flx_ast.expr_t list
| `AST_sparse of Flx_ast.range_srcref * Flx_ast.expr_t * string * int list
| `AST_stmt_macro of
Flx_ast.range_srcref * Flx_ast.id_t * Flx_ast.macro_parameter_t list *
Flx_ast.statement_t list
| `AST_string of string
| `AST_string_regmatch of
Flx_ast.range_srcref *
(Flx_ast.expr_t * (Flx_ast.regexp_t * Flx_ast.expr_t) list)
| `AST_struct of
Flx_ast.range_srcref * Flx_ast.id_t * Flx_ast.vs_list_t *
(Flx_ast.id_t * Flx_ast.typecode_t) list
| `AST_suffix of
Flx_ast.range_srcref * (Flx_ast.qualified_name_t * Flx_ast.typecode_t)
| `AST_sum of Flx_ast.range_srcref * Flx_ast.expr_t list
| `AST_superscript of
Flx_ast.range_srcref * (Flx_ast.expr_t * Flx_ast.expr_t)
| `AST_svc of Flx_ast.range_srcref * Flx_ast.id_t
| `AST_the of Flx_ast.range_srcref * Flx_ast.qualified_name_t
| `AST_tuple of Flx_ast.range_srcref * Flx_ast.expr_t list
| `AST_type_alias of
Flx_ast.range_srcref * Flx_ast.id_t * Flx_ast.vs_list_t *
Flx_ast.typecode_t
| `AST_type_match of
Flx_ast.range_srcref *
(Flx_ast.typecode_t * (Flx_ast.typecode_t * Flx_ast.typecode_t) list)
| `AST_typeclass of
Flx_ast.range_srcref * Flx_ast.id_t * Flx_ast.vs_list_t *
Flx_ast.statement_t list
| `AST_typed_case of Flx_ast.range_srcref * int * Flx_ast.typecode_t
| `AST_typeof of Flx_ast.range_srcref * Flx_ast.expr_t
| `AST_union of
Flx_ast.range_srcref * Flx_ast.id_t * Flx_ast.vs_list_t *
(Flx_ast.id_t * int option * Flx_ast.vs_list_t * Flx_ast.typecode_t) list
| `AST_untyped_module of
Flx_ast.range_srcref * Flx_ast.id_t * Flx_ast.vs_list_t *
Flx_ast.statement_t list
| `AST_use of Flx_ast.range_srcref * Flx_ast.id_t * Flx_ast.qualified_name_t
| `AST_user_statement of Flx_ast.range_srcref * string * Flx_ast.ast_term_t
| `AST_ustring of string
| `AST_val_decl of
Flx_ast.range_srcref * Flx_ast.id_t * Flx_ast.vs_list_t *
Flx_ast.typecode_t option * Flx_ast.expr_t option
| `AST_var_decl of
Flx_ast.range_srcref * Flx_ast.id_t * Flx_ast.vs_list_t *
Flx_ast.typecode_t option * Flx_ast.expr_t option
| `AST_variant of Flx_ast.range_srcref * (string * Flx_ast.expr_t)
| `AST_variant_type of
Flx_ast.range_srcref * (string * Flx_ast.typecode_t) list
| `AST_void of Flx_ast.range_srcref
| `AST_vsprintf of Flx_ast.range_srcref * string
| `AST_wstring of string
| `AST_yield of Flx_ast.range_srcref * Flx_ast.expr_t
| `Apply_term of Flx_ast.ast_term_t * Flx_ast.ast_term_t list
| `BBDCL_abs of
Flx_types.bvs_t * Flx_types.btype_qual_t list * Flx_ast.c_t *
Flx_types.breqs_t
| `BBDCL_callback of
Flx_ast.property_t list * Flx_types.bvs_t * Flx_types.btypecode_t list *
Flx_types.btypecode_t list * int * Flx_types.btypecode_t *
Flx_types.breqs_t * Flx_ast.prec_t
| `BBDCL_cclass of Flx_types.bvs_t * Flx_types.bclass_member_t list
| `BBDCL_class of Flx_ast.property_t list * Flx_types.bvs_t
| `BBDCL_const of
Flx_types.bvs_t * Flx_types.btypecode_t * Flx_ast.c_t * Flx_types.breqs_t
| `BBDCL_cstruct of
Flx_types.bvs_t * (Flx_ast.id_t * Flx_types.btypecode_t) list
| `BBDCL_fun of
Flx_ast.property_t list * Flx_types.bvs_t * Flx_types.btypecode_t list *
Flx_types.btypecode_t * Flx_ast.c_t * Flx_types.breqs_t * Flx_ast.prec_t
| `BBDCL_function of
Flx_ast.property_t list * Flx_types.bvs_t * Flx_types.bparams_t *
Flx_types.btypecode_t * Flx_types.bexe_t list
| `BBDCL_glr of
Flx_ast.property_t list * Flx_types.bvs_t * Flx_types.btypecode_t *
(Flx_types.bproduction_t * Flx_types.bexe_t list)
| `BBDCL_insert of
Flx_types.bvs_t * Flx_ast.c_t * Flx_ast.ikind_t * Flx_types.breqs_t
| `BBDCL_instance of
Flx_ast.property_t list * Flx_types.bvs_t * Flx_types.btypecode_t *
Flx_ast.bid_t * Flx_types.btypecode_t list
| `BBDCL_newtype of Flx_types.bvs_t * Flx_types.btypecode_t
| `BBDCL_nonconst_ctor of
Flx_types.bvs_t * int * Flx_types.btypecode_t * int *
Flx_types.btypecode_t * Flx_types.bvs_t * Flx_types.btypecode_t
| `BBDCL_proc of
Flx_ast.property_t list * Flx_types.bvs_t * Flx_types.btypecode_t list *
Flx_ast.c_t * Flx_types.breqs_t
| `BBDCL_procedure of
Flx_ast.property_t list * Flx_types.bvs_t * Flx_types.bparams_t *
Flx_types.bexe_t list
| `BBDCL_ref of Flx_types.bvs_t * Flx_types.btypecode_t
| `BBDCL_reglex of
Flx_ast.property_t list * Flx_types.bvs_t * Flx_types.bparams_t *
int * Flx_types.btypecode_t * Flx_types.regular_args_t
| `BBDCL_regmatch of
Flx_ast.property_t list * Flx_types.bvs_t * Flx_types.bparams_t *
Flx_types.btypecode_t * Flx_types.regular_args_t
| `BBDCL_struct of
Flx_types.bvs_t * (Flx_ast.id_t * Flx_types.btypecode_t) list
| `BBDCL_tmp of Flx_types.bvs_t * Flx_types.btypecode_t
| `BBDCL_typeclass of Flx_ast.property_t list * Flx_types.bvs_t
| `BBDCL_union of
Flx_types.bvs_t * (Flx_ast.id_t * int * Flx_types.btypecode_t) list
| `BBDCL_val of Flx_types.bvs_t * Flx_types.btypecode_t
| `BBDCL_var of Flx_types.bvs_t * Flx_types.btypecode_t
| `BEXE_apply_ctor of
Flx_ast.range_srcref * Flx_ast.bid_t * Flx_ast.bid_t *
Flx_types.btypecode_t list * Flx_ast.bid_t * Flx_types.tbexpr_t
| `BEXE_apply_ctor_stack of
Flx_ast.range_srcref * Flx_ast.bid_t * Flx_ast.bid_t *
Flx_types.btypecode_t list * Flx_ast.bid_t * Flx_types.tbexpr_t
| `BEXE_assert of Flx_ast.range_srcref * Flx_types.tbexpr_t
| `BEXE_assert2 of
Flx_ast.range_srcref * Flx_ast.range_srcref * Flx_types.tbexpr_t option *
Flx_types.tbexpr_t
| `BEXE_assign of
Flx_ast.range_srcref * Flx_types.tbexpr_t * Flx_types.tbexpr_t
| `BEXE_axiom_check of Flx_ast.range_srcref * Flx_types.tbexpr_t
| `BEXE_begin
| `BEXE_call of
Flx_ast.range_srcref * Flx_types.tbexpr_t * Flx_types.tbexpr_t
| `BEXE_call_direct of
Flx_ast.range_srcref * Flx_ast.bid_t * Flx_types.btypecode_t list *
Flx_types.tbexpr_t
| `BEXE_call_method_direct of
Flx_ast.range_srcref * Flx_types.tbexpr_t * Flx_ast.bid_t *
Flx_types.btypecode_t list * Flx_types.tbexpr_t
| `BEXE_call_method_stack of
Flx_ast.range_srcref * Flx_types.tbexpr_t * Flx_ast.bid_t *
Flx_types.btypecode_t list * Flx_types.tbexpr_t
| `BEXE_call_prim of
Flx_ast.range_srcref * Flx_ast.bid_t * Flx_types.btypecode_t list *
Flx_types.tbexpr_t
| `BEXE_call_stack of
Flx_ast.range_srcref * Flx_ast.bid_t * Flx_types.btypecode_t list *
Flx_types.tbexpr_t
| `BEXE_code of Flx_ast.range_srcref * Flx_ast.c_t
| `BEXE_comment of Flx_ast.range_srcref * string
| `BEXE_end
| `BEXE_fun_return of Flx_ast.range_srcref * Flx_types.tbexpr_t
| `BEXE_goto of Flx_ast.range_srcref * string
| `BEXE_halt of Flx_ast.range_srcref * string
| `BEXE_ifgoto of Flx_ast.range_srcref * Flx_types.tbexpr_t * string
| `BEXE_ifnotgoto of Flx_ast.range_srcref * Flx_types.tbexpr_t * string
| `BEXE_init of Flx_ast.range_srcref * Flx_ast.bid_t * Flx_types.tbexpr_t
| `BEXE_jump of
Flx_ast.range_srcref * Flx_types.tbexpr_t * Flx_types.tbexpr_t
| `BEXE_jump_direct of
Flx_ast.range_srcref * Flx_ast.bid_t * Flx_types.btypecode_t list *
Flx_types.tbexpr_t
| `BEXE_label of Flx_ast.range_srcref * string
| `BEXE_loop of Flx_ast.range_srcref * int * Flx_types.tbexpr_t
| `BEXE_nonreturn_code of Flx_ast.range_srcref * Flx_ast.c_t
| `BEXE_nop of Flx_ast.range_srcref * string
| `BEXE_proc_return of Flx_ast.range_srcref
| `BEXE_svc of Flx_ast.range_srcref * Flx_ast.bid_t
| `BEXE_yield of Flx_ast.range_srcref * Flx_types.tbexpr_t
| `BEXPR_apply of Flx_types.tbexpr_t * Flx_types.tbexpr_t
| `BEXPR_apply_direct of
Flx_ast.bid_t * Flx_types.btypecode_t list * Flx_types.tbexpr_t
| `BEXPR_apply_method_direct of
Flx_types.tbexpr_t * Flx_ast.bid_t * Flx_types.btypecode_t list *
Flx_types.tbexpr_t
| `BEXPR_apply_method_stack of
Flx_types.tbexpr_t * Flx_ast.bid_t * Flx_types.btypecode_t list *
Flx_types.tbexpr_t
| `BEXPR_apply_prim of
Flx_ast.bid_t * Flx_types.btypecode_t list * Flx_types.tbexpr_t
| `BEXPR_apply_stack of
Flx_ast.bid_t * Flx_types.btypecode_t list * Flx_types.tbexpr_t
| `BEXPR_apply_struct of
Flx_ast.bid_t * Flx_types.btypecode_t list * Flx_types.tbexpr_t
| `BEXPR_case of int * Flx_types.btypecode_t
| `BEXPR_case_arg of int * Flx_types.tbexpr_t
| `BEXPR_case_index of Flx_types.tbexpr_t
| `BEXPR_closure of Flx_ast.bid_t * Flx_types.btypecode_t list
| `BEXPR_coerce of Flx_types.tbexpr_t * Flx_types.btypecode_t
| `BEXPR_deref of Flx_types.tbexpr_t
| `BEXPR_expr of string * Flx_types.btypecode_t
| `BEXPR_get_n of int * Flx_types.tbexpr_t
| `BEXPR_get_named of int * Flx_types.tbexpr_t
| `BEXPR_literal of Flx_ast.literal_t
| `BEXPR_match_case of int * Flx_types.tbexpr_t
| `BEXPR_method_closure of
Flx_types.tbexpr_t * Flx_ast.bid_t * Flx_types.btypecode_t list
| `BEXPR_name of Flx_ast.bid_t * Flx_types.btypecode_t list
| `BEXPR_new of Flx_types.tbexpr_t
| `BEXPR_parse of Flx_types.tbexpr_t * int list
| `BEXPR_range_check of
Flx_types.tbexpr_t * Flx_types.tbexpr_t * Flx_types.tbexpr_t
| `BEXPR_record of (string * Flx_types.tbexpr_t) list
| `BEXPR_ref of Flx_ast.bid_t * Flx_types.btypecode_t list
| `BEXPR_tuple of Flx_types.tbexpr_t list
| `BEXPR_variant of string * Flx_types.tbexpr_t
| `BIFACE_export_fun of Flx_ast.range_srcref * Flx_ast.bid_t * string
| `BIFACE_export_type of
Flx_ast.range_srcref * Flx_types.btypecode_t * string
| `BTYP_apply of ('a Flx_types.btypecode_t' as 'a) * 'a
| `BTYP_array of 'a * 'a
| `BTYP_case of 'a * Flx_mtypes1.IntSet.t * 'a
| `BTYP_cfunction of 'a * 'a
| `BTYP_fix of int
| `BTYP_function of 'a * 'a
| `BTYP_inst of Flx_ast.bid_t * 'a list
| `BTYP_intersect of 'a list
| `BTYP_lift of 'a
| `BTYP_lvalue of 'a
| `BTYP_pointer of 'a
| `BTYP_record of (string * 'a) list
| `BTYP_sum of 'a list
| `BTYP_tuple of 'a list
| `BTYP_type of int
| `BTYP_type_match of 'a * ('a Flx_types.btpattern_t' * 'a) list
| `BTYP_type_tuple of 'a list
| `BTYP_typefun of (int * 'a) list * 'a * 'a
| `BTYP_typeset of 'a list
| `BTYP_typesetintersection of 'a list
| `BTYP_typesetunion of 'a list
| `BTYP_unitsum of int
| `BTYP_var of int * 'a
| `BTYP_variant of (string * 'a) list
| `BTYP_void
| `Body
| `Body_req of Flx_ast.c_t
| `Bound_needs_shape of Flx_types.btypecode_t
| `Cfun
| `Ctor
| `DCL_abs of
Flx_ast.type_qual_t list * Flx_ast.c_t * Flx_ast.named_req_expr_t
| `DCL_axiom of Flx_ast.params_t * Flx_ast.axiom_method_t
| `DCL_callback of
Flx_ast.property_t list * Flx_ast.typecode_t list * Flx_ast.typecode_t *
Flx_ast.named_req_expr_t
| `DCL_cclass of Flx_ast.class_member_t list
| `DCL_class of Flx_types.asm_t list
| `DCL_const of Flx_ast.typecode_t * Flx_ast.c_t * Flx_ast.named_req_expr_t
| `DCL_cstruct of (Flx_ast.id_t * Flx_ast.typecode_t) list
| `DCL_fun of
Flx_ast.property_t list * Flx_ast.typecode_t list * Flx_ast.typecode_t *
Flx_ast.c_t * Flx_ast.named_req_expr_t * Flx_ast.prec_t
| `DCL_function of
Flx_ast.params_t * Flx_ast.typecode_t * Flx_ast.property_t list *
Flx_types.asm_t list
| `DCL_glr of
Flx_ast.typecode_t * (Flx_ast.reduced_production_t * Flx_ast.expr_t)
| `DCL_inherit of Flx_ast.qualified_name_t
| `DCL_inherit_fun of Flx_ast.qualified_name_t
| `DCL_insert of Flx_ast.c_t * Flx_ast.ikind_t * Flx_ast.named_req_expr_t
| `DCL_instance of Flx_ast.qualified_name_t * Flx_types.asm_t list
| `DCL_lazy of Flx_ast.typecode_t * Flx_ast.expr_t
| `DCL_lemma of Flx_ast.params_t * Flx_ast.axiom_method_t
| `DCL_match_check of Flx_ast.pattern_t * (string * int)
| `DCL_match_handler of
Flx_ast.pattern_t * (string * int) * Flx_types.asm_t list
| `DCL_module of Flx_types.asm_t list
| `DCL_newtype of Flx_ast.typecode_t
| `DCL_reduce of
Flx_ast.simple_parameter_t list * Flx_ast.expr_t * Flx_ast.expr_t
| `DCL_ref of Flx_ast.typecode_t
| `DCL_regdef of Flx_ast.regexp_t
| `DCL_reglex of (Flx_ast.regexp_t * Flx_ast.expr_t) list
| `DCL_regmatch of (Flx_ast.regexp_t * Flx_ast.expr_t) list
| `DCL_struct of (Flx_ast.id_t * Flx_ast.typecode_t) list
| `DCL_type_alias of Flx_ast.typecode_t
| `DCL_typeclass of Flx_types.asm_t list
| `DCL_union of
(Flx_ast.id_t * int option * Flx_ast.vs_list_t * Flx_ast.typecode_t) list
| `DCL_val of Flx_ast.typecode_t
| `DCL_var of Flx_ast.typecode_t
| `Dcl of
Flx_ast.range_srcref * Flx_ast.id_t * int option * Flx_types.access_t *
Flx_ast.vs_list_t * Flx_types.dcl_t
| `Dir of Flx_types.dir_t
| `EXE_apply_ctor of Flx_ast.id_t * Flx_ast.expr_t * Flx_ast.expr_t
| `EXE_assert of Flx_ast.expr_t
| `EXE_assign of Flx_ast.expr_t * Flx_ast.expr_t
| `EXE_call of Flx_ast.expr_t * Flx_ast.expr_t
| `EXE_code of Flx_ast.c_t
| `EXE_comment of string
| `EXE_fun_return of Flx_ast.expr_t
| `EXE_goto of string
| `EXE_halt of string
| `EXE_ifgoto of Flx_ast.expr_t * string
| `EXE_ifnotgoto of Flx_ast.expr_t * string
| `EXE_iinit of (Flx_ast.id_t * int) * Flx_ast.expr_t
| `EXE_init of Flx_ast.id_t * Flx_ast.expr_t
| `EXE_jump of Flx_ast.expr_t * Flx_ast.expr_t
| `EXE_label of string
| `EXE_loop of Flx_ast.id_t * Flx_ast.expr_t
| `EXE_nop of string
| `EXE_noreturn_code of Flx_ast.c_t
| `EXE_proc_return
| `EXE_svc of Flx_ast.id_t
| `EXE_yield of Flx_ast.expr_t
| `Exe of Flx_ast.range_srcref * Flx_ast.exe_t
| `Explicit_closure
| `Expression_term of Flx_ast.expr_t
| `GC_pointer
| `GLR_alt of Flx_ast.glr_term_t list
| `GLR_ast of Flx_ast.glr_term_t
| `GLR_name of Flx_ast.qualified_name_t
| `GLR_opt of Flx_ast.glr_term_t
| `GLR_plus of Flx_ast.glr_term_t
| `GLR_seq of Flx_ast.glr_term_t list
| `Generated of string
| `Generator
| `Header
| `Header_req of Flx_ast.c_t
| `Heap_closure
| `IFACE_export_fun of Flx_ast.suffixed_name_t * string
| `IFACE_export_type of Flx_ast.typecode_t * string
| `Identifier_term of string
| `Identity
| `Iface of Flx_ast.range_srcref * Flx_types.iface_t
| `Incomplete
| `Inline
| `Inlining_complete
| `Inlining_started
| `Keyword_term of string
| `NREQ_and of Flx_ast.named_req_expr_t * Flx_ast.named_req_expr_t
| `NREQ_atom of Flx_ast.qualified_name_t
| `NREQ_false
| `NREQ_or of Flx_ast.named_req_expr_t * Flx_ast.named_req_expr_t
| `NREQ_true
| `Named_req of Flx_ast.qualified_name_t
| `NoInline
| `Not_requires_ptf
| `PAT_any of Flx_ast.range_srcref
| `PAT_as of Flx_ast.range_srcref * Flx_ast.pattern_t * Flx_ast.id_t
| `PAT_coercion of
Flx_ast.range_srcref * Flx_ast.pattern_t * Flx_ast.typecode_t
| `PAT_const_ctor of Flx_ast.range_srcref * Flx_ast.qualified_name_t
| `PAT_float_range of
Flx_ast.range_srcref * Flx_ast.float_pat * Flx_ast.float_pat
| `PAT_int of Flx_ast.range_srcref * string * Flx_ast.bigint
| `PAT_int_range of
Flx_ast.range_srcref * string * Flx_ast.bigint * string * Flx_ast.bigint
| `PAT_name of Flx_ast.range_srcref * Flx_ast.id_t
| `PAT_nan of Flx_ast.range_srcref
| `PAT_nonconst_ctor of
Flx_ast.range_srcref * Flx_ast.qualified_name_t * Flx_ast.pattern_t
| `PAT_none of Flx_ast.range_srcref
| `PAT_record of
Flx_ast.range_srcref * (Flx_ast.id_t * Flx_ast.pattern_t) list
| `PAT_regexp of Flx_ast.range_srcref * string * Flx_ast.id_t list
| `PAT_string of Flx_ast.range_srcref * string
| `PAT_string_range of Flx_ast.range_srcref * string * string
| `PAT_tuple of Flx_ast.range_srcref * Flx_ast.pattern_t list
| `PAT_when of Flx_ast.range_srcref * Flx_ast.pattern_t * Flx_ast.expr_t
| `PFun
| `PRef
| `PVal
| `PVar
| `Package
| `Package_req of Flx_ast.c_t
| `Pod
| `Private
| `Property_req of string
| `Public
| `Pure
| `REGEXP_alt of Flx_ast.regexp_t * Flx_ast.regexp_t
| `REGEXP_aster of Flx_ast.regexp_t
| `REGEXP_code of Flx_ast.expr_t
| `REGEXP_epsilon
| `REGEXP_group of string * Flx_ast.regexp_t
| `REGEXP_name of Flx_ast.qualified_name_t
| `REGEXP_sentinel
| `REGEXP_seq of Flx_ast.regexp_t * Flx_ast.regexp_t
| `REGEXP_string of string
| `RREQ_and of Flx_ast.raw_req_expr_t * Flx_ast.raw_req_expr_t
| `RREQ_atom of Flx_ast.requirement_t
| `RREQ_false
| `RREQ_or of Flx_ast.raw_req_expr_t * Flx_ast.raw_req_expr_t
| `RREQ_true
| `Raw_needs_shape of Flx_ast.typecode_t
| `Recursive
| `Requires_ptf
| `SYMDEF_abs of
Flx_ast.type_qual_t list * Flx_ast.c_t * Flx_ast.named_req_expr_t
| `SYMDEF_axiom of Flx_ast.params_t * Flx_ast.axiom_method_t
| `SYMDEF_callback of
Flx_ast.property_t list * Flx_ast.typecode_t list * Flx_ast.typecode_t *
Flx_ast.named_req_expr_t
| `SYMDEF_cclass of Flx_ast.class_member_t list
| `SYMDEF_class
| `SYMDEF_const of
Flx_ast.typecode_t * Flx_ast.c_t * Flx_ast.named_req_expr_t
| `SYMDEF_const_ctor of int * Flx_ast.typecode_t * int * Flx_ast.ivs_list_t
| `SYMDEF_cstruct of (Flx_ast.id_t * Flx_ast.typecode_t) list
| `SYMDEF_fun of
Flx_ast.property_t list * Flx_ast.typecode_t list * Flx_ast.typecode_t *
Flx_ast.c_t * Flx_ast.named_req_expr_t * Flx_ast.prec_t
| `SYMDEF_function of
Flx_ast.params_t * Flx_ast.typecode_t * Flx_ast.property_t list *
Flx_ast.sexe_t list
| `SYMDEF_glr of
Flx_ast.typecode_t * (Flx_ast.reduced_production_t * Flx_ast.sexe_t list)
| `SYMDEF_inherit of Flx_ast.qualified_name_t
| `SYMDEF_inherit_fun of Flx_ast.qualified_name_t
| `SYMDEF_insert of Flx_ast.c_t * Flx_ast.ikind_t * Flx_ast.named_req_expr_t
| `SYMDEF_instance of Flx_ast.qualified_name_t
| `SYMDEF_lazy of Flx_ast.typecode_t * Flx_ast.expr_t
| `SYMDEF_lemma of Flx_ast.params_t * Flx_ast.axiom_method_t
| `SYMDEF_match_check of Flx_ast.pattern_t * (string * int)
| `SYMDEF_module
| `SYMDEF_newtype of Flx_ast.typecode_t
| `SYMDEF_nonconst_ctor of
int * Flx_ast.typecode_t * int * Flx_ast.ivs_list_t * Flx_ast.typecode_t
| `SYMDEF_parameter of Flx_ast.param_kind_t * Flx_ast.typecode_t
| `SYMDEF_reduce of
Flx_ast.parameter_t list * Flx_ast.expr_t * Flx_ast.expr_t
| `SYMDEF_ref of Flx_ast.typecode_t
| `SYMDEF_regdef of Flx_ast.regexp_t
| `SYMDEF_reglex of
Flx_ast.params_t * int * (Flx_ast.regexp_t * Flx_ast.expr_t) list
| `SYMDEF_regmatch of
Flx_ast.params_t * (Flx_ast.regexp_t * Flx_ast.expr_t) list
| `SYMDEF_struct of (Flx_ast.id_t * Flx_ast.typecode_t) list
| `SYMDEF_type_alias of Flx_ast.typecode_t
| `SYMDEF_typeclass
| `SYMDEF_typevar of Flx_ast.typecode_t
| `SYMDEF_union of
(Flx_ast.id_t * int * Flx_ast.vs_list_t * Flx_ast.typecode_t) list
| `SYMDEF_val of Flx_ast.typecode_t
| `SYMDEF_var of Flx_ast.typecode_t
| `Stack_closure
| `Stackable
| `Statement_term of Flx_ast.statement_t
| `Statements_term of Flx_ast.statement_t list
| `Str of string
| `StrTemplate of string
| `TPAT_any
| `TPAT_as of Flx_ast.tpattern_t * string
| `TPAT_function of Flx_ast.tpattern_t * Flx_ast.tpattern_t
| `TPAT_name of string * Flx_ast.tpattern_t list
| `TPAT_pointer of Flx_ast.tpattern_t
| `TPAT_sum of Flx_ast.tpattern_t list
| `TPAT_tuple of Flx_ast.tpattern_t list
| `TPAT_type_tuple of Flx_ast.tpattern_t list
| `TPAT_unitsum of int
| `TPAT_var of string
| `TPAT_void
| `TYP_apply of Flx_ast.typecode_t * Flx_ast.typecode_t
| `TYP_array of Flx_ast.typecode_t * Flx_ast.typecode_t
| `TYP_as of Flx_ast.typecode_t * string
| `TYP_case of Flx_ast.typecode_t * string list * Flx_ast.typecode_t
| `TYP_case_arg of int * Flx_ast.typecode_t
| `TYP_cfunction of Flx_ast.typecode_t * Flx_ast.typecode_t
| `TYP_cod of Flx_ast.typecode_t
| `TYP_dom of Flx_ast.typecode_t
| `TYP_dual of Flx_ast.typecode_t
| `TYP_ellipsis
| `TYP_function of Flx_ast.typecode_t * Flx_ast.typecode_t
| `TYP_glr_attr_type of Flx_ast.qualified_name_t
| `TYP_intersect of Flx_ast.typecode_t list
| `TYP_isin of Flx_ast.typecode_t * Flx_ast.typecode_t
| `TYP_lift of Flx_ast.typecode_t
| `TYP_lvalue of Flx_ast.typecode_t
| `TYP_none
| `TYP_pointer of Flx_ast.typecode_t
| `TYP_proj of int * Flx_ast.typecode_t
| `TYP_record of (string * Flx_ast.typecode_t) list
| `TYP_setintersection of Flx_ast.typecode_t list
| `TYP_setunion of Flx_ast.typecode_t list
| `TYP_sum of Flx_ast.typecode_t list
| `TYP_tuple of Flx_ast.typecode_t list
| `TYP_type
| `TYP_type_match of
Flx_ast.typecode_t * (Flx_ast.typecode_t * Flx_ast.typecode_t) list
| `TYP_type_tuple of Flx_ast.typecode_t list
| `TYP_typefun of
Flx_ast.simple_parameter_t list * Flx_ast.typecode_t * Flx_ast.typecode_t
| `TYP_typeof of Flx_ast.expr_t
| `TYP_typeset of Flx_ast.typecode_t list
| `TYP_unitsum of int
| `TYP_var of int
| `TYP_variant of (string * Flx_ast.typecode_t) list
| `Unstackable
| `Uses_gc
| `Uses_global_var
| `Virtual
| `Yields ]
val st : Flx_types.symbol_table_t -> felix_term_t -> string