module Optimization_rules_sbdo_automaton: sig .. end
type state_number = int 
type state = state_number * (int * int) 
type action_needed = 
| | 
Nothing | 
| | 
Docorder | 
| | 
Distinct | 
| | 
DistinctDocorder | 
type axis_number = int 
val axis_child : axis_number
val axis_descendant : axis_number
val axis_descendant_or_self : axis_number
val axis_following : axis_number
val axis_following_sibling : axis_number
val axis_parent : axis_number
val axis_ancestor : axis_number
val axis_ancestor_or_self : axis_number
val axis_preceding : axis_number
val axis_preceding_sibling : axis_number
val axis_self : axis_number
val axis_adapter : Xquery_common_ast.axis -> axis_number
val do_transition : Processing_context.sbdo_kind ->
       state ->
       axis_number ->
       bool ->
       state *
       action_needed
val init_state : Processing_context.sbdo_kind -> state
val sink_state : Processing_context.sbdo_kind -> state
val undefined_state : Processing_context.sbdo_kind -> state
val needs_sorting : action_needed -> bool
val needs_dupelim : action_needed -> bool
val print_action : action_needed -> string
val print_state : state -> string