Saf işlevsel programlama dilleri için herhangi bir açıklamalı resmi doğrulama sistemi var mı?


25

ACSL (Ansi C Spesifikasyon Dili), C kodunun resmi olarak doğrulanmasını sağlayan özel yorumlarla not edilen C kodunun bir özelliğidir.

Araştırmamıştım , ancak ACSL doğrulayıcılarında kullanılan resmi yöntemlerin Hoare Logic'e benzer olacağını hayal ediyorum. Haskell gibi saf işlevsel diller için, resmi doğrulama için ne tür bir formalizmin kullanılacağını hayal edemiyorum.

ACSL'ye benzer bir şey yapan var , ancak tamamen işlevsel bir dil için mi? Olmazsa, işlevsel diller için şartname açıklamalı stil resmi doğrulama konusunda herhangi bir araştırma var mı?

Birçok dilin (Ağda, İdris vb.) Desteklediği bağımlı yazım olduğunu biliyorum, ancak Haskell bağımlı yazımda bazı (okunamayan?) Tür sihirbazı yapmadan zor yazıyor. Bunu akılda tutarak ve Haskell Agda ve İdris'ten çok daha iyi kütüphane desteğine sahip olduğundan, işlevsel bir resmi doğrulama için böyle bir sistemin yararlı olabileceğine inanıyorum, ancak bu konuda araştırma yapılıp yapılmadığını bilmiyorum.

Yanıtlar:


13

Honda ve Yoshida'nın

(muhtemelen) tamamen işlevsel diller için Hoare mantığına öncülük etti. Bu çalışma, Hennessy-Milner mantığına ve Milner'ın burada açıklanan fonksiyonlara kodlama işlemine dayanmaktadır:

Régis-Gianas ve arkadaşlarının başka bir cevabında bahsettikleri eserler, Honda / Yoshida'nın yukarıdaki ilk eserine benzer. Bu, etkili ML tarzı dillere genişletildi:

Bahsedilen mantık, gözlemsel olarak tamamlanma denilen şeydir, yani operasyonel ve mantıksal anlambilimin çakışması anlamına gelir. Arthur Charguéraud, bu tamamlamaları Coq'da Hoare tarzı fonksiyonel programların doğrulanması konusundaki çalışmaları için kullandı.


15

F

Arıtma tipleri ile ACSL benzeri gösterimler arasında yakın bir yazışma var gibi görünüyor.

Son olarak, Haskell'i derleyebilecekleri için Agda ve İdris'e yalnızca daha yakından bakmayı önerebilirim ve kullanıcıya kullanılabilir bir programlama dili (özellikle İdris) sunmayı amaçlarım. Haskell kütüphanelerini çok fazla sorun yaşamadan İdris koduna entegre etmenin mümkün olduğundan şüpheleniyorum.


çok fazla sorun olmadan - gerçekten değil. Idris varsayılan olarak katı ve Haskell tembel; bu tek başına büyük bir sorun olarak ortaya çıkar. İdris tasarımı için Haskell ile uyumluluk da asla çok yüksek bir öncelik değildi.
Bartek Banachewicz 10:14

Yeterince adil. Agda varsayılan olarak sonlandırmayı kontrol ediyor, bu nedenle katılık gibi şeyler teoride bir sorun değil . Tabii ki çalışma zamanı önemli ölçüde farklı olabilir.
cody



1

Sözleşmelerin yumuşak bir şekilde doğrulanması konusundaki çalışmalarımız OOPSLA 2012 ve ICFP 2014'te ACSL'nin belirttiği gibi sözleşmeler yazmanıza ve daha sonra bunları statik olarak doğrulamanıza veya çalışma zamanında dinamik bir kontrol kullanmanıza izin veriyor.

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.