(************************************************************************) (* * 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) *) (************************************************************************)
(** Interpretation functions for generic arguments and interpreted Ltac
values. *)
open Names open Genarg
(** {6 Dynamic toplevel values} *)
module Val : sig type'a typ
val create : string -> 'a typ
type _ tag =
| Base : 'a typ -> 'a tag
| List : 'a tag -> 'a list tag
| Opt : 'a tag -> 'a option tag
| Pair : 'a tag * 'b tag -> ('a * 'b) tag
type t = Dyn : 'a typ * 'a -> t
val eq : 'a typ -> 'b typ -> ('a, 'b) CSig.eq option val repr : 'a typ -> string val pr : 'a typ -> Pp.t
val typ_list : t list typ val typ_opt : t option typ val typ_pair : (t * t) typ
val inject : 'a tag -> 'a -> t
end
module ValTMap (Value : Dyn.ValueS) :
Dyn.MapS withtype'a key = 'a Val.typ andtype'a value = 'a Value.t
(** Dynamic types for toplevel values. While the generic types permit to relate objectsatvariouslevelsofinterpretation,toplevelvaluesarewearing theirowntyperegardlessofwheretheycamefrom.Thisallowstousethe
same runtime representation for several generic types. *)
val val_tag : 'a typed_abstract_argument_type -> 'a Val.tag (** Retrieve the dynamic type associated to a toplevel genarg. *)
val register_val0 : ('raw, 'glb, 'top) genarg_type -> 'top Val.tag option -> unit (** Register the representation of a generic argument. If no tag is given as argument,anewfreshtagwiththesamenameastheargumentisassociated
to the generic type. *)
(** {6 Interpretation functions} *)
module TacStore : Store.S
type interp_sign =
{ lfun : Val.t Id.Map.t
; poly : bool
; extra : TacStore.t }
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 und die Messung sind noch experimentell.