Module Yalo_plugin_CAMELOT.Astutils

val e_eq : exp -> exp -> bool
val e_neq : exp -> exp -> bool
val is_id : Yalo_plugin_ocaml.V1.OCAML_AST.expression -> string -> bool
val (=~) : exp -> string -> bool
val is_construct : exp -> string -> bool
val (=|) : exp -> string -> bool
val is_list_lit : exp -> bool
val is_bool_lit : exp -> bool
val is_exp_const : exp -> bool
val is_exp_id : exp -> bool
val is_singleton_list : exp -> bool
val is_option_lit : exp -> bool
val is_some_lit : exp -> bool
val is_pat_constr : Yalo_plugin_ocaml.V1.OCAML_AST.pattern -> string -> bool
val is_pat_tuple : Yalo_plugin_ocaml.V1.OCAML_AST.pattern -> bool
val is_pat_record : Yalo_plugin_ocaml.V1.OCAML_AST.pattern -> bool
val is_case_constr : Yalo_plugin_ocaml.V1.OCAML_AST.pattern -> string -> bool
val is_case_const : Yalo_plugin_ocaml.V1.OCAML_AST.pattern -> bool
val binding_of_lcase : Yalo_plugin_ocaml.V1.OCAML_AST.case -> string
val uses_func_recursively_list : Yalo_plugin_ocaml.V1.OCAML_AST.case -> func_name:string -> string -> bool
val uses_func_recursively_list_any : Yalo_plugin_ocaml.V1.OCAML_AST.case -> func_name:string -> string -> bool

Has to be recursive, since functions of multiple arguments are curried That's why we interleave skipping sequencing and lets with calls to body_of_fun, til we reach a `fixpoint`.

val uses_func_recursively_seq : Yalo_plugin_ocaml.V1.OCAML_AST.case -> func_name:string -> string -> bool

Smash a tree of || and && exps into a list of the expressions contained within.

Returns true if any two expressions in the provided list are equal.