Mantıksal ilişkiler ve simülasyonlar arasındaki farklar nelerdir?


29

Programın denkliğini kanıtlayan yöntemler üzerinde çalışan bir acemiyim. İki programın eşdeğer olduğunu kanıtlamak için mantıksal ilişkilerin veya simülasyonların tanımlanması hakkında birkaç makale okudum. Ancak bu iki teknik hakkında kafam oldukça karıştı.

Ben sadece simülasyonlar ortaklaşa dayanırken, mantıksal ilişkilerin indüktif olarak tanımlandığını biliyorum. Neden bu şekilde tanımlanıyorlar? Sırasıyla artıları ve eksileri nelerdir? Farklı durumlarda hangisini seçmeliyim?


1
Okuduğunuz bu makalelere link vermek isteyebilirsiniz. Bu, hangi belirli örneklerin sizi kafa karıştırdığını netleştirir.
Marc Hamann

1
Mantıksal ilişkiler için Hur ve Dreyer'in son makalesinde "ML ile montaj arasında bir Kripke mantıksal ilişki" (POPL'11) kitabını okudum. Ayrıca Pierce'in "Türler ve Programlama Dillerinde İleri Konular" kitabındaki klasik bölümlerini de okudum. Mantıksal ilişkilerin indüktif olarak dilin tip yapısında tanımlandığını görüyorum, ancak dilin bir tip yapısı yoksa (C gibi)? (Sanırım başka bir soru gibi görünüyor.)
Hongjin Liang

1
Simülasyonlar için, Hennessy ve Milner tarafından yazılan orijinal makaleyi yazdı: "Dinamik olmayan ve eşzamanlılık için cebirsel yasalar". Koutavas ve Wand'ın "Yüksek dereceli zorunlu programlar hakkında muhakeme için küçük bimülasyonlar" (POPL'06) benim için anlamsız ve neden onların "bimülasyon" olarak adlandırıldığından emin değilim.
Hongjin Liang

3
yayında yer alan yorumlarda verdiğiniz bilgileri dahil ederseniz daha iyi olur. Sorunuzu, sorunun altındaki düzenle bağlantısını tıklayarak düzenleyebilirsiniz.
Kaveh

1
@HongjinLiang: Eğer bir tür yapınız yoksa (ya da özyinelemeli türleriniz varsa), adım indeksli mantıksal ilişkileri kullanabilirsiniz - mantıksal ilişkilerde türlerde indüksiyon kullanırsınız, adım indekslemeyle gözlem basamaklarında indüksiyon yaparsınız. İşaretçileri Amal Ahmed'in araştırma açıklamasında bulabilirsiniz: ccs.neu.edu/home/amal/ahmed-research.pdf . (Mantıksal ilişkiler üzerine yapılan araştırmalara bir başka genel bakış, Derek Dreyer'den yaptığı ve konuşma yaptığı açıklamada bu konuşmadır : mpi-sws.org/~dreyer/research.pdf ).
Blaisorblade

Yanıtlar:


20

Bu soruya muhtemelen yeni olan bir cevabım var. Aslında, son 6 aydır hala bu konuyu düşünüyorum ve henüz gazetelerde yazılamadı.

Genel tez, "mantıksal ilişkiler", "simülasyonlar" ve hatta "değişmezler" gibi ilişkisel akıl yürütme ilkelerinin, veri soyutlama veya bilgi gizlemesinin tezahürleri olduğudur. Bilginin saklandığı her yerde, bu ilkeler çoğalır.

Bunu keşfeden ilk insanlar otomat teorisyenleriydi. Otomatların gizli durumu var. Bu yüzden eşdeğerlikleri hakkında konuşmak için ilişkisel akıl yürütmeye ihtiyacınız var. Otomata teorisyenleri bir süre için homomorfizmalar ile mücadele etti, pes etti ve bir simülasyon ilişkileri biçimi olan "ilişkisel kaplama" denilen bir kavram ortaya koydu.

Milner, fikri 1971'de " Programlar arasında bir cebirsel nosyon " olarak adlandırılan az bilinen ama çok temel bir makalede buldu . Hoare, bunu biliyordu ve 1972'de " veri temsillerinin doğruluğunun kanıtı " ile ortaya çıkarken kullandı (ancak kullanıldı. soyutlama, ilişkilerin yerine işlev görür, çünkü “daha ​​basit” olduklarını düşünürdü. Daha sonra sadelik iddiasını geri çekti ve " Rafine edilmiş veri iyileştirme " de ilişkilerini kullanmaya geri döndü . Reynolds, " Programlama El Sanatları " nda ilişkisel akıl yürütmeyi kullandı", Bölüm 5 (1981). İlişkilerin soyutlama işlevlerinden daha doğal ve genel olduğunu düşünüyordu. Eğer bu bölümü okuyup okursanız, etrafta dolaşan, keşfedilmeyi bekleyen ilişkisel parametriklik fikirlerini göreceksiniz. Yeterince, iki yıl sonra, Reynolds, "Türler, soyutlama ve parametrik polimorfizm" (1983) yayınladı.

Bütün bu fikirlerin türlerle hiçbir ilgisi yok gibi görünüyor, ama gerçekten yapıyorlar. Durum bilgisi olan diller ve modeller yerleşik veri soyutlamasına sahiptir. Bilgiyi gizlemek için bir "soyut veri tipi" tanımlamanız gerekmez. Siz sadece yerel bir değişkeni tanımlayın ve gizleyin. İlk birkaç haftada Java sınıfındaki birinci sınıf öğrencilerine öğretebiliriz. Ter yok

Öte yandan, işlevsel diller ve modeller bilgi türlerini gizlemek zorundadır . İşlevsel modeller yerleşik veri soyutlamasına sahip değildir. veya kullanarak açıkça eklemeliyiz . Eğer durumsal bir dili işlevsel bir dile çevirirseniz, tüm yerel durumun tür değişkenlerine çevrildiğini fark edeceksiniz. Bunun nasıl çalıştığının açık bir açıklaması için makaleme " Algol benzeri dillerde nesneler ve sınıflar " konusuna bakın , ancak fikirler gerçekten Reynolds 1981'den ("Algol'un Özü") geliyor. Şimdi sadece bu klasik fikirleri daha iyi anlıyoruz.

İki makineyi alın veM MMMMXXRF(X)F(X)F(R)

Öyleyse, simülasyonlar ve ilişkisel parametriklik aslında aynı fikirdir . Bu sadece yüzeysel bir benzerlik değildir. İlki, yerleşik veri soyutlamanın bulunduğu durumdaki diller için yapılır. Sonuncusu, veri soyutlamanın tip değişkenleriyle elde edildiği durumsuz diller için yapılır.

Peki ya mantıksal ilişkiler? Yüzeyde, mantıksal ilişkiler daha genel bir fikir gibi görünüyor. Parametrikliğin aynı model içinde tip değişkenlerinin nasıl ilişkilendirileceğinden bahsetmesine rağmen, mantıksal ilişkilerin farklı modeller arasında tiplerle ilişki kurduğu görülmektedir. (Dave Clarke bunu daha önce açık bir şekilde dile getirdi.) Ama benim hissim (ve hala gösterilmesi gerekiyor) bunun henüz formüle edilmemiş bir tür yüksek tip parametriklik örneği olduğudur. Bu cephede daha fazla ilerleme için bizi izlemeye devam edin.


[Not eklendi] Mantıksal ilişkiler ve simülasyonlar arasındaki bağlantı son yazımızda Mantıksal ilişkiler ve parametriklik: Kategori Teorisi ve Programlama Dilleri için Reynolds programı .


F(R)Rfunctor F

FR:XXF(R):F(X)F(X)F(R)F(R)

14

Temel farklılıklardan biri, mantıksal ilişkilerin bir program sınıfının (örneğin bir derleyiciye girdi) başka bir program sınıfına (örneğin derleyicinin çıktısı) karşılık geldiğini göstermek için bir teknik olarak kullanılması, oysa simülasyon ilişkilerinin kullanılmasıdır. İki program arasındaki yazışmayı göstermek.

İki kavram arasındaki benzerlik, her ikisinin de iki farklı varlık arasındaki yazışmayı göstermek için kullanılan bir ilişki tanımlamalarıdır. Bir anlamda, mantıksal bir ilişki, türlerin sözdizimi üzerinde endüktif olarak tanımlanmış bir simülasyon ilişkisi olarak düşünülebilir. Ancak farklı simülasyon ilişkileri vardır.

Mantıksal ilişkiler, ML gibi bir dil ile onun montaj diline çevrilmesi arasındaki ilişkiyi, okuduğunuz makalede olduğu gibi göstermek için kullanılabilir. Tür yapısında endüktif olarak mantıksal bir ilişki tanımlanmıştır. Mantıksal bir ilişki, örneğin bir çevirinin doğru olduğunu, çevirinin her tür kurucu için doğru olduğunu göstererek göstermek için bir bileşim aracı sağlar. İşlev türlerinde doğruluk koşulu koşulu şöyle bir şey söyler, bu işlevin çevirisi iyi çevrilmiş girdiyi iyi çevrilmiş çıktıya alır.

Mantıksal ilişkiler lamda matematiğine dayalı diller için çok yönlü bir tekniktir. Mantıksal ilişkilerin diğer uygulamaları arasında ( buradan ): lambda tanımlanabilirliğini karakterize etmek, terimsel anlamsal tanımları ilişkilendirmek, parametrik polimorfizmi karakterize etmek, soyut yorumlamayı modellemek, veri gösterimlerini doğrulamak, tamamen soyut anlambilimi tanımlamak ve yerel durumun üst sıradaki dillerde modellenmesidir.

Simülasyon ilişkileri genellikle iki programın denkliğini göstermek için kullanılır. Tipik olarak, bu programlar, kanallara mesaj gönderme gibi bir çeşit gözlem üretmektedir. Bir program P, P'nin yapabileceği her şeyi yapabiliyorsa, belki daha fazla olsa da, başka bir Q'yu simüle eder.

Bisimülasyon, kabaca, bir araya getirilen iki simülasyon ilişkisidir. Ek programların genel olarak mevcut olmasına rağmen, P programının ve Q programının simülasyonunun ve Q programının P programının simülasyonunun yapılabileceğini ve bimülasyonun olduğunu gösterirsiniz. Wikipedia'nın bisimülasyona girişi iyi (daha kesin) bir başlangıç ​​noktasıdır. Bu fikrin binlerce çeşidi vardır, ancak bu aynı bilgisayar bilimi, modal mantık ve model teorisi biçiminde yeniden keşfedilen temel bir fikirdir. Sangiorgi'nin makalesi , fikrin harika bir tarihini verir.

İki kavram arasında bir ilişki kuran bir makale Andy Pitts'in anlamsal ve sözdizimi arasındaki mantıksal ilişkilere ve sonuçta sözdizimsel olarak tanımlanmış anlamsal bir nosyona ilişkin mantıksal ilişkileri kullanan ve sonuçta tamamen sözdizimsel olan uygulamalı bimülasyon hakkındaki belirli bir özelliği kanıtlayan bir makaledir .


Ayrıntılı açıklamalarınız için çok teşekkür ederiz! Referanslarını okuyacağım ve ikisi arasındaki derin bağlantıları / farklılıkları bulmaya çalışacağım.
Hongjin Liang

"P programını ve Q programını simüle ettiğini ve Q programının P'yi simüle ettiğini ve bir bimülasyonunuz olduğunu" ifadesinden emin misiniz? A = B + ac) ve B = a.b + ac diyebildiğim kadarıyla A'nın B'ye benzer olduğunu, B'nin A'ya benzer olduğunu fakat A ve B benzer değildir.
András Salamon

@ András: Haklısın. İfadem yeterince kesin değil. Fark, "Bazı ek koşullar mevcut olabilir" ifadesiyle soyutlanır.
Dave Clarke

Hennessy ve Milner , bisimülasyon için orijinal yazılarında üç çeşit denklik ilişkisi tanımlamış ve farklılıklarını göstermek için bazı örnekler vermiştir. Asıl ifaden aslında kağıtlarındaki besilasyondan daha zayıf ve iz denkliğinden daha güçlü olan ortadaki. Hangi eşdeğerliğin daha iyi olduğundan emin değilim. Belki pratik kullanıma bağlıdır.
Hongjin Liang,

Simülasyon, iki veri türü arasında veri iyileştirme oluşturmak için bir kanıtlama tekniği olarak da kullanılır. Bu simülasyon kanıtlarından her biri bütün program sınıflarıyla ilgilidir. Detaylar için bakınız [1]. Bu, iki kavram arasındaki farkın daha da bulanık olduğunu göstermektedir. [1]: CAR Hoare, He J ve JW Sanders. Veri iyileştirme ön ayarı. Bilgi İşlem Mektupları , 25: 71-76, 1987.
Kai,

8

İki ilişki türü farklı bağlamlarda kullanılıyor gibi görünmektedir. Yazılı diller için mantıksal simülasyonlar ve proses sistemleri veya geçiş sistemleri üzerinden modal mantıklarla ilgilenirken simülasyon ilişkileri. Dave Clarke çok sezgisel bir açıklama yaptı, ben de yardımcı olabilecek birkaç işaretçi ekleyeceğim.

Her iki kavramın da soyut yorumu kullanarak karakterize edilmesi üzerine çalışmalar yapılmıştır. İstediğiniz olmayabilir, ancak en azından her iki kavram da aynı matematiksel çerçevede ele alınır.

Samson Abramsky, tembel Lambda hesabı için sağlamlık ve kesinlik analizinin sona ermesi için mantıksal ilişkiler kullandı ( Özet Yorumlama, Mantıksal İlişkiler ve Kan Uzantıları ). Ayrıca Galois bağlantısının soyut yorumlama anlamında mantıksal ilişkilerin soyutlama fonksiyonlarını tanımladığını da gösterdi. Daha yakın bir zamanda, Backhouse ve Backhouse, Galois bağlantılarının temel tipler için Galois bağlantılarından yüksek dereceli tipler için nasıl kurulacağını ve bu yapıların mantıksal ilişkiler ( Mantıksal İlişkiler ve Galois Bağlantıları ) kullanılarak eşit şekilde tanımlanabileceğini gösterdi . Dolayısıyla, yazılan işlevsel dillerin özel bağlamında, iki kavram eşdeğerdir.

Simülasyon ilişkileri, çeşitli modal ve zamansal mantık için Kripke yapıları arasındaki mülkün korunmasını karakterize eder. Türler yerine, bir mantıkta modalitemiz var. Simülasyon ilişkileri ayrıca Galois bağlantılarını ve dolayısıyla soyutlamaları da tanımlar. Kişi bu soyutlamaların özel özelliklere sahip olup olmadığını sorabilir. Cevap, standart soyutlamaların sağlam olması ve simülasyon ilişkisine dayalı soyutlamaların tamamlanmış olmasıdır. Bütünlük kavramı, sezgisel yorumlama ile uyuşmayan Galois bağlantıları ile ilgilidir. Bu çalışma alanı, David Schmidt ( Program Soyutlama için İkili İlişkileri Koruyan İkili İlişkiler ) ve Francesco Ranzato ve Francesco Tapparo ( Özet Yorumuyla Genelleştirilmiş Güçlü Koruma) tarafından geliştirilmiştir .


Cevabınız, kavramları soyut yorumlarla birleştirmede çok yararlıdır. Teşekkür ederim!
Hongjin Liang

Samimi bir soru: Uzman değilim, ama Reynolds (1983, "Türler, soyutlama ve parametrik polimorfizm") Galois bağlantıları olan mantıksal ilişkileri tanımlamıyor mu (Bölüm 6)? Fark ettiğim tek fark: "Galois bağlantısı" terimini değil, sadece kategoriler olarak kabul edilen kısmi siparişler arasındaki eşdeğer "functors" ifadesini kullandı ve etki alanlarını kısıtladı. OTOH, Backhouse ve Backhouse, Reynolds'tan bahsediyor, ancak bu iddiayı bir şekilde veya başka bir şekilde tartışmıyorlar.
Blaisorblade 11:15

6

İki kavramın biraz belirsiz olduğunu söyleyebilirim. Her ikisi de, bir şekilde eşitlik nosyonunu oluşturan hesaplama mekanizmalarının ikili ilişkileri ile ilgilidir. Mantıksal ilişkiler tip yapısının indüksiyonu ile tanımlanırken simülasyonlar istediğiniz şekilde tanımlanabilir, ancak terim ortaklaşmaya itiraz eder.

π


Referansınız gerçekten güzel! Daha önce eşzamanlı programlar için mantıklı ilişkiler duymamıştım. Teşekkür ederim! Mantıksal bir ilişki tanımlamanın zorluğu tip yapısını bulmaktan kaynaklanıyor. Aynı tip yapıyla, farklı programlama dilleri arasında mantıksal bir ilişki tanımlanabilir. Öte yandan, bir simülasyon, programlar farklı durum modelleri için yazılmışsa rahatsız edici olabilecek durum geçiş sistemi tarafından modellemeyi gerektirir.
Hongjin Liang,

Merhaba! Evet, uygun tipte bir yapı bulmak her zaman kolay olmayabilir. Karşılaştırma yapmak istediğiniz iki hesap için farklı geçiş sistemleri kullanarak simülasyonları tanımlayabilirsiniz. Birincisi, zayıf simülasyon tanımının sadece bunu yaptığını iddia edebilir. Gerçekten simülasyonları tanımlamanız gereken tek şey geçiş etiketlerini karşılaştırmak için bir ilişkidir.
Martin Berger
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.