Dies ist ein sehr aktives Forschungsthema, das vielversprechend ist, obwohl die vollständige Automatisierung der Programmerstellung wahrscheinlich intrinsische Einschränkungen aufweist (aber sind Menschen besser?). Die Idee ist jedoch nach wie vor sehr nützlich, um die Programmerstellung erheblich zu unterstützen, indem viele Schritte mechanisiert und die Richtigkeit der Programmerstellung automatisch überprüft werden.
Es hängt stark mit einem Ergebnis in der Logik zusammen, das als Curry-Howard-Korrespondenz (oder Isomorphismus) bezeichnet wird und zeigt, dass Computerprogramme und mathematische Beweise sehr ähnlich sind.
Die Idee ist also, dass das System Ihre Programmspezifikation als zu beweisenden Satz verwendet. Im Fall Ihres Beispiels wäre es ungefähr (informell): "Es gibt eine Menge aller Primzahlen, die kleiner als 10 sind".
Dann werden Sie versuchen, diesen Satz zu beweisen, und bestehende Systeme werden Sie dabei unterstützen, den Beweis zu führen, einige Teile, möglicherweise den gesamten Beweis, zu automatisieren und sicherzustellen, dass Sie niemals Fehler machen.
Aus diesem Beweis kann man dann ein Programm extrahieren, das tatsächlich die gewünschte Liste von Primzahlen berechnet, die ursprünglich spezifiziert worden waren.
In der Vergangenheit wurden mehrere Systeme entwickelt, um diese Ideen zu erläutern. Eines der bekannteren war LCF von Robin Milner , der die Sprache ML zu diesem Zweck kreierte
. Eines der derzeit fortschrittlichsten Systeme ist
Coq .
Es gibt Beispiele, die zum Teil recht komplex sind. Möglicherweise finden Sie einige in dem folgenden Artikel , obwohl dies in keiner Weise eine einfache Lektüre ist und fortgeschrittene Kenntnisse der Logik voraussetzt.