Download PDFOpen PDF in browser

On Unfolding for Programs Using Strings as a Data Type

18 pagesPublished: July 28, 2014

Abstract

As a rule, program transformation methods based on semantics unfold
a semantic tree of a given program. Sometimes that allows to optimize the program or to prove its certain properties automatically.
Unfolding is one of the basic operations, which is a meta-extension of one step of the abstract machine executing the program.
This paper is interested in unfolding for programs based on pattern matching and manipulating the strings. The corresponding computation model originates from Markov's normal algorithms and extends this theoretical base.
Even though algorithms unfolding programs were being intensively studied for a long time in the context of variety of programming languages, as far as we know, the associative concatenation was stood at the wayside of the stream.
We define a class of term rewriting systems manipulating with strings and
describe an algorithm unfolding the programs from the class. The programming language defined by this class is algorithmic complete.
Given a word equation, one of the algorithms suggested in this paper results in a description of the corresponding solution set.

Keyphrases: markov s normal algorithms, program analysis, program specialization, program transformation, supercompilation, unfolding, word equations

In: Alexei Lisitsa and Andrei Nemytykh (editors). VPT 2014. Second International Workshop on Verification and Program Transformation, vol 28, pages 66-83.

BibTeX entry
@inproceedings{VPT2014:Unfolding_Programs_Using_Strings,
  author    = {Andrei Nemytykh},
  title     = {On Unfolding for Programs Using Strings as a Data Type},
  booktitle = {VPT 2014. Second International Workshop on Verification and Program Transformation},
  editor    = {Alexei Lisitsa and Andrei Nemytykh},
  series    = {EPiC Series in Computing},
  volume    = {28},
  publisher = {EasyChair},
  bibsource = {EasyChair, https://easychair.org},
  issn      = {2398-7340},
  url       = {/publications/paper/wDM},
  doi       = {10.29007/m8rr},
  pages     = {66-83},
  year      = {2014}}
Download PDFOpen PDF in browser