2 Programowanie w jezyku logiki wprowadzenie

background image

PROGRAMOWANIE W JĘZYKU LOGIKI – WPROWADZENIE

LOGIKA PIERWSZEGO RZĘDU

Symbole języka pierwszego rzędu. dzielą się na:

a) symbole logiczne (wspólne dla wszystkich języków)

– zmienne przedmiotowe: x, y, z, …

– stałe logiczne:

¬ ∧ ∨ → ↔ ∀ ∃

, , ,

,

,

,

– symbole techniczne: ( , )

b) symbole pozalogiczne (zależne od języka)

– symbole relacyjne: P, Q, R, …

– symbole funkcyjne: f, g, h, …

– stałe przedmiotowe: a, b, c, …

(Symbole pozalogiczne całkowicie określają dany język)

Językiem pierwszego rzędu

nazywamy układ

(

)

L

L

L

L

Con

Fun

l

L

ρ

;

;

;

Re

=

taki, że

Re l

L

jest niepustym zbiorem (symboli relacyjnych),

Fun

L

jest zbiorem (symboli funkcyjnych),

Con

L

jest zbiorem (stałych przedmiotowych),

przy czym zbiory

Re l

L

,

Fun

L

i

Con

L

są rozłączne, natomiast

ρ

L

jest funkcją, która każdemu

symbolowi relacyjnemu i funkcyjnemu przyporządkowuje dodatnią liczbę całkowitą, zwaną

arnością tego symbolu.

background image

Wyróżniamy dwie klasy

wyrażeń sensownych

języka

L

:

a)

termy

– wyrażenia nazwowe,

b)

formuły

– wyrażenia zdaniowe.

Termami

języka

L

nazywamy wyrażenia języka

L

określone przez następujące warunki

indukcyjne:

– wszystkie zmienne i stałe przedmiotowe są termami ,

(

)

n

t

t

f

,

,

1

K

jest termem, jeżeli

f

Fun

L

,

( )

ρ

L

f

n

=

oraz

n

t

t

,

,

1

K

są tremami.

Formułami atomowymi

języka

L

nazywamy wyrażenia

(

)

n

t

t

R

,

,

1

K

,

takie że

R

l

L

∈Re

,

( )

ρ

L

R

n

=

a

n

t

t

,

,

1

K

są tremami języka

L

.

Formułami

języka

L

nazywamy wyrażenia języka

L

określone przez następujące warunki

indukcyjne:

– wszystkie formuły atomowe są formułami,

– jeżeli

A

,

B

są formułami, to wyrażenia

( )

¬A

,

(

)

A

B

,

(

)

A

B

,

(

)

A

B

,

(

)

A

B

są formułami,

– jeżeli

A

jest formułą i

x

jest zmienną przedmiotową, to wyrażenia

(

)

∀x A

i

( )

∃x A

są formułami.

background image

KLAUZULE

Literał pozytywny

– formuła atomowa (krótko: atom)

Literał negatywny

– negacja atomu

Literał

– literał pozytywny lub negatywny

Klauzula

– formuła postaci

(

)

n

L

L

L

K

2

1

, gdzie

n

i

L

i

,

,

2

,

1

,

K

=

są literałami.

Przykład klauzuli:

( )

( ) ( )

(

)

(

)

a

y

h

x

f

Q

y

x

P

y

x

,

,

,

Klauzula postaci:

(

)

m

k

B

B

A

A

¬

¬

K

K

1

1

jest równoważna formule

(

) (

)

(

)

m

k

B

B

A

A

¬

K

K

1

1

,

która z kolei jest równoważna formule

(

)

k

m

A

A

B

B

K

K

1

1

.

Formułę tę zapisujemy w postaci:

4

3

4

2

1

K

4

3

4

2

1

K

przeslanka

m

wniosek

k

B

B

A

A

,

,

,

,

1

1

,

przecinki w przesłance (poprzednik implikacji) oznaczają koniunkcje,

przecinki we wniosku (następnik implikacji) oznaczają alternatywy.

Przykład:

klauzula:

( )

( )

(

)

B

y

Q

A

x

P

y

x

¬

¬

zapis:

( )

( )

y

Q

A

B

x

P

,

,

background image

Szczególne przypadki klauzul:

1

=

k

Wtedy klauzula jest postaci:

m

B

B

A

,

,

1

K

Klauzulę tej postaci nazywamy klauzula

definitywną

.

W szczególności

0

=

m

.

Wtedy po prawej stronie otrzymujemy pustą koniunkcję (brak przesłanek).

Pusta koniunkcja jest zawsze prawdziwa.

Zatem w tym przypadku klauzula jest postaci:

A

Prawda

Klauzulę taką nazywamy

jednostkową

.

0

,

0

>

= m

k

.

Wtedy po prawej stronie otrzymujemy pustą alternatywę (brak wniosków).

Pusta alternatywa jest zawsze fałszywa.

Zatem w tym przypadku klauzula jest postaci:

Fałsz

m

B

B

,

,

1

K

Klauzulę taką nazywamy

negatywną

.

0

,

0

=

= m

k

.

Wtedy zarówno koniunkcja jak i alternatywa są puste.

Mamy następującą sytuację :

Fałsz

Prawda

Zatem w tym przypadku klauzula jest fałszywa.

Nazywamy ja klauzulą

pustą

i oznaczamy



background image

Program w języku logiki.

Programem w języku logiki nazywamy zbiór klauzul postaci:

m

B

B

A

,

,

1

K

,

0

n

nagłówek treść, ciało

tzn. klauzul definitywnych (reguł) (

0

>

n

) i klauzul jednostkowych, czyli faktów (

0

=

n

).

Nieformalne znaczenie klauzuli definitywnej

: dla każdego wartościowania zmiennych,

jeżeli

m

i

B

i

,

,

2

,

1

,

K

=

są prawdziwe, to A jest prawdziwe.

Nieformalne znaczenie klauzuli jednostkowej

: A jest prawdziwe dla każdego

wartościowania zmiennych.

Interpretacja

klauzul programu w języku logiki:

m

B

B

A

,

,

1

K

,

0

n

a)

deklaratywna (opisowa):

A

jest prawdziwe, jeśli

m

B

B

,

,

1

K

są prawdziwe,

b)

proceduralna (operacyjna): aby rozwiązać

A

rozwiąż

m

B

B

,

,

1

K

.

Definicją predykatu

(relacji, związku, własności)

n

P /

(predykat

P

o

n

argumentach) w

programie w języku logiki

P

nazywamy zbiór wszystkich klauzul, w których nagłówku

występuje

n

P /

.

Program

P

w języku logiki jest opisem obiektów koniecznych do rozwiązania danego

zagadnienia oraz związków jakie zachodzą pomiędzy tymi obiektami.

Program P w języku logiki jednoznacznie określa język pierwszego rzędu

P

L

.

Zadanie do rozwiązania przedstawione jest w postaci tzw.

celu

(ang. goal),

zapytania.

Zapytanie

jest to klauzula negatywna

N

, taka że

P

L

N

.

background image

Wykonanie programu

polega na udowodnieniu, że podany cel wynika logicznie ze zbioru

formuł tworzących program

P

.

W praktyce wykazujemy, że zbiór formuł

P

{ }

N

nie jest spełniany, co w programowaniu w

logice sprowadza się do sprawdzenia, czy ze zbioru formuł

P

{ }

N

można wyprowadzić

klauzulę pustą stosując

regułę rezolucji liniowej

(odpowiadającej stosowaniu bardziej

klasycznych: reguły odrywania i reguły podstawiania).

Jeżeli wykażemy, ze zbiór

P

{ }

N

nie jest spełniany, to ze znanego faktu z logiki

otrzymujemy, że formuła

N

¬

wynika logicznie ze zbioru formuł tworzących program P.

Cel

N

ma postać:

m

B

B

,

,

1

K

,

czyli

(

)

Falsz

B

B

m

K

1

.

Stąd na podstawie prawa KRZ:

(

)

p

Falsz

p

¬

mamy :

(

)

(

)

m

B

B

¬

K

1

,

co jest równoważne

(

)

m

B

B

¬∃

K

1

.

Zatem formuła

(

)

m

k

B

B

x

x

K

K

1

1

wynika logicznie z

P

, gdzie

k

x

x

,

,

1

K

są zmiennymi

występującymi w

N

. Tym samym znajdziemy obiekty spełniające cel

N

.

background image

REGUŁA REZOLUCJI ZDANIOWEJ

{

}

{

}

{

}

n

m

n

m

L

L

L

L

L

L

p

L

L

L

p

L

L

L

¬

,

,

,

,

,

,

,

,

,

,

,

,

,

,

,

2

1

2

1

2

1

2

1

K

K

K

K

,

n m

,

≥ 0

.


FAKT

Reguła rezolucji zdaniowej jest logiczną regułą wnioskowania, tzn. wniosek reguły rezolucji
zdaniowej wynika ze zbioru przesłanek tej reguły.



REZOLUCJA LINIOWA.


Niech P będzie programem definitywnym.

Reguła rezolucji liniowej

ma postać:


n

m

A

A

A

,

,

,

,

1

K

K

– cel

G

k

B

B

B

,

,

1

K

– wariant klauzuli

C

programu

P

____________________________________

(

)

σ

n

m

k

m

A

A

B

B

A

A

,

,

,

,

,

,

,

,

1

1

1

1

K

K

K

+

– nowy cel


gdzie

σ

jest MGU zbioru

{

}

A

B

m

,

, tzn.

A

B

m

σ

σ

=

.


Uzasadnienie:

G

:

(

)

n

m

A

A

A

¬

K

K

1

n

m

A

A

A

¬

¬

¬

K

K

1

C

:

k

B

B

B

¬

¬

K

1

σ

:

B

A

m

σ

σ

=

:

σ

σ

σ

n

m

A

A

A

¬

¬

¬

K

K

1

:

σ

σ

σ

k

B

B

B

¬

¬

K

1

___________________________________rezolucja zdaniowa_

σ

σ

σ

σ

σ

σ

n

m

k

m

A

A

B

B

A

A

¬

¬

¬

¬

¬

¬

+

K

K

K

1

1

1

1

c

(

)

σ

n

m

k

m

A

A

B

B

A

A

¬

+

K

K

K

1

1

1

1



Wyszukiwarka

Podobne podstrony:
Programowanie w jezyku C dla chetnych A Poznanski
Programowanie w jezyku C FAQ prcfaq
Napisać program w języku c który zawiera
16-20, Ogólna struktura programu w języku Pascal, Ogólna struktura programu w języku Pascal
Programowanie w języku asemblera
Informatyka, Podstawy Programowania w jezyku C++, Podstawy Programowania w jezyku C++'
PAS03, Og˙lna struktura programu w jezyku PASCAL
A Poznański Programowanie w języku C dla chętnych
Oracle Database 10g Programowanie w jezyku PL SQL or10ps
Efektywne Programowanie W Języku Java
Przykładowe zadania na 2 kolokwium z programowania w języku C, Studia, PWR, 1 semestr, Podstawy prog
Przykładowe zadania na 1 kolokwium z programowania w języku C, Studia, PWR, 1 semestr, Podstawy prog
Programowanie liniowe informacje wprowadzające
Pakiet programów?ukacyjnych z zakresu przedmiotu wprowadzenie do informatyki
infa wykłady Programowanie w języku C# Informatyka wykład
zadania na kolokwium-programowanie, Automatyka i robotyka air pwr, II SEMESTR, Programowanie w język

więcej podobnych podstron