Module Notation_ops

Utilities about notation_constr
val eq_notation_constr : (Names.Id.t list * Names.Id.t list) -> Notation_term.notation_constr -> Notation_term.notation_constr -> bool
val strictly_finer_notation_constr : (Names.Id.t list * Names.Id.t list) -> Notation_term.notation_constr -> Notation_term.notation_constr -> bool

Tell if t1 is a strict refinement of t2 (this is a partial order and returning false does not mean that t2 is finer than t1)

val subst_interpretation : Mod_subst.substitution -> Notation_term.interpretation -> Notation_term.interpretation
val ldots_var : Names.Id.t
Translation back and forth between glob_constr and notation_constr
val notation_constr_of_glob_constr : Notation_term.notation_interp_env -> Glob_term.glob_constr -> Notation_term.notation_constr * Notation_term.reversibility_status
type 'a binder_status_fun = {
no : 'a -> 'a;
restart_prod : 'a -> 'a;
restart_lambda : 'a -> 'a;
switch_prod : 'a -> 'a;
switch_lambda : 'a -> 'a;
slide : 'a -> 'a;
}
val apply_cases_pattern : ?⁠loc:Loc.t -> ((Names.Id.t list * Glob_term.cases_pattern_disjunction) * Names.Id.t) -> Glob_term.glob_constr -> Glob_term.glob_constr
val glob_constr_of_notation_constr_with_binders : ?⁠loc:Loc.t -> ('a -> Names.Name.t -> Glob_term.glob_constr option -> 'a * ((Names.Id.t list * Glob_term.cases_pattern_disjunction) * Names.Id.t) option * Names.Name.t * Glob_term.binding_kind * Glob_term.glob_constr option) -> ('a -> Notation_term.notation_constr -> Glob_term.glob_constr) -> ?⁠h:'a binder_status_fun -> 'a -> Notation_term.notation_constr -> Glob_term.glob_constr
val glob_constr_of_notation_constr : ?⁠loc:Loc.t -> Notation_term.notation_constr -> Glob_term.glob_constr
Matching a notation pattern against a glob_constr
exception No_match
val print_parentheses : bool Stdlib.ref
val match_notation_constr : print_univ:bool -> 'a Glob_term.glob_constr_g -> vars:Names.Id.Set.t -> Notation_term.interpretation -> ((Names.Id.Set.t * 'a Glob_term.glob_constr_g) * Notation_term.extended_subscopes) list * ((Names.Id.Set.t * 'a Glob_term.glob_constr_g list) * Notation_term.extended_subscopes) list * ((Names.Id.Set.t * 'a Glob_term.cases_pattern_disjunction_g) * Notation_term.extended_subscopes) list * ((Names.Id.Set.t * 'a Glob_term.extended_glob_local_binder_g list) * Notation_term.extended_subscopes) list
val match_notation_constr_cases_pattern : 'a Glob_term.cases_pattern_g -> Notation_term.interpretation -> (('a Glob_term.cases_pattern_g * Notation_term.extended_subscopes) list * ('a Glob_term.cases_pattern_g list * Notation_term.extended_subscopes) list) * (bool * int * 'a Glob_term.cases_pattern_g list)
val match_notation_constr_ind_pattern : Names.inductive -> 'a Glob_term.cases_pattern_g list -> Notation_term.interpretation -> (('a Glob_term.cases_pattern_g * Notation_term.extended_subscopes) list * ('a Glob_term.cases_pattern_g list * Notation_term.extended_subscopes) list) * (bool * int * 'a Glob_term.cases_pattern_g list)
Matching a notation pattern against a glob_constr