sig
  val build_core_if :
    Norm_context.norm_context ->
    Xquery_core_ast.acexpr ->
    Xquery_core_ast.acexpr ->
    Xquery_core_ast.acexpr ->
    Xquery_ast.expr_handle -> Finfo.finfo -> Xquery_core_ast.acexpr
  val build_core_while :
    Norm_context.norm_context ->
    Xquery_core_ast.acexpr ->
    Xquery_core_ast.acexpr ->
    Xquery_ast.expr_handle -> Finfo.finfo -> Xquery_core_ast.acexpr
  val build_core_some :
    Norm_context.norm_context ->
    (Xquery_core_ast.csequencetype * Xquery_type_core_ast.cxtype) option ->
    Xquery_common_ast.cvname ->
    Xquery_core_ast.acexpr ->
    Xquery_core_ast.acexpr ->
    Xquery_ast.expr_handle -> Finfo.finfo -> Xquery_core_ast.acexpr
  val build_core_every :
    Norm_context.norm_context ->
    (Xquery_core_ast.csequencetype * Xquery_type_core_ast.cxtype) option ->
    Xquery_common_ast.cvname ->
    Xquery_core_ast.acexpr ->
    Xquery_core_ast.acexpr ->
    Xquery_ast.expr_handle -> Finfo.finfo -> Xquery_core_ast.acexpr
  val build_core_attribute_constructor :
    Norm_context.norm_context ->
    Xquery_common_ast.caname ->
    Xquery_core_ast.acexpr list ->
    Xquery_ast.expr_handle -> Finfo.finfo -> Xquery_core_ast.acexpr
  val build_core_element_constructor :
    Norm_context.norm_context ->
    Xquery_common_ast.cename ->
    Namespace_context.nsenv ->
    Xquery_core_ast.acexpr list ->
    Xquery_ast.expr_handle -> Finfo.finfo -> Xquery_core_ast.acexpr
  val build_core_call :
    Norm_context.norm_context ->
    Xquery_common_ast.cfname ->
    Xquery_core_ast.acexpr list ->
    Xquery_ast.expr_handle -> Finfo.finfo -> Xquery_core_ast.acexpr
  val build_core_overloaded_call :
    Norm_context.norm_context ->
    Xquery_common_ast.cfname ->
    Xquery_core_ast.acexpr list ->
    Xquery_ast.expr_handle -> Finfo.finfo -> Xquery_core_ast.acexpr
  val build_core_cast :
    Norm_context.norm_context ->
    Xquery_core_ast.acexpr ->
    Xquery_core_ast.csequencetype * Xquery_type_core_ast.cxtype ->
    Xquery_ast.expr_handle -> Finfo.finfo -> Xquery_core_ast.acexpr
  val build_core_castable :
    Norm_context.norm_context ->
    Xquery_core_ast.acexpr ->
    Xquery_core_ast.csequencetype * Xquery_type_core_ast.cxtype ->
    Xquery_ast.expr_handle -> Finfo.finfo -> Xquery_core_ast.acexpr
  val build_core_true :
    Norm_context.norm_context ->
    Xquery_ast.expr_handle -> Finfo.finfo -> Xquery_core_ast.acexpr
  val build_core_false :
    Norm_context.norm_context ->
    Xquery_ast.expr_handle -> Finfo.finfo -> Xquery_core_ast.acexpr
  type predicate_kind = First | Last | Numeric | Other
  val get_predicate_kind : Xquery_core_ast.acexpr -> Norm_util.predicate_kind
  val item_seq_to_untyped :
    Norm_context.norm_context ->
    Xquery_core_ast.acexpr ->
    Xquery_ast.expr_handle -> Finfo.finfo -> Xquery_core_ast.acexpr
  val item_seq_to_untyped_optional :
    Norm_context.norm_context ->
    Xquery_core_ast.acexpr ->
    Xquery_ast.expr_handle -> Finfo.finfo -> Xquery_core_ast.acexpr
  val item_seq_to_node_seq :
    Norm_context.norm_context ->
    Xquery_core_ast.acexpr ->
    Xquery_ast.expr_handle -> Finfo.finfo -> Xquery_core_ast.acexpr
  val normalize_atomize :
    Norm_context.norm_context ->
    Xquery_core_ast.acexpr ->
    Xquery_ast.expr_handle -> Finfo.finfo -> Xquery_core_ast.acexpr
  val normalize_to_cast :
    Norm_context.norm_context ->
    Xquery_core_ast.acexpr ->
    Xquery_core_ast.csequencetype * Xquery_type_core_ast.cxtype ->
    Xquery_ast.expr_handle -> Finfo.finfo -> Xquery_core_ast.acexpr
  val normalize_to_castable :
    Norm_context.norm_context ->
    Xquery_core_ast.acexpr ->
    Xquery_core_ast.csequencetype * Xquery_type_core_ast.cxtype ->
    Xquery_ast.expr_handle -> Finfo.finfo -> Xquery_core_ast.acexpr
  val normalize_effective_boolean_value :
    Norm_context.norm_context ->
    Xquery_core_ast.acexpr ->
    Xquery_ast.expr_handle -> Finfo.finfo -> Xquery_core_ast.acexpr
  val normalize_predicate_truth_value :
    Norm_context.norm_context ->
    Xquery_core_ast.acexpr ->
    Xquery_core_ast.acexpr ->
    Xquery_ast.expr_handle -> Finfo.finfo -> Xquery_core_ast.acexpr
  val normalize_to_if :
    Norm_context.norm_context ->
    Xquery_core_ast.acexpr ->
    Xquery_core_ast.acexpr ->
    Xquery_core_ast.acexpr ->
    Xquery_ast.expr_handle -> Finfo.finfo -> Xquery_core_ast.acexpr
  val normalize_to_while :
    Norm_context.norm_context ->
    Xquery_core_ast.acexpr ->
    Xquery_core_ast.acexpr ->
    Xquery_ast.expr_handle -> Finfo.finfo -> Xquery_core_ast.acexpr
  val normalize_to_some :
    Norm_context.norm_context ->
    (Xquery_core_ast.csequencetype * Xquery_type_core_ast.cxtype) option ->
    Xquery_common_ast.cvname ->
    Xquery_core_ast.acexpr ->
    Xquery_core_ast.acexpr ->
    Xquery_ast.expr_handle -> Finfo.finfo -> Xquery_core_ast.acexpr
  val normalize_to_every :
    Norm_context.norm_context ->
    (Xquery_core_ast.csequencetype * Xquery_type_core_ast.cxtype) option ->
    Xquery_common_ast.cvname ->
    Xquery_core_ast.acexpr ->
    Xquery_core_ast.acexpr ->
    Xquery_ast.expr_handle -> Finfo.finfo -> Xquery_core_ast.acexpr
  val normalize_unary_operator :
    Norm_context.norm_context ->
    Xquery_common_ast.unaryop ->
    Xquery_core_ast.acexpr ->
    Xquery_ast.expr_handle -> Finfo.finfo -> Xquery_core_ast.acexpr
  val normalize_binary_operator :
    Norm_context.norm_context ->
    Xquery_common_ast.binop ->
    Xquery_core_ast.acexpr ->
    Xquery_core_ast.acexpr ->
    Xquery_ast.expr_handle -> Finfo.finfo -> Xquery_core_ast.acexpr
  val convert_function_input_output :
    Norm_context.norm_context ->
    (Xquery_common_ast.cvname * Xquery_core_ast.acexpr) *
    (Xquery_core_ast.acexpr *
     (Xquery_core_ast.csequencetype * Xquery_type_core_ast.cxtype)) ->
    Xquery_core_ast.acexpr -> Xquery_core_ast.acexpr
  val normalize_function_app :
    Norm_context.norm_context ->
    Xquery_common_ast.cfname ->
    Xquery_core_ast.acexpr list ->
    Xquery_ast.expr_handle -> Finfo.finfo -> Xquery_core_ast.acexpr
  val normalize_atomic_constructor :
    Norm_context.norm_context ->
    Xquery_common_ast.cfname ->
    Xquery_core_ast.acexpr list ->
    Xquery_ast.expr_handle -> Finfo.finfo -> Xquery_core_ast.acexpr
  val normalize_ident_function_app :
    Norm_context.norm_context ->
    Xquery_common_ast.cfname ->
    Xquery_core_ast.acexpr list ->
    Xquery_ast.expr_handle -> Finfo.finfo -> Xquery_core_ast.acexpr
  val normalize_kind_test :
    Norm_context.norm_context ->
    Xquery_ast.kind_test ->
    Xquery_core_ast.ckind_test * Xquery_type_core_ast.cxtype
  val normalize_sequencetype :
    Norm_context.norm_context ->
    Xquery_ast.sequencetype ->
    Xquery_core_ast.csequencetype * Xquery_type_core_ast.cxtype
  val normalize_optional_sequencetype :
    Norm_context.norm_context ->
    Xquery_ast.sequencetype option ->
    (Xquery_core_ast.csequencetype * Xquery_type_core_ast.cxtype) option
  val normalize_optional_sequencetype_strong :
    Norm_context.norm_context ->
    Xquery_ast.sequencetype option ->
    Xquery_core_ast.csequencetype * Xquery_type_core_ast.cxtype
  val incorrect_arg_count : Namespace_names.rqname -> int -> int -> exn
  val expr_may_generate_updates : Xquery_core_ast.acexpr -> bool
  val resolve_variable_qname_register :
    Norm_context.norm_context ->
    Xquery_common_ast.vname ->
    Norm_context.norm_context * Xquery_common_ast.cvname
  val resolve_global_qname_register :
    Norm_context.norm_context ->
    Xquery_common_ast.vname ->
    Xquery_core_ast.acvar_body ->
    Norm_context.norm_context * Xquery_common_ast.cvname
  val resolve_variable_qname_check :
    Norm_context.norm_context ->
    Finfo.finfo ->
    Xquery_common_ast.vname ->
    Xquery_common_ast.cvname * Xquery_core_ast.acvar_body option
  val check_server_implementation :
    Norm_context.norm_context ->
    Finfo.finfo ->
    Namespace_names.ncname -> Xquery_common_ast.cvname * string
  val check_interface :
    Norm_context.norm_context ->
    Finfo.finfo -> Namespace_names.ncname -> string
  val map_fun_kind :
    Xquery_ast.function_body -> Xquery_core_ast.acfunction_body_kind
  val lookup_and_map_interface :
    Norm_context.norm_context ->
    Namespace_names.prefix ->
    Namespace_names.prefix * string ->
    Norm_context.norm_context * Xquery_core_ast.acprolog
  val extend_server_environment :
    bool ->
    Norm_context.norm_context ->
    Namespace_names.ncname ->
    Namespace_names.ncname ->
    Xquery_ast.expr * Xquery_core_ast.acexpr ->
    Norm_context.norm_context * string * Xquery_core_ast.acinterface *
    Xquery_core_ast.acexpr
end