sig
type navigation_param = Optimization_walker.sub_expr_kind * int
type algop_test_function = Algebra_type.algop_expr -> bool
type 'a state_update_function = Algebra_type.algop_expr -> 'a -> 'a
type 'a test_and_apply = Algebra_type.algop_expr -> 'a -> bool * 'a
type 'a pattern_matcher_pattern_element =
Code_util_pattern_matcher.navigation_param *
'a Code_util_pattern_matcher.test_and_apply
type 'a pattern_matcher_pattern =
'a Code_util_pattern_matcher.pattern_matcher_pattern_element list
val mk_dep_child_param : int -> Code_util_pattern_matcher.navigation_param
val mk_indep_child_param :
int -> Code_util_pattern_matcher.navigation_param
val dep_zero : Code_util_pattern_matcher.navigation_param
val indep_zero : Code_util_pattern_matcher.navigation_param
val extract_term :
Code_util_pattern_matcher.algop_test_function ->
'a Code_util_pattern_matcher.state_update_function ->
Algebra_type.algop_expr -> 'a -> bool * 'a
val no_extraction :
Code_util_pattern_matcher.algop_test_function ->
Algebra_type.algop_expr -> 'a -> bool * 'a
val walk_patterns :
'a ->
'a Code_util_pattern_matcher.pattern_matcher_pattern list ->
Algebra_type.algop_expr -> bool * 'a
end