Pertanyaan yang Anda ajukan sebenarnya sangat berbeda.
Namun, saya tidak yakin sejauh mana ini berlaku untuk program dunia nyata suka sistem operasi. Apakah jenis program ini membutuhkan kekuatan penuh dari kelengkapan Turing?
Dibutuhkan sangat sedikit untuk model komputasi untuk menjadi Turing lengkap. Misalnya, berbagai model dengan penghitung dapat mensimulasikan mesin Turing. Jika Anda yakin perangkat lunak Anda membutuhkan lebih dari dua penghitung yang dapat Anda manipulasi secara sewenang-wenang, Anda menggunakan bahasa lengkap Turing. Meskipun bilangan bulat mesin dibatasi apriori, struktur data yang dialokasikan heap biasanya tidak. Jika perangkat lunak Anda membutuhkan daftar, pohon, dan data yang dialokasikan secara dinamis lainnya, Anda menggunakan bahasa lengkap Turing.
Apakah ada model perhitungan yang lebih sederhana (seperti PR) di mana aplikasi ini dapat ditulis? Jika demikian, sejauh mana hal ini memungkinkan kesesuaian kebenaran program?
Penting untuk mengetahui bahwa kami tidak ingin memeriksa properti sewenang-wenang dari perangkat lunak kami. Memeriksa properti yang sangat spesifik dan sempit (tidak ada buffer overflows, tidak ada null-pointer dereferences, tidak ada loop tak terbatas, dll) sangat meningkatkan kualitas dan kegunaan perangkat lunak. Secara teori, masalah seperti itu masih belum dapat dipastikan. Dalam praktiknya, fokus pada properti tertentu memungkinkan kita menemukan struktur dalam program kita yang sering kita manfaatkan untuk menyelesaikan masalah.
Secara khusus, Anda dapat memodifikasi pertanyaan awal Anda
Apakah ada abstraksi perangkat lunak saya yang dapat saya analisis secara efisien dalam model lengkap non-Turing?
Abstraksi adalah model yang mencakup perilaku perangkat lunak asli dan mungkin banyak perilaku tambahan. Ada model seperti mesin satu-counter atau sistem pushdown yang Turing tidak lengkap dan yang bisa kita analisis. Pendekatan standar dalam verifikasi program dengan alat otomatis adalah dengan membangun abstraksi dalam model seperti itu dan memeriksanya secara algoritmik.
Ada aplikasi di mana orang-orang peduli dengan properti canggih dari perangkat keras atau perangkat lunak mereka. Perusahaan perangkat keras ingin agar chip mereka menerapkan algoritma aritmatika dengan benar, perusahaan otomotif dan avionik menginginkan perangkat lunak yang benar secara sertifikasi. Jika itu penting, Anda lebih baik menggunakan manusia (terlatih).