-
Notifications
You must be signed in to change notification settings - Fork 123
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
:prove exhausts memory on a small number of cases #128
Comments
I haven't looked into this in any detail, but, it could be a symbolic termination problem. I am guessing this because |
This might be a symbolic termination problem, as you say, or it might be that the data structures and algorithms used by the symbolic simulator for infinite streams are too strict. I'll have a closer look the next time I'm in the office. |
I've looked over the code again and I don't think this is a symbolic termination problem. If it were, setting |
Here's the minimal example I came up with:
|
Not a bug, but surprising: you'd think that
:prove
could handle something that:exhaust
says has 4 cases, or 8 cases, but on my machine it just exhausts all avaliable memory. Here's the code, a pointless attempt to implement 2-adic arithmetic in infinite lists:Now
works fine,with 2 cases, and I can exhaust or check small instances. Similarly for dividesOK; with small n there is a smallish number of cases and exhaust and check work fine. Computation with these definitions is also fine. However,
and
just gobble up all available memory - about 6GB on my machine. This seems odd! I'll guess there's something funny about how
:prove
deals with recursions.The text was updated successfully, but these errors were encountered: