Module Optimization_walker

module Optimization_walker: sig .. end

type optimization_rewrite_rule = Logical_algebra_types.logical_compile_context ->
Logical_algebra_types.logical_algop_expr ->
Logical_algebra_types.logical_algop_expr * bool
type optimization_removal_rewrite_rule = Logical_algebra_types.logical_compile_context ->
Logical_algebra_types.logical_algop_expr ->
Logical_algebra_types.logical_algop_expr ->
Logical_algebra_types.logical_algop_expr * bool
type sub_expr_kind = 
| Dependent
| Independent
type ('a, 'b) child_desc = ('a, 'b) Xquery_algebra_ast.aalgop_expr * sub_expr_kind *
int
val get_sub_expr : ('a, 'b) Xquery_algebra_ast.aalgop_expr ->
sub_expr_kind ->
('a, 'b) Xquery_algebra_ast.aalgop_sub_exprs
val make_child_desc : ('a, 'b) Xquery_algebra_ast.aalgop_expr ->
sub_expr_kind ->
int -> ('a, 'b) child_desc
val update_parent : ('a, 'b) child_desc option ->
('a, 'b) Xquery_algebra_ast.aalgop_expr -> unit
val get_op_from_sub_expr : ('a, 'b) Xquery_algebra_ast.aalgop_expr ->
sub_expr_kind ->
int -> ('a, 'b) Xquery_algebra_ast.aalgop_expr
val descendent_walker : ('a -> bool) -> ('a -> 'a) -> 'a option -> 'a -> 'a * 'a option * bool
val rewrite_apply : ((Logical_algebra_types.logical_algop_expr *
sub_expr_kind * int)
option ->
Logical_algebra_types.logical_algop_expr ->
Logical_algebra_types.logical_algop_expr) ->
(Logical_algebra_types.logical_algop_expr *
sub_expr_kind * int)
option ->
Logical_algebra_types.logical_algop_expr ->
Logical_algebra_types.logical_algop_expr
val fold_over_algop : (('a, 'b) Xquery_algebra_ast.aalgop_expr -> 'c) ->
('d -> 'c -> 'd) -> 'd -> ('a, 'b) Xquery_algebra_ast.aalgop_expr -> 'd
val generic_wrapper : (Logical_algebra_types.logical_compile_context ->
Logical_algebra_types.logical_algop_expr ->
Logical_algebra_types.logical_algop_expr * bool) ->
bool Pervasives.ref ->
Logical_algebra_types.logical_compile_context ->
Logical_algebra_types.logical_algop_expr ->
(Logical_algebra_types.logical_algop_expr *
sub_expr_kind * int)
option ->
Logical_algebra_types.logical_algop_expr ->
Logical_algebra_types.logical_algop_expr
val removal_wrapper : (Logical_algebra_types.logical_compile_context ->
Logical_algebra_types.logical_algop_expr ->
Logical_algebra_types.logical_algop_expr ->
Logical_algebra_types.logical_algop_expr * bool) ->
bool Pervasives.ref ->
Logical_algebra_types.logical_compile_context ->
Logical_algebra_types.logical_algop_expr ->
(Logical_algebra_types.logical_algop_expr *
sub_expr_kind * int)
option ->
Logical_algebra_types.logical_algop_expr ->
Logical_algebra_types.logical_algop_expr