Programowanie w Prologu

27.10.2009 - Damian Rusak
TrudnośćTrudność

Logika i Prolog Skąd nazwa Prolog? Otóż jest to skrót od Programowanie Logiczne (fr. Programmation en Logique). Prolog, z matematycznego punktu widzenia, opisuje rachunek predykatów pierwszego rzędu (inaczej logikę pierwszego rzędu). Zachęcamy do zgłębienia tych pojęć. Jest jednak ograniczony do specjalnego rodzaju predykatów.

To, co w Prologu nazwaliśmy faktami i regułami, to właśnie predykaty. W zapisie reguł używaliśmy symbolu ‘:-‘, i mówiliśmy, że mamy tu na myśli implikację logiczną. To jest zgodne z naszymi intuicjami – jeśli zachodzą wszystkie wyrażenia znajdujące się w ciele predykatu, to spełniona jest również głowa predykatu, czyli wyrażenie, które znajduje się przed znakiem ‘:-‘.

Fakty to predykaty złożone jedynie z głowy – zachodzą zawsze.

$ l_{1}\vee \neg l_{2} \vee \neg l_{3} \vee ... \vee \neg l_{n} \:\: \Leftrightarrow \:\: l_{2} \wedge l_{3} \wedge ... \wedge l_{n} \Rightarrow l_{1} $

Klauzule, które występują w Prologu, nazywają się klauzulami Hornowskimi. Co to znaczy? Logika uczy nas, że można przestawić implikację w formie alternatywy. Klauzule Hornowskie to alternatywy, w których co najwyżej jeden element jest niezanegowany. To oznacza, że gdy zamienimy taką klauzulę na implikację otrzymamy albo wyrażenie przypominające prologowe predykaty, z jednym elementem za implikacją, bądź implikację z pustym następnikiem (co rozumiemy jako fałsz logiczny). Drugi rodzaj klauzul na niewiele nam się przyda w Prologu – my chcemy wnioskować, a więc korzystać z formuł tej pierwszej postaci.

Prolog, gdy podajemy mu cel do spełnienia, stara się udowodnić, że głowa podanej klauzuli jest zawsze prawdziwa. Ponieważ ufa on, że informacje o świecie, które mu podaliśmy są prawdziwe, to implikacja w dowolnej klauzuli jest prawdziwa. Stąd, jeżeli udowodni prawdziwość poprzednika implikacji, następnik (czyli głowa) będzie musiał być prawdziwy. To właśnie mechanizm stojący za tworzeniem drzewa wyprowadzenia.

Aby poznać ten język lepiej, należałoby dowiedzieć się, co to unifikacja (odpowiada za ukonkretnianie zmiennych i sprawdzanie, czy można do ustalonych danych zastosować określoną klauzulę), czym jest w Prologu symbol „!”, oraz parę ciekawych rzeczy z dziedziny logiki. Zachęcamy do zapoznania się z licznymi materiałami, dostępnymi w Internecie, na temat Prologu.

5
Twoja ocena: Brak Ocena: 5 (6 ocen)

Copyright © 2008-2010 Wrocławski Portal Informatyczny

design: rafalpolito.com