<?xml version="1.0" encoding="UTF-8"?>
<OAI-PMH xmlns="http://www.openarchives.org/OAI/2.0/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.openarchives.org/OAI/2.0/ http://www.openarchives.org/OAI/2.0/OAI-PMH.xsd">
  <responseDate>2026-07-22T18:55:39Z</responseDate>
  <request identifier="7257" metadataPrefix="oai_dc" verb="GetRecord">https://drops.dagstuhl.de/oai</request>
  <GetRecord>
    <record>
      <header>
        <identifier>oai:drops-oai.dagstuhl.de:7257</identifier>
        <datestamp>2024-03-06T10:39:44Z</datestamp>
        <setSpec>ddc:004</setSpec>
        <setSpec>open_access</setSpec>
      </header>
      <metadata>
        <oai_dc:dc xmlns:oai_dc="http://www.openarchives.org/OAI/2.0/oai_dc/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.openarchives.org/OAI/2.0/oai_dc/ http://www.openarchives.org/OAI/2.0/oai_dc.xsd">
          <dc:title>Proactive Synthesis of Recursive Tree-to-String Functions from Examples</dc:title>
          <dc:creator>Mayer, Mikaël</dc:creator>
          <dc:creator>Hamza, Jad</dc:creator>
          <dc:creator>Kuncak, Viktor</dc:creator>
          <dc:subject>programming by example</dc:subject>
          <dc:subject>active learning</dc:subject>
          <dc:subject>program synthesis</dc:subject>
          <dc:description>Synthesis from examples enables non-expert users to generate programs by specifying examples of their behavior. A domain-specific form of such synthesis has been recently deployed in a widely used spreadsheet software product. In this paper we contribute to foundations of such techniques and present a complete algorithm for synthesis of a class of recursive functions defined by structural recursion over a given algebraic data type definition. The functions we consider map an algebraic data type to a string; they are useful for, e.g., pretty printing and serialization of programs and data.  We formalize our problem as learning deterministic sequential&#13;
top-down tree-to-string transducers with a single state (1STS).&#13;
&#13;
The first problem we consider is learning a tree-to-string&#13;
transducer from any set of input/output examples provided by the user. We show that, given a set of input/output examples, checking whether there exists a 1STS consistent with these examples is NP-complete in general. In contrast, the problem can be solved in polynomial time under a (practically useful) closure condition that each&#13;
subtree of a tree in the input/output example set is also&#13;
part of the input/output examples.&#13;
&#13;
Because coming up with relevant input/output examples may be&#13;
difficult for the user while creating hard constraint problems&#13;
for the synthesizer, we also study a more automated&#13;
active learning scenario in which the algorithm chooses the&#13;
inputs for which the user provides the outputs. Our&#13;
algorithm asks a worst-case linear number of queries as a&#13;
function of the size of the algebraic data type definition&#13;
to determine a unique transducer.&#13;
&#13;
To construct our algorithms we present two new results on&#13;
formal languages.&#13;
&#13;
First, we define a class of word equations, called&#13;
sequential word equations, for which we prove that&#13;
satisfiability can be solved in deterministic polynomial&#13;
time. This is in contrast to the general word equations for&#13;
which the best known complexity upper bound is in linear space.&#13;
&#13;
Second, we close a long-standing open problem about the&#13;
asymptotic size of test sets for context-free languages. A&#13;
test set of a language of words L is a subset T of L&#13;
such that any two word homomorphisms equivalent on T are&#13;
also equivalent on L. We prove that it is possible to&#13;
build test sets of cubic size for context-free languages,&#13;
matching for the first time the lower bound found 20 years&#13;
ago.</dc:description>
          <dc:publisher>Schloss Dagstuhl – Leibniz-Zentrum für Informatik</dc:publisher>
          <dc:contributor>Mikaël Mayer and Jad Hamza and Viktor Kuncak</dc:contributor>
          <dc:date>2017</dc:date>
          <dc:relation>Is Part Of LIPIcs, Volume 74, 31st European Conference on Object-Oriented Programming (ECOOP 2017)</dc:relation>
          <dc:type>InProceedings</dc:type>
          <dc:type>Text</dc:type>
          <dc:type>doc-type:ResearchArticle</dc:type>
          <dc:type>publishedVersion</dc:type>
          <dc:format>application/pdf</dc:format>
          <dc:identifier>doi:10.4230/LIPIcs.ECOOP.2017.19</dc:identifier>
          <dc:identifier>urn:nbn:de:0030-drops-72575</dc:identifier>
          <dc:identifier>https://drops.dagstuhl.de/entities/document/10.4230/LIPIcs.ECOOP.2017.19</dc:identifier>
          <dc:language>eng</dc:language>
          <dc:rights>https://creativecommons.org/licenses/by/3.0/legalcode</dc:rights>
        </oai_dc:dc>
      </metadata>
    </record>
  </GetRecord>
</OAI-PMH>
