Detta dokument föreslår relationell programsyntes, ett nytt problem som handlar om att syntetisera ett eller flera program som kollektivt uppfyller en relationsspecifikation. Som en dubbel av relationell programverifiering, relationell programsyntes är ett viktigt problem som har många praktiska tillämpningar, såsom automatiserad program inversion och automatisk generering av jämförelseprodukter. Detta relationssyntesproblem introducerar dock nya utmaningar över sin icke-relationella motsvarighet på grund av den kombinatoriskt större sökytan. Som ett första steg mot att lösa detta problem presenterar detta dokument en syntesteknik som kombinerar det kontraexempelstyrda induktiva syntesramverket med en ny induktiv syntesalgoritm som bygger på relationell versionsrymdsinlärning. Vi har implementerat den föreslagna tekniken i ett ramverk kallat Relish, som kan direktieras till olika tillämpningsområden genom att tillhandahålla ett lämpligt domänspecifikt språk och relevant relationsspecifikation. Vi har använt Relish-ramverket för att bygga relationssynteser för att automatiskt generera strängkodare/avkodare samt jämförelseprodukter, och vi utvärderar vårt verktyg på flera riktmärken tagna från tidigare arbete och online forum. Våra experimentella resultat visar att den föreslagna tekniken kan lösa nästan alla dessa riktmärken och att den avsevärt överträffar EUSolver, en generisk syntesram som vann det allmänna spåret av den senaste SyGuS-tävlingen.
Senaste arbetet med relationell programsyntes REF strävar efter att syntetisera program från kompletta relationsspecifikationer.
Relational program synthesis
{'venue': 'PACMPL', 'journal': None, 'mag_field_of_study': ['Computer Science']}