<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0 plus SVG 1.1//EN" "http://www.w3.org/2002/04/xhtml-math-svg/xhtml-math-svg.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
  <head>
    <meta http-equiv="Content-Type" content="application/xhtml+xml; charset=utf-8"/>
    <title>Project-Team:COMPSYS</title>
    <link rel="stylesheet" href="../static/css/raweb.css" type="text/css"/>
    <meta name="description" content="New Results - Analyzing C Programs with Arrays"/>
    <meta name="dc.title" content="New Results - Analyzing C Programs with Arrays"/>
    <meta name="dc.creator" content="Laure Gonnord"/>
    <meta name="dc.creator" content="David Monniaux"/>
    <meta name="dc.subject" content=""/>
    <meta name="dc.publisher" content="INRIA"/>
    <meta name="dc.date" content="(SCHEME=ISO8601) 2015-01"/>
    <meta name="dc.type" content="Report"/>
    <meta name="dc.language" content="(SCHEME=ISO639-1) en"/>
    <meta name="projet" content="COMPSYS"/>
    <!-- Piwik -->
    <script type="text/javascript" src="/rapportsactivite/piwik.js"></script>
    <noscript><p><img src="//piwik.inria.fr/piwik.php?idsite=49" style="border:0;" alt="" /></p></noscript>
    <!-- End Piwik Code -->
  </head>
  <body>
    <div class="tdmdiv">
      <div class="logo">
        <a href="http://www.inria.fr">
          <img style="align:bottom; border:none" src="../static/img/icons/logo_INRIA-coul.jpg" alt="Inria"/>
        </a>
      </div>
      <div class="TdmEntry">
        <div class="tdmentete">
          <a href="uid0.html">Project-Team Compsys</a>
        </div>
        <span>
          <a href="uid1.html">Members</a>
        </span>
      </div>
      <div class="TdmEntry">Overall Objectives<ul><li><a href="./uid3.html">Introduction</a></li><li><a href="./uid6.html">General Presentation</a></li><li><a href="./uid11.html">Summary of Compsys I Achievements</a></li><li><a href="./uid17.html">Quick View of Compsys II
Achievements and Directions for Compsys III</a></li></ul></div>
      <div class="TdmEntry">Research Program<ul><li><a href="uid21.html&#10;&#9;&#9;  ">Architecture and Compilation Trends</a></li><li><a href="uid36.html&#10;&#9;&#9;  ">Code Analysis, Code Transformations, Code Optimizations</a></li><li><a href="uid39.html&#10;&#9;&#9;  ">Mathematical Tools</a></li></ul></div>
      <div class="TdmEntry">Application Domains<ul><li><a href="uid41.html&#10;&#9;&#9;  ">Compilers for Embedded Computing Systems</a></li><li><a href="uid42.html&#10;&#9;&#9;  ">Users of HPC Platforms and Scientific Computing</a></li></ul></div>
      <div class="TdmEntry">
        <a href="./uid46.html">Highlights of the Year</a>
      </div>
      <div class="TdmEntry">New Software and Platforms<ul><li><a href="uid57.html&#10;&#9;&#9;  ">Aspic</a></li><li><a href="uid61.html&#10;&#9;&#9;  ">DCC</a></li><li><a href="uid64.html&#10;&#9;&#9;  ">Lattifold</a></li><li><a href="uid67.html&#10;&#9;&#9;  ">OpenOrdo</a></li><li><a href="uid69.html&#10;&#9;&#9;  ">PoCo</a></li><li><a href="uid72.html&#10;&#9;&#9;  ">PolyOrdo</a></li><li><a href="uid74.html&#10;&#9;&#9;  ">PPCG-ParamTiling</a></li><li><a href="uid77.html&#10;&#9;&#9;  ">Termite</a></li><li><a href="uid81.html&#10;&#9;&#9;  ">Vaphor</a></li></ul></div>
      <div class="TdmEntry">New Results<ul><li><a href="uid86.html&#10;&#9;&#9;  ">Studying Optimal Spilling in the Light of SSA</a></li><li><a href="uid87.html&#10;&#9;&#9;  ">Symbolic Range of Pointers in C programs</a></li><li class="tdmActPage"><a href="uid88.html&#10;&#9;&#9;  ">Analyzing C Programs with Arrays</a></li><li><a href="uid89.html&#10;&#9;&#9;  ">Termination of C Programs</a></li><li><a href="uid90.html&#10;&#9;&#9;  ">Data-aware Process Networks</a></li><li><a href="uid91.html&#10;&#9;&#9;  ">Mono-parametric Tiling</a></li><li><a href="uid92.html&#10;&#9;&#9;  ">Exact and Approximated Data-Reuse Optimizations
