Synthesis and Repair for Functional Programming: A Type- and Test-Driven Approach

Saved in:
Bibliographic Details
Title: Synthesis and Repair for Functional Programming: A Type- and Test-Driven Approach
Authors: Gissurarson, Matthías Páll, 1991
Subject Terms: Types, Tests, Compilers, Program Repair, Program Synthesis
Description: Modern programs in languages like Haskell include a lot of information beyond what is required for compilation. This includes unit tests, property-based tests, and type annotations more specific than those necessary to resolve ambiguity. This additional specification is usually only used for post-compilation verification by running the tests to verify that the code-as-written matches the specification the types and properties provide. In this thesis, we explore ways of going beyond verification, and how this additional information can aid the developer during development. This can be done in multiple ways, for example, by helping the programmer write an implementation that matches the specification, by helping them track down the source of a bug in the implementation, and automatically repairing an implementation that does not match the specification. In the first part, I explore the integration of program synthesis into GHC compiler error messages using typed-hole suggestions to aid completion of partial programs during development. In the second part, we present PropR, an automatic repair tool. PropR is based on type-driven synthesis, guided by property-based testing and fault localization in conjunction with genetic algorithms. A rich specification is required for these approaches to be effective. This motivates the third part of this thesis, where we present Spectacular, a specification synthesis tool. Spectacular uses ECTA-based synthesis to automatically infer properties of programs, letting us bootstrap specifications from previous versions. In the fourth and fifth part of this thesis, we present the lightweight trace-based and spectrum-based fault localization tools CSI: Haskell and TastySpectrum respectively, and explore how we can localize program faults and find likely sources of a bug.
File Description: electronic
Access URL: https://research.chalmers.se/publication/541984
https://research.chalmers.se/publication/541984/file/541984_Fulltext.pdf
Database: SwePub
FullText Text:
  Availability: 0
CustomLinks:
  – Url: https://research.chalmers.se/publication/541984#
    Name: EDS - SwePub (s4221598)
    Category: fullText
    Text: View record in SwePub
  – Url: https://www.webofscience.com/api/gateway?GWVersion=2&SrcApp=EBSCO&SrcAuth=EBSCO&DestApp=WOS&ServiceName=TransferToWoS&DestLinkType=GeneralSearchSummary&Func=Links&author=Gissurarson%20MP
    Name: ISI
    Category: fullText
    Text: Nájsť tento článok vo Web of Science
    Icon: https://imagesrvr.epnet.com/ls/20docs.gif
    MouseOverText: Nájsť tento článok vo Web of Science
Header DbId: edsswe
DbLabel: SwePub
An: edsswe.oai.research.chalmers.se.c811e39a.34c7.4666.8954.54c56c9671d7
RelevancyScore: 936
AccessLevel: 6
PubType:
PubTypeId: unknown
PreciseRelevancyScore: 936.415405273438
IllustrationInfo
Items – Name: Title
  Label: Title
  Group: Ti
  Data: Synthesis and Repair for Functional Programming: A Type- and Test-Driven Approach
– Name: Author
  Label: Authors
  Group: Au
  Data: <searchLink fieldCode="AR" term="%22Gissurarson%2C+Matthías+Páll%22">Gissurarson, Matthías Páll</searchLink>, 1991
– Name: Subject
  Label: Subject Terms
  Group: Su
  Data: <searchLink fieldCode="DE" term="%22Types%22">Types</searchLink><br /><searchLink fieldCode="DE" term="%22Tests%22">Tests</searchLink><br /><searchLink fieldCode="DE" term="%22Compilers%22">Compilers</searchLink><br /><searchLink fieldCode="DE" term="%22Program+Repair%22">Program Repair</searchLink><br /><searchLink fieldCode="DE" term="%22Program+Synthesis%22">Program Synthesis</searchLink>
– Name: Abstract
  Label: Description
  Group: Ab
  Data: Modern programs in languages like Haskell include a lot of information beyond what is required for compilation. This includes unit tests, property-based tests, and type annotations more specific than those necessary to resolve ambiguity. This additional specification is usually only used for post-compilation verification by running the tests to verify that the code-as-written matches the specification the types and properties provide. In this thesis, we explore ways of going beyond verification, and how this additional information can aid the developer during development. This can be done in multiple ways, for example, by helping the programmer write an implementation that matches the specification, by helping them track down the source of a bug in the implementation, and automatically repairing an implementation that does not match the specification. In the first part, I explore the integration of program synthesis into GHC compiler error messages using typed-hole suggestions to aid completion of partial programs during development. In the second part, we present PropR, an automatic repair tool. PropR is based on type-driven synthesis, guided by property-based testing and fault localization in conjunction with genetic algorithms. A rich specification is required for these approaches to be effective. This motivates the third part of this thesis, where we present Spectacular, a specification synthesis tool. Spectacular uses ECTA-based synthesis to automatically infer properties of programs, letting us bootstrap specifications from previous versions. In the fourth and fifth part of this thesis, we present the lightweight trace-based and spectrum-based fault localization tools CSI: Haskell and TastySpectrum respectively, and explore how we can localize program faults and find likely sources of a bug.
– Name: Format
  Label: File Description
  Group: SrcInfo
  Data: electronic
– Name: URL
  Label: Access URL
  Group: URL
  Data: <link linkTarget="URL" linkTerm="https://research.chalmers.se/publication/541984" linkWindow="_blank">https://research.chalmers.se/publication/541984</link><br /><link linkTarget="URL" linkTerm="https://research.chalmers.se/publication/541984/file/541984_Fulltext.pdf" linkWindow="_blank">https://research.chalmers.se/publication/541984/file/541984_Fulltext.pdf</link>
PLink https://erproxy.cvtisr.sk/sfx/access?url=https://search.ebscohost.com/login.aspx?direct=true&site=eds-live&db=edsswe&AN=edsswe.oai.research.chalmers.se.c811e39a.34c7.4666.8954.54c56c9671d7
RecordInfo BibRecord:
  BibEntity:
    Languages:
      – Text: English
    Subjects:
      – SubjectFull: Types
        Type: general
      – SubjectFull: Tests
        Type: general
      – SubjectFull: Compilers
        Type: general
      – SubjectFull: Program Repair
        Type: general
      – SubjectFull: Program Synthesis
        Type: general
    Titles:
      – TitleFull: Synthesis and Repair for Functional Programming: A Type- and Test-Driven Approach
        Type: main
  BibRelationships:
    HasContributorRelationships:
      – PersonEntity:
          Name:
            NameFull: Gissurarson, Matthías Páll
    IsPartOfRelationships:
      – BibEntity:
          Dates:
            – D: 01
              M: 01
              Type: published
              Y: 2024
          Identifiers:
            – Type: issn-locals
              Value: SWEPUB_FREE
            – Type: issn-locals
              Value: CTH_SWEPUB
ResultId 1