-
Notifications
You must be signed in to change notification settings - Fork 433
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
feat: decide +revert
and improvements to native_decide
#5999
Conversation
This PR adds configuration options for `decide`/`decide!`/`native_decide` and refactors them to be frontends to the same tactic. Adds a `+revert` option that cleans up the local context and reverts all local variables the goal depends on, along with indirect propositional hypotheses. Makes `native_decide` fail at elaboration time on failure without sacrificing performance (the decision procedure is still evaluated just once).
structure DecideConfig where | ||
/-- If true (default: false), then use only kernel reduction when reducing the `Decidable` instance. | ||
This is more efficient, since the default mode reduces twice (once in the elaborator and again in the kernel), | ||
however kernel reduction ignores transparency settings. The `decide!` tactic is a synonym for `decide +kernel`. -/ |
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.
Maybe decide!
is young enough that we can remove it in favor of the more explicit, but still convenient, decide +kernel
syntax? Or is decide!
fundamental enough that it deserves the short form/
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.
That makes sense deprecating decide!
, since !
is not really evocative of doing kernel reduction. I'll leave that for a future PR.
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.
Sure. But still before the next stable release?
This PR adds configuration options for
decide
/decide!
/native_decide
and refactors the tactics to be frontends to the same backend. Adds a+revert
option that cleans up the local context and reverts all local variables the goal depends on, along with indirect propositional hypotheses. Makesnative_decide
fail at elaboration time on failure without sacrificing performance (the decision procedure is still evaluated just once). Nownative_decide
supports universe polymorphism.Closes #2072