Kısmi doğruluğa sonlandırmayı azaltmak ne kadar zor?


14

Program doğrulamasını biliyorsanız , Arka Plandan önce Soruyu okumayı tercih edebilirsiniz . Program doğrulamasına aşina değilseniz, yine de bu soruya cevap verebilirsiniz, ancak önce Arka Plan'ı okumayı tercih edebilirsiniz .

Arka fon

Kısmi doğruluk kontrolünün kararsız olduğu sıklıkla ifade edilir. Tartışma uğruna, bu ifadeyi Floyd - Hoare tarzında kesinleştirmenin çok özel bir yolunu seçelim. Bir flowgraph bir ayırt bir digraph olan başlangıç düğümü tüm düğümlerin ulaşılabilir olan. Bir programı olan düğümleri komutları bir flowgraph olup. Komutları üç tipi vardır (1) varsayımlar kabul q , (2) iddialar Assert q = e: ve (3) atamaları v. Burada q bir fol (birinci dereceden mantık) formülü, e bir fol terimi ve v bir değişkendir.

Her bir x düğümüne a (x) önkoşulu ve b (x) önkoşuluyla ek açıklama yapmanın bir yolu olduğunda , bir programın kısmen doğru olduğunu söyleriz, böylece (1) ilk düğümün önkoşulu geçerlidir, (2) { a (x) } x { b (x) } tüm x komutları için geçerlidir ve (3) ( b (x) bir (y) anlamına gelir ) x ile y arasındaki tüm kenarlar için geçerlidir . Burada Hoare üçlüleri aşağıdaki gibi tanımlanır:

  • { p } assert q { r }, ( p ima ( q ve r )) 'nin geçerli olduğu anlamına gelir
  • { p } varsayalım q { r }, (( p ve q ) 'nun r ) anlamına geldiğini gösterir
  • { S }: v = E { r ((o} araçları s ile e ikame v ) ifade eder r ) geçerlidir

İşte bu kısmi doğruluğun kontrol edilmesinin neden kararsız olduğuna dair el-dalgalı bir argüman : Bazı a (x) ve bazı b (x) doldurduktan sonra bazı fol formüllerinin geçerli olup olmadığını kontrol etmeniz gerekir ve bu karar verilemez.

Kısmi doğrulukta sonlandırmayı kodlamanın tipik bir yolu, esasen "son çalıştırıldığımdan beri sonlandırmaya doğru ilerleme kaydedildi" diyen bazı özel iddialar eklemektir. Bu ilerleme iddiaları , akış şeması üzerindeki (ilk düğümden başlayan) tüm sonsuz yürüyüşlerin sonsuz sayıda ilerleme iddiası içereceği şekilde yerleştirilmelidir. Daha açık olmak gerekirse, ilerleme iddialarının her zaman u < v biçiminde onaylayıcıya sahip olduğunu varsayalım , burada u ve v pozitif tamsayılardır, önce u : = f ataması gelir ve bunu v : = u ataması izler . Burada f birvaryant işlevi , u geçerli değeridir ve v eski değeridir. Şimdi, "pozitif tamsayılar" hakkında konuştuğumuzdan ve bunları karşılaştırdığımızdan, fol'dan biraz daha fazla kullanılabilir olduğundan emin olmalıyız: Diyelim ki Peano aritmetiği mevcut. (Bu seçim hakkında pek bir şey hissetmiyorum. Uygunsa göz ardı etmekten çekinmeyin.) Elbette, f programda belirtilen diğer işlevleri ve sabitleri kullanabilir. (Programın başına varsayım eklemenin, mantıksal olmayan aksiyomları uygulamaya eşdeğer olduğunu unutmayın.)

Şimdi, ilerleme iddiaları olan program hala kısmen doğruysa, orijinal programın sona erdiğini biliyoruz.

Soru

Bir sonlandırma programı göz önüne alındığında, ilerleme iddiaları için varyant fonksiyonlar bulmak zor. Ama ne kadar zor? (Yukarıdaki büyük arka planla bile, nasıl bakmak istediğinize bağlı olarak bu soruyu hala açık uçlu veya kötü tanımlanmış bıraktığımı biliyorum.)

Başka bir deyişle, sonlandırmayı kısmi doğruluğa indirgeme sorununu resmileştiren ve daha sonra karmaşıklığı hakkında bir şeyler söyleyen bir referans arıyorum. Tüm bunları yapan bir cevap elbette memnuniyetle karşılanacaktır.


Bunu anladığımı kontrol edeyim. İstediğiniz şey, diğer şeylerin yanı sıra, toplam özyinelemeli bir işlevi hesaplayan ve işlevin toplam olduğuna dair bir ifade kanıtı (uygun varyant işlevleri ve kanıtlar şeklinde) veren bir algoritma verir. )? Bu bana çok hesapsız geliyor.
Andrej Bauer

