(************************************************************************) (* * The Rocq Prover / The Rocq Development Team *) (* v * Copyright INRIA, CNRS and contributors *) (* * (see LICENSE file for the text of the license) *) (* \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 Libnames
(** {6 Concrete syntax for terms } *)
(** Universes *) type sort_name_expr =
| | CProp CSet
| CType of qualid
| CRawType of Univ.Level.t (** Universes like "foo.1" have no qualid form *)
type univ_level_expr
type qvar_expr =
| CQVar of qualid
| CQAnon of Loc.t option
| CRawQVar of Sorts.QVar.t
type quality_expr =
| CQConstant of Sorts.Quality.constant
| CQualVar of qvar_expr
type relevance_expr =
| CRelevant | CIrrelevant
| CRelevanceVar of qvar_expr
type relevance_info_expr = relevance_expr option
type sort_expr = (qvar_expr option * (sort_name_expr * int) list Glob_term.glob_sort_gen)
type instance_expr = quality_expr list * univ_level_expr list
(** Constraints don't have anonymous universes *) type univ_constraint_expr = sort_name_expr * Univ.constraint_type * sort_name_expr
type ident_decl = lident * universe_decl_expr option type cumul_ident_decl = lident * cumul_univ_decl_expr option type name_decl = lname * universe_decl_expr option
type notation_with_optional_scope = LastLonelyNotation | NotationInScope ofstring
type side = Left | Right type entry_level = int type entry_relative_level = LevelLt of entry_level | LevelLe of entry_level | LevelSome
(* The entry in which a notation is declared *) type notation_entry = InConstrEntry | InCustomEntry ofstring
(* A notation entry with the level where the notation lives *) type notation_entry_level = {
notation_entry : notation_entry;
notation_level : entry_level;
}
(* Notation subentries, to be associated to the variables of the notation *) type notation_entry_relative_level = {
notation_subentry : notation_entry;
notation_relative_level : entry_relative_level;
notation_position : side option;
}
type notation_key = string
(* A notation associated to a given parsing rule *) type notation = notation_entry * notation_key
(* A notation associated to a given interpretation *) type specific_notation = notation_with_optional_scope * (notation_entry * notation_key)
type'a or_by_notation_r =
| AN of'a
| ByNotation of (string * stringoption)
type'a or_by_notation = 'a or_by_notation_r CAst.t
(* NB: the last string in [ByNotation] is actually a [Notation.delimiters],
but this formulation avoids a useless dependency. *)
type explicitation =
| ExplByName of Id.t
| ExplByPos of int (* a reference to the n-th non-dependent implicit starting from left *)
type binder_kind =
| Default of Glob_term.binding_kind
| Generalized of Glob_term.binding_kind * bool (** (Inner binding always Implicit) Outer bindings, typeclass-specific flag
for implicit generalization of superclasses *)
type explicit_flag = bool(** true = with "@" *)
type delimiter_depth = DelimOnlyTmpScope | DelimUnboundedScope (** shallow (%_) vs. deep (%) scope opening *)
type prim_token =
| Number of NumTok.Signed.t
| Stringofstring
(** [constr_expr] is the abstract syntax tree produced by the parser *) type cases_pattern_expr_r =
| CPatAlias of cases_pattern_expr * lname
| CPatCstr of qualid
* cases_pattern_expr listoption * cases_pattern_expr list (** [CPatCstr (_, c, Some l1, l2)] represents [(@ c l1) l2] *)
| CPatAtom of qualid option
| CPatOr of cases_pattern_expr list
| CPatNotation of notation_with_optional_scope option * notation * cases_pattern_notation_substitution
* cases_pattern_expr list(** CPatNotation (_, n, l1 ,l2) represents (notation n applied with substitution l1)
applied to arguments l2 *)
| CPatPrim of prim_token
| CPatRecord ofopen Libnames
|CPatDelimitersof delimiter_depth*string*cases_pattern_expr(* * GNU Lesser General Public License Version 2.1 *)
*java.lang.StringIndexOutOfBoundsException: Index 50 out of bounds for length 50
CAst
and =
cases_pattern_expr
cases_pattern_exprlist * (* for recursive notations parsed as terms*)
java.lang.StringIndexOutOfBoundsException: Index 1 out of bounds for length 0
and constr_expr_rjava.lang.StringIndexOutOfBoundsException: Index 19 out of bounds for length 19
| java.lang.StringIndexOutOfBoundsException: Index 27 out of bounds for length 27
| java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0 oflist
| CProdN =lname option type = ..t
|CLetIn
( * ) list
| CApp of constr_expr * entry_level=
*( )
* (constr_expr * explicitation CAst
| qualid)
(* representation of the "let" and "match" constructs *)
. (* determines whether this value represents "let" or "match" construct *)
* constr_expr option notation_entry : notation_entry;
=
* list
;
constr_exprjava.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
*| of (string * stringoption)
Hole Evar_kindsglob_evar_kindjava.lang.StringIndexOutOfBoundsException: Index 47 out of bounds for length 47
| CGenarg of
(* because print for genargs wants to print directly the glob without an extern phase (??) *)
|
| CPatVar Patternpatvar
| CEvar of
| | of.Signedjava.lang.StringIndexOutOfBoundsException: Index 29 out of bounds for length 29
=
zationGlob_term*java.lang.StringIndexOutOfBoundsException: Index 59 out of bounds for length 59 type(
| CDelimiters of option array constr_expr
constr_expr list
*
* cases_pattern_exprarguments java.lang.StringIndexOutOfBoundsException: Index 60 out of bounds for length 60
andof
(cases_pattern_expr list odelimiter_depth *
and fix_expr =
lident *and =cases_pattern_expr_r.t
*
local_binder_expr *constr_expr
and cofix_expr java.lang.StringIndexOutOfBoundsException: Index 17 out of bounds for length 0
lident =lname list* for recursive notations parsed as terms*)
type qualid instance_expr ofjava.lang.StringIndexOutOfBoundsException: Index 24 out of bounds for length 24
| | CProdN type entry_relative_level = ofentry_level CLambdaN *constr_expr oflident *constr_expr option(** argument, measure, relation *)
fixpoint_order_expr CAst
(* Anonymous defs allowed ?? *) ( java.lang.StringIndexOutOfBoundsException: Index 63 out of bounds for length 63
CCasesConstr
CLocalAssum : ;
| java.lang.StringIndexOutOfBoundsException: Index 11 out of bounds for length 1 ofjava.lang.StringIndexOutOfBoundsException: Index 39 out of bounds for length 39
and=
constr_expr list * (* for constr subterms *).java.lang.StringIndexOutOfBoundsException: Range [47, 48) out of bounds for length 47
constr_expr listlist * java.lang.StringIndexOutOfBoundsException: Index 24 out of bounds for length 24
list(
type =
(** Concrete syntax for modules and module types *) = .java.lang.StringIndexOutOfBoundsException: Index 38 out of bounds for length 38
type with_declaration_ast
| java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
type module_ast_r =
|lident
Default. list* java.lang.StringIndexOutOfBoundsException: Index 52 out of bounds for length 52
module_ast .
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.