Neden bir while döngüsünün küçük adım operasyonel semantiğinde durum değişmeden kalıyor?


9

Genellikle while döngüsü için yapısal işlemsel anlamsal gösterimde program durumunun değişmediğini görüyorum:

(whileBdoS,σ)(ifBthenS;(whileBdoS)elseSKIP,σ)

Benim için, bu sezgisel değil, eğer durum değişmezse (yani belleğin durumu aynı kalır) B gerçek olmaya devam edecek ve program asla sona ermeyecek.

Herkes bu kuralda devletin neden değişmediğini açıklayabilir mi?


Bunun yalnızca şunu varsayabilirsek doğru olduğunu unutmayın: Byan etkileri yoktur. Çoğu programlama dilinde bu doğru değildir.
Raphael

Yanıtlar:


10

Dil semantiğini programlamada, program durumu kavramı belirsiz bir felsefi kavram değil, çok kesin bir matematiksel kavramdır. Bir devlet s bu küçük adımlı işlemsel anlambilimde kısmi bir işlev vardır

s:VarZ

değişkenlerin değerlerini kaydeder. Yani eğersx=v, sonra değişken x değeri var v. Durum zorunlu olarak kısmi bir işlevdir, çünkü gerçekte meydana gelen değişkenlerin değerlerini kaydetmek mantıklıdır.

Açılma aksiyomu

whilebdoS,sifbthenS;whilebdoSelse skip,s

bize bir while-loop'u koşullarından oluşan bir ifadeye açtığımızı söylüyor. Bu nedenle hiçbir değişken değerlerini değiştirmez ve bu nedenle durum değişmez.


10

Durum, sonraki azaltma adımlarında değişebilir, çünkü

while B do S,σif B then (S; while B do S) else skip,σ

while- Döngü tarafından korunur (önceden) S. HesaplanmasıS durumu değiştirebilir, böylece durum B değerlendirebilir false.


Yani bu, devlet değişikliğinin S'nin somut bir programda potansiyel olarak azaltılabileceği diğer kurallarda ifade edilmesi gerektiği anlamına mı geliyor?
El Marce

@ElMarce Evet. Basit bir örnek vermenizi öneririm.x:=2; while x>0 do x:=x1ve bunun nasıl çalıştığını görün.
Martin Berger

9

Eyalet σ düşündüğümüzde değişmez BDöngünün tek bir yinelemesini yapıp yapmayacağınıza karar vermek için, ancak vücudu çalıştırdığımızda daha sonra değişebilirS. Ve bir dahaki sefere düşündüğümüzdeB, bir değişiklik olabilir σ.


Bu açıklama, esasen doğru olmakla birlikte, hangi durumların (yani varialbesin değerlerini söyleyen bir işlev) ve bir durum değişikliğinin ne anlama geldiğini (en az bir değişkenin değerinin değiştiğini) ifade etmez.
Hans Hüttel

Aslında, cevabım için devletlerin ne olduğu veya nasıl uygulandıkları önemsizdir. Açıklama ne olursa olsun. Üstelik, "devletler gerçekten işlevlerdir" demek yanlıştır çünkü tiyatro onları matematiksel olarak modellemenin tek yoludur. Başka olası modeller de var. Matematiksel modelleri donanımın çalışma şekliyle karıştırmayalım.
Andrej Bauer

Ancak soru, bir devlet kavramının iyi tanımlandığı belirli bir küçük adım operasyonel semantiği ile ilgilidir.
Hans Hüttel

Asla öyle olmadığını söylemedim. Ben sadece söyleminizin gereksiz olduğunu söylüyorum, çünkü açıklamam devletin nasıl modellenmesinden açıkça bahsedilmiyor. Belki de OP'nin durumun değişkenlerden değerlere bir harita olduğunu bilmediğini tespit ettiniz. Senin için iyi, cevabını kabul ettin, ben de kabul etmedim. Tebrikler. Neden cevap biçiminizi bana zorladınız, kavrayışımın ötesinde. Neden cevabımı seninki gibi yapma ihtiyacını tam olarak hissediyorsun? Cevabım, gerekli olduğunu düşündüğünüz açıklamalar olmadan mantıklı. Belki birisi bir gün cevabımı arayarak gelecek.
Andrej Bauer
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.