• Nie Znaleziono Wyników

Co wynika ze współczesnej logiki formalnej?

2.5. A LGEBRA B OOLE ’ A ORAZ ALGEBRA K LEENE ’ GO

2.5.1.WPROWADZENIE DO ALGEBRY BOOLEA

Rozpoczniemy od krótkiego przeglądu algebry Boole'a, stanowiącej matematyczną podstawę cyfrowych układów logicznych, dokładniej mówiąc tzw. układów kombinacyjnych (patrz podrozdział 4.2.2). Tę algebrę - nazwano tak dla uczczenia brytyjskiego matematyka George'a Boole'a, który to zaproponował podstawowe zasady algebry w traktacie zatytułowanym An Investigation of the Laws of Thought on Which to Found the Mathemathical Theories of Logic and Probabilities (Badanie praw myśli, które mogą być podstawą matematycznych teorii logiki i

prawdopodobieństwa). W roku 1938 Claude Shannon, asystent na wydziale elektrycznym MIT, zasugerował zastosowanie algebry Boole'a do rozwiązywania problemów projektowania układów przekaźnikowych. Metoda Shannona została następnie użyte do analizowania i projektowania elektronicznych układów cyfrowych.

Algebra Boole'a jest wygodnym narzędziem w dwóch obszarach:

1. analizy - jest ekonomicznym sposobem opisywania działania kombinacyjnych układów cyfrowych;

2. projektowania - algebra Boole'a może być stosowana do uproszczonej realizacji pożądanych funkcji kombinacyjnych.

Podobnie jak inne rodzaje algebry, algebra Boole'a używa zmiennych i operacji. W tym przypadku są to logiczne zmienne i operacje. Wobec tego zmienna oznaczane literami lub ciągami liter (nazwami) mogą przyjmować wartość 1 (Prawda) lub 0 (Fałsz). Podstawowymi operacjami logicznymi są: AND (𝑖), OR (𝑙𝑢𝑏) i NOT (𝑛𝑖𝑒); reprezentowane symbolicznie przez ∧ , ∨ oraz ¬. A oto tabele: 2.7.1.11 – 2.7.1.13 definiujące wzmiankowane operacje na zmiennych zero – jedynkowych:

Tabela 2.5.1.11. Tabela 2.5.1.12. Tabela 2.5.1.13.

a b a∧b a b a∨b a ¬a

0 0 0 0 0 0 0 1

0 1 0 0 1 1 1 0

1 0 0 1 0 1

1 1 1 1 1 1

Jak widać z powyższych tabel operacja AND daje w wyniku wartość Prawda (wartość binarną 1) wtedy i tylko wtedy, gdy jej obydwa argumenty są prawdziwe (mają wartość binarną 1);

operacja OR daje wyniku wartość Prawda (wartość binarną 1), gdy którykolwiek z jej argumentów lub obydwa mają wartość Prawda (wartość binarną 1); operacja jednoargumentowa NOT zwraca wartość swojego argumentu równą Prawda (wartość binarną 1) – wtedy i tylko wtedy gdy argument ma wartość Fałsz (wartość binarną 0).

Oto uwaga dotyczących notacji, przy braku nawiasów operacja AND ma pierwszeństwo przed operacją OR.

2.5.1.20. Tezy pierwotne - postulaty Algebry Booler’a:

1. 0 ≠ 1 1 ≠ 0

2. a ∧ b = b ∧ a a ∨ b = b ∨ a prawa przemienności;

3. a ∧ (b ∨ c) = (a ∧ b) ∨ (a ∧ c) a ∨ (b ∧ c) = (a ∨ b) ∧ (a ∨ c) prawa rozdzielczości;

4. 1 ∧ a = a 0 ∨ a = a prawa tożsamości;

5. a ∧ ¬a = 0 a ∨ ¬a = 1 prawa odwrotności.

Biorąc teraz pod uwagę - symetrię powyższych postulatów łatwo zauważyć, że wszystkie tezy wtórne algebry Boole’a dadzą się ustawić w pary w taki sposób, że zawsze wystarczy zbudować dowód dla jednej tylko z obu tez. Tworzenie par polega na tym, że po zapisaniu danej tezy otrzymujemy drugą, stosując do pierwszej (patrz tabela 2.5.1.30) „słownik”.

Oczywiście może się zdarzyć, że obie tezy utworzonej w ten sposób pary będą równokształtne, na przykład:

⊢ {𝑎 = [¬(¬𝑎)]}; ⊢ {𝑎 = [¬(¬𝑎)]}.

Tabela 2.5.1.30

I. II.

0 1

1 0

(¬𝑎) (¬𝑎) (𝑎 ∧ 𝑏) (𝑎 ∨ 𝑏) (𝑎 ∨ 𝑏) (𝑎 ∧ 𝑏)

Wyżej opisaną własność algebry Boole’a nazywa się dwoistością tej algebry.

2.5.1.40. Wyjaśnienie. Niech F, G będą funkcjami boole’owskimi, każda dwu zmiennych boole’owskich; zamiast pierwszej z nich będziemy pisali schemat „(𝑎 ∇ 𝑏)”, zamiast drugiej -

„(𝑎 ∆ 𝑏)”. Przez rozdzielność F względem G będziemy rozumieli postulat lub twierdzenie mające postać:

{[𝑎∆(𝑏∇𝑐)] = [(𝑎∆𝑏)∇(𝑎∆𝑐)]}.

Łatwo zauważyć, że postulat 3 – część lewa, jest rozdzielnością koniunkcji nazwowej względem alternatywy nazwowej, natomiast postulat 3 – część prawa jest rozdzielnością alternatywy nazwowej względem koniunkcji nazwowej.

Piśmiennictwo: Greniewski H. G.2.1. , Kołmogorow A. K.4.1.

2.5.2.TWIERDZENIA ZASADNICZE ALGEBRY BOOLEA W algebrze Boole'a można między innymi dowieść twierdzeń:

2.5.2.00 ⊢ [(¬0) = 1].

Interpretacja kolektywna: Dopełnienie niczego jest identyczne (jednostkowo i nieegzystencjalnie) z najszerszym rozpatrywanym przedmiotem (np. wszechświatem).

Interpretacja dystrybutywna swobodna: Nie-nic, to tyle - co przedmiot.

Szkic dowodu. Weźmy postulat 2.5.1.20 - 5 (część prawa):

⊢ [1 = 𝑎 ∨ (¬𝑎)].

Podstawiając do tego postulatu

nazwę 0

za zmienną nazwową 𝑎 otrzymujemy wynik:

(1) ⊢ [1 = 0 ∨ (¬0)].

(2) ⊢ (𝑎 ∨ 𝑏 = 𝑏 ∨ 𝑎) (teza pierwotna 2).

Podstawiając do (2)

nazwy 0 (¬0)

za zmienne nazwowe 𝑎 𝑏 otrzymujemy wynik:

(3) ⊢ [0 ∨ (¬0) = (¬0) ∨ 0].

(4) ⊢ [1 = (¬0) ∨ 0] (ogniwo (1) i (3).

(5) ⊢ (𝑎 = 𝑎 ∨ 0) (teza pierwotna 5).

Podstawiając do (5)

nazwę (¬0)

za zmienną nazwową 𝑎 otrzymujemy wynik:

(6) ⊢ [(¬0) = (¬0) ∨ 0]

Korzystając z odnośnego twierdzenia elementarnego rachunku identyczności otrzymujemy z (4) i (6) nasze twierdzenie.

2.5.2.01 ⊢ [(¬1) = 0].

Interpretacja kolektywna: Dopełnienie najszerszego rozpatrywanego przedmiotu jest identyczne (jednostkowo i nie-egzystencjalnie) z niczym. Interpretacja dystrybutywna: Nie-przedmiot jest identyczny (ogólnie i nie-egzystencjalnie) z niczym.

2.5.2.10. Prawo podwójnego przeczenia:

⊢ {𝑎 = [¬(¬𝑎)]}.

2.5.2.11. Prawo De Morgana:

⊢ {[¬(𝑎 ∨ 𝑏)] = {(¬𝑎) ∧ (¬𝑏)]}.

2.5.2.12. Prawo De Morgana:

⊢ {[¬(𝑎 ∧ 𝑏)] = [(¬𝑎) ∨ (¬𝑏)]}.

Szkic dowodu. Przeprowadźmy najpierw przekształcenia poniższe:

(𝑎 ∧ 𝑏) ∧ (¬𝑎) = (𝑏 ∧ 𝑎) ∧ (¬𝑎) (teza 2).

= 𝑏 ∧ [𝑎 ∧ (¬𝑎)] (teza 5).

= 𝑏 ∧ 0 (teza 5).

= 0 (teza 5).

Przekształcenia powyższe i przechodniość identyczności (2.1.2.10) dają nam, jako wynik następujący:

(1) ⊢ [(𝑎 ∧ 𝑏) ∧ (¬𝑎) = 0].

Przekształcamy dalej:

(𝑎 ∧ 𝑏) ∧ (¬𝑏) = 𝑎 ∧ [𝑏 ∧ (¬𝑏)] (teza 3).

= 𝑎 ∧ 0 (teza 3).

= 0 (teza 3).

Powyższe przekształcenie i przechodniość identyczności dają nam, jako wynik następujący:

(2) ⊢ [(𝑎 ∧ 𝑏) ∧ (¬𝑏) = 0].

Przeprowadźmy jeszcze krótkie przekształcenie:

0 = 0 ∨ 0 (teza 4).

= [(𝑎 ∧ 𝑏) ∧ (¬𝑎)] ∨ [(𝑎 ∧ 𝑏) ∧ 𝑏] (ogniwo (1), (2)).

= (𝑎 ∧ 𝑏) ∧ [(¬𝑎) ∨ (¬𝑏)] (teza 4).

Mamy więc:

(3) ⊢ {(𝑎 ∧ 𝑏) ∧ [(¬𝑎) ∨ (¬𝑏) = 0]}

Następne przekształcenie:

[(¬𝑎) ∨ (¬𝑏)] ∨ 𝑎 = [(¬𝑏) ∨ (¬𝑎)] ∨ 𝑎 (teza 3).

= (¬𝑏) ∨ (¬𝑎) ∨ 𝑎) (teza 3).

= (¬𝑏) ∨ 1) (teza 3).

= 1 (teza 3).

Mamy więc:

(4) ⊢ {[(¬𝑎) ∨ (¬𝑏)] ∨ 𝑎 = 1}.

Przeprowadzamy teraz przekształcenie podobne do poprzedniego

(¬𝑎) ∨ (¬𝑏) ∨ 𝑏 = (¬𝑎) ∨ (¬𝑏) ∨ 𝑏) (teza 3).

= (¬𝑎) ∨ 1 (teza 3).

= 1 (teza 3).

Skąd:

(5) ⊢ [(¬𝑎) ∨ (¬𝑏) ∨ 𝑏 = 1].

Przekształcając dalej:

1 = 1 ∧ 1 (teza 3).

= [(¬𝑎) ∨ (¬𝑏) ∨ 𝑎] ∧ [(¬𝑎) ∨ (¬𝑏) ∨ 𝑏] (ogniwo (4), (5)).

= (¬𝑎) ∨ (¬𝑏) ∨ (𝑎 ∧ 𝑏). (teza 3).

Mamy więc wynik:

(6) ⊢ [1 = (¬𝑎) ∨ (¬𝑏) ∨ (𝑎 ∧ 𝑏) ].

Z powyższego przekształcenia za pomocą tez przechodniości oraz symetrii otrzymujemy:

⊢ {[¬(𝑎 ∧ 𝑏)] = [(¬𝑎) ∨ (¬𝑏)]}.

co było do okazania.

Piśmiennictwo: Greniewski H. G.2.1. , Kołmogorow A. K.4.1.

2.5.3.ALGEBRY KLEENEEGO

Stephen Cole Kleene (1909 - 1994) - amerykański matematyk, jeden z pionierów informatyki teoretycznej. Zasłynął z prac z teorii rekursji, opracowania koncepcji wyrażeń regularnych i teorii funkcji obliczalnych. Z jego nazwiskiem związane jest nierozłącznie takie pojęcia jak algebra Kleene'ego, twierdzenie Kleene'ego o rekursji. Algebra Kleene'ego (KA – Kleene algebra) jest algebrą wyrażeń regularnych i znana jest również pod wieloma różnymi nazwami.

2.5.3.10. Wyjaśnienie. Algebra Kleene'ego jest strukturą algebraiczną (K, ∪, ∘, *, 0, 1) spełniająca poniższy zbiór aksjomatów (według Dexter’a Kozena):

2.5.3.11 𝛼 ∪ (𝛽 ∪ 𝛾) = (𝛼 ∪ 𝛽) ∪ 𝛾.

2.5.3.12 𝛼 ∪ 𝛽 = 𝛽 ∪ 𝛼.

2.5.3.13 𝛼 ∪ 0 = 𝛼 ∪ 𝛼 = 𝛼.

