Executing a Portfolio of Runs via Script#1845
Conversation
arkocal
left a comment
There was a problem hiding this comment.
Looks good to me, actual config to come, of course.
|
There's one important point that I was reminded of but didn't get around to checking myself yet: the tool version lookup in BenchExec will now invoke |
In case that there is no portfolio-config present, the runner just forwards everything as is to ./goblint. I also tested this a minute ago, and it works. |
If I remember correctly, this is already accounted for. |
So is there something still being done? If not, then I would merge this and integrate it into a new SV-COMP artifact. |
|
Yesterday, @arkocal and @DrMichaelPetter had a discussion whether the behavior of As I understand, currently, this script might produce output containing multiple Anyways, since this currently works, this may not be a blocker. |
|
How multiple verdicts are treated is determined by our tool-info module in BenchExec here: https://github.com/sosy-lab/benchexec/blob/ecc0f2cec0095c80684037b2b3f875d508571960/benchexec/tools/goblint.py#L89-L116. |
CHANGES: Functionally equivalent to Goblint in SV-COMP 2026. * Add sequential portfolio for SV-COMP (goblint/analyzer#1845, goblint/analyzer#1867, goblint/analyzer#1877). * Add struct bitfield support (goblint/analyzer#1739, goblint/analyzer#1823). * Improve bitwise operations for integer domains (goblint/analyzer#1739). * Reimplement HTML output in OCaml (goblint/analyzer#1752). * Remove YAML witness version 0.1 support (goblint/analyzer#1812, goblint/analyzer#1817, goblint/analyzer#1852, goblint/analyzer#1853, goblint/analyzer#1855). * Fix incorrect invariants in witnesses (goblint/analyzer#1818, goblint/analyzer#1876). * Simplify relational invariants in witnesses (goblint/analyzer#1826, goblint/analyzer#1871, goblint/analyzer#1873). * Fix argument types in Goblint stubs (goblint/analyzer#1684, goblint/analyzer#1814, goblint/analyzer#1779, goblint/analyzer#1820).
in SVCOMP, we want to start our analysis with a cheap config, and refine with increasingly more expensive but more capable configurations until we solve this task. This PR adds a python script to iterate through a list of configurations, until we either run out of options, encounter an error or find a verdict different from
unknown.In detail, we get the script
goblint_runner.py, which delegates control togoblintwith all of its parameters. Only as soon as we start using parameter--portfolio-conf [FILE]the script starts its iteration through the lines of[FILE]. Each line contains a set of parameters for a goblint run. In particular, we would expect to see a value parameter--confper line.