Deneyimlerime göre, -calculi için türlerin ikiliklerini anlamak için iyi ve operasyonel bir yol calculus'dan geçmektir.λπ
Türleri işlem hesabına çevirdiğinizde (ayrıştırdığınızda) dualite basitleşir: girdi çıktı için ikili ve tersi . Dualiteye daha fazla bir şey yoktur.
In Eğer giriş ve çıkış arasında bir basit (ve neredeyse simetrik) ikiliği var -calculus. Diyelim ki . Daha sonra , bir kanal olan tip söylüyor bir Boole değeri ve bir tam sayıyı taşıyan, tam olarak bir çıkış yapar. Kanal bu tür yaşayan bir işlem olur . yazabileceğimiz ikili tip,
bir girişin (bir boolean ve bir tam sayı olduğu bir çift olduğunu ifade eder . olarak yazıyoruzα = ( B O O l , I , n t ) ↑ α α x ¯ x ⟨ f bir L s e , 7 ⟩ ¯ α ( v , w ) hacim ağırlık ¯ a ( b O O l , ı , n t ) ↓ ¯ α x c ( v , w ) .0πα=(Bool,Int)↑ααxx¯¯¯⟨false,7⟩α¯¯¯(v,w)vwα¯¯¯(bool,int)↓ . Bir işlem yaşayan en olacaktır . α¯¯¯xc(v,w).0
Doğal olarak, süreçler sadece basit tam sayı veya boole değerlerini değil, aynı zamanda kanalları da iletir. Örneğin, , iki değerden bir giriş yapan bir kanal açıklar; burada , bir tamsayıdır ve , tam olarak bir çıktı (tamsayı) yapmak için kullanılır. Açıkçası ikili , iki veri parçası, bir tamsayı ve bir girdi yazmak için kullanılan bir kanal açıklayan tamsayı. ve in ikiliği, tutarlı bir şekilde paralel bir tür olan sürecini oluşturabileceğimiz anlamına gelirβ=(int,(int)↑)↓(v,w)vwβ¯¯¯=(int,(int)↓)↑αα¯¯¯Pα
bir kanal adı de bir işlem ile tipi vardır
aynı de (diğer ortak kanallar varsayarak ve aynı zamanda çift vardır). Aynı şekilde ve ikili .xQα¯¯¯xPQββ¯¯¯
Bu, üst düzey türlere kolayca genelleştirilebilir, örneğin
, öğesinin bulunduğu iki öğeyi giren bir türdür . tip ve tipi bir şey çıkış olarak verilmesi için kullanılan bir kanal . Bir kanalda bu tür sahip olan bir işlemin bir örneği, olduğu genel iletici
biraz basitleştirilmesi, bu temelde tip tek yaşar
. ( v , w ) v X w X x x ( v w ) . ¯ ağırlık v ∀ x . ( X , ( X ) ↑ ) ↓∀X.(X,(X)↑)↓(v,w)vXwXx
x(vw).w¯¯¯¯v
∀X.(X,(X)↑)↓
Evrensel nicelik işlem düzeyinde ne anlama gelir? Basit bir yorum var: eğer veriler bir tip değişkeni ile yazılırsa, bir çıkışın konusu olarak kullanılamaz, sadece bir nesne. Bu yüzden bu verileri inceleyemeyiz, sadece aktarabilir veya unutabiliriz.
Tip için ikili bir
. Varoluşsal niceliği nasıl yorumlayacağız? Oldukça basit: eğer veri varoluşsal olarak nicelenmiş bir tip değişkeni ile yazılırsa, sadece verileri denetlemeyen, ancak sadece geçiren (veya unut) işlemlere geçirilebilir. Başka bir deyişle, bunu yalnızca evrensel olarak nicelenen ikili tip değişkenini kullanan süreçlere aktarabiliriz. ∃ x . ( X , ( X ) ↓ ) ↑∀X.(X,(X)↑)↓∃X.(X,(X)↓)↑
Bunun teorisi [1, 2, 3] 'te bazı detaylarda ve çalışmalara erişilmesi daha zor olan ve 4'te kutupsal doğrusal mantık ve onun dualite nosyonu ile çok ilgili bir şekilde ele alınmıştır .
Şimdi birçoğunuz bunun -calculi ile nasıl ilişkili olduğunu soruyorsunuz. Cevap, -calculi'nin, R. Milner 5'in öncü çalışmalarını takiben, calculus'a kesin bir şekilde ayrılabileceği ve her
calculus tipinin calculus tipleriyle kesin bir
uyumu olduğu yönündedir. Proses tipi seviyesindeki dualite, fonksiyon tipi seviyesindeki dualiteye dönüşür. Sadece fonksiyon uygulaması simetrik bir işlemden daha azdır ve işlem seviyesindeki dualitenin basitliği -calculus'un komplikasyonlarında gizlidir.λ π λ π λλλπλπλ
1 N. Yoshida ve diğerleri , -Cculculus'ta Güçlü Normalizasyonπ .
2 K. Honda ve diğerleri, Genericity ve -Calculusπ .
3 K. Honda ve ark., -Calculus'ta Kontrolπ .
4 K. Honda ve ark., Tipik bir pi-matematik ve polarize prova ağları arasında tam bir yazışma .
5 R. Milner, Süreç Olarak Fonksiyonlar .