(************************************************************************) (* * The Rocq Prover / The Rocq Development Team *) (* v * Copyright INRIA, CNRS and contributors *) (* <O___,, * (see version control and CREDITS file for authors & dates) *) (* \VV/ **************************************************************) (* // * This file is distributed under the terms of the *) (* * GNU Lesser General Public License Version 2.1 *) (* * (see LICENSE file for the text of the license) *) (************************************************************************)
open Names open Evd open Environ open Libnames open Glob_term open Pattern open EConstr open Constrexpr open Notation_term open Pretyping
(** Translation from front abstract syntax of term to untyped terms (glob_constr) *)
(** The translation performs:
- resolution of names : - check all variables are bound - make absolute the references to global objets - resolution of symbolic notations using scopes - insertion of implicit arguments
To interpret implicit arguments and arg scopes of recursive variables while internalizing inductive types and recursive definitions, and also projection while typing records.
the third and fourth arguments associate a list of implicit positions and scopes to identifiers declared in the [rel_context]
of [env] *)
(** This collects relevant information for interning local variables: - their coqdoc kind (a recursive call in a inductive, fixpoint of class; or a bound variable) e.g. while typing the constructor of JMeq, "JMeq" behaves as a variable of type Inductive - their implicit arguments
- their argument scopes *) type var_internalization_data
(** A map of free variables to their implicit arguments and scopes *) type internalization_env = var_internalization_data Id.Map.t
val empty_internalization_env : internalization_env
val compute_internalization_env : env -> evar_map -> ?impls:internalization_env -> ?force:Id.Set.t list -> var_internalization_type ->
Id.t list -> types list -> Impargs.manual_implicits list ->
internalization_env
val implicits_of_decl_in_internalization_env :
Id.t -> internalization_env -> Impargs.implicit_status list
type ltac_sign = {
ltac_vars : Id.Set.t; (** Variables of Ltac which may be bound to a term *)
ltac_bound : Id.Set.t; (** Other variables of Ltac *)
ltac_extra : Genintern.Store.t; (** Arbitrary payload *)
}
val empty_ltac_sign : ltac_sign
(** {6 Internalization performs interpretation of global names and notations } *)
val intern_constr : env -> evar_map -> constr_expr -> glob_constr val intern_type : env -> evar_map -> constr_expr -> glob_constr
(** Returns None if it's an abbreviation not bound to a name, raises an error
if not existing *) val intern_reference : qualid -> GlobRef.t option
(** Returns None if not a reference or a abbrev not bound to a name *) val intern_name_alias :
constr_expr -> (GlobRef.t * Glob_term.glob_instance option) option
(** Expands abbreviations; raise an error if not existing *) val interp_reference : ltac_sign -> qualid -> glob_constr
(** Locating references of constructions, possibly via a syntactic definition
(these functions do not modify the glob file) *)
val locate_reference : Libnames.qualid -> GlobRef.t option val is_global : Id.t -> bool
(** Interprets a term as the left-hand side of a notation. The returned map is
guaranteed to have the same domain as the input one. *) val interp_notation_constr : env -> ?impls:internalization_env ->
notation_interp_env -> constr_expr ->
(bool * subscopes * Id.Set.t) Id.Map.t * notation_constr * reversibility_status
(** Idem but to glob_constr (weaker check of binders) *)
(** Globalization options *) val parsing_explicit : boolref
(** Placeholder for global option, should be moved to a parameter *) val get_asymmetric_patterns : unit -> bool
val check_duplicate : ?loc:Loc.t -> (qualid * constr_expr) list -> unit (** Check that a list of record field definitions doesn't contain
duplicates. *)
val interp_cumul_univ_decl_opt : Environ.env -> cumul_univ_decl_expr option ->
Evd.evar_map * UState.universe_decl * Entries.variance_entry (** BEWARE the variance entry needs to be adjusted by
[ComInductive.variance_of_entry] if the instance is extensible. *)
val interp_mutual_univ_decl_opt : Environ.env -> universe_decl_expr optionlist ->
Evd.evar_map * UState.universe_decl (** Check that all defined udecls of a list of udecls associated to a mutual definition
are the same and interpret this common udecl *)
¤ Dauer der Verarbeitung: 0.14 Sekunden
(vorverarbeitet)
¤
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung ist noch experimentell.