Bağımlı tip, arıtma tipi ve Hoare Logic arasındaki fark


18

Çok az bağımlı tip teorisi biliyorum. Vikipedi'den:

Bağımlı tür, tanımı bir değere bağlı olan bir türdür.

Ve benim Tip teorisi dersimden bağımlı bir tip olduğunu hatırlıyorum:

Bir türe göre dizine alınan tür ailesi.

Ancak bağımlı türler ve iyileştirme türleri ve hoare mantığı ile ilgili bir karışıklığım var.

Çünkü Depenedent ve arıtma tipinden arıtma türleri bir Hoare mantığına benziyor. Daha fazla güç arıtma türü, sadece tatmin edilmesi gereken öngörüye izin vermenin yanı sıra verir (Hoare Logic ile neredeyse aynı gibi)?

Bağımlı türün ayrıntılandırma türlerine kıyasla verdiği ek şey nedir? Bağımlı tip, Arıtma türleri + Sat / Constraint çözücüden daha güçlüdür.

Herkes havayı örneklerle temizleyebilir.

Yanıtlar:


18

Paul-André Melliès ve Noam Zeilberger'in bu konuyu araştıran çalışmaları var. Özellikle Functors, Tip İyileştirme Sistemleri ve Tip İyileştirme Sistemleri için bir Isbell Dualite Teoremi'dir . Birincisi üzerine bir konuşma videosu da var.

Bence insanlar, belirli sistemleri temsil edici olarak , bu belirli sistemlerin amaçlarının ve detaylarının genel düşünceye atfedilmesine neden olan . Kısaca, tür arıtma sistemleri bağımsız olarak var olan terimleri sınıflandırırken, (arıtmasız) türler bağımlı veya başka türlü terimlerin bir parçasıdır. Bu tanıdık gelebilir ve hatta biraz çelişkili gelebilir.

Potansiyel olarak tanıdık ve muhtemelen çelişkili görünen kısım, à la Curry türlerini (dışsal olarak) ve Kilise türlerine (içsel olarak) bakarsanız ortaya çıkar. À la Curry türlerini düşündüğümüzde, türleri zaten anlamı olan türlenmemiş terimleri sınıflandırmak olarak düşünürüz. À la Church türlerinde var olan tek terimler iyi yazılmış terimlerdir, yani tür kısıtlamaları sözdizimin bir parçasıdır. Demek istediğim, bir Curry tarzı tip sistemi aslında türsüz terimleri rafine eden bir tür arıtma sistemi, bir Kilise tarzı tip sistemi bir tür arıtma sistemi değildir. Bu, örneğin, basitçe yazılan lambda hesabını bir tür arıtma sistemi veya bir arıtma tipi olmayan sistem olarak düşünebileceğimiz anlamına gelir.

Tabii ki hiç kimse terimlerimizin türsüz terimler olması gerektiğini söylemiyor. Yazılan terimlere bir tür arıtma sistemi de uygulayabiliriz ve tarihsel olarak, bu arıtma türlerinin (bu adla) ortaya çıktığı bağlamdır. Bununla birlikte, yumuşak yazma uygulamaları yukarıda açıklanan duruma daha yakın bir şeyi göstermektedir.

Şimdiye kadar bağımlı türler hakkında hiçbir şey söylemedim. Bunun nedeni, tamamen dik bir kaygı olmasıdır. Ben arketip bağımlı tip sistemler genellikle kilise-tarzda sunulan ve dolayısıyla arıtma sistemlerini yazın değil, ancak söyleyebilirim NuPRL (dayalı Hesaplamalı Tipi Teorisi , en arketip bağımlı tip teori varyantı, Martin-Löf tip kuramı) açıkladığım gibi açık bir şekilde bir tür arıtma sistemidir. NuPRL Terimler bile olmayabilir sahip türlerini! Kuşkusuz, "PRL" nin "Program İyileştirme Mantığı" anlamına gelmesi de bir devrilme olabilir. Kapak tarafında, ML için Arıtma Türleri , herhangi bir şekilde bağımlı bir tür sistemi olmayan, terimin kökeni olan bir arıtma türü sistemini açıklar.

Hoare üçlülerine gelince, bunlar bir tür arıtma sistemidir. Aslında ilk makalede bir tür arıtma sistemine örnek olarak kullanılmıştır. Bununla birlikte, Hoare Tip Teorisi , Hoare üçlü olan bir dil için arındırma tipi bir sistem olarak görülebilecek bir şey verir.

Farklı sistemlerin "gücü" hakkında bir cevap almak için, belirli bir (bağımlı) aile tipi sistem (ler) ve belirli bir (aile) arıtma tipi sistem (ler) belirtmeniz gerekir. "Bağımlı tip sistem" terimi, çok geniş bir tip sistem sınıfını kapsar ve "tip arıtma sistemleri" daha da geniştir. O zaman bile, terimler birbirini dışlamaz, bu nedenle "bağımlı tip sistemler" ve "arıtma tipi sistemler" arasında bir karşılaştırma olmaz. Ancak, "bağımlı tip sistem" ile Coq gibi bir şey düşünürseniz ve "arıtma tip sistem" için Sıvı Tipler gibi bir şey düşünürsenizo zaman oldukça tek taraflıdır. Coq genellikle pratikte neredeyse tüm matematiği kaldırabilecek kadar güçlü olarak görülür; kelimenin tam anlamıyla Coq içinde bir SMT çözücüsünü uygulayıp düzeltebilir ve sonra kullanabilirsiniz; ve altküme tipine çok yakın bir analog formüle edilebilir. (NuPRL tam anlamıyla altküme türlerine sahiptir.) Diğer tarafta, SMT çözücüleri genellikle Coq'un böyle bir sınırlaması olmadığı karar verilebilir teorilerle sınırlıdır; ve Sıvı Tipleri gibi birçok sistem, tahminleri belirtmek için sınırlı ve genişletilemez bir dile sahiptir. (Tabii ki, "bağımlı tip sistem" ile Bağımlı ML ve diğer şekilde tek taraflı olacak "tip arıtma sistemi" NuPRL [aynı zamanda bağımlı tip bir sistemdir] demek isteyebilirsiniz.)


1
Çok teşekkür ederim, gerçekten yardımcı oldu. Evet, uygulama programlamasında Bağımlı Türleri okuyordu (popl '99) ve karışıklığa girdi. Şerefe.
Pushpa

1
Bu harika bir cevap. yazdığınız için teşekkürler.
Jonathan Sterling
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.