Mengapa negara tetap tidak berubah dalam semantik operasional langkah kecil dari loop sementara?

9

Biasanya saya melihat bahwa dalam representasi semantik operasional struktural untuk loop sementara, status program tidak berubah:

(whsayaleBdHaiS,σ)(sayafBthenS;(whsayaleBdHaiS)elseSKsayaP,σ)

Bagi saya, ini tidak intuitif, jika statusnya tidak berubah (yaitu status memori tetap sama) maka akan tetap benar dan program tidak akan pernah berakhir.B

Adakah yang bisa menjelaskan mengapa negara tidak berubah dalam aturan ini?

El Marce
sumber
Perhatikan bahwa ini hanya benar jika kita dapat berasumsi bahwa tidak memiliki efek samping. Ini tidak benar di sebagian besar bahasa pemrograman. B
Raphael

Jawaban:

10

Dalam semantik bahasa pemrograman, gagasan tentang keadaan program bukanlah gagasan filosofis yang samar, tetapi konsep matematika yang sangat tepat. Sebuah negara dalam kecil-langkah semantik operasional adalah fungsi parsials

s:VSebuahrZ

yang mencatat nilai-nilai variabel. Jadi, jika , maka variabel x memiliki nilai v . Negara tentu saja merupakan fungsi parsial, karena hanya masuk akal untuk mencatat nilai-nilai variabel yang benar-benar terjadi.sx=vxv

Aksioma yang berlangsung

sementarabmelakukanS,sjikabkemudianS;sementarabmelakukanSlain lewati,s

hanya memberitahu kita bahwa kita membuka loop sementara ke dalam pernyataan kondisional, salah satu cabangnya berisi loop. Tidak ada variabel yang akan mengubah nilainya karena ini, dan karena alasan ini keadaan tidak berubah.

Hans Hüttel
sumber
10

Negara dapat berubah dalam langkah pengurangan berikutnya karena di sisi kanan

whsayale B dHai S,σsayaf B then (S; whsayale B dHai S) else sksayahal,σ

yang -loop dijaga (diawali) oleh S . Perhitungan S dapat mengubah keadaan sehingga kondisi B dapat dievaluasi menjadi f a l s e .whsayaleSSBfSebuahlse

Martin Berger
sumber
Jadi, ini berarti bahwa perubahan negara harus dinyatakan dalam aturan lain yang berpotensi mengurangi S dalam program konkret?
El Marce
@ Elce Ya. Saya sarankan untuk melihat contoh sederhana misalnya dan lihat bagaimana ini bekerja. x: =2; whsayale x>0 dHai x: =x-1
Martin Berger
9

Negara tidak berubah ketika kita mempertimbangkan B untuk memutuskan apakah untuk melakukan satu iterasi dari loop, tetapi dapat berubah nanti ketika kita menjalankan tubuh S . Jadi, pada saat kita mempertimbangkan B , bisa ada perubahan σ .σBSBσ

Andrej Bauer
sumber
Penjelasan ini, walaupun pada dasarnya benar, tidak merujuk pada status apa (yaitu fungsi yang memberi tahu kita nilai-nilai varialbes) dan apa yang ditandakan oleh perubahan kondisi (yaitu bahwa nilai setidaknya satu perubahan variabel).
Hans Hüttel
Memang, tidak relevan apa negara atau bagaimana mereka diterapkan untuk tujuan jawaban saya. Penjelasannya tetap berlaku. Dan lagi pula, sebenarnya salah untuk mengatakan bahwa "keadaan benar-benar berfungsi" karena theat hanya satu cara untuk memodelkannya secara matematis. Ada beberapa model lain yang mungkin. Dan jangan sampai kita membingungkan model matematika dengan cara kerja perangkat keras.
Andrej Bauer
Tetapi pertanyaannya berkaitan dengan semantik operasional langkah-kecil tertentu, yang pengertian negara didefinisikan dengan baik.
Hans Hüttel
Saya tidak pernah mengatakan itu tidak benar. Saya hanya mengatakan bahwa komentar Anda tidak perlu, karena penjelasan saya berlaku tanpa menyebutkan secara eksplisit bagaimana model dimodelkan. Mungkin Anda mendeteksi bahwa OP tidak tahu bahwa keadaan adalah peta dari variabel ke nilai. Baik untuk Anda, jawaban Anda diterima, dan saya tidak. Selamat. Mengapa Anda sekarang memaksakan cara jawaban Anda pada saya adalah di luar pemahaman saya. Mengapa Anda merasa perlu untuk membuat jawaban saya seperti jawaban Anda? Jawaban saya masuk akal tanpa pernyataan yang menurut Anda perlu. Mungkin seseorang akan datang dengan mencari jawaban saya suatu hari nanti.
Andrej Bauer