sig
type match_props = {
is_exhaustive : bool;
missing_pats : Typed_ast.pat list list;
redundant_pats : (int * Typed_ast.pat) list;
overlapping_pats : ((int * Typed_ast.pat) * (int * Typed_ast.pat)) list;
}
val check_match_exp :
Typed_ast.env -> Typed_ast.exp -> Patterns.match_props option
val check_pat_list :
Typed_ast.env -> Typed_ast.pat list -> Patterns.match_props option
val check_match_exp_warn : Typed_ast.env -> Typed_ast.exp -> unit
val check_match_def :
Typed_ast.env -> Typed_ast.def -> (Name.t * Patterns.match_props) list
val check_match_def_warn : Typed_ast.env -> Typed_ast.def -> unit
type match_check_arg
val cleanup_match_exp :
Typed_ast.env -> bool -> Typed_ast.exp -> Typed_ast.exp option
val compile_match_exp :
Target.target ->
Patterns.match_check_arg ->
Typed_ast.env -> Typed_ast.exp -> Typed_ast.exp option
val compile_exp :
Target.target ->
Patterns.match_check_arg ->
Typed_ast.env ->
Macro_expander.macro_context -> Typed_ast.exp -> Typed_ast.exp option
val compile_def :
Target.target ->
Patterns.match_check_arg -> Typed_ast.env -> Def_trans.def_macro
val is_isabelle_pattern_match : Patterns.match_check_arg
val is_hol_pattern_match : Patterns.match_check_arg
val is_coq_pattern_match : Patterns.match_check_arg
val is_ocaml_pattern_match : Patterns.match_check_arg
val is_pattern_match_const : bool -> Patterns.match_check_arg
val check_number_patterns : Typed_ast.env -> Typed_ast.pat -> unit
val remove_function :
Typed_ast.env ->
(Typed_ast.exp -> Typed_ast.exp) -> Typed_ast.exp -> Typed_ast.exp option
val remove_fun :
Typed_ast.env ->
(Typed_ast.exp -> Typed_ast.exp) -> Typed_ast.exp -> Typed_ast.exp option
val remove_toplevel_match :
Target.target ->
Patterns.match_check_arg -> Typed_ast.env -> Def_trans.def_macro
val collapse_nested_matches :
Patterns.match_check_arg ->
Typed_ast.env -> Typed_ast.exp -> Typed_ast.exp option
end