Domain Agnostic Techniques for Scaling Up Program Synthesis
Techniques agnostiques au domaine pour l’accélération de la synthèse de programmes
Résumé
Ces denières années, la synthèse automatique de programmes, un saint-graal de l'informatique, a vu un intérêt grandissant. Du développement de code à la découverte automatique, les applications sont nombreuses.
Dans cette thèse, nous nous intéressons à la synthèse de programmes dans le cadre de spécifications par des exemples. Nous nous concentrons sur des techniques indépendantes du domaine ce qui nous amène à de la recherche guidée par coûts. Les coûts permettent de guider l'énumération vers les programmes les plus probables comme solutions. Nous avons trois contributions principales. En premier, nous introduisons Heap Search le premier algorithme d'énumération par le bas par coût avec délai logarithmique. Puis nous cherchons à construire un algorithme avec délai constant, ce que nous faisons avec Eco Search, le premier, et nous montrons qu'il est aussi meilleur en pratique. Nous nous intéressons à la parallélisation de la recherche avec des algorithmes d'échantillonages et introduisons l'algorithme optimal parmi ceux-ci pour la recherche par coûts. Nous décrivons aussi un algorithme de division de grammaires en grammaires disjointes afin de facilement paralléliser la recherche. Les programmes redondants peuvent être éliminés par équivalence à l'exécution, néanmoins une majeur partie de ses équivalences sont dûes à la grammaire et non à la tâche. Nous proposons un processus qui trouve automatiquement ces programmes redondants en amont et les compile en un filtre pour les éliminer sans les exécuter. Enfin, nous nous intéressons à intégrer des connaissances en dehors de la grammaire dans les programmes. Nous décrivons plusieurs niveaux de difficulté pour ces tâches et résolvons le premier niveau.
Origine | Fichiers produits par l'(les) auteur(s) |
---|---|
licence |