-
Notifications
You must be signed in to change notification settings - Fork 637
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
Transparent abstract #201
Transparent abstract #201
Conversation
c655892
to
8b6f53d
Compare
The code looks OK to me, and I find the feature useful. Nonetheless, I though that the general trend promoted by @gares was to get rid of abstract rather than using it more... |
Why 8.6? It was not in the road map was it? |
That is right, I assumed it was and categorized it carelessly. Changing the tag then. |
913d886
to
97e6990
Compare
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.
The code works if using ...
is not given. Otherwise I get an interpretation error. @maximedenes and @ppedrot may clarify the ident
v.s. preident
mess.
The feature should be marked as "use at your own risk" for the following reasons:
- building relevant (as in computationally relevant) terms with tactics is fragile and should not be recommended (e.g. recent regression in unimath in the econstr branch)
- abstract cannot play well with asynchronous proofs, so scripts full of
abstract .. using ...
are doomed to be processed slower.
It also seems that there was a blacklist for .*_subproof
and this patch introduces a .*_subterm
class of definitions. Not sure we want to see these as results of Search
.
I was thinking of proposing some modifications on how abstract is handled, so maybe we could wait a bit on the decision for this PR? |
97e6990
to
3acff19
Compare
Done
Added
@ejgallego Can you say more?
I can't reproduce. The test-suite file includes a test case for |
3acff19
to
f7cbb21
Compare
The idea won't be concrete at least until the next WG, but I was thinking of replacing side-effects with proof-local environments, such that:
this builds on the functional state handling patch for the STM. However I lack the necessary knowledge to see it the above proposed approach is a) workable and b) desirable. |
What about Regardless, |
In defined proofs you indeed must propagate the full modified env. Right now the mechanism relies on static analysis, but I'd like to experiment with futures. Thus, for the case of I think indeed the ideas I outlined above are orthogonal to this patch, but I wanted to be sure that there is no conflict. |
@JasonGross travis says that doc building is broken . |
f7cbb21
to
e382614
Compare
Sorry for the delay. I've updated the docs to replace |
e382614
to
19ef5ce
Compare
c6bfd63
to
1f16cbb
Compare
Rebased on top of newly-merged econstr. Any update on the status of merging this? |
Also move named arguments to the beginning of the functions. As per coq#201 (comment)
This is a small change that allows a transparent version of tclABSTRACT. Additionally, it factors the machinery of [abstract] through a plugin-accessible function which allows alternate continuations (other than exact_no_check. It might be nice to factor it further, into a cache_term function that caches a term, and a separate bit that calls cache_term with the result of running the tactic.
As per Enrico's request.
This will allow a cache_term tactic that doesn't suffer from the Not_found anomalies of abstract in typeclass resolution.
Also move named arguments to the beginning of the functions. As per coq#201 (comment)
09c3b21
to
e4262a8
Compare
Bump. Any update on this? |
@maximedenes please remove the fix_needed tag |
@ejgallego @gares do you confirm this is ok for you? If yes, I'll merge it. |
Based on my understanding of the current situation and roadmap, this patch is fine for me. However, as @gares said, I would mark this tactic "use at your own risk/experimental". People relying on this should be willing to deal with a possibly unstable feature. |
@ejgallego is the current warning in the refman insufficient? |
Personally that's OK for me, but I wonder what is the general policy here wrt experimental features. Maybe we should keep a list ? |
Thanks! |
Also move named arguments to the beginning of the functions. As per coq#201 (comment)
This is a small change that allows a transparent version of
tclABSTRACT
.Additionally, it factors the machinery of
abstract
through aplugin-accessible function which allows alternate continuations (other
than
exact_no_check
), and allows alternate types (other than the type of the current goal).It might be nice to have a better interface for caching terms. The use-case of
cache_term_by_tactic_then
is something likeI've separated this out into three commits: one which gives
tclABSTRACT
an option for transparent lemmas, one which makes atransparent_abstract
tactic, and one which allows Fiat's plugin to not need typeclass hackery to cache terms. I'd like this to get merged into 8.6.