Este é um tópico de pesquisa muito ativo, muito promissor, embora a automação completa da geração de programas provavelmente tenha limitações intrínsecas (mas os seres humanos são melhores?). Mas a ideia ainda é muito útil para auxiliar consideravelmente a criação de programas, mecanizando muitas etapas e verificando automaticamente a correção da geração do programa.
Está fortemente relacionado a um resultado na lógica, chamado de correspondência de Curry-Howard (ou isomorfismo), que mostra que programas de computador e provas matemáticas são muito semelhantes.
Portanto, a idéia é que o sistema leve a especificação do programa como um teorema a ser provado. No caso do seu exemplo, seria algo como (informalmente): "existe um conjunto de todos os números primos menores que 10".
Em seguida, você tentará provar esse teorema, e os sistemas existentes o ajudarão a fazer a prova, automatizando algumas partes, possivelmente toda a prova e garantindo que você nunca cometa erros.
A partir dessa prova, pode-se extrair um programa que realmente calcula a lista desejada de números primos que foram especificados inicialmente.
Vários sistemas foram desenvolvidos no passado para elucidar essas idéias. Um dos mais conhecidos foi o LCF de Robin Milner , que criou o idioma
ML para esse fim. Um dos sistemas mais avançados atualmente é o
Coq .
Existem exemplos totalmente elaborados, alguns deles bastante complexos. Você pode encontrar algumas no artigo a seguir , embora não seja uma leitura simples e exija conhecimentos avançados de lógica.