sig
  val compare_cxtypes :
    Xquery_type_core_ast.cxschema ->
    Xquery_type_core_ast.cxtype -> Xquery_type_core_ast.cxtype -> int
  val equal_cxtypes :
    Xquery_type_core_ast.cxschema ->
    Xquery_type_core_ast.cxtype -> Xquery_type_core_ast.cxtype -> bool
  val is_syntactic_subtype_of :
    Xquery_type_core_ast.cxschema ->
    Xquery_type_core_ast.cxtype -> Xquery_type_core_ast.cxtype -> bool
  val derives_from :
    Xquery_type_core_ast.cxschema ->
    Namespace_symbols.rtype_symbol -> Namespace_symbols.rtype_symbol -> bool
  val directly_derives_from :
    Xquery_type_core_ast.cxschema ->
    Namespace_symbols.rtype_symbol -> Namespace_symbols.rtype_symbol
  val lookup_element :
    Xquery_type_core_ast.cxschema ->
    Namespace_symbols.relem_symbol ->
    Namespace_symbols.relem_symbol * Xquery_type_core_ast.csubstitutes_for *
    Xquery_common_ast.nillable * Namespace_symbols.rtype_symbol
  val lookup_attribute :
    Xquery_type_core_ast.cxschema ->
    Namespace_symbols.rattr_symbol ->
    Namespace_symbols.rattr_symbol * Namespace_symbols.rtype_symbol
  val lookup_type_decl :
    Xquery_type_core_ast.cxschema ->
    Namespace_symbols.rtype_symbol -> Xquery_type_core_ast.ctype_declaration
  val check_declared_type :
    Xquery_type_core_ast.cxschema -> Namespace_symbols.rtype_symbol -> unit
  val lookup_element_with_substitution_group :
    Xquery_type_core_ast.cxschema ->
    Namespace_symbols.relem_symbol ->
    Namespace_symbols.relem_symbol ->
    (Xquery_common_ast.nillable * Namespace_symbols.rtype_symbol) option
  val substitutes_for :
    Xquery_type_core_ast.cxschema ->
    Namespace_symbols.relem_symbol -> Namespace_symbols.relem_symbol -> bool
  val lookup_element_type :
    Xquery_type_core_ast.cxschema ->
    Xquery_type_core_ast.cxtype ->
    Namespace_symbols.relem_symbol * Xquery_common_ast.nillable *
    Namespace_symbols.rtype_symbol
  val lookup_attribute_type :
    Xquery_type_core_ast.cxschema ->
    Xquery_type_core_ast.cxtype ->
    Namespace_symbols.rattr_symbol * Namespace_symbols.rtype_symbol
  val build_atomic_simple_type :
    Xquery_type_core_ast.cxschema ->
    Namespace_symbols.rtype_symbol -> Namespace_symbols.rtype_symbol
  val build_union_simple_type :
    Xquery_type_core_ast.cxschema ->
    Namespace_symbols.rtype_symbol list ->
    Namespace_symbols.rtype_symbol list
  val build_list_simple_type :
    Xquery_type_core_ast.cxschema ->
    Namespace_symbols.rtype_symbol -> Namespace_symbols.rtype_symbol list
  val extended_by_is :
    Xquery_type_core_ast.cxschema ->
    Xquery_type_core_ast.cxtype ->
    Xquery_type_core_ast.cxtype -> Xquery_type_core_ast.cxtype
  val adjusts_to :
    Xquery_type_core_ast.cxschema ->
    Xquery_common_ast.mixed * Xquery_type_core_ast.cxtype ->
    Xquery_type_core_ast.cxtype
  val adjusts_attributes_to :
    Xquery_type_core_ast.cxschema ->
    Xquery_type_core_ast.cxtype option -> Xquery_type_core_ast.cxtype
  val expands_to :
    Xquery_type_core_ast.cxschema ->
    Xquery_common_ast.nillable * Namespace_symbols.rtype_symbol ->
    Xquery_type_core_ast.cxtype * Schema_util.content_kind *
    Xquery_common_ast.mixed
  val expands_attribute_to :
    Xquery_type_core_ast.cxschema ->
    Namespace_symbols.rtype_symbol -> Xquery_type_core_ast.cxtype
  val type_contains_empty : Xquery_type_core_ast.cxtype -> bool
  val element_transition :
    Xquery_type_core_ast.cxschema ->
    Xquery_type_core_ast.cxtype ->
    Namespace_symbols.relem_symbol ->
    bool ->
    Namespace_symbols.rtype_symbol option ->
    ((bool * Namespace_symbols.rtype_symbol) * Xquery_type_core_ast.cxtype)
    list
  val attribute_transition :
    Xquery_type_core_ast.cxschema ->
    Xquery_type_core_ast.cxtype ->
    Namespace_symbols.rattr_symbol ->
    (Namespace_symbols.rtype_symbol * Xquery_type_core_ast.cxtype) list
  val element_transition_final :
    Xquery_type_core_ast.cxschema ->
    Xquery_type_core_ast.cxtype ->
    Namespace_symbols.relem_symbol ->
    bool ->
    Namespace_symbols.rtype_symbol option ->
    Xquery_type_core_ast.cxtype * Namespace_symbols.rtype_symbol *
    Xquery_common_ast.mixed * Xquery_type_core_ast.cxtype *
    Schema_util.content_kind * bool
  val attribute_transition_final :
    Xquery_type_core_ast.cxschema ->
    Xquery_type_core_ast.cxtype ->
    Namespace_symbols.rattr_symbol ->
    Xquery_type_core_ast.cxtype * Namespace_symbols.rtype_symbol *
    Schema_util.simple_kind
  val atomic_type_of_simple_kind :
    Xquery_type_core_ast.cxschema ->
    Schema_util.simple_kind -> Xquery_type_core_ast.cxtype
  val closest_builtin_integer_type :
    Xquery_type_core_ast.cxschema ->
    Namespace_symbols.rtype_symbol -> Namespace_symbols.rtype_symbol
  val atomic_type_of_cxtype :
    Xquery_type_core_ast.cxschema ->
    Xquery_type_core_ast.cxtype -> Datatypes.atomic_type
  val atomic_type_of_typename :
    Xquery_type_core_ast.cxschema ->
    Namespace_symbols.rtype_symbol -> Datatypes.atomic_type
  val debug_print_types :
    string ->
    Xquery_type_core_ast.cxtype -> Xquery_type_core_ast.cxtype -> unit
end