module Code_util_pattern_matcher: sig .. end
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 = navigation_param *
       'a test_and_apply 
type 'a pattern_matcher_pattern = 'a pattern_matcher_pattern_element list 
val mk_dep_child_param : int -> navigation_param
val mk_indep_child_param : int -> navigation_param
val dep_zero : navigation_param
val indep_zero : navigation_param
 : algop_test_function ->
       'a state_update_function ->
       Algebra_type.algop_expr -> 'a -> bool * 'a
 : algop_test_function ->
       Algebra_type.algop_expr -> 'a -> bool * 'a
val walk_patterns : 'a ->
       'a pattern_matcher_pattern list ->
       Algebra_type.algop_expr -> bool * 'a