Module Notation_ops
val constr_lowest_level : Constrexpr.notation_entry_level
val constr_some_level : Constrexpr.notation_entry_relative_level
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 oft2
(this is a partial order and returningfalse
does not mean thatt2
is finer thant1
)
val strictly_finer_interpretation_than : Notation_term.interpretation -> Notation_term.interpretation -> bool
Tell if a notation interpretation is strictly included in another one
val finer_interpretation_than : Notation_term.interpretation -> Notation_term.interpretation -> bool
Tell if a notation interpretation is included in another one
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
val pr_notation_info : (Glob_term.glob_constr -> Pp.t) -> Constrexpr.notation_key -> Notation_term.notation_constr -> Pp.t
Matching a notation pattern against a glob_constr
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 * ('a Glob_term.cases_pattern_g * 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 * ('a Glob_term.cases_pattern_g * Notation_term.extended_subscopes) list) * (bool * int * 'a Glob_term.cases_pattern_g list)