Comments (8)
Note that I think we are missing half of the tools for this. The option prevents the caller from depending on hints that were not required, but there is no way for the library author to prevent their hints not to be available through a require. I believe we should introduce another option for this behaviour, which could be turned on by default in any new development.
from stdlib2.
This sounds great. I would propose to systematically rule out use of auto with *
using something like this
(** [intuition] means [intuition auto with *]. This is very wrong and
fragile and slow. We make [intuition] mean [intuition auto]. *)
Tactic Notation "intuition" tactic3(tactic) := intuition tactic.
Tactic Notation "intuition" := intuition auto.
(** [firstorder] means [firstorder auto with *]. This is very wrong
and fragile and slow. We make [firstorder] mean [firstorder
auto]. *)
Global Set Firstorder Solver auto.
(** A version of [intuition] that allows you to see how the old
[intuition] tactic solves the proof. *)
Ltac debug_intuition := idtac "<infomsg>Warning: debug_intuition should not be used in production code.</infomsg>"; intuition debug auto with *.
from stdlib2.
@ppedrot I'd like to hear what you'd suggest us to do. I would strongly be in favor of stdlib2 not depending on the lax hint behavior, indeed. On the other hand, I'd like to not impact downstream developments.
Is there a way to set the option at the level of a project?
from stdlib2.
@maximedenes Yes, there is now (and we should deprecate Global Set
and tell people to use this instead). You can set an option through a command-line flag. Then, let's say you use Dune as your build system, you can set a flag to compile your project using the (flags ...)
stanza within the (coq.theory ...)
one.
from stdlib2.
Yeah, I just realized that. The current situation is very strange, people writing hints can't control their locality.
from stdlib2.
Technically, it shouldn't even be the responsibility of the hint writer, because this super-global behaviour is clearly a bug...
from stdlib2.
Technically, it shouldn't even be the responsibility of the hint writer, because this super-global behaviour is clearly a bug...
Yes, but what I mean is if we want people to migrate to a saner default, the option you are talking about now would have been more useful than the one we have currently, IMHO.
Should I open an issue for the new option?
from stdlib2.
Please open the issue.
from stdlib2.
Related Issues (17)
- Stdlib2 license HOT 4
- Plan for backwards compatibility and deprecation HOT 3
- Policy for the superficial layout (spacing, newlines, ...). HOT 5
- Make the roadmap of the library more explicit and add dates HOT 5
- discussion of modularity mechanisms HOT 7
- Finite maps and finite sets HOT 3
- Universes HOT 10
- Naming conventions HOT 10
- Compatibility with std++ ? HOT 3
- Should auto-generated schemes be moved inside there own modules/records HOT 2
- It seems I have a short proof of P=NP - check it HOT 2
- What should go in the prelude? HOT 6
- one smallest partial equivalence relation for each type HOT 12
- all functions should come with parametricity proofs HOT 2
- What should go in stdlib? HOT 10
- Add a README and a CONTRIBUTING guide even before there is code.
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from stdlib2.