Incomplete reasoning about exponentiation with respect to exhaustiveness checking #1796
Labels
bug
Something not working correctly
type-guards
typechecker
Issues related to type-checking Cryptol code.
In certain cases, Cryptol's exhaustiveness checker for numeric constraint guards incorrectly deems sets of guards to be inexhaustive when they involve exponentiation. Here is a program with some relevant examples:
I would expect all of the functions above to be marked as exhaustive, but Cryptol does not do so for the functions prefixed with
nonExhaustive*
:My understanding is that the typechecker's reasoning about the behavior of exponentiation is necessarily incomplete, but it does feel like we could do better in these specific examples.
The text was updated successfully, but these errors were encountered: