'Taktikler' ispat asistanlarında nasıl çalışır?


44

Soru: “Taktikler” kanıt yardımcılarında nasıl çalışır? Bir terimin eşdeğer bir terime nasıl yeniden yazılacağını belirten yollar gibi görünüyorlar (bazı 'eşdeğer' tanımları için). Muhtemelen bunun için resmi kurallar vardır, ne olduklarını ve nasıl çalıştıklarını nasıl öğrenebilirim? Beta azaltma seçiminden daha fazlasını içeriyor mu?

İlgi alanım hakkında arka plan: Birkaç ay önce resmi matematik öğrenmek istediğime karar verdim. Tip teorisi ile gitmeye karar verdim, çünkü ön araştırmadan, Doğru şeyler yapmanın yolu (tm) ve büyüleyici olan programlama ve matematiği birleştiriyor gibi görünüyor . Sanırım nihai amacım Coq gibi bir ispat asistanını kullanmak ve anlayabilmek. (Özellikle matris türlerini temsil etmek gibi şeyleri merak ederken bağımlı türler kullanabildiğimi düşünüyorum). Çok az şey bilmeye başladım, basit işlevsel programlama bile değil, ama yavaş ilerliyorum. Çok çeşitli Türler ve Programlama Dilleri (Pierce) parçaları okudum ve anladım ve Haskell ve ML'yi öğrendim.


1
Bu, Coq video eğitimlerim için utanmaz bir reklamdır, math.andrej.com/2011/02/22/…
Andrej Bauer

Yanıtlar:


36

Temel taktik ya çalıştırmak ileri ve geri hareket çıkarım kuralı (örneğin, dönüştürme hipotez ve içine veya dönüştürme hedefi iki gol içine veABABABABAynı hipotezlerle), bir lemma uygulayın (fonksiyon işlevi), bazı indüktif tipler hakkında bir lemayı her bir yapıcı için bir kutuya böyleyiniz. Temel taktikler, uygulandıkları bağlama bağlı olarak başarılı veya başarısız olabilir. Daha gelişmiş taktikler, temel taktikleri çalıştıran, amaç ve / veya varsayımlardaki terimler üzerinde desen eşleştirmesi gerçekleştiren, taktiklerin başarısı veya başarısızlığına dayalı seçimler yapan ve benzeri şeyler yapan küçük işlevsel programlar gibidir. Daha gelişmiş taktikler, aritmetik ve diğer spesifik teoriler ile ilgilidir. Coq'un taktik dili hakkındaki ana makale şudur:

  • D. Delahaye. Sistem Coq için bir Taktik Dil . Programlama ve Otomatik Muhakeme için Mantık Bildirilerinde (LPAR), Reunion Adası, Bilgisayar Bilimleri Ders Notları 1955, sayfa 85–95. Springer-Verlag, Kasım 2000.

Temel taktik özünü oluşturan biçimsel kurallar Coq kullanıcıları kılavuzunda belirtilen buraya veya 4. Bölümünde pdf .

Taktikleri ve taktikleri (aslında argüman olarak diğer taktikleri alan taktikler) uygulama konusunda oldukça öğretici bir makale:

Coq'un taktik dili, bununla yazılmış ispatların elle yapılan ispatlara benzemesine sınırlama getirmiştir. Daha net kanıtlar sağlamak için birçok girişimde bulunuldu. Bunlar Isar (Isabelle / HOL için) ve Mizar'ın ispat dilini içerir.

Bir yana: ML programlama dilinin aslen LCF teoremi kanıtlayıcı taktiklerini uygulamak için tasarlandığını da biliyor muydunuz ? ML için geliştirilen türden bir çıkarım gibi birçok fikir modern programlama dillerini etkiledi.


3
Mükemmel cevap. Adam Chlipala'nın Bağımlı Türlerle Sertifikalı Programlaması ( adam.chlipala.net/cpdt ) Coq'ta taktiklerin kullanımıyla ilgili bir başka iyi kaynaktır.
jbapple

16

LCF gerçekten tüm bu sistemlerin büyük babasıdır: ML programlama dili de dahil olmak üzere Coq, Isabelle, HOL'ler (bugün OCaml, SML ve F # olarak görüyoruz). Evet, Coq'u daha büyük LCF ailesinin bir üyesi olarak dahil ediyorum. ABD-Amerikan ispat asistanlarıyla (özellikle ACL2) ya da tamamen alakasız Mizar'la karşılaştırıldığında, Coq kültürel olarak Isabelle ve HOL'lere, özellikle de paylaşılan taktikler fikri nedeniyle oldukça yakındır .

Öyleyse, yeniden yazma, dönüşüm, bağdaştırıcı tanıtımı veya ortadan kaldırılması ile ilgili yanlışlıkla yapılan gözlemlerden sıyrılan taktikler neler?

Buradaki ana katmanlama prensibi Milner'ın LCF'sinden miras alınmıştır:

  • thmÖzgün çıkarımlar (ileri akıl yürütme), ya orijinal LCF yaklaşımında soyut veri türü olarak ya da ailenin Tip-Teori dalında ispat terimlerinin ayrı ayrı kontrol edilmesiyle (Coq, Matita). Bu , kanıtlayıcının teorem olarak kabul ettiği sonuçlar için size mantıklı bir temel sağlar. Böylece, ⊢ A ve ⊢ B alan ve size ⊢ A ∧ B veren ilkel bir çıkarımız olabilir. Başka bir ilkel çıkarım size beta t = u verir, burada u normal t şeklidir. Bu mekanizmaların hiçbiri taktik değil, standart mantıkta olduğu gibi çıkarım kuralları .

  • Hedefe yönelik kanıt (geriye doğru muhakeme). Fikir, rafine ederek, "çözülene kadar, daha fazla alt-ambarlara, alt-gazları kapatmaya", "hedef durum" kavramına odaklanmandır. Hedef durumunu bitirmek, işlemden çıkacak belli bir teoremi ortaya koyacaktır. LCF hala HOL'lerde bulunan hedefler için bazı ekstra mantıksal altyapı sunmuştur: taktik bir amacı geliştiren ve iyileştirme için bazı gerekçeler üreten bir ML işlevidir. İspatın en sonunda, yukarıda çizilen ilkel çıkarımlara göre ileri doğru bir kanıt üretmek için gerekçeler ters sırada tekrarlanır.

Coq ve Matita hala bu LCF ilkesine oldukça yakın. Isabelle burada farklı: 1989'un başlarında, Larry Paulson, burada Isabelle'in "Saf" mantıksal çerçevesi olan mantığa daha yakın olmaları için hedef ve taktik kavramlarını değiştirdi. Isabelle / Pure, implikasyon ==> ve nicelik belirteci ile minimum düzeyde sipariş mantığı sağlar! hem doğal kesinti kurallarının yapısını hem de hedef durumlarını gösterir.

Örneğin, ⊢ A ==> B ==> A ∧ B, mantıksal çerçevenin teoremi olarak birleşik giriş kuralıdır (nesne mantığının).

Hedef durumları, aynı zamanda, C, claim X ==> Y ==> Z ==> C olan, orta seviyelerde ⊢ X ==> Y ==> Z ==> C olarak rafine edilmiş olan, ilk isteminiz C için ⊢ C ==> C ile başlayan teoremlerdir. Geçerli alt hedefler ve işlem ⊢ C ile bitiyor (alt hedef yok).

Şimdi, tüm bu kanıtlar için daha tekdüze olan taktiklere geri dönelim: bir miktar gol durumu kavramı (örneğin yukarıdaki Isabelle), taktik bir hedef durumu (0, 1 veya daha fazla) izlemeye yönlendiren bir fonksiyondur. hedef durumları. Ayrıca, bir taktik , örneğin sıralı kompozisyonu, seçimi, tekrarı vb. İfade etmek için bu taktik fonksiyonların bir birleştiricisidir. Aslında, taktiklerin ve taktiklerin dili, ayrıştırıcı birleştiricilerin "başarı listesi" yaklaşımıyla ilgilidir.

Taktikler, belirli hedef iyileştirme stratejilerini sistematik olarak tanımlamayı sağlar. 1970/80-lerdeki LCF'deki icatlarından bu yana oldukça başarılı oldular, ancak meşhurce okunamayan ispat senaryoları ürettiler.

Taktik dillerin bazı yönlerine kısa bir genel bakış, makalede A. Asperti ve arkadaşları, PLMMS 2009 tarafından verilmiştir, atölye çalışmaları için bkz .

Mizar ve Isabelle / Isar, insan tarafından okunabilir yapılandırılmış mantığa alternatif yaklaşımlar olarak bahsedilmiştir ve bu anlamda taktiklere dayanmazlar. Mizar, LCF ailesi ile ilişkili değildir, bu yüzden bu taktik terminolojiyi bilmiyor. Isabelle / Isar taktik geleneği bir dereceye kadar içeriyor, ancak ispat yöntemi kavramı biraz daha yapılandırılmış (açık Isar kanıtı bağlamı, zincirleme gerçeklerin açıkça gösterilmesi ve muhakeme sürecinde iç hedef saldırılarının önlenmesi ile).

Geçtiğimiz yıllarda çok daha fazla reform ve taktiksel dilin yeniden gözden geçirilmesi gerçekleşti. Örneğin, son zamanlarda Coq topluluğunun bir kolu, geleneksel Ltac yerine SSReflect'i (G. Gonthier) destekliyor.


12

'Taktikler' ispat asistanlarında nasıl çalışır?

Bu cevabın biraz karışık olacağını düşünüyorum.

Birincisi, "kanıt yardımcılarında taktiklerin nasıl çalıştığını" sormak yeterli değildir, çünkü farklı kanıt yardımcılarında farklı çalışırlar. Bugün kullanılan iki ana asistan sınıfı vardır: Isabelle, HOL ve HOL gibi orijinal LCF'den türetilenler ve Coq ve Matita gibi teoriye dayalı kanıt asistanları. Bu iki farklı ispat yardımcısı sınıfında, taktikler farklı şekillerde çalışır, örneğin Isabelle'deki kaputun altında olanların bir yansıması, örneğin Matita'daki kaputun altında olanlardan oldukça farklıdır.

Kendinize sorun: Matita'da bir önerme P kanıtlamaya çalıştığımızda neler oluyor? P türüyle metavariable bir X tanıtıyoruz. Daha sonra, tam bir lambda terim elde edinceye kadar (yani başka bir meta değişken içermeyen), X terimini değiştirdiğimiz, tamamlanmamış terime gittikçe daha fazla yapı ekleyen bir oyun oynuyoruz. Tam bir lambda terimine sahip olduktan sonra, P'ye göre kontrol ederek gerekli türe uyduğundan emin olarak yazıyoruz. Daha sonra, Coq ve Matita'da bir taktiğin, yalnızca tamamlanmamış ispat terimlerinden eksik ispat terimlerine kadar bir işlev olduğunu ve uygulama sonrası terime biraz yapı ekleyeceğini umuyoruz (bu gözlem, örneğin Jojgov tarafından son zamanlarda yapılan çalışmaları biraz motive etti. , Pientka ve diğerleri).

Örneğin, Matita taktiği "intro", mevcut terim üzerinde bir lambda-soyutlama, "vakalar" terimde bir eşleşme ifadesi sunar ve "uygula" bir terimin diğerine bir uygulama getirmesini sağlar. Bu temel taktikler, daha karmaşık fonksiyonlar yaratmak için üst düzey fonksiyonlar kullanılarak birbirine bağlanabilir. Temel fikir her zaman aynıdır: taktik her zaman tamamlanmamış bir ispat terimine bir miktar yapı eklemeyi amaçlamaktadır.

Unutmayın ki, uygulayıcılar her taktik uygulamadan sonra tekrar kontrol eden bir terim vermeyi amaçlamaktadır. Kesinlikle, onların teoriye dayalı kanıt asistanları için tek önemli olan, kullanıcı kanıtı Qed'e geldiğinde, teklif P'de yaşayan bir ispat terimine sahip olduğumuz olduğu için, bunu yapmalarına gerek yoktur. Bu ispat terimine vardığımızda büyük ölçüde alakasız. Bununla birlikte, hem Coq hem de Matita, kullanıcıya her taktiksel uygulamadan sonra yazım denetimi yapan bir (muhtemelen eksik) ispat terimini geri vermeyi amaçlamaktadır. Yine de, bu değişmez, özellikle CIC temelli kanıt asistanlarının uygulamak zorunda olduğu iki sözdizimsel kontrol ile ilgili olarak başarısız olabilir (ve çoğu zaman).

Özellikle, açık bir hedef kalmamış olana kadar bir dizi taktik uygulayarak, geçerli bir kanıt gibi görünen şeyleri gerçekleştirebiliriz. Daha sonra Qed'e sözde kanıtı geldik, yalnızca Matita'nın sonlandırma denetleyicisinin ya da katı pozitifliği denetleyicisinin şikayetçi olduğu için, taktikler tarafından oluşturulan ispat terimi bu sözdizimsel denetimlerden birini geçersiz kıldığı için (yani, argüman konumunda metavaridiler) geçersiz kıldığını iddia ettik. özyinelemeli bir çağrı, orijinal argümandan sözdizimsel olarak daha küçük olmayan bir terimle başlatıldı). Bu, CIC tipi teorisinin bir anlamda "yeterince güçlü" olmadığı ve türlerindeki pozitifliği veya boyut sözdizimsel gerekliliklerini yansıtmadığıdır (Abel'in boyutlu tiplerini motive eden bir gözlem ve pozitifliği türleri üzerinde bazı yeni çalışmalar) ).

Öte yandan, LCF tarzı kanıt yardımcıları oldukça farklıdır. Burada çekirdek, "thm" soyut türünü içeren ve genellikle "ML" değişkenini "thm" ile "thm" eşleştiren, prova asistanının mantığının çıkarım kurallarını uygulayan işlevler içeren bir modülden (genellikle bir ML değişkeninde uygulanır) oluşur. ileri. "Thm" türünde bir değer oluşturmanın tek yolunun bu çıkarım kuralları (temel taktikler) olmasını sağlamak için ML yazma disiplinine güveniyoruz. Isabelle'in çekirdeği burada .

Provalar daha sonra bu temel taktiklerin (veya daha karmaşık, daha büyük taktiklerin bir dizi uygulamasından oluşur, bunlar daha yüksek dereceli fonksiyonlar kullanarak daha basit taktikleri bir araya getirerek yapılır - Isabelle'de, taktiksel olarak adlandırılan yüksek dereceli fonksiyonlar, burada görünmek ). Tip teorisi temelli prova asistanlarının aksine, açık bir prova terimi tanığının etrafında kalması için bir LCF stili asistana gerek yoktur. İspatın doğruluğu inşaat tarafından garanti edilir ve ML'nin yazma disipline olan güvenimiz (örneğin, birçok asistan, örneğin ispatları için ispat terimleri üretir).

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.