sig
  type implemid = int
  type docid = int
  type int64_pair = { gId : int64; mId : int64; }
  type preorder = int
  type postorder = int
  type large_preorder = Nodeid.int64_pair
  type prepostint_docorder =
      Nodeid.docid * Nodeid.preorder * Nodeid.postorder
  type preint_docorder = Nodeid.docid * Nodeid.preorder
  type postint_docorder = Nodeid.docid * Nodeid.postorder
  type pre_intpair_docorder = Nodeid.docid * Nodeid.large_preorder
  type partial_docorder =
      PrePostInt of Nodeid.prepostint_docorder
    | PreInt of Nodeid.preint_docorder
    | PreIntPair of Nodeid.pre_intpair_docorder
  type docorder = Nodeid.implemid * Nodeid.partial_docorder
  type partial_nodeid =
      IntId of Nodeid.docid * int
    | IntPairId of Nodeid.docid * Nodeid.int64_pair
  type nodeid = Nodeid.implemid * Nodeid.partial_nodeid
  val get_implemid : Nodeid.docorder -> Nodeid.implemid
  val get_docid : Nodeid.docorder -> Nodeid.docid
  val get_partialid : Nodeid.docorder -> Nodeid.partial_docorder
  val nodeid_is : Nodeid.nodeid -> Nodeid.nodeid -> bool
  val docorder_precedes : Nodeid.docorder -> Nodeid.docorder -> bool
  val docorder_follows : Nodeid.docorder -> Nodeid.docorder -> bool
  val docorder_compare : Nodeid.docorder -> Nodeid.docorder -> int
  val is_descendant_xpath : Nodeid.docorder -> Nodeid.docorder -> bool
  val is_ancestor_xpath : Nodeid.docorder -> Nodeid.docorder -> bool
  val is_preceding_xpath : Nodeid.docorder -> Nodeid.docorder -> bool
  val is_following_xpath : Nodeid.docorder -> Nodeid.docorder -> bool
  val string_of_docorder : Nodeid.docorder -> string
  val new_implemid : string -> Nodeid.implemid
  type docid_gen
  val build_docid_gen : unit -> Nodeid.docid_gen
  val new_docid : Nodeid.docid_gen -> Nodeid.docid
  val build_docorder_from_pre_post :
    Nodeid.implemid ->
    Nodeid.docid -> Nodeid.preorder * Nodeid.postorder -> Nodeid.docorder
  val merge_docorder_from_pre_post :
    Nodeid.preint_docorder ->
    Nodeid.postint_docorder -> Nodeid.prepostint_docorder
  val min_preorder : Nodeid.preorder
  val min_postorder : Nodeid.postorder
  val max_preorder : Nodeid.preorder
  val max_postorder : Nodeid.postorder
  val large_preorder_to_big_int : Nodeid.large_preorder -> Big_int.big_int
  val big_int_to_large_preorder : Big_int.big_int -> Nodeid.large_preorder
  val big_int_pair_of_docorder :
    Nodeid.docorder -> Big_int.big_int * Big_int.big_int
end