Yazan : Şadi Evren ŞEKER
Bilgisayar bilimlerinin de aralarında bulunduğu, başta felsefe olmak üzere, matematik ve dilbilim gibi alanlarda kullanılan bir mantık modelidir. Bu modelin özelliği kıyas ve tümden gelim yaklaşımına göre ispatlanabilir özellikte olmasıdır (deductive). Yani bir makine, veya matematiksel model tarafından bu mantık modelindeki gösterimlerin ispatlanması (verification) veya reddedilmesi (falsification) mümkündür.
Birinci derece mantık, literatürde çeşitli isimlerle adlandırılmaktadır. Örneğin, mantığın üzerine inşa edildiği yüklem ve haberlerden(predicate) ismini alan “birinci derece haber mantığı” (first order predicate logic) veya bu mantık üzerinde matematiksel işlemlere izin vermesinden dolayı birinci derece yüklem aritmetiği (first order predicate calculus) veya yine birinci derece kelimesinin sebebi olan ve mantıkta kaziyeler mantığına (önermeler, propositional logic) yakın olması dolayısıyla alçak haber mantığı (lower predicate calculus) isimleri gibi farklı isimler verilmektedir.
Birinci derece mantığın, klasik kaziye mantığından (önermeler mantığı, propositional logic) en önemli farkı, bu mantıkta kullanılan niceleyicilerin (quantifiers) veya bilgisayar bilimleri gözüyle değişkenlerin (variable) belirli bir tanım alanlarının olmasıdır (domain). Dolayısıyla birinci derece mantıkta yapılan modellemelerde kullanılan bütün niceleyiciler tanımlı bir alanda geçerlidir ve mantık modellerimiz bu alan için doğru veya yanlış olarak işlenir.
Bu tanımlı olma özelliğinin getirdiği bir zafiyet olarak, birinci derece mantıkta sonuz kümeler olan, doğal sayılar veya Kartezyen uzay gibi varlıkların modellenmesi ve çözümlenmesi mümkün olmamaktadır. Bu tür sonsuzluk içeren modellemeler için ikinci derece mantık (second order logic) benzeri daha kuvvetli mantık modellemelerinden yararlanmak mümkündür.
Haber mantığından birinci derece mantığa geçiş
Birinci derece mantık konusunu anlamak için öncelikle klasik, kaziyeler mantığının (propositional logic) nasıl çalıştığını hızlıca hatırlayalım.
Örneğin “Şadi mühendistir.” cümlesi, klasik mantık açısından bir kaziyedir (önermedir) ve doğru veya yanlıştır.
Benzer şekilde “Ali mühendistir.” Cümlesi de klasik mantık açısından bir kaziyedir ve tek başına ele alınarak doğruluğu veya yanlışlığı ortaya konulabilir.
Ancak klasik kaziye mantığında bu iki ayrı cümle (kaziye veya önerme) yine bu mantıkta tanımlı olan klasik işlemler (operators) dışında birleştirme ve modelleme yapılamaz.
Örneğin bu önermelerden birisine p ve diğerine q sembolü verilip mantıkta bulunan aşağıdaki durumlar modellenebilir:
p ⇒ q (Şadi mühendis ise Ali de mühendistir)
p ∧ q (Şadi de Ali de mühendistir)
p ∨ q (Şadi veya Ali mühendistir)
¬ p (Şadi mühendis değildir)
Yukarıdaki bu modeller sonuçta doğru (True (T) ) veya yanlış (False (F, ⊥ )) sonuçlarından birisini üretir.
Birinci derece mantık, yukarıdaki bu modellemeyi öncelikle niceleyiciler (quantifier) üzerine taşır. Bu niceleyiciler, bilgisayar bilimlerindeki değişkenler (variables) olarak düşünülebilirler ve kabaca bir varlığa verilen ve mantık modelinde kullanılan isim olarak tanımlanabilir.
Yukarıdaki “Şadi mühendistir” cümlesini ele alacak olursak birinci derece mantıkta aşağıdaki şekilde göstermek mümkündür:
Şadi (a) ⇒ Mühendis(a)
Modeli okurken “öyle bir “a” vardır ki bu “a”‘nın ismi Şadi’dir ve bu “a” mühendistir” şeklinde okuyabiliriz. Burada kullanılan a bir niceleyicidir (quantifier) ve bu niceleyici üzerinde bir haber(predicate) bildirilmiştir. Bu modelde, klasik modele göre fark net bir şekilde görülmektedir. Tam bu noktada klasik mantıkta soramayacağımız ama birinci derece mantıkta sorulması gereken “bu a nasıl bir a’dır?” sorusu farkı ortaya koyar. Birinci derece mantıkta bu sorunun anlamı, bu bütün a’lar için geçerli midir, anlamındadır. Yukarıdaki tanımda da anlatıldığı üzere birinci derece mantıkta niceleyicilerin (quantifiers) bir etki alanının olması söz konusudur. Yani a ile sembolize edilen bu gösterici acaba her durum için geçerli bir sembol müdür?
Bu sorunun cevabını farkı anlayabilmek için açık bir şekilde hayır diye verebiliriz. Yukarıdaki a niceleyicisi her durumda doğru olsaydı, bütün ismi Şadi olanlar mühendistir sonucuna varılması gerekirdi ki bu doğru değildir.
İşte bu ayrım bize birinci derece mantıkta kullanılan iki önemli sembolü gösterir. Bunlardan birincisi “her” anlamına gelen (∀) sembol iken diğeri “öyle bazı” şeklinde okunabilecek (∃) semboldür.
Yukarıdaki örneğimizi düzenleyecek olursak aşağıdaki gösterim doğrudur ve sonucu da doğrudur:
∃a (Şadi (a) ∧ Mühendis(a)) → Öyle bazı a’lar vardır ki, bu a’nın ismi Şadi’dir ve bu a mühendistir.
∀a (Bilgisayar Mühendisi (a) ⇒ Mühendis(a)) → Bütün a’lar için, a şayet bilgisayar mühendisiyse; a, aynı zamanda mühendistir.
Yine, yukarıdaki gösterim kullanılarak söylenebilecek doğru bir model de aşağıdaki gibi olabilir:
∃a (Şadi (a) ∧ ¬ Mühendis(a)) → Öyle bazı a’lar vardır ki, bu a’nın ismi Şadi’dir ve bu a mühendis değildir.
hocam FOL ile wumpus world de prove u nasıl yapıyoruz ?