I am working in Z3 with extremely large formulae, so there is no way I can analyze them (indeed, printing them is hard). Thus, I would like to perform some high-level analysis using tools that Z3 may have.
Concretely, consider I have a formula phi and I perform simplify(phi). Is there any way I can measure the size of both formulae? Of course, there are different notions of size, but is there anyone built-in? I basically want to know if the application of simplify(phi) has modified the formula (since I am aware that using simplify(phi) does not guarantee anything [1,2]).
[1] How to simplify Or(Not(y), And(y, Not(x))) to Or(Not(y), Not(x)) with Z3? [2] Simplification with Z3 does not simplify as much as expected
Probes might be what you are searching for.
Probes allow for checking various measures related to a goal in Z3, and many different types of measures over the goals are implemented. [1]
Assuming you are interfacing to Z3 through the Python API, you can obtain a list of available probes through the command:
Here is an example of usage of probes in Z3py:
[1] https://microsoft.github.io/z3guide/docs/strategies/probes/