Bedakan Prosedur Keputusan vs SMT solver vs Theorem prover vs Constraint solver

24

Terminologi itu membingungkan saya. Seperti yang saya mengerti

  • Pemecah SAT: memutuskan kepuasan logika proposisional (menggunakan DPLL atau Pencarian Lokal).
  • Prosedur pengambilan keputusan adalah prosedur untuk memutuskan kepuasan suatu teori tingkat pertama tertentu yang dapat ditentukan.
  • SMT solver adalah prosedur keputusan SAT solver +.
  • Prover teorema menunjukkan sesuatu seperti Dynamic Logic, misalnya alat KeY
  • Pemecah kendala: Saya tidak tahu.

Tapi saya melihat orang-orang menyebut Z3 sebuah teorema yang tepat. Jadi saya tidak tahu cara menghapus istilah-istilah itu. Dan apa istilah paling umum untuk mereka semua? Terima kasih.

qsp
sumber

Jawaban:

19

SMT solver adalah prosedur keputusan SAT solver +

Seorang pemecah SAT adalah pemecah untuk masalah keputusan: masalah SAT adalah masalah keputusan. Selain itu, masalah keputusan ini "dapat direduksi sendiri":

Masalah SAT bersifat self-reducible, yaitu masing-masing algoritma yang menjawab dengan benar jika instance SAT dapat dipecahkan dapat digunakan untuk menemukan tugas yang memuaskan

- ( wikipedia )

Ini berarti bahwa pemecah SAT juga dapat memberikan tugas yang memuaskan, selain memutuskan masalah.

TL; DR SMT solver menyelesaikan generalisasi masalah SAT, tergantung pada jenis / batasan yang diizinkan dalam teori. Selain itu, mereka juga memungkinkan pengkodean hubungan tipe-tingkat yang lebih tinggi daripada yang diizinkan oleh pengkodean SAT.

(SEBUAH=B)(B=C)(SEBUAH=C) pada tingkat integer , sementara pemecah SMT tahu bahwa bit individual terkait dengan cara ini sejak awal, karena bahasa SMT QF_BV berada pada tingkat integer (lebar bit tetap). Jadi pemecah SMT QF_BV dapat beralasan pada tingkat integer, selain tingkat bit.

  1. Lihat Beaver SMT solver yang bahkan dapat menghasilkan masalah SAT yang setara yang perlu dipecahkan.

Sementara QF_BV SMT solver memiliki keunggulan ini daripada SAT solver, saya tidak berpikir ini adalah keunggulan kompleksitas: keduanya pada dasarnya setara dan membutuhkan waktu yang eksponensial untuk menyelesaikan masalah terburuk mereka. Namun secara praktis, pemecah SMT QF_BV mungkin jauh lebih cepat karena pengetahuan ekstra ini. Lihat jawaban saya untuk Batas pemecah SMT , untuk contoh sesuatu yang dianggap "keras" yang (saat ini) QF_BV Pemecah SMT dan pemecah SAT akan tersedak.

Ada juga pemecah SMT yang mencoba memecahkan masalah yang lebih sulit daripada Kepuasan Boolean (misalnya memungkinkan jenis dan kendala pada real, atau memungkinkan penjumlah); jelas ini secara teoritis setidaknya selambat pemecah SAT. Pemecah SMT ini adalah penyelesaian generalisasi dari masalah SAT; alih-alih menggunakan variabel biner, masing-masing "teori" memungkinkan hubungan / kendala atas domain yang berbeda, seperti real, atau kendala terkuantifikasi (untuk semua).

Pepatah teorema

Sebuah teorema prover otomatis adalah pemecah yang diberikan semacam sistem bukti, beberapa asumsi, dan tujuan untuk membuktikan, akan "mengisi kekosongan" antara asumsi dan tujuan. Itu juga akan memiliki semacam verifikasi untuk memeriksa bukti (yang berjalan cepat). Prover teorema dapat mengandalkan solver SAT untuk mengisi bagian yang kosong; sebenarnya, jikaP=NP dan ada algoritma praktis untuk menyelesaikan masalah NP-complete, yang berpotensi dapat membuktikan hampir semua hal yang dapat dibuktikan berguna (dalam waktu yang wajar):

Tetapi perubahan tersebut mungkin pucat secara signifikan dibandingkan dengan revolusi metode yang efisien untuk memecahkan masalah NP-lengkap akan menyebabkan dalam matematika itu sendiri. Menurut Stephen Cook, [19]

... itu akan mengubah matematika dengan memungkinkan komputer untuk menemukan bukti formal dari setiap teorema yang memiliki bukti panjang yang masuk akal, karena bukti formal dapat dengan mudah dikenali dalam waktu polinomial. Contoh masalah mungkin mencakup semua masalah hadiah CMI.

- ( wikipedia )

[19]: Cook, Stephen (April 2000). Masalah P versus NP. Clay Mathematics Institute (PDF) .

Alasan ini akan berhasil adalah karena "bukti formal dapat dengan mudah dikenali dalam waktu polinomial" melalui verifikasi, dan P=NP akan menyiratkan bahwa masalah yang dapat diverifikasi dalam waktu polinomial dapat dijawab dalam waktu polinomial juga.

Tetapi untuk sekarang, teorema otomatis kebanyakan prover menggunakan heuristik atau algoritma waktu eksponensial (tetapi masih membantu).

Pemecah kendala

Ini biasanya reformulasi pemecah SAT / SMT ke bahasa lain. Jika Anda pernah menggunakan pemecah SAT / SMT untuk memecahkan masalah, Anda benar-benar bisa menyukai kemampuan pemecah non-deterministik. Artinya, alih-alih memberi tahu komputer bagaimana melakukan sesuatu, Anda mengatakannya apa yang Anda inginkan , yaitu. properti apa yang Anda inginkan dari output, dan pemecah SAT / SMT akan secara non-deterministik "mengisinya", tanpa mengganggu Anda dengan detail implementasi. Paradigma pemrograman semacam ini sangat menarik, dan disebut pemrograman kendala , dan untuk menjalankannya, ia harus menggunakan pemecah kendala (yang mungkin menggunakan pemecah SAT / SMT di backend, tergantung pada jenis dan batasan yang memungkinkan Anda untuk menggunakan) .

Tapi saya melihat orang-orang menyebut Z3 sebuah teorema yang tepat. Jadi saya tidak tahu cara menghapus istilah-istilah itu.

AFAIK, Z3 adalah seperangkat banyak alat, termasuk pemecah SMT, beberapa teorema pembuktian teorema / model, dan banyak lagi.

Dan apa istilah paling umum untuk mereka semua?

Saya pikir generalisasi masalah kepuasan adalah Teori Modulo Kepuasan , dan karenanya "SMT solver" akan menjadi yang paling umum dari semua ini. Namun, tidak semua implementasi SMT solver yang sebenarnya menyelesaikan semua teori, jadi ini tidak berarti bahwa semua solver SMT sama-sama umum.

Realz Slaw
sumber
1
Terima kasih atas jawaban Anda. Tapi saya tidak berpikir SMT solver adalah istilah paling umum. Karena orang sering membandingkan solver SMT vs solver Constraint, lihat misalnya stackoverflow.com/questions/10584990/…
qsp
@qsp saya mungkin salah, tapi saya tidak yakin bagaimana perbandingan itu menyiratkan itu. Bagaimanapun, saya sama sekali tidak memiliki pengetahuan yang cukup untuk mengetahui apakah CSP dengan cara apa pun lebih kuat / umum daripada semua SMT; jika Anda menemukan referensi untuk itu, silakan edit jawabannya.
Realz Slaw