Systemy funkcjonalnie pełne
Każda formuła odpowiada pewnej funkcji przekształcającej wartościowania zmiennych w niej występujących w element zbioru B. Na przykład formuła p⇒(q⇒r) wyznacza funkcję fp⇒(q⇒r) opisaną poniższą tabelą
p |
q |
r |
fparrow(qarrowr) |
0 |
0 |
0 |
1 |
0 |
0 |
1 |
1 |
0 |
1 |
0 |
1 |
0 |
1 |
1 |
1 |
1 |
0 |
0 |
1 |
1 |
0 |
1 |
1 |
1 |
1 |
0 |
0 |
1 |
1 |
1 |
1 |
Mówimy, wtedy że formuła
ϕ definuje funkcję
fϕ.
Definicja 5.1
Skończony zbiór funkcji boolowskich Γ nazywamy funkcjonalnie pełnym, jeśli każdą funkcję boolowską da się zdefiniować przy pomocy formuły zbudowanej wyłącznie ze spójników odpowiadających funkcjom ze zbioru Γ.
Twierdzenie 5.2
Zbiór {∧,∨,¬} jest funkcjonalnie pełny.
Dowód
Dla dowolnej funkcji boolowskiej skonstruujemy formułę która ją definiuje. Niech k∈ oraz f:BkarrowB. W definiowanej formule będziemy używać zmiennych p1,…,pk, a każdy element (w1,…,wk)∈Bk będzie odpowiadał wartościowaniu vw takiemu, że v(pi)=wi.
Niech F będzie zbiorem tych argumentów, dla których funkcja f przyjmuje wartość 1. Dla dowolnego elementu xi∈F skonstruujemy formułę ϕi w taki sposób, aby była spełniona tylko dla wartościowania odpowiadającego elementowi xi. Niech xi=(w1,…,wk), wtedy formułę ϕi definiujemy jako li1∧li2∧⋯∧lik gdzie
lij{pj,gdy wj=1;¬pj,gdy wj=0.
Łatwo sprawdzić, że formuła ϕi jest spełniona tylko dla wartościowania odpowiadającego elementowi xi.
Postępując w ten sposób dla każdego elementu zbioru F otrzymamy formuły ϕ1,…ϕm. Biorąc
ϕ1∨⋯∨ϕm
otrzymamy formułę która definiuje funkcję f, oznaczmy ją przez Φ. Jeśli dla wartościowania v formuła Φ jest spełniona to znaczy, że któraś z formuł ϕi jest spełniona. Oznacza to że wartościowanie v odpowiada pewnemu elementowi xi zbioru F, wobec tego funkcja f(xi)=1 co jest zgodne z tym, że spełniona jest Φ. W drugą stronę załóżmy że dla pewnego elementu a∈Bk mamy f(a)=1. Wobec tego a∈F. Wtedy a odpowiada pewnej formule ϕi, która jest spełniona dla wartościowania odpowiadającego a. Wobec tego również cała formuła Φ jest spełniona dla tego wartościowania (bo jeden z elementów alternatywy jest spełniony). Wynika stąd, że formuła Φ definiuje funkcję f. Na koniec zauważmy jeszcze że jedynymi spójnikami występującymi w formule Φ są ¬,∨,∧.
Twierdzenie 5.3
Zbiory {∧,¬}, {∨,¬} są funkcjonalnie pełne.
Dowód
Aby pokazać, że {∧,¬} jest funkcjonalnie pełny wystarczy pokazać, że przy pomocy spójników {∧,¬} da się zdefiniować ∨. Wtedy funkcjonalną pełność otrzymamy z twierdzenia 5.2. W ćwiczeniu 4.2 pokazaliśmy, że
¬(x∨y)=¬x∧¬y.
Wobec tego
x∨y=¬(¬x∧¬y)
a więc zdefiniowaliśmy ∨ przy pomocy ¬,∧.
Analogicznie aby pokazać funkcjonalną pełność zbioru {∨,¬} zdefiniujemy ∧ przy pomocy spójników ∨,¬. Z <ćwiczenia 4.2 mamy
¬(x∧y)=¬x∨¬y
a więc
x∧y=¬(¬x∨¬y).
Ćwiczenie 5.1
Udowodnij, że zbiór {⇒,¬} jest funkcjonalnie pełny.
Twierdzenie 5.4
Zbiór {NOR} jest funkcjonalnie pełny.
Dowód
Pokażemy, że przy pomocy NOR można zdefiniować ¬ oraz ∨. Wtedy z twierdzenia twierdzenia 5.3 otrzymamy tezę twierdzenia.
Łatwo sprawdzić, że
pNORp≡¬.
Wiemy, że
pNORq≡¬(p∨q).
Wobec tego mamy również
¬(pNORq)≡p∨q.
Możemy teraz wyrazić negację za pomocą NOR, otrzymamy wtedy
(pNORq)NOR(pNORq)≡p∨q.
Ćwiczenie 5.2
Udowodnij, że zbiór {NAND} jest funkcjonalnie pełny.
Ćwiczenie 5.3
Zdefiniuj alternatywę przy pomocy samej implikacji.
Ćwiczenie 5.4
Jakie funkcje binarne da się zdefiniować przy pomocy samej implikacji?
Ćwiczenie 5.5
Udowodnij, że poniższe zbiory nie są funkcjonalnie pełne
- {∧}
- {∨}
- {⇔}
- {XOR}
Ćwiczenie 5.6
Czy funkcje binarne, zdefiniowane za pomocą formuł zawierającyh jedynie przemienne spójniki, muszą być przemienne?
Ćwiczenie 5.7
(z wykładu prof. P.M.Idziaka) Niech Fn oznacza ilość boolowskich funkcji n argumetnowych, a Pn ilość boolowskich funkcji n argumentowych, takich że przy pomocy każdej z nich da się zdefiniować dowolną funkcję boolowską (czyli jeśli ∘ jest takim spójnikiem to zbiór {∘} jest funkcjonalnie pełny). Udowdnij istenienie poniższej granicy i wyznacz jej wartość
lim