There are indications that unused axioms and declarations sometimes slow down verification. On top of that, they make our generated Boogie files daunting to read, especially for novice users.
I think we should be generating only axioms and declarations that are actually needed for a given file. The analysis should be simple and purely syntactical, not semantical. For example, we generate iN integer axioms for a large set of Ns, most of which are typically needed. With the recent move to generate prelude from Python, this should be doable.
I suggest we track all integer types as they are being generated by llvm2bpl, and we only generate axioms for the types that actually appear in the program.
Symbooglix has a pass to remove unused axioms and declarations. Although that pass is buggy, since we add Symbooglix to the support, can we add an option to invoke this pass before verification?
There are indications that unused axioms and declarations sometimes slow down verification. On top of that, they make our generated Boogie files daunting to read, especially for novice users. I think we should be generating only axioms and declarations that are actually needed for a given file. The analysis should be simple and purely syntactical, not semantical. For example, we generate iN integer axioms for a large set of Ns, most of which are typically needed. With the recent move to generate prelude from Python, this should be doable.
I suggest we track all integer types as they are being generated by llvm2bpl, and we only generate axioms for the types that actually appear in the program.