Module Notation_term
type notation_constr=
type scope_name= stringtype tmp_scope_name= scope_nametype subscopes= tmp_scope_name list * scope_name listtype extended_subscopes= Constrexpr.notation_entry_relative_level * subscopes
type notation_binder_kind=|AsIdent|AsName|AsAnyPattern|AsStrictPatterntype notation_binder_source=|NtnBinderParsedAsConstr of notation_binder_kind|NtnBinderParsedAsSomeBinderKind of notation_binder_kind|NtnBinderParsedAsBindertype notation_var_instance_type=|NtnTypeConstr|NtnTypeConstrList|NtnTypeBinder of notation_binder_source|NtnTypeBinderList of notation_binder_sourcetype notation_var_internalization_type=|NtnInternTypeAny of scope_name option|NtnInternTypeOnlyBinderType of variables when interpreting a constr_expr as a notation_constr: in a recursive pattern x..y, both x and y carry the individual type of each element of the list x..y
type notation_var_binders= Names.Id.Set.tThe set of other notation variables that are bound to a binder or binder list and that bind the given notation variable, for instance, in
"{ x | P }" := (sigT (fun x => P), "x" is under an empty set of binders and "P" is under the binders bound to "x", that is, its notation_var_binders set is "x"
type interpretation= (Names.Id.t * (extended_subscopes * notation_var_binders * notation_var_instance_type)) list * notation_constrThis characterizes to what a notation is interpreted to
type reversibility_status=|APrioriReversible|HasLtac|NonInjective of Names.Id.t listtype notation_interp_env={ninterp_var_type : notation_var_internalization_type Names.Id.Map.t;ninterp_rec_vars : Names.Id.t Names.Id.Map.t;}