Istilah inversi program memiliki banyak corak makna, tetapi mungkin dimulai dengan karya J. McCarthy tahun 1956, The Inversion of Functions Defined oleh Turing Machines dalam konteks AI. Saat ini banyak koneksi antara inversi program dan bidang lain telah ditemukan, misalnya pemrograman reversibel (fisik dan logis), evaluasi parsial, verifikasi, pemrograman dua arah, pemrograman logika, dan pembelajaran mesin.
Apa itu inversi program? Dalam pendekatan pertama sesuatu itu seperti ini: Mengingat program mengambil argumen tipe A dan mengembalikan hasil tipe B , menghasilkan program P - 1 yang "entah bagaimana" kebalikan dari P . Saya sengaja tidak jelas di sini, karena konsepnya dapat (dan) diklarifikasi dengan berbagai cara: misalnya apakah P harus disuntik? Haruskah P - 1 ( b ) mengembalikan semua atau hanya beberapa yang seperti yang P ( a ) = b?
Ada cara-cara umum untuk membalik suatu program, misalnya menggunakan diagonisasi seperti yang telah ditunjukkan oleh McCarthy, atau menggunakan evaluasi parsial, tetapi mereka cenderung tidak efisien. Juga sebagian besar bekerja pada inversi program yang saya kenal sepertinya tidak berurusan dengan bahasa pemrograman tingkat tinggi penuh (yaitu -calculi).
Permintaan referensi. Apa yang dimaksud dengan algoritma eksplisit dalam inversi program -calculi (tanpa batasan pada tingkat yang lebih tinggi)?