Bir soyutlama hiyerarşisinin resmi gösterimi


9

Giriş

Doktora tezimi , ürünlere ('yazılım ürünleri' nde olduğu gibi ) göre hareket edebilen değişikliklerin ( delta olarak bilinir ) soyut bir cebirsel açıklaması olan Soyut Delta Modelleme (ADM) üzerine yazıyorum . Bu, bir dizi ilgili ürünü (bir 'ürün hattı') basit bir çekirdek ürün ve bir dizi koşullu olarak uygulanan deltalar olarak düzenlemek ve böylece altta yatan eserlerin daha fazla yeniden kullanılmasını sağlamak için kullanılabilir.

Delta modellemenin ayrıntıları sorum için gerçekten önemli değil , ancak ADM sorunu açıklamak için iyi bir örnek teşkil ediyor, bu yüzden en önemli kavramları tanıtacağım.

Arka fon

İlginin ana yapısı deltoiddir (P,D,,ϵ,[[]]). Ürünler evrensel bir setten geliyorP. Deltalar bir monoidden gelir(D,,ϵ) kompozisyon operatörü ile :D×DD ve nötr eleman ϵD. Anlamsal değerlendirme operatörü[[]]:D2P×P 'sözdizimsel' bir deltayı dönüştürür dD bir ilişkiye girmek [[d]]P×P hangisinin nasıl olduğuna karar verir d bir ürünü değiştirebilir.

Soru

ADM soyut bir cebir olduğundan, çalışmalarımın çoğu ürünlerin ve deltaların somut doğasından soyutlanıyor ve daha somut bir seviyeye inmeden bir takım sonuçlar kanıtlanıyor. Bu sonuçların daha somut bir alana taşınması bekleniyor, ancak bunu henüz resmileştirmedim.

Somut bir alanda çalışan örnekler ve vaka çalışmaları vardır: nesneye yönelik kaynak kodu, LATEXkod, doğal sayılar, cep telefonu profilleri vb. İç içe geçmiş anahtar / değer çiftleri gibi soyutlamanın bazı ara aşamaları da vardır. Her biri için yeniden tanımlıyorum (veya 'rafine ediyorum')(P,D,,ϵ,[[]]).

Bu hiyerarşiyi açıklığa kavuşturmak istiyorum: (1) okuyucuya daha fazla açıklık sağlamak ve (2) daha soyut seviyelerin sonuçlarını kullanarak resmi olarak haklı göstermek.

Sorum: Bu soyutlama seviyelerini resmi olarak nasıl organize etmeliyim?

Basit bir arıtma ilişkisi ile akıl yürütmeyi umuyorum deltoidlerde. Ve sadece alt küme ilişkisine hitap ederek tanımlanabileceğini hissediyorumP ve D. Ama henüz emin değilim. Tanımladığım problem türüne yönelik mevcut yaklaşımlar var mı? Yayınlamam gerekir mi?

Deltoid Hiyerarşisi

Ne demek istediğimle ilgili daha iyi bir fikir vermek için aklımdaki deltoid soyutlama hiyerarşisi:

  • Özet Deltoid : Bu, ürünlerin ve deltaların hala herhangi bir şey olabileceği temel deltoiddir. Teorinin çoğu buna dayanmaktadır ve çoğu sonuç bu düzeyde kanıtlanmıştır.
    • İlişkisel Deltoid : Burada deltalar,P ve [[]] kimlik işlevidir.
      • Fonksiyonel Deltoid : Burada deltalar işlevseldir (veya 'deterministik').
    • Doğal Sayı Deltoid : Bu sadece deltoid arıtmasını göstermek için oluşturulan en basit beton deltoididir. İşte, ürünlerP=N doğal sayılar ve deltalar D=N+ polinom operasyonlarını temsil eden basit sayı dizileridir.
    • Yuvalanmış Anahtar / Değer Çifti Deltoid : Anahtarların değerlere veya alt hiyerarşilere eşlendiği herhangi bir hiyerarşi için orta düzeyde bir soyutlama düzeyi. Deltalar bu 'ağaçta herhangi bir derinlikte değişiklik yapabilir.
      • OOP Deltoid : Nesneye yönelik programların soyut gösterimleri için. Temelde yuvalanmış anahtar / değer çiftleri vardır, çünkü programlar modül-adlarını sınıf kümelerine eşler, sınıf-adlarını yöntem kümelerine eşler, yöntem-adlarını yöntem-uygulamalarıyla eşleştirir.
        • ABS Deltoid : ABS gerçek bir nesne yönelimli programlama dilidir.
      • Telefon Profili Deltoid : Burada bir ürün, ayarların (ses seviyesi, ekran parlaklığı, vb.) Karşılık gelen bir alan adından gelen değerlerle düz bir eşleşmesidir.
    • LATEXDeltoid : ÜrünlerLATEX belgeler ve deltalar makroları yeniden tanımlayarak değiştirir.

Bu, aklımda ne olduğuyla ilgili size adil bir fikir vermeli. Bu arada, herhangi bir deltoid için,[[]] bir monoid homomorfizmasıdır D -e D ilgili ilişkisel deltoide aittir.

Gerçek hiyerarşi daha büyük olabilir. Ne tür bir arıtma teorisini kullanacağım temelinde farklı bir şekilde organize edilebilir. Örneğin, basit bir alt küme ilişkisi içinP ve DABS Deltoid, ürünleri ve deltaları aslında düz metin (kaynak kodu) olduğu için Yuvalanmış Anahtar / Değer Çifti Deltoid'in altına sığmaz. Fakat homomorfizmalar kullanırsam verilen hiyerarşi hala işe yarayabilir.


3
Soyutlama hiyerarşisinin ne olduğunu daha açık hale getirebilir misiniz? Başka şeylerin soyutlamaları nelerdir?
Dave Clarke

Merhaba Dave! Sorumu güncelledim. Umarım bu biraz şeyleri açıklığa kavuşturur.
mhelvens

4
Her bir deltoid türü için kategoriler oluşturmaya ve sonra aralarındaki sol ve sağ bitişik işlevleri (varsa) incelemeye ne dersiniz?
Martin Berger

Korkarım kategori teorisinde bilgili değilim. :-(
mhelvens

Yanıtlar:


8

Kafes tabanlı program analizinin biraz farklı alanlarındaki benzer sorulara çok kapsamlı cevaplar veren soyut yorumlama teorisine bakmanızın yararlı olacağına inanıyorum.

Bana öyle geliyor ki cebir temelli bir çerçeve kullanıyorsunuz. Burada cebir kelimesini evrensel cebir anlamında kullanıyorum, burada cebirin yapısı üzerindeki kısıtlamaların terimler arasındaki eşitlikler tarafından verildiğini varsayıyorum. Soyutlamaların (veya hiyerarşilerin) resme girdiği iki farklı duyu vardır.

  1. İki özel cebir arasındaki ilişki olarak soyutlama.Bir cebirin bir başka cebire göre daha zengin bir yapıya sahip olduğunu ya da bir cebirle çözebileceğiniz her sorunun diğeri ile çözebileceğini söylemek isteyebilirsiniz. Bu tür bir ilişki, homomorfizmi satın almak veya cebirler arasında başka bir harita almak için resmileştirilecek olan ilişkidir.
  2. Cebir familyaları olarak soyutlama hiyerarşileri. Sizin durumunuzda, bunlar belirli özelliklere sahip deltoid aileleri olacaktır. Daha genel bir örnek olarak, kısmen sıralı tüm setleri düşünün. Kafesleri, dağıtıcı kafesleri ve Boole kafeslerini daha zengin özelliklere sahip bir dizi alt aile olarak düşünebiliriz.

İki kavram birbiriyle yakından ilişkilidir ancak farklıdır.

İki yapı arasındaki soyutlama

Soyut yorumlama anlayışı, düşündüğünüz yapıları bir düzen anlayışıyla donatmanın faydalı olduğudur. İki yapıyı düşünün

(M,fM) ve (N,fN), ile fM:MM ve fN:NN ilgi operasyonları olarak.

Evrensel cebir anlamında bir homomorfizm şöyle görünecektir:

h:MN eşitliği tatmin eden bir işlevdir h(fM(a))=fN(h(a)).

Yukarıda görünen iki yapıyı ön siparişli yapılar olarak görebiliriz

(M,=,fM) ve (N,=,fN)

ve tatmin edici bir fonksiyon olarak yeniden yazabileceğimiz homomorfizm

  1. Eğer a=b sonra h(a)=h(b), ve
  2. hepsi için a içinde M, h(fM(a))=fN(h(a)).

Şimdi, mantıklı olan başka bir yaklaşım fikriniz olduğunu varsayalım. Örneğin, program doğrulamasındaki durum kümeleriyle uğraştığımızda, alt kümeye dahil olma belirli bir uygulama için mantıklıdır veya otomatik kesinti formülleriyle uğraşırken, ima mantıklıdır. Daha genel olarak,

(M,,fM) ve (N,,fN), nerede ve ön siparişlerdir.

Şimdi, homomorfizm yerine bir soyutlama fonksiyonuna sahip olabiliriz

α:MN hangisi

  1. monoton, yani her zaman ab sahibiz α(a)α(b), ve
  2. operasyonlarla yarı işe gidip gelir: α(fM(a))fN(α(a)) hepsi için a içinde M.

Soyutlama işlevi, eğer yapının N yapının bir soyutlamasıdır M, ardından bir terimi N daha kesin sonuçlar veremez (yaklaşık olarak N) aynı terimi M ve daha sonra N.

Şimdi soruna, arıtmanın aksine soyutlama açısından yaklaşmanın gerekli olup olmadığını sorabiliriz. Anlamı, söyleyemeyizM bir ayrıntılandırmadır Nve şartları terim olarak formüle eder. Bu, bir somutlaştırma fonksiyonunun yaptığı şeydir .

Bir somutlaştırma işlevi γ:NMolan monoton ve tatmin eşitsizlikfM(γ(b))γ(fN(b)).

Soyut yorumlamada soyutlama ve somutlaştırma koşullarına sağlamlık koşulları denir. Özel durumdaα ve γbir Galois bağlantısı oluştururken, soyutlama ve somutlaştırma koşulları eşdeğerdir. Genel olarak, eşdeğer değildir.

Şimdiye kadar yaptığımız her şey sadece bir çift yapı arasındaki soyutlama kavramını resmileştiriyor. Söylediklerim, kategori teorisi dilinde çok daha özlü bir şekilde özetlenebilir. Yukarıdaki yorumunuz nedeniyle kategorilerden kaçındım.

Soyutlama Hiyerarşileri

Bir yapımız olduğunu varsayalım Mbir ön sipariş ve bazı operasyonlarla donatılmıştı. Tüm yapıları düşünebilirizN öyle ki N bir soyutlamadır Myukarıdaki anlamda. Eğer buna sahipsekN1 bir soyutlamadır N2 ve her ikisi de M, hiyerarşinin üç unsuru var. `` Bir soyutlamadır '' ilişkisi , yapılar arasında bir ön sipariş tanımlamamıza izin verir. Soyutlamanın emrettiği bir yapı ailesine hiyerarşi diyelim .

Örneğinizi düşünürsem, soyut deltoidinizin bazı hiyerarşideki maksimum öğe için bir aday olabileceği anlaşılıyor. Tamamen emin değilim çünkü soyut deltoid, belirli bir deltoid yerine bir deltoid ailesi gibi görünüyor.

Şimdi yapabileceğiniz farklı hiyerarşileri düşünmektir. Tüm deltoidlerin hiyerarşisi. Yukarıdaki çeşitli hususlara dayanan bir alt hiyerarşi. Soyut yorum bağlamındaki spesifik bir örnek, belirli bir güç kümesi kafesi ile Galois bağlantısında olan tam kafes hiyerarşisi ve sadece dağıtıcı veya sadece Boole kafeslerinden oluşan alt hiyerarşilerdir.

Martin Berger'in yorumlarda belirttiği gibi, hiyerarşiler arasındaki bu soyutlama kavramı, kategoriler arasındaki sıfatlar tarafından yakalanmaktadır.

Kategorik Bir Bakış

Kategoriler hakkında daha fazla yorum yapılmasını isteyen bir yorum vardı. Bu yorum artık yok ama ben yine de cevap vereceğim.

Geri dönelim ve deltoidlerin tasarımında ne yaptığınıza ve yukarıda daha genel bir bakış açısıyla anlattığım konulara bakalım. Bir yazılım bağlamında manipüle ettiğimiz varlıkların temel yapısını ve bu varlıklar arasındaki ilişkiyi anlamak istiyoruz.

İlk önemli farkındalık, sadece bir dizi unsurla değil, bu unsurlar ve bu operasyonların özellikleri üzerinde gerçekleştirebileceğimiz operasyonlarla da ilgilenmemizdir. Bu sezgi nesne yönelimli programlamada sınıfların tasarımını ve cebirsel yapıların tanımını yönlendirir. Bu sezgiyi, birkaç ilgilenilen işlemi tanımlayan bir deltoid tanımında zaten açık hale getirdiniz. Daha genel olarak, bu cebirsel tanımların altında yatan düşünce sürecidir. Operasyonlarımızın ne olduğunu ve hangi özelliklere sahip olduklarını tanımlamamız gerekiyor. Bu adım bize birlikte çalıştığımız tür yapısını anlatır.

İkinci farkındalık, sadece bir dizi unsurla değil, soyutlama ilişkisiyle de ilgilenmemizdir. Soyutlamayı hayal edebileceğim en basit resmileştirme, önceden sipariş edilmiş bir seti düşünmektir. Önceden sıralanmış bir seti, bir setin, pişmiş bir yaklaşım kavramıyla gelen bir şeye sıkı bir genellemesi olarak düşünebiliriz.

İdeal olarak, yukarıdaki her iki bilginin de birinci sınıf vatandaş olduğu bir ortamda çalışmak istiyoruz. Yani, bir cebir gibi yazılan bir ayar, ama aynı zamanda bir ön siparişin yaklaşık farkındalık ayarı istiyoruz. Bu yönde atılan ilk adım bir kafes düşünmektir. Bir kafes kavramsal olarak ilginç bir yapıdır, çünkü onu iki eşdeğer şekilde tanımlayabiliriz.

  1. Bir kafesi eşit olarak küme olarak tanımlayabiliriz (L,,)bir buluşma ve birleştirme işlemi ile donatılmıştır. Daha sonra kısmi düzeni tanımlayarak türetebiliriz .ab her zaman tutmak ab=a.
  2. Alternatif olarak, bir kafesi kısmen sıralı küme olarak tanımlamak (L,) her elementin Lbenzersiz bir en büyük alt sınır ve en az üst sınır vardır. Daha sonra buluşma ve birleştirme işlemlerini kısmi sıradan türetebiliriz .

Bu nedenle bir kafes cebirsel veya yaklaşık perspektiften yaklaşılabilen matematiksel bir yapıdır. Buradaki eksiklik, bir kafesin elemanlarının kendilerinin yaklaşık ilişki içine çarpan bir tip yapıya sahip olmamalarıdır. Yani, az ya da çok yapıya sahip olma fikrine dayalı unsurları karşılaştıramayız.

Sorununuz bağlamında, kategorileri cebirsel bir ortamda hem yaklaĢım (morfizmlerde) hem de tip yapıyı yakalayan ön siparişlerin doğal bir genellemesi olarak düşünebilirsiniz. Kategori teorisinin oluşturulması, çeşitli gereksiz ayrımlardan vazgeçmemize ve önem verdiğiniz varlıkların yapısına ve bu yapının yakınlaştırılmasına odaklanmamızı sağlar. Evrensel özellikler ve sıfatlar, ilgilendiğiniz yapıların manzarasını anlamak için çok güçlü bir kelime haznesi ve araçlar sağlar ve farklı soyutlama seviyeleri gibi sezgisel kavramların bile matematiksel olarak titizlikle ele alınmasını sağlar.

Soyut deltoidler hakkındaki yorumumla ilgili olarak, istediğiniz bir kategori. Soyut deltoid, kümeler kategorisine benzer belirli bir kategoridir. Düşündüğünüz başka kategoriler de var. Başlangıçta kategori teorisi anlamında bir terminal (veya son) nesne olacağını deltoid olarak tanımladığınızı sanıyordum.

Kategori teorisinin çok tatmin edici cevaplar verdiği soruları inceliyorsunuz. Umarım bu sonuca kendiniz gelebilirsiniz.

Referanslar

  1. Soyut yorumlama ve mantık programlarına uygulama , Patrick Cousot ve Radhia Cousot. Bu makalenin ilk yarısı, soyut yorumlama konusuna genel bir öğretici stil girişidir.
  2. Soyut yorum çerçeveleri , Patrick Cousot ve Radhia Cousot. Bu makalede, soyutlama ve somutlaştırma işlevleri ile ilgili yukarıda çizdiğim tüm olasılıklar ayrıntılı olarak tartışılmaktadır.
  3. Program Analiz Çerçevelerinin Sistematik Tasarımı , Patrick Cousot ve Radhia Cousot. Bu, program analizi bağlamında soyutlama hiyerarşileri kavramını ortaya koyan makaleydi.
  4. Soyut Yorum , Francesco Ranzato ve Francesco Tapparo tarafından Genelleştirilmiş Güçlü Koruma . Bu makale bu fikirleri zamansal mantık formüllerini koruyan farklı bir soyutlama bağlamında uygulamaktadır. Burada Boole ve dağıtıcı soyutlamaların örneklerini bulacaksınız.
  5. Soyut Yorum, Mantıksal İlişkiler ve Kan Uzantıları , Samson Abramsky. Yukarıdaki sıra teorik malzeme hakkında bir kategori teorisi perspektifi sunar.

Tam cevabınız için teşekkürler! Ve kategorilerin eksikliği çok takdir ediliyor. ;-) (Gelecekte bazı ara kategori teorilerini incelemeliyim.) Referanslarınıza bir göz atacağım. - = # = - Bu arada, "soyut deltoid belirli bir deltoid yerine deltoid ailesi gibi görünüyor" ifadenizle ilgili bir sorum var. Soyut deltoidin bu açıdan diğerlerinden nasıl farklı olduğunu açıklayabilir misiniz? Herhangi bir cebirsel yapı tüm iyileştirmelerinin ailesi olarak görülemez mi?
mhelvens

@VijayD CT'deki güncelleme için teşekkürler. Ben yorum yapmaktan suçluyum ve sonra sildim. CT'nin OP'nin sorunu için daha uygun olduğuna derinden inanıyorum. Güncellemenizi gördükten sonra daha da ikna oldum. Bence OP bunu BT kullanarak yapmak istemiyorsa, başkası yapacak.
scaaahu

Kategori teorisinin sorularıma en iyi yanıtları vermesi çok muhtemel görünüyor. Ve bunu incelemek ve bu cevapları daha iyi anlamak için sabırsızlanıyorum. Gerçekten de, kategori teorisini incelemek ve uygulamak için zaman eksikliğim, bu web sitesinde 'aşağı' bir cevap vermek için bir bahane olmamalıdır. - = # = - Bununla birlikte, Vijay'ın düşüncesini çok takdir ediyorum. Monoid düzeydeki cevabı oldukça faydalıydı. - = # = - Şu anda kategorileri kullanamıyorum. Ama kesinlikle gelecekteki çalışmalarda seçeneği keşfedeceğim. Hepinize teşekkürler!
mhelvens

Konuyu almak için mükemmel bir konumdasınız çünkü iyi anladığınız ve kategorik perspektiften doğrudan analiz edebileceğiniz bir sorununuz var. Bunu bir şeyi öğrenmenin en iyi yolu olarak görüyorum ve sizi geciktirmemeye teşvik ediyorum çünkü kategori teorisindeki metinler korkutucu görünüyor. Eminim, üzerinde çalışılacak ısırık kısımlar vardır. Savunma için iyi şanslar.
Vijay D

9

Doktora programınız üzerinde çalışıyorsunuz. "Ben çok bilgili değilimX"bir bahane değil. Ve eğer iyiyseniz, o zaman" danışmanım bilmiyor X"bir mazeret de değil.

Kategoriler kullanmanız gereken yerlerde monoidler kullanıyorsunuz. Monoid operasyonlarınız, herhangi birδbirlikte. Peki bu gerçekten mantıklı mı, örneğin, "plastik kasa ekle" ve "metal kasa ekle" şeklini nasıl oluşturabilirsiniz? Sanırım bazılarınızδboş ilişkilerle sonuçlanır çünkü hiçbir anlam ifade etmezler. Bu tür şeylerden şüphelenmelisin.

İlgilenen bir gözlemci olarak, monoid'in bir kategori olması gerektiği anlaşılıyor, böylece iki δsadece onların bestelenmesi mantıklıysa. O zaman anlambilimsel değerlendirmeniz kümeler ve ilişkiler kategorisine bir fonksiyondur. Ve sonra kullanabileceğiniz başka kategoriler olduğunu görüyorsunuz. Fonksiyonel deltalar, setler ve fonksiyonlar kategorisine eşlenen bir functor'a karşılık gelir, doğal deltoid sayıları, doğal sayılardaki polenomların (bir kategori olarak görülür) vb.

Genel teoride LaTeX ve Nokia cep telefonlarını çok ciddiye almak istediğinizden emin değilim. Ancak elbette teoriniz bu tür örneklere uygulanabilir olmalıdır (sadece cep telefonlarının iyi tanımlanmış bir semantiğe sahip olmadığını keşfettiğinizde takılmayın).

Sen edilir gerçekten önceden belirlenmiş teknoloji ısrar kendinizi shortchanging (sizin danışman tarafından?), Bunu görünüyor.


2
Genel olarak sana katılıyorum. Ve hiçbir zaman bahane olarak kullanmadım. :-) Ama bu durumda, tezimin çoğu zaten yazılmıştır ve monoid tüm yayınlarımda kullanılmıştır. - = # = - Bununla birlikte, mükemmel bir noktaya değindin. Plastik / metal kasa örneğinde, şimdi bileşime izin vererek idare ediyorum, ancak ortaya çıkan deltanın boş ilişkiyi değerlendirmesini (tahmin ettiğiniz gibi) istiyorum. Her şey iyi tanımlanmış, bu yüzden şimdilik yeterli. Ama önerinizin daha zarif olduğunu görebiliyorum. Bana kategori teorisini incelemem için iyi bir neden daha verdin. Teşekkürler!
mhelvens

@mhelvens Uzun süredir endüstride yaşayan emekli bir yazılım mühendisiyim. Geldi arkasını emekli olduktan sonra TCS için. Size gerçek bir soru soracağım. Tezinizde monoid kullanarak Nokia telefon ürünlerini başarılı bir şekilde resmileştirdiğinizi varsayalım, Apple Nokia'yı aldığını duyurursa sözlü savunmada ne söyleyeceksiniz? Bu duyuru modelinizi kıracak mı? Bana öyle geliyor ki teori ne kadar genelse, o kadar iyi bir model olurdu.
scaaahu

@scaaahu İlginç bir soru. :-) Cevap vererek başlayayım: "Hayır, hiç değil." Teori cihazın 'tipinden' bağımsızdır. - = # = - Eminim ki beni genellemenin yararlarına ikna etmeye gerek yok. (Aslında, bazen aşırıya kaçtığımı düşünüyorum.) Öyle olur ki, doktora çalışmalarım için yararlı olması için kategori teorisine zamanında rastlamadım. Dediğim gibi, bunun değerli bir yaklaşım olabileceğini kabul ediyorum. Ancak tezimin bitiminden iki ay sonra yaklaşımımı kökten değiştirmenin zamanı değil.
mhelvens

Açıkçası, doktora sonrası için hazırsınız ;-)
Andrej Bauer

Hibe başvurusu zaten gönderildi. :-) Umarım bu alanda devam edebilirim.
mhelvens
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.