I obtained several statistics from runs of Z3. I need to understand what these mean. I am rather rusty and non up to date for the recent developments of sat and SMT solving, for this reason I tried to find explanations myself and I might be dead wrong. So my questions are mainly:
1) What do the measures' names mean?
2) If wrong, can you give me pointers to understand better to what they refer to?
Other observations are made below and conceptually belong to the two questions above. Thanks in advance!
My interpretation follows.
DPLL. All the metrics below refer to the jargon of the DPLL algorithm which is the foundation of most solvers.
- :decisions
- Number of decisions
- :propagations
- Number of propagations (I guess unit propagations)
- :binary-propagations, :ternary-propagations
- Propagations of two and three literals at once
- :conflicts
- Number of conflicts
- :decisions
RESOLUTION. Operations made interpreting clauses as sets, roughly speaking; techniques taken from resolution which is another paradigm for solving SAT.
- :subsumed
- :subsumption-resolution
- What is the difference between the above two?
- :dyn-subsumption-resolution
- Should be described here: Learning for Dynamic Subsumption, by Hamadi et al.
OTHER TECHNIQUES
- :minimized-lits
- No clear idea. Is it probably related with clause learning?
- :probing-assigned
- I guess it counts the number of assignment made when "probing", which I guess is some kind of lookahead technique.
- :del-clause
- Number of deleted clauses (for what reason? Redundant?)
- :elim-literals :elim-clauses :elim-bool-vars :elim-blocked-clauses
- Number of entities after the elim- eliminated. These metrics refer to particular SAT solving techniques (see for reference Blocked Clause Elimination, by M.Järvisalo et al.)
- :restarts
- Number of restarts.
- :minimized-lits
OTHER ASPECTS
- :mk-bool-var :mk-binary-clause :mk-ternary-clause :mk-clause
- Number of boolean variables and binary,ternary and generic clauses created.
- :memory
- Maximum amount of memory used.
- :gc-clause
- Garbage-collected clauses ...?
- This interpretation is plausible according to my experiments since it's always the case that
- :gc-clause <= :del-clause ; in my case the disequality is strict.
- It is not always the case that
- :gc-clause<=:elim-clauses; it can also be :gc-clause > :elim-clauses
- :mk-bool-var :mk-binary-clause :mk-ternary-clause :mk-clause