2.5.3.14 𝛼 ∘ (𝛽 ∘ 𝛾) = (𝛼 ∘ 𝛽)∘ 𝛾.

2.5.3.15 1 ∘ 𝛼 = 𝛼 ∘ 1 = 𝛼.

2.5.3.16 𝛼 ∘ (𝛽 ∪ 𝛾) = 𝛼𝛽 ∪ 𝛼𝛾.

2.5.3.17 (𝛼 ∪ 𝛽)∘ 𝛾 = 𝛼 ∘ 𝛾 + 𝛽 ∘ 𝛾

2.5.3.18 0 ∘ 𝛼 = 𝛼 ∘ 0 = 0

2.5.3.19 1 ∪ 𝛼 ∘ 𝛼* = 1 ∪ 𝛼*∘ 𝛼 = 𝛼*

2.5.3.20 𝛽 ∪ 𝛼 ∘ 𝛾 ≤ 𝛾 → 𝛼*∘ 𝛽 ≤ 𝛾

2.5.3.21 𝛽 ∪ 𝛾 ∘ 𝛼 ≤ 𝛾 → 𝛽 ∘ 𝛼* ≤ 𝛾

Gdzie operator ≤ definiuje naturalne uporządkowanie częściowe w K:

2.5.3.30 𝛼 ≤ 𝛽 =Def 𝛼 ∪ 𝛽 = 𝛽

Mówiąc krótko KA jest idempotentnym półpierścieniem względem ∪, ∘, 0, 1 spełnienia ze względu na operację *. Trzy ostatnie aksjomaty mówią, że operator * zachowuje się jak powielacz łańcuch symboli należących do zbioru znaków.

Piśmiennictwo: Harel D. H.1.1.

2.5.4.DEFINICJA WYRAŻEŃ REGULARNYCH

Wyrażenia regularne (regular expressions, w skrócie regex lub regexp) – wzorce, które opisują łańcuchy symboli. Teoria wyrażeń regularnych jest związana z teorią języków regularnych.

Wyrażenia regularne mogą określać zbiór pasujących łańcuchów, mogą również wyszczególniać istotne części łańcucha.

Wyrażenia regularne to w informatyce teoretycznej ciągi znaków pozwalające opisywać języki regularne. W praktyce znalazły bardzo szerokie zastosowanie, pozwalają bowiem w łatwy sposób opisywać wzorce tekstu, natomiast istniejące algorytmy w efektywny sposób określają, czy podany ciąg znaków pasuje do wzorca lub wyszukują w tekście wystąpienia wzorca.

Wyrażenia regularne w praktycznych zastosowaniach są zapisywane za pomocą bogatszej i łatwiejszej w użyciu składni niż ta stosowana w rozważaniach teoretycznych. Co więcej, opisane niżej powszechnie wykorzystywane wsteczne referencje (czyli użycie wcześniej dopasowanego fragmentu tekstu jako części wzorca), powodują, że wyrażenie regularne je zawierające może nie definiować języka regularnego.

Wyrażeniem regularnym nad alfabetem ∑ nazywamy ciąg znaków składający się z symboli:

