<?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-007-01-0071</article-id>
      <article-id pub-id-type="publisher-id">27765</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.4 - Software/Program Verification</subject>
          <subject>F.3.1 - Specifying and Verifying and Reasoning about Programs</subject>
        </subj-group>
      </article-categories>
      <title-group>
        <article-title>Fred: An Approach to Generating Real, Correct, Reusable Programs from Proofs</article-title>
      </title-group>
      <contrib-group content-type="authors">
        <contrib contrib-type="author" corresp="yes">
          <name name-style="western">
            <surname>Crossley</surname>
            <given-names>John</given-names>
          </name>
          <email xlink:type="simple">jnc@csse.monash.edu.au</email>
          <xref ref-type="aff" rid="A1">1</xref>
        </contrib>
        <contrib contrib-type="author" corresp="no">
          <name name-style="western">
            <surname>Poernomo</surname>
            <given-names>Iman</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">School of Computer Science and Software Engineering, Monash University, , Australia</addr-line>
        <institution>School of Computer Science and Software Engineering, Monash University</institution>
        <country>Australia</country>
      </aff>
      <author-notes>
        <fn fn-type="corresp">
          <p>Corresponding author: John Crossley (<email xlink:type="simple">jnc@csse.monash.edu.au</email>).</p>
        </fn>
        <fn fn-type="edited-by">
          <p>Academic editor: </p>
        </fn>
      </author-notes>
      <pub-date pub-type="collection">
        <year>2001</year>
      </pub-date>
      <pub-date pub-type="epub">
        <day>28</day>
        <month>01</month>
        <year>2001</year>
      </pub-date>
      <volume>7</volume>
      <issue>1</issue>
      <fpage>71</fpage>
      <lpage>88</lpage>
      <uri content-type="arpha" xlink:href="http://openbiodiv.net/35463D32-1E24-591B-94D5-1BF71DEEDF41">35463D32-1E24-591B-94D5-1BF71DEEDF41</uri>
      <uri content-type="zenodo_dep_id" xlink:href="https://zenodo.org/record/6995937">6995937</uri>
      <permissions>
        <copyright-statement>John Crossley, Iman Poernomo</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 this paper we describe our system for automatically extracting "correct" programs from proofs using a development of the Curry-Howard process.  Although program extraction has been developed by many authors (see, for example, [HN88], [Con97] and [HKPM97]), our system has a number of novel features designed to make it very easy to use and as close as possible to ordinary mathematical terminology and practice. These features include 1. the use of Henkin's technique [Hen50] to reduce higher-order logic to many-sorted (first-order) logic; 2. the free use of new rules for induction subject to certain conditions; 3. the extensive use of previously programmed (total, recursive) functions; 4. the use of templates to make the reasoning much closer to normal mathematical proofs and 5. a conceptual distinction between the computational type theory (for representing programs) and the logical type theory (for reasoning about programs). As an example of our system we give a constructive proof of the well known theorem that every graph of even parity, which is non-trivial in the sense that it does not consist of isolated vertices, has a cycle. Given such a graph as input, the extracted program produces a cycle as promised.</p>
      </abstract>
    </article-meta>
  </front>
</article>
