Closed joe-hauns closed 1 month ago
(running regression tests right now)
Shall I hold off on this while the bugs are fixed? Ping me when it's ready.
Could I please also have a look before it goes in?
Added you so I can't forget.
@joe-hauns, are you also doing some random tptp/smtlib testing?
Also, just out of curiosity, what are some typical use-cases of this new functionality for you?
Okay so I can't find any significant difference to the behaviour in master anymore. So it's good to review :)
@joe-hauns, are you also doing some random tptp/smtlib testing?
Yess i ran random strategies to look for errors. Couldn't find any bugs that were not already present in master. Also i ran in portfolio mode over a randomized subset of smtlib and we get the same results up to random fluctuations.
Also, just out of curiosity, what are some typical use-cases of this new functionality for you?
Forward tracing: Sometimes I think I can proof something on paper, but vampire can't find the proof. In that case I go through the newly derived clauses step by step and see whether vampire does the same thing as I do, so I can figure out where exactly vampire behaves different from my expectations. Doing this looking at all the new clauses is very long given the amount of clauses derives. This feature lets you look at some relevant subset of all newly derived clauses, to do the same thing much quicker.
Backward tracing: Sometimes looking at what vampire generates i see some rubbish clauses and I wonder how they came about. For that It's useful to see how they've been derived so I can understand what's going on.
(probably-trivial merge conflicts from #566)
This PR implements debugging functionality to easily trace consequences of clauses. Added options:
--trace_fwd <clause-id>
: vampire will output all clauses that are derived from the given clause--trace_bwd <clause-id>
: vampire will output all clauses that have been used to derive the given clause. the output is tree-like structured The clause tracing is implemented directly in theClause
constructor and will be complied-away in Release mode. In order to implement this the clause constructor had to be refactored a little bit which simplified the codebase overall.Examples: