Bukti pertemuan untuk sistem penulisan ulang yang sederhana


14

Asumsikan kita memiliki bahasa sederhana yang terdiri dari istilah:

  • true
  • false
  • jika adalah suku maka demikian juga saya ft1,t2,t3ift1thent2elset3

Sekarang asumsikan aturan evaluasi logis berikut:

iftruethent2elset3t2[E-IfTrue]iffalsethent2elset3t3[E-IfFalse]t1t1ift1thent2elset3ift1thent2elset3[E-If]

Misalkan kita juga menambahkan aturan funky berikut:

t2t2ift1thent2elset3ift1thent2elset3[E-IfFunny]

Untuk bahasa sederhana ini dengan aturan evaluasi yang diberikan, saya ingin membuktikan yang berikut:

Teorema: Jika dan r t maka ada beberapa istilah u sehingga s u dan t ursrtusutu .

Saya membuktikan ini dengan induksi pada struktur . Inilah bukti saya sejauh ini, semuanya bekerja dengan baik, tetapi saya terjebak pada kasus terakhir. Sepertinya induksi pada struktur rrr tidak mencukupi, adakah yang bisa membantu saya?

Bukti. Dengan induksi pada , kami akan memisahkan semua bentuk yang dapat diambil r :rr

  1. adalah konstanta, tidak ada yang perlu dibuktikan karena bentuk normal tidak mengevaluasi apa pun.r
  2. jika benar maka r 2 lain r 3 . (a) kedua derivasi dilakukan dengan aturan E-IfTrue. Dalam hal ini s = t , jadi tidak ada yang bisa dibuktikan. (B) satu deriviasi dilakukan dengan aturan E-IfTrue, yang lain dengan aturan E-Funny. Asumsikan r s dilakukan dengan E-IfTrue, kasus lain terbukti setara. Kita sekarang tahu bahwa s = r 2 . Kita juga tahu bahwa t = jika benar maka r ' 2 yang lain r 3 dan bahwa ada beberapa deriviation r 2r=r2r3s=trss=r2t=r2r3 (premis). Jika sekarang kita memilihu=r2r2r2u=r2 , kami menyimpulkan kasusnya.
  3. jika salah maka r 2 lain r 3r=r2r3 . Terbukti sama seperti di atas.
  4. jika r 1 maka r 2 lain r 3 dengan r 1 benar atau salah. (a) kedua deriviasi dilakukan dengan aturan E-If. Kita sekarang tahu bahwa s = jika r 1 maka r 2 lagi r 3 dan t = jika r 1 maka r 2 lagi r 3 . Kita juga tahu bahwa ada deriviasi r 1r 1r=r1r2r3r1s=r1r2r3t=r1r2r3r1r1dan (premis). Kita sekarang dapat menggunakan hipotesis induksi untuk mengatakan bahwa ada beberapa istilah r 1 sehingga r 1r 1 dan r 1r 1 . Kami sekarang menyimpulkan kasus dengan mengatakan u = jika r 1 maka r 2 lain r 3 dan memperhatikan bahwa s u dan t r1r1r1r1r1r1r1u=r1r2r3sutuoleh aturan E-If. (B) satu derivasi dilakukan oleh aturan E-If dan satu derivasi oleh aturan E-Funny.

Kasus terakhir ini, di mana satu derivasi dilakukan oleh E-If dan satu oleh E-Funny adalah kasus yang saya lewatkan ... Saya sepertinya tidak bisa menggunakan hipotesis.

Bantuan akan sangat dihargai.


@Gilles melakukan pengeditan dengan sangat baik. Saya tidak tahu bahwa mesin TeX SE mampu melakukan semua itu ... :-)
codd

Apakah saya salah atau latihan ini diambil dari Pierce "Jenis dan Bahasa Pemrograman"?
Fabio F.

@FabioF. Ini memang dari buku Jenis dan Bahasa Pemrograman Pierce. Dia memberikan bukti yang saya temukan tidak jelas, karena cara dia melakukan induksi. Itu sebabnya saya mencoba membuktikannya sendiri melalui induksi pada struktur. Saya berpikir untuk menyebutkan bahwa itu dari buku, tetapi saya pikir itu tidak relevan. Namun, sangat diperhatikan!
codd

Jawaban:


7

Oke, jadi mari kita perhatikan kasus yang , s telah diturunkan dengan menerapkan aturan E-If dan t telah diturunkan dengan menerapkan aturan E-Funny: Jadi s = i fr=ift1thent2elset3st mana t 1t 1 dan t = i fs=ift1thent2elset3t1t1 mana t 2t 2 .t=ift1thent2elset3t2t2

The kita cari adalah u = iuu=ift1thent2elset3. su follows from rule E-Funny and tu follows from rule E-If.


Beat me to it. Nice job.
Patrick87

Gosh, I was really looking too far... Thanks!
codd

Anda mencampuradukkannya, mengikuti dari E-Funny. Atau saya melihat sesuatu yang salah? su
codd

@ Joen Kamu benar - aku mencampuradukkannya. Diperbaiki sekarang
sepp2k

8

rsrtusutu - jika suatu istilah dapat dikurangi dengan cara yang berbeda, tidak peduli seberapa jauh mereka telah menyimpang, mereka akhirnya dapat bertemu kembali.

Cara terbaik untuk membuktikan sifat aturan penulisan ulang yang terdefinisi secara induktif adalah dengan menginduksi struktur derivasi reduksi, daripada struktur term yang dikurangi. Di sini, keduanya berfungsi, karena aturan mengikuti struktur istilah sebelah kiri, tetapi alasan pada aturan itu lebih sederhana. Alih-alih menyelam ke dalam istilah, Anda mengambil semua pasangan aturan, dan melihat istilah apa yang bisa menjadi sisi kiri untuk keduanya. Dalam contoh ini, Anda akan mendapatkan kasus yang sama pada akhirnya, tetapi sedikit lebih cepat.

t1t2t2 in [E-If] or on t1 in [E-IfFunny]. So when you have a term to which both rules apply — which must be of the form ifr1thenr2elser3, you can choose to apply the rules in either order:

ifr1thenr2elser3[E-If][E-IfFunny]ifr1thenr2elser3ifr1thenr2elser3[E-IfFunny][E-If]ifr1thenr2elser3

¹ You'll sometimes see types and rewriting together, but at their core they're orthogonal concepts.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.