(************************************************************************) (* * 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) *) (************************************************************************)
Ltac2 @ external destruct : evar_flag -> induction_clause list ->
constr_with_bindings option -> unit := "rocq-runtime.plugins.ltac2""tac_destruct".
Ltac2 @ external induction : evar_flag -> induction_clause list ->
constr_with_bindings option -> unit := "rocq-runtime.plugins.ltac2""tac_induction".
Ltac2 @external exfalso : unit -> unit := "rocq-runtime.plugins.ltac2""tac_exfalso".
(** Constructors for reduction/expansion strategies *)
ModuleRed.
Ltac2 Type t.
(** βιζ-reduction of the _head constant_ of a term. Fails if there is no
reducible head constant. *)
Ltac2 @external red : t := "rocq-runtime.plugins.ltac2""red".
(** Full βδιζ-reduction the head of a term. Does not recurse into subterms. *)
Ltac2 @external hnf : t := "rocq-runtime.plugins.ltac2""hnf".
(** Strong normalization except two key differences:
- It unfolds constants only if they lead to an ι-reduction, i.e. reducing a match or unfolding a fixpoint.
- When reducing a constant unfolding to (co)fixpoints, uses the name of the constant the (co)fixpoint comes from instead of the (co)fixpoint definition in recursive calls.
Can unfold transparent constants as well as those designated by [Arguments] commands. The second parameter can limit the application of [simpl] to specific subterms matching. If the pattern resolves into a global reference, it will be treated as such.
Only the following [red_flags] are relevant: [head], [delta]. *)
Ltac2 @external simpl : red_flags -> (pattern * occurrences) option -> t := "rocq-runtime.plugins.ltac2""simpl".
(** Full normalization using provided reduction flags by first evaluating the head of the expression into weak-head normal form in _call-by-value_ order. Once a weak-head normal form is obtained, subterms are recursively reduced
using the same strategy. *)
Ltac2 @external cbv : red_flags -> t := "rocq-runtime.plugins.ltac2""cbv".
(** [cbn] was intended to be a more principled, faster and more predictable replacement for [simpl]. The main difference is that cbn may unfold constants even when they cannot be reused in recursive calls. Certain modifiers are also not treated the same. See the respective Ltac1 tactic documentation for more details. Setting [Debug "RAKAM"] makes [cbn] print various debugging
information.. *)
Ltac2 @external cbn : red_flags -> t := "rocq-runtime.plugins.ltac2""cbn".
(** Full normalization using provided reduction flags by first evaluating the head of the expression into weak-head normal form in _call-by-need_ order. Once a weak-head normal form is obtained, subterms are recursively reduced
using the same strategy. *)
Ltac2 @external lazy : red_flags -> t := "rocq-runtime.plugins.ltac2""lazy".
(** Applies delta-reduction to the constants specified by each [reference * occurrences] and then reduces to βιζ-normal form. Use the general reductions
if you want to only apply the δ rule, for example [cbv] with [delta]. *)
Ltac2 @external unfold : (reference * occurrences) list -> t := "rocq-runtime.plugins.ltac2""unfold".
(** First, reduces each [constr] using [red]. Then, every occurrence of the
resulting terms will be replaced by its associated [constr]. *)
Ltac2 @external fold : constr list -> t := "rocq-runtime.plugins.ltac2""fold".
(** Performs beta-expansion (the inverse of beta-reduction). The [constr]s must be free subterms in the subject of reduction. The expansion is done by:
1. Replacing all selected occurrences of the [constr]s in the term with fresh variables
2. Abstracting these variables
3. Applying the abstracted term to the [constr]s *)
Ltac2 @external pattern : (constr * occurrences) list -> t := "rocq-runtime.plugins.ltac2""pattern".
(** Optimized _call-by-value_ evaluation on a bytecode-based virtual machine. This algorithm is dramatically more efficient than the algorithm used for [cbv], but it cannot be fine-tuned. It is especially useful for full evaluation of algebraic objects. This includes the case of reflection-based
tactics. *)
Ltac2 @external vm : (pattern * occurrences) option -> t := "rocq-runtime.plugins.ltac2""vm".
(** Evaluates the goal by compilation to OCaml. Depending on the configuration, it can either default to [vm], recompile dependencies or fail due to some missing precompiled dependencies. See the [native-compiler] option
for details. *)
Ltac2 @external native : (pattern * occurrences) option -> t := "rocq-runtime.plugins.ltac2""native". EndRed.
Ltac2 @ external reflexivity : unit -> unit := "rocq-runtime.plugins.ltac2""tac_reflexivity".
Ltac2 @ external assumption : unit -> unit := "rocq-runtime.plugins.ltac2""tac_assumption".
Ltac2 @ external eassumption : unit -> unit := "rocq-runtime.plugins.ltac2""tac_eassumption".
Ltac2 @ external transitivity : constr -> unit := "rocq-runtime.plugins.ltac2""tac_transitivity".
Ltac2 @ external etransitivity : unit -> unit := "rocq-runtime.plugins.ltac2""tac_etransitivity".
Ltac2 @ external cut : constr -> unit := "rocq-runtime.plugins.ltac2""tac_cut".
Ltac2 @ external left : evar_flag -> bindings -> unit := "rocq-runtime.plugins.ltac2""tac_left".
Ltac2 @ external right : evar_flag -> bindings -> unit := "rocq-runtime.plugins.ltac2""tac_right".
Ltac2 @ external autorewrite : bool -> (unit -> unit) option -> ident list -> clause -> unit := "rocq-runtime.plugins.ltac2""tac_autorewrite".
Ltac2 @ external subst : ident list -> unit := "rocq-runtime.plugins.ltac2""tac_subst".
Ltac2 @ external subst_all : unit -> unit := "rocq-runtime.plugins.ltac2""tac_substall".
(** auto *)
Ltac2 Type debug := [ Off | Info | Debug ].
Ltac2 Type strategy := [ BFS | DFS ].
Ltac2 @ external trivial : debug -> reference list -> ident list option -> unit := "rocq-runtime.plugins.ltac2""tac_trivial".
Ltac2 @ external auto : debug -> int option -> reference list -> ident list option -> unit := "rocq-runtime.plugins.ltac2""tac_auto".
Ltac2 @ external eauto : debug -> int option -> reference list -> ident list option -> unit := "rocq-runtime.plugins.ltac2""tac_eauto".
Ltac2 @ external typeclasses_eauto : strategy option -> int option -> ident list option -> unit := "rocq-runtime.plugins.ltac2""tac_typeclasses_eauto".
Ltac2 @ external resolve_tc : constr -> unit := "rocq-runtime.plugins.ltac2""tac_resolve_tc". (** Resolve the existential variables appearing in the constr whose types are typeclasses. Fail if any of them cannot be resolved.
Does not focus. *)
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.