Commit 2bc00178 authored by Ralf Jung's avatar Ralf Jung

document side-effects of importing std++

parent 7bb46268
Pipeline #4970 canceled with stages
...@@ -20,6 +20,20 @@ The key features of this library are as follows: ...@@ -20,6 +20,20 @@ The key features of this library are as follows:
`set_solver` for goals involving set operations. `set_solver` for goals involving set operations.
- It is entirely dependency- and axiom-free. - It is entirely dependency- and axiom-free.
## Side-effects
Importing std++ has some side effects as the library sets some global options.
Notably:
* `Generalizable All Variables`: This option enables implicit generalization in
arguments of the form `` `{...}`` (i.e., anonymous arguments). Unfortunately, it
also enables implicit generalization in `Instance`. We think that the fact
taht both behaviors are coupled together is a
[bug in Coq](https://github.com/coq/coq/issues/6030).
* The behavior of `Program` is tweaked: `Unset Transparent Obligations`,
`Obligation Tactic := idtac`, `Add Search Blacklist "_obligation_"`. See
[`base.v`](`theories/base.v`) for further details.
## History ## History
Coq-std++ has originally been developed by Robbert Krebbers as part of his Coq-std++ has originally been developed by Robbert Krebbers as part of his
......
...@@ -4,12 +4,20 @@ ...@@ -4,12 +4,20 @@
that are used throughout the whole development. Most importantly it contains that are used throughout the whole development. Most importantly it contains
abstract interfaces for ordered structures, collections, and various other data abstract interfaces for ordered structures, collections, and various other data
structures. *) structures. *)
Global Generalizable All Variables.
From Coq Require Export Morphisms RelationClasses List Bool Utf8 Setoid. From Coq Require Export Morphisms RelationClasses List Bool Utf8 Setoid.
Set Default Proof Using "Type". Set Default Proof Using "Type".
Export ListNotations. Export ListNotations.
From Coq.Program Require Export Basics Syntax. From Coq.Program Require Export Basics Syntax.
(** Enable implicit generalization. *)
(* This option enables implicit generalization in arguments of the form
`{...} (i.e., anonymous arguments). Unfortunately, it also enables
implicit generalization in `Instance`. We think that the fact taht both
Please register or sign in to reply
behaviors are coupled together is a [bug in
Coq](https://github.com/coq/coq/issues/6030). *)
Global Generalizable All Variables.
(** * Tweak program *) (** * Tweak program *)
(** 1. Since we only use Program to solve logical side-conditions, they should (** 1. Since we only use Program to solve logical side-conditions, they should
always be made Opaque, otherwise we end up with performance problems due to always be made Opaque, otherwise we end up with performance problems due to
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment