Disambiguation_state.ENTRYAbstract definition of entries bound to identifiers.
Disambiguation performs a traversal of the parser syntax to convert it to the external syntax. During this traversal, the disambiguation state is updated to keep track of the referencing environment at each node. Specifically, we add identifiers introduced by function abstractions, patterns, lambdas a Pis.
A disambiguation state entry is the data associated with an identifier in scope. Entries are constructed when a binding is added to the disambiguation state. Notation pragmas edit entries as well.
val is_lf_variable : t -> Stdlib.Bool.tis_lf_variable entry is true if and only if entry describes an LF variable.
val is_meta_variable : t -> Stdlib.Bool.tis_meta_variable entry is true if entry describes a meta-variable or a contextual variable.
Contextual variables exist only because mlam-expressions ambiguously introduce either a meta-variable, a parameter variable, a substitution variable or a context variable.
val is_parameter_variable : t -> Stdlib.Bool.tis_parameter_variable is like is_meta_variable, but for entries describing parameter variables.
val is_substitution_variable : t -> Stdlib.Bool.tis_substitution_variable is like is_meta_variable, but for entries describing parameter variables.
val is_context_variable : t -> Stdlib.Bool.tis_context_variable is like is_meta_variable, but for entries describing context variables.
val is_computation_variable : t -> Stdlib.Bool.tis_computation_variable entry is true if and only if entry describes a computation-level variable.
val is_variable : t -> Stdlib.Bool.tis_variable entry is true if and only if entry describes an LF variable, a meta-level variable, or a computation-level variable.
This is used to discern between the following two cases when disambiguating identifiers in patterns:
val is_lf_type_constant : t -> Stdlib.Bool.tis_lf_type_constant entry is true if and only if entry describes an LF type-level constant.
val is_lf_term_constant : t -> Stdlib.Bool.tis_lf_term_constant is like is_lf_type_constant, but for entries describing LF term-level constants.
val is_schema_constant : t -> Stdlib.Bool.tis_schema_constant is like is_lf_type_constant, but for entries describing context schemas.
val is_computation_inductive_type_constant : t -> Stdlib.Bool.tis_computation_inductive_type_constant is like is_lf_type_constant, but for entries describing inductive computation-level type constants.
val is_computation_stratified_type_constant : t -> Stdlib.Bool.tis_computation_stratified_type_constant is like is_lf_type_constant, but for entries describing stratified computation-level type constants.
val is_computation_coinductive_type_constant : t -> Stdlib.Bool.tis_computation_coinductive_type_constant is like is_lf_type_constant, but for entries describing coinductive computation-level type constants.
val is_computation_abbreviation_type_constant : t -> Stdlib.Bool.tis_computation_abbreviation_type_constant is like is_lf_type_constant, but for entries describing computation-level type constant abbreviations (introduced by the Beluga keyword typedef).
val is_computation_term_constructor : t -> Stdlib.Bool.tis_computation_term_constructor is like is_lf_type_constant, but for entries describing computation-level constructors.
val is_computation_term_destructor : t -> Stdlib.Bool.tis_computation_term_destructor is like is_lf_type_constant, but for entries describing computation-level destructors.
val is_program_constant : t -> Stdlib.Bool.tis_program_constant is like is_lf_type_constant, but for entries describing computation-level programs (introduced by the Beluga keyword rec or val).
val is_module : t -> Stdlib.Bool.tis_module is like is_lf_type_constant, but for entries describing modules.