-
Notifications
You must be signed in to change notification settings - Fork 4
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
Show steps for successful proof #30
Comments
Indeed, I recently added the number of steps to the output (see xref_#26 branch), but no sorting yet. The problem with steps is that the number is very prover specific, so you can't really just add them up to a total number or otherwise mix them, that was also the reason why I started focusing on the time values reported, they are far more reliable for comparisons even though they are very machine specific. For example:
While Z3 is reporting about 11.6 M and 6 M steps (that's roundabout 1.4 M steps/s), CVC4 only reports 505 k each (so roughly 9 k steps/s), but the time taken can be magnitudes more than the number of steps let you believe. If you just add them, the number of steps reported for Z3 would be 17.6 M, with the steps added from CVC4 the total number would increase to about 18.6 M, which - due to the fact that the steps/s value is vastly different - doesn't say much about the actual difference in computing time. To solve that, I'd probably need to introduce some kind of scaling factor and report a number of "virtual steps" instead. But then again, you could just use the time value, because that's what it will be then, just recalculated as steps. |
Yes, it is unfortunate that the steps are very prover specific. I think it would still make sense to determine the maximum number of required steps over all provers. I suppose there will not always be an optimal order of provers for an unit, so that no prover fails. In such a case knowing the maximum number of steps allows to add a steps limit to the unit which may lead to an earlier failing prover. For example:
Adding |
I link that to #26 for now, I don't see why finding the optimal configuration should not take the steps into account. At the very least it could output the number of steps that need to be configured for any configuration it finds. |
Is there a reason for showing the steps only with |
No real reason other than that I initially focused on reported times and added the steps later in development. |
Issue #61 opened for the latest specific request to properly keep track of changes. |
Is your feature request related to a problem? Please describe.
While reducing
--timeout
to improve the proof time is a valid option, it is not very reliable when GNATprove is executed on machines with very different computing power. A reproducible proof setting is especially important when GNATprove is regularly run on external machines with unknown resources (e.g., a CI provider). That is why I usually prefer to use--steps
instead (or in combination with a high timeout). Unfortunately, SPAT doesn't analyze proof steps.Describe the solution you'd like
The steps could be shown along with the time. For example:
It should be also possible to sort the output by the number of steps, so that the most difficult units of the whole project can be easily seen.
The text was updated successfully, but these errors were encountered: