<!DOCTYPE article PUBLIC "-//NLM//DTD JATS (Z39.96) Journal Archiving and Interchange DTD v1.0 20120330//EN" "JATS-archivearticle1.dtd">
<article xmlns:xlink="http://www.w3.org/1999/xlink">
  <front>
    <journal-meta />
    <article-meta>
      <title-group>
        <article-title>Do Formal Methodists have Bell-Shaped Heads?</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>(Invited Paper)</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <aff id="aff0">
          <label>0</label>
          <institution>Timothy G. Gri n Computer Laboratory University of Cambridge</institution>
        </aff>
      </contrib-group>
      <abstract>
        <p>Data networking has not been kind to formal methods. The Internet's birth gave rise to an intense culture war between the bell-heads and the net-heads, which the net-heads have largely won. In this area formal methodists have long been seen as the humourless enforcers of the defeated bell-heads. The result: formal methods are not a part of the mainstream of data networking and are largely relegated to the the thankless task of reverse engineering (security-related protocols are perhaps the rare exception). If we want to move beyond this situation we must build tools that enhance the ability to engage in the Internet culture | tools that encourage community-based development of open-source systems and embrace the open-ended exploration of design spaces that are only partially understood.</p>
      </abstract>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>-</title>
      <p>2</p>
    </sec>
    <sec id="sec-2">
      <title>Satis ed with Reverse-Engineering?</title>
      <p>If Internet protocols are not developed from formal speci cations it may still be worthwhile to
reverse engineer existing protocols. I've done a lot of reverse engineering with routing protocols.
I think it can be very fruitful, especially if we can come away with general principles that have
applicability beyond protocol-speci c details. This last point is very important | your results
must be interesting to a larger community because you can't expect the networking community
to care. By the time you have gured something out, they will have moved on to a new set of
problems.
3</p>
    </sec>
    <sec id="sec-3">
      <title>Change of Thinking?</title>
      <p>
        Given the cultural constraints, perhaps reverse engineering is the best we can do. Attempts have
been made to lower the cost of formal methods, see the work on lightweight formal methods [
        <xref ref-type="bibr" rid="ref1 ref6">1, 6</xref>
        ].
I think that it is a very worthwhile e ort, but one that is useful in all areas where formal methods
are applied. Is there an approach that fully embraces the community-based open-ended nature
of Internet-related systems work?
      </p>
      <p>
        I'll suggest one answer | domain-speci c languages (DSLs). It seems to me that DSLs
allow us to raise the level of abstraction in which problems are solved. I will discuss only three
examples | the Statecall Policy Language (SPL) [
        <xref ref-type="bibr" rid="ref8">8</xref>
        ], Ynot [
        <xref ref-type="bibr" rid="ref3">3</xref>
        ], and Idris [
        <xref ref-type="bibr" rid="ref2">2</xref>
        ].
      </p>
      <p>I've had fun discussing this topic with Anil Madhavapeddy, Jon Crowcroft, and Boon Thau
Loo. I hope this short talk will stimulate further discussion at the ATE workshop.</p>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          [1]
          <string-name>
            <given-names>S.</given-names>
            <surname>Agerholm</surname>
          </string-name>
          and
          <string-name>
            <given-names>P. G.</given-names>
            <surname>Larsen</surname>
          </string-name>
          .
          <article-title>A lightweight approach to formal methods</article-title>
          .
          <source>Proceedings of the International Workshop on Current Trends in Applied Formal Methods</source>
          ,
          <year>1998</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          [2]
          <string-name>
            <given-names>E.</given-names>
            <surname>Brady</surname>
          </string-name>
          .
          <article-title>Idris - systems programming meets full dependent types</article-title>
          .
          <source>In PLPV</source>
          <year>2011</year>
          ,
          <year>2011</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          [3]
          <string-name>
            <given-names>A.</given-names>
            <surname>Chlipala</surname>
          </string-name>
          , G. Malecha,
          <string-name>
            <given-names>G.</given-names>
            <surname>Morrisett</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Shinnar</surname>
          </string-name>
          , and
          <string-name>
            <given-names>R.</given-names>
            <surname>Wisnesky</surname>
          </string-name>
          .
          <article-title>E ective interactive proofs for higher-order imperative programs</article-title>
          .
          <source>In Proceedings of ICFP'09</source>
          ,
          <year>2009</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          [4]
          <string-name>
            <given-names>J.</given-names>
            <surname>Day</surname>
          </string-name>
          .
          <article-title>Patterns in Network Architectures : A return to fundamentals</article-title>
          .
          <source>Prentice Hall</source>
          ,
          <year>2008</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          [5]
          <string-name>
            <given-names>M. G.</given-names>
            <surname>Gouda</surname>
          </string-name>
          .
          <article-title>Elements of Network Protocol Design</article-title>
          . Wiley,
          <year>1998</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          [6]
          <string-name>
            <given-names>D.</given-names>
            <surname>Jackson</surname>
          </string-name>
          .
          <article-title>Alloy: A lightweight object modelling notation</article-title>
          .
          <source>ACM Transactions on Software Engineering and Methodology (TOSEM)</source>
          ,
          <volume>11</volume>
          (
          <issue>2</issue>
          ):
          <volume>256</volume>
          {
          <fpage>290</fpage>
          ,
          <year>2002</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          [7]
          <string-name>
            <given-names>L.</given-names>
            <surname>Lamport</surname>
          </string-name>
          .
          <article-title>State the problem before describing the solution</article-title>
          .
          <source>ACM SIGSOFT Software Engineering Notes</source>
          ,
          <volume>3</volume>
          (
          <issue>1</issue>
          ):
          <fpage>26</fpage>
          ,
          <year>1978</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          [8]
          <string-name>
            <given-names>A.</given-names>
            <surname>Madhavapeddy</surname>
          </string-name>
          .
          <article-title>Combining static model checking with dynamic enforcement using the statecall policy language</article-title>
          .
          <source>In International Conference on Formal Engineering Methods (ICFEM)</source>
          ,
          <year>2009</year>
          .
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>