for Tiling with Parametric Sizes</a></li><li><a href="uid93.html&#10;&#9;&#9;  ">Analysis of X10 Programs</a></li><li><a href="uid94.html&#10;&#9;&#9;  ">Revisiting Loop Transformations with X10 Clocks</a></li><li><a href="uid95.html&#10;&#9;&#9;  ">Static Analysis of OpenStream Programs</a></li><li><a href="uid96.html&#10;&#9;&#9;  ">Handling Polynomials for Program Analysis and
Transformation</a></li><li><a href="uid97.html&#10;&#9;&#9;  ">Liveness Analysis in Explicitly-Parallel
Programs</a></li><li><a href="uid98.html&#10;&#9;&#9;  ">Extended Lattice-Based Memory Allocation</a></li><li><a href="uid99.html&#10;&#9;&#9;  ">Stencil Accelerators</a></li><li><a href="uid101.html&#10;&#9;&#9;  ">PolyApps</a></li></ul></div>
      <div class="TdmEntry">Bilateral Contracts and Grants with Industry<ul><li><a href="uid103.html&#10;&#9;&#9;  ">ManycoreLabs Project with Kalray</a></li><li><a href="uid104.html&#10;&#9;&#9;  ">Technological Transfer: XtremLogic Start-Up</a></li></ul></div>
      <div class="TdmEntry">Partnerships and Cooperations<ul><li><a href="uid106.html&#10;&#9;&#9;  ">Regional Initiatives</a></li><li><a href="uid110.html&#10;&#9;&#9;  ">National Initiatives</a></li><li><a href="uid115.html&#10;&#9;&#9;  ">European Initiatives</a></li><li><a href="uid118.html&#10;&#9;&#9;  ">International Initiatives</a></li><li><a href="uid126.html&#10;&#9;&#9;  ">International Research Visitors</a></li></ul></div>
      <div class="TdmEntry">Dissemination<ul><li><a href="uid136.html&#10;&#9;&#9;  ">Promoting Scientific Activities</a></li><li><a href="uid149.html&#10;&#9;&#9;  ">Teaching - Supervision - Juries</a></li><li><a href="uid176.html&#10;&#9;&#9;  ">Popularization</a></li></ul></div>
      <div class="TdmEntry">
        <div>Bibliography</div>
      </div>
      <div class="TdmEntry">
        <ul>
          <li>
            <a id="tdmbibentyear" href="bibliography.html">Publications of the year</a>
          </li>
          <li>
            <a id="tdmbibentfoot" href="bibliography.html#References">References in notes</a>
          </li>
        </ul>
      </div>
    </div>
    <div id="main">
      <div class="mainentete">
        <div id="head_agauche">
          <small><a href="http://www.inria.fr">
	    
	    Inria
	  </a> | <a href="../index.html">
	    
	    Raweb 
	    2015</a> | <a href="http://www.inria.fr/en/teams/compsys">Presentation of the Project-Team COMPSYS</a> | <a href="http://www.ens-lyon.fr/LIP/COMPSYS/index.html.en">COMPSYS Web Site
	  </a></small>
        </div>
        <div id="head_adroite">
          <table class="qrcode">
            <tr>
              <td>
                <a href="compsys.xml">
                  <img style="align:bottom; border:none" alt="XML" src="../static/img/icons/xml_motif.png"/>
                </a>
              </td>
              <td>
                <a href="compsys.pdf">
                  <img style="align:bottom; border:none" alt="PDF" src="IMG/qrcode-compsys-pdf.png"/>
                </a>
              </td>
              <td>
                <a href="../compsys/compsys.epub">
                  <img style="align:bottom; border:none" alt="e-pub" src="IMG/qrcode-compsys-epub.png"/>
                </a>
              </td>
            </tr>
            <tr>
              <td/>
              <td>PDF
</td>
              <td>e-Pub
</td>
            </tr>
          </table>
        </div>
      </div>
      <!--FIN du corps du module-->
      <br/>
      <div class="bottomNavigation">
        <div class="tail_aucentre">
          <a href="./uid87.html" accesskey="P"><img style="align:bottom; border:none" alt="previous" src="../static/img/icons/previous_motif.jpg"/> Previous | </a>
          <a href="./uid0.html" accesskey="U"><img style="align:bottom; border:none" alt="up" src="../static/img/icons/up_motif.jpg"/>  Home</a>
          <a href="./uid89.html" accesskey="N"> | Next <img style="align:bottom; border:none" alt="next" src="../static/img/icons/next_motif.jpg"/></a>
        </div>
        <br/>
      </div>
      <div id="textepage">
        <!--DEBUT2 du corps du module-->
        <h2>Section: 
      New Results</h2>
        <h3 class="titre3">Analyzing C Programs with Arrays</h3>
        <p class="participants"><span class="part">Participants</span> :
	Laure Gonnord, David Monniaux [CNRS/VERIMAG] .</p>
        <p>Automatically verifying safety properties of programs is hard, and it is even
harder if the program acts upon arrays or other forms of maps. Many
approaches exist for verifying programs operating upon Boolean and integer
values (e.g., abstract interpretation, counter-examples guided abstraction
refinement using interpolants), but transposing them to array properties has
been fraught with difficulties.</p>
        <p>In contrast to most preceding approaches, we do not introduce a new abstract
domain or a new interpolation procedure for arrays. Instead, we generate an
abstraction as a scalar problem and feed it to a preexisting solver. The
intuition is that if there is a proof of safety of the program, it is likely
that it can be expressed by elementary steps between properties involving
only a small (tunable) number <span class="math"><math xmlns="http://www.w3.org/1998/Math/MathML"><mi>N</mi></math></span> of cells from the array.</p>
        <p>Our transformed problem is expressed using Horn clauses over scalar
variables, a common format with clear and unambiguous logical semantics, for
which there exist several solvers. In contrast, solvers directly operating
over Horn clauses with arrays are still very immature.</p>
        <p>An important characteristic of our encoding is that it creates a non-linear
Horn problem, with tree unfoldings, contrary to the linear problems obtained
by flatly encoding the control-graph structure. Our encoding thus cannot be
expressed by encoding into another control-flow graph problem, and truly
leverages the Horn clause format.</p>
        <p>Experiments with our prototype <span class="smallcap">VAPHOR </span> (see
Section <a title="Vaphor" href="./uid81.html">
	6.9</a> ) show that this approach can
prove automatically the functional correctness of several classical examples
of the literature, including <i>selection sort</i>, <i>bubble sort</i>,
<i>insertion sort</i>, as well as examples from previous articles on array
analysis.</p>
        <p>This work is presented in a research report <a href="./bibliography.html#compsys-2015-bid14">[28]</a> 
and is currently under submission.
</p>
      </div>
      <!--FIN du corps du module-->
      <br/>
      <div class="bottomNavigation">
        <div class="tail_aucentre">
          <a href="./uid87.html" accesskey="P"><img style="align:bottom; border:none" alt="previous" src="../static/img/icons/previous_motif.jpg"/> Previous | </a>
          <a href="./uid0.html" accesskey="U"><img style="align:bottom; border:none" alt="up" src="../static/img/icons/up_motif.jpg"/>  Home</a>
          <a href="./uid89.html" accesskey="N"> | Next <img style="align:bottom; border:none" alt="next" src="../static/img/icons/next_motif.jpg"/></a>
        </div>
        <br/>
      </div>
    </div>
  </body>
</html>
