A method of synthesizing an algorithm for transforming a program from a
first form to a second form includes first formalizing a language
associated with the program to be transformed in accordance with a theorem
proving system. Then, a proof is built in accordance with the theorem
proving system based on a theorem asserting a representability associated
with the program, the representability being expressed as inductive
predicates over semantic domains. The method then extracts the algorithm
based on the proof. The algorithm is capable of transforming the program
from the first form to the second form. In one embodiment, the algorithm
is a correctness verified abstraction algorithm and the theorem proving
system is Nuprl.
Μια μέθοδος έναν αλγόριθμο για ένα πρόγραμμα από μια πρώτη μορφή σε μια δεύτερη μορφή περιλαμβάνει πρώτα να τυποποιήσει μια γλώσσα που συνδέεται με το πρόγραμμα που μετασχηματίζεται σύμφωνα με ένα σύστημα παρουσιάσεων αποδείξεων θεωρήματος. Κατόπιν, μια απόδειξη χτίζεται σύμφωνα με το σύστημα παρουσιάσεων αποδείξεων θεωρήματος βασισμένο σε ένα θεώρημα βεβαιώνοντας ένα representability που συνδέεται με το πρόγραμμα, το representability που εκφράζεται ως επαγωγικά κατηγορήματα πέρα από τις σημασιολογικές περιοχές. Η μέθοδος εξάγει έπειτα τον αλγόριθμο βασισμένο στην απόδειξη. Ο αλγόριθμος είναι σε θέση το πρόγραμμα από την πρώτη μορφή στη δεύτερη μορφή. Σε μια ενσωμάτωση, ο αλγόριθμος είναι ένας ελεγχμένος ακρίβεια αλγόριθμος αφαίρεσης και το σύστημα παρουσιάσεων αποδείξεων θεωρήματος είναι Nuprl.