Membiarkan dan menjadi -vektor variabel boolean. Saya memiliki predikat boolean di . Saya memberi teman saya Priscilla. Sebagai tanggapan, dia memberi saya, predikat boolean pada , dan dia mengklaim itu
atau dengan kata lain, itu
Saya ingin memverifikasi klaimnya entah bagaimana. Bagaimana Priscilla dapat membantu saya memverifikasi klaim ini?
Anda dapat mengasumsikan keduanya dan direpresentasikan sebagai formula CNF, dan itu tidak terlalu besar (ukuran polinomial, atau sesuatu).
Dalam dunia yang ideal, akan luar biasa jika saya bisa mengurangi masalah memverifikasi klaim ini ke SAT: Saya punya pemecah SAT, dan akan lebih bagus jika saya bisa menggunakan pemecah SAT untuk memverifikasi klaim ini. Namun, saya cukup yakin bahwa tidak mungkin memformulasikan masalah memverifikasi klaim ini secara langsung sebagai instance SAT; menguji validitas formula 2QBF hampir pasti lebih sulit daripada SAT. (Itu arah mudah dirumuskan sebagai instance SAT, tetapi arah sulit karena secara inheren melibatkan dua bilangan kuantifikasi.)
Tapi seandainya Priscilla bisa memberi saya beberapa bukti tambahan untuk mendukung klaimnya. Apakah ada beberapa bukti tambahan atau saksi yang bisa diberikan Priscilla kepada saya, yang akan memudahkan saya untuk memverifikasi klaimnya? Secara khusus, apakah ada beberapa bukti atau saksi tambahan yang bisa dia berikan kepada saya, yang akan memudahkan saya untuk merumuskan masalah memverifikasi klaimnya sebagai instance dari SAT (yang kemudian saya dapat menerapkan pemecah SAT saya)?
Salah satu aspek yang tidak biasa dari pengaturan saya adalah bahwa saya berasumsi (heuristik) bahwa saya memiliki oracle untuk SAT. Jika Anda menyukai teori kompleksitas, Anda dapat memikirkannya dengan cara ini: Saya mengambil peran mesin yang dapat menghitung banyak hal (yaitu di ), dan saya ingin memverifikasi klaim Priscilla menggunakan algoritme di . Terima kasih saya kepada MDX untuk cara berpikir tentang hal-hal ini.
Motivasi / aplikasi saya: Saya ingin melakukan verifikasi formal terhadap suatu sistem (mis., Pengecekan model simbolik), dan langkah kunci dalam penalaran melibatkan eliminasi quantifier (yaitu, mulai dari , dapatkan ). Saya berharap ada cara bersih untuk memverifikasi bahwa eliminasi quantifier dilakukan dengan benar.
Jika tidak ada solusi yang berfungsi untuk semua kemungkinan , jangan ragu untuk menyarankan solusi yang "suara tetapi tidak lengkap", yaitu teknik yang bagi banyak orang izinkan saya memverifikasi kesetaraan yang diklaim. (Bahkan jika gagal memverifikasi klaim pada beberapayang memenuhi klaim, saya masih dapat mencoba ini sebagai heuristik, asalkan tidak pernah secara tidak tepat mengklaim telah memverifikasi klaim palsu. Atas suatu pemberian, mungkin bekerja, atau mungkin tidak; jika tidak berhasil, saya tidak lebih buruk daripada di mana saya mulai.)
first-order-logic
tag tidak bisa dibenarkan. Pertanyaannya adalah semua tentang rumus boolean yang dikuantifikasi.Jawaban:
Berikut adalah dua teknik yang dapat saya identifikasi:
Identifikasi fungsi Skolem eksplisit. Misalkan Priscilla dapat mengidentifikasi fungsi eksplisitf seperti yang
memegang. Maka itu mengikuti bahwa klaim Priscilla benar.
Ini berarti Priscilla dapat membantu kami memverifikasi klaimnya dengan menyediakan fungsif sehingga proposisi di atas berlaku. Kami dapat mengonfirmasi bahwa proposisi di atas berlaku dengan menguji rumus berikut untuk kepuasan:
Jika formula ini tidak memuaskan, maka klaim Priscilla telah diverifikasi.
Satu peringatan adalah bahwa Priscilla harus dapat mengidentifikasi fungsi yang sesuaif . Peringatan lebih lanjut adalah yang kita butuhkanf untuk dapat direpresentasikan secara konkret dalam beberapa bentuk singkat, katakanlah, sebagai sirkuit boolean berukuran polinomial. Namun, jika kondisi tersebut terpenuhi, maka teknik ini harus bekerja.
Argumen hibrid. Pertimbangkan kasus khusus masalah ini, di mana kita menghitung variabel satu-bit (daripada an -bit variabel); ternyata masalahnya mudah diselesaikan dalam kasus ini. Ini menunjukkan bahwa kami mencoba untuk menghubungkan teknik itun kali, setiap kali menghapus satu bit lagi y . Ternyata ide ini terkadang berhasil, tetapi tidak selalu.
Biarkan saya menjelaskan cara memverifikasi klaim Priscilla dalam kasus di manay= (y1) adalah variabel satu-bit. Kemudian∃ y. Q ( x , y) setara dengan Q ( x , Salah ) ∨ Q ( x , Benar ) . Rumus terakhir paling banyak dua kali lebih besar dariQ , jadi masih berukuran polinomial. Sekarang kita bisa menggunakan pemecah SAT kita untuk menguji apakahQ ( x , Salah ) ∨ Q ( x , Benar ) setara dengan P( x ) ; kesetaraan berlaku tepat jika rumus berikut tidak memuaskan:
Jadi, jika kita mengkuantifikasi lebih dari satu bit, ini memberikan cara untuk memverifikasi bahwa penghapusan quantifier dilakukan dengan benar.
Untuk mengatasi masalah asli, terapkan ini beberapa kali. Tugas Priscilla adalah memberi kitan + 1 predikat boolean R0,R1,R2, ... ,Rn seperti yang
Tugas kami adalah memverifikasi apakah semua predikat boolean ini dihasilkan dengan benar. Kita dapat melakukan ini dengan menguji apakahQ(x,y)≡R0(x,y) , P(x)≡Rn(x) ,
Perhatikan bahwa yang terakhir adalah contoh eliminasi kuantifier dengan bit tunggal, jadi kami telah menjelaskan cara mengujinya dengan menggunakan solver SAT. Kami juga dapat menguji apakahQ≡R0 dan P≡ R menggunakan solver SAT dengan mudah. Jadi, kita dapat memeriksa apakah Priscilla dihasilkanR0, ... ,Rn benar. Jika dia melakukannya, maka kami telah memverifikasi ituP dihasilkan sesuai.
Satu peringatan adalah bahwa Priscilla harus dapat menghasilkanRsaya ini Peringatan yang lebih besar adalah bahwa ukuran semuaRsaya Harus masuk akal (katakanlah, berukuran polinomial). Jika Priscilla menghasilkanRsaya Naif, ukuran mereka mungkin tumbuh secara eksponensial dengan saya , yang tidak baik. Jadi, Priscilla akan membutuhkan cara untuk menyederhanakan di setiap tahap; perlu ada beberapa urutanR0, ... ,Rn yang semuanya berukuran polinomial, dan Priscilla harus dapat menemukan urutan seperti itu. Itu sama sekali tidak dijamin. Yang mengatakan, jika Priscilla dapat melakukan ini, maka teknik ini akan berhasil.
Saya tidak sepenuhnya puas dengan teknik ini - mereka heuristik tidak lengkap, dan mereka mungkin gagal pada beberapa / banyak contoh masalah - jadi saya masih akan tertarik untuk melihat cara-cara lain untuk mendekati masalah ini.
sumber