A property-driven tool for suggesting fence insertion using CBMC.
cbmc-repair.tgz in a directory.src/config.incCOMPILING.cbmc --repair value [options] filename.c--repair is mandatory with valid values being tso:sc or pso:sc. Thus a command would look like cbmc --repair tso:sc filename.c--no-early-termination (ROBMC)--no-reorder-optimization. (FI)--trace-enum. (TE)--trace-enum, --no-reorder-optimization and --no-early-termination should be used.--no-early-termination one can use --minbound NUM to specify the initial bound for ROBMC.for(i=0;i<10;i++) CBMC automatically figures out the unrolling depth for the loops.--unwind NUM unrolls all the loops to the depth given by NUM.--no-unwinding-assertions.--unwindset loop1:depth1,loop2:depth2loop1, loop2 in --unwindset run cbmc --show-loops filename.c. The identifiers will be of the form c::methodname.0EXEC variable in the script to point to the cbmc executable in src/cbmc folder.bash benchmark-gen.sh NUM to generate a C file of benchmark with parametric fragment added NUM times.n from 2 to 40 and parameter K1 from 2 to 40. Adjust these parameter bounds using variables paramsize and k1size variables. Depending upon the bounds given, running all the experiments may take several days.Saurabh Joshi and Daniel Kroening Email : firstname.lastname@cs.ox.ac.uk