Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лобанов В И Статьи.doc
Скачиваний:
6
Добавлен:
25.08.2019
Размер:
339.97 Кб
Скачать

Аксиоматика Порецкого

В [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].

Алгоритм "Импульс"

Алгоритм анализа законов логики суждений чрезвычайно прост :

  1. произвести замену всех знаков импликации на символы дизъюнкции в соответствии с известной формулой x -> y = x' + y;

  2. привести полученное выражение с помощью закона Де Моргана к дизъюнктивной нормальной форме(ДНФ);

  3. занести ДНФ в карту Карно и убедиться, что она вся покрыта единицами - это свидетельствует о истинности проверяемого закона или суждения.

Воспользуемся алгоритмом "Импульс" для доказательства того, что все аксиомы Порецкого являются теоремами:

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'.

Данное обстоятельство свидетельствует о том, что метод Порецкого не всегда даёт полное решение.