<!DOCTYPE HTML>

<html>
<head>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8">

<style type="text/css">
  <!--
  table { outline:3px solid black; border-spacing:0px; font-family:arial, sans serif}
  thead { text-align:center}
  tbody { text-align:right}
  tfoot { text-align:center}
  tr:hover { background-color:yellow}
  td { border:1px solid black}
  td:first-child { text-align:left; white-space:nowrap}
  tbody td:first-child { font-family: monospace; }
  #options td:not(:first-child) {  text-align:left; font-size: x-small;
                                   font-family: monospace; }
  .columnTitles td:first-child { font-family: monospace; font-size: x-small; }
  tbody tr:first-child td { border-top:3px solid black}
  tfoot tr:first-child td { border-top:3px solid black}
  .status { text-align: center; }
  .correct.safe, .correct.unsafe { color:green}
  .wrong.safe, .wrong.unsafe { color:red; font-weight: bold; }
  .unknown { color:orange; font-weight: bold; }
  .error { color:magenta; font-weight: bold; }
  .score { text-align:center; font-size:large; font-weight:bold; }
  a { color: inherit; text-decoration: none; display: block; }
  a:hover, .clickable:hover { background: lime; cursor: pointer; }

  #contentPaneBackground { height:5000px; width:5000px;
           position:fixed; top:0px; left:0px;
           background-color:green;
           opacity:0.2; display:none }
  #contentPane {
    height:90%; width:90%;
    position:fixed;
    top:5%; left:5%;
    border:solid 10px black; border-radius:15px;
    background-color:white;
    opacity:1;
    display:none;
    overflow:auto;
  }

@media print {
  /* don't print tfoot on each page */
  tfoot { display: table-row-group; }
}

  -->
</style>


<!-- ################## Base JS ################## -->

<script type="text/javascript" src="http://www.sosy-lab.org/lib/jquery-1.7.1.min.js"></script>

<script type="text/javascript">

// All the data from the table head in nice JS data structures.
var tests = [{"name": "with-output-files", "cpuCores": null, "memlimit": "12000 MB", "benchmarkname": "benchmark-cpachecker-heap-manipulation-predicate-replace", "tool": "CPAchecker", "ram": "16385312 kB", "cpu": "Intel(R) Core(TM) i7-3770 CPU @ 3.40GHz", "timelimit": "300 s", "host": "molnar", "version": "1.2-svn e5c9ef1+", "branch": "", "date": "13-08-23 15:53", "cores": "4", "freq": "3401 MHz", "os": "Linux 3.2.0-52-generic x86_64", "options": "-heap 9000M -config /home/mikhail/repos/cpachecker/config/predicateAnalysis-PredAbsRefiner-ABEl.properties -spec /home/mikhail/repos/cpachecker/config/specification/sv-comp.spc -setprop output.path=test/results/${benchmark_name}.${benchmark_date}.output/${sourcefile_name}/ -setprop analysis.machineModel=LINUX32 -setprop cpa.predicate.memoryAllocationsAlwaysSucceed=true -setprop output.disable=true -setprop log.level=OFF -setprop cpa.predicate.refinement.dumpInterpolationProblems=false -setprop analysis.summaryEdges=true -setprop analysis.functionPointerCalls=true -setprop cpa.callstack.skipRecursion=true -setprop cpa.conditions.global.time.wall=-1 -disable-java-assertions"}, {"name": "with-output-files", "cpuCores": null, "memlimit": "12000 MB", "benchmarkname": "benchmark-cpachecker-heap-manipulation-predicate", "tool": "CPAchecker", "ram": "16385312 kB", "cpu": "Intel(R) Core(TM) i7-3770 CPU @ 3.40GHz", "timelimit": "300 s", "host": "molnar", "version": "1.2-svn e5c9ef1+", "branch": "", "date": "13-08-23 15:59", "cores": "4", "freq": "3401 MHz", "os": "Linux 3.2.0-52-generic x86_64", "options": "-heap 9000M -config /home/mikhail/repos/cpachecker/config/predicateAnalysis-PredAbsRefiner-ABEl-bv.properties -spec /home/mikhail/repos/cpachecker/config/specification/sv-comp.spc -setprop output.path=test/results/${benchmark_name}.${benchmark_date}.output/${sourcefile_name}/ -setprop analysis.machineModel=LINUX32 -setprop cpa.predicate.memoryAllocationsAlwaysSucceed=true -setprop output.disable=true -setprop log.level=OFF -setprop cpa.predicate.refinement.dumpInterpolationProblems=false -setprop analysis.summaryEdges=true -setprop analysis.functionPointerCalls=true -setprop cpa.callstack.skipRecursion=true -setprop cpa.conditions.global.time.wall=-1 -disable-java-assertions"}, {"name": "with-output-files", "cpuCores": null, "memlimit": "12000 MB", "benchmarkname": "benchmark-cpachecker-heap-manipulation-ppreds-integrated", "tool": "CPAchecker", "ram": "16385312 kB", "cpu": "Intel(R) Core(TM) i7-3770 CPU @ 3.40GHz", "timelimit": "300 s", "host": "molnar", "version": "1.2-svn e5c9ef1+", "branch": "", "date": "13-08-22 20:21", "cores": "4", "freq": "3401 MHz", "os": "Linux 3.2.0-52-generic x86_64", "options": "-heap 9000M -config /home/mikhail/repos/cpachecker/config/predicateAnalysis-PredAbsRefiner-ABEl-UF.properties -spec /home/mikhail/repos/cpachecker/config/specification/sv-comp.spc -setprop output.path=test/results/${benchmark_name}.${benchmark_date}.output/${sourcefile_name}/ -setprop analysis.machineModel=LINUX32 -setprop cpa.predicate.memoryAllocationsAlwaysSucceed=true -setprop output.disable=true -setprop log.level=OFF -setprop cpa.predicate.refinement.dumpInterpolationProblems=false -disable-java-assertions"}, {"name": "with-output-files", "cpuCores": null, "memlimit": "12000 MB", "benchmarkname": "benchmark-cpachecker-heap-manipulation-ppreds-integrated-replace", "tool": "CPAchecker", "ram": "16385312 kB", "cpu": "Intel(R) Core(TM) i7-3770 CPU @ 3.40GHz", "timelimit": "300 s", "host": "molnar", "version": "1.2-svn e5c9ef1+", "branch": "", "date": "13-08-23 14:27", "cores": "4", "freq": "3401 MHz", "os": "Linux 3.2.0-52-generic x86_64", "options": "-heap 9000M -config /home/mikhail/repos/cpachecker/config/predicateAnalysis-PredAbsRefiner-ABEl-UF-replace.properties -spec /home/mikhail/repos/cpachecker/config/specification/sv-comp.spc -setprop output.path=test/results/${benchmark_name}.${benchmark_date}.output/${sourcefile_name}/ -setprop analysis.machineModel=LINUX32 -setprop cpa.predicate.memoryAllocationsAlwaysSucceed=true -setprop output.disable=true -setprop log.level=OFF -setprop cpa.predicate.refinement.dumpInterpolationProblems=false -disable-java-assertions"}];   // list with the attributes of all run sets
var columns = [["status", "cputime", "walltime", "memUsage", "total", "reached"], ["status", "cputime", "walltime", "memUsage", "total", "reached"], ["status", "cputime", "walltime", "memUsage", "total", "reached"], ["status", "cputime", "walltime", "memUsage", "total", "reached"]]; // nested list with all the columns headings
var columnsToTest = [];         // for each column of the table the test it belongs to (first column is 0)

for (var i = 0; i < columns.length; i++) {
  tests[i].columns = columns[i];
}
for (var i = 0; i < tests.length; i++) {
  for (var j = 0; j < tests[i].columns.length; j++) {
    columnsToTest.push(tests[i]);
  }
}

var currentlySelectedCell = null;

// callback that is fired when user clicks on cellsWithUrls (see down below)
function highlightCell(event) {
  var target = event.target;
  if (target.nodeName === 'A') {
    target = target.parentNode;

    // unhighlight currentlySelectedCell
    if (currentlySelectedCell != null) {
      currentlySelectedCell.style.borderColor = 'black';
    }

    // highlight cell that has been just clicked on
    target.style.borderColor = 'red';
    currentlySelectedCell = target;
  }
}

function debug(logInfo) {
  if (!true) {
    console.log(logInfo);
  }
}

function showContentPane() {
  // add function for cleanup, first unbind any old function
  $('#contentPaneBackground').unbind().click(hideContentPane).show();
  $('#contentPane').show().focus();
}

function hideContentPane(event) {
  // hide the content pane on mouse click outside the content pane
  // or when pressing the "Esc" or "c" key with the content pane focused
  if (event.type == "click" || escKeyPressed(event) || cKeyPressed(event)) {
    $('#contentPaneBackground').hide();
    $('#contentPane').hide().empty();
  }
}

function escKeyPressed(event) {
  return event.keyCode == 27;
}

function cKeyPressed(event) {
  // only "c" is pressed, not in combination with Ctrl-key
  return (event.keyCode == 67 && event.ctrlKey == false);
}

function fKeyPressed(event) {
  // only "f" is pressed, not in combination with Ctrl-key
  return (event.keyCode == 70 && event.ctrlKey == false);
}

// input: the index of the column in the table
function getNameOfTest(column) {
  var test = columnsToTest[column-1];
  return getNameOfTestDirect(test);
}

function getNameOfTestDirect(test) {
  return test.tool + ' '
       + (test.date ? test.date + ' ' : '')
       + test.name
       + (test.benchmarkname ? '.' + test.benchmarkname : '');
}

$(document).ready(function() {
  $('body').keydown(hideContentPane);
});

</script>


<!-- ################## Make links load via AJAX and show content in extra panel ################## -->

<style type="text/css">
  #contentPane > pre#content {
    width: 100%;
    height: 100%;
    margin: 0;
  }
</style>

<script type="text/javascript">

function loadContentWrapper(event) {
  var url = $(event.target).attr("href");
  loadContent(url);
  return false;
}

function loadContent(url) {
  var contentPane = $('<pre id="content"></pre>').appendTo("#contentPane")

  $.ajax({
    async: false, // wait for isError
    url: url,
    cache: false,
    dataType: "text",
    beforeSend: function() {
      showContentPane();
      contentPane.html("loading...");
    },
    success: function(text) {
      newtext = text.replace(/&/g, "&")
                    .replace(/"/g, """)
                    .replace(/</g, "<")
                    .replace(/>/g, ">")
                    .replace(/\\n/g, "<br>");
      contentPane.html(newtext);
    },
    error: function() {
      contentPane.html("error while loading content.<br>" +
        "this could be a problem of the 'same-origin-policy' of your browser.<br><br>" +
        "only firefox seems to be able to access files from local directories<br>" +
        "and this works only if the file is in the same directory as this website.<br><br>" +
        "you can try to download the file: <a href=" + url + ">" + url + "</a>");
    },
  });
}

$(document).ready(function() {
  var cellsWithUrls = $('a');
  cellsWithUrls.each(
    function(index, elem) {
      $(elem).click(highlightCell).click(loadContentWrapper);
    });
});
</script>


<!-- ################## Possibility to select displayed columns by clicking on left-most cell in title row ################## -->

<style type="text/css">
  #toggleTable { margin: auto; }
  #toggleTable td { padding-bottom: 5px; padding-top: 5px; }
  #toggleTable tr:hover { background-color: transparent; }
  #toggleTable tbody td:first-child { font-family: arial, sans serif; }
  #toggleTableWrapper { height: 100%; overflow: auto; width: 100%; }
  .hiddenCell { background: red; }
  .visibleCell { background: green; }
  .clickableCell:hover { opacity: 0.5; cursor: pointer; }
</style>

<script type="text/javascript">

// a two-dimensional array of all the cells in the table header,
// but each cell occurs as often in a row as its colspan attribute says
var headerAndFooterArray = null;

function createHeaderAndFooterArray() {
  headerAndFooterArray = [];
  var rows = $('#dataTable > thead > tr, #dataTable > tfoot > tr');
  for (var i=0; i<rows.length; i++) {
    var rowIndices = expandColSpanToNums(rows[i]);
    headerAndFooterArray.push(rowIndices);
  }
}

function expandColSpanToNums(row) {
  var list = [];
  for (var i=0; i<row.cells.length; i++) {
    for (var j=0; j<parseInt(row.cells[i].colSpan); j++) {
      list.push($(row.cells[i]));
    }
  }
  return list;
}

function incColspan(col) {
  var span = parseInt(col.attr("colspan"));
  if (span == 0) { col.show(); }
  col.attr("colspan", span + 1);
}

function decColspan(col) {
  var span = col.attr("colspan");
  span = (span == undefined) ? 1 : parseInt(span);
  col.attr("colspan", span - 1);
  if (span == 1) { col.hide(); }
}

// this function shows or hides a column and enlarges or shrinks the header-columns
// @param index: index of a column in row "columnTitle"
function toggleColumn (shouldBeVisible, index) {
    if (headerAndFooterArray == null) { createHeaderAndFooterArray(); }
    var columnTitles = $('#columnTitles > td');
    // if column is hidden (or visible), we do not hide (or show) it again
    if ($(columnTitles[index]).is(":visible") != shouldBeVisible) {
        for (var i=0; i<headerAndFooterArray.length; i++) {
            var cell = headerAndFooterArray[i][index];
            shouldBeVisible ? incColspan(cell) : decColspan(cell);
        }
        var childIndex = index+1; // first child is number 1
        var children = $("#dataTable > tbody > tr > td:nth-child(" + childIndex + ")");
        shouldBeVisible ? children.show() : children.hide();
    }
}

// "id->cell", "id" is the columnIndex in the dataTable,
// "cell" is the jQuery-object of the cell of the column-toggle-table
var indexToCell = {};

// this function toggles a list of cells and 
// makes the cells equally toggled to the first cell
function toggleCells(indices) {
    var checked = indexToCell[indices[0]].isChecked; 
    for (var i=0; i<indices.length; i++) {
        var cell = indexToCell[indices[i]];
        toggleColumn (!checked, indices[i]);
        cell.removeClass(!checked ? 'hiddenCell' : 'visibleCell')
            .addClass(checked ? 'hiddenCell' : 'visibleCell');
        cell.isChecked = !checked;
    }
}


function createColumnToggleView() {

    // collect all columns
    var tableColumns = [];
    var titlesToColumns = {};
    var columnIndex = 1; // column 1 is the first data-column
    for (var i = 0; i < tests.length; i++) {
        var test = tests[i];
        test.indexToColumn = {} // from test-column-index to table-index
        test.indices = [] // equal to values from test.indexToColumn

        var cols = columns[i];
        for (var j = 0; j < cols.length; j++, columnIndex++) {
            var title = cols[j];
            var index = tableColumns.indexOf(title);
            if (title in titlesToColumns) {
                titlesToColumns[title].push(columnIndex);
            } else { // new title
                // assert(index == -1);
                titlesToColumns[title] = [columnIndex];
                tableColumns.push(title);
                index = tableColumns.length - 1; // index of last position
            }
            test.indexToColumn[index] = columnIndex;
            test.indices.push(columnIndex);
        }
    }

    // create header for table
    var list = []; for (var i=1; i<columnIndex; i++) { list.push(i); }
    var rowHeader = $('<tr>');
    $('<td>') // create top-left cell
        .click( {indices: list},
                function(event) { toggleCells(event.data.indices); } )
        .addClass('clickable')
        .attr('title', 'Click here to toggle all columns')
        .appendTo(rowHeader);
    for (var j = 0; j < tableColumns.length; j++) {
        $('<td>').append(tableColumns[j]) // create column-title-cell
            .click( {indices: titlesToColumns[tableColumns[j]]}, 
                    function(event) { toggleCells(event.data.indices); } )
            .addClass('clickable')
            .attr('title', 'Click here to toggle all columns with this title')
            .appendTo(rowHeader);
    }

    var tableHTML = $('<table>').attr('id', 'toggleTable')
                    .append($('<thead>').append(rowHeader));

    // create body for table
    var tableBody = $('<tbody>').appendTo(tableHTML);
    for (var i = 0; i < tests.length; i++) {
        rowHTML = $('<tr>').appendTo(tableBody);
        var test = tests[i];
        
        // get indices of row and create rowTitle-cell
        var rowTitle = test.tool + ' ' + (test.date ? test.date + ' ' : '') + test.name;
        $('<td>').append(rowTitle)
            .click( {indices: test.indices}, 
                    function(event) { toggleCells(event.data.indices); } )
            .addClass('clickable')
            .attr('title', 'Click here to toggle all columns of this test')
            .appendTo(rowHTML);
    
        // get cells of row
        var cols = columns[i];
        for (var j = 0; j < tableColumns.length; j++) {
            var cell = $('<td>').appendTo(rowHTML);
            var index = test.indexToColumn[j];
            if (index) {
                indexToCell[index] = cell;
                var childIndex = index + 1;
                var checked = $('#columnTitles > td:nth-child(' + childIndex + ')').is(':visible');
                cell.isChecked = checked;
                cell.addClass(checked ? 'visibleCell' : 'hiddenCell')
                    .click( {index: [index]}, 
                            function(event) { toggleCells(event.data.index); } )
                    .addClass('clickableCell');
                    
            }
        }
    }
    $('<div>').attr('id', 'toggleTableWrapper')
              .append(tableHTML)
              .appendTo($("#contentPane"));
    showContentPane();
}

$(document).ready(function() {
  $('.columnTitles > td:first-child')
    .addClass("clickable")
    .attr("title", "Click here to toggle visibility of columns")
    .click(function (event) {
        return createColumnToggleView(); });
});
</script>


<!-- ################## Possibility to select displayed rows by pressing f ################## -->

<style type="text/css">
  button:hover { cursor: pointer; }
  #rowFilterButtons ul { list-style-type:none }
  #rowFilterSelector   { position:absolute; top:20px; right:140px; width:100px; height:300px; }
  #button-filter-reset { position:absolute; top:20px; right:20px; width:100px; height:30px; }
  #button-filter-all   { position:absolute; top:60px; right:20px; width:100px; height:30px; }
  #button-filter-none  { position:absolute; top:100px; right:20px; width:100px; height:30px; }
  #button-filter-start { position:absolute; top:140px; right:20px; width:100px; height:30px; }
</style>

<script type="text/javascript">

function createRowFilterButtons() {
  $("#contentPane").empty();

  var buttonList = $('<form>', {id:'rowFilterButtons', onsubmit:'return false'})
        .appendTo($("#contentPane"));
  var columnIndex = 1; // columns start with 1
  for (var i = 0; i < tests.length; i++) {
    var test = tests[i];
    var sublist = $('<ul>').text(getNameOfTest(columnIndex)).appendTo(buttonList);

    for (var j = 0; j < test.columns.length; j++, columnIndex++) {
      var target = 'check' + columnIndex;
      var button = $('<input>', {
                    type:'radio', name:'filter', id:target, 
                    onclick:('fillRowFilterField(' + columnIndex + ')')});
      var label = $('<label>', {for:target}).text(test.columns[j]).addClass("clickable");
      $('<li>').append(button).append(label).appendTo(sublist);
    }
  }

  $('<button>').text('reset filter').attr('id', 'button-filter-reset')
        .attr('title', 'Click here to restore the complete table')
        .click(function(){ 
                var dataRows = $('#dataTable > tbody')[0].rows;
                for (var i = 0; i < dataRows.length; i++) {
                    $(dataRows[i]).show();
                }
                // delete outdated elements and selections
                removeFilterButtons();
                $('#rowFilterButtons input').each(function(_, elem) {elem.checked=false;})
            })
        .appendTo($("#contentPane"));

  showContentPane();
}

function fillRowFilterField(columnIndex) {

    // determinate options
    var options = [];
    var columnName = $('#columnTitles')[0].cells[columnIndex].textContent;
    if (columnName == 'status') {
        options = options.concat(['correct', 'wrong', 'unknown']);        
    }
    $('#dataTable > tbody > tr').filter(':visible').each(function(_, row) {
        currentValue = row.cells[columnIndex].textContent;
        if (jQuery.inArray(currentValue, options) === -1) {
            options.push(currentValue);
        }
    });

    // sort options, in most cases we have numbers
    options.sort( function(a, b) {
        if (a == null || isNaN(a)) return 1;
        if (b == null || isNaN(b)) return -1;
        return a - b;
    } );

    // delete old elements
    removeFilterButtons();

    // create new selection field with options
    var rowFilter = $('<select>').attr('id', 'rowFilterSelector')
        .attr('multiple', 'multiple').appendTo($('#contentPane'));
    $.each(options, function(_, option) {
        rowFilter.append(new Option(option, option));
    });

    $('<button>').text('select all').attr('id', 'button-filter-all')
        .attr('title', 'Click here to select all values')
        .click(function(){ $('#rowFilterSelector option').attr('selected',true); })
        .appendTo($('#contentPane'));

    $('<button>').text('select none').attr('id', 'button-filter-none')
        .attr('title', 'Click here to deselect all values')
        .click(function(){ $('#rowFilterSelector option').attr('selected',false); })
        .appendTo($('#contentPane'));

    $('<button>').text('apply filter').attr('id', 'button-filter-start')
        .attr('title', 'Click here to filter all matching rows in the table. ' +
                       'If you select multiple values, a row is shown, if any value matches')
        .click(function(){ 
                        hideRows(rowFilter.val() || [], columnIndex); 
                        // clean and hide contentPane
                        $('#contentPaneBackground').hide();
                        $('#contentPane').hide().empty();
                    })
        .appendTo($('#contentPane'));
}

function removeFilterButtons() {
    $('#rowFilterSelector, #button-filter-all, #button-filter-none, #button-filter-start').remove();
}

/* this function hides all rows, 
in which the column with the columnIndex does not match one of the values. */
function hideRows(values, columnIndex) {
    var columnName = $('#columnTitles')[0].cells[columnIndex].textContent;

    var dataRows = $('#dataTable > tbody')[0].rows;
    for (var i = 0; i < dataRows.length; i++) {
        var row = dataRows[i];
        var isVisible = false;

        // show all matching rows
        if (jQuery.inArray(row.cells[columnIndex].textContent, values) != -1) {
            isVisible = true;
        }

        // special case: show 'correct', 'wrong' and 'unknown' results
        if (!isVisible && columnName == 'status') {
            var classNames = row.cells[columnIndex].className.split(' ');
            for (var j = 0; j < values.length; j++) {
                var value = values[j];
                switch (value) {
                    case 'correct':
                    case 'wrong':
                        if (anyStartsWith(value, classNames)) {
                            isVisible = true;
                        }
                        break;

                    case 'unknown':
                        if (!anyStartsWith('correct', classNames) && !anyStartsWith('wrong', classNames)) {
                            isVisible = true;
                        }
                        break;

                    default: // do nothing, inVisible=false
                }
            }
        }
        if (!isVisible) $(row).hide();
    }
}

function anyStartsWith(key, values) {
    for (var i = 0; i < values.length; i++) {
        if (values[i].indexOf(key) == 0) { return true; }
    }
    return false;
}

$(document).ready(function() {
  $('body').keydown(function (event) {
                      if (fKeyPressed(event))
                        return createRowFilterButtons();
                      });
});
</script>


<!-- ################## Everything related to showing plots of the data ################## -->

<script type="text/javascript" src="http://www.sosy-lab.org/lib/jquery.jqplot-1.0.0b2_r1012/jquery.jqplot.min.js"></script>
<script type="text/javascript" src="http://www.sosy-lab.org/lib/jquery.jqplot-1.0.0b2_r1012/jqplot.highlighter.min.js"></script>
<script type="text/javascript" src="http://www.sosy-lab.org/lib/jquery.jqplot-1.0.0b2_r1012/jqplot.cursor.min.js"></script>
<script type="text/javascript" src="http://www.sosy-lab.org/lib/jquery.jqplot-1.0.0b2_r1012/jqplot.canvasTextRenderer.min.js"></script>
<script type="text/javascript" src="http://www.sosy-lab.org/lib/jquery.jqplot-1.0.0b2_r1012/jqplot.canvasAxisTickRenderer.min.js"></script>
<script type="text/javascript" src="http://www.sosy-lab.org/lib/jquery.jqplot-1.0.0b2_r1012/jqplot.enhancedLegendRenderer.min.js"></script>
<script type="text/javascript" src="http://www.sosy-lab.org/lib/jquery.jqplot-1.0.0b2_r1012/jqplot.logAxisRenderer.min.js"></script>
<script type="text/javascript" src="http://www.sosy-lab.org/lib/jquery.jqplot-1.0.0b2_r1012/jqplot.canvasAxisLabelRenderer.min.js"></script>
<script type="text/javascript" src="http://www.sosy-lab.org/lib/jquery.jqplot-1.0.0b2_r1012/jqplot.canvasOverlay.min.js"></script>
<link rel="stylesheet" type="text/css" href="http://www.sosy-lab.org/lib/jquery.jqplot-1.0.0b2_r1012/jquery.jqplot.min.css"/>

<style type="text/css">
  .jqplot-title {font-family:arial, sans serif; font-size:large; z-index:10 }
  .jqplot-table-legend-swatch {width:20px; height:15px }
  .jqplot-table-legend { border-style:none; outline:none }
  .jqplot-table-legend tbody { border-style:none }
  .jqplot-table-legend tbody tr td { border-top:none; cursor:pointer }
  .jqplot-highlighter-tooltip {font-family:arial, sans serif; font-size:large;
           border:solid 1px black; padding:2px;
           border-radius:8px; border-bottom-left-radius:0px;
           background-color:white; opacity:0.8; }
  .jqplot-table-legend { text-align: left; }
  table.jqplot-table-legend[style] { position:absolute; left:auto !important; right:0px !important; } /* overrides inner css-style */
  #chart { height:100%; width:100% }
  #button-quantile { position:absolute; bottom:50px; }
  #button-logScale { position:absolute; bottom:25px; }
  #button-showCorrectOnly { position:absolute; bottom:0px; }
  .scatterplot-selector { width:30%; }
</style>

<script type="text/javascript">

// simple structure, that contains all data for the plot
var graphData = {
  target : null,
  isRunSet : null,
  filenames : null,
  indices : null, // columns from table
  data : null, // values are sorted if quantilePlot else not sorted, indizes always from 0 to N
  originalData : null, // values are equal to data, but indizes are not sorted
  integerOnly : null,
  minValue : null,
  maxValue : null,
  isQuantile : true,
  isLogScale : true,
  showCorrectOnly : true,
};

// this function collects the indices of columns with target as cell above the column
function getColumnIndicesForTarget(target) {
  var columnIndizes = [];
  var cells = document.getElementById('columnTitles').cells;

  if (graphData.isRunSet) {
    var index = $(target).index(); // index of runset relative to table-row
    for (i = 1; i < cells.length; i++) { // skip first cell
      if ($(cells[i]).is(":visible")) {
        if ("status" != cells[i].textContent
            && tests[index-1] === columnsToTest[i-1]) {
          columnIndizes.push(i);
        }
      }
    }
  } else {
    for (i = 1; i < cells.length; i++) { // skip first cell
      if ($(cells[i]).is(":visible")) {
        if (target.textContent == cells[i].textContent) {
          columnIndizes.push(i);
        }
      }
    }
  }

  return columnIndizes;
};

// collectTableData collects some data for the graphData,
// this function must be called as first function for working with the plot
function collectTableData() {
  var data = [];

  graphData.indices = getColumnIndicesForTarget(graphData.target);
  for (j = 0; j < graphData.indices.length; j++) {
    data.push([]);
  }

  // reset graphData
  graphData.filenames = [];
  graphData.integerOnly = true;
  graphData.minValue = Number.POSITIVE_INFINITY;
  graphData.maxValue = Number.NEGATIVE_INFINITY;

  var rows = $('#dataTable > tbody > tr:visible');
  for (i = 0; i < rows.length; i++) {
    var currentRow = rows[i];
    graphData.filenames.push(currentRow.cells[0].textContent);
    
    for (j = 0; j < graphData.indices.length; j++) {
      var index = graphData.indices[j];
      var currentCell = $(currentRow.cells[index]);
      var value = getValue(currentCell, graphData.target.textContent);

      // each array is of the form: [[id1, value1], [id2, value2], ...]
      data[j].push([i, value]);
    }
  }

  graphData.originalData = data;
  graphData.data = graphData.isQuantile ? sortData(data) : data;
};


// this method returns sorted data for showQuantile().
function sortData(data) {
  var newData = [];
  for (i = 0; i < data.length; i++) {
    var line = data[i];

    // line has the structur [[0, v0],[1, v1],[2, v2]]
    // we sort the second entry of each element
    // we sort 'inplace', important for highlighting points,
    // compare numbers, NaN and Null are handled as positive infinity
    line.sort( function(a, b) {
      if (a[1] == null || isNaN(a[1])) return 1;
      if (b[1] == null || isNaN(b[1])) return -1;
      return a[1] - b[1];
    } );

    // create new indizes
    var newLine = [];
    for (j = 0; j < line.length; j++) {
      newLine.push([j, line[j][1]]);
    }

    newData.push(newLine);
  }
  return newData;
}


// returns the textcontent of a cell as numeral
function getValue(cell, title) {
    var value;
    if (graphData.showCorrectOnly && !cell.hasClass('correct')) {
        value = Number.NaN;  // using 'null' as unknown value causes problems in the plot

    } else if (title === 'status') {
        if (cell.hasClass('correct'))     value = 1;
        else if (cell.hasClass('wrong'))  value = -1;
        else                              value = 0;

    } else {
        value = parseFloat(cell.text());
        valueInt = parseInt(cell.text());

        // collect some information, used later for tick-formatter
        if (!isNaN(value)) {
            if (value != valueInt){ graphData.integerOnly = false; }
            if (value < graphData.minValue) { graphData.minValue = value; }
            if (value > graphData.maxValue) { graphData.maxValue = value; }
        }

        if (value == 0 && graphData.isLogScale) {
            value = 0.00001; // zero is not part of log-scale
        }
    }
    return value;
}


// this functions collects a list of pairs (a,b) where a and b are the entires for the scatterplot.
// this function must be called as first function for working with the plot.
// collectTableData collects some data for the graphData,
// this function must be called as first function for working with the plot
function collectTableDataForScatter(index1, title1, index2, title2) {
  var data = [[]];

  // reset graphData
  graphData.indices = [];
  graphData.filenames = [];
  graphData.integerOnly = true;
  graphData.minValue = Number.POSITIVE_INFINITY;
  graphData.maxValue = Number.NEGATIVE_INFINITY;

  var rows = $('#dataTable > tbody > tr:visible');
  for (i = 0; i < rows.length; i++) {
    var currentRow = rows[i];
    
    var cell1 = $(currentRow.cells[index1]);
    var value1 = getValue(cell1, title1);
    
    var cell2 = $(currentRow.cells[index2]);
    var value2 = getValue(cell2, title2);

    // we need two real numbers
    if (value1 != null && value2 != null && !isNaN(value1) && !isNaN(value2)) {
        var filename = currentRow.cells[0].textContent;
       
        // each array is of the form: [[id1, value1], [id2, value2], ...], 
        // the third entry is additional info and is used for the highlighter,
        data[0].push([value1, value2, filename]);
    }
  }

  graphData.originalData = data;
  graphData.data = data;
};


// Create a list which indicates at which ticks to draw grid lines
// and which labels to put at the x-axis.
function getXTicks() {
  var xTicks = [];
  var maxLength = 40;

  var numRows = graphData.filenames.length;
  var labelStep = 1;
  var gridStep = 1;
  if (numRows > 30) { labelStep = 5; }
  if (numRows > 200) { labelStep = 10; gridStep = 5; }
  if (numRows > 1000) { labelStep = 20; gridStep = 10; }

  function getLabel(name, index) {
    if (graphData.isQuantile) {
      return index.toString();
    } else {
      if (name.length > maxLength) { name = name.substring(0, maxLength) + "..."; }
      return name;
    }
  }

  for (i = 0; i < numRows; i++) {
    if (!(i%gridStep)) {
        xTicks.push([i, ((i%labelStep)?" ":getLabel(graphData.filenames[i], i))]);
    }
  }

  return xTicks;
}


// get labels for y-direction
function getYTicks() {
  if (graphData.target.textContent == "status") {
    return [[-1.5, " "], [-1, "wrong"], [0, "unknown"], [1, "correct"], [1.5, " "]];
  } else {
    return [];
  }
}

// returns label of a test: 'tool+test+date'.
function getLabels() {
  var labels = [];
  if (graphData.isRunSet) {
      var cells = document.getElementById('columnTitles').cells;
      for (i = 0; i < graphData.indices.length; i++) {
        var index = graphData.indices[i];
        labels.push(cells[index].textContent);
      }
  } else {
      for (i = 0; i < graphData.indices.length; i++) {
        var index = graphData.indices[i];
        labels.push(getNameOfTest(index));
      }
  }
  return labels;
};


function addLegendActions() {
  var legendButtons = $('tr.jqplot-table-legend');
  var seriesLines = $('canvas.jqplot-series-canvas');

  // assertion
  if (legendButtons.length != seriesLines.length) {
    debug("ERROR: number of series does not match buttons!");
  }

  for (i = 0; i<legendButtons.length; i++) {
    var currentButton = legendButtons[i];
    var currentLine = seriesLines[i];

    currentButton.onclick = function(event) {
      var hideOpacity = 0.3;
      if (this.style.opacity == hideOpacity) {
        this.style.opacity = 1;
      } else {
        this.style.opacity = hideOpacity;
      }
    }

    currentButton.onmouseover = function(line) {
      return function(event) { line.style.zIndex = 5; }
    }(currentLine);

    currentButton.onmouseout = function(line) {
      return function(event) { line.style.zIndex = 0; }
    }(currentLine);
  }
}


function highlightFormatter(str, seriesIndex, pointIndex) {
    var numberOfFile = graphData.originalData[seriesIndex][pointIndex][0];
    var filename = graphData.filenames[numberOfFile];
    if (graphData.target.textContent == "status") {
      if (str == 1)       str = "correct";
      else if (str == 0)  str = "unknown";
      else                str = "wrong";
    }
    return filename + "<br>" + str;
}


function highlightFormatterForScatter(str, seriesIndex, pointIndex, plot) {
    var point = plot.series[seriesIndex].data[pointIndex]; // POINT=[x,y,filename]
    // console.log(point);
    if (graphData.target.textContent == "status") { // TODO not working, we have 2 independent values
      if (str == 1)       str = "correct";
      else if (str == 0)  str = "unknown";
      else                str = "wrong";
    }
    return point[2] + "<br>X: " + point[0] + "<br>Y: " + point[1]; // + "<br>STR: " + str;
}


function getYTicksFormat() {
    if (graphData.integerOnly) { return '%.0f'; }
    if (graphData.isLogScale) {
        if (graphData.minValue >= 1) { return '%.0f'; }
        else if (graphData.minValue >= 0.1) { return '%.1f'; }
        else { return '%.2f'; }
    } else {
        return (graphData.maxValue >= 10) ? '%.0f' : '%.2f';
    }
}


function addButtons(target, callback, showQuantileButton) {
    if (showQuantileButton) {
        $('<button>', {id:'button-quantile'}).appendTo(target)
            .click(function() { graphData.isQuantile = !graphData.isQuantile; callback();})
            .text(graphData.isQuantile ? 'Switch to Direct Plot' : 'Switch to Quantile Plot');
    }

    $('<button>', {id:'button-logScale'}).appendTo(target)
        .click(function() { graphData.isLogScale = !graphData.isLogScale; callback();})
        .text(graphData.isLogScale ?  'Switch to Linear Scale' : 'Switch to Logarithmic Scale');

    $('<button>', {id:'button-showCorrectOnly'}).appendTo(target)
        .click(function() { graphData.showCorrectOnly = !graphData.showCorrectOnly; callback();})
        .text(graphData.showCorrectOnly ?  'Switch to All Results' : 'Switch to Correct Results Only');
}


function getSelectorForScatter(identifier) {
    var select = $('<select>', {class:'scatterplot-selector'});
    var columnIndex = 1; // columns start with 1
    for (var i = 0; i < tests.length; i++) {
        var test = tests[i];
        var group = $('<optgroup>', {label:getNameOfTestDirect(test)})
                .appendTo(select);
        for (var j = 0; j < test.columns.length; j++, columnIndex++) {
            var column = test.columns[j];
            var option = $('<option>', {
                            value:columnIndex, 
                            selected:(graphData.target[identifier] == columnIndex)})
                        .text(column).appendTo(group);
        }
    }
    
    select.change(function(){
        var selectedValue = Number(select.find(':selected')[0].value);
        graphData.target[identifier] = selectedValue;
        showScatterPlot();
    });
    
    return select;
}

function showScatterPlot() {
  $('#contentPaneBackground').trigger('click'); // cleanup
  var contentPane = $('#contentPane').append('<div id="chart"></div>');
  addButtons(contentPane, showScatterPlot, false);
  showContentPane();

  // the identifier '0/1' is the arrayindex in 'graphData.target',
  // it identifies the first and second selector
  var selector0 = getSelectorForScatter(0); 
  var selector1 = getSelectorForScatter(1);
  var index0 = graphData.target[0];
  var index1 = graphData.target[1];
  var titles = $('#columnTitles').children();
  var title0 = titles[index0].textContent;
  var title1 = titles[index1].textContent;
  var label0 = getNameOfTest(index0) + " " + title0;
  var label1 = getNameOfTest(index1) + " " + title1;
  
  collectTableDataForScatter(index0, title0, index1, title1);

  var maxValue = graphData.maxValue * 100; // should be bigger than all measurable values
  var minValue = graphData.isLogScale ? 0.0000001 : (-maxValue); // there is no zero in logscale

  var plot = $.jqplot('chart', graphData.data, {
    title: 'ScatterPlot: ',
    legend: {
      show:false,
    },
    highlighter:{
      yvalues: 2,   // we have one extra value in the array
      show: true,
      sizeAdjust: 10,
      showMarker: true,
      tooltipAxes: 'y',
      tooltipLocation: 'ne',
      tooltipContentEditor: highlightFormatterForScatter, // functionPointer!
      tooltipFormatString: '%s', // how to format the y-value
      useAxesFormatters: false
    },
    seriesDefaults:{
      showLine:false,
      shadow: false,
    },
    cursor:{
      show: false,
      zoom: false,
      showTooltip: false,
    },
    axes:{
      xaxis:{
        label:label0,
        labelRenderer: $.jqplot.CanvasAxisLabelRenderer,
        labelOptions:{ textColor:'Black' },
        renderer: (graphData.isLogScale && title0 !== 'status') ? $.jqplot.LogAxisRenderer : $.jqplot.LinearAxisRenderer,
        tickRenderer: $.jqplot.CanvasAxisTickRenderer,
        tickOptions: {
          angle: -60,
        }
      },
      yaxis:{
        label:label1,
        labelRenderer: $.jqplot.CanvasAxisLabelRenderer,
        labelOptions:{ textColor:'Black' },
        renderer: (graphData.isLogScale && title1 !== 'status') ? $.jqplot.LogAxisRenderer : $.jqplot.LinearAxisRenderer,
        pad: 1.2,
        tickRenderer: $.jqplot.CanvasAxisTickRenderer,
        tickOptions:{
          formatString: getYTicksFormat()
        }
      }
    },
    canvasOverlay: {
        show: true,
        objects: [
            {line: {
                name: 'diagonalLine',
                lineWidth: 1,
                color: 'red',
                shadow: false,
                start: [minValue, minValue],
                stop: [maxValue, maxValue],
            } },
        ]
    }
  });

  $('.jqplot-title').empty()
        .append('X: ').append(selector0)
        .append('<span style="padding-left:50px"></span>') // some space between the selectors
        .append('Y: ').append(selector1);

  $('#contentPaneBackground').click(function(event) {
    plot.destroy();
    $('#chart').empty();
  });
};


function showPlot() {
  $('#contentPaneBackground').trigger('click'); // cleanup
  $('#contentPane').append('<div id="chart"></div>');
  addButtons($('#contentPane'), showPlot, true);
  showContentPane();
  collectTableData();

  var plot = $.jqplot('chart', graphData.data, {
    title: graphData.target.textContent,
    legend: {
      show:true,
      placement: 'outsideGrid',
      renderer: $.jqplot.EnhancedLegendRenderer,
      labels: getLabels(),
      location: 's',
      rowSpacing: "0px",
      showSwatches: true,
    },
    highlighter:{
      show: true,
      sizeAdjust: 10,
      showMarker: true,
      tooltipAxes: 'y',
      tooltipLocation: 'ne',
      tooltipContentEditor: highlightFormatter, // functionPointer!
      tooltipFormatString: '%s',
      useAxesFormatters: false
    },
    seriesDefaults:{
      shadow: false,
    },
    cursor:{
      show: false,
      zoom: false,
      showTooltip: false,
    },
    axes:{
      xaxis:{
        ticks: getXTicks(),
        tickRenderer: $.jqplot.CanvasAxisTickRenderer,
        tickOptions: {
          fontSize: '9px',
          angle: -60,
        }
      },
      yaxis:{
        ticks: getYTicks(),
        renderer: (graphData.isLogScale && graphData.target.textContent !== 'status') ? $.jqplot.LogAxisRenderer : $.jqplot.LinearAxisRenderer,
        pad: 1.2,
        tickOptions:{
          formatString: getYTicksFormat()
        }
      }
    },
  });

  addLegendActions();
  
  $('#contentPaneBackground').click(function(event) {
    plot.destroy();
    $('#chart').empty();
  });
};


// this function adds the listeners to the table
$(document).ready(function() {
  $('.columnTitles > td:not(:first-child)') // do not use first column
      .addClass("clickable")
      .attr("title", "Click here to show a graph of this column")
      .click(function (event) {
            graphData.target = event.target;
            graphData.isRunSet = false;
            showPlot();
      });
  
  $('.run > td:not(:first-child)') // do not use first column
      .addClass("clickable")
      .attr("title", "Click here to show a graph of this run-set")
      .click(function (event) {
            graphData.target = event.target;
            graphData.isRunSet = true;
            showPlot();
      });
  
  $('.run > td:first-child')
      .addClass("clickable")
      .attr("title", "Click here to show some scatter-graphs")
      .click(function (event) {
            graphData.target = [1,1]; // default indices of the columns in the plot
            graphData.isRunSet = false;
            showScatterPlot();
      });
});

</script>


<!-- ################## Base HTML ################## -->

<title>results.13-08-23_1621 differences</title>

</head>

<body>

<div id="contentPaneBackground"></div>
<div id="contentPane"></div>

<table id="dataTable">
<thead>
  <tr id="tool" class="tool">
    <td>Tool</td>
    <td colspan="24">CPAchecker 1.2-svn e5c9ef1+</td>
  </tr>
  <tr id="limits" class="limits">
    <td>Limits</td>
    <td colspan="24">timelimit: 300 s, memlimit: 12000 MB, CPU core limit: None</td>
  </tr>
  <tr id="host" class="host">
    <td>Host</td>
    <td colspan="24">molnar</td>
  </tr>
  <tr id="os" class="os">
    <td>OS</td>
    <td colspan="24">Linux 3.2.0-52-generic x86_64</td>
  </tr>
  <tr id="system" class="system">
    <td>System</td>
    <td colspan="24">CPU: Intel(R) Core(TM) i7-3770 CPU @ 3.40GHz with 4 cores, frequency: 3401 MHz; RAM: 16385312 kB</td>
  </tr>
  <tr id="date" class="date">
    <td>Date of execution</td>
    <td colspan="6">13-08-23 15:53</td>
    <td colspan="6">13-08-23 15:59</td>
    <td colspan="6">13-08-22 20:21</td>
    <td colspan="6">13-08-23 14:27</td>
  </tr>
  <tr id="run" class="run">
    <td>Run set</td>
    <td colspan="6">benchmark-cpachecker-heap-manipulation-predicate-replace.with-output-files</td>
    <td colspan="6">benchmark-cpachecker-heap-manipulation-predicate.with-output-files</td>
    <td colspan="6">benchmark-cpachecker-heap-manipulation-ppreds-integrated.with-output-files</td>
    <td colspan="6">benchmark-cpachecker-heap-manipulation-ppreds-integrated-replace.with-output-files</td>
  </tr>
  <tr id="options" class="options">
    <td>Options</td>
    <td colspan="6">-heap 9000M<br/>-config /home/mikhail/repos/cpachecker/config/predicateAnalysis-PredAbsRefiner-ABEl.properties<br/>-spec /home/mikhail/repos/cpachecker/config/specification/sv-comp.spc<br/>-setprop output.path=<wbr/>test/results/${benchmark_name}.${benchmark_date}.output/${sourcefile_name}/<br/>-setprop analysis.machineModel=<wbr/>LINUX32<br/>-setprop cpa.predicate.memoryAllocationsAlwaysSucceed=<wbr/>true<br/>-setprop output.disable=<wbr/>true<br/>-setprop log.level=<wbr/>OFF<br/>-setprop cpa.predicate.refinement.dumpInterpolationProblems=<wbr/>false<br/>-setprop analysis.summaryEdges=<wbr/>true<br/>-setprop analysis.functionPointerCalls=<wbr/>true<br/>-setprop cpa.callstack.skipRecursion=<wbr/>true<br/>-setprop cpa.conditions.global.time.wall=<wbr/>-1<br/>-disable-java-assertions</td>
    <td colspan="6">-heap 9000M<br/>-config /home/mikhail/repos/cpachecker/config/predicateAnalysis-PredAbsRefiner-ABEl-bv.properties<br/>-spec /home/mikhail/repos/cpachecker/config/specification/sv-comp.spc<br/>-setprop output.path=<wbr/>test/results/${benchmark_name}.${benchmark_date}.output/${sourcefile_name}/<br/>-setprop analysis.machineModel=<wbr/>LINUX32<br/>-setprop cpa.predicate.memoryAllocationsAlwaysSucceed=<wbr/>true<br/>-setprop output.disable=<wbr/>true<br/>-setprop log.level=<wbr/>OFF<br/>-setprop cpa.predicate.refinement.dumpInterpolationProblems=<wbr/>false<br/>-setprop analysis.summaryEdges=<wbr/>true<br/>-setprop analysis.functionPointerCalls=<wbr/>true<br/>-setprop cpa.callstack.skipRecursion=<wbr/>true<br/>-setprop cpa.conditions.global.time.wall=<wbr/>-1<br/>-disable-java-assertions</td>
    <td colspan="6">-heap 9000M<br/>-config /home/mikhail/repos/cpachecker/config/predicateAnalysis-PredAbsRefiner-ABEl-UF.properties<br/>-spec /home/mikhail/repos/cpachecker/config/specification/sv-comp.spc<br/>-setprop output.path=<wbr/>test/results/${benchmark_name}.${benchmark_date}.output/${sourcefile_name}/<br/>-setprop analysis.machineModel=<wbr/>LINUX32<br/>-setprop cpa.predicate.memoryAllocationsAlwaysSucceed=<wbr/>true<br/>-setprop output.disable=<wbr/>true<br/>-setprop log.level=<wbr/>OFF<br/>-setprop cpa.predicate.refinement.dumpInterpolationProblems=<wbr/>false<br/>-disable-java-assertions</td>
    <td colspan="6">-heap 9000M<br/>-config /home/mikhail/repos/cpachecker/config/predicateAnalysis-PredAbsRefiner-ABEl-UF-replace.properties<br/>-spec /home/mikhail/repos/cpachecker/config/specification/sv-comp.spc<br/>-setprop output.path=<wbr/>test/results/${benchmark_name}.${benchmark_date}.output/${sourcefile_name}/<br/>-setprop analysis.machineModel=<wbr/>LINUX32<br/>-setprop cpa.predicate.memoryAllocationsAlwaysSucceed=<wbr/>true<br/>-setprop output.disable=<wbr/>true<br/>-setprop log.level=<wbr/>OFF<br/>-setprop cpa.predicate.refinement.dumpInterpolationProblems=<wbr/>false<br/>-disable-java-assertions</td>
  </tr>
  <tr id="columnTitles" class="columnTitles">
    <td>heap-manipulation/</td>
    <td colspan="1">status</td>
    <td colspan="1">cputime</td>
    <td colspan="1">walltime</td>
    <td colspan="1">memUsage</td>
    <td colspan="1">total</td>
    <td colspan="1">reached</td>
    <td colspan="1">status</td>
    <td colspan="1">cputime</td>
    <td colspan="1">walltime</td>
    <td colspan="1">memUsage</td>
    <td colspan="1">total</td>
    <td colspan="1">reached</td>
    <td colspan="1">status</td>
    <td colspan="1">cputime</td>
    <td colspan="1">walltime</td>
    <td colspan="1">memUsage</td>
    <td colspan="1">total</td>
    <td colspan="1">reached</td>
    <td colspan="1">status</td>
    <td colspan="1">cputime</td>
    <td colspan="1">walltime</td>
    <td colspan="1">memUsage</td>
    <td colspan="1">total</td>
    <td colspan="1">reached</td>
  </tr>
</thead>

<tbody>
<tr><td title="Click here to show source code"><a href="../../heap-manipulation/alternating_list_safe.i">alternating_list_safe.i</a></td>
    <td class="status correct safe" title="Click here to show output of tool"><a href="benchmark-cpachecker-heap-manipulation-predicate-replace.13-08-23_1553.logfiles/with-output-files.alternating_list_safe.i.log">safe</a></td>
  <td class="correct safeValue">1.84</td>
  <td class="correct safeValue">1.22</td>
  <td class="correct safeValue">120279040</td>
  <td class="correct safeValue">0.8</td>
  <td class="correct safeValue">0.003s</td>
    <td class="status correct safe" title="Click here to show output of tool"><a href="benchmark-cpachecker-heap-manipulation-predicate.13-08-23_1559.logfiles/with-output-files.alternating_list_safe.i.log">safe</a></td>
  <td class="correct safeValue">1.95</td>
  <td class="correct safeValue">1.25</td>
  <td class="correct safeValue">124956672</td>
  <td class="correct safeValue">0.9</td>
  <td class="correct safeValue">0.001s</td>
    <td class="status error" title="Click here to show output of tool"><a href="benchmark-cpachecker-heap-manipulation-ppreds-integrated.13-08-22_2021.logfiles/with-output-files.alternating_list_safe.i.log">timeout</a></td>
  <td class="errorValue">298.67</td>
  <td class="errorValue">288.55</td>
  <td class="errorValue">2255310848</td>
  <td class="errorValue">-</td>
  <td class="errorValue">-</td>
    <td class="status error" title="Click here to show output of tool"><a href="benchmark-cpachecker-heap-manipulation-ppreds-integrated-replace.13-08-23_1427.logfiles/with-output-files.alternating_list_safe.i.log">timeout</a></td>
  <td class="errorValue">298.84</td>
  <td class="errorValue">289.15</td>
  <td class="errorValue">2646753280</td>
  <td class="errorValue">-</td>
  <td class="errorValue">-</td>
</tr>
<tr><td title="Click here to show source code"><a href="../../heap-manipulation/bubble_sort_linux_safe.i">bubble_sort_linux_safe.i</a></td>
    <td class="status wrong unsafe" title="Click here to show output of tool"><a href="benchmark-cpachecker-heap-manipulation-predicate-replace.13-08-23_1553.logfiles/with-output-files.bubble_sort_linux_safe.i.log">unsafe</a></td>
  <td class="wrong unsafeValue">1.99</td>
  <td class="wrong unsafeValue">1.31</td>
  <td class="wrong unsafeValue">125845504</td>
  <td class="wrong unsafeValue">0.9</td>
  <td class="wrong unsafeValue">0.001s</td>
    <td class="status wrong unsafe" title="Click here to show output of tool"><a href="benchmark-cpachecker-heap-manipulation-predicate.13-08-23_1559.logfiles/with-output-files.bubble_sort_linux_safe.i.log">unsafe</a></td>
  <td class="wrong unsafeValue">3.12</td>
  <td class="wrong unsafeValue">2.40</td>
  <td class="wrong unsafeValue">150777856</td>
  <td class="wrong unsafeValue">2.0</td>
  <td class="wrong unsafeValue">0.003s</td>
    <td class="status error" title="Click here to show output of tool"><a href="benchmark-cpachecker-heap-manipulation-ppreds-integrated.13-08-22_2021.logfiles/with-output-files.bubble_sort_linux_safe.i.log">timeout</a></td>
  <td class="errorValue">298.87</td>
  <td class="errorValue">290.65</td>
  <td class="errorValue">1879056384</td>
  <td class="errorValue">-</td>
  <td class="errorValue">-</td>
    <td class="status error" title="Click here to show output of tool"><a href="benchmark-cpachecker-heap-manipulation-ppreds-integrated-replace.13-08-23_1427.logfiles/with-output-files.bubble_sort_linux_safe.i.log">timeout</a></td>
  <td class="errorValue">298.69</td>
  <td class="errorValue">289.79</td>
  <td class="errorValue">2961637376</td>
  <td class="errorValue">-</td>
  <td class="errorValue">-</td>
</tr>
<tr><td title="Click here to show source code"><a href="../../heap-manipulation/bubble_sort_linux_unsafe.i">bubble_sort_linux_unsafe.i</a></td>
    <td class="status correct unsafe" title="Click here to show output of tool"><a href="benchmark-cpachecker-heap-manipulation-predicate-replace.13-08-23_1553.logfiles/with-output-files.bubble_sort_linux_unsafe.i.log">unsafe</a></td>
  <td class="correct unsafeValue">2.00</td>
  <td class="correct unsafeValue">1.31</td>
  <td class="correct unsafeValue">125546496</td>
  <td class="correct unsafeValue">0.9</td>
  <td class="correct unsafeValue">0.003s</td>
    <td class="status correct unsafe" title="Click here to show output of tool"><a href="benchmark-cpachecker-heap-manipulation-predicate.13-08-23_1559.logfiles/with-output-files.bubble_sort_linux_unsafe.i.log">unsafe</a></td>
  <td class="correct unsafeValue">3.11</td>
  <td class="correct unsafeValue">2.39</td>
  <td class="correct unsafeValue">150487040</td>
  <td class="correct unsafeValue">2.0</td>
  <td class="correct unsafeValue">0.003s</td>
    <td class="status error" title="Click here to show output of tool"><a href="benchmark-cpachecker-heap-manipulation-ppreds-integrated.13-08-22_2021.logfiles/with-output-files.bubble_sort_linux_unsafe.i.log">timeout</a></td>
  <td class="errorValue">298.97</td>
  <td class="errorValue">290.16</td>
  <td class="errorValue">1898672128</td>
  <td class="errorValue">-</td>
  <td class="errorValue">-</td>
    <td class="status error" title="Click here to show output of tool"><a href="benchmark-cpachecker-heap-manipulation-ppreds-integrated-replace.13-08-23_1427.logfiles/with-output-files.bubble_sort_linux_unsafe.i.log">timeout</a></td>
  <td class="errorValue">298.96</td>
  <td class="errorValue">290.22</td>
  <td class="errorValue">2950856704</td>
  <td class="errorValue">-</td>
  <td class="errorValue">-</td>
</tr>
<tr><td title="Click here to show source code"><a href="../../heap-manipulation/list_flag_safe.i">list_flag_safe.i</a></td>
    <td class="status correct safe" title="Click here to show output of tool"><a href="benchmark-cpachecker-heap-manipulation-predicate-replace.13-08-23_1553.logfiles/with-output-files.list_flag_safe.i.log">safe</a></td>
  <td class="correct safeValue">1.80</td>
  <td class="correct safeValue">1.21</td>
  <td class="correct safeValue">120848384</td>
  <td class="correct safeValue">0.8</td>
  <td class="correct safeValue">0.000s</td>
    <td class="status correct safe" title="Click here to show output of tool"><a href="benchmark-cpachecker-heap-manipulation-predicate.13-08-23_1559.logfiles/with-output-files.list_flag_safe.i.log">safe</a></td>
  <td class="correct safeValue">2.06</td>
  <td class="correct safeValue">1.34</td>
  <td class="correct safeValue">124968960</td>
  <td class="correct safeValue">0.9</td>
  <td class="correct safeValue">0.002s</td>
    <td class="status error" title="Click here to show output of tool"><a href="benchmark-cpachecker-heap-manipulation-ppreds-integrated.13-08-22_2021.logfiles/with-output-files.list_flag_safe.i.log">timeout</a></td>
  <td class="errorValue">298.81</td>
  <td class="errorValue">311.72</td>
  <td class="errorValue">2439778304</td>
  <td class="errorValue">-</td>
  <td class="errorValue">-</td>
    <td class="status error" title="Click here to show output of tool"><a href="benchmark-cpachecker-heap-manipulation-ppreds-integrated-replace.13-08-23_1427.logfiles/with-output-files.list_flag_safe.i.log">timeout</a></td>
  <td class="errorValue">298.84</td>
  <td class="errorValue">289.50</td>
  <td class="errorValue">2890747904</td>
  <td class="errorValue">-</td>
  <td class="errorValue">-</td>
</tr>
<tr><td title="Click here to show source code"><a href="../../heap-manipulation/list_safe.i">list_safe.i</a></td>
    <td class="status correct safe" title="Click here to show output of tool"><a href="benchmark-cpachecker-heap-manipulation-predicate-replace.13-08-23_1553.logfiles/with-output-files.list_safe.i.log">safe</a></td>
  <td class="correct safeValue">1.86</td>
  <td class="correct safeValue">1.19</td>
  <td class="correct safeValue">120811520</td>
  <td class="correct safeValue">0.8</td>
  <td class="correct safeValue">0.000s</td>
    <td class="status correct safe" title="Click here to show output of tool"><a href="benchmark-cpachecker-heap-manipulation-predicate.13-08-23_1559.logfiles/with-output-files.list_safe.i.log">safe</a></td>
  <td class="correct safeValue">2.10</td>
  <td class="correct safeValue">1.36</td>
  <td class="correct safeValue">123748352</td>
  <td class="correct safeValue">0.9</td>
  <td class="correct safeValue">0.000s</td>
    <td class="status error" title="Click here to show output of tool"><a href="benchmark-cpachecker-heap-manipulation-ppreds-integrated.13-08-22_2021.logfiles/with-output-files.list_safe.i.log">timeout</a></td>
  <td class="errorValue">298.76</td>
  <td class="errorValue">292.52</td>
  <td class="errorValue">2120110080</td>
  <td class="errorValue">-</td>
  <td class="errorValue">-</td>
    <td class="status error" title="Click here to show output of tool"><a href="benchmark-cpachecker-heap-manipulation-ppreds-integrated-replace.13-08-23_1427.logfiles/with-output-files.list_safe.i.log">timeout</a></td>
  <td class="errorValue">298.92</td>
  <td class="errorValue">291.11</td>
  <td class="errorValue">2522918912</td>
  <td class="errorValue">-</td>
  <td class="errorValue">-</td>
</tr>
<tr><td title="Click here to show source code"><a href="../../heap-manipulation/merge_sort_safe.i">merge_sort_safe.i</a></td>
    <td class="status wrong unsafe" title="Click here to show output of tool"><a href="benchmark-cpachecker-heap-manipulation-predicate-replace.13-08-23_1553.logfiles/with-output-files.merge_sort_safe.i.log">unsafe</a></td>
  <td class="wrong unsafeValue">1.97</td>
  <td class="wrong unsafeValue">1.28</td>
  <td class="wrong unsafeValue">123834368</td>
  <td class="wrong unsafeValue">0.9</td>
  <td class="wrong unsafeValue">0.002s</td>
    <td class="status wrong unsafe" title="Click here to show output of tool"><a href="benchmark-cpachecker-heap-manipulation-predicate.13-08-23_1559.logfiles/with-output-files.merge_sort_safe.i.log">unsafe</a></td>
  <td class="wrong unsafeValue">2.27</td>
  <td class="wrong unsafeValue">1.42</td>
  <td class="wrong unsafeValue">126750720</td>
  <td class="wrong unsafeValue">1.0</td>
  <td class="wrong unsafeValue">0.001s</td>
    <td class="status error" title="Click here to show output of tool"><a href="benchmark-cpachecker-heap-manipulation-ppreds-integrated.13-08-22_2021.logfiles/with-output-files.merge_sort_safe.i.log">timeout</a></td>
  <td class="errorValue">298.62</td>
  <td class="errorValue">289.46</td>
  <td class="errorValue">775331840</td>
  <td class="errorValue">-</td>
  <td class="errorValue">-</td>
    <td class="status error" title="Click here to show output of tool"><a href="benchmark-cpachecker-heap-manipulation-ppreds-integrated-replace.13-08-23_1427.logfiles/with-output-files.merge_sort_safe.i.log">timeout</a></td>
  <td class="errorValue">298.67</td>
  <td class="errorValue">289.84</td>
  <td class="errorValue">1385078784</td>
  <td class="errorValue">-</td>
  <td class="errorValue">-</td>
</tr>
<tr><td title="Click here to show source code"><a href="../../heap-manipulation/simple_built_from_end_safe.i">simple_built_from_end_safe.i</a></td>
    <td class="status wrong unsafe" title="Click here to show output of tool"><a href="benchmark-cpachecker-heap-manipulation-predicate-replace.13-08-23_1553.logfiles/with-output-files.simple_built_from_end_safe.i.log">unsafe</a></td>
  <td class="wrong unsafeValue">1.80</td>
  <td class="wrong unsafeValue">1.20</td>
  <td class="wrong unsafeValue">123555840</td>
  <td class="wrong unsafeValue">0.8</td>
  <td class="wrong unsafeValue">0.001s</td>
    <td class="status wrong unsafe" title="Click here to show output of tool"><a href="benchmark-cpachecker-heap-manipulation-predicate.13-08-23_1559.logfiles/with-output-files.simple_built_from_end_safe.i.log">unsafe</a></td>
  <td class="wrong unsafeValue">2.08</td>
  <td class="wrong unsafeValue">1.41</td>
  <td class="wrong unsafeValue">127619072</td>
  <td class="wrong unsafeValue">1.0</td>
  <td class="wrong unsafeValue">0.002s</td>
    <td class="status error" title="Click here to show output of tool"><a href="benchmark-cpachecker-heap-manipulation-ppreds-integrated.13-08-22_2021.logfiles/with-output-files.simple_built_from_end_safe.i.log">timeout</a></td>
  <td class="errorValue">298.70</td>
  <td class="errorValue">290.28</td>
  <td class="errorValue">1003569152</td>
  <td class="errorValue">-</td>
  <td class="errorValue">-</td>
    <td class="status error" title="Click here to show output of tool"><a href="benchmark-cpachecker-heap-manipulation-ppreds-integrated-replace.13-08-23_1427.logfiles/with-output-files.simple_built_from_end_safe.i.log">timeout</a></td>
  <td class="errorValue">298.77</td>
  <td class="errorValue">290.94</td>
  <td class="errorValue">1230946304</td>
  <td class="errorValue">-</td>
  <td class="errorValue">-</td>
</tr>
<tr><td title="Click here to show source code"><a href="../../heap-manipulation/simple_safe.i">simple_safe.i</a></td>
    <td class="status correct safe" title="Click here to show output of tool"><a href="benchmark-cpachecker-heap-manipulation-predicate-replace.13-08-23_1553.logfiles/with-output-files.simple_safe.i.log">safe</a></td>
  <td class="correct safeValue">1.79</td>
  <td class="correct safeValue">1.18</td>
  <td class="correct safeValue">119664640</td>
  <td class="correct safeValue">0.8</td>
  <td class="correct safeValue">0.001s</td>
    <td class="status correct safe" title="Click here to show output of tool"><a href="benchmark-cpachecker-heap-manipulation-predicate.13-08-23_1559.logfiles/with-output-files.simple_safe.i.log">safe</a></td>
  <td class="correct safeValue">2.00</td>
  <td class="correct safeValue">1.29</td>
  <td class="correct safeValue">123572224</td>
  <td class="correct safeValue">0.9</td>
  <td class="correct safeValue">0.004s</td>
    <td class="status error" title="Click here to show output of tool"><a href="benchmark-cpachecker-heap-manipulation-ppreds-integrated.13-08-22_2021.logfiles/with-output-files.simple_safe.i.log">timeout</a></td>
  <td class="errorValue">298.85</td>
  <td class="errorValue">289.50</td>
  <td class="errorValue">2407350272</td>
  <td class="errorValue">-</td>
  <td class="errorValue">-</td>
    <td class="status error" title="Click here to show output of tool"><a href="benchmark-cpachecker-heap-manipulation-ppreds-integrated-replace.13-08-23_1427.logfiles/with-output-files.simple_safe.i.log">timeout</a></td>
  <td class="errorValue">298.89</td>
  <td class="errorValue">290.43</td>
  <td class="errorValue">2940473344</td>
  <td class="errorValue">-</td>
  <td class="errorValue">-</td>
</tr>
<tr><td title="Click here to show source code"><a href="../../heap-manipulation/sll_to_dll_rev_safe.i">sll_to_dll_rev_safe.i</a></td>
    <td class="status wrong unsafe" title="Click here to show output of tool"><a href="benchmark-cpachecker-heap-manipulation-predicate-replace.13-08-23_1553.logfiles/with-output-files.sll_to_dll_rev_safe.i.log">unsafe</a></td>
  <td class="wrong unsafeValue">1.92</td>
  <td class="wrong unsafeValue">1.26</td>
  <td class="wrong unsafeValue">126189568</td>
  <td class="wrong unsafeValue">0.9</td>
  <td class="wrong unsafeValue">0.000s</td>
    <td class="status wrong unsafe" title="Click here to show output of tool"><a href="benchmark-cpachecker-heap-manipulation-predicate.13-08-23_1559.logfiles/with-output-files.sll_to_dll_rev_safe.i.log">unsafe</a></td>
  <td class="wrong unsafeValue">2.33</td>
  <td class="wrong unsafeValue">1.62</td>
  <td class="wrong unsafeValue">145092608</td>
  <td class="wrong unsafeValue">1.2</td>
  <td class="wrong unsafeValue">0.003s</td>
    <td class="status error" title="Click here to show output of tool"><a href="benchmark-cpachecker-heap-manipulation-ppreds-integrated.13-08-22_2021.logfiles/with-output-files.sll_to_dll_rev_safe.i.log">timeout</a></td>
  <td class="errorValue">299.03</td>
  <td class="errorValue">291.70</td>
  <td class="errorValue">326062080</td>
  <td class="errorValue">-</td>
  <td class="errorValue">-</td>
    <td class="status error" title="Click here to show output of tool"><a href="benchmark-cpachecker-heap-manipulation-ppreds-integrated-replace.13-08-23_1427.logfiles/with-output-files.sll_to_dll_rev_safe.i.log">timeout</a></td>
  <td class="errorValue">298.89</td>
  <td class="errorValue">289.60</td>
  <td class="errorValue">763195392</td>
  <td class="errorValue">-</td>
  <td class="errorValue">-</td>
</tr>
<tr><td title="Click here to show source code"><a href="../../heap-manipulation/splice_safe.i">splice_safe.i</a></td>
    <td class="status correct safe" title="Click here to show output of tool"><a href="benchmark-cpachecker-heap-manipulation-predicate-replace.13-08-23_1553.logfiles/with-output-files.splice_safe.i.log">safe</a></td>
  <td class="correct safeValue">1.89</td>
  <td class="correct safeValue">1.26</td>
  <td class="correct safeValue">122646528</td>
  <td class="correct safeValue">0.9</td>
  <td class="correct safeValue">0.003s</td>
    <td class="status error" title="Click here to show output of tool"><a href="benchmark-cpachecker-heap-manipulation-predicate.13-08-23_1559.logfiles/with-output-files.splice_safe.i.log">timeout</a></td>
  <td class="errorValue">298.68</td>
  <td class="errorValue">228.50</td>
  <td class="errorValue">2723418112</td>
  <td class="errorValue">-</td>
  <td class="errorValue">-</td>
    <td class="status error" title="Click here to show output of tool"><a href="benchmark-cpachecker-heap-manipulation-ppreds-integrated.13-08-22_2021.logfiles/with-output-files.splice_safe.i.log">timeout</a></td>
  <td class="errorValue">299.59</td>
  <td class="errorValue">297.48</td>
  <td class="errorValue">1291202560</td>
  <td class="errorValue">-</td>
  <td class="errorValue">-</td>
    <td class="status error" title="Click here to show output of tool"><a href="benchmark-cpachecker-heap-manipulation-ppreds-integrated-replace.13-08-23_1427.logfiles/with-output-files.splice_safe.i.log">timeout</a></td>
  <td class="errorValue">298.80</td>
  <td class="errorValue">289.37</td>
  <td class="errorValue">1785393152</td>
  <td class="errorValue">-</td>
  <td class="errorValue">-</td>
</tr>
<tr><td title="Click here to show source code"><a href="../../heap-manipulation/alternating_list_safe.cil.c">alternating_list_safe.cil.c</a></td>
    <td class="status correct safe" title="Click here to show output of tool"><a href="benchmark-cpachecker-heap-manipulation-predicate-replace.13-08-23_1553.logfiles/with-output-files.alternating_list_safe.cil.c.log">safe</a></td>
  <td class="correct safeValue">1.87</td>
  <td class="correct safeValue">1.22</td>
  <td class="correct safeValue">121315328</td>
  <td class="correct safeValue">0.8</td>
  <td class="correct safeValue">0.001s</td>
    <td class="status correct safe" title="Click here to show output of tool"><a href="benchmark-cpachecker-heap-manipulation-predicate.13-08-23_1559.logfiles/with-output-files.alternating_list_safe.cil.c.log">safe</a></td>
  <td class="correct safeValue">2.19</td>
  <td class="correct safeValue">1.43</td>
  <td class="correct safeValue">129024000</td>
  <td class="correct safeValue">1.0</td>
  <td class="correct safeValue">0.004s</td>
    <td class="status wrong unsafe" title="Click here to show output of tool"><a href="benchmark-cpachecker-heap-manipulation-ppreds-integrated.13-08-22_2021.logfiles/with-output-files.alternating_list_safe.cil.c.log">unsafe</a></td>
  <td class="wrong unsafeValue">2.75</td>
  <td class="wrong unsafeValue">2.35</td>
  <td class="wrong unsafeValue">127037440</td>
  <td class="wrong unsafeValue">1.6</td>
  <td class="wrong unsafeValue">0.004s</td>
    <td class="status wrong unsafe" title="Click here to show output of tool"><a href="benchmark-cpachecker-heap-manipulation-ppreds-integrated-replace.13-08-23_1427.logfiles/with-output-files.alternating_list_safe.cil.c.log">unsafe</a></td>
  <td class="wrong unsafeValue">1.96</td>
  <td class="wrong unsafeValue">1.27</td>
  <td class="wrong unsafeValue">124604416</td>
  <td class="wrong unsafeValue">0.9</td>
  <td class="wrong unsafeValue">0.002s</td>
</tr>
<tr><td title="Click here to show source code"><a href="../../heap-manipulation/bubble_sort_linux_safe.cil.c">bubble_sort_linux_safe.cil.c</a></td>
    <td class="status wrong unsafe" title="Click here to show output of tool"><a href="benchmark-cpachecker-heap-manipulation-predicate-replace.13-08-23_1553.logfiles/with-output-files.bubble_sort_linux_safe.cil.c.log">unsafe</a></td>
  <td class="wrong unsafeValue">2.22</td>
  <td class="wrong unsafeValue">1.51</td>
  <td class="wrong unsafeValue">128843776</td>
  <td class="wrong unsafeValue">1.1</td>
  <td class="wrong unsafeValue">0.003s</td>
    <td class="status wrong unsafe" title="Click here to show output of tool"><a href="benchmark-cpachecker-heap-manipulation-predicate.13-08-23_1559.logfiles/with-output-files.bubble_sort_linux_safe.cil.c.log">unsafe</a></td>
  <td class="wrong unsafeValue">6.08</td>
  <td class="wrong unsafeValue">5.18</td>
  <td class="wrong unsafeValue">162750464</td>
  <td class="wrong unsafeValue">4.7</td>
  <td class="wrong unsafeValue">0.006s</td>
    <td class="status error" title="Click here to show output of tool"><a href="benchmark-cpachecker-heap-manipulation-ppreds-integrated.13-08-22_2021.logfiles/with-output-files.bubble_sort_linux_safe.cil.c.log">timeout</a></td>
  <td class="errorValue">299.17</td>
  <td class="errorValue">294.85</td>
  <td class="errorValue">1288880128</td>
  <td class="errorValue">-</td>
  <td class="errorValue">-</td>
    <td class="status error" title="Click here to show output of tool"><a href="benchmark-cpachecker-heap-manipulation-ppreds-integrated-replace.13-08-23_1427.logfiles/with-output-files.bubble_sort_linux_safe.cil.c.log">timeout</a></td>
  <td class="errorValue">299.17</td>
  <td class="errorValue">290.53</td>
  <td class="errorValue">1826623488</td>
  <td class="errorValue">-</td>
  <td class="errorValue">-</td>
</tr>
<tr><td title="Click here to show source code"><a href="../../heap-manipulation/bubble_sort_linux_unsafe.cil.c">bubble_sort_linux_unsafe.cil.c</a></td>
    <td class="status correct unsafe" title="Click here to show output of tool"><a href="benchmark-cpachecker-heap-manipulation-predicate-replace.13-08-23_1553.logfiles/with-output-files.bubble_sort_linux_unsafe.cil.c.log">unsafe</a></td>
  <td class="correct unsafeValue">2.28</td>
  <td class="correct unsafeValue">1.54</td>
  <td class="correct unsafeValue">130658304</td>
  <td class="correct unsafeValue">1.1</td>
  <td class="correct unsafeValue">0.007s</td>
    <td class="status correct unsafe" title="Click here to show output of tool"><a href="benchmark-cpachecker-heap-manipulation-predicate.13-08-23_1559.logfiles/with-output-files.bubble_sort_linux_unsafe.cil.c.log">unsafe</a></td>
  <td class="correct unsafeValue">3.44</td>
  <td class="correct unsafeValue">2.62</td>
  <td class="correct unsafeValue">157913088</td>
  <td class="correct unsafeValue">2.2</td>
  <td class="correct unsafeValue">0.002s</td>
    <td class="status error" title="Click here to show output of tool"><a href="benchmark-cpachecker-heap-manipulation-ppreds-integrated.13-08-22_2021.logfiles/with-output-files.bubble_sort_linux_unsafe.cil.c.log">timeout</a></td>
  <td class="errorValue">298.68</td>
  <td class="errorValue">292.14</td>
  <td class="errorValue">1381249024</td>
  <td class="errorValue">-</td>
  <td class="errorValue">-</td>
    <td class="status error" title="Click here to show output of tool"><a href="benchmark-cpachecker-heap-manipulation-ppreds-integrated-replace.13-08-23_1427.logfiles/with-output-files.bubble_sort_linux_unsafe.cil.c.log">timeout</a></td>
  <td class="errorValue">298.87</td>
  <td class="errorValue">290.33</td>
  <td class="errorValue">1842876416</td>
  <td class="errorValue">-</td>
  <td class="errorValue">-</td>
</tr>
<tr><td title="Click here to show source code"><a href="../../heap-manipulation/list_flag_safe.cil.c">list_flag_safe.cil.c</a></td>
    <td class="status correct safe" title="Click here to show output of tool"><a href="benchmark-cpachecker-heap-manipulation-predicate-replace.13-08-23_1553.logfiles/with-output-files.list_flag_safe.cil.c.log">safe</a></td>
  <td class="correct safeValue">1.90</td>
  <td class="correct safeValue">1.25</td>
  <td class="correct safeValue">123015168</td>
  <td class="correct safeValue">0.8</td>
  <td class="correct safeValue">0.003s</td>
    <td class="status correct safe" title="Click here to show output of tool"><a href="benchmark-cpachecker-heap-manipulation-predicate.13-08-23_1559.logfiles/with-output-files.list_flag_safe.cil.c.log">safe</a></td>
  <td class="correct safeValue">2.17</td>
  <td class="correct safeValue">1.39</td>
  <td class="correct safeValue">129433600</td>
  <td class="correct safeValue">1.0</td>
  <td class="correct safeValue">0.004s</td>
    <td class="status wrong unsafe" title="Click here to show output of tool"><a href="benchmark-cpachecker-heap-manipulation-ppreds-integrated.13-08-22_2021.logfiles/with-output-files.list_flag_safe.cil.c.log">unsafe</a></td>
  <td class="wrong unsafeValue">1.92</td>
  <td class="wrong unsafeValue">1.27</td>
  <td class="wrong unsafeValue">127037440</td>
  <td class="wrong unsafeValue">0.9</td>
  <td class="wrong unsafeValue">0.005s</td>
    <td class="status wrong unsafe" title="Click here to show output of tool"><a href="benchmark-cpachecker-heap-manipulation-ppreds-integrated-replace.13-08-23_1427.logfiles/with-output-files.list_flag_safe.cil.c.log">unsafe</a></td>
  <td class="wrong unsafeValue">2.42</td>
  <td class="wrong unsafeValue">1.54</td>
  <td class="wrong unsafeValue">126570496</td>
  <td class="wrong unsafeValue">1.1</td>
  <td class="wrong unsafeValue">0.005s</td>
</tr>
<tr><td title="Click here to show source code"><a href="../../heap-manipulation/list_safe.cil.c">list_safe.cil.c</a></td>
    <td class="status correct safe" title="Click here to show output of tool"><a href="benchmark-cpachecker-heap-manipulation-predicate-replace.13-08-23_1553.logfiles/with-output-files.list_safe.cil.c.log">safe</a></td>
  <td class="correct safeValue">1.97</td>
  <td class="correct safeValue">1.31</td>
  <td class="correct safeValue">121995264</td>
  <td class="correct safeValue">0.9</td>
  <td class="correct safeValue">0.001s</td>
    <td class="status correct safe" title="Click here to show output of tool"><a href="benchmark-cpachecker-heap-manipulation-predicate.13-08-23_1559.logfiles/with-output-files.list_safe.cil.c.log">safe</a></td>
  <td class="correct safeValue">2.05</td>
  <td class="correct safeValue">1.40</td>
  <td class="correct safeValue">129462272</td>
  <td class="correct safeValue">1.0</td>
  <td class="correct safeValue">0.005s</td>
    <td class="status wrong unsafe" title="Click here to show output of tool"><a href="benchmark-cpachecker-heap-manipulation-ppreds-integrated.13-08-22_2021.logfiles/with-output-files.list_safe.cil.c.log">unsafe</a></td>
  <td class="wrong unsafeValue">2.11</td>
  <td class="wrong unsafeValue">1.34</td>
  <td class="wrong unsafeValue">125374464</td>
  <td class="wrong unsafeValue">0.9</td>
  <td class="wrong unsafeValue">0.004s</td>
    <td class="status wrong unsafe" title="Click here to show output of tool"><a href="benchmark-cpachecker-heap-manipulation-ppreds-integrated-replace.13-08-23_1427.logfiles/with-output-files.list_safe.cil.c.log">unsafe</a></td>
  <td class="wrong unsafeValue">2.85</td>
  <td class="wrong unsafeValue">2.39</td>
  <td class="wrong unsafeValue">126308352</td>
  <td class="wrong unsafeValue">1.6</td>
  <td class="wrong unsafeValue">0.001s</td>
</tr>
<tr><td title="Click here to show source code"><a href="../../heap-manipulation/merge_sort_safe.cil.c">merge_sort_safe.cil.c</a></td>
    <td class="status wrong unsafe" title="Click here to show output of tool"><a href="benchmark-cpachecker-heap-manipulation-predicate-replace.13-08-23_1553.logfiles/with-output-files.merge_sort_safe.cil.c.log">unsafe</a></td>
  <td class="wrong unsafeValue">2.09</td>
  <td class="wrong unsafeValue">1.38</td>
  <td class="wrong unsafeValue">126447616</td>
  <td class="wrong unsafeValue">1.0</td>
  <td class="wrong unsafeValue">0.008s</td>
    <td class="status wrong unsafe" title="Click here to show output of tool"><a href="benchmark-cpachecker-heap-manipulation-predicate.13-08-23_1559.logfiles/with-output-files.merge_sort_safe.cil.c.log">unsafe</a></td>
  <td class="wrong unsafeValue">2.19</td>
  <td class="wrong unsafeValue">1.52</td>
  <td class="wrong unsafeValue">132247552</td>
  <td class="wrong unsafeValue">1.1</td>
  <td class="wrong unsafeValue">0.005s</td>
    <td class="status wrong unsafe" title="Click here to show output of tool"><a href="benchmark-cpachecker-heap-manipulation-ppreds-integrated.13-08-22_2021.logfiles/with-output-files.merge_sort_safe.cil.c.log">unsafe</a></td>
  <td class="wrong unsafeValue">2.38</td>
  <td class="wrong unsafeValue">1.62</td>
  <td class="wrong unsafeValue">128708608</td>
  <td class="wrong unsafeValue">1.2</td>
  <td class="wrong unsafeValue">0.007s</td>
    <td class="status error" title="Click here to show output of tool"><a href="benchmark-cpachecker-heap-manipulation-ppreds-integrated-replace.13-08-23_1427.logfiles/with-output-files.merge_sort_safe.cil.c.log">segmentation fault</a></td>
  <td class="errorValue">2.41</td>
  <td class="errorValue">1.47</td>
  <td class="errorValue">124301312</td>
  <td class="errorValue">-</td>
  <td class="errorValue">-</td>
