Jest to bardzo aktywny temat badawczy, bardzo obiecujący, chociaż pełna automatyzacja generowania programów prawdopodobnie ma wewnętrzne ograniczenia (ale czy ludzie są w ogóle lepsi?). Ale pomysł jest nadal bardzo przydatny w znacznym wspomaganiu tworzenia programów poprzez mechanizację wielu kroków i automatyczne sprawdzanie poprawności generowania programu.
Jest to silnie powiązane z wynikiem w logice, zwanej korespondencją Curry'ego-Howarda (lub izomorfizmem), która pokazuje, że programy komputerowe i dowody matematyczne są bardzo podobne.
Chodzi o to, że system weźmie specyfikację programu jako twierdzenie, które ma zostać udowodnione. W twoim przykładzie byłoby to coś w stylu (nieformalnie): „istnieje zbiór wszystkich liczb pierwszych mniejszych niż 10”.
Następnie spróbujesz udowodnić to twierdzenie, a istniejące systemy pomogą ci w przeprowadzeniu dowodu, automatyzacji niektórych części, być może całego dowodu i upewnieniu się, że nigdy nie popełnisz błędów.
Z tego dowodu można następnie wyodrębnić program, który faktycznie oblicza żądaną listę liczb pierwszych, która została pierwotnie określona.
W przeszłości opracowano kilka systemów w celu wyjaśnienia tych pomysłów. Jednym z bardziej znanych był LCF przez Robin Milner , który stworzył język
ML do tego celu. Jednym z najbardziej zaawansowanych systemów jest
Coq .
Istnieją przykłady w pełni opracowane, niektóre z nich dość złożone. Niektóre z nich można znaleźć w poniższym artykule , chociaż nie jest to w żaden sposób proste czytanie i wymaga zaawansowanej znajomości logiki.