<?xml version="1.0" encoding="utf-8"?>
<TEI xmlns="http://www.tei-c.org/ns/1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:hal="http://hal.archives-ouvertes.fr/" xmlns:gml="http://www.opengis.net/gml/3.3/" xmlns:gmlce="http://www.opengis.net/gml/3.3/ce" version="1.1" xsi:schemaLocation="http://www.tei-c.org/ns/1.0 http://api.archives-ouvertes.fr/documents/aofr-sword.xsd">
  <teiHeader>
    <fileDesc>
      <titleStmt>
        <title>HAL TEI export of hal-03283241</title>
      </titleStmt>
      <publicationStmt>
        <distributor>CCSD</distributor>
        <availability status="restricted">
          <licence target="https://creativecommons.org/publicdomain/zero/1.0/">CC0 1.0 - Universal</licence>
        </availability>
        <date when="2026-05-21T15:09:28+02:00"/>
      </publicationStmt>
      <sourceDesc>
        <p part="N">HAL API Platform</p>
      </sourceDesc>
    </fileDesc>
  </teiHeader>
  <text>
    <body>
      <listBibl>
        <biblFull>
          <titleStmt>
            <title xml:lang="en">Typechecking Java Protocols with [St]Mungo</title>
            <author role="aut">
              <persName>
                <forename type="first">A.</forename>
                <forename type="middle">Laura</forename>
                <surname>Voinea</surname>
              </persName>
              <email type="md5">28e8ee4d5a308e350e542fa59d2f3715</email>
              <email type="domain">research.gla.ac.uk</email>
              <idno type="idhal" notation="numeric">1104899</idno>
              <idno type="halauthorid" notation="string">2248215-1104899</idno>
              <affiliation ref="#struct-25887"/>
              <affiliation ref="#struct-18317"/>
            </author>
            <author role="aut">
              <persName>
                <forename type="first">Ornela</forename>
                <surname>Dardha</surname>
              </persName>
              <email type="md5">974718e55933e71211cb4fc8ee7a0e46</email>
              <email type="domain">glasgow.ac.uk</email>
              <idno type="idhal" notation="numeric">978918</idno>
              <idno type="halauthorid" notation="string">781423-978918</idno>
              <affiliation ref="#struct-25887"/>
              <affiliation ref="#struct-18317"/>
            </author>
            <author role="aut">
              <persName>
                <forename type="first">Simon</forename>
                <forename type="middle">J.</forename>
                <surname>Gay</surname>
              </persName>
              <email type="md5">5457c638fab587133a802daeb3112477</email>
              <email type="domain">glasgow.ac.uk</email>
              <idno type="idhal" notation="numeric">925471</idno>
              <idno type="halauthorid" notation="string">637411-925471</idno>
              <affiliation ref="#struct-25887"/>
              <affiliation ref="#struct-18317"/>
            </author>
            <editor role="depositor">
              <persName>
                <forename>Hal</forename>
                <surname>Ifip</surname>
              </persName>
              <email type="md5">2073ac78024b6e13f2714db96e9b1e63</email>
              <email type="domain">inria.fr</email>
            </editor>
          </titleStmt>
          <editionStmt>
            <edition n="v1" type="current">
              <date type="whenSubmitted">2021-07-09 17:54:04</date>
              <date type="whenModified">2024-03-20 15:48:03</date>
              <date type="whenReleased">2021-07-09 17:57:24</date>
              <date type="whenProduced">2020-06-15</date>
              <date type="whenEndEmbargoed">2023-01-01</date>
              <ref type="file" target="https://inria.hal.science/hal-03283241v1/document">
                <date notBefore="2023-01-01"/>
              </ref>
              <ref type="file" subtype="author" n="1" target="https://inria.hal.science/hal-03283241v1/file/495615_1_En_12_Chapter.pdf" id="file-3283241-2885375">
                <date notBefore="2023-01-01"/>
              </ref>
              <ref type="externalLink" target="https://link.springer.com/content/pdf/10.1007%2F978-3-030-50086-3_12.pdf"/>
            </edition>
            <respStmt>
              <resp>contributor</resp>
              <name key="200187">
                <persName>
                  <forename>Hal</forename>
                  <surname>Ifip</surname>
                </persName>
                <email type="md5">2073ac78024b6e13f2714db96e9b1e63</email>
                <email type="domain">inria.fr</email>
              </name>
            </respStmt>
          </editionStmt>
          <publicationStmt>
            <distributor>CCSD</distributor>
            <idno type="halId">hal-03283241</idno>
            <idno type="halUri">https://inria.hal.science/hal-03283241</idno>
            <idno type="halBibtex">voinea:hal-03283241</idno>
            <idno type="halRefHtml">&lt;i&gt;40th International Conference on Formal Techniques for Distributed Objects, Components, and Systems (FORTE)&lt;/i&gt;, Jun 2020, Valletta, Malta. pp.208-224, &lt;a target="_blank" href="https://dx.doi.org/10.1007/978-3-030-50086-3_12"&gt;&amp;#x27E8;10.1007/978-3-030-50086-3_12&amp;#x27E9;&lt;/a&gt;</idno>
            <idno type="halRef">40th International Conference on Formal Techniques for Distributed Objects, Components, and Systems (FORTE), Jun 2020, Valletta, Malta. pp.208-224, &amp;#x27E8;10.1007/978-3-030-50086-3_12&amp;#x27E9;</idno>
            <availability status="restricted">
              <licence target="https://creativecommons.org/licenses/by/4.0/">CC BY 4.0 - Attribution<ref corresp="#file-3283241-2885375"/></licence>
            </availability>
          </publicationStmt>
          <seriesStmt>
            <idno type="stamp" n="IFIP-LNCS" corresp="IFIP">IFIP - Lecture Notes in Computer Science</idno>
            <idno type="stamp" n="IFIP">IFIP - International Federation for Information Processing</idno>
            <idno type="stamp" n="IFIP-TC" corresp="IFIP">IFIP Technical Committees </idno>
            <idno type="stamp" n="IFIP-WG" corresp="IFIP">Working Groups</idno>
            <idno type="stamp" n="IFIP-TC6" corresp="IFIP-TC">TC 6: Communication Systems</idno>
            <idno type="stamp" n="IFIP-WG6-1" corresp="IFIP-WG">Architectures and Protocols for Distributed Systems</idno>
            <idno type="stamp" n="IFIP-FORTE">IFIP-FORTE</idno>
            <idno type="stamp" n="IFIP-LNCS-12136" corresp="IFIP-LNCS">Formal Techniques for Distributed Objects, Components, and Systems</idno>
          </seriesStmt>
          <notesStmt>
            <note type="commentary">Part 2: Tutorials</note>
            <note type="audience" n="2">International</note>
            <note type="invited" n="0">No</note>
            <note type="popular" n="0">No</note>
            <note type="peer" n="1">Yes</note>
            <note type="proceedings" n="1">Yes</note>
          </notesStmt>
          <sourceDesc>
            <biblStruct>
              <analytic>
                <title xml:lang="en">Typechecking Java Protocols with [St]Mungo</title>
                <author role="aut">
                  <persName>
                    <forename type="first">A.</forename>
                    <forename type="middle">Laura</forename>
                    <surname>Voinea</surname>
                  </persName>
                  <email type="md5">28e8ee4d5a308e350e542fa59d2f3715</email>
                  <email type="domain">research.gla.ac.uk</email>
                  <idno type="idhal" notation="numeric">1104899</idno>
                  <idno type="halauthorid" notation="string">2248215-1104899</idno>
                  <affiliation ref="#struct-25887"/>
                  <affiliation ref="#struct-18317"/>
                </author>
                <author role="aut">
                  <persName>
                    <forename type="first">Ornela</forename>
                    <surname>Dardha</surname>
                  </persName>
                  <email type="md5">974718e55933e71211cb4fc8ee7a0e46</email>
                  <email type="domain">glasgow.ac.uk</email>
                  <idno type="idhal" notation="numeric">978918</idno>
                  <idno type="halauthorid" notation="string">781423-978918</idno>
                  <affiliation ref="#struct-25887"/>
                  <affiliation ref="#struct-18317"/>
                </author>
                <author role="aut">
                  <persName>
                    <forename type="first">Simon</forename>
                    <forename type="middle">J.</forename>
                    <surname>Gay</surname>
                  </persName>
                  <email type="md5">5457c638fab587133a802daeb3112477</email>
                  <email type="domain">glasgow.ac.uk</email>
                  <idno type="idhal" notation="numeric">925471</idno>
                  <idno type="halauthorid" notation="string">637411-925471</idno>
                  <affiliation ref="#struct-25887"/>
                  <affiliation ref="#struct-18317"/>
                </author>
              </analytic>
              <monogr>
                <title level="m">Lecture Notes in Computer Science</title>
                <meeting>
                  <title>40th International Conference on Formal Techniques for Distributed Objects, Components, and Systems (FORTE)</title>
                  <date type="start">2020-06-15</date>
                  <date type="end">2020-06-19</date>
                  <settlement>Valletta</settlement>
                  <country key="MT">Malta</country>
                </meeting>
                <editor>Alexey Gotsman</editor>
                <editor>Ana Sokolova</editor>
                <imprint>
                  <publisher>Springer International Publishing</publisher>
                  <biblScope unit="serie">Formal Techniques for Distributed Objects, Components, and Systems</biblScope>
                  <biblScope unit="volume">LNCS-12136</biblScope>
                  <biblScope unit="pp">208-224</biblScope>
                  <date type="datePub">2020</date>
                </imprint>
              </monogr>
              <idno type="doi">10.1007/978-3-030-50086-3_12</idno>
            </biblStruct>
          </sourceDesc>
          <profileDesc>
            <langUsage>
              <language ident="en">English</language>
            </langUsage>
            <textClass>
              <keywords scheme="author">
                <term xml:lang="en">HTTP protocol</term>
                <term xml:lang="en">StMungo</term>
                <term xml:lang="en">Mungo</term>
                <term xml:lang="en">Typestate</term>
                <term xml:lang="en">Multiparty session types</term>
              </keywords>
              <classCode scheme="halDomain" n="info">Computer Science [cs]</classCode>
              <classCode scheme="halDomain" n="info.info-ni">Computer Science [cs]/Networking and Internet Architecture [cs.NI]</classCode>
              <classCode scheme="halTypology" n="COMM">Conference papers</classCode>
              <classCode scheme="halOldTypology" n="COMM">Conference papers</classCode>
              <classCode scheme="halTreeTypology" n="COMM">Conference papers</classCode>
            </textClass>
            <abstract xml:lang="en">
              <p>This is a tutorial paper on [St]Mungo, a toolchain based on multiparty session types and their connection to typestates for safe distributed programming in Java language.The StMungo (“Scribble-to-Mungo”) tool is a bridge between multiparty session types and typestates. StMungo translates a communication protocol, namely a sequence of sends and receives of messages, given as a multiparty session type in the Scribble language, into a typestate specification and a Java API skeleton. The generated API skeleton is then further extended with the necessary logic, and finally typechecked by Mungo. The Mungo tool extends Java with (optional) typestate specifications. A typestate is a state machine specifying a Java object protocol, namely the permitted sequence of method calls of that object. Mungo statically typechecks that method calls follow the object’s protocol, as defined by its typestate specification. Finally, if no errors are reported, the code is compiled with javac and run as standard Java code.In this tutorial paper we give an overview of the stages of the [St]Mungo toolchain, starting from Scribble communication protocols, translating to Java classes with typestates, and finally to typechecking method calls with Mungo. We illustrate the [St]Mungo toolchain via a real-world case study, the HTTP client-server request-response protocol over TCP. During the tutorial session, we will apply [St]Mungo to a range of examples having increasing complexity, with HTTP being one of them.</p>
            </abstract>
            <particDesc>
              <org type="consortium">TC 6</org>
              <org type="consortium">WG 6.1</org>
            </particDesc>
          </profileDesc>
        </biblFull>
      </listBibl>
    </body>
    <back>
      <listOrg type="structures">
        <org type="regroupinstitution" xml:id="struct-25887" status="VALID">
          <idno type="IdRef">02643184X</idno>
          <idno type="ISNI">000000012193314X</idno>
          <idno type="ROR">https://ror.org/00vtgdb53</idno>
          <orgName>University of Glasgow</orgName>
          <date type="start">1451-01-01</date>
          <desc>
            <address>
              <addrLine>Glasgow G12 8QQ Scotland</addrLine>
              <country key="GB"/>
            </address>
            <ref type="url">https://www.gla.ac.uk/</ref>
          </desc>
        </org>
        <org type="regrouplaboratory" xml:id="struct-18317" status="VALID">
          <orgName>School of Computing Science [Glasgow]</orgName>
          <desc>
            <address>
              <addrLine>Sir Alwyn Williams Building - University of Glasgow - Glasgow G12 8QQ</addrLine>
              <country key="GB"/>
            </address>
            <ref type="url">https://www.gla.ac.uk/schools/computing/</ref>
          </desc>
          <listRelation>
            <relation active="#struct-25887" type="direct"/>
          </listRelation>
        </org>
      </listOrg>
    </back>
  </text>
</TEI>