sig
  val main_module_uri : string
  type logical_compiled_statement = Logical_algebra_types.logical_algop_expr
  type compiled_statement = Algebra_type.algop_expr
  type compiled_prolog = {
    compiled_prolog_uri : string;
    mutable compiled_prolog_plan : Algebra_type.algop_prolog;
    mutable compiled_prolog_code_selection_context :
      Code_selection_context.code_selection_context;
  }
  type compiled_library_module = Compiled_program_units.compiled_prolog
  type compiled_main_module =
      Compiled_program_units.compiled_prolog *
      Compiled_program_units.compiled_statement list
  type compiled_program = {
    compiled_program_proc_context : Processing_context.processing_context;
    compiled_program_stdlib_norm_context : Norm_context.norm_context;
    mutable compiled_program_algebra_context :
      Execution_context.algebra_context;
    compiled_program_interfaces : Norm_context.norm_interface_table;
    mutable compiled_program_library_list : string list;
    compiled_program_library_module_table :
      (string, Compiled_program_units.compiled_library_module) Hashtbl.t;
    mutable compiled_program_main_module :
      Compiled_program_units.compiled_main_module option;
  }
  type prepared_program = Compiled_program_units.compiled_program
  val main_module_of_compiled_program :
    Compiled_program_units.compiled_program ->
    Compiled_program_units.compiled_main_module
  val processing_context_of_compiled_program :
    Compiled_program_units.compiled_program ->
    Processing_context.processing_context
  val algebra_context_of_compiled_program :
    Compiled_program_units.compiled_program ->
    Execution_context.algebra_context
  val module_of_compiled_program :
    Compiled_program_units.compiled_program ->
    string -> Compiled_program_units.compiled_library_module
  val statements_of_compiled_program :
    Compiled_program_units.compiled_program ->
    Compiled_program_units.compiled_statement list
  val main_module_defined_in_compiled_program :
    Compiled_program_units.compiled_program -> bool
  val standard_library_of_compiled_program :
    Compiled_program_units.compiled_program ->
    Compiled_program_units.compiled_library_module
  val replace_algebra_context_of_compiled_program :
    Compiled_program_units.compiled_program ->
    Execution_context.algebra_context -> unit
  val nsenv_of_module :
    Compiled_program_units.compiled_prolog -> Namespace_context.nsenv
  val nsenv_of_main_module :
    Compiled_program_units.compiled_program -> Namespace_context.nsenv
  val norm_context_of_module :
    Compiled_program_units.compiled_prolog -> Norm_context.norm_context
  val norm_context_of_main_module :
    Compiled_program_units.compiled_program -> Norm_context.norm_context
  val norm_context_of_standard_library :
    Compiled_program_units.compiled_program -> Norm_context.norm_context
  val norm_context_of_prolog :
    Compiled_program_units.compiled_prolog -> Norm_context.norm_context
  val static_context_of_module :
    Compiled_program_units.compiled_prolog -> Typing_context.static_context
  val static_context_of_main_module :
    Compiled_program_units.compiled_program -> Typing_context.static_context
  val compile_context_of_module :
    Compiled_program_units.compiled_prolog ->
    Logical_algebra_types.logical_compile_context
  val compile_context_of_main_module :
    Compiled_program_units.compiled_program ->
    Logical_algebra_types.logical_compile_context
  val code_selection_context_of_module :
    Compiled_program_units.compiled_prolog ->
    Code_selection_context.code_selection_context
  val code_selection_context_of_main_module :
    Compiled_program_units.compiled_program ->
    Code_selection_context.code_selection_context
  val replace_code_selection_context_of_module :
    Compiled_program_units.compiled_prolog ->
    Code_selection_context.code_selection_context -> unit
  val update_code_selection_context_in_compiled_prolog :
    Compiled_program_units.compiled_prolog ->
    Code_selection_context.code_selection_context -> unit
  val update_physical_plan_in_compiled_prolog :
    Compiled_program_units.compiled_prolog ->
    (Algebra_type.alg_eval_code_dep, Algebra_type.physical_annotation,
     Algebra_type.alg_eval_code_dep_prolog)
    Xquery_algebra_ast.aalgop_prolog -> unit
  val default_compiled_module :
    Compiled_program_units.compiled_program ->
    string -> Compiled_program_units.compiled_prolog
  val default_compiled_program :
    Processing_context.processing_context ->
    Norm_context.norm_context -> Compiled_program_units.compiled_program
  val copy_compiled_module :
    Compiled_program_units.compiled_prolog ->
    Compiled_program_units.compiled_prolog
  val copy_compiled_program :
    Compiled_program_units.compiled_program ->
    Compiled_program_units.compiled_program
end