Full Completeness vs Full Abstraction program çevirileri


15

Derleyici doğrulama çabaları genellikle derleyicinin tam olarak soyut olduğunu kanıtlamaya başlar: (bağlamsal) denklikleri koruduğu ve yansıttığı.

Tam soyutlama kanıtları sağlamak yerine, Hasegawa [ 1 , 2 ] ve Egger et. Tarafından yapılan bazı yeni (kategorik tabanlı) derleyici doğrulama çalışmaları . ark. [ 3 ] çeşitli CPS çevirilerinin eksiksiz olduğunu kanıtlamıştır.

Soru: Tam tamlık ile tam soyutlama arasındaki fark nedir?

Bana göre, bütünlük bir çeviri için denklik yansıması gibi görünüyor ve doluluk, denklik korumanın bir sonucu gibi görünüyor.

Not : Hem Curien [ 7 ] hem de Abramsky [ 8 ] tanımlanabilirlik, tam soyutlama ve bir dereceye kadar tam bütünlük arasındaki ilişkiyi araştırmaktadır. Bu kaynakların sorumun cevabı olabileceğinden şüpheleniyorum, ancak bir yüzey okuduktan sonra bunu henüz onaylamamıştım.

Bazı Geçmiş : "Tam bütünlük" terimi Abramsky ve Jagadeesan [ 4 ] tarafından bir oyun-anlamsal Çarpımsal Doğrusal Mantık modelinin doğruluğunu karakterize etmek için kullanılmıştır.

Blute [ 5 ] aşağıdaki tanımı sağlar:

Let ücretsiz bir kategori olması. için kategorik bir modelin nin tamamen tamamlandığını veya jeneratörlerin bazı yorumlarıyla ilgili olarak ile ilgili tam eksiksizliğine sahip olduğumuzu söylüyoruz. , benzersiz serbest işleç dolu.M F F M [FM FFM[[]]:FM

Anlayabildiğim kadarıyla, [ 6 ] ' daki Hasegawa, kategorik bir anlamsal model yerine bir program çevirisini tanımlamak için tam bütünlüğü adapte eden ilk kişidir. Bu durumda, sadece yazılan lambda hesabından doğrusal lambda hesabına Girard çevirisi. Daha sonra, [ 1 ] 'de CPS çevirisinin tam eksiksizliğini şu şekilde tanımlar :()

Eğer doğrusal Lambda taşı olarak derive edilir, daha sonra vardır hesaplama içinde lambda diş taşı böylece doğrusal lambda taşı içinde tutar.Γ;N:(σo)oΓM:σΓ;M=N:(σo)o

(burada , doğrusal lambda hesabında (hedef dil) temel tiptir, ancak hesaplama lambda hesabında (kaynak dil) değildir.)o

Bana göre, Hasegawa'nın tanımı bir dolgunluk gibi görünüyor ve tam bütünlüğü elde etmek için gerçekten bütünlükle birleştirilmelidir.

Egger ve diğ. ark. [ 3 ] bir CPS çevirisinin tam eksiksizliğini (1) tamlık ve (2) dolgunluğun bir kombinasyonu olarak tanımlar :()v

(1): Eğer ve sonraΘM,N:τΘv|Mv=βηNv:!τvΘM=λcN:τ

(2): Eğer sonra terimi var, öyle kiΘv|t:!τvΘM:τΘv|Mv=βηt:!τv

(burada , hesaplamalı denklem teorisidir)=λc


[1] " Doğrusal Olarak Kullanılan Etkiler: Lineer Lambda Analizine Monadik ve CPS Dönüşümleri ", Hasegawa 2002

[2] " İsimle Çağrıda Doğrusal Devam Etmenin Semantiği ", Hasegawa 2004

[3] " Zenginleştirilmiş Etki Analizinde Doğrusal Kullanım CPS Çevirileri ", Egger et. ark. 2012

[4] " Çarpımsal Doğrusal Mantık için Oyunlar ve Tam Tamlık ", Abramsky ve Jagadeesan 1992

[5] " Doğrusal Mantıkçılar için Kategori Teorisi ", Blute 2003

[6] " Girard Tercüme ve Mantıksal Tahminler ", Hasegawa 2000

[7] " Tanımlanabilirlik ve tam soyutlama ", Curien 2007

[8] " Tanımlanabilirlik ve Tam Tamlık için Aksiyomlar ", Abramsky 1999

Yanıtlar:


12

Ne yazık ki, burada çok fazla şey oluyor. Yani, işleri karıştırmak kolaydır. "Tam tamlık" ve "tam soyutlama" da "tam" kullanımı, tamamen farklı dolgunluk fikirlerini ifade eder. Ancak, aralarında bazı belirsiz bağlantılar da vardır. Yani, bu karmaşık bir cevap olacak.

Tam bütünlük : "Ses ve tam", geleneksel mantığın anlambilimine sahip olmasını istediğiniz bir özelliktir. Sağlamlık, mantıkta kanıtlayabileceğiniz her şeyin semantik modelde doğru olduğu anlamına gelir. Tamlık, anlamsal modelde doğru olan her şeyin mantıkta kanıtlanabilir olduğu anlamına gelir. Belirli bir anlamsal model için mantığın sağlam ve eksiksiz olduğunu söylüyoruz . Yapıcı mantığa geldiğimizdeMartin-Lof tipi teori veya doğrusal mantık gibi, sadece formüllerin kanıtlanabilir olup olmadığını değil, aynı zamanda kanıtlarının ne olduğunu da önemsiyoruz. Kanıtlanabilir bir formülün birçok kanıtı olabilir ve yapıcı bir mantık onları birbirinden uzak tutmak ister. Dolayısıyla, yapıcı bir mantık için bir anlambilim, yalnızca bir formülün doğru olup olmadığını belirtmekle kalmaz, aynı zamanda gerçeği için "kanıt" ("kanıt") gibi soyut bir anlam anlamını da içerir. Abramsky ve meslektaşları mantığın ispatlarının modeldeki tüm anlamsal ispatları ifade edebileceği anlamına gelen "tam bütünlük" terimini kullandılar. Yani, "tam" burada kanıtları ifade eder. "Tam" bir mantık, ihtiyaç duyduğu her şeyi kanıtlayabilir. "Tamamen tamamlanmış" bir mantık, sahip olması gereken tüm ispatlara sahiptir. Yani "tam bütünlük", "yapıcı bütünlük" veya "kanıt bütünlüğü" anlamına gelir. Bunun tam soyutlama ile ilgisi yoktur.

Tam soyutlama : "Yeterli ve tamamen soyut" bir programlama dilinin anlamsal modeli için istediğiniz bir özelliktir . (İlk farka dikkat edin: şimdi semantik modelin özellikleri ile ilgileniyoruz, dilin özellikleri değil!) Yeterlilik, anlamsal modelde her iki terimin aynı anlamı olduğunda, programlama dilinde gözlemsel olarak eşdeğer oldukları anlamına gelir (bazı yürütme kavramlarına göre). Tam soyutlama, iki terim gözlemsel olarak eşdeğerse, anlamsal modelde aynı anlama sahip oldukları anlamına gelir. Bu fikirler sağlamlık ve bütünlük ile ilgili olabilir, ancak bir şekilde çelişkili bir şekilde. Bir programlama dilinin semantik modelini gözlemsel denklik hakkında konuşmak için bir "mantık" veya "kanıt yöntemi" olarak düşünürsek, yeterlilik bu kanıt yönteminin sağlam olduğu anlamına gelir; tam soyutlama, bu ispat yönteminin tamamlandığı anlamına gelir. "Tam bütünlük" nosyonu yoktur.kanıt yöntemi. (Ancak, böyle bir şey teorik olarak mümkündür ve bu günlerden biri bunu yapabilir.)

Sizin durumunuzda, anlamsal modeller yerine çevirilerle ilgileniyorsunuz . Yeterlilik ve tam soyutlamanın özellikleri çevirilerle başa çıkmak için aşağıdaki gibi genişletilebilir. Hedef dili "semantik modeliniz", yani bir şekilde tam olarak anladığınız bir biçimcilik olarak düşünüyorsunuz. Eğer öyleyse, bunun için bir denklik fikriniz var. Ardından, iki kaynak programın çevirileri hedef dilde eşdeğer olduğunda, kaynak dilde gözlemsel olarak eşdeğerlerse çevirinin yeterli olduğunu söyleriz . Her iki kaynak programın kaynak dilde gözlemsel olarak eşdeğer olduğunda, çevirilerinin hedef dilde eşdeğer olması tamamen soyuttur .

Gerçekte, gerçekten tam olarak "anladığımız" herhangi bir hedef dil bilmiyorum. Tek bildiğimiz, hedef dil için gözlemsel eşdeğerlikle ilgili başka bir kavram. Bu durumda, çevirilerin hedef dildeki gözlemsel denkliği, kaynak dilde gözlemsel eşdeğerlik içeriyorsa çeviri yeterlidir. Kaynak dilde terimlerin gözlemsel denkliği, hedef dildeki çevirilerin gözlemsel eşdeğerliğini çeviri tamamen soyuttur. Bazı yazarlar bu iki özelliğin birleşimini ifade etmek için "tamamen soyut çeviri" alırlar:

τ(M)τ(N-)MN-
MN-τ(M)τ(N-)
MN-τ(M)τ(N-)

Egger ve diğerleri benzer şekilde tam bütünlük fikrini çevirilere genişletiyor gibi görünmektedir. Kurulumlarında formüller türlerdir ve kanıtlar terimlerdir. Çevirileri, terimlerin yanı sıra türleri de çevirir. Onlar kendi çeviri olarak adlandırabileceğimiz Tamamlanmayan bir tür tercümesi ise tipi orijinal terimleri çevirerek elde edilir sadece bu terimleri vardır . birbir

N-:τ(bir).M:bir.τ(M)=N-

Şimdi tam bütünlük ve tam soyutlama arasındaki belirsiz bağlantı için . Anlamsal bir modelin veya çevirinin tamamen soyut olduğunu kanıtlamak çoğu zaman tanımlanabilirlik içerir. Çünkü dillerimiz genellikle daha üst düzeydir. Yani, semantik model veya hedef dilde çok fazla "bağlam" varsa, terimlerimizi veya semantik anlamlarımızı istenmeyen şekillerde düzeltebilir ve denkliklerini bozabilir. "İstenmeyen yollar", programlama dilinin kendisinin onları dürtemediği yollar anlamına gelir. Bu nedenle, tam bir soyutlama elde etmek için, anlamsal modelde veya hedef dilde mevcut olan "bağlamların" bir şekilde kaynak dildekilerden geldiğinden emin olmalıyız. Bunun tam eksiksizlik özelliği ile ilgili olduğunu unutmayın.

Neden böyle mülkler istiyoruz? It has bir şeyderleyiciler ile yapmak! Kaynak dilin hedef dile yerleştiğini iddia etmek için bu özellikleri istiyoruz. Belirli bir hedef dilden memnun kalırsak (temiz, anlaşılabilir, bir şekilde temel veya Tanrı'nın verdiği gibi), o zaman kaynak dil içine gömülürse, kaynak dilde yeni bir şey olmadığını iddia edebiliriz. Bildiğimiz ve sevdiğimiz hedef dilin sadece bir parçası. Sadece sözdizimsel şekerdir. Bu nedenle, belirli hedef dillerin mükemmel olduğunu belirlemek için insanlar tarafından tamamen soyut çeviriler verilmektedir. Ayrıca bazen başa çıkmak için büyük veya karmaşık bir dili olan insanlar tarafından verilir. Dolayısıyla, bunun için bir anlambilim tanımlamak yerine, onu bir ana dile çevirir ve daha sonra ana dile anlambilim kazandırırlar. Örneğin, Haskell raporu bunu yapar. Ancak bu çevirilerin tam olarak çıkarılması nadiren kanıtlanmıştır çünkü kaynak diller büyük ve karmaşıktır. İnsanlar çevirinin iyi olduğuna inanıyor.

Bir kez daha bunun derleyicilerle ilgisi yok. Derleyiciler nadiren yeterli veya tamamen soyuttur. Ve olmalarına da gerek yok! Bir derleyicinin tek yapması gereken, tüm programların yürütme davranışını korumaktır. Bir derleyicinin hedef dili genellikle çok büyüktür, bu da denkliği bozabilecek çok sayıda içeriğe sahip olduğu anlamına gelir. Bu nedenle, kaynak dildeki eşdeğer programlar derlendiğinde neredeyse hiçbir zaman bağlamsal olarak eşdeğer değildir.


Gerçekten tam olarak "anladığımız" herhangi bir dil olmadığını söyleyerek ne demek istiyorsun?
Martin Berger

Kimsenin henüz yapıcı bir kanıt yöntemini temsil eden bir anlamsal model üretmediğini söyleyerek ne demek istiyorsun?
Martin Berger

1
Maalesef, "çeviriler" ile ilgili çıkarımlar, önceki metninize kıyasla bana yanlış geliyor. Diyelim ki, PCF M≅N⟹τ (M) ≅τ (N) için tam soyutlama ister (τ, anlamsal anlambilimdir ve sembolleri değiştirme ihtiyacını göz ardı ederek): dediğiniz gibi, "Tam soyutlama, iki terim gözlemsel olarak eşdeğerdir, anlamsal modelde aynı anlama sahiptirler ". Ama imalarınız başka bir yoldur (yani τ (M) ≅τ (N) ⟹M≅N yazıyorsunuz)! Yoksa çeviriler anlamsal anlambilimden farklı mı çalışıyor?
Blaisorblade

1
@Blaisorblade: Kesinlikle haklısın! Cevabımın metninde bir düzeltme yaptım.
Uday Reddy

1
Tam soyutlama, dil düzeyinde güvenlik ve potansiyel olarak diller arası entegrasyon için de ilgi çekicidir. Yani, hedef dildeki hiçbir şeyin kaynak dilin soyutlamalarını ihlal edemeyeceğini bilmek faydalıdır.
dmbarbour

5

Özet: tam bütünlük, yorumlama işlevinin sadece tam değil, aynı zamanda programlara da yönelik olduğu anlamına gelir. Tam soyutlamanın süreklilik için bir şartı yoktur.

[[.]]

  • A[[A]]

  • Γ[[Γ]]

  • ΓP:α[[Γ]][[P]]:[[α]]

[[.]]

PSQ     iff     [[P]]T[[Q]]

P,QST

PΓ,αSQ     iff     [[P]][[Γ]],[[α]]T[[Q]]
Γ,α,P,Q[[.]]

[[.]]

[[.]][[Γ]]Q:[[α]]ΓP:αQ=[[P]][[.]]

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.