<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE article PUBLIC "-//TaxonX//DTD Taxonomic Treatment Publishing DTD v0 20100105//EN" "../../nlm/tax-treatment-NS0.dtd">
<article xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:tp="http://www.plazi.org/taxpub" article-type="research-article" dtd-version="3.0" xml:lang="en">
  <front>
    <journal-meta>
      <journal-id journal-id-type="publisher-id">109</journal-id>
      <journal-id journal-id-type="index">urn:lsid:arphahub.com:pub:3dc5f44e-8666-58db-bc76-a455210e8891</journal-id>
      <journal-title-group>
        <journal-title xml:lang="en">JUCS - Journal of Universal Computer Science</journal-title>
        <abbrev-journal-title xml:lang="en">jucs</abbrev-journal-title>
      </journal-title-group>
      <issn pub-type="ppub">0948-695X</issn>
      <issn pub-type="epub">0948-6968</issn>
      <publisher>
        <publisher-name>Journal of Universal Computer Science</publisher-name>
      </publisher>
    </journal-meta>
    <article-meta>
      <article-id pub-id-type="doi">10.3217/jucs-015-14-2836</article-id>
      <article-id pub-id-type="publisher-id">29522</article-id>
      <article-categories>
        <subj-group subj-group-type="heading">
          <subject>Research Article</subject>
        </subj-group>
        <subj-group subj-group-type="scientific_subject">
          <subject>D.2.5 - Testing and Debugging</subject>
          <subject>D.3.1 - Formal Definitions and Theory</subject>
          <subject>D.3.2 - Language Classifications</subject>
          <subject>F.3.2 - Semantics of Programming Languages</subject>
        </subj-group>
      </article-categories>
      <title-group>
        <article-title>A Debugging System Based on Natural Semantics</article-title>
      </title-group>
      <contrib-group content-type="authors">
        <contrib contrib-type="author" corresp="yes">
          <name name-style="western">
            <surname>Encina</surname>
            <given-names>Alberto de la</given-names>
          </name>
          <email xlink:type="simple">albertoe@sip.ucm.es</email>
          <xref ref-type="aff" rid="A1">1</xref>
        </contrib>
        <contrib contrib-type="author" corresp="no">
          <name name-style="western">
            <surname>Llana</surname>
            <given-names>Luis</given-names>
          </name>
          <xref ref-type="aff" rid="A1">1</xref>
        </contrib>
        <contrib contrib-type="author" corresp="no">
          <name name-style="western">
            <surname>Rubio</surname>
            <given-names>Fernando</given-names>
          </name>
          <xref ref-type="aff" rid="A1">1</xref>
        </contrib>
      </contrib-group>
      <aff id="A1">
        <label>1</label>
        <addr-line content-type="verbatim">Universidad Complutense de Madrid, Madrid, Spain</addr-line>
        <institution>Universidad Complutense de Madrid</institution>
        <addr-line content-type="city">Madrid</addr-line>
        <country>Spain</country>
      </aff>
      <author-notes>
        <fn fn-type="corresp">
          <p>Corresponding author: Alberto de la Encina (<email xlink:type="simple">albertoe@sip.ucm.es</email>).</p>
        </fn>
        <fn fn-type="edited-by">
          <p>Academic editor: </p>
        </fn>
      </author-notes>
      <pub-date pub-type="collection">
        <year>2009</year>
      </pub-date>
      <pub-date pub-type="epub">
        <day>01</day>
        <month>08</month>
        <year>2009</year>
      </pub-date>
      <volume>15</volume>
      <issue>14</issue>
      <fpage>2836</fpage>
      <lpage>2880</lpage>
      <uri content-type="arpha" xlink:href="http://openbiodiv.net/C38809D9-7076-5456-9039-7186FF79D1FF">C38809D9-7076-5456-9039-7186FF79D1FF</uri>
      <uri content-type="zenodo_dep_id" xlink:href="https://zenodo.org/record/7000969">7000969</uri>
      <permissions>
        <copyright-statement>Alberto de la Encina, Luis Llana, Fernando Rubio</copyright-statement>
        <license license-type="creative-commons-attribution" xlink:href="" xlink:type="simple">
          <license-p>This article is freely available under the J.UCS Open Content License.</license-p>
        </license>
      </permissions>
      <abstract>
        <label>Abstract</label>
        <p>Due to the absence of side effects, reasoning about functional programsis simpler than reasoning about their imperative counterparts. However, because of the absence of practical debuggers, finding bugs in lazy functional languages has beenmore complex until quite recently. One of the easiest to use Haskell debuggers is Hood. Its behavior is based on the concept of observation of intermediate data structures.However, although using Hood can be simple when observing some structures, it is known that it can be hard to understand how it works when dealing with complexsituations. In fact, the author of Hood recognizes that it is necessary to formalize its behavior to explain better what should be expected, and also to allow to check whetherthe different implementations work properly.  In this paper, we formalize the behavior of the Hood debugger by extending Sestoft'snatural semantics. Moreover, we also show how to derive an abstract machine including such debugging information. By doing so, we do not only provide a formal foundation,but we also provide an alternative method to implement debuggers. In fact, we have already made a prototype of the abstract machine presented in this paper.</p>
      </abstract>
    </article-meta>
  </front>
</article>
