Coq'ta OCaml'ın biçimsel semantiği


14

OCamllight adı verilen geniş bir OCaml alt kümesinin semantiği, birkaç yıl önce Owens tarafından HOL'de resmileştirildi. Daha yakın zamanlarda, daha küçük bir OCaml alt kümesinin tip teorik anlambilimi Kreup , Hayden ve Hickey tarafından Nuprl'de uygulandı .

Coq'ta benzer bir gelişme var mı?


İlginizi çekebilecek CakeML: cakeml.org . Yine de OCaml değilim.
jmite

Yanıtlar:


12

Arthur Charguéraud'un Doktora tezi, Mekanize Program Doğrulaması için Karakteristik Formüller gördünüz mü ?

Tür sistemini ve küçük adım semantiğini tümevarımsal ilişkiler olarak inşa etmek yerine Caml programlarını karakteristik formüllere dönüştürmek için bir teknik verir. Bu temelde çok büyük bir Ocaml alt kümesini desteklemek için yüklem transformatörü semantiğinin genelleştirilmesidir - özellikle güvenli olmayan dökümler dahil Obj.magic. Tezinden alıntı yapmak için:

Sıralı, değere göre arama, üst düzey programlama dili olan OCaml programlama dilinin bir alt kümesine odaklandım. Mevcut CFML uygulaması, üst düzey fonksiyonlar, özyineleme, karşılıklı özyineleme ve polimorfik özyineleme dahil olmak üzere çekirdek λ-hesabını destekler. Tuples, veri yapıcıları, desen eşleştirme, referans hücreleri, kayıtları ve dizileri destekler. Boş göstericiler ve güçlü güncellemeler için destek sağlayan ek bir Caml kütüphanesi sağlıyorum.

Belirli bir Caml programının doğru olduğunu kanıtlamak istiyorsanız çok çekici bir yaklaşımdır (daha az metatheory ile ilgileniyorsanız).


Yani, doğru anlarsam, Ocaml'ın semantiğinin özellikleri sisteme gömülüdür. Sistemin karakteristik formülünü (bazı temel işlevleri) böyle bir şartname olarak yorumlamak mümkün müdür? Ayrıca, sistemin OCaml dilinde yazılmış olduğunu düşünüyorum. Sistemin kendisinde doğruluğunu belirlemek ve kanıtlamak mümkün müdür?
Andrea Asperti

Belirli bir OCaml programı için karakteristik formülü, programın istenen özelliklerini kanıtlamak için kullanılabilen bir "en az genel" spesifikasyon olan bir anlamsal semantik olarak düşünülebilir. CFML'nin kendisinin "doğruluğundan" bahsederseniz, soru şudur: Hangi alternatif biçimsel anlambilim açısından?
gasche

Yazılımı sertifikalandırması gereken ve davranışı belirtilemeyen bir programa sahip olmak garip :)
Andrea Asperti

@AndreaAsperti "Sisteme gömülü" ne demek istiyorsun? Karakteristik formüllerin (CF'ler) arkasındaki fikir oldukça basittir: programları mantıksal formüllerle eşleştirin (tipik olarak ön koşul ve son koşul), bu formüller programların anlamlarını tam olarak tanımlar. Başka bir deyişle, iki program bağlamsal olarak ayırt edilemez durumdaysa aynı CF'leri karşılar. Programdan CF'lere harita, programın yapısının indüksiyonu ile yapılır ve yeterince ifade edici herhangi bir mantığı hedefleyebilir. A. Charguéraud hedefinin Coq's mantığı, ancak bu bir şarta bağlı seçim.
Martin Berger

1
@MartinBerger: Guéneau ve ark. Kağıdı sadece sağlamlığı kanıtlıyor çünkü türetilmiş ön / yazılar türetildikleri programları karakterize etmiyor . CF'leri, CakeML'nin türlenmemiş anlambiliminden türetilir, ancak yazılan dilin farklı bir gözlemsel denkliği vardır. (Pratik doğrulama için bu çok önemli değildir ve daha kolaydır.)
Neel Krishnaswami

8

Sen Jacques garrigue en ilgilenen olabilir Yapısal Polimorfizmi Rekürsif Türleri ile ML A Sertifikalı Uygulama statik ve dinamik semantik sağlamlığını kurar, ve böylece biri resmileştiren, (özyineleme ve) yapısal polimorfizm ile ML dili için tür kesmesi özellikleri OCaml'in daha gelişmiş köşeleri (polimorfik varyantlar ve nesne tipleri).

Bununla birlikte, bu çalışma, mevcut OCaml programlarının özellik kümesini kapsamaktan ziyade, yazı sisteminin daha gelişmiş bölümlerinin sağlamlığını doğrulamayı amaçlamaktadır. Mevcut bir OCaml programının doğruluğunu kanıtlamaya çalışmak açısından CFML'nin daha iyi bir seçim olacağını düşünüyorum.

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.