sig
  val fmkapattern :
    Xquery_algebra_ast.apattern_desc ->
    Finfo.finfo -> Xquery_algebra_ast.apattern
  val fmkasequencetype :
    Xquery_algebra_ast.asequencetype_desc ->
    Finfo.finfo -> Xquery_algebra_ast.asequencetype
  val algop_mkop :
    '->
    Xquery_algebra_ast.expr_eval_sig option ->
    Xquery_algebra_ast.algop_expr_name ->
    ('a, 'b) Xquery_algebra_ast.aalgop_sub_exprs ->
    ('a, 'b) Xquery_algebra_ast.aalgop_sub_exprs ->
    '->
    Xquery_algebra_ast.free_variable_desc option ->
    Xquery_ast.expr_handle ->
    Finfo.finfo -> ('a, 'b) Xquery_algebra_ast.aalgop_expr
  val algop_decl_mkop :
    '->
    Xquery_algebra_ast.algop_decl_name ->
    ('a, 'b) Xquery_algebra_ast.aalgop_sub_exprs ->
    ('a, 'b) Xquery_algebra_ast.aalgop_sub_exprs ->
    '-> Finfo.finfo -> ('a, 'b, 'c) Xquery_algebra_ast.aalgop_decl
  val fmkalgop_function_body :
    Xquery_common_ast.cvname array ->
    ('a, 'b) Xquery_algebra_ast.aalgop_function_plan ->
    ('a, 'b) Xquery_algebra_ast.aalgop_expr option ->
    Xquery_algebra_ast.asequencetype option ->
    ('a, 'b) Xquery_algebra_ast.aalgop_function_body
  val fmkalgop_function_decl :
    ('a, 'b) Xquery_algebra_ast.aalgop_function_decl_desc ->
    Finfo.finfo -> ('a, 'b) Xquery_algebra_ast.aalgop_function_decl
  val fmkalgop_prolog :
    ('a, 'b) Xquery_algebra_ast.aalgop_function_decl list ->
    ('a, 'b, 'c) Xquery_algebra_ast.aalgop_decl list ->
    ('a, 'b, 'c) Xquery_algebra_ast.aalgop_decl list ->
    ('a, 'b, 'c) Xquery_algebra_ast.aalgop_prolog
  val fmkalgop_xmodule :
    ('a, 'b, 'c) Xquery_algebra_ast.aalgop_prolog ->
    ('a, 'b) Xquery_algebra_ast.aalgop_expr list ->
    ('a, 'b, 'c) Xquery_algebra_ast.aalgop_xmodule
  val aalgop_mkop :
    Xquery_algebra_ast.algop_expr_name ->
    'Logical_algebra_types.semilogical_opt_algop_sub_exprs ->
    'Logical_algebra_types.semilogical_opt_algop_sub_exprs ->
    Xquery_algebra_ast.free_variable_desc option ->
    Xquery_ast.expr_handle ->
    Finfo.finfo -> 'Logical_algebra_types.semilogical_opt_algop_expr
  val logical_aalgop_mkop :
    Xquery_algebra_ast.algop_expr_name ->
    Logical_algebra_types.logical_algop_sub_exprs ->
    Logical_algebra_types.logical_algop_sub_exprs ->
    Xquery_algebra_ast.free_variable_desc option ->
    Xquery_ast.expr_handle ->
    Finfo.finfo -> Logical_algebra_types.logical_algop_expr
  val replace_aalgop_name :
    'Logical_algebra_types.semilogical_opt_algop_expr ->
    Xquery_algebra_ast.algop_expr_name ->
    'Logical_algebra_types.semilogical_opt_algop_expr
  val aalgop_decl_mkop :
    Xquery_algebra_ast.algop_decl_name ->
    'Logical_algebra_types.semilogical_algop_sub_exprs ->
    'Logical_algebra_types.semilogical_algop_sub_exprs ->
    Finfo.finfo -> ('a, 'b) Logical_algebra_types.semilogical_algop_decl
  val logical_aalgop_decl_mkop :
    Xquery_algebra_ast.algop_decl_name ->
    Logical_algebra_types.logical_algop_sub_exprs ->
    Logical_algebra_types.logical_algop_sub_exprs ->
    Finfo.finfo -> Logical_algebra_types.logical_algop_decl
  val copy_algop :
    ('a, 'b) Xquery_algebra_ast.aalgop_expr ->
    ('a, 'b) Xquery_algebra_ast.aalgop_expr
  val mk_annotation :
    Xquery_algebra_ast.variable_use_count list ->
    Xquery_algebra_ast.variable_use_count list ->
    Xquery_algebra_ast.tuple_fields ->
    Xquery_algebra_ast.tuple_fields ->
    Xquery_algebra_ast.tuple_field_use_count list *
    Xquery_algebra_ast.tuple_fields * Xquery_algebra_ast.cardinality ->
    Xquery_algebra_ast.free_variable_desc
  val access_nosub : ('a, 'b) Xquery_algebra_ast.aalgop_sub_exprs -> unit
  val access_unitsub : ('a, 'b) Xquery_algebra_ast.aalgop_sub_exprs -> unit
  val access_onesub :
    ('a, 'b) Xquery_algebra_ast.aalgop_sub_exprs ->
    ('a, 'b) Xquery_algebra_ast.aalgop_expr
  val access_twosub :
    ('a, 'b) Xquery_algebra_ast.aalgop_sub_exprs ->
    ('a, 'b) Xquery_algebra_ast.aalgop_expr *
    ('a, 'b) Xquery_algebra_ast.aalgop_expr
  val access_manysub :
    ('a, 'b) Xquery_algebra_ast.aalgop_sub_exprs ->
    ('a, 'b) Xquery_algebra_ast.aalgop_expr array
  val empty_statement : Logical_algebra_types.logical_algop_expr
  val empty_prolog_plan : ('a, 'b, 'c) Xquery_algebra_ast.aalgop_prolog
  val empty_xmodule : ('a, 'b, 'c) Xquery_algebra_ast.aalgop_xmodule
  val merge_alg_prologs :
    ('a, 'b, 'c) Xquery_algebra_ast.aalgop_prolog ->
    ('a, 'b, 'c) Xquery_algebra_ast.aalgop_prolog ->
    ('a, 'b, 'c) Xquery_algebra_ast.aalgop_prolog
  val subexpr_to_list :
    ('a, 'b) Xquery_algebra_ast.aalgop_sub_exprs ->
    ('a, 'b) Xquery_algebra_ast.aalgop_expr list
  val get_group_names :
    Xquery_algebra_ast.group_desc -> Xquery_algebra_ast.seq_group_name list
  val get_induced_group :
    Xquery_algebra_ast.group_desc -> Xquery_common_ast.cvname list
  val get_valid_names :
    Xquery_algebra_ast.group_desc -> Xquery_algebra_ast.seq_group_name list
  val get_aggregate_name :
    Xquery_algebra_ast.group_desc -> Xquery_common_ast.cvname
  val get_aggregate_type :
    Xquery_algebra_ast.group_desc -> Xquery_algebra_ast.asequencetype option
  val get_aggregate_name_and_type :
    Xquery_algebra_ast.group_desc ->
    Xquery_algebra_ast.asequencetype option * Xquery_common_ast.cvname
  val mk_group_desc :
    Xquery_algebra_ast.seq_group_name list ->
    Xquery_algebra_ast.seq_group_name list ->
    Xquery_common_ast.cvname list ->
    Xquery_algebra_ast.asequencetype option * Xquery_common_ast.cvname ->
    Xquery_algebra_ast.group_desc
  val split_main_module_plan :
    ('a, 'b, 'c) Xquery_algebra_ast.aalgop_xmodule ->
    ('a, 'b, 'c) Xquery_algebra_ast.aalgop_prolog *
    ('a, 'b) Xquery_algebra_ast.aalgop_expr list
  val get_all_outputs_from_twig_pattern :
    Xquery_algebra_ast.twig_pattern -> Xquery_common_ast.crname list
  val get_restored_outputs_from_twig_pattern :
    Xquery_algebra_ast.twig_pattern -> Xquery_common_ast.crname list
  val get_node_tests_from_twig_pattern :
    Xquery_algebra_ast.twig_pattern -> Xquery_algebra_ast.anode_test list
  val get_leaf_twig_node :
    Xquery_algebra_ast.twig_pattern -> int -> Xquery_algebra_ast.twig_node
  val get_first_leaf_node_index :
    Xquery_algebra_ast.twig_pattern -> int -> int
  val get_select_path : Xquery_algebra_ast.twig_pattern -> int array
  val is_leaf_node :
    Xquery_algebra_ast.twig_pattern -> Xquery_algebra_ast.twig_node -> bool
  val is_root_node :
    Xquery_algebra_ast.twig_pattern -> Xquery_algebra_ast.twig_node -> bool
  val get_parent_node_index :
    Xquery_algebra_ast.twig_pattern -> Xquery_algebra_ast.twig_node -> int
  val get_child_node_indices :
    Xquery_algebra_ast.twig_pattern ->
    Xquery_algebra_ast.twig_node -> int list
  val get_sub_node_indices :
    Xquery_algebra_ast.twig_pattern ->
    Xquery_algebra_ast.twig_node -> int list
  val append_twigs :
    Xquery_algebra_ast.twig_pattern ->
    Xquery_algebra_ast.twig_pattern ->
    Xquery_common_ast.crname -> Xquery_algebra_ast.twig_pattern
  val merge_twigs :
    Xquery_algebra_ast.twig_pattern ->
    (Xquery_common_ast.crname * Xquery_algebra_ast.twig_pattern) list ->
    Xquery_algebra_ast.twig_pattern
  val replace_field_in_pattern :
    Xquery_algebra_ast.twig_pattern ->
    Xquery_common_ast.crname -> Xquery_common_ast.crname -> bool
  val is_streamable_treepattern : Xquery_algebra_ast.twig_pattern -> bool
  val is_single_step_twig : Xquery_algebra_ast.twig_pattern -> bool
  val find_attach_point :
    Xquery_algebra_ast.twig_pattern -> Xquery_common_ast.crname -> int
  val get_axis_array :
    Xquery_algebra_ast.twig_pattern -> Xquery_common_ast.axis array
  val pname_of_algop :
    ('a, 'b) Xquery_algebra_ast.aalgop_expr ->
    Xquery_physical_algebra_ast.physop_expr_name
  val string_of_algop_expr_name :
    Xquery_algebra_ast.algop_expr_name -> string
  val get_annotation_if_exists :
    string ->
    ('a, 'b) Xquery_algebra_ast.aalgop_expr ->
    Xquery_algebra_ast.free_variable_desc
  val aelement_test_equal :
    Xquery_algebra_ast.aelement_test ->
    Xquery_algebra_ast.aelement_test -> bool
  val aattribute_test_equal :
    Xquery_algebra_ast.aattribute_test ->
    Xquery_algebra_ast.aattribute_test -> bool
  val akind_test_equal :
    Xquery_algebra_ast.akind_test -> Xquery_algebra_ast.akind_test -> bool
  val anode_test_equal :
    Xquery_algebra_ast.anode_test -> Xquery_algebra_ast.anode_test -> bool
  val is_access_tuple : ('a, 'b) Xquery_algebra_ast.aalgop_expr -> bool
  val is_any_join : ('a, 'b) Xquery_algebra_ast.aalgop_expr -> bool
  val is_outer_join : ('a, 'b) Xquery_algebra_ast.aalgop_expr -> bool
  val is_regular_join : ('a, 'b) Xquery_algebra_ast.aalgop_expr -> bool
  val is_a_tuple_input_map : ('a, 'b) Xquery_algebra_ast.aalgop_expr -> bool
  val is_a_sep_sequence : ('a, 'b) Xquery_algebra_ast.aalgop_expr -> bool
  val is_a_map_index : ('a, 'b) Xquery_algebra_ast.aalgop_expr -> bool
  val is_a_dep_map : ('a, 'b) Xquery_algebra_ast.aalgop_expr -> bool
  val is_a_map : ('a, 'b) Xquery_algebra_ast.aalgop_expr -> bool
  val is_an_outer_mapconcat : ('a, 'b) Xquery_algebra_ast.aalgop_expr -> bool
  val is_a_non_concat_map : ('a, 'b) Xquery_algebra_ast.aalgop_expr -> bool
  val is_a_map_concat : ('a, 'b) Xquery_algebra_ast.aalgop_expr -> bool
  val is_any_map_concat : ('a, 'b) Xquery_algebra_ast.aalgop_expr -> bool
  val is_a_map_from_item : ('a, 'b) Xquery_algebra_ast.aalgop_expr -> bool
  val is_a_map_to_item : ('a, 'b) Xquery_algebra_ast.aalgop_expr -> bool
  val is_select : ('a, 'b) Xquery_algebra_ast.aalgop_expr -> bool
  val is_project : ('a, 'b) Xquery_algebra_ast.aalgop_expr -> bool
  val is_product : ('a, 'b) Xquery_algebra_ast.aalgop_expr -> bool
  val is_empty_tuple : ('a, 'b) Xquery_algebra_ast.aalgop_expr -> bool
  val is_some : ('a, 'b) Xquery_algebra_ast.aalgop_expr -> bool
  val is_null_map : ('a, 'b) Xquery_algebra_ast.aalgop_expr -> bool
  val is_boolean : ('a, 'b) Xquery_algebra_ast.aalgop_expr -> bool
  val is_distinct_value : ('a, 'b) Xquery_algebra_ast.aalgop_expr -> bool
  val is_fn_data : ('a, 'b) Xquery_algebra_ast.aalgop_expr -> bool
  val is_equal : ('a, 'b) Xquery_algebra_ast.aalgop_expr -> bool
  val is_gt : ('a, 'b) Xquery_algebra_ast.aalgop_expr -> bool
  val is_ge : ('a, 'b) Xquery_algebra_ast.aalgop_expr -> bool
  val is_lt : ('a, 'b) Xquery_algebra_ast.aalgop_expr -> bool
  val is_le : ('a, 'b) Xquery_algebra_ast.aalgop_expr -> bool
  val is_fs_untyped_to_any : ('a, 'b) Xquery_algebra_ast.aalgop_expr -> bool
  val is_input_tuple : ('a, 'b) Xquery_algebra_ast.aalgop_expr -> bool
  val is_group : ('a, 'b) Xquery_algebra_ast.aalgop_expr -> bool
  val is_tupletreepattern : ('a, 'b) Xquery_algebra_ast.aalgop_expr -> bool
  val get_map_from_item_name :
    ('a, 'b) Xquery_algebra_ast.aalgop_expr -> Xquery_common_ast.crname
  val get_outer_map_name :
    ('a, 'b) Xquery_algebra_ast.aalgop_expr -> Xquery_common_ast.crname
  val get_sep_sequence_name :
    ('a, 'b) Xquery_algebra_ast.aalgop_expr -> Xquery_common_ast.crname
  val get_outer_join_name :
    ('a, 'b) Xquery_algebra_ast.aalgop_expr -> Xquery_common_ast.crname
  val get_null_map_name :
    ('a, 'b) Xquery_algebra_ast.aalgop_expr -> Xquery_common_ast.crname
  val get_function_name :
    ('a, 'b) Xquery_algebra_ast.aalgop_expr ->
    Xquery_common_ast.crname option
  val calls_builtin_functions :
    ('a, 'b) Xquery_algebra_ast.aalgop_expr -> Xquery_common_ast.crname list
  val calls_user_defined_functions :
    ('a, 'b) Xquery_algebra_ast.aalgop_expr -> Xquery_common_ast.crname list
end