(************************************************************************) (* * 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) *) (************************************************************************)
(* This file is (C) Copyright 2006-2015 Microsoft Corporation and Inria. *)
open Names open Ltac_plugin
(* Names of variables to be cleared (automatic check: not a section var) *) type ssrhyp = SsrHyp of Id.t Loc.located (* Variant of the above *) type ssrhyp_or_id = Hyp of ssrhyp | Id of ssrhyp
(* Variant of the above *) type ssrhyps = ssrhyp list
(* Direction to be used for rewriting as in -> or rewrite flag *) type ssrdir = Ssrmatching_plugin.Ssrmatching.ssrdir = L2R | R2L
(* simpl: "/=", cut: "//", simplcut: "//=" nop: commodity placeholder *) type ssrsimpl = Simpl of int | Cut of int | SimplCut of int * int | Nop
(* modality for rewrite and do: ! ? *) type ssrmmod = May | Must | Once
(* modality with a bound for rewrite and do: !n ?n *) type ssrmult = int * ssrmmod
(** Occurrence switch {1 2}, all is Some(false,[]) *) type ssrocc = (bool * int list) option
(* index MAYBE REMOVE ONLY INTERNAL stuff between {} *) type ssrindex = int Locus.or_var
(* OLD ssr terms *) (* terms are pre constr, the kind is a parsing/printing flag to distinguish
* between x, @x and (x). It affects automatic clear and let-in preservation. *) (* FIXME *) (* Cpattern is a temporary flag that becomes InParens ASAP. *) type ssrtermkind = Ssrmatching_plugin.Ssrmatching.ssrtermkind type ssrterm = ssrtermkind * Genintern.glob_constr_and_expr
(* These terms are raw but closed with the intenalization/interpretation * context. It is up to the tactic receiving it to decide if such contexts * are useful or not, and eventually manipulate the term before turning it
* into a constr *) type ast_closure_term = {
body : Constrexpr.constr_expr;
glob_env : ast_glob_env option; (* for Tacintern.intern_constr *)
interp_env : Geninterp.interp_sign option; (* for Tacinterp.interp_open_constr_with_bindings *)
annotation : [ `None | `Parens | `DoubleParens | `At ];
}
type ssrview = ast_closure_term list
type id_block = Prefix of Id.t | SuffixId of Id.t | SuffixNum of int
(* Only [One] forces an introduction, possibly reducing the goal. *) type anon_kind =
| One ofstringoption(* name hint *)
| Drop
| All
| Temporary
type ssripat =
| IPatNoop
| IPatId of Id.t
| IPatAnon of anon_kind (* inaccessible name *)
| IPatDispatch of ssripatss_or_block (* (..|..) *)
| IPatCase of ssripatss_or_block (* [..|..] *)
| IPatInj of ssripatss
| IPatRewrite of(*occurrence option * rewrite_pattern **) ssrocc * ssrdir
| IPatView of ssrview (* /view *)
| IPatClear of ssrclear (* {H1 H2} *)
| IPatSimpl of ssrsimpl
| IPatAbstractVars of Id.t list
| IPatFastNondep
and ssripats = ssripat list and ssripatss = ssripats list and ssripatss_or_block =
| Block of id_block
| Regular of ssripats list type ssrhpats = ((ssrclear option * ssripats) * ssripats) * ssripats type ssrhpats_wtransp = bool * ssrhpats
(** Binders (for fwd tactics) *) type'term ssrbind =
| Bvar of Name.t
| Bdecl of Name.t list * 'term
| Bdef of Name.t * 'term option * 'term
| Bstruct of Name.t
| Bcast of'term (* We use an intermediate structure to correctly render the binder list *) (* abbreviations. We use a list of hints to extract the binders and *) (* base term from a term, for the two first levels of representation of *) (* of constr terms. *) type ssrbindfmt =
| BFvar
| BFdecl of int (* #xs *)
| BFcast (* final cast *)
| BFdef (* has cast? *)
| BFrec ofbool * bool(* has struct? * has cast? *) type'term ssrbindval = 'term ssrbind list * 'term
(** Forward chaining argument *) (* There are three kinds of forward definitions: *) (* - Hint: type only, cast to Type, may have proof hint. *) (* - Have: type option + value, no space before type *) (* - Pose: binders + value, space before binders. *) type ssrfwdkind = FwdHint ofstring * bool | FwdHave | FwdPose type ssrfwdfmt = ssrfwdkind * ssrbindfmt list
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.