</tr>
<tr><td title="Click here to show source code"><a href="../../heap-manipulation/merge_sort_unsafe.cil.c">merge_sort_unsafe.cil.c</a></td>
    <td class="status correct unsafe" title="Click here to show output of tool"><a href="benchmark-cpachecker-heap-manipulation-predicate-replace.13-08-23_1553.logfiles/with-output-files.merge_sort_unsafe.cil.c.log">unsafe</a></td>
  <td class="correct unsafeValue">2.23</td>
  <td class="correct unsafeValue">1.43</td>
  <td class="correct unsafeValue">125968384</td>
  <td class="correct unsafeValue">1.0</td>
  <td class="correct unsafeValue">0.001s</td>
    <td class="status correct unsafe" title="Click here to show output of tool"><a href="benchmark-cpachecker-heap-manipulation-predicate.13-08-23_1559.logfiles/with-output-files.merge_sort_unsafe.cil.c.log">unsafe</a></td>
  <td class="correct unsafeValue">2.36</td>
  <td class="correct unsafeValue">1.57</td>
  <td class="correct unsafeValue">132988928</td>
  <td class="correct unsafeValue">1.2</td>
  <td class="correct unsafeValue">0.006s</td>
    <td class="status correct unsafe" title="Click here to show output of tool"><a href="benchmark-cpachecker-heap-manipulation-ppreds-integrated.13-08-22_2021.logfiles/with-output-files.merge_sort_unsafe.cil.c.log">unsafe</a></td>
  <td class="correct unsafeValue">2.51</td>
  <td class="correct unsafeValue">1.68</td>
  <td class="correct unsafeValue">128966656</td>
  <td class="correct unsafeValue">1.3</td>
  <td class="correct unsafeValue">0.010s</td>
    <td class="status error" title="Click here to show output of tool"><a href="benchmark-cpachecker-heap-manipulation-ppreds-integrated-replace.13-08-23_1427.logfiles/with-output-files.merge_sort_unsafe.cil.c.log">segmentation fault</a></td>
  <td class="errorValue">2.27</td>
  <td class="errorValue">1.53</td>
  <td class="errorValue">123908096</td>
  <td class="errorValue">-</td>
  <td class="errorValue">-</td>
</tr>
</tbody>

<tfoot>
<tr class="columnTitles">
  <td>heap-manipulation/</td>
  <td colspan="1">status</td>
  <td colspan="1">cputime</td>
  <td colspan="1">walltime</td>
  <td colspan="1">memUsage</td>
  <td colspan="1">total</td>
  <td colspan="1">reached</td>
  <td colspan="1">status</td>
  <td colspan="1">cputime</td>
  <td colspan="1">walltime</td>
  <td colspan="1">memUsage</td>
  <td colspan="1">total</td>
  <td colspan="1">reached</td>
  <td colspan="1">status</td>
  <td colspan="1">cputime</td>
  <td colspan="1">walltime</td>
  <td colspan="1">memUsage</td>
  <td colspan="1">total</td>
  <td colspan="1">reached</td>
  <td colspan="1">status</td>
  <td colspan="1">cputime</td>
  <td colspan="1">walltime</td>
  <td colspan="1">memUsage</td>
  <td colspan="1">total</td>
  <td colspan="1">reached</td>
</tr>
  <tr>
    <td >total files</td>
    <td >17</td>
    <td title="Min: 1.79, Max: 2.28, Average: 1.966, Median: 1.92">33.42</td>
    <td title="Min: 1.18, Max: 1.54, Average: 1.298, Median: 1.26">22.06</td>
    <td title="Min: 119664640, Max: 130658304, Average: 123968572.235, Median: 123555840">2107465728</td>
    <td title="Min: 0.8, Max: 1.1, Average: 0.894, Median: 0.9">15.2</td>
    <td title="Min: 0.000, Max: 0.008, Average: 0.002, Median: 0.001">0.038</td>
    <td >17</td>
    <td title="Min: 1.95, Max: 298.68, Average: 20.011, Median: 2.19">340.18</td>
    <td title="Min: 1.25, Max: 228.50, Average: 15.182, Median: 1.43">258.09</td>
    <td title="Min: 123572224, Max: 2723418112, Average: 287953618.824, Median: 129462272">4895211520</td>
    <td title="Min: 0, Max: 4.7, Average: 1.353, Median: 1.0">23.0</td>
    <td title="Min: 0.000, Max: 0.006, Average: 0.003, Median: 0.003">0.051</td>
    <td >17</td>
    <td title="Min: 1.92, Max: 299.59, Average: 211.670, Median: 298.70">3598.39</td>
    <td title="Min: 1.27, Max: 311.72, Average: 207.486, Median: 290.16">3527.27</td>
    <td title="Min: 125374464, Max: 2439778304, Average: 1159041024.000, Median: 1288880128">19703697408</td>
    <td title="Min: 0, Max: 1.6, Average: 0.347, Median: 0">5.9</td>
    <td title="Min: 0, Max: 0.010, Average: 0.002, Median: 0">0.030</td>
    <td >17</td>
    <td title="Min: 1.96, Max: 299.17, Average: 211.660, Median: 298.80">3598.22</td>
    <td title="Min: 1.27, Max: 291.11, Average: 205.236, Median: 289.60">3489.01</td>
    <td title="Min: 123908096, Max: 2961637376, Average: 1551364336.941, Median: 1785393152">26373193728</td>
    <td title="Min: 0, Max: 1.6, Average: 0.212, Median: 0">3.6</td>
    <td title="Min: 0, Max: 0.005, Average: 0.000, Median: 0">0.008</td>
  </tr>
  <tr>
    <td title="(no bug exists + result is SAFE) OR (bug exists + result is UNSAFE)">correct results</td>
    <td >11</td>
    <td title="Min: 1.79, Max: 2.28, Average: 1.948, Median: 1.89">21.43</td>
    <td title="Min: 1.18, Max: 1.54, Average: 1.284, Median: 1.25">14.12</td>
    <td title="Min: 119664640, Max: 130658304, Average: 122977186.909, Median: 121995264">1352749056</td>
    <td title="Min: 0.8, Max: 1.1, Average: 0.873, Median: 0.8">9.6</td>
    <td title="Min: 0.000, Max: 0.007, Average: 0.002, Median: 0.001">0.023</td>
    <td >10</td>
    <td title="Min: 1.95, Max: 3.44, Average: 2.343, Median: 2.17">23.43</td>
    <td title="Min: 1.25, Max: 2.62, Average: 1.604, Median: 1.40">16.04</td>
    <td title="Min: 123572224, Max: 157913088, Average: 132655513.600, Median: 129433600">1326555136</td>
    <td title="Min: 0.9, Max: 2.2, Average: 1.200, Median: 1.0">12.0</td>
    <td title="Min: 0.000, Max: 0.006, Average: 0.003, Median: 0.004">0.031</td>
    <td >1</td>
    <td title="Min: 2.51, Max: 2.51, Average: 2.510, Median: 2.51">2.51</td>
    <td title="Min: 1.68, Max: 1.68, Average: 1.680, Median: 1.68">1.68</td>
    <td title="Min: 128966656, Max: 128966656, Average: 128966656.000, Median: 128966656">128966656</td>
    <td title="Min: 1.3, Max: 1.3, Average: 1.300, Median: 1.3">1.3</td>
    <td title="Min: 0.010, Max: 0.010, Average: 0.010, Median: 0.010">0.010</td>
    <td >0</td>
    <td >0</td>
    <td >0</td>
    <td >0</td>
    <td >0</td>
    <td >0</td>
  </tr>
  <tr>
    <td title="bug exists + result is SAFE">false negatives</td>
    <td >0</td>
    <td >0</td>
    <td >0</td>
    <td >0</td>
    <td >0</td>
    <td >0</td>
    <td >0</td>
    <td >0</td>
    <td >0</td>
    <td >0</td>
    <td >0</td>
    <td >0</td>
    <td >0</td>
    <td >0</td>
    <td >0</td>
    <td >0</td>
    <td >0</td>
    <td >0</td>
    <td >0</td>
    <td >0</td>
    <td >0</td>
    <td >0</td>
    <td >0</td>
    <td >0</td>
  </tr>
  <tr>
    <td title="no bug exists + result is UNSAFE">false positives</td>
    <td >6</td>
    <td title="Min: 1.80, Max: 2.22, Average: 1.998, Median: 1.99">11.99</td>
    <td title="Min: 1.20, Max: 1.51, Average: 1.323, Median: 1.31">7.94</td>
    <td title="Min: 123555840, Max: 128843776, Average: 125786112.000, Median: 126189568">754716672</td>
    <td title="Min: 0.8, Max: 1.1, Average: 0.933, Median: 0.9">5.6</td>
    <td title="Min: 0.000, Max: 0.008, Average: 0.002, Median: 0.002">0.015</td>
    <td >6</td>
    <td title="Min: 2.08, Max: 6.08, Average: 3.012, Median: 2.33">18.07</td>
    <td title="Min: 1.41, Max: 5.18, Average: 2.258, Median: 1.62">13.55</td>
    <td title="Min: 126750720, Max: 162750464, Average: 140873045.333, Median: 145092608">845238272</td>
    <td title="Min: 1.0, Max: 4.7, Average: 1.833, Median: 1.2">11.0</td>
    <td title="Min: 0.001, Max: 0.006, Average: 0.003, Median: 0.003">0.020</td>
    <td >4</td>
    <td title="Min: 1.92, Max: 2.75, Average: 2.290, Median: 2.38">9.16</td>
    <td title="Min: 1.27, Max: 2.35, Average: 1.645, Median: 1.62">6.58</td>
    <td title="Min: 125374464, Max: 128708608, Average: 127039488.000, Median: 127037440">508157952</td>
    <td title="Min: 0.9, Max: 1.6, Average: 1.150, Median: 1.2">4.6</td>
    <td title="Min: 0.004, Max: 0.007, Average: 0.005, Median: 0.005">0.020</td>
    <td >3</td>
    <td title="Min: 1.96, Max: 2.85, Average: 2.410, Median: 2.42">7.23</td>
    <td title="Min: 1.27, Max: 2.39, Average: 1.733, Median: 1.54">5.20</td>
    <td title="Min: 124604416, Max: 126570496, Average: 125827754.667, Median: 126308352">377483264</td>
    <td title="Min: 0.9, Max: 1.6, Average: 1.200, Median: 1.1">3.6</td>
    <td title="Min: 0.001, Max: 0.005, Average: 0.003, Median: 0.002">0.008</td>
  </tr>
  <tr>
    <td title="14 safe files, 3 unsafe files">score (17 files, max score: 31)</td>
    <td class="score">-5</td>
    <td class="score"></td>
    <td class="score"></td>
    <td class="score"></td>
    <td class="score"></td>
    <td class="score"></td>
    <td class="score">-7</td>
    <td class="score"></td>
    <td class="score"></td>
    <td class="score"></td>
    <td class="score"></td>
    <td class="score"></td>
    <td class="score">-15</td>
    <td class="score"></td>
    <td class="score"></td>
    <td class="score"></td>
    <td class="score"></td>
    <td class="score"></td>
    <td class="score">-12</td>
    <td class="score"></td>
    <td class="score"></td>
    <td class="score"></td>
    <td class="score"></td>
    <td class="score"></td>
  </tr>
<tr class="run">
  <td>Run set</td>
  <td colspan="6">benchmark-cpachecker-heap-manipulation-predicate-replace.with-output-files</td>
  <td colspan="6">benchmark-cpachecker-heap-manipulation-predicate.with-output-files</td>
  <td colspan="6">benchmark-cpachecker-heap-manipulation-ppreds-integrated.with-output-files</td>
  <td colspan="6">benchmark-cpachecker-heap-manipulation-ppreds-integrated-replace.with-output-files</td>
</tr>
</tfoot>
</table>

</body>

</html>