Perawatan kategori-teoretis dari perbedaan, tambalan dan penggabungan?

14

Apakah ada kategori tambalan yang kira-kira terlihat seperti ini:

  • Objek adalah string dalam beberapa alfabet dasar
  • Morfisme adalah skrip edit ("diffs" atau "patches") di antara string

Saya tertarik dengan pertanyaan ini:

  • Apakah ada gagasan kategoris tentang naskah edit minimal ? Mungkin kategori tambalan diperkaya dalam PO-Sets?
  • Apakah penggabungan tambalan merupakan pushout kategoris?
  • Bagaimana cara menyamaratakan ini dari string ke pohon (sistem file, atau tipe data aljabar)?
Turion
sumber
1
Anda akan ingin melihat teori di balik Darcs VCS
Bergi
1
... atau Pijul , upaya yang relatif baru untuk membuat "Darcs baru". (Dan sejauh yang saya ingat dari pembicaraan itu, penggabungan adalah pushout dalam "penyelesaian gratis" dari kategori diff ...).
phipsgabler

Jawaban:

15

Seperti yang ditunjukkan oleh Martin , ada beberapa pekerjaan pada representasi kategoris tambalan. Mimram dan Di Giusto "A Categorical Theory of Patches" menjadi pendekatan kategorikal paling luas untuk mengedit-skrip seperti yang digunakan oleh UNIX diff.

L.SEBUAH:[n]L.[n]nSEBUAH:[n]L.B:[m]L.f:[n][m]. Suntikan dan peningkatan ada untuk menunjukkan bahwa salinan tidak pernah saling silang . Anda dapat menemukan semua detail di atas kertas .

Ya, penggabungan dianggap sebagai tekanan pada pelengkapan gratis dari kategori di atas. Kami membutuhkan penyelesaian untuk memastikan kami menambahkan konflik penggabungan pada konstruksi kami. Bukan kasus penggabungan selalu ada.

Terhadap pertanyaan kedua Anda, tidak ada gagasan pasti tentang naskah edit minimal karena dua alasan utama.

  1. Edit-skrip datang dalam segala bentuk dan bentuk. Beberapa penulis mempertimbangkan penyisipan, penghapusan, dan salinan, beberapa penulis juga ingin menambahkan substitusi sebagai operasi. Ketika Anda menggeneralisasi dari string ke pohon, maka, sejumlah operasi lain menjadi layak.

  2. SebuahbbSebuah

Ada banyak pekerjaan menggeneralisasi skrip edit ke pohon. Ini telah dipecah menjadi dua bagian utama:

  • Untyped Trees : Pikirkan ekspresi-s saja. Jarak edit pohon antara dua pohon adalah string-edit-jarak antara preorder traversal dari pohon tersebut. Anda dapat memeriksa beberapa daftar pustaka oleh Demaine et al. atau Pawlik dan Augsten , misalnya.

  • Typed Trees : Patches over Abstract Syntax Trees yang dijamin dapat menjaga ketikan-baik objek, yaitu menerapkan patch akan selalu menghasilkan AST yang valid. Di bawah payung yang diketik, ada sedikit operasi edit yang dapat dipertimbangkan. Pergantian, misalnya, tidak masuk akal. Namun demikian, ada perbedaan pada traversal preorder pohon oleh Lempsink et al. , yang kemudian diperpanjang oleh Vassena . Saat ini saya fokus pada pendekatan yang menjauhkan diri dari mengedit skrip untuk masalah yang saya tunjukkan sebelumnya, seperti karya terbaru kami atau beberapa karya sebelumnya yang mencoba mengambil keuntungan dari struktur tipe nilai yang "ditambal".

Dalam salah satu dari kasus-kasus itu saya belum melihat interpretasi kategoris yang teliti terhadap tambalan-tambalan terstruktur pohon.

Victor Miraldo
sumber
Jawaban yang luar biasa! Tetapi mengapa tidak ada gagasan kategoris tentang skrip edit minimal hanya karena mereka tidak unik? Batas (Co) juga tidak unik, hanya sampai isomorfisme.
Turion
Saya kira kita bisa menyelesaikan cocompletion dan memasukkan konflik, atau hanya mengatakan bahwa pushout tidak selalu ada, dan ketika mereka tidak ada tidak ada penggabungan?
Turion
1
SEBUAHBdiffSEBUAHBdiff3
9

Ada banyak pekerjaan dalam arah ini. Anda bisa mulai dengan melihat [1, 2], tetapi mereka tidak menguras topik.


  1. S. Mimram, C. Di Giusto, Teori Kategorikal Patch .

  2. C. Angiuli, E. Morehouse, DR Licata, R. Harper, Teori Patch Homotopical .

Martin Berger
sumber