Built with Alectryon, running Coq+SerAPI v8.19.0+0.19.3. Bubbles () indicate interactive fragments: hover for details, tap to reveal contents. Use Ctrl+↑Ctrl+↓ to navigate, Ctrl+🖱️ to focus. On Mac, use ⌘ instead of Ctrl.
(** * General Settings *)(** This file contains all the tweaks and settings we make to Coq. *)(** ** Warnings *)(** ** Plugins *)(** Load the Ltac plugin. This is the tactic language we use for proofs. *)Declare ML Module"ltac_plugin:coq-core.plugins.ltac".(** Load the number string notation plugin. Allowing us to write numbers like [1234]. *)
[Loading ML file number_string_notation_plugin.cmxs (using legacy method) ... done]
(** ** Proofs *)(** Activate the Ltac tactics language for proofs. *)GlobalSet Default Proof Mode "Classic".(** Force use of bullets in proofs. *)Global Set Default Goal Selector"!".(** ** Universes *)(** Activate universe polymorphism everywhere. This means that whenever you see a [Type], it's actually a [Type@{i}] for some universe level [i]. This allows us to reuse definitions for each universe level without having to redefine them. *)Global Set Universe Polymorphism.(** This command makes it so that you don't have to declare universes explicitly when mentioning them in the type. (Without this command, if you want to say [Definition foo := Type@{i}.], you must instead say [Definition foo@{i} := Type@{i}.]. *)Global Unset Strict Universe Declaration.(** This command makes it so that when we say something like [IsHSet nat] we get [IsHSet@{i} nat] instead of [IsHSet@{Set} nat]. *)Global Unset Universe Minimization ToSet.(** ** Primitive Projections *)Global Set Primitive Projections.Global Set Nonrecursive Elimination Schemes.(** Currently Coq doesn't print equivalences correctly (8.6). This fixes that. See https://github.com/HoTT/HoTT/issues/1000 *)Global Set Printing Primitive Projection Parameters.(** ** Pattern Matching *)(** This flag removes parameters from constructors in patterns that appear in a match statement. *)Global Set Asymmetric Patterns.(** ** Unification *)(** This command changes Coq's subterm selection to always use full conversion after finding a subterm whose head/key matches the key of the term we're looking for. This applies to [rewrite] and higher-order unification in [apply]/[elim]/[destruct]. Again, if you don't know what that means, ignore it. *)Global Set Keyed Unification.(** ** Typeclasses and Hint settings *)(** This tells Coq that when we [Require] a module without [Import]ing it, typeclass instances defined in that module should also not be imported. In other words, the only effect of [Require] without [Import] is to make qualified names available. *)GlobalSet Loose Hint Behavior "Strict".Create HintDbrewritediscriminated.#[export] Hint Variables Opaque : rewrite.Create HintDb typeclass_instances discriminated.(** ** Reversible Coercions *)(** Coercions in Coq since 8.16 have the ability to be reversible. These are coercions that are not regular functions but rely on some meta-procedure like typeclass resolution to fill in missing pieces. Examples include marking fields of a record with [:>] which allows Coq to elaborate the projected term to the original term.This behaviour can have some surprising effects in some places, where you might not expect a term to be elaborated. When inspecting proofs with [Set Printing All] you will not be able to see the reversible coercion. In order to help with inspecting such situations, Coq exposes a register for a dummy term called [reverse_coercion] which gets inserted during an application of a reversible coercion. This way you can see the application clearly in a proof term.We register this here. This is standard from the Coq Stdlib prelude.*)#[universes(polymorphic=yes)] DefinitionReverseCoercionSource (T : Type) := T.#[universes(polymorphic=yes)] DefinitionReverseCoercionTarget (T : Type) := T.#[warning="-uniform-inheritance", reversible=no, universes(polymorphic=yes)]
Coercionreverse_coercion {T' T} (x' : T') (x : ReverseCoercionSource T)
: ReverseCoercionTarget T' := x'.Register reverse_coercion as core.coercion.reverse_coercion.(** ** Search Settings *)(** Keywords for blacklisting from search function *)Add Search Blacklist"_admitted""_subproof""Private_".