<node id="171011">
  <nid>171011</nid>
  <type>event</type>
  <uid>
    <user id="27263"><![CDATA[27263]]></user>
  </uid>
  <created>1352883989</created>
  <changed>1475892077</changed>
  <title><![CDATA[SE Seminar: Emina Torlak, University of California, Berkeley]]></title>
  <body><![CDATA[<p><strong>Title:</strong> Programming with Constraint Solvers:&nbsp; Toward a Shared Infrastructure for Code Code&nbsp;Checking, Angelic Execution, Debugging, and Synthesis</p><p><strong>Abstract:</strong></p><p>Decision procedures have helped automate key aspects of programming: coming up with a code fragment that implements a desired behavior (synthesis); establishing that an implementation satisfies a desired property (code checking); locating code fragments that cause an undesirable behavior (debugging); and running a partially implemented program to test its existing behaviors (angelic execution).&nbsp; Each of these aspects is supported, at least in part, by a family of formal tools.&nbsp; Most such tools are built on infrastructures that are tailored for a particular purpose, e.g., Boogie for verification and Sketch for synthesis.&nbsp; But so far, no single infrastructure provides a platform for automating the full spectrum of programming activities, making it hard to share advances (in encodings, abstractions, and domain-specific optimizations) across different families of tools.</p><p>&nbsp;This talk outlines a path toward a shared infrastructure for computer-aided programming, drawing lessons from a decade of collective experience in using relational constraint solvers to design and analyze software.&nbsp; We start with a relational view of the heap pioneered in the early work on the Alloy language and Analyzer.&nbsp; We then derive an encoding of programs in the bounded relational logic of Kodkod, which extends Alloy with support for partial models.&nbsp; Next, we show by example how to use such an encoding to build a program checker, an angelic oracle, an automated debugger, and a template-based synthesis tool.&nbsp; We conclude by discussing some of the challenges involved in lifting the low-level commonalities between these systems into an efficient infrastructure for prototyping and embedding of programming tools.</p><p><strong>&nbsp;Bio:</strong> Emina Torlak is a computer scientist at U.C. Berkeley.&nbsp; She received her Ph.D. (2009), M.Eng. (2004) and B.Sc. (2003) in Computer Science from MIT.&nbsp; Emina is interested in improving software design and development through automation.&nbsp;&nbsp; She has developed a variety of tools for helping programmers with lightweight formal reasoning, code and memory model analysis, debugging, and testing.&nbsp; Her current projects focus on software synthesis for high performance computing.</p><p>&nbsp;</p>]]></body>
  <field_summary_sentence>
    <item>
      <value><![CDATA[Programming with Constraint Solvers:  Toward a Shared Infrastructure for Code Checking, Angelic Execution, Debugging, and Synthesis]]></value>
    </item>
  </field_summary_sentence>
  <field_summary>
    <item>
      <value><![CDATA[]]></value>
    </item>
  </field_summary>
  <field_time>
    <item>
      <value><![CDATA[2012-11-19T11:00:00-05:00]]></value>
      <value2><![CDATA[2012-11-19T11:00:00-05:00]]></value2>
      <rrule><![CDATA[]]></rrule>
      <timezone><![CDATA[America/New_York]]></timezone>
    </item>
  </field_time>
  <field_fee>
    <item>
      <value><![CDATA[]]></value>
    </item>
  </field_fee>
  <field_extras>
      </field_extras>
  <field_audience>
      </field_audience>
  <field_media>
      </field_media>
  <field_contact>
    <item>
      <value><![CDATA[<p><a href="mailto:ndongi@cc.gatech.edu">ndongi@cc.gatech.edu</a></p><p>&nbsp;</p>]]></value>
    </item>
  </field_contact>
  <field_location>
    <item>
      <value><![CDATA[]]></value>
    </item>
  </field_location>
  <field_sidebar>
    <item>
      <value><![CDATA[]]></value>
    </item>
  </field_sidebar>
  <field_phone>
    <item>
      <value><![CDATA[]]></value>
    </item>
  </field_phone>
  <field_url>
    <item>
      <url><![CDATA[]]></url>
      <title><![CDATA[]]></title>
            <attributes><![CDATA[]]></attributes>
    </item>
  </field_url>
  <field_email>
    <item>
      <email><![CDATA[]]></email>
    </item>
  </field_email>
  <field_boilerplate>
    <item>
      <nid><![CDATA[]]></nid>
    </item>
  </field_boilerplate>
  <links_related>
      </links_related>
  <files>
      </files>
  <og_groups>
          <item>47223</item>
      </og_groups>
  <og_groups_both>
          <item><![CDATA[College of Computing]]></item>
      </og_groups_both>
  <field_categories>
          <item>
        <tid>1795</tid>
        <value><![CDATA[Seminar/Lecture/Colloquium]]></value>
      </item>
      </field_categories>
  <field_keywords>
      </field_keywords>
  <field_userdata><![CDATA[]]></field_userdata>
</node>
