Verifikasi kebenaran penghapusan kuantifier, menggunakan SAT

8

Membiarkan x=(x1,,xn) dan y=(y1,,yn) menjadi n-vektor variabel boolean. Saya memiliki predikat booleanQ(x,y) di x,y. Saya memberi teman saya PriscillaQ(x,y). Sebagai tanggapan, dia memberi sayaP(x), predikat boolean pada x, dan dia mengklaim itu

P(x)y.Q(x,y),

atau dengan kata lain, itu

x.[P(x)y.Q(x,y)].

Saya ingin memverifikasi klaimnya entah bagaimana. Bagaimana Priscilla dapat membantu saya memverifikasi klaim ini?

Anda dapat mengasumsikan keduanya P dan Q 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 halPNP (yaitu di Δ2P), dan saya ingin memverifikasi klaim Priscilla menggunakan algoritme di PNP. 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 Q, dapatkan P). Saya berharap ada cara bersih untuk memverifikasi bahwa eliminasi quantifier dilakukan dengan benar.

Jika tidak ada solusi yang berfungsi untuk semua kemungkinan P,Q, jangan ragu untuk menyarankan solusi yang "suara tetapi tidak lengkap", yaitu teknik yang bagi banyak orang P,Qizinkan saya memverifikasi kesetaraan yang diklaim. (Bahkan jika gagal memverifikasi klaim pada beberapaP,Qyang memenuhi klaim, saya masih dapat mencoba ini sebagai heuristik, asalkan tidak pernah secara tidak tepat mengklaim telah memverifikasi klaim palsu. Atas suatu pemberianP,Q, mungkin bekerja, atau mungkin tidak; jika tidak berhasil, saya tidak lebih buruk daripada di mana saya mulai.)

DW
sumber
Jika kita memberi Priscilla a Q(x,y) di mana kamu tidak relevan, apakah kita tidak menyelesaikan secara efektif TAUTcoNP? Jika demikian, maka tidak ada sertifikat yang dapat diberikan Priscilla kepada Anda yang dapat membantu kecualiNP=coNP.
mdxn
@mdx, hal yang aneh tentang pengaturan ini adalah bahwa saya memiliki pemecah SAT, yang (secara empiris) tampaknya hampir selalu bekerja pada predikat yang saya jalankan dalam praktek. Jadi, jika saya diberikanP(x),Q(x) dan ingin memverifikasi x.P(x)Q(x), Saya bisa memberi makan (P(x)¬Q(x))(¬P(x)Q(x))ke pemecah SAT saya; jika ternyata ini tidak memuaskan, saya sudah memverifikasix.P(x)Q(x)adalah benar. Jadi, meskipun itu pemecahan yang efektifTAUT, dalam praktiknya masih OK. Atau apakah saya salah memahami inti dari komentar Anda?
DW
1
Ah, jadi saya menganggap Anda mengambil peran mesin memutuskan masalah masuk PNP=Δ2P(atau setara heuristik dari)?
mdxn
@ mdx, ya, sekarang Anda menyebutkannya, itu cara yang bagus untuk memikirkannya. Terima kasih telah menyarankan perspektif itu!
DW
Saya pikir first-order-logictag tidak bisa dibenarkan. Pertanyaannya adalah semua tentang rumus boolean yang dikuantifikasi.
berlutut

Jawaban:

2

Berikut adalah dua teknik yang dapat saya identifikasi:

  • Identifikasi fungsi Skolem eksplisit. Misalkan Priscilla dapat mengidentifikasi fungsi eksplisitf seperti yang

    x.P(x)Q(x,f(x))

    memegang. Maka itu mengikuti bahwa klaim Priscilla benar.

    Ini berarti Priscilla dapat membantu kami memverifikasi klaimnya dengan menyediakan fungsi fsehingga proposisi di atas berlaku. Kami dapat mengonfirmasi bahwa proposisi di atas berlaku dengan menguji rumus berikut untuk kepuasan:

    ¬(P(x)Q(x,f(x))).

    Jika formula ini tidak memuaskan, maka klaim Priscilla telah diverifikasi.

    Satu peringatan adalah bahwa Priscilla harus dapat mengidentifikasi fungsi yang sesuai f. Peringatan lebih lanjut adalah yang kita butuhkanfuntuk 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 mana y=(y1)adalah variabel satu-bit. Kemudiany.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:

    ¬(P(x)(Q(x,Salah)Q(x,Benar))).

    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

    Rsaya(x,(ysaya+1,...,yn))y1,y2,...,ysaya.Q(x,y).

    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),

    Ri+1(x,(yi+2,,yn))yi+1.Ri(x,(yi+1,,yn))for i=1,2,,n1.

    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 apakahQR0 dan PRmenggunakan solver SAT dengan mudah. Jadi, kita dapat memeriksa apakah Priscilla dihasilkanR0,...,Rnbenar. Jika dia melakukannya, maka kami telah memverifikasi ituP dihasilkan sesuai.

    Satu peringatan adalah bahwa Priscilla harus dapat menghasilkan Rsayaini Peringatan yang lebih besar adalah bahwa ukuran semuaRsayaHarus masuk akal (katakanlah, berukuran polinomial). Jika Priscilla menghasilkanRsayaNaif, 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,...,Rnyang 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.

DW
sumber