Andrej, bana da hesapsız geliyor. Sorduğum şey, bunun hesapsız olduğuna dair bir kanıt.
Radu GRIGDaha

Yanıtlar:


7

Buna cevap vermenin bir yolu, karar verilebilir olduğu bilinen kısmi doğruluk ve sonlandırma sorguları sınıfları için karar problemlerinin hesaplama karmaşıklığını dikkate almaktır. Çok yüzlü alanı kullanarak soyut yorumlama, gerekli ek açıklamaların doğrusal eşitsizliklerin bağlaçları olduğu durumlarda bahsettiğiniz kısmi doğruluk ek açıklamalarını çıkarabilir. Özet post-koşulun hesaplanması değişken sayısında üsteldir. Sonra sabit noktayı bulma yükü var. Bu konuda daha fazla bilgi edinmek için Cousot'un ilk belgelerine ve onunla doğrudan oynamak istiyorsanız Apron kütüphanesine bakın.

Varyant fonksiyonları bulmak, varyant fonksiyonları doğrusal olduğunda karar verilebilir. Bunun karmaşıklığının tam bir karakterizasyonunu bulamadım, ancak Tiwari tarafından "Doğrusal Programların Sonlandırılması" nın karmaşıklığı tartışan bir bölümü var. Ayrıca bkz. Podelski ve Rybalchenko'nun "Doğrusal Sıralama İşlevlerinin Sentezi İçin Tam Bir Yöntem". Ayrıca Byron Cook, fesih argümanlarının oluşturulmasına yardımcı olmak için soyut yorumdan yararlanma konusunda çalışmalar yaptı. Bkz., Örneğin, "Sıralama Soyutlamaları" ve "Değişmezlik Analizlerinden Sapma Analizleri". Bunlar, kısmi doğruluk ve fesih arasındaki ilişkiye dair daha fazla fikir verebilir.

Bağlantılar:


1
Umarım cevabınızı düzenlemem ve bağlantıları aktif hale getirmem sakıncası yoktur.
Andrej Bauer

4

Gerekli sonlandırmadan kısmi doğruluğa belirgin bir azalma var , yani:

P tatmin asıl durumda başladığında sona erer asla φ IFF { φ } P geçerlidir {false}.

Bunun başka bir cevabı olmadığını biliyorum. Avantajı, yukarıdakilerden daha kısa olmasıdır.


3

Elbette, grafiğinizi ön ve son koşullarıyla, yani en zayıf liberal ön koşul semantiği ile doldurmak için standart bir teknoloji vardır - genellikle kararsızdır - bu, şartnamenin memnuniyeti için ya da olmayan -sonlandırma. Bu aslında bu diller için tam bir kısmi doğruluk teorisi ve gerçekten de tam doğruluk

Tebeşir ve peynir, hangisinin son derece ve kısmi doğruluğun zor işin olduğu yerde olduğuna karar verir, çünkü her ikisi de çok kötü karar verilemez. Ancak, kısmi doğruluk, hem program hem de şartname dilleri için dil tasarım sorunları ile karıştırılırken, sonlandırma zorluğu temiz bir türdeyse: sonlandırmayı kanıtlamak için kullanılan herhangi bir teori için sonlanan algoritmalar olacaktır, ancak bağlantının sona erdiği kanıtlanmıştır. bu teoriye. Örneğin , saf polimorfik lambda hesabındaki hesaplamalar sona ermelidir, ancak Peano aritmetiği bunu kanıtlayamaz.

Benim izlenimim, Patrick Cousot'un öncülüğünü yaptığı soyut yorum çalışmalarının bu alandaki en dinamik olduğu, ancak bir uzman gibi davranmıyorum.


Çıkarım yapan değişken fonksiyonların karmaşıklığını sormaya çalışıyordum. Açık olmadığım için üzgünüm! Bir merak olarak, Rustan Leino geçen akşam (bir barda) bana wlp'nin burada tarif ettiğim programlar için wp & sp kadar iyi çalışmadığını şiddetle öneren bir örnek buldu. İşe daha uygun bir yere geldiğimde iki kez kontrol etmem gerekecek :)
Radu GRIG

@Radu: Otomatik sonlandırma kanıtları üzerinde çalışmalar yapılmış ve Prolog için bazı güzel çalışmalar yapılmıştır. Zaman bulduğumda bazı referanslar bulabilirim.
Charles Stewart
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.