Cette thèse propose d'explorer l'idée de la construction de programmes
par raffinement en réutilisant un grand nombre de concepts issus des
langages de programmation de haut niveau, tels que le polymorphisme,
les types algébriques, le filtrage, les types abstraits, ou encore
l'ordre supérieur. Les enjeux scientifiques de cette thèse se situent
dans la combinaison, inédite à ce jour, de la théorie du raffinement
et des systèmes de types riches. Un objectif pratique de cette thèse
sera de mettre en oeuvre cette combinaison dans l'outil Why3.