Bir yazı sistemi yabancı işlevler için bir kanıt asistanı olarak kullanılabilir mi?


9

Verilen:

  1. Çok etkileyici tip sistemlere sahip bir dilde (örneğin Idris ) yabancı işlev arabirimleri / güvensizPerformIO gibi kaçış mekanizmaları da olabilir.
  2. Bu özellikleri ifade edebilecek bir tip sistemi olmayan bir dilde yazılmış bir programın bazı özelliklerini kanıtlamak için kullanılabilecek kanıt asistanları vardır.
  3. Curry-Howard yazışması, belirli bir türdeki bir işlevin başarıyla denetlenen bir uygulamasının, bu türle ifade edilen şeyin kanıtı olduğunu gösterir.

Ana dilin tür sisteminde yabancı dil kodunun bazı özelliklerinin önemsiz kanıtlarını ifade edebilir mi?

Örneğin, zaten eşit öğelerin sırasını korurken, numaraları çok akıllı ve verimli bir şekilde sıralayan stabil_qsort adında bir C işlevine ve FFI aracılığıyla stabil_qsort'u çağıran bir Idris programına sahip olduğumu varsayalım, ancak bu nispeten belirsiz olana güvenmiyorum C işlevi. İşlevin, ayrı bir kanıt asistanı kullanmak yerine Idris kodumda tüm girdiler için eşit öğeleri yeniden sıralamadığını kanıtlayabilir miyim?

Yanıtlar:


10

Uzun lafın kısası: hayır yapamazsın. Yabancı bir işlev bir kara kutu gibidir ve ona attığınız tür bir vaattir: Curry-Howard yazışmasında teorinize bir aksiyom eklemeye karşılık gelir.

Olduğu söyleniyor, yolları var. Örneğin Coq'da , C standardının çeşitli şekillendirmeleri vardır (örneğin Robbert Krebbers'in çalışması ). C programlarını ve anlambilimlerini açık bir şekilde temsil ettiğiniz için, kodunuzu doğrudan prova asistanına yazabilirsiniz ve daha sonra bazı özelliklerini kanıtlamak mümkündür.

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.