Ø, ∈, ∘, ∪, *, ), ( oraz symboli ai z alfabetu ∑ następującej postaci:

2.5.4.11 Ø, ∈ (słowo puste) są wyrażeniami regularnymi;

2.5.4.12 Wszystkie symbole

a

i ∈ ∑ są wyrażeniami regularnymi;

2.5.4.13 Jeśli

e

1,

e

2 są wyrażeniami regularnymi, to są nimi również:

e

1*(domknięcie Kleene'ego)

e

1

e

2 (konkatenacja)

e

1

e

2 (suma)

e

1 (grupowanie)

2.5.4.14 Wszystkie wyrażenia regularne są postaci opisanej w punktach powyższych.

Każde wyrażenie regularne definiuje pewien język formalny. Każdy język definiowany przez wyrażenie regularne jest regularny.

Piśmiennictwo: Harel D. H.1.1.

2.5.5.DEFINICJA JĘZYKA OKREŚLANEGO PRZEZ WYRAŻENIE REGULARNE

Język definiowany przez wyrażenie regularne jest definiowany indukcyjnie. Niech L(w) oznacza język definiowany przez w. Wtedy baza indukcji jest następująca:

2.5.5.11 L(∈) = {∈} (zbiór zawierający tylko słowo puste).

2.5.5.12 L(Ø) = Ø (zbiór pusty).

2.5.5.13 L(

a

) = {

a

} dla dowolnego

a

z alfabetu ∑.

Natomiast do konstrukcji wyrażeń służą 3 symbole:

2.5.5.21 L(

w

u

) = L(

w

) ∪ L(

u

) (suma języków) 2.5.5.22 L(

w

*) = (L(

w

))* (domknięcie Kleene'ego)

2.5.5.22 L(

w∘u

) = {

x

,

y

:

x

∈ L(

w

) ∧

y

∈ L(

v

) (konkatenacja języków).

2.5.5.30. Wyjaśnienie. Gwiazdka „*” wiąże najsilniej, konkatenacja „∘” słabiej, suma „∪”

najsłabiej.

Piśmiennictwo: Harel D. H.1.1.

2.5.6.WŁASNOŚCI WYRAŻEŃ REGULARNYCH

2.5.6.10. Twierdzenie. Wyrażenia są równoważne gdy definiują ten sam język:

e

1 =

e

2 ⟺ L(

e

1) = L(

e

2)

2.5.6.11. Prawo pochłaniania

e

e

=

e.

2.5.6.12. Prawoprzemiennościsumy

e

1

e

2=

e

2

e

1

2.5.6.13. Prawo łańcuch pusty jest elementem neutralnym konkatenacji ∈∘

e

=

e∘

∈ =

e

.

2.5.6.14. Prawo łączności sumy

(

e

1

e

2) ∪

e

3 =

e

1 ∪ (

e

2

e

3).

2.5.6.15. Prawołączności konkatenacji (

e

1

e

2)∘

e

3 =

e

1∘(

e

2

∘e

3) .

2.5.6.16. Praworozdzielności konkatenacji względem sumy (

e

1

e

2)∘X =

e

1∘X ∪

e

2∘X.

2.5.6.17. Prawo

X(

e

1

e

2) = X

e

1 ∪ X

e

2 2.5.6.18. Prawo przemoienności

e

*∘

e

= e∘e*

2.5.6.19. Prawo - domknięcie Kleene'ego jest idempotentne (

e

*)* =

e*

2.5.6.20. Prawopochałaniania

e

*∘

e* = e

* . Piśmiennictwo: Harel D. H.1.1.

2.5.7.ALGEBRA KLEENEEGO Z TESTEM

Z praktycznego punktu widzenia, wiele prostych czynności wykonywanych przez programy komputerowe, takich jak: sekwencja instrukcji, pętla powtarzania sekwencji instrukcji, nie wymaga narzędzia do opisu działania wykraczającego poza algebrę Kleene’go. Jak wiadomo niezbędnym składnikiem każdego programu jest test odpowiedzialny za wybór kolejnej do wykonania sekwencji instrukcji. Takiego rozszerzenia KA dokonał w latach 1966 – 1967 Dexter Kozen, nazywając rozszerzoną przez siebie algebrę - Kleene algebra with test, w skrócie KAT.

KAT jest algebrą Kleene’ego z wbudowaną pod-algebrą Boole’a. Formalnie jest to algebra o parze uporządkowań (K, B, ∧, ∨, ¬, ∪, ∘, *, 0, 1), taką, że spełnione są następując trzy warunki:

2.5.7.11. Definicja. (K, ∪, ∘, *, 0, 1) – jest algebrą Kleene’ego

2.5.7.12. Definicja. (B, ∧, ∨, ¬,0, 1) – jest algebrą Boole’a.

2.5.7.13. Definicja. B ⊆ K.

Przy czym, jednoargumentowy operator negacji ¬ jest określony jedynie w B, podobnie jak operacje dwuargumentowe ∧ oraz ∨. Funkcje boole’owskie (zbudowane z elementów oznaczonych literami: 𝛼, 𝛽, … - na które działają operacje boole’owskie) B, które są dalej nazywane testami, są oznaczane literami: 𝜑?, 𝜓?, … . Operacje boole’owskie, są określone jedynie w ramach budowania wyrażeń będących testami. Elementy K - są oznaczane literami: 𝛼, 𝛽, … , na których wykonywane są operacje: konkatenacji „∘”, sumy Kleene’ego „∪” oraz domknięcia Kleene'ego „*”.

Piśmiennictwo:Harel D. H.1.1.

Outline

Powiązane dokumenty