Boole cebiri basitçe yazılan lambda caclulus ile ifade edilebilir mi?


15

Boole cebri, bu şekilde (örneğin) türetilmemiş lambda hesabında ifade edilebilir .

true  = \t. \f. t;
false = \t. \f. t;
not   = \x. x false true;
and   = \x. \y. x y false;
or    = \x. \y. x true y;

Ayrıca boolean cebir Sistem F kodlanmış olabilir bu şekilde :

CBool = All X.X -> X -> X;
true  = \X. \t:X. \f:X. t;
false = \X. \t:X. \f:X. f;
not   = \x:CBool. x [CBool] false true;
and   = \x:CBool. \y:CBool. x [CBool] y false;
or    = \x:CBool. \y:CBool. x [CBool] true y;

Basitçe yazılmış lambda hesabında boole cebirini ifade etmenin bir yolu var mı? Cevabın HAYIR olduğunu varsayıyorum. ( Örneğin, Öncül ve listeler basitçe yazılan lambda hesabında temsil edilemez .) Cevap gerçekten HAYIR ise, basit bir sezgisel açıklama var, neden basit yazılan lambda hesabında booleanları kodlamak imkansızdır?

GÜNCELLEME: Baz tipleri olduğunu varsayıyoruz.

GÜNCELLEME: Açıklamanın olumsuz yanıtı burada bulundu (Yorum "İşte ürünlere ve sonsuz sayıda baz tipine sahip basit tipli lambda hesabının boole içermediğini gösteren bir kanıt taslağı.") Aradığım şey bu.


2
Tanımları Haskell'e yazmayı deneyin ve çeşitli ifadelere türler verdiğinizde ne olacağını görün. Kodun büyük ölçüde polimorfizme dayandığını göreceksiniz.
Dave Clarke

2
Bilgiçlikten ötürü özür dileriz, ancak bunun veya analizin ifadesi ile ilgili sorular, bu terimleri anlamanın birden fazla makul yolu olduğu için, yalnızca "ifade edilen", "kodlanan" ve "temsil edilen" ile ne demek istediğinizi net bir şekilde anlayarak anlam kazanır. Dahası, temel türlerin varlığını şart koştuğunuz için, bunların ne olduğu ve hangi inşaatçılar / yıkıcılar ile birlikte geldikleri konusunda spesifik olmanız gerekir.
Martin Berger

3
Bilgiçlik olmadığım için üzgünüm. Yanıt burada bulundu: math.andrej.com/2009/03/21/…
Ilya Klyuchnikov

3
Böyle şık bir blog çalıştırmak için biraz kredi almalıyım gibi hissediyorum :-)
Andrej Bauer

7
ÖB=ÖÖÖtrue=λx:Ö.λy:Ö.xfbirlse=λx:Ö.λy:Ö.ynÖt=λbir:B.λx:Ö.λy:Ö.biryxbirnd=λbir:B.λb:B.λx:Ö.λy:Ö.bir(bxy)yÖr=λbir:B.λb:B.λx:Ö.λy:Ö.birx(bxy)

Yanıtlar:


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.