Tek parametriklik ve ikili parametriklik


15

Bernardy ve Moulin'in 2012 LICS belgesini ( https://dl.acm.org/citation.cfm?id=2359499 ) gördükten sonra yakın zamanda parametrikliğe oldukça ilgi duydum . Bu yazıda, tek tipli parametrikliği, bağımlı tiplere sahip saf tip bir sistemde içselleştiriyorlar ve yapıyı keyfi varlıklara nasıl genişletebileceğinize dair ipucu veriyorlar.

Daha önce tanımlanan ikili parametrikliği gördüm. Benim sorum şudur: ikili parametriklik kullanılarak kanıtlanabilen, ancak tekli parametriklikle kanıtlanamayan ilginç bir teorem örneği nedir? Ayrıca, üçüncül parametriklik ile kanıtlanabilir bir teorem örneğini görmek de ilginç olacaktır, ancak ikili ile değil (n-parametrikliğin n> = 2 için eşdeğer olduğuna dair kanıt görsem de : bkz. Http: //www.sato.kuis .kyoto-u.ac.jp / ~ takeuti / art / par-tlca.ps.gz )

Yanıtlar:


12

Genellikle, program denkliklerini kanıtlamak için ikili parametriklik kullanırsınız. Bunu tek bir modelle yapmak doğal değildir, çünkü bir seferde sadece bir programdan bahseder.

Normalde, ilgilendiğiniz tek şey tek bir özellikse tekli bir model kullanırsınız. Örneğin, tekli bir model kullanarak bir tür sağlamlık sonucu kanıtladığımız son taslak Yüzeysel Altyapı Türlerimize bakın. Sağlamlık bir programın davranışı hakkında konuştuğundan ( o zaman v : A değerine sapar veya azalır ), tekli bir model yeterlidir. Ayrıca program denkliklerini kanıtlamak isteseydik, ikili bir modele ihtiyacımız olurdu.e:birv:bir

EDIT: Ben sadece bizim kağıda bakarsanız, sadece düz eski mantıksal ilişkiler / gerçekleştirilebilirlik modeli gibi olduğunu fark ettim. Onu (ve diğer modelleri) parametrik yapan şey hakkında biraz daha söylemeliyim. Temel olarak, bir model, kimlik uzantısı lemmasını bunun için kanıtlayabildiğinizde parametriktir: yani, herhangi bir tür ifadesi için, serbest tür değişkenlerinin tümü kimlik ilişkilerine bağlıysa, tür ifadesi kimlik ilişkisidir. Bunu açıkça bir lemma olarak kanıtlamıyoruz (nedenini bilmiyorum, ancak operasyonel modeller yaparken nadiren gerekir), ancak bu özellik dilimizin sağlamlığı için gereklidir.

Parametriklikte "ilişki" ve "kimlik ilişkisi" tanımı aslında kapmak için biraz fazladır ve daha yüksek türler veya bağımlı türler gibi süslü türleri desteklemek veya daha süslü semantik yapılarla çalışmak istiyorsanız bu özgürlük esastır. Bunu bildiğim en erişilebilir açıklama Bob Atkey'in Daha Yüksek Türler için İlişkisel Parametrik taslak belgesinde .

Kategori teorisi için iyi bir iştahınız varsa, bu ilk olarak Rosolini tarafından Refleksif Grafikler ve Parametrik Polimorfizm adlı makalesinde soyut bir şekilde formüle edilmiştir . O zamandan beri Dunphy ve Reddy tarafından Parametrik Limit makalelerinde ve ayrıca Birkedal, Møgelberg ve Petersen tarafından Domain Teorik Parametrik Polimorfizm Modellerinde geliştirilmiştir .


5

Bu, Neel'in cevabına bir yorum olmalı, ancak biraz uzun. Rasmus Petersen'den bir ipucu ile Møgelberg'in tezinde aşağıdakileri buldum (benimkini vurgula):

Ivar Rummelhoff [36] farklı PCA'lara göre model başına doğal sayıların kodlanmasını incelemiş ve bu modellerin bazılarında kodlamanın doğal sayılardan daha fazlasını içerdiğini göstermiştir. Dolayısıyla bu modeller parametrik olamaz. Bahsetmese de, bu, tekli parametrikliğin ikili (ilişkisel) parametriklikten farklı olduğunu gösterir, çünkü herhangi bir modeldeki doğal sayıların kodlamasının tekli parametrik olduğunu kolayca gösterebilir.

Atıfta bulunulan makale PER modellerinde Polynat'tır .


3

nnR,(n+1)R,'(x,y)R,(x)y=xbenben[1 ..n]nn+1n+1n. Daha fazla ilişki daha güçlü parametriklik ve daha az fonksiyon ailesi "parametrik" olarak kabul edileceğinden, "gerçek parametrikliğin" sınırda elde ettiğimiz şey olduğunu ve her bir parametrikliğin buna bir yaklaşım olduğunu anlıyoruz.

Bu sonsuz ilişkiler, Jung-Tiuryn ​​ilişkileri olarak da adlandırılan "değişen çağların Kripke mantıksal ilişkileri" olarak resmileştirildi. Jung ve Tiuryn, lambda tanımlanabilirliğini karakterize etmek için bu tür sonsuz parametrikliğin yeterli olduğunu göstermiştir ve O'Hearn ve Riecke , sıralı PCF de dahil olmak üzere programlama dilleri için tamamen soyut modellerin karakterize edilmesinin yeterli olduğunu göstermiştir . Bunlar temel ve güzel sonuçlardır!

Böylece, tek parametriklik gerçek parametrikliğin en basit ve en az anlamlı olanıdır ve ikili parametriklik biraz daha iyi olur. Sorunuz "ne kadar daha iyi"? Benim izlenimim çok daha iyi olduğu. Bunun nedeni, tekil düzeyde, "kimlik ilişkisi" nin çok gerçek olmayan her gerçek ilişkidir. İkili düzeyde "kimlik ilişkisi" eşitliktir. Böylece, tekli seviyeden ikili seviyeye geçerek parametrikliğin gücünde ani bir sıçrama elde edersiniz. Bundan sonra, giderek daha rafine hale geliyor.

Kurt Sieber bu konuları derinlemesine incelemiştir: sıralılık ve Algol benzeri diller için .


2

Muhtemelen ikili parametriklik uygulamaları için okunması en kolay makale Wadler'in Ücretsiz Teoremleri! .

Aslında, sorudan biraz şaşırdım çünkü ikili parametriklik parametriklik belgelerinde en sık bahsedilen şeydir. Orijinal Reynolds gazetesi bile "Türler, soyutlama ve parametrik polimorfizm" her yerde bahseder. Daha çok yaygın olarak bilinmeyen tek parametriktir.


Bu harika bir makale, ancak ikili parametrikliğe aşinayım - istediğim, ikili parametrikliğin neden tek parametreli olandan daha güçlü olduğunun açık bir açıklamasıydı.
Christopher Monsanto

Şimdi açık olabileceğini düşündüğüm bazı ayrıntılar ekledim, ancak yaygın olarak bilinmiyor. Yani, burada belgelemek iyi görünüyor.
Uday Reddy
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.