TCS'de katı kategoriler teorisi uygulamaları?


103

Birkaç kategori teorisi öğreniyorum. Bu kesinlikle şeylere bakmanın farklı bir yoludur. (Görmemişler için çok kaba bir özet: kategori teorisi, her türlü matematiksel davranışı yalnızca nesneler arasındaki fonksiyonel ilişkiler açısından ifade etmenin yollarını sunar. Örneğin, iki kümenin Kartezyen ürünü gibi şeyler tamamen tanımlanmıştır. setin hangi elemanları olduğu anlamında değil, diğer fonksiyonların onunla nasıl davrandığını.

Kategori teorisinin programlama dilleri / mantık ("B" Teorisi ") tarafında yararlı olduğunu ve bazı algoritmaların ve karmaşıklığın (" Teori A ") ne kadar fayda sağlayabileceğini merak ediyorum. Yine de, Teori B'deki kategori teorisinin bazı katı uygulamalarını bildiğim halde, (şimdiye kadar bulunan Teori A'da hiçbir uygulama olmadığını varsayacağım, ancak bunlardan bazılarına sahipseniz, bu bile, Benim için daha iyi!)

"Katı uygulama" derken, demek istediğim:

(1) Uygulama o kadar güçlü bir şekilde kategori teorisine dayanmaktadır ki makineleri kullanmadan elde etmek çok zordur.

(2) Uygulama, kategori teorisinin en az bir önemsiz olmayan teoremini çağırır (örneğin, Yoneda'nın leması).

Şunu da söyleyebilirim (1), (2) 'yi ima ediyor, ancak bunların "gerçek" uygulamalar olduğundan emin olmak istiyorum.

Bazı "Teori B" geçmişim olmasına rağmen, bir süre oldu, bu yüzden herhangi bir jargonizasyon çok takdir edilecektir.

(Ne tür cevaplar aldığıma bağlı olarak, bu soruyu daha sonra topluluk wiki'sine dönüştürebilirim. Ama gerçekten iyi açıklamalar ile iyi uygulamalar istiyorum, bu yüzden yanıtlayıcıları bir şeyle ödüllendirmemek utanç verici görünüyor.)

Yanıtlar:


79

Programlama dillerinde açık bir problemi çözmek için kategori teorisinin doğrudan "uygulandığı" bir örneği düşünebilirim: Thorsten Altenkirch, Peter Dybjer, Martin Hofmann ve Phil Scott, "Yazılı lambda matematiği için kopya ile normalizasyon" . Özetlerinden: "İkili toplamlar içeren basit yazılı lambda matematiği için karar problemini, ikili kopyalarla serbest kartezyen kapalı kategoriler için eşit kelime problemi ile eşdeğerde çözüyoruz. Metodumuz," değerlendirmeyle normalleştirme "olarak bilinen semantik tekniğe dayanıyor ve şunları içeriyor: Sözdiziminin yorumlanmasının uygun bir demet modeline ve bu da uygun benzersiz normal biçimlerin çıkarılmasına ters çevrilmesi. "

Genel olarak, yine de, kategori teorisinin programlama dillerinde derin teoremleri ispatlamak için uygulanmadığını düşünüyorum (bunun pek fazla olmadığı), bunun yerine, genellikle yararlı olan kavramsal bir çerçeve sunar (örneğin, yukarıda (öncesi) demet anlambilimi fikri.

Önemli bir tarihsel örnek Eugenio Moggi'nin, monad (kategori teorisinde temel ve her yerde bulunan) kavramının, programlama dillerinde (örneğin devlet, dinsizlikçilik) yan etkilerin anlamsal bir açıklamasının parçası olarak kullanılabileceği önerisidir. Bu aynı zamanda programlama dillerinin sözdizimine de yansımış, örneğin doğrudan Haskell'deki "Monad typeclass" a yönlendiriliyor (efektleri kapsüllemek için kullanılıyor).

Daha yakın bir zamanda (son on yılda), monadlar üzerindeki etkilerin bu açıklamaları, monadlar ve cebirsel teoriler arasındaki eski bağlantı (60'larda kategori teorisyenleri tarafından kurulan) açısından bakıldığında tekrar gözden geçirilmiştir: Martin Hyland ve John Power'in , "Evrensel Cebirin Kategori Teorik Anlayışı: Lawvere Teorileri ve Monadları" . Buradaki fikir, monadik etkilerin etkilerin (bazı şekillerde daha çekici) cebirsel görünümüyle uyumlu olduğu, buradaki etkilerin (örneğin, depolamanın) işlemler (örneğin, "arama" ve "güncelleme") açısından açıklanabileceği ile uyumlu olmasıdır. ve ilişkili denklemler (örneğin, güncellemenin aksaklığı). Paul-André Melliès'in bu bağlantısı üzerine yeni bir makale var, "Segal koşulu hesaplama etkilerini karşılıyor"aynı zamanda “yüksek kategori teorisi ” nden gelen fikirlere de büyük ölçüde dayanır (örneğin “ön-bölge anlambilgisini düzenlemenin bir yolu olarak“ Yoneda yapısı ”kavramı).

Bir başka, ilgili örnekler sınıfı doğrusal mantıktan gelir . 80'lerde Jean-Yves Girard tarafından tanıtıldıktan sonra (daha iyi bir yapıcı mantık anlayışıyla), kategori teorisine sağlam bağlantılar kuruldu. Bu bağlantının bazı açıklamaları için bkz. John Baez ve Mike Stay, "Fizik, Topoloji, Mantık ve Hesaplama: Bir Rosetta Taşı" .

Son olarak, bu cevap sigfpe'in aydınlatıcı blogu "Sonsuzluk Mahallesi" ne atıfta bulunmadan eksik olacaktır . Özellikle "Haskell'e uygulanan Bazı Kategori Teorisinin Kısmi Sırası" nı inceleyebilirsiniz .


3
Merhaba Noam, bu mükemmel cevaptan sonra, temsilcinizin link eklemek için yeterince yüksek olduğunu düşünüyorum!
Suresh Venkat

Bir acemiyle aynı problemle karşılaştım. Cevabımın oylanması için bekledim, sonra linkleri koydum. Aynı şeyi ...
Andrej Bauer

10
Teşekkürler! Köprü kısıtlaması için üzgünüm ... sisteme "yo, ben Noam Zeilberger, okunaklıyım" demenin bir yolu olsaydı
Ryan Williams

bağlantıları ekledi! Evet, tamamen mantıklı bir politika, bazen yoluna giriyor.
Noam Zeilberger

46

Kuantum Hesaplama

Çok ilginç bir alan, çeşitli monoidal kategorilerin kuantum hesaplamasına uygulanmasıdır. Bazıları bunun fizik olduğunu iddia edebilir, ancak çalışma bilgisayar bilimleri bölümlerindeki insanlar tarafından yapılır. Bu alandaki ilk çalışmalardan biri , Samson Abramsky ve Bob Coecke'nin kuantum protokollerinin kategorik bir semantiğidir ; Abramsky ve Coecke ve diğerleri tarafından yayınlanan birçok makale bu yönde çalışmaya devam etmektedir.

Bu çalışma çerçevesinde kuantum protokolleri (belirli türlerde) kompakt kapalı kategoriler olarak aksiyomlaştırılmıştır. Bu kategoriler dize (ve şerit) diyagramları açısından güzel bir grafik dile sahiptir. Kategorideki denklemler, kareli ancak düğümlü olmayan bir telin düzleştirilmesi gibi tellerin belirli hareketlerine tekabül eder, bu da kuantum mekaniğinde, kuantum ışınlama gibi anlamlı bir şeye karşılık gelir.

Kategorik yaklaşım, tipik olarak çok düşük seviye hesaplamaları içeren şey hakkında yüksek düzeyde, mantıklı bir görünüm sunar.

Sistem Teorisi

Coalgebra , sistemleri modellemek için genel bir çerçeve olarak kullanılmıştır (akışlar, otomatlar, geçiş sistemleri, olasılık sistemleri). Teorisi kategori teorisine dayanıyor, kömürgebra kavramına dayanıyor , burada geçiş sisteminin yapısını tanımlayan bir functor. Bu nedenle, sistemin türü altta yatan fonktör ile birlikte değişir, ancak bisimülasyon kavramı gibi teorinin çoğu tüm fonktörler için geçerlidir. Kategori teorisi ayrıca, kömürbüten olarak tanımlanan sistemler hakkında muhakeme için modüler modal mantık inşasını da sağlar .FF

Grafik Dönüşümleri

Grafik dönüşümleri kategori teorisi dilinde oldukça iyi ifade edilebilir. Bu, örneğin model dönüşümünde (UML modellerinde olduğu gibi) ve diğer görsel modelleme formalitelerinde uygulamayı buldu. Yaklaşım, grafikler ve grafik homomorfizmaları kategorisinde gerçekleşir. İlk olarak, bir dışarı ittirme bir tutkallama yapı olarak görülebilir: iki grafik Verilen . Bir grafik ve iki morfizmG1,G2Pe1:PG1e2:PG2G1G2G1G2P

(L,K,R)LRKl:KLr:KRLKRKdKDdlGdk

Programlama Dilleri (MathOverflow ile)

Programlama dilleri ve programlama dili teorisinin tasarımında birçok kategori teorisi uygulaması vardır. MathOverflow'ta geniş cevaplar bulunabilir. https://mathoverflow.net/questions/3721/programming-languages-based-on-category-theory ) https://mathoverflow.net/questions/4235/relating-category-theory-to-programming-language-theory .

Bigraphs - Süreç Hesabı

Son olarak, etkileşimde bulunan ajanların sistemlerini tanımlamak ve akıl yürütmek için genel bir çerçeve olan Milner bigraphs'ı vardır . İşlem cebirleri ile yapısal ve davranışsal teorileri hakkında muhakeme için genel bir çerçeve olarak görülebilir. Bu yaklaşım aynı zamanda itilişlere de dayanıyor.


35

Şimdiye kadar teorik olarak A teorisinde hiçbir uygulama olmadığını farz ediyorum, ancak bunlardan bazılarına sahipseniz, bu benim için daha da iyi!

  • Anladığım kadarıyla Joyal'in tür teorisi, numaralandırıcı kombinatoriklerde nispeten yaygın olarak kullanılıyor, ek olarak size kaç tane var olduğuna ek olarak bir şeylere nasıl izin vereceğinizi söyleyen üretici işlevlerin bir genellemesi.

  • Pippenger, normal dilleri ve yarı grup çeşitlerini ilişkilendirmek için Stone dualiteyi uyguladı. Jeandel, topolojik otomata girişlerini kuantum, olasılıklı ve sıradan otomatlar için birleştirilmiş hesaplar (ve kanıtlar!) Vermek için uygulamaktadır.

  • Roland Backhouse, tropik semiring ile Galois bağlantıları aracılığıyla açgözlü algoritmaların soyut karakteristiklerini verdi.

Çok daha spekülatif bir damarda, Noam demet modellerinden bahsetti. Bunlar, anlambilimde muhtemelen en güçlü tekniklerden biri olan mantıksal ilişkilerin sözdizimsel tekniğini soyut bir şekilde karakterize eder. Onları çoğunlukla ifade edilemezliği ve tutarlılık sonuçlarını ispatlamak için kullanıyoruz, ancak pratik olmayan doğal (Razborov / Rudich anlamında) prova tekniğinin güzel bir örneği olduğundan karmaşıklık teorisyenleri için ilginç olmalı. (Bununla birlikte, mantıksal ilişkiler genellikle göreceli olduklarını garanti etmek için çok dikkatli bir şekilde tasarlanmıştır - dil tasarımcıları olarak, programcıların işlev çağrılarının kara kutu olduklarını garanti altına almak istiyoruz!)

EDIT: Ryan'ın isteği üzerine spekülasyona devam edeceğim. Anladığım kadarıyla, doğal bir kanıt, çeşitli mantıklı koşullara tabi olarak bir devrenin yapısının endüktif bir değişmezini tanımlamaya çalışmanın satırları boyunca kabaca bir tanesidir. Benzer fikirler (şaşırtıcı olmayan şekilde) programlama dillerinde de oldukça yaygındır, örneğin bir lambda-calculus terimi (örneğin, tür güvenliğini kanıtlamak için) tarafından indüktif olarak korunan değişmezleri tanımlamaya çalıştığınızda. 1

ABABA

ABAB. Tek bir endüktif değişmez olmadığına dikkat edin - girdilerin yapısı üzerinde yinelemeyle bütün bir değişmez ailesi tanımlarız ve tüm terimlerin bu değişmezler içinde olduğunu göstermek için başka araçlar kullanırız. Teorik olarak kanıt, bu çok daha güçlü bir teknik ve tutarlılık sonuçlarını kanıtlamana izin veriyor.

Kasnaklarla bağlantı genellikle açık terimlerle (yani, serbest değişkenli terimler) gerekçeli olmak zorunda olmamızdan kaynaklanmaktadır ve bu nedenle hatalar nedeniyle sıkışıp kalmakla ve bir değişkeni azaltma ihtiyacı nedeniyle sıkışıp kalmakla arasındaki farkı ayırt etmek gerekir. Kılıflar, lambda hesabının indirgenmesini, terimleri nesneler (yani, indirgeme ile indüklenen kısmi sıra) olan bir kategorinin morfizmalarını tanımlayan olarak değerlendirmek ve daha sonra bu kategoriden functorları setler (yani, tahminler) olarak değerlendirmekten kaynaklanmaktadır. Jean Gallier, 2000'li yılların başında bu konuda bazı güzel yazılar yazdı, ancak çok miktarda lambda hesabını özümsemediğiniz sürece okunabilir olduklarından şüpheliyim.


1
Backhouse kağıdına bir referans verebilir misiniz? Başlığında "Galois bağlantısı" ndan bahseden çok sayıda kişi var, ancak hızlı bir arama hangisinin açgözlü algoritmalar ile ilgili olduğunu açıkça ortaya koymadı (ve ayrıntıları ve şekilleri gözden geçirecek alana aşina olduğumu sanmıyorum. Açgözlü algoritmalar hakkında hangisinin "gerçekten" olduğunu kolayca öğrenin. Teşekkürler!
Joshua Grochow,

1
Joshua'nın sorusu ile birlikte, maket modellerinin ve mantıksal ilişkilerin doğal kanıtlarla olan ilişkisi ile de ilgileniyorum.
Ryan Williams

Ynt: Taş dualitesi, daha heyecan verici yeni çalışmalar için Mai Gehrke'nin "Bir cebir üzerinde taş dualitesi ve tanınabilir dilleri" ( math.ru.nl/~mgehrke/Ge09.pdf ) ve Gehrke, Grigorieff ve Pin'in "Tanıma için topolojik bir yaklaşım" a bakınız. "( math.ru.nl/~mgehrke/GGP10.pdf )
Noam Zeilberger

Re: Gallier, 90'ların sonlarını demek istiyorsun ( sciencedirect.com/science/article/pii/0304397594002800 ? De olduğu gibi )
Blaisorblade

24

Akla gelen ilk örnek, programlama dillerinin özelliklerini kanıtlamak için Alex Simpson’ın kategori teorisini kullanmasıdır. Örneğin, " Sezgisel Küme Teorisi Modellerinde Özyinelemeli Türler İçin Özyinelemeli Türler için Hesaplamalı Yeterlilik ", bakınız Saf ve Uygulamalı Mantık , 130: 207-275, 2004. Başlık set teoride bahsedilse de teknik teoriktir. Daha fazla örnek için Alex'in ana sayfasına bakın.


Referanslar için teşekkürler, ancak lütfen şunu sormadığımı unutmayın: "Kategori teorisi kullanılarak başka türlü elde edilemeyen sonuçlar ne oldu?"
Ryan Williams

Doğru, yapmadın. Cevabımı düzenledim.
Andrej Bauer

11

Uygulanabilirlik hakkında iki soru sorduğunuzu düşünüyorum; A ve B tipi ayrı ayrı.

Sizin de belirttiğiniz gibi, B tipi konularına kategori teorisinin birçok uygulaması vardır: programlama dillerinin anlambilimi (monadlar, kartezyen kapalı kategorileri), mantık ve provensite (topoi, lineer mantık çeşitleri).

Bununla birlikte, A teorisine (algoritmalar veya karmaşıklık) çok az miktarda önemli uygulama olduğu görülmektedir.

Temel nesnelerde, otomatların kategorilerini veya birleşik nesnelerin (grafikler, diziler, permütasyonlar, vb.) Tanımlanması gibi bazı kullanımları vardır. Ancak bunlar, dil teorisi veya algoritmalarının daha derinden anlaşıldığını açıklıyor gibi görünmüyor.

Spekülatif olarak, kategori teorisi ile teori A konularının mevcut stratejileri arasında bir uyumsuzluk olabilir:

  • Kategori teorisinin ana stratejisi eşitlikle uğraşmaktır (işler aynı olduğunda ve farklı olduklarında ve birbirleriyle nasıl eşleştikleri).

  • Karmaşıklık teorisi için birincil strateji azaltma ve sınırlamadır (bir azalmanın bir ok gibi olduğunu düşünürdüm, ama bu yüzeysel benzerliğin ötesinde bir şey düşünmedim).

  • Algoritmalar için, akıllıca birleşik birleştirme düşüncesinden başka genel bir strateji yoktur. Bazı alanlar için, verimli bir keşif (cebir için algoritmalar?) Olabileceğini beklerdim ama henüz görmedim.


2
indirgemelerin Goedel'in Dialectica yorumlamasının kategorik rekonstrüksiyonları ve lineer mantık semantiği ile ilgili olduğu ortaya çıktı. Andreas Blass'ın "Sorular ve Cevaplar - Doğrusal Mantıkta Oluşan Bir Kategori, Karmaşıklık Teorisi ve Küme Teorisi" konusuna bakın. math.lsa.umich.edu/~ablass/qa.pdf
Neel Krishnaswami

3

Aklıma gelen "TCS-A" uygulamaları, Joyal'in kombinatoryal türleri (ağaçlar, kümeler, multisets vb. Gibi birleşik nesneleri tanımlamak için güç serilerinin functorlara genelleştirilmesi) ve ilişkisel kullanarak kriptografik "oyun atlamalı" biçiminin oluşturulması, olasılıksal Hoare mantığı (Easycrypt, Certicrypt, Andreas Lochbihler'in çalışması). Kategoriler doğrudan ikincide görünmese de, temel mantıkların geliştirilmesinde (örneğin monad'ler) etkili oldular.

Not: Benim ilk cevabımdaki adıma değinildiği için: Martin Streicher ve Martin-Löf'ün tip teorisinde belirli bir aksiyomun tanımlanamadığını göstermek için groupoid liflerinin kullanılması, kategori teorisinin "katı" kullanımı olarak da kabul edilebilir. mantık veya "TCS-B").


3

Kompozitivitede yedi skeç adlı daha yeni kitapta bilgisayar teorisi ve mühendisliğinde kategori teorisinin birçok uygulaması listelenmektedir. Yazarların kategorik bir modele dayalı sorgulama, birleştirme, taşıma ve gelişen veritabanlarını tanımladığı veritabanları hakkındaki bölüm dikkat çekicidir. Yazarlar bunu daha da ileri götürüp kategorik veri tabanları modeline dayanan Kategorik Sorgu Dili (CQL) ve entegre bir geliştirme ortamı (IDE) geliştirdi.

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.