(************************************************************************) (* * 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 EConstr open Environ open Reductionops open Evd open Locus
(** {4 Unification for type inference. } *)
type unify_flags = Evarsolve.unify_flags
(** The default subterm transparent state is no unfoldings *) val default_flags_of : ?subterm_ts:TransparentState.t -> TransparentState.t -> unify_flags
exception UnableToUnify of evar_map * Pretype_errors.unification_error
(** {6 Main unification algorithm for type inference. } *)
(** There are two variants for unification: one that delays constraints outside its capabilities ([unify_delay])andanotherthattriestosolvesuchremainingconstraintsusing
heuristics ([unify]). *)
(** These functions allow to pass arbitrary flags to the unifier and can delay constraints. Incasetheflagsarenotspecified,theydefaultto [default_flags_ofTransparentState.full]currently.
(** This function also calls [solve_unif_constraints_with_heuristics] to resolve any remaining constraints.Incaseofsuccessthetwotermsareunifiedwithoutcondition.
(** Compares two constants/inductives/constructors unifying their universes. Itrequiredthenumberofargumentsappliedtothec/i/cinordertodecided
the kind of check it must perform. *) val compare_heads : env -> evar_map ->
nargs:int -> EConstr.t -> EConstr.t -> Evarsolve.unification_result
(** Try to solve problems of the form ?x[args] = c by second-order
matching, using typing to select occurrences *)
(** When given the choice of abstracting an occurrence or leaving it,
force abstration. *)
type occurrence_selection =
| AtOccurrences of occurrences
| Unspecified of Abstraction.abstraction
(** By default, unspecified, not preferring abstraction.
This provides the most general solutions. *) val default_occurrence_selection : occurrence_selection
type occurrences_selection =
occurrence_match_test * occurrence_selection list
val default_occurrence_test : allowed_evars:Evarsolve.AllowedEvars.t -> TransparentState.t -> occurrence_match_test
(** [default_occurrence_selection n]
Gives the default test and occurrences for [n] arguments *) val default_occurrences_selection : ?allowed_evars:Evarsolve.AllowedEvars.t (* By default, all *) ->
TransparentState.t -> int -> occurrences_selection
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.