You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
I'm working on a tool that profiles SAT solvers. I'd like to have a map from variables in a goto program to their corresponding SAT literals so that I can log which areas of a goto program the SAT solver is spending the most time. When I print out the DIMACS for a given C file, there is a variable to literal mapping, but it doesn't seem to map all of the literals in the SAT problem. Is there a way that I can log the rest of the literals and the constructs that they represent? I figure that the unused literals are used for scaffolding the problem in CBMC, but I'm not sure.
Produces the below variable to literal mapping in the DIMACS. This is very close to what I'm after and includes all of the goto variables that were generated. But it raises a few questions.
First, what does it mean for a variable to be full of FALSE or TRUE? I've seen in solvers/flattening/bv_dimacs.cpp that this means that the variable is constant, but does that mean it is not represented in the SAT problem at all?
Second, what does it mean for variables to share regions of literals? read_pointer::i!0@1#1, read_buffer::i!0@1#1, and main::1::index!0@1#1 all share the same literal representation.
Finally, how do I interpret the "missing" literals in the range 35-166 and 231-553? It seems these literals are important as they appear in the generated clauses, but they don't map to any goto variables.
I'm working on a tool that profiles SAT solvers. I'd like to have a map from variables in a goto program to their corresponding SAT literals so that I can log which areas of a goto program the SAT solver is spending the most time. When I print out the DIMACS for a given C file, there is a variable to literal mapping, but it doesn't seem to map all of the literals in the SAT problem. Is there a way that I can log the rest of the literals and the constructs that they represent? I figure that the unused literals are used for scaffolding the problem in CBMC, but I'm not sure.
To take a concrete example, the following C file:
Produces the below variable to literal mapping in the DIMACS. This is very close to what I'm after and includes all of the goto variables that were generated. But it raises a few questions.
First, what does it mean for a variable to be full of
FALSE
orTRUE
? I've seen insolvers/flattening/bv_dimacs.cpp
that this means that the variable is constant, but does that mean it is not represented in the SAT problem at all?Second, what does it mean for variables to share regions of literals?
read_pointer::i!0@1#1
,read_buffer::i!0@1#1
, andmain::1::index!0@1#1
all share the same literal representation.Finally, how do I interpret the "missing" literals in the range 35-166 and 231-553? It seems these literals are important as they appear in the generated clauses, but they don't map to any goto variables.
Thanks for your help!
The text was updated successfully, but these errors were encountered: