-
Notifications
You must be signed in to change notification settings - Fork 737
Start a GoodDefaults file collecting recommended option settings. #19117
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,5 @@ | ||
| - **Added:** | ||
| A GoodDefaults_2025 module setting various options to their recommended value, | ||
| see :ref:`the doc <good_defaults>` for more details | ||
| (`#19117 <https://github.com/rocq-prover/rocq/pull/19117>`_, | ||
| by Théo Zimmermann and Théo Winterhalter). |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,42 @@ | ||
| (************************************************************************) | ||
| (* * The Coq Proof Assistant / The Coq 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) *) | ||
| (************************************************************************) | ||
|
|
||
| (** * Good defaults 2025 | ||
|
|
||
| File exporting recommended option settings at the time of releasing Rocq v9.1 | ||
|
|
||
| *) | ||
|
|
||
| #[ export ] Set Default Goal Selector "!". | ||
|
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I would strongly oppose making this the default since it forces the use of focusing which is considered a broken feature by many users. I agree we should make progress on proof-scripts structure checking but this isn't a satisfactory solution.
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I don't understand this comment? How is it broken? To me Rocq is unusable without this option and I don't consider a Rocq script robust if it doesn't work without this option. I think this shouldn't even be an option and should be enforced.
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. mathcomp people use
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Yes, using this flag should be paired with a different option for default goal selector. Although I still believe it's the wrong behaviour. Technically they still have a way to focus with
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. That's the point, the current semantics of bullets is broken, for bad historical reasons.
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. But isn't that only broken if you use
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Again, the reverse
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. It's not broken, you just don't like it.
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. No? If you do not have any bullet behaviour, bullets are just like comments. So they are counterproductive because they give you the fake impression that they carry meaning. Sure they contain intention but that's it. When bullets are meaningful and the default goal selector is none, then they work as they should and force you to write robust proof scripts. And structure is ensured by the system. I've used it for years, and I teach my students to use it.
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Well, it broke a large existing code base by reusing its syntax with an incompatible semantics, it's hard not to call that broken. |
||
|
|
||
| #[ export ] Set Asymmetric Patterns. | ||
|
|
||
| #[ export ] Set Keyed Unification. | ||
|
|
||
| (** The following affect people using [Universe Polymorphism]. *) | ||
|
|
||
| #[ export ] Set Polymorphic Inductive Cumulativity. | ||
|
|
||
| #[ export ] Set Typeclasses Default Mode "!". | ||
| Hint Constants Opaque : typeclass_instances. | ||
|
|
||
| Ltac Tauto.intuition_solver ::= auto with core. | ||
|
|
||
| (** Makes the behavior of [injection] consistent with the rest of standard | ||
| tactics. | ||
| *) | ||
|
|
||
| #[ export ] Set Structural Injection. | ||
|
|
||
| (** These three affect pepole that set [Implicit Arguments]. *) | ||
|
|
||
| #[ export ] Set Strongly Strict Implicit. | ||
| #[ export ] Set Maximal Implicit Insertion. | ||
|
Member
Author
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. @anton-trunov seemed to defend the current default in his answer on Stack Overflow back in 2016: https://stackoverflow.com/questions/37211899/purpose-of-maximal-vs-non-maximal-implicit-arguments That being said, I don't think the issue of having to add And on the other hand, the same @anton-trunov supported in 2021 the switch to maximally implicit arguments for lists (which didn't land) in #13069.
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Yes, 2016 is old |
||
| #[ export ] Set Contextual Implicit. | ||
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Do you expect these recommendations will over time become the default settings? If changes in the defaults are manageable for users, maybe that would be simpler.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
It would be great, but it is much more work, as it can break things on the user side. For now it's what we recommend for new users / files.