You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Reduced the issue to a self-contained, reproducible test case.
Description
Using native_decide in #check can trick #check into believing something is well-typed when it shouldn't be, The following code doesn't raise any error:
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. Makes `native_decide` fail
at elaboration time on failure without sacrificing performance (the
decision procedure is still evaluated just once). Now `native_decide`
supports universe polymorphism.
Closes#2072
…r#5999)
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. Makes `native_decide` fail
at elaboration time on failure without sacrificing performance (the
decision procedure is still evaluated just once). Now `native_decide`
supports universe polymorphism.
Closesleanprover#2072
Prerequisites
Description
Using
native_decide
in#check
can trick#check
into believing something is well-typed when it shouldn't be, The following code doesn't raise any error:#check show False by native_decide
See associated Zulip thread
Steps to Reproduce
Expected behavior:
#check
should reject this and give an errorActual behavior:
#check
acts as if the term produced was well-formed, and prints this:Reproduces how often:
100%
Versions
4.0.0-nightly-2023-01-16
Windows 11
The text was updated successfully, but these errors were encountered: