Jeżeli polskie litery są błędnie wyświetlane – odśwież

lub prawym przyciskiem myszy zmień kodowanie.

strona główna

 

Wielowartościowe logiki Jarczewskiego

 

Dziedzina: logika wielowartościowa.

Streszczenie. Przedstawiono nowy nie-boolowski wielo­wartościowy system funkcjo­nalnie pełny. Zde­finio­wano minimalny zestaw działań i wyprowadzono postać kano­nicz­ną funkcji wielu zmiennych nie­jedno­czesnych. Prezentowany system to nie­try­wialna ekstrapolacja algebry Boole’a, w której podwójne wy­ko­nanie działania jedno­argumentowego może prowadzić do różnych wyników. Negacja negacji nie przy­wra­ca wartości argumentu, bo działanie jednoargu­men­towe nie jest negacją, lecz wybo­rem „innego”.

Andrzej Jarczewski, Logika wielowartościowa.

 

1.1. Działania i funkcje ogóln­e

 

Niech Z będzie zbiorem pewnych elementów. Niech Y będzie zbiorem pew­nych, niepowtarzających się kombinacji elementów zbioru Z. Kombinacje te, czyli ele­menty zbioru Y, oznaczamy w dowolnej kolej­no­ści małymi literami alfabetu. Na elementach zbioru Y={a,b,... n} możliwe są co najmniej na­stę­pu­jące działania jedno- i wieloargu­men­towe.

 

1.1.1. Działania jednoargumentowe

 

1.1.1.1. Substytucja

 

Określimy rodzinę różnowarto­ściowych działań jedno­argumentowych na ele­men­tach zbioru Y. Symbolem tych działań niech będzie subskrypt. Działanie polega na zastą­pie­niu elementu, będącego argumentem, przez inny element zbioru Y. W zbiorze Y  wyróżniamy taki element j, że:

 

($j, jÎY)[aj=a, bj=b...  jj=j...  nj=n]                                                                    (1)

 

natomiast dla każdego elementu iÎY zachodzi:

 

 " (ij)[aia, bib... jij... nin]                                                                     (2)

 iÎY

 

ponadto – dla elementów p, i, k, należących do Y,  zachodzi

 

(kp)[kipi]                                                                                                     (3)

 

oraz

 

(kp)[ikip]                                                                                                      (4)

 

wobec tego – dla dowolnego xÎY zachodzi:

 

{a,b... n}={xa, xb... xn}                                                                                     (5)

 

gdyż zbiór {xa, xb... xn} zawiera wszystkie elementy zbioru Y i tylko te ele­menty.

 

 

1.1.1.2. Dodawanie wartości wyróżnionej

 

Dodawanie definiujemy następująco:

 

x+j=j+x=x+j+j...  +j=x                                                                                     (6)

 

Dodawanie jest określone wtedy i tylko wtedy, gdy co najwyżej jeden składnik jest różny od  j. Skład­ników równych j może być dowolnie wiele.

 

 

1.1.2. Działania wieloargumentowe

 

Zdefiniujmy operator J, określony na ciągach elementów zbioru Y, mający na­stępu­jące właściwości.

 

Jeżeli element wyróżniony j występuje w ciągu G, to:

 

J(G)=j                                                                                                               (7)

 

Niech Y–j będzie dowolnym ciągiem bez powtórzeń wszystkich nie wyróż­nionych elementów zbioru Y. Wtedy:

 

J(Y–j)=q, gdzie qj,  qÎY                                                                                (8)

 

Niech X będzie dowolnym ciągiem bez powtórzeń wszystkich elementów zbioru Y. W tym ciągu wystę­puje element j, więc:

 

J(X)=j                                                                                                               (9)

 

Niech X–j+k będzie ciągiem powstałym z ciągu X przez zastąpienie elementu j dowolnym elementem k z tego zbioru.

 

(kj)[J(X–j+k)=F(k), F(k)j]                                                                           (10)

 

(k=j)[J(X–j+k)=J(X)=j=F(j)]                                                                             (11)

 

Żądamy ponadto, by zachodziło:

 

(kj, kp)[F(k)F(p)]                                                                                     (12)

 

Ostatecznie otrzymujemy:

 

Y={F(a), F(b),...  F(n)}                                                                                     (13)

 

 

1.1.3. Postać kanoniczna funkcji jednej zmiennej

 

Niech X–xk będzie ciągiem, powstałym z ciągu X przez usunięcie elementu xk. Udowodnimy teraz słuszność następującej formuły:

 

J(X–xa) + J(X–xb) +...  + J(X–xn) = q       (qj, qÎY)                                       (14)

 

Dla każdej wartości x istnieje w zbiorze Y jeden i tylko jeden element   i  taki, że xi=j. Wskutek tego dla danego x tylko jeden składnik sumy ma wartość różną od j oraz równą q (por. (8)). Zmienna x może przyjąć tyle wartości, ile jest różnych elementów zbioru Y. Tyle samo składników ma suma (14). Dla każdej wartości zmiennej x lewa strona równania (14) składa się więc z jedne­go składnika równego q oraz pozostałych składników równych  j. Wykorzystując (6), dowodzimy słuszności równania (14). Zapiszmy to równanie w zwięźlejszej postaci.

 

(iÎY={a,... n}) SJ(X–xi)=q                                                                               (15)

 

(Sumowanie przebiega cały zbiór Y od  i=a  do  i=n).

 

Niech X–xi+Z(i) będzie ciągiem powstałym z ciągu X przez zastąpienie ele­mentu xi funkcją stało­wartościową Z(i), przyjmującą wartości ze zbioru Y. Jeżeli który­kolwiek (ale tylko jeden) element ciągu

X–xi+Z(i) będzie równy j, wówczas:

 

J[X–xi+Z(i)]=j                                                                                                   (16)

 

W każdym innym przypadku operator J[X–xi+Z(i)] przyjmie jakąś wartość różną od j.

Dowolną funkcję z=z(x) można wyrazić, dobierając odpowiednio funkcje stałowarto­ściowe Z(i) w nastę­pującym równaniu:

 

z(x)=SJ[X–xi+Z(i)]                                                                                           (17)

 

Wartości Z(i) dobieramy tak, by uzyskać:

 

z(i)=J[X–xi+Z(i)]                                                                                               (18)

 

 

1.1.4. Postać kanoniczna funkcji wielu zmiennych

 

Postaci kanoniczne funkcji dwóch i wielu zmiennych zostaną przedstawione na przykładzie konkretnej logiki cyklicznej.

 

 

1.2. LOGIKA GLIWICKA

 

1.2.1. DZIAŁANIE JEDNOARGUMENTOWE

 

1.2.1.1. Progres

 

Niech relacja S porządkuje cyklicznie zbiór {1,2,3...  n}

 

... 1S2S3S...  SnS1S2...                                                                                    (19)

 

Zapis aSb oznacza, że b następuje po a. Na elementach zbioru {1,2,3... n} określamy działania jednoargumentowe, polegają­ce na zastąpieniu danego ele­mentu elementem następnym według porządku (19). Dla każdego elementu istnieje jeden i tylko jeden element następny. Tak określone działanie nazwiemy progresem, a jego symbolem niech będzie superskrypt (wykład­nik). Super­skrypt 1 (lub brak super­skryp­tu) oznacza niewykonanie działania. Superskrypt 2 oznacza tu jednokrotne wykona­nie działania, superskrypt 3 oznacza progres dwu­­krotny itd.

 

p=p1Sp2                                                                                                            (20)

 

(pSr)=(p2=r)                                                                                                     (21)

 

(pSrSt)=(p3=t) itd.                                                                                            (22)

 

Zmienną może być również superskrypt, np.:

 

(pSr)=(1pS1r)                                                                                                    (23)

 

 

1.2.1.2. Regres

 

Niech zbiór Y={0,1,2...  n} będzie uporządkowany cyklicznie:

 

... 0S1S2... SnS0S1...                                                                                       (24)

 

Zapis aSb oznacza, że a poprzedza b. Dla każdego elementu zbioru Y istnieje jeden i tylko jeden element poprzedzający. Na elementach tego zbioru okre­ślamy działanie, które polega na zastąpieniu danego elementu elementem po­przedzającym. Tak określone działanie nazwiemy regresem, a jego symbolem niech będzie subskrypt. Subskrypt 0 lub brak subskryptu oznacza niewykonanie działania, subskrypt 1 – jednokrotne wykonanie działania, subskrypt 2 – regres dwukrotny itd. (W zbiorze Y={0,1} regres odpowiada boolowskiej negacji).

 

a1Sa0=a                                                                                                             (25)

(a0Sb0)=(a0=b1)                                                                                                 (26)

(a0Sb0Sc0)=(a0=c2)                                                                                             (27)

 

Zmienną może być również subskrypt, np.:

 

(aSb)=(1bS1a)                                                                                                   (28)

 

1.2.1.3. Dodawanie do zera

 

Działanie to jest określone wtedy i tylko wtedy, gdy co najwyżej jeden składnik sumy jest niezerowy. (Odpowiada to alternatywie w dwuwartościowej algebrze Boole’a).

 

0+a=a+0=a+0+0... +0=a                                                                                  (29)

 

 

1.2.2. DZIAŁANIE WIELOARGUMENTOWE

 

1.2.2.1. Operator J

 

Dwuargumentowy operator J zdefiniujemy następująco:

 

" Jab=ab                                                                                                          (30)

(a,b)Î{1,2... n}

 

Jeżeli jeden z argumentów jest równy 1, np. b=1, to wykorzystując (20) możemy napisać:

 

Ja1=a1=a                                                                                                          (31)

 

Przyjmiemy ponadto, że:

 

J0a=Ja0=0                                                                                                        (32)

 

Po uwzględnieniu zapisu (32) operator J określony jest na argumentach ze zbio­ru Y={0,1,2... n}.

Dla większej liczby argumentów niech obowiązuje:

 

Jabc=J(Jab)c itd.                                                                                               (33)

 

1.2.2.2. Właściwości operatora J  (podaję z pominięciem prostych dowodów)

 

Jab=Jba                                                                                                            (34)

 

Jabc=JaJbc  itd.                                                                                                (35)

 

[(ab),(bc)] JabJac                                                                                      (36)

 

J(1,2,3... n)=q,   qÎ{1,2,3... n}                                                                         (37)

 

J1=J2n=J3n1=J4n2=... =1                                                                                 (38)

 

Jqq=1                                                                                                               (39)

 

(Dla n=1 tak zdefiniowany operator J jest równoważny koniunkcji w dwuwar­to­ściowej algebrze Boole’a. Dla n>1 zapisy powyższe są nieklasyczną ekstra­polacją niektórych właściwości tej koniunkcji. Np. nie działa tu prawo de Mor­ga­na itd.).

 

Przepiszmy teraz równanie (37), inaczej grupując argumenty i wykorzystując właści­wości (35) i (34).

 

($kÎ{1,2.. n})J1J2nJ3n1J4n2... Jk=q       (gdy n parzyste)                                  (40)

 

($kÎ{1,2... n})J1J2nJ3n1J4n2... Jk1k=q   (gdy n nieparzyste)                              (41)

 

(Parzystość w sensie arytmetycznym). Po podstawieniu (32), (31), (38) do (40) i (41) otrzymujemy:

 

q=1 gdy n nieparzyste                                                                                          (42)

q=2 gdy n=2                                                                                                      (43)

q=5 gdy n=8 itd.                                                                                                 (44)

 

Używając zwykłych symboli arytmetycznych można zapisać (dla n parzystych):

 

q=1+n/2                                                                                                            (45)

 

 

1.2.3. Konwencja zapisu

 

Sf(k)=f(0)+f(1)+... +f(n)                                                                                    (46)

 

Sumowanie przebiega po wszystkich wartościach k od pierwszej wartości wskazanej po prawej stronie równania: 0 do ostatniej: n.

 

Jai=Ja0a1... an                                                                                                    (47a)

 

Operacja na wszystkich argumentach ai od pierwszego wskazanego do ostat­niego (47a).

 

J(ai–a0)=Ja1a2... an                                                                                             (47b)

 

(47b): operacja na wszystkich argumentach ai z wyjątkiem wskazanego po lewej stronie, tu: a0.

 

J(ai–a1)=Ja0a2... an                                                                                             (47c)

 

J(ai–an)=Ja0a1a2... (an)1                                                                                      (47d)

 

 

1.2.4. Rozdzielność działania J względem dodawania

 

z (29) i (32) wynika, że:

 

J(a+b)=a+b=Ja + Jb                                                                                         (48)

 

Ja(b+c)=Jab + Jac                                                                                             (49)

 

czyli Ja(b+c)=Jab dla c=0 oraz Ja(b+c)=Jac dla b=0

 

 

1.2.5. Postać kanoniczna funkcji

 

1.2.5.1. Funkcja jednej zmiennej

 

Udowodnijmy słuszność następującej formuły:

 

SJ(xi–xk)=q                                                                                                       (50)

k i

 

Wykorzystując (46) i (47) otrzymujemy:

 

Jx1x2...xn + Jx0x2...xn +... + Jx0x1x2...(xn)1=q                                                     (51)

 

Dla każdej wartości x – niezerowy (oraz równy q na mocy (37)) jest jeden i tyl­ko jeden składnik sumy (51), np. dla x=0 – pierwszy, dla x=1 – drugi itd., dla x=n – ostatni. Słuszność formuły (50) została w ten sposób udowodniona.

 

Dowolną funkcję jednej zmiennej z(x) można wyrazić przez odpowiednią modyfi­kację sumy, znajdującej się po lewej stronie równania (51). Osiągniemy to przez wprowadzenie pod poszczególne operatory dodatkowych funkcji stało­wartoś­ciowych Z(k)ÎY.

 

z(x)=Jx1x2...xnZ(0) + Jx0x2...xnZ(1) +... + Jx0x1...(xn)1Z(n)                                (52)

 

gdzie Z(k) są tak dobierane, by zachodziło:

 

z(k)=JqZ(k)                                                                                                       (53)

 

[dla n arytmetycznie nieparzystego q=1 i wtedy z(k)=Z(k)]

 

Bardziej zwartą postać równania (52) można zapisać następująco:

 

z(x)=SJ(xi–xk)Z(k)                                                                                            (54)

           k i

 

1.2.5.2. Funkcja dwóch zmiennych

 

Wykorzystując (49) i (51) możemy napisać:

 

Jy1y2...ynq + Jy0y2...ynq +... + Jy0y1...(yn)1q = Jqq                                            (55)

 

Biorąc pod uwagę (39) oraz wstawiając lewą stronę równania (50) w miejsce każdego symbolu q po lewej stronie (55), otrzymamy równanie, które w posta­ci ściągniętej można zapisać, jak następuje:

 

SSJ(xi–xk)J(yr–yp) = 1                                                                                      (56)

 k p i

 

formułę ogólną funkcji dwóch zmiennych z=z(x,y) otrzymujemy na tej samej drodze, która doprowadziła do równania (54):

 

SSJ(xi–xk)J(yr–yp)Z(k,p) = z(x,y)                                                                      (57)

 k p i

 

gdzie Z(k,p) = z(k,p)

 

Po rozwinięciu lewej strony równania (57) otrzymujemy (n+1)2 składników sumy (plus i kwadrat – arytmetyczne). Dla dowolnego x oraz dowolnego y – najwyżej jeden z tych składników jest niezerowy. Możemy to łatwo sprawdzić np. dla n=2:

 

z(x,y) = Jx1x2y1y2Z(0,0) + Jx0x2y1y2Z(1,0) + Jx0x1y1y2Z(2,0) +

             Jx1x2y0y2Z(0,1) + Jx0x2y0y2Z(1,1) + Jx0x1y0y2Z(2,1) +

             Jx1x2y0y1Z(0,2) + Jx0x2y0y1Z(1,2) + Jx0x1y0y1Z(2,2)                            (58)

 

1.2.5.3. Funkcja wielu zmiennych

 

Postać kanoniczną funkcji wielu zmiennych otrzymamy analogicznie.

 

z(x,y, ... u)=SS...SJ(xi–xk)J(yr–yp)...J(us–um)Z(k,p, ... m)                                  (59)

                        k p... m i              r...              s

 

dla parzystej liczby zmiennych zachodzi:

 

Z(k,p, ... m) = z(k,p, ... m)                                                                                (60)

 

natomiast dla nieparzystej liczby zmiennych wzór (60) obowiązuje wtedy, gdy n jest nieparzyste (w rozumieniu arytmetycznym). Jeżeli natomiast liczba zmiennych jest nieparzysta, ale n jest parzyste – to Z(k,p, ... m) dobiera się tak, by zacho­dziło:

 

z(k,p, ... m) = JqZ(k,p, ... m)                                                                            (61)

 

Jeśli możliwe okazało się sformułowanie postaci kanonicznej funkcji wielu zmien­nych – możliwe jest wyprowadzenie każdej innej funkcji, wywiedlnej w tym systemie.