İşte bir "parça B" sorusu var. Özet: Deterministik olmayan programlara anlambilim kazandırmaya çalıştığımda ilk düşündüğüm şey, yalnızca deterministiği sona erdirmeyen döngüler hakkında bir şeyler kanıtlayamadığım bir anlambilim ile sonuçlanır. Şüphesiz birisi bu durumda ne yapacağını hesapladı ya da en azından bunun zor olduğuna dikkat çekti, ama onu nasıl arayacağımı bilmiyorum (dolayısıyla "referans isteği" etiketi).
Arka fon
Determinizmsiz bir süre dili modellemek istiyorum. Bu tür bir dili Smyth powerdomain ile modellemenin bariz (veya en azından naif) bir yol olduğunu düşünüyorum, ancak yanılıyorsam beni düzeltin. Bu dilde bir komutun anlamını, etki alanı durum kümesi olan ve kod alanı olan bir işlev olarak modelleyeceğiz , burada en az öğe fesihsizliği temsil eden ve devletlerin güç kümesidir.
- eğer , aksi takdirde
- halinde ya da aksi
- bazı için veya ise , aksi takdirde
Bir yönlendirilmiş tümü ya da bir düzen var , burada herhangi ve her ikisi de eğer ve uygun setleri ve vardır , ve işlevlerine bu uzanabilir den için noktasal: halinde her ve , her durumu eşleyen işlevdir .
Bir döngü anlamı en azından üst zincirin bağlanmış olan , burada halinde , aksi halinde veya bazı , aksi takdirde . (Bu tanım, az önce tanımladığım sürekli Scott olduğunu varsayıyor , ancak bence bunu bir kenara bırakmak güvenli.)
Soru
Bu programı düşünün:
Sezgisel olarak, bu, herhangi bir pozitif çift sayıyı döndürebilen veya sonlandırılamayan bir döngüdür ve en zayıf liberal önkoşulu kullanarak bu döngü hakkında kanıtlayabildiğimiz şeye karşılık gelir ( bir döngüdür değişmez). Ancak, döngü sona ermeme yeteneğine sahip olduğundan (her zaman sağ kolu alan program tarafından deterministik olmayan seçimi geliştirebiliriz), herhangi bir başlangıç durumu verildiğinde bu programın anlamı . (Daha az gayri resmi: yanlış olduğu herhangi bir durumu ve için doğru olduğu herhangi bir durumu eşleyen işlev , döngüyü tanımlamak için kullanılan sabit bir noktasıdır .)
Bu, önerdiğim saf semantiklerin programlar hakkında akıl yürütmeyi umduğum şekilde uyuşmadığı anlamına geliyor. Anlambilimimi suçluyorum, ama onları nasıl düzelteceğimi bilmiyorum.