-
Notifications
You must be signed in to change notification settings - Fork 18
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
Higher-order constants can be used to prove false #147
Comments
This is not completely fixed. Negative instances of |
I managed to minimize the script and the proof I found, the idea is still based on Russel's paradox in naive set theory (hence the names):
(Edit: tested in commit #74770b6d1dff51084c3ec5d73b86d9293047bfaf, and as expected also this shortened proof no longer works there, unless prop is hidden inside polymorphism.) |
No, it still works if you have As I understand it, @gnadathur97's suggestion is to instead prevent definitions such as For now I will just add a warning for this kind of definition. Preventing such definitions will break some existing examples that use "higher-order" definitions that were used as a shortcut to a decent module system in Abella. |
I'm pleased to hear that the solution will be to generate warnings somewhere along the way: it's nice to be able to experiment with parameters that contain prop. |
Related to #147 though not yet a complete fix.
The new version just emits a warning and lists all the higher-order parameters. Not yet sure which scenarios are definitely errors and which are in some kind of grey area. |
Closing this. Please comment if you discover anything else strange. |
This is a slightly edited summary of an email from @gnadathur97:
The text was updated successfully, but these errors were encountered: