Representasi formal dari hierarki abstraksi

9

pengantar

Saya sedang menulis tesis PhD saya tentang Abstrak Delta Modeling (ADM), deskripsi aljabar abstrak modifikasi (dikenal sebagai delta ) yang dapat bertindak atas produk (seperti dalam 'produk perangkat lunak'). Ini dapat digunakan untuk mengatur satu set produk terkait ('lini produk') sebagai produk inti sederhana dan satu set delta yang diterapkan secara kondisional, dan dengan demikian memungkinkan penggunaan kembali yang lebih besar dari artefak yang mendasarinya.

Detail pemodelan delta tidak terlalu penting untuk pertanyaan saya, tetapi ADM berfungsi sebagai contoh yang baik untuk menjelaskan masalah ini, jadi saya akan memperkenalkan konsep yang paling penting.

Latar Belakang

Struktur utama yang menarik adalah deltoid (P,D,,ϵ,[[]]). Produk berasal dari rangkaian universalP. Delta berasal dari monoid(D,,ϵ) dengan operator komposisi :D×DD dan elemen netral ϵD. Operator evaluasi semantik[[]]:D2P×P mengubah delta 'sintaksis' dD menjadi suatu hubungan [[d]]P×P yang memutuskan bagaimana d dapat memodifikasi suatu produk.

Pertanyaan

Karena ADM adalah aljabar abstrak, sebagian besar pekerjaan saya abstrak dari sifat konkret produk dan delta, dan sejumlah hasil terbukti tanpa turun ke tingkat yang lebih konkret. Hasil-hasil itu diharapkan untuk dibawa ke domain yang lebih konkret, tetapi saya belum memformalkan ini.

Ada contoh dan studi kasus yang bekerja di domain konkret: kode-objek berorientasi, LATEXkode, angka alami, profil ponsel, dll. Ada juga beberapa tahap abstraksi menengah seperti pasangan nilai kunci bersarang. Untuk setiap saya mendefinisikan ulang (atau 'memperbaiki')(P,D,,ϵ,[[]]).

Saya ingin membuat hierarki ini eksplisit: (1) untuk memberikan kejelasan yang lebih besar bagi pembaca dan (2) untuk secara formal membenarkan menggunakan hasil dari tingkat yang lebih abstrak.

Pertanyaan saya: Bagaimana saya seharusnya mengatur level abstraksi ini secara formal?

Saya berharap dapat bernalar dengan hubungan perbaikan sederhana pada deltoids. Dan saya merasa seperti itu dapat didefinisikan hanya dengan menarik hubungan subset aktifP dan D. Tapi saya belum yakin. Apakah ada pendekatan yang ada untuk jenis masalah yang saya uraikan? Publikasi yang harus saya baca?

Hirarki Deltoid

Untuk memberi Anda gagasan yang lebih baik tentang apa yang saya maksud, inilah hierarki abstraksi deltoid yang saya pikirkan:

  • Abstrak Deltoid : Ini adalah deltoid dasar di mana produk dan delta masih bisa apa saja. Sebagian besar teori didasarkan pada yang satu ini dan sebagian besar hasil dibuktikan pada tingkat ini.
    • Deltoid Relasional : Di sini, delta adalah hubunganP dan [[]] adalah fungsi identitas.
      • Deltoid Fungsional : Di sini, delta bersifat fungsional (atau 'deterministik').
    • Natural Number Deltoid : Ini adalah deltoid beton paling sederhana, dibuat hanya untuk menggambarkan perbaikan deltoid. Di sini, produkP=N adalah bilangan dan delta alami D=N+ adalah urutan nomor sederhana yang mewakili operasi polinom.
    • Deltoid Pair Pasangan Nilai-Kunci : Tingkat abstraksi menengah untuk hierarki apa pun di mana kunci dipetakan ke nilai atau ke sub hierarki. Delta dapat melakukan modifikasi dalam 'pohon' ini di kedalaman apa pun.
      • OOP Deltoid : Untuk representasi abstrak dari program berorientasi objek. Mereka pada dasarnya pasangan kunci-nilai bersarang, karena program memetakan nama-nama modul ke sekumpulan kelas, yang memetakan nama-nama kelas ke sekumpulan metode, yang memetakan nama-metode untuk implementasi-metode.
        • ABS Deltoid : ABS adalah bahasa pemrograman berorientasi objek nyata.
      • Profil Telepon Deltoid : Di sini, suatu produk adalah pemetaan datar pengaturan (seperti volume, kecerahan layar, dll.) Ke nilai dari domain yang sesuai.
    • LATEXDeltoid : Produk adalahLATEX dokumen dan delta memodifikasinya dengan mendefinisikan kembali makro.

Nah, itu seharusnya memberi Anda ide yang adil tentang apa yang ada dalam pikiran saya. Perhatikan, omong-omong, bahwa untuk setiap deltoid,[[]] adalah homomorfisme monoid dari D ke D milik deltoid relasional yang sesuai.

Hirarki yang sebenarnya mungkin lebih besar. Mungkin juga diatur secara berbeda, berdasarkan pada teori penyempurnaan seperti apa yang akan saya gunakan. Misalnya, jika saya menggunakan subset-relasi sederhanaP dan DABS Deltoid tidak akan cocok dengan Deltoid Pair Nested Key-Value Pair, karena produk dan delanya sebenarnya teks biasa (kode sumber). Tetapi hierarki seperti yang diberikan mungkin masih berfungsi jika saya menggunakan homomorfisme.

mhelvens
sumber
3
Bisakah Anda membuatnya lebih eksplisit apa hirarki abstraksi itu? Hal-hal apa yang merupakan abstraksi dari hal-hal lain apa?
Dave Clarke
Hai Dave! Saya memperbarui pertanyaan saya. Saya harap ini sedikit menjelaskan hal-hal.
mhelvens
4
Bagaimana membangun kategori untuk setiap jenis deltoid, dan kemudian mempelajari fungsi adjoin kiri dan kanan (jika ada) di antara mereka?
Martin Berger
Saya khawatir saya tidak berpengalaman dalam teori kategori. :-(
mhelvens

Jawaban:

8

Saya percaya akan bermanfaat bagi Anda untuk mencari teori interpretasi abstrak, yang memberikan jawaban yang sangat teliti untuk pertanyaan serupa di bidang analisis program berbasis kisi yang sedikit berbeda.

Tampak bagi saya bahwa Anda menggunakan kerangka kerja berdasarkan aljabar. Saya menggunakan kata aljabar di sini dalam arti aljabar universal, di mana saya berasumsi bahwa kendala pada struktur aljabar diberikan oleh persamaan antara istilah. Ada dua pengertian berbeda di mana abstraksi (atau hierarki) masuk ke dalam gambar.

  1. Abstraksi sebagai hubungan antara dua aljabar spesifik. Anda mungkin ingin mengatakan bahwa satu aljabar memiliki struktur yang lebih kaya daripada aljabar lain, atau bahwa setiap masalah yang Anda bisa selesaikan dengan satu aljabar yang bisa Anda selesaikan dengan yang lain. Jenis hubungan ini adalah apa yang akan diformalkan dengan homomorfisme, atau pemetaan lain antara aljabar.
  2. Hirarki abstraksi sebagai keluarga aljabar. Dalam kasus Anda, ini akan menjadi keluarga deltoid dengan properti tertentu. Sebagai contoh yang lebih umum, pertimbangkan semua set yang dipesan sebagian. Kita dapat menganggap kisi, kisi distributif, dan kisi Boolean sebagai urutan sub-keluarga yang memiliki sifat lebih kaya.

Kedua pengertian itu saling terkait tetapi berbeda.

Abstraksi antara dua struktur

Wawasan dari interpretasi abstrak adalah berguna untuk memberikan struktur yang Anda pertimbangkan dengan gagasan keteraturan. Pertimbangkan dua struktur

(M,fM) dan (N,fN), dengan fM:MM dan fN:NN sebagai operasi yang menarik.

Homomorfisme dalam pengertian aljabar universal akan terlihat seperti ini:

h:MN adalah fungsi yang memuaskan kesetaraan h(fM(a))=fN(h(a)).

Kita dapat melihat dua struktur yang muncul di atas sebagai struktur yang dipesan sebelumnya

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

dan homomorfisme yang dapat kita tulis ulang menjadi fungsi yang memuaskan

  1. jika itu a=b kemudian h(a)=h(b), dan
  2. untuk semua a di M, h(fM(a))=fN(h(a)).

Sekarang, anggaplah Anda memiliki gagasan perkiraan lain yang masuk akal. Misalnya, ketika kita berurusan dengan set negara dalam verifikasi program, inklusi subset masuk akal untuk aplikasi tertentu, atau ketika berhadapan dengan rumus dalam deduksi otomatis, implikasinya masuk akal. Lebih umum, kita dapat mempertimbangkan

(M.,,fM.) dan (N,,fN)dimana dan adalah preorder.

Sekarang, alih-alih homomorfisme, kita dapat memiliki fungsi abstraksi

α:MN yang mana

  1. monoton, artinya setiap kali ab kita punya α(a)α(b), dan
  2. semi-bolak-balik dengan operasi: α(fM(a))fN(α(a)) untuk semua a di M..

Fungsi abstraksi memperjelas gagasan bahwa jika struktur selesai N adalah abstraksi dari struktur atas M, lalu mengevaluasi istilah dalam N tidak dapat menghasilkan hasil yang lebih tepat (sehubungan dengan gagasan aproksimasi di N) daripada mengevaluasi istilah yang sama di M dan kemudian memetakannya ke N.

Sekarang kita dapat bertanya apakah perlu untuk mendekati masalah dalam hal abstraksi sebagai lawan perbaikan. Artinya, tidak bisakah kita mengatakan ituM adalah penyempurnaan dari Ndan merumuskan kondisi dalam istilah. Inilah yang dilakukan fungsi konkretisasi .

Sebuah fungsi betonisasi γ:NM.adalah monoton dan memuaskan ketidaksetaraanfM.(γ(b))γ(fN(b)).

Kondisi abstraksi dan konkretisasi disebut kondisi kesehatan dalam interpretasi abstrak. Dalam kasus khusus ituα dan γmembentuk koneksi Galois, kondisi abstraksi dan konkretisasi adalah setara. Secara umum, mereka tidak setara.

Segala sesuatu yang telah kita lakukan sejauh ini hanya meresmikan gagasan abstraksi antara sepasang struktur. Hal-hal yang telah saya katakan dapat diringkas jauh lebih ringkas dalam bahasa teori kategori. Saya telah menghindari kategori karena komentar Anda di atas.

Hirarki Abstraksi

Misalkan kita memiliki struktur Mdiberkahi dengan preorder dan beberapa operasi. Kita dapat mempertimbangkan semua strukturN seperti yang N adalah abstraksi dari Mdalam pengertian di atas. Jika kita memilikinyaN1 adalah abstraksi dari N2 dan keduanya adalah abstraksi dari M, kami memiliki tiga elemen hierarki. Relasi `adalah abstraksi dari ' memungkinkan kita untuk menentukan preorder antar struktur. Mari kita sebut keluarga struktur yang diperintahkan oleh abstraksi sebagai hierarki .

Jika saya mempertimbangkan contoh Anda, tampaknya deltoid abstrak Anda mungkin merupakan kandidat untuk elemen maksimal dalam beberapa hierarki. Saya tidak sepenuhnya yakin karena deltoid abstrak tampaknya merupakan keluarga deltoids daripada deltoid spesifik.

Yang dapat Anda lakukan sekarang adalah mempertimbangkan hierarki yang berbeda. Hirarki semua deltoids. Sub-hierarki berdasarkan berbagai pertimbangan yang Anda miliki di atas. Contoh khusus dalam konteks interpretasi abstrak adalah hierarki kisi lengkap yang berada dalam koneksi Galois dengan kisi set kekuasaan tertentu, dan sub hierarki yang hanya terdiri dari kisi distributif atau hanya kisi Boolean.

Seperti yang ditunjukkan Martin Berger dalam komentar, gagasan abstraksi antara hierarki ini ditangkap oleh anggapan tambahan antar kategori.

Perspektif Kategorikal

Ada komentar yang meminta lebih banyak komentar pada kategori. Komentar itu sudah tidak ada lagi tetapi saya tetap akan merespons.

Mari kita mundur dan melihat apa yang Anda lakukan dalam mendesain deltoids dan apa yang telah saya jelaskan di atas dari perspektif yang lebih umum. Kami tertarik untuk memahami struktur penting dari entitas yang kami manipulasi dalam konteks perangkat lunak dan hubungan antara entitas-entitas ini.

Realisasi penting pertama adalah bahwa kita tidak hanya tertarik pada serangkaian elemen tetapi pada operasi yang dapat kita lakukan pada elemen-elemen dan sifat-sifat dari operasi tersebut. Intuisi ini mendorong desain kelas dalam pemrograman berorientasi objek dan definisi struktur aljabar. Anda telah membuat intuisi ini secara eksplisit dalam definisi deltoid yang telah mengidentifikasi beberapa operasi yang menarik. Lebih umum, ini adalah proses pemikiran yang mendasari deskripsi aljabar. Kita perlu mengidentifikasi apa operasi kita dan properti apa yang mereka miliki. Langkah ini memberi tahu kami tipe struktur yang sedang kami kerjakan.

Realisasi kedua adalah bahwa kita tidak hanya tertarik pada serangkaian elemen tetapi hubungan abstraksi. Formalisasi yang paling sederhana yang dapat saya bayangkan tentang abstraksi adalah dengan mempertimbangkan seperangkat preordered. Kita dapat menganggap suatu himpunan preordered sebagai generalisasi yang ketat dari himpunan ke sesuatu yang datang dengan gagasan perkiraan yang dipanggang.

Kami idealnya ingin bekerja di lingkungan di mana kedua wawasan di atas adalah warga negara kelas satu. Artinya, kami ingin pengaturan yang diketik seperti aljabar, tetapi juga pengaturan perkiraan perkiraan preorder. Langkah pertama ke arah ini adalah mempertimbangkan kisi. Kisi adalah struktur yang menarik secara konseptual karena kita dapat mendefinisikannya dalam dua cara yang setara.

  1. Kita dapat mendefinisikan kisi secara adil sebagai himpunan (L,,)dilengkapi dengan pertemuan dan operasi gabungan. Kita kemudian bisa menurunkannya urutan parsial dengan mendefinisikanab untuk memegang kapan saja ab=a.
  2. Alternatifnya adalah mendefinisikan kisi sebagai set yang dipesan sebagian (L,) memuaskan bahwa setiap pasangan elemen dalam Lmemiliki batas bawah unik terbesar dan batas atas paling tidak unik. Kami kemudian dapat memperoleh pertemuan dan bergabung dengan operasi dari urutan parsial.

Kisi dengan demikian adalah struktur matematika yang dapat didekati dari perspektif aljabar atau pendekatan. Kelemahan di sini adalah bahwa elemen-elemen kisi itu sendiri tidak memiliki struktur tipe yang diperhitungkan dalam hubungan aproksimasi. Artinya, kita tidak dapat membandingkan elemen berdasarkan gagasan memiliki struktur lebih atau kurang.

Dalam konteks masalah Anda, Anda dapat menganggap kategori sebagai generalisasi alami preorder yang menangkap gagasan perkiraan (dalam morfisme) dan tipe struktur dalam pengaturan aljabar. Pengaturan teori kategori memungkinkan kita untuk membuang berbagai perbedaan yang tidak perlu dan fokus pada struktur entitas yang Anda pedulikan dan perkiraan struktur itu. Properti dan tambahan universal memberi Anda kosa kata dan alat yang sangat kuat untuk memahami lanskap struktur yang Anda minati dan memungkinkan perlakuan matematis yang ketat terhadap gagasan intuitif bahkan seperti tingkat abstraksi yang berbeda.

Mengenai komentar saya tentang abstrak deltoids, tampaknya apa yang Anda inginkan adalah kategori. Deltoid abstrak adalah kategori spesifik analog dengan kategori set. Ada kategori lain yang sedang Anda pertimbangkan. Awalnya saya pikir Anda mendefinisikan deltoid yang dalam arti teori kategori akan menjadi objek terminal (atau final).

Anda sedang mempelajari jenis pertanyaan yang diberikan oleh teori kategori untuk jawaban yang sangat memuaskan. Saya harap Anda bisa sampai pada kesimpulan itu sendiri.

Referensi

  1. Interpretasi abstrak dan aplikasi untuk program logika , Patrick Cousot dan Radhia Cousot. Paruh pertama artikel ini adalah pengantar gaya tutorial umum untuk topik interpretasi abstrak.
  2. Kerangka kerja interpretasi abstrak , Patrick Cousot dan Radhia Cousot. Artikel ini membahas semua kemungkinan yang saya buat di atas mengenai fungsi abstraksi dan konkretisasi dengan sangat terperinci.
  3. Desain sistematis Kerangka Analisis Program , Patrick Cousot dan Radhia Cousot. Ini adalah makalah yang memperkenalkan gagasan hierarki abstraksi dalam konteks analisis program.
  4. Pelestarian Kuat Umum dengan Interpretasi Abstrak , Francesco Ranzato dan Francesco Tapparo. Makalah ini menerapkan ide-ide ini dalam konteks abstraksi yang berbeda yang mempertahankan formula logika temporal. Anda akan menemukan contoh abstraksi Boolean dan distribusi yang berhasil di sini.
  5. Abstrak Interpretasi, Hubungan Logis, dan Ekstensi Kan , Samson Abramsky. Menyajikan perspektif teori kategori pada orde teoritis materi di atas.
Vijay D
sumber
Terima kasih atas jawaban menyeluruh Anda! Dan kurangnya kategori sangat dihargai. ;-) (Saya harus mempelajari beberapa teori kategori sedang di masa depan.) Saya akan melihat referensi Anda. - = # = - Sementara itu, saya memiliki pertanyaan tentang pernyataan Anda "deltoid abstrak tampaknya merupakan keluarga deltoids daripada deltoid spesifik". Bisakah Anda menjelaskan bagaimana deltoid abstrak berbeda dalam hal ini daripada yang lain? Tidak bisakah struktur aljabar dilihat sebagai keluarga dari semua penyempurnaannya?
mhelvens
@ VijayD Terima kasih atas pembaruan di CT. Saya yang bersalah membuat komentar dan kemudian menghapusnya. Saya sangat percaya bahwa CT lebih cocok untuk masalah OP. Saya bahkan lebih yakin setelah melihat pembaruan Anda. Saya pikir jika OP tidak ingin melakukannya menggunakan CT, orang lain akan melakukannya.
scaaahu
Tampaknya sangat mungkin bahwa teori kategori memberikan jawaban terbaik untuk pertanyaan saya. Dan saya berharap untuk mempelajarinya dan memahami jawaban-jawaban itu dengan lebih baik. Dan memang, kurangnya waktu saya untuk belajar dan menerapkan teori kategori seharusnya tidak menjadi alasan untuk memberikan jawaban 'rendah' ​​di situs web ini. - = # = - Meskipun demikian, saya sangat menghargai pertimbangan Vijay. Jawabannya pada tingkat monoid cukup berguna. - = # = - Jadi saya tidak bisa menggunakan kategori sekarang. Tapi saya pasti akan mengeksplorasi opsi dalam pekerjaan di masa depan. Terima kasih semuanya!
mhelvens
Anda berada dalam posisi yang sangat baik untuk mengambil subjek karena sebelum Anda memiliki masalah yang Anda pahami dengan baik dan dapat langsung menganalisis dari perspektif kategorikal. Saya menemukan ini cara terbaik untuk belajar sesuatu dan akan mendorong Anda untuk tidak menunda karena teks pada teori kategori tampak menakutkan. Saya yakin ada porsi kecil untuk dipelajari. Semoga beruntung untuk pertahanan.
Vijay D
9

Anda sedang mengerjakan PhD Anda. Mengatakan "Saya tidak berpengalaman dalam hal iniX"Bukan alasan. Dan jika Anda baik, maka katakan" penasihat saya tidak tahu X"juga bukan alasan.

Anda menggunakan monoids di mana Anda harus menggunakan kategori. Operasi monoid Anda mengandaikan bahwa Anda dapat menggabungkannyaδbersama. Tetapi apakah ini benar-benar masuk akal, misalnya, bagaimana Anda menyusun "tambahkan casing plastik" dan "tambahkan casing logam"? Saya kira beberapa dari AndaδHasilnya adalah hubungan kosong karena tidak masuk akal. Anda harus curiga terhadap hal semacam itu.

Sebagai pengamat yang tertarik, tampaknya monoid itu harus menjadi kategori, sehingga kita dapat menyusun dua δHanya jika masuk akal bagi mereka untuk dikomposisi. Maka evaluasi semantik Anda hanyalah sebuah fungsi ke dalam kategori set dan hubungan. Dan kemudian Anda melihat bahwa ada banyak kategori lain yang dapat Anda gunakan. Delta fungsional akan sesuai dengan functor yang memetakan ke dalam kategori set dan fungsi, bilangan natural deltoid adalah functor ke dalam monoid polinomial pada bilangan asli (dilihat sebagai kategori), dll.

Saya tidak yakin Anda ingin memformalkan LaTeX dan ponsel Nokia terlalu serius dalam teori umum. Tetapi tentu saja teori Anda harus dapat diterapkan pada contoh-contoh seperti itu (jangan menutup telepon ketika Anda mengetahui bahwa ponsel sebenarnya tidak memiliki semantik yang terdefinisi dengan baik).

Anda benar - benar meremehkan diri sendiri dengan bersikukuh pada teknologi yang telah ditentukan (oleh penasihat Anda?), Berdasarkan kelihatannya.

Andrej Bauer
sumber
2
Secara umum saya setuju dengan Anda. Dan saya tidak pernah menggunakan alasan itu. :-) Tetapi dalam kasus ini, sebagian besar tesis saya sudah ditulis dan monoid telah digunakan dalam semua publikasi saya. - = # = - Yang sedang berkata, Anda membuat titik yang sangat baik. Dalam contoh casing plastik / logam, saya sekarang menanganinya dengan membiarkan komposisi, tetapi memiliki delta yang dihasilkan mengevaluasi hubungan kosong (seperti yang sudah Anda duga). Semuanya didefinisikan dengan baik, jadi itu sudah cukup untuk saat ini. Tapi saya bisa melihat bahwa saran Anda lebih elegan. Anda telah memberi saya alasan bagus lain untuk mempelajari teori kategori. Terima kasih!
mhelvens
@ mhelvens Saya seorang insinyur perangkat lunak pensiunan yang tinggal di industri untuk waktu yang lama. Datang kembali ke TCS setelah pensiun. Saya akan mengajukan pertanyaan kehidupan nyata. Seandainya Anda berhasil memformalkan produk ponsel Nokia menggunakan monoid dalam tesis Anda, apa yang akan Anda katakan dalam pembelaan lisan jika Apple mengumumkan bahwa ia mengakuisisi Nokia? Apakah pengumuman itu akan merusak model Anda? Menurut saya, semakin umum teorinya, semakin baik modelnya.
scaaahu
@scaaahu Pertanyaan menarik. :-) Biarkan saya mulai dengan menjawab: "Tidak, tidak sama sekali." Teorinya independen dari 'tipe' perangkat. - = # = - Saya yakinkan Anda tidak perlu meyakinkan saya tentang manfaat generalisasi. (Bahkan, saya pikir saya kadang-kadang berlebihan). Kebetulan saya tidak menemukan teori kategori pada waktunya untuk itu berguna untuk pekerjaan PhD saya. Seperti yang saya katakan, saya setuju bahwa itu mungkin pendekatan yang berharga. Tetapi dua bulan dari tenggat waktu tesis saya bukanlah waktu untuk mengubah pendekatan saya secara mendasar.
mhelvens
Jelas, Anda siap untuk postdoc ;-)
Andrej Bauer
Aplikasi hibah sudah dikirim. :-) Saya harap saya dapat melanjutkan di bidang ini.
mhelvens