Carnap Hakkında
“Soyut dilsel biçimlerin kabulü ya da reddi, tıpkı herhangi bir bilim dalındaki diğer herhangi bir dil biçiminin kabulü ya da reddi gibi, nihai olarak, elde edilen sonucun gereken çabanın miktarı ve karmaşıklığına oranı yani araç olarak verimlilik tarafından kararlaştırılır. Pratik kullanımdaki başarılarını veya başarısızlıklarını test etmek yerine, belirli dil biçimlerine dogmatik yasaklar koymak, yararsızdan daha kötüdür; kesinlikle zararlıdır çünkü bilimsel ilerlemeyi engelleyebilir.
... Herhangi bir araştırma alanında çalışanlara yararlı buldukları herhangi bir ifade biçimini kullanma özgürlüğü tanıyacağız; sahada çalışmak hiçbir yararlı işlevi olmayan biçimlerin er ya da geç ortadan kaldırılmasına yol açar. Dikkatli olmak istiyoruz: iddialarda bulunurken ve onları incelerken eleştirel ama dilsel biçimleri kabul ederken hoşgörülü olmak istiyoruz.”
Carnap, formel diller, mantık ve anlambilim oluşturmak ve keşfetmek için ücretsiz ve açık kaynaklı bir Haskell yapısıdır. Dilleri hızlı ve kolay bir şekilde tanımlamanıza, bu diller için mantıklar oluşturmanıza ve anlamlarını belirlemenize olanak tanır. Ardından Carnap, yarattığınız mantığı kullanarak çeşitli formel dizgelerde kanıtları nasıl denetleyeceğinizi, bileşik ifadelerin anlamlarını nasıl bulacağınızı ve çok daha fazlasını bulmak üzere kendi tanımladığınız yönergeleri kullanır.
Tanıtım
Carnap ile yapabileceklerinize birkaç küçük örnek:
Bu, önermeler mantığında kullanılan Kalish ve Montague Dizgesine uygun bir kanıt kutusudur. Kanıt kutusuna yazarak kanıtlamayı doğrudan değiştirebilir ve sağ taraftaki çizgi süslemeleri üzerinde fareyi gezdirerek yaptığınız değişikliklerin etkilerini görebilirsiniz.
Bu, geliştirilmekte olan kanıtlamanın yapısını görsel olarak da gösteren, önermeler mantığında kullanılan Kalish ve Montague Dizgesine uygun yorumlamalı bir kanıt kutusudur.
Bu, Hardegree'in Montague Dizgesi çeşitlemesine uygun yorumlamalı bir kanıt kutusudur.
Bu, The Logic Book adlı yapıttaki kuralları kullanan ve kanıtlamanın yapısını görsel olarak Fitch tarzında yorumlayan Fitch dizgeli bir kanıt kutusudur.
Bu, Russell Teoreminin bir kanıtlamasını gösteren, birinci basamak mantığı için Kalish ve Montague dizgeli bir kanıt kutusudur.
Bu, Deductive Logic adlı ders kitabındaki Goldfarb'ın Lemmon tarzındaki doğal türetimli kanıtıdır..
İşte bir üçgenin kenarlarının açıortaylarının her zaman bir noktada buluştuğunun bir kanıtı (bir noktanın bir parçanın, ancak ve ancak o parçanın uç noktalarından eşit uzaklıktaysa o parçanın açıortayı üzerinde olduğu varsayımından hareketle). "F(x,y)” "x, y üzerindedir"; “g(y,z)” "y ve z tarafından verilen segmentin açıortayı"; “h(x,z)” "x ile z arasındaki mesafe" ifadelerinin kısaltmalarıdır.
(Değişkenlerin sayısı yüzünden bunun, başlangıçta yüklenmesi zaman alabilir. Bir kere yüklendikten sonra değişikliklere hızlıca tepki verecektir.)
İşte Russell teoreminin iki kanıtı daha, bu sefer P.D. Magnus'un ücretsiz ve açık ders kitabı Forall x 'den dizge QL'nin bir versiyonunu ve Forall x'in Calgary Remix 'inden FOL dizgesini kullanıyoruz. Formüllerin ayrıştırılma şeklini (yüklemlere yönelik argümanların etrafındaki parantezleri düşürürek) Forall x'in görüntü tarzına uygun düşmek için değiştirmiş olduğumuzu unutmayınız.
Bu, bir yüklem soyutlama kuralı kullanarak bir kavrama kalıbı örneğinin nasıl kanıtlandığını gösteren Birli İkinci Basamak Mantık için Kalish ve Montague dizgeli bir kanıt kutusudur.
Bu, yine bir yüklem soyutlama kuralından yararlanan keyfi (sonlu) Çoklu İkinci Basamak Mantık dizgesi içerisinde her ilişkinin bir tersinin olduğunun kanıtıdır.
Bu, bir temel küme teorisi dizgesinde bir geçişli kümenin kuvvet kümesinin geçişli olduğunun bir kanıtıdır (alıştırma 3, bölüm 3.3 Velleman'ın Deductive Logicadlı kitabından).
İşte Hardegree'nin Modal Logictarzında, K5 ve KTB önermeli kipler mantığının doğal türetim dizgeleri içinde aksiyom 5 ve B'nin kanıtları..
Bunlar, daha güzel görünen mantıksal semboller için Fira Logic 'i kullanır ve her bir alt kanıtın kapsamını görsel olarak belirtmeye yardım eden korumalar kullanır.
İşte, Hardegree'nin Modal Logicadlı yapıtındaki MPL dizgesine dayanan, naifçe nicelleştirilmiş kipler mantık dizgesi içindeki Barcan Formülünün bir kanıtı. .
Carnap, ProofJSsayesinde dizili kalkülüsteki kanıtları destekler. . Desteklenen dizgeler arasında, Gentzen'in orijinal LK ve LJ'sinin önermeler ve birinci basamak çeşitlemeleri bulunmaktadır.
Carnap ayrıca bir JSON API'si içerir, bu da tarayıcı içi kanıt denetimi için geri planda Carnap kullanan saf JavaScript GUI'leri oluşturmayı mümkün kılar. İşte size Kevin Klement'in, P.D. Magnus'un Forall x dizge SL'ni kullanan forallx kanıt denetleyicisinden uyarlanmış böyle bir GUI örneği.
Carnap Ne İşe Yarar?
Carnap'ı eğitimcilerin, öğrencilerin ve mantık üzerine çalışan araştırmacıların kullanması amaçlanmaktadır. Carnap, eğitimcilerin etkileşimli alıştırmalar ve öğretim materyalleri oluşturmasını ve öğrencilerin neyin ne olduğunu belirlemek için anlamsal ve sözdizimsel yöntemleri öğrenirken hızlı ve yararlı geri bildirim almalarını mümkün kılar. Carnap, ayrıca alışılmışın dışında biçimsel dizgelerle ilgilenen araştırmacıların bilgisayar destekli mantıksal araştırma için kanıt denetimi ve anlamsal araçları hızla prototip haline getirmelerini sağlar.
Carnap'ı şu anda nasıl kullanabilirim?
Carnap'ı kendi sınıfınızda mantık öğretmek için kullanabilirsiniz!
Tek yapmanız gereken bir hesap oluşturmak ve ardından eğitmen olarak kaydolmak için iletişime geçmek.
Eğitimci olduğunuzda, dersinizi yürütmek ve ödevlere otomatik olarak not vermek için şu anda bulunduğunuz carnap.io adlı bu siteyi kullanabilirsiniz.Burada barındırılan ücretsiz ders kitabından problemleri öğrencilerinize verebilir veya kendi ders kitabınızı kullanabilir ve kendi tercih ettiğiniz dizge için otomatik olarak puanlanmış problem setleri oluşturabilirsiniz. Carnap şu anda doğruluk tablolarının, çevirinin ve ayrıştırma alıştırmalarının yanı sıra Kalish ve Montague'nün Logic Bergmann ve Moore'un Logic Book Hardegree'nin Modal Logic P.D. Magnus'un Forall x ve Forall x'in Calgary Remix'i adlı yapıtlarındaki biçimsel dizgelerle uyumlu türetimleri desteklemektedir. . Ancak, projenin tutkusu azami ölçüde kapsayıcı olmaktır. Bu nedenle, favori dizgeniz desteklenmiyorsa bize bildirin, onu da eklemeye çalışalım.
Olası eğitimciler için yardımcı belgeler burada bulunabilir.
Neden “Carnap”?
Carnap, adını yukarıda alıntılanan filozof Rudolf Carnap'tan almıştır.
Carnap (filozof) mantığa hoşgörülü ve deneysel bir yaklaşımın savunucusuydu. Carnap (program) tasarımı gereği çoğulcudur. Çıkarım kuralları bildirimsel olarak belirtilir ve belirli bir dil için zaten sağlananlara yeni mantıklar eklemeyi kolaylaştırır. Çıkarımların doğru olup olmadığını denetlemeye yönelik algoritmaların çok çeşitli dillere uygulanabilir olması yeni dillerin tanıtılmasını kolaylaştırır.
Carnap'ın (filozof) mantıksal tipler ve onları görmezden gelmenin sizi pek iyi çalışmayan inançlarla nasıl baş başa bırakabileceği hakkında da söyleyecek çok şeyi vardı. Carnap (program), kodun doğruluğunu sağlamak için bir mantıksal tipler teorisi kullanan, duruk yazımlı arı işlevsel bir programlama dili olan Haskell'de yazılmıştır.
Kim Carnap'ı Kullanır?
Carnap ilkin Kansas Eyalet Üniversitesi'nde geliştirilmişti, ancak artık dünya çapında düzinelerce kolej ve üniversitede kullanılıyor. İşte (tamamlanmamış) bir liste:
- Arizona State University
- Bard College at Simon's Rock
- Boise State
- Brigham Young University
- California State University, Chico
- California State University, Northridge
- Institute of Philosophy, University of Zielona Gora, Poland
- Kansas State University
- McGill University
- Mississippi State University
- Northwestern University
- Old Dominion University
- Pacific University
- Pepperdine University
- Pontifícia Universidade Católica do Rio de Janeiro (PUC-Rio), Brazil
- Tarleton State University
- The American University in Cairo
- The University of Alabama at Birmingham
- University at Albany, State University of New York
- University of Calgary
- University of California, Davis
- University of California, San Diego
- University of California, Santa Cruz
- University of Cincinnati
- University of Illinois at Chicago
- University of Illinois, Urbana Champaign
- University of Michigan, Ann Arbor
- University of Puget Sound
- University of Victoria
- University of Wisconsin, Madison
Carnap Nasıl Çalışır?
İşin aslı, bu bir parça teknik bir konu. İşin içinde birkaç farklı el becerisi var.
Esasen Haskell'in yazım dizgesi, farklı sözlük kategorilerini veri türleri olarak temsil etmeyi, ( bu yazıdaanlatılan yönteme benzer bir şey kullanarak) bu sözlüksel kategori veri tiplerini bir sözlüğü temsil eden daha büyük bir veri tipinde birleştirmeyi ve bir sözlüğün farklı öğelerinin dilbilgisel bir şekilde birbirine uygulanmasının sonucu olarak bir dili tanımlamayı olanaklı kılar.
Sonuç olarak, Carnap'ı kullanarak, önceden tanımlanmış sözcük kategorilerini bir araya getirmenin sonucu olarak bir dil tanımlayabilirsiniz. Haskell'in yazım öbekleri sayesinde, dilleriniz, kurucu sözlük kategorilerinin kendileriyle birlikte taşıdığı çeşitli yararlı özellikleri miras alacaktır (örneğin, Boolecu eklemler için sözcük kategorisi içeren diller, "ve" simgesinin nasıl ayrıştırılacağını ve görüntüleneceğini veya bağlaçlarının anlamsal değerlerinden bir tümel evetlemenin anlamsal değerinin nasıl hesaplanacağını otomatik olarak bilir). Ayrıca Haskell'in duruk yazımı ve sözcük kategorilerini tipler olarak temsil etme becerisi nedeniyle, programı derlemeye çalıştığınızda dilbilgisine aykırı bir ifadeyle sonuçlanabilecek herhangi bir programlama hatasının algılanacağı garanti edilir.
Geniş bir dil öbeğini (sözcük kategorilerini bir araya getirmenin sonucunda) tek tip olarak temsil ederek, aynı zamanda onları tek tip olarak manipüle edebiliyoruz. Özellikle, değişken değiştirimi, anlamsal değerlendirme, β-normalleştirme, yüksek dereceli birleştirme gibi şeyler için tamamen genel algoritmalar kullanabiliriz… sözgelimi, yalnızca kabul edilebilir çıkarım kuralları bildirimini kullanarak kanıtların doğruluğunu denetlemek gibi gereksinim duyduğunuz tüm iyi şeyler. Sonuç olarak bu algoritmalar için sadece bir kez kod yazmamız yeterli; daha sonra bu kodu Carnap çerçevesinde tanımlanabilecek herhangi bir dilde otomatik olarak kullanabiliriz.
Yani işin özü bu. Ayrıntılar hakkında daha fazla bilgi edinmek isterseniz kodu inceleyebilir, bir geliştiriciyle konuşabilir veya bu makaleyegöz atabilirsiniz..
Nasıl Katılabilirim?
Carnap'ı desteklemek istiyorsanız, lütfen bizi Github'da yıldızlamayı unutmayınız. . Önerileriniz, özellik istekleriniz veya hata raporlarınız varsa Github'da sorun oluşturabilirsiniz. Genel sorular veya tartışmalar için bize, Matrix 'ten, IRC'ye köprülü ircs://irc.libera.chat:6697/carnap adresinden veya e-postaüzerinden de ulaşabilirsiniz. .
Projeye kod katkısı vermek isterseniz (yeni bir birleştirme algoritmasından, bir CSS ince ayarına veya pandoc şablonuna kadar herhangi bir şey) Github'da bir çekme isteğine koymanız yeterlidir!