sig
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 *
Optimization_walker.sub_expr_kind * int
val get_sub_expr :
('a, 'b) Xquery_algebra_ast.aalgop_expr ->
Optimization_walker.sub_expr_kind ->
('a, 'b) Xquery_algebra_ast.aalgop_sub_exprs
val make_child_desc :
('a, 'b) Xquery_algebra_ast.aalgop_expr ->
Optimization_walker.sub_expr_kind ->
int -> ('a, 'b) Optimization_walker.child_desc
val update_parent :
('a, 'b) Optimization_walker.child_desc option ->
('a, 'b) Xquery_algebra_ast.aalgop_expr -> unit
val get_op_from_sub_expr :
('a, 'b) Xquery_algebra_ast.aalgop_expr ->
Optimization_walker.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 *
Optimization_walker.sub_expr_kind * int)
option ->
Logical_algebra_types.logical_algop_expr ->
Logical_algebra_types.logical_algop_expr) ->
(Logical_algebra_types.logical_algop_expr *
Optimization_walker.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 *
Optimization_walker.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 *
Optimization_walker.sub_expr_kind * int)
option ->
Logical_algebra_types.logical_algop_expr ->
Logical_algebra_types.logical_algop_expr
end