
- •Беспомощность классической логики
- •Ликбез по логике в России как проблема национальной безопасности
- •Недостатки и ошибки классической логики Аннотация
- •Алгоритм "Импульс".
- •Законы импликативных силлогизмов
- •Алгоритм "тват"(Тушинский вечерний авиационный техникум)
- •Литература
- •Логика Порецкого Аннотация
- •Алгоритм "Селигер"
- •Аксиоматика Порецкого
- •Алгоритм "Импульс"
- •Заключение
- •Литература
Аксиоматика Порецкого
В [1] утверждается, что аксиоматика Порецкого имеет вид:
1) a -> a,
2) ((a -> b)(b -> c)) -> (a -> c),
3) (ab) -> a,
4) (ab) -> b,
5) ((a -> b)(a -> c)) -> (a -> (bc)),
6) ((a -> b)(b -> a)) -> (a = b),
7) (a = b) -> (a -> b),
8) (a = b) -> (b -> a).
Непонятно, почему все эти соотношения называются аксиомами, поскольку они легко и просто доказываются с помощью алгоритма "Импульс"[5].
Алгоритм "Импульс"
Алгоритм анализа законов логики суждений чрезвычайно прост :
произвести замену всех знаков импликации на символы дизъюнкции в соответствии с известной формулой x -> y = x' + y;
привести полученное выражение с помощью закона Де Моргана к дизъюнктивной нормальной форме(ДНФ);
занести ДНФ в карту Карно и убедиться, что она вся покрыта единицами - это свидетельствует о истинности проверяемого закона или суждения.
Воспользуемся алгоритмом "Импульс" для доказательства того, что все аксиомы Порецкого являются теоремами:
1) a -> a = a' + a = 1,
2) ((a -> b)(b -> c)) -> (a -> c) = ((a'+b)(b'+c)) -> (a'+c) = ab'+bc'+a'+c = 1,
3) (ab) -> a = a'+b'+a = 1,
4) (ab) -> b = a'+b'+b = 1,
5) ((a -> b)(a -> c)) -> (a -> (bc)) = ((a'+b)(a'+c)) -> (a'+bc) = ab'+ac'+a'+bc = 1,
6) ((a -> b)(b -> a)) -> (a = b) = ((a'+b)(b'+a)) -> (a=b) = ab'+ba'+ab+a'b' = 1,
7) (a = b) -> (a -> b) = ab'+ba'+a'+b = 1,
8) (a = b) -> (b -> a) = ab'+ba'+b'+a = 1.
Стяжкин Н.И.[1] приводит исчисление Порецкого в виде длинного списка из более чем 20 аксиом и правил:
(1A) e = e - принцип тождества;
(2П) (e=c) -> (c=e) - симметричность равенства;
(3П) ((e=c)&(c=b)) -> (e=b) - транзитивность равенства;
(4A) ee = e - идемпотентность умножения;
(4*A) e+e = e - идемпотентность сложения;
(5A) ec = ce - коммутативность умножения;
(5*A) e+c = c+e - коммутативность сложения;
(6A) (ec)b = e(cb) - ассоциативность умножения;
(6*A) (e+c)+b = e+(c+b) - ассоциативность сложения;
(7A) e(e+c) = e - принцип поглощения;
(7*A) e+ec = e - принцип поглощения;
(9П) (e=c) -> (e+b=c+b);
(9*П) (e=c) -> (eb=cb);
(10A) e(c+b) = ec+eb;
(11A) e+e' = 1;
(11*A) e&e' = 0;
(12A) e&0 = 0;
(12*A) e&1 = e.
Нет нужды доказывать, что весь этот набор аксиом и правил на самом деле является набором теорем, которые легко выводятся по алгоритму "Импульс". Более того, на стр.377 [1] долго и многословно поясняется, как с помощью аксиом и правил можно доказать одну из теорем логических следствий Порецкого. Покажем, как просто это делается по алгоритму "Импульс"(здесь переменная e1 заменена на c):
(e=ec) -> (e=e(c+x)) = e(ec)'+e'ec+ec+ex+e'(e'+c'x') =
= ec'+ec+ex+e' = e+e' = 1.
На все случаи жизни законами и правилами не запасёшься, поэтому гораздо лучше знать одну формулу импликации и на её основе проверять все спорные ситуации. Проиллюстрируем это утверждение весьма показательным примером.
Пример 2
Дана система логических уравнений[9]:
ax = bc, bx = ac.
Найти х.
Решение
Напрашивается простой и очевидный метод решения: сложить левые и правые части уравнений. В результате получим (a+b)x = (a+b)c. Откуда после сокращения на общий множитель имеем x = c, a = b. Ответ настораживает. Действительно, сложить левые и правые части уравнений мы можем на основании правила (9П) Порецкого. Кстати, заодно и проверим это правило:
(9П) (e=c) -> (e+b=c+b) = ec'+e'c+(e+b)(c+b)+(e+b)'(c+b)' =
= ec'+e'c+ec+b+e'b'c' = 1;
Да, Порецкий не ошибся. Однако относительно сокращения на общий множитель великий русский учёный нам ничего не сообщил. А так хочется это сделать, тем более что всё очевидно, и обычная алгебра нам не запрещает подобные операции. Проверим допустимость сокращения на общий множитель с помощью алгоритма "Импульс":
(cx=cy) -> (x=y) = cx(cy)'+(cx)'cy+xy+x'y' = cxy'+cx'y+xy+x'y' 1.
Оказывается, что алгебра логики не разрешает нам этакие вольности. Решим поставленную задачу с помощью алгоритма "Селигер".
Алгоритм "Селигер" предполагает не только графическую, но и аналитическую минимизацию методом обобщённых кодов [6]. Для систем уравнений с числом аргументов не более 10 графический метод эффективнее. Минимизация в четырёхзначной комплементарной логике для двоичных аргументов несущественно отличается от минимизации в двузначной : нужно лишь проводить раздельное склеивание по i, j, 1 и 0.
По алгоритму "Селигер" :
M = (ax = bc)( bx = ac)
M' = (ax bc) + ( bx ac) = ab'x+ac'x+a'bc+bcx'+a'bx+bc'x+acx'+ab'c.
После занесения M'в карту Карно получим
M = a'b'+abcx+c'x'.
Откуда решение системы логических уравнений в соответствии с алгоритмом "Селигер" примет вид:
x(a,b,c) = abc+ia'b'+jc(ab'+a'b); x(a,c) = ac+ia'.
a(b,c,x) = bcx+ic'x'+jb(cx'+c'x); a(b,c) = bc+ic'.
Такой же результат можно получить, используя более наглядный,но и более трудоёмкий метод, представив уравнение для М в виде скалярных диаграмм.
a -------------------------======----
b -------------------------====----==
c --------------=========------------
x ------========-----===-------------
Пример 3
В [1, стр. 378] приводится пример уравнения вида
M = ab+a'c.
Если умножить обе части этого равенства на a, то получим a = ab.
Умножив обе части на a', получим a' = a'c. Это результаты Порецкого. Проверим их по алгоритму "Селигер".
Табл. 5.
abc |
M |
|
b |
a |
|
c |
a |
|
bc |
a |
110 |
1 |
|
1 |
1 |
|
0 |
1 |
|
10 |
1 |
111 |
1 |
|
1 |
1 |
|
1 |
1 |
|
11 |
1 |
001 |
1 |
|
0 |
0 |
|
1 |
0 |
|
01 |
0 |
011 |
1 |
|
1 |
0 |
|
1 |
0 |
|
11 |
0 |
Из сводной таблицы истинности получаем следующие соотношения:
a(b) = ib;
a(c) = c'+ic; a'(c) = ic;
a(b,c) = bc'+ibc+jb'c'.
Из [4] известно, что
a(b) = ib = Aab;
a(c) = c'+ic = Ac'a; a'(c) = ic = Aa'c;
Полученные уравнения изобразим в виде скалярных диаграмм[3]:
a ======------------------
b ===========----------
c ---===============
Скалярные диаграммы наглядно подтверждают правильность решения логических уравнений как по алгоритму "Селигер", так и по методу Порецкого.
Отыскание обратных функций
Используя алгоритм "Селигер" или "Селигер-С"[7
,8], можно получить полную систему обратных функций для двоичной логики. В таблице 6 приведена полная система функций двоичной логики.
Табл. 6
xy |
z0 |
z1 |
z2 |
z3 |
z4 |
z5 |
z6 |
z7 |
z8 |
z9 |
z10 |
z11 |
z12 |
z13 |
z14 |
z15 |
00 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
01 |
0 |
0 |
0 |
0 |
1 |
1 |
1 |
1 |
0 |
0 |
0 |
0 |
1 |
1 |
1 |
1 |
10 |
0 |
0 |
1 |
1 |
0 |
0 |
1 |
1 |
0 |
0 |
1 |
1 |
0 |
0 |
1 |
1 |
11 |
0 |
1 |
0 |
1 |
0 |
1 |
0 |
1 |
0 |
1 |
0 |
1 |
0 |
1 |
0 |
1 |
Перестановкой столбцов у и z исходной таблицы строим таблицу истинности для полной системы обратных функций.
Табл. 7
xz |
y0 |
y1 |
y2 |
y3 |
y4 |
y5 |
y6 |
y7 |
y8 |
y9 |
y10 |
z11 |
z12 |
z13 |
z14 |
z15 |
00 |
I |
i |
i |
i |
0 |
0 |
0 |
0 |
1 |
1 |
1 |
1 |
j |
j |
j |
j |
01 |
J |
j |
j |
j |
1 |
1 |
1 |
1 |
0 |
0 |
0 |
0 |
i |
i |
i |
i |
10 |
I |
0 |
1 |
j |
i |
0 |
1 |
j |
i |
0 |
1 |
j |
i |
0 |
1 |
j |
11 |
J |
1 |
0 |
i |
j |
1 |
0 |
i |
j |
1 |
0 |
i |
j |
1 |
0 |
i |
Аналогичную таблицу можно было бы построить и для x = f0(y,z). Из таблицы обратных функций получаем полную симметричную систему обратных функций y = f1(x,z),а по алгоритму "Селигер" - y = f2(x), x = f3(y) :
у0 = iz'+jz y0 = j x0 = j
у1 = xz+ix'z'+jx'z y1 = x+jx' x1 = 1
у2 = xz'+ix'z'+jx'z y2 = jx' x2 = y'+j
у3 = i(xz+x'z')+j(xz'+x'z) y3 = ix+jx' x3 = 1
у4 = x'z+ixz'+jxz y4 = x'+jx x4 = jy'
у5 = z y5 = 1 x5 = iy+jy'
у6 = xz'+x'z y6 = x' x6 = y'
у7 = x'z+ixz+jxz' y7 = x'+ix x7 = y'+iy
у8 = x'z'+ixz'+jxz y8 = jx x8 = jy
у9 = xz+x'z' y9 = x x9 = y
у10 = z' y10 = 0 x10 = iy'+jy
у11 = x'z'+ixz+jxz' y11 = ix x11 = y+iy'
у12 = i(xz'+x'z)+j(xz+x'z') y12 = ix'+jx x12 = 0
у13 = xz+ix'z+jx'z' y13 = x+ix' - импликация x13 = iy
у14 = xz'+ix'z+jx'z' y14 = ix' x14 = iy'
у15 = iz+jz' y15 = i x15 = iy
Кстати, переход от левой системы уравнений к правой(от f1 к f2) легко выполняется простой заменой z на 1 и z' на 0. Аналогичные результаты мы получим, если таблицу прямых функций заменим скалярными диаграммами, а из них по алгоритму ТВАТ[3,8] выведем соотношения y = f(x). Самой примечательной из полученных функций является y13 = x+ix' - импликация. Из этого выражения легко просматривается физический смысл импликации: из истинности x следует истинность y.
Решая ту же самую задачу методом Порецкого,т.е. домножая в равенстве для М левую и правую части на x, x', y, y', мы получим следующие соотношения:
y0 - нет решения x0 - нет решения
y1 = 1 x1 = 1
y2 = 0 x2 = 1
y3 = xy x3 = 1
y4 = 1 x4 = 0
y5 = 1 x5 = xy
y6 = x'y x6 = xy'
y7 = y+x' x7 = x+y'
y8 = 0 x8 = 0
y9 = xy x9 = xy
y10 = 0 x10 = xy'
y11 = xy x11 = x+y
y12 = x'y x12 = 0
y13 = x+y x13 = xy
y14 = x'y x14 = xy'
y15 = y x15 = x
Решая 1-ю задачу Порецкого[4], мы заметили аналогию между рекурсивным вхождением функции и комплементарным значением i. Резонно предположить, что такая аналогия существует между комплементарным j и рекурсивным значением инверсии функции. Проверим это предположение на полученных одноаргументных функциях и убедимся в их обратимости с помощью формулы эквивалентности. Заодно представим решение в скалярной форме.
0) (y = j) (y = y')
M = (y=y') = yy'+y'y = 0
Нет графического представления.
1) (y = x+jx') (y = x+x'y') = (y = x+y') x =============
M = (y=x+y') = y(x+y')+y'(x+y')' = xy+y'x'y = xy y =============
2) y = jx' x'y' x =============
M = (y=x'y') = yx'y'+y'(x'y')' = y'(x+y) = xy' y ----------------------
3) y = ix+jx' xy+x'y' x =============
M = (y=xy+x'y') = y(xy+x'y')+y'(xy'+x'y) = xy+xy' = x y ======------------
4) y = x'+jx x'+xy' = x'+y' x ----------------------
M = (y=x'+y') = y(x'+y')+y'(x'+y')' = x'y y =============
5) y = 1 x =======-----------
M = (y=1) = y&1+y'&0 = y y =============
6) y = x' x ========--------
M = (y=x') = xy'+x'y y -------------=====
7) y = x'+ix x'+xy = x'+y x ========--------
M = (y=x'+y) = y(x'+y)+y'(x'+y)' = y+xy' = x+y = Ax'y y --------========
8) y = jx xy' x ----------------------
M = (y=xy') = yxy'+y'(xy')' = x'y' y ---------------------
9) y = x x ======-----------
M = (y=x) = x'y'+xy y ======-----------
10) y = 0 x =======----------
M = (y=0) = y&0+y'&1 = y' y ----------------------
11) y = ix xy x =======---------
M = (y=xy) = yxy+y'(xy)' = xy+y' = x+y' = Ayx y ====--------------
12) y = ix'+jx x'y+xy' x ---------------------
M = (y=x'y+xy')=y(x'y+xy')+y'(x'y'+xy)=x'y+x'y' = x' y ====--------------
13) y = x+ix' x+x'y = x+y x ====---------------
M = (y=x+y) = y(x+y)+y'(x+y)' = y+x'y' = x'+y = Axy y ========--------
14) y = ix' x'y x =====-------------
M = (y=x'y) = yx'y+y'(x'y)' = x'y+y' = x'+y' = Exy y -------------=====
15) y=i y x =======----------
M = (y=y) = y&y+y'&y' = y+y' = 1 = Ixy(8) y ------=======----
После обращения были получены все 16 прямых функций от двух аргументов без какого-либо искажения. Это подтверждает правильность всех алгоритмов решения логических уравнений и корректность комплементарной логики. Если применить аналогичную процедуру к обратным функциям, полученным по методу Порецкого, то обратимость для М может быть обеспечена лишь при использовании сразу двух функций в виде логического произведения. Например, для y12 = x'y получим:
M = (y = x'y) = x'y+y'(x+y') = x'y+y' = x'+y',
что не соответствует исходному M = x'.
Однако, если мы используем обе обратные функции, то результат будет положительным:
M = (x=0)(y=x'y) = x'(x'y+y') = x'(x'+y') = x'.
Данное обстоятельство свидетельствует о том, что метод Порецкого не всегда даёт полное решение.