<?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-006-04-0474</article-id>
      <article-id pub-id-type="publisher-id">27675</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.1.1 - Applicative (Functional) Programming</subject>
        </subj-group>
      </article-categories>
      <title-group>
        <article-title>Ensuring Termination in ESFP</article-title>
      </title-group>
      <contrib-group content-type="authors">
        <contrib contrib-type="author" corresp="yes">
          <name name-style="western">
            <surname>Telford</surname>
            <given-names>Alastair</given-names>
          </name>
          <email xlink:type="simple">a.j.telford@ukc.ac.uk</email>
          <xref ref-type="aff" rid="A1">1</xref>
        </contrib>
        <contrib contrib-type="author" corresp="no">
          <name name-style="western">
            <surname>Turner</surname>
            <given-names>David</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">The Computing Laboratory, The University, Canterbury, Kent, United Kingdom</addr-line>
        <institution>The Computing Laboratory, The University, Canterbury</institution>
        <addr-line content-type="city">Kent</addr-line>
        <country>United Kingdom</country>
      </aff>
      <author-notes>
        <fn fn-type="corresp">
          <p>Corresponding author: Alastair Telford (<email xlink:type="simple">a.j.telford@ukc.ac.uk</email>).</p>
        </fn>
        <fn fn-type="edited-by">
          <p>Academic editor: </p>
        </fn>
      </author-notes>
      <pub-date pub-type="collection">
        <year>2000</year>
      </pub-date>
      <pub-date pub-type="epub">
        <day>28</day>
        <month>04</month>
        <year>2000</year>
      </pub-date>
      <volume>6</volume>
      <issue>4</issue>
      <fpage>474</fpage>
      <lpage>488</lpage>
      <uri content-type="arpha" xlink:href="http://openbiodiv.net/78DA9BAE-35BB-56FB-BB64-37F2A2DB349A">78DA9BAE-35BB-56FB-BB64-37F2A2DB349A</uri>
      <uri content-type="zenodo_dep_id" xlink:href="https://zenodo.org/record/6995829">6995829</uri>
      <permissions>
        <copyright-statement>Alastair Telford, David Turner</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>In previous papers we have proposed an elementary discipline of strong functional programming (ESFP), in which all computations terminate. A key feature of the discipline is that we introduce a type distinction between data which is known to be finite, and codata which is (potentially) infinite. To ensure termination, recursion over data must be well-founded, and corecursion (the definition schema for codata) must be productive, and both of these restrictions must be enforced automatically by the compiler. In our previous work we used abstract interpretation to establish the productivity of corecursive definitions in an elementary strong functional language. We show here that similar ideas can be applied in the dual case to check whether recursive function definitions are strongly normalising. We thus exhibit a powerful termination analysis technique which we demonstrate can be extended to partial functions.</p>
      </abstract>
    </article-meta>
  </front>
</article>
