-
Notifications
You must be signed in to change notification settings - Fork 76
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
Add option to store local results of Apron-Analysis for comparison #433
Conversation
…rialize test function
…analysis should be stored for late comparison. The comparison can be performed with apronPrivPrecCompare
|
Currently the CI fails for all non-apron builds because some util module depends on the Apron stuff. That probably should be separated. |
…PrecCompare and privPrecCompare
…arate util files. This is necessary because code depending on apron should be separated.
The utility module for the apron precision comparison is now moved to a separate module using an optional apron dependency, so that should be fixed. |
Co-authored-by: Simmo Saan <simmo.saan@gmail.com>
…ron manager in Goblint. Deserialization of apron results is not performed in Goblint itself, but only in apronPrecCompare. The deserialization manager is getting intialized there already, so this code is no longer needed.
… used there. Explain why name () is overriden.
This PR adds an option to store apron analysis results in a file, such that different analysis runs can be compared using the
apronPrivPrecCompare
program that is introduced and based onprivPrecCompare
.Storing the results of the Apron analysis is activated by setting the string option for
"exp.apron-prec-dump"
to a non-empty string, which will be used as the file name.Apron does not offer serialization for its Intervals ("Boxes") and Polyhedra ("Polka").
We thus convert the Apron domain used in the analysis to the octagon domain before serialization. This is done via a conjunction of linear constraints(see here and here, i.e. with
to_lincons_array
andof_lincons_array
).What is stored / compared
The results for the analysis are stored per program node. Results for different contexts but the same node are joined together. Results of global unknowns are not stored.
What still needs to be done
Storing the results (done in
finalize
) should only be done in thepostsolving
stage.However, when adding such a check, the code is not called. Maybe one needs to change some configuration?
How to test
The comparison program
apronPrivPrecCompare
apronPrecCompare
is built with:The comparison then can be tested on a simple example as follows:
Closes #423