This is the official SMT-COMP benchmark scrambler, used as a pre-processor for all tracks of SMT-COMP.
Benchmarks that contain deeply nested terms require a large stack to be scrambled. (This is caused by the recursive implementation of benchmark printing, which recurses over each term's parse tree.) The default stack size of 8192 KB on Linux systems is sufficient for terms with a depth of about 80,000. Some benchmarks in SMT-LIB do contain more deeply nested terms. To process such benchmarks, the stack limit needs to be increased (using, e.g., `ulimit -s 1048576) before the scrambler is invoked. Otherwise, the scrambler may cause a segmentation fault.
See process.single-query-challenge-track.
ulimit -s 1048576
./scrambler -seed <seed> < <benchmark>
See process.incremental-track.
# extract the expected results of check-sat commands and prepend them
# to the scrambled benchmark (in their original order) -- this format
# is expected by the trace executor
grep 'set-info :status' "$1"|sed 's/(set-info :status \(.*\))/\1/'
echo "--- BENCHMARK BEGINS HERE ---"
ulimit -s 1048576
./scrambler -seed <seed> < <benchmark>
ulimit -s 1048576
./scrambler -seed <seed> -gen-model-val true < <benchmark>
ulimit -s 1048576
./scrambler -seed <seed> -gen-unsat-core true < <benchmark>