Uploaded by Flah Gordon

Курсовая работа по дисциплине «Математическая логика и теория алгоритмов» Тема «Исчисление высказываний генценовского типа»

advertisement
Замечания руководителя
Содержание
Введение
1
Теоретическая часть
1.1 Исчисление высказываний генценовского типа
2
Практическая часть
2.1 Логическое следствие
2.2 Дедуктивный вывод заключения
2.3 Метод резолюций в исчислении высказываний
2.4 Алгебра предикатов
2.5 Доказательство примитивной рекурсивности функций
2.6 Построение машины Тьюринга
Заключение
Библиографический Список
1
4
5
5
11
11
12
13
15
17
18
21
22
Введение.
Широкое использование аксиоматического метода в построении
математических теорий стало одной из важных причин появления и
развития математической логики. При таком подходе выбирается система
основных неопределяемых понятий и отношений между ними, далее,
постулируется
система
свойств
основных
понятий
и
отношений,
называемых аксиомами. Новые понятия теории вводятся через основные
или ранее определенные, а утверждения выводятся из аксиом или из ранее
доказанных утверждений.
Всякую математическую теорему можно записать в виде импликации,
выделив условие и заключение. При доказательстве теоремы из ее условия
по определенным правилам получают заключение, при этом говорят, что
заключение является логическим следствием условия или что оно выводимо
из условия. Алгебра высказываний дает точное определение понятия
выводимости.
Однако чтобы непосредственно применять алгебру высказываний к
высказываниям математики, нужно предположить, что для каждого
высказывания выполняется закон исключенного третьего. Поэтому
возникла необходимость в построении математической логики, как
формально-аксиоматической (синтаксической) теории, которая ставит себе,
в частности, задачу обосновать этот закон, доказав, что использование его
не приводит к противоречию. Такой аксиоматической теорией, адекватной
алгебре высказываний, является исчисление высказываний.
2
Теоретическая часть.
2.1 Исчисление высказываний генценовского типа
Исчисление высказываний генценовского типа, предложенное Генценом,
в качестве выражений использует секвенции, построенные из формул алгебры
логики. Это исчисление будет обозначаться через ИС.
Определим элементы исчисления высказываний ИС. Алфавит ИС состоит
из букв A, B, Q, P, R и других, возможно, с индексами (которые называются
пропозициональными
переменными),
логических
символов
(связок)
отрицания ¬, конъюнкции ∧, дизъюнкции ∨, импликации →, следования `, а
также вспомогательных символов: левой скобки (, правой скобки ), запятой ,.
Множество формул ИС определяется индуктивно:
а) все пропозициональные переменные являются формулами ИС (такие
формулы называются элементарными или атомарными);
б) если ϕ, ψ — формулы ИС, то ¬ϕ, (ϕ ∧ ψ), (ϕ ∨ ψ), (ϕ → ψ) — формулы
ИС;
в) выражение является формулой ИС тогда и только тогда, когда это может
быть установлено с помощью пунктов “а” и “б”. Таким образом, любая
формула ИС строится из пропозициональных переменных с помощью связок
¬, ∧, ∨, →. В дальнейшем при записи формул будем опускать некоторые
скобки, используя те же соглашения, что и в алгебре логики.
Секвенциями называются конечные выражения следующих двух видов,
где ϕ1, . . . , ϕn, ψ — формулы ИС:
ϕ1, . . . , ϕn ⎯ ψ (“из истинности ϕ1, . . . , ϕn следует ψ”),
ϕ1, . . . , ϕn
⎯ (“система формул ϕ1, . . . , ϕn противоречива”).
Последовательности формул ϕ1, . . . , ϕn в секвенциях будут часто обозначаться
через Γ (возможно, с индексами): Γ ⎯ψ, Γ ⎯. При этом последовательность
Γ считается пустой при n = 0. Значит, записи ` ψ и ` также являются
3
секвенциями, первая из которых может читаться как утверждение о
доказуемости формулы ψ. Смысл секвенции ⎯ будет указан в § 1.5.
Таким образом, наряду с формулами, символизирующими простые или
сложные высказывания, секвенции являются записями утверждений, в
которых выделяются посылки и заключение.
Множество аксиом ИС определяется следующей схемой секвенций: ϕ ⎯
ϕ, где ϕ — произвольная формула ИС.
Аксиомами являются, например, секвенции A ∧B ⎯ A ∧ B и
A → A1 → B ∨ C ∧D ⎯ A →A1 → B ∨ C ∧D.
Правила вывода ИС задаются следующими записями, где Γ, Γ 1 —
произвольные (возможно пустые) конечные последовательности формул ИС,
ϕ, ψ, χ — произвольные формулы ИС.
1.
2.
3.
Г⊢𝜙;Г⊢𝜓
(введение ∧).
Г⊢(𝜙∧𝜓)
Г⊢(𝜙∧𝜓)
Г⊢𝜙
Г⊢(𝜙∧𝜓)
Г⊢𝜓
(удаление ∧).
(удаление ∧).
4.
Г⊢𝜙
(введение ∨).
Г⊢(𝜙 ∨𝜓)
5.
Г⊢𝜓
(введение ∨).
Г⊢(𝜓∨𝜙)
6.
7.
8.
9.
Г,𝜙⊢𝜓;Г,𝜒⊢𝜓;Г⊢(𝜒∨𝜙)
Г⊢𝜓
Г,𝜙⊢𝜓
Г⊢(𝜙→𝜓)
(введение →).
Г⊢𝜙;Г⊢(𝜙→𝜓)
Г⊢𝜓
̅⊢
Г,𝜙
Г⊢𝜙
(удаление ∨, или правило разбора двух случаев).
(удаление →).
(удаление ¬, или доказательство от противного).
4
10.
11.
12.
̅
Г⊢𝜙;Г⊢𝜙
Г⊢
(выведение противоречия).
Г⊢𝜙
Г,𝜓,𝜙,Г1⊢𝜒
Г⊢𝜙
Г,𝜓⊢𝜙
(перестановка посылок).
(утончение, или правило лишней посылки).
Вывод S0, . . . , Sn в ИС называется линейным доказательством. Секвенция
S называется доказуемой в ИС, или теоремой ИС, если существует линейное
доказательство S0, . . . , Sn в ИС, заканчивающееся секвенцией S: Sn = S.
Формула ϕ называется доказуемой в ИС, если в ИС доказуема секвенция ⎯ ϕ.
Определим по индукции понятие дерева секвенций:
1) любая секвенция является деревом секвенций;
2) если D0, . . . , Dn — деревья секвенций и S — секвенция, то запись
𝐷0 ; . . . ; 𝐷𝑛
𝑆
также является деревом секвенций;
3) любое дерево секвенций строится в соответствии с пп. 1 и 2.
Вхождением секвенции в дерево D называется место, которое секвенция
занимает в дереве. Каждая секвенция может иметь несколько вхождений в
дерево секвенций. Вхождение секвенции в дерево D, над (под) которым нет
горизонтальной
черты,
называется
начальным
(соответственно
заключительным).
Из определения дерева секвенций ясно, что начальных секвенций в дереве
может быть несколько, а заключительная секвенция единственна.
Часть дерева, состоящая из секвенций, находящихся непосредственно над
некоторой чертой, под той же чертой, а также самой черты, называется
переходом.
Дерево D называется доказательством в ИС в виде дерева, если все его
начальные секвенции суть аксиомы ИС, а переходы осуществляются по
правилам 1–12. Дерево D называется доказательством секвенции S в виде
5
дерева в ИС, или деревом вывода S в ИС, если D — доказательство в ИС и S
— его заключительная секвенция.
Наличие
линейного
доказательства
секвенции
равносильно
существованию доказательства секвенции в виде дерева:
Предложение: Секвенция S имеет доказательство в ИС в виде дерева тогда
и только тогда, когда S — теорема ИС.
Очевидно, что представление доказательства в виде дерева более наглядно
и позволяет проследить все переходы по правилам вывода.
Приведем доказательство секвенций ϕ ∧ ψ ⎯ ψ ∧ ϕ в виде дерева для
любых формул ϕ и ψ:
1.
𝜙 ∧ 𝜓 ⊢ 𝜙⋀𝜓
𝜙 ∧ 𝜓 ⊢ 𝜙⋀𝜓
3
2
𝜙∧𝜓⊢𝜓
𝜙∧𝜓 ⊢ 𝜙
𝜙 ∧ 𝜓 ⊢ 𝜓⋀𝜙
Правило
𝑆0 ; ...; 𝑆𝑛
𝑆
называется допустимым в ИС, если из выводи- мости в
ИС секвенций S0, . . . , Sn следует выводимость в ИС секвенции S.
Заметим, что допустимость правила равносильна тому, что его добавление
в исчисление ИС не расширяет множество доказуемых секвенций.
Следующие правила допустимы в ИС:
(а)
(б)
𝜓1 ,...,𝜓𝑚 ⊢ϕ
(расширение посылок);
𝜒1 ,...,𝜒𝑛 ⊢ϕ
𝜓1 ,...,𝜓𝑚 ⊢
𝜒1 ,...,𝜒𝑛 ⊢
(расширение посылок), где в пп. (а) и (б) выполняется
{ψ1, . . . , ψm} ⊆ {χ1, . . . , χn};
(в)
(г)
(д)
Г⊢𝜙;Г,𝜙⊢𝜓
Г⊢𝜓
(сечение);
Г1, 𝜙,𝜓,Г⊢𝜒
Г1, 𝜙⋀𝜓,Г⊢𝜒
Г1, 𝜙⋀𝜓,Г⊢𝜒
Г1, 𝜙,𝜓,Г⊢𝜒
(объединение посылок);
(расщепление посылок);
6
Г,𝜙⊢𝜒;Г,𝜓⊢𝜒
(е)
Г,𝜙∨𝜓⊢𝜒
(ж)
(з)
̅
Г⊢𝜙∧𝜙
Г⊢
Г⊢
Г⊢𝜓
(разбор случаев);
(выведение противоречия);
(выведение из противоречия);
(и)
Г,𝜙⊢
̅ (контрапозиция);
Г⊢𝜙
(к)
Г⊢𝜙
̅ ⊢ (контрапозиция);
Г,𝜙
(л)
Г,𝜙⊢𝜓
̅ ⊢𝜓
̅ (контрапозиция);
Г,𝜙
(м)
(н)
(о)
̅ ⊢𝜓
̅
Г,𝜙
Г,𝜙⊢𝜓
(доказательство от противного);
ϕ0 ,...,ϕ𝑛 ⊢𝜓
⊢((ϕ0 ∧ ...∧ϕ𝑛 )→𝜓)
⊢((ϕ0 ∧ ...∧ϕ𝑛 )→𝜓)
ϕ0 ,...,ϕ𝑛 ⊢𝜓
(введение ∧ и →);
(удаление ∧ и →).
Доказательство. Допустимость правила
Г,𝜙,𝜙⊢𝜓
Г,𝜙⊢𝜓
показывается следующим
деревом:
𝜙⊢𝜙
Г, 𝜙, 𝜙 ⊢ 𝜓
11,12
7
Г, 𝜙 ⊢ 𝜙;
Г, 𝜙 ⊢ 𝜙 → 𝜓
8
Г, 𝜙 ⊢ 𝜓
Допустимость правила (а) следует из допустимости указанного правила с
помощью правил 11 и 12. Допустимость правила (б) вытекает из правил (а),
(ж) и (з).
Использование допустимых правил вывода позволяет во многих случаях
приводить
сокращенные
доказательства
секвенций,
которые
при
необходимости можно преобразовать в доказательства секвенций в виде
деревьев в ИС.
7
Правило называется равносильным, если доказуемость (единственной)
секвенции, стоящей над чертой, равносильна доказуемости секвенции,
стоящей под чертой.
Пусть V = {Pi | i ∈ ω} — множество всех пропозициональных переменных
ИС, F — множество всех формул ИС. Любая функция s : V → F называется
подстановкой пропозициональных переменных. Для любой формулы ϕ ∈ F
обозначим через s(ϕ) формулу, получающуюся из ϕ заменой всех
пропозициональных переменных P, входящих в ϕ, на формулы s(P).
Если s(P0) = P1 ∨P2, s(P1) = P1 →P3, ϕ =P0 ∧ P1, то s(ϕ) = (P1 ∨P2) ∧ (P1
→P3).
Для любой секвенции (последовательности формул) R обозначим через
s(R) секвенцию (последовательность формул), получающуюся из R заменой
всех пропозициональных переменных P, входящих в R, на формулы s(P).
Таким образом, отображение s естественным образом расширяется на
множество всех выражений исчисления ИС.
Следующая теорема утверждает, что подстановкой в доказуемую
секвенцию произвольных формул вместо пропозициональных переменных
получается также доказуемая секвенция.
Теорема (теорема о подстановке). Если s — подстановка, R — секвенция,
то R s(R) — допустимое правило.
8
Практическая часть
2.1 Логические Следствия
Задание №1
Определить все логические следствия из данных посылок:
X →Y, X  Y
Алгоритм:
1. Образуется конъюнкция всех посылок X 1 , X 2 ,..., X n .
2. Полученная конъюнкция приводится к СКНФ.
3. Множество всех формул, равносильных следствиям из данных
посылок, образуют произведения сомножителей СКНФ, взятых по одному, по
два и так далее.
(X →Y)(X  Y)  ( X  Y)  (X  Y) – СКНФ
Следствия: X  Y; X  Y;( X  Y)  (X  Y)
Задание №2
Определить все посылки, логическим следствием которых является данная
формула:
XY
1. Данная формула приводится к СКНФ.
2. Составляются ее произведения с каждым из недостающих до
соответствующей полной СКНФ множителей – по одному, по два и так далее
9
(под полной понимается СКНФ тождественно ложной формулы с теми же
переменными).
Для нахождения СКНФ составим таблицу истинности для выражения:
XY
X Y
XY
0
0
0
0
1
0
1
0
0
1
1
1
( X  Y )  ( X Y)  (X  Y) – СКНФ
(X Y) – недостающий множитель
( X  Y )  ( X Y)  (X  Y)  (X Y)  0 – полная СКНФ
2.2 Дедуктивный вывод заключения
Задание №3
Доказать истинность заключения дедуктивным методом и нарисовать
граф вывода заключения:
( B → A ); ( B → (A  C )) ⎯ ( B → (B  C ))
Преобразуем с помощью равносильных преобразований:
( B → (A  C ) B A  C A B  C  A  (B → C ) 
A → (B → C )
10
B → A, A → (B → C ) ⎯ B → (B  C )
Граф вывода заключения рис 3.1
( B → (A  C)
B→A
A → (B → C)
B → (B  C )
Рис. 3.1
2.3 Метод резолюций в исчислении высказываний
Задание №4
Составить таблицу истинности. Доказать истинность заключения по
методу резолюции и нарисовать граф вывода пустой резольвенты.
( B → A ); ( B → (A  C )) ⎯ ( B → (B  C ))
Алгоритм:
1. Придать отрицание заключению, т. е. B .
2. Привести все формулы посылок и отрицания заключения к
конъюнктивной нормальной форме.
3. Выписать множество дизъюнктов всех посылок и отрицания заключения
S = {D1, D2, …, Dk }.
4. Выполнить анализ пар множества S по правилу:
«если существуют дизъюнкты Di и Dj, один из которых (Di) содержит
переменную А, а другой (Dj) – контрарную переменную А , то соединить эту
пару логической связкой дизъюнкции (DiDj) и сформировать новый
дизъюнкт – резольвенту, исключив контрарные литеры А и А ».
11
F = ( B → A )  ( B → (A  C )) → ( B → (B  C ))
Для полученной формулы составим таблицу истинности, если полученная
формула является тождественно истинной, то заключение выводимо из
посылок, иначе не выводимо.
A B C B→A
B→ (AC )
B→ (BC )
(B→A)  B→ (AC ) F
0 0 0
1
1
1
1
1
0 0 1
1
1
1
1
1
0 1 0
0
1
0
0
1
0 1 1
0
1
1
0
1
1 0 0
1
1
1
1
1
1 0 1
1
1
1
1
1
1 0 0
1
0
1
0
1
1 0 1
1
1
1
1
1
Найдем КНФ:
B → A  B A
B → ( A  C)  B  A  C
B → (B  C)  B  B  C  B  C  B  C
( B  A)  ( B  A  C)  B  C - КНФ
S={B  A,B A  С, B,C }
12
resa(B  A, B A  С ) = B B  С B  С
S1={B  С, B,C }
resb(B  С, B ) = C
S2={ С,C }
resC( С,C) = 0
Граф вывода пустой резольвенты рис.3.1
B  A
B A  С
B  С
B
C
С
0
Рис.3.1
2.4 Алгебра предикатов
Задание №5
Найти формулы ПНФ и ССФ.
x(A(x) →B(y)) → y(B(y) →A(x))
Алгоритм:
Шаг 1. Исключить всюду логические операции → и  по правилам:
F1→F2 F1 F2;
(F1F2)=(F1→F2) (F2→F1)=( F1 F2)( F2 F1).
Шаг 2. Продвинуть отрицание до элементарной формулы по правилам:
xF(x) x( F (x) ),
F1  F2  F1  F2 ,
xF(x) x( F (x) ),
F1  F2  F1  F2 .
13
Шаг 3. Переименовать связанные переменные по правилу: «найти самое
левое вхождение предметной переменной такое, что это вхождение связано
некоторым квантором, но существует еще одно вхождение этой же
переменной; затем сделать замену связанного вхождения на вхождение новой
переменной», операцию повторять до тех пор, пока возможна замена
связанных переменных;
Шаг 4. Вынести кванторы влево по законам алгебры логики.
Шаг 5. Преобразовать бескванторную матрицу к виду КНФ. Алгоритм
приведения матрицы формулы к виду КНФ приведен в алгебре высказываний.
Найдем ПНФ:
x( A( x) → B( y)) → y( B( y) → A( x)) 
x( A( x)  B( y)) → y( B( y)  A( x)) 
x( A( x)  B( y ))  y ( B( y )  A( x)) 
x( A( x)  B( y ))  y ( B( y )  A( x)) 
x( A( x)  B( y ))  y ( B( y )  A( x)) 
x( A( x)  B( y))  y( B( y)  A( x)) 
v( A(v)  B( y))  y( B( y)  A( x)) 
v( A(v)  B( y))  z( B( z)  A( x)) 
v( A(v)  B( y))  z( B( z)  A( x)) 
vz(( A(v)  B( y))  ( B( z)  A( x))) 
vz(( A(v)  B( z)  A( x))  ( B( y)  B( z)  A( x)))  - ПНФ
Найдем ССФ:
Алгоритм:
Шаг 1. Представить формулу F в виде ПНФ, т. е.
14
F=x1x2xn(M), где i{; }.
Шаг 2. Найти в префиксе самый левый квантор существования:
a) Если квантор находится на первом месте префикса, то вместо
переменной,
связанной
квантором
существования,
подставить
всюду
предметную постоянную a, отличную от встречающихся предметных
постоянных в матрице формулы, а квантор существования удалить;
б) если квантор находится не на первом месте префикса, т. е. x1x2xi1xi
.., то выбрать (i–1)-местный функциональный символ, отличный от
функциональных символов матрицы М и выполнить замену предметной
переменной xi, связанной квантором существования, на функцию f(x1,x2 ,, xi1)
и квантор существования удалить.
Шаг 3. Найти следующий справа квантор существования и перейти шагу
2, иначе конец.
vz(( A(v)  B( z)  A( x))  ( B( y)  B( z)  A( x))) 
z(( A(a)  B( z)  A( x))  ( B( y)  B( z)  A( x))) 
( A(a)  B(b)  A( x))  ( B( y)  B(b)  A( x))  - ССФ
2.5 Доказательство примитивной рекурсивности функций
Задание 6
Доказать, что функция примитивно рекурсивна:
f(x) = 2x
f(0)= 20=1
следовательно, функция примитивно
f(x+1)= 2x+1=2*2x=2* f(x)
рекурсивна
15
x
f(x) = 2x
по схеме
0
f (0) =20=1
f (0)=1
1
f (1) =21=2
f (1) =2*f(0)=2*1=2
2
f (2) =22=4
f (2) =2*f(1)=2*2=4
n
f (n) =2n
f (n) =2* f (x,n-1)=2*2n-1=2*2n*2-1=2n
2.6 Построение машины Тьюринга
Задание №7
Построить Машину Тьюринга, вычисляющую функцию
0, если x = 0,
f ( x) = 
1, если x  0
Основные свойства алгоритма дискретности, детерминированности,
массовости и результативности позволяют представить процесс вычисления
какой-либо числовой функции с помощью абстрактной математической
машины. Эта машина за конечное число шагов из исходных числовых
данных в соответствии с заданными правилами может получить искомый
числовой результат.
Такая модель алгоритма была предложена английским математиком
Тьюрингом в конце 30-х годов прошлого столетия, что почти на два
десятилетия опередило появление электронных вычислительных машин и
послужило их теоретическим прообразом.
Машина Тьюринга состоит из информационной ленты, считывающей и
записывающей головки и управляющего устройства.
Информационная лента бесконечной длины представляет собой
последовательность ячеек, в каждую из которых может быть записан в
16
точности только один символ из множества сим-волов алфавита А = { a0; a1;
a2; ... an}; последовательность символов на ленте формирует слово a = (a1;
a2; ... ai). Информационную ленту чаще всего называют внешней памятью
машины Тьюринга; поскольку символы на информационной ленте
предназначены для считывания, то множество этих символов тождественно
множеству терминальных символов формальной грамматики. Один из
символов алфавита А выделяют, например, a0 и называют его пустым. Его
наличие в ячейке означает, что она пустая.
Считывающая-записывающая головка обозревает одну ячейку
информационной ленты, передает информацию о содержимом ячейки в
управляющее устройство и по указанию последнего сохраняет или изменяет
содержимое ячейки.
Управляющее устройство представляет собой такой механизм, который
на каждом шаге вычисления находится в одном из множества состояний Q =
{q1; q2; ... qm}; в зависимости от состояния управляющего устройства qi и
считанного символа aj из обозреваемой ячейки информационной ленты
возбуждается команда на стирание или запись символа в обозреваемую ячейку, перевод управляющего устройства в новое состояние и перемещение
головки на соседнюю ячейку информационной ленты; множество состояний
управляющего устройства чаще всего называют внутренней памятью
машины Тьюринга; поскольку символы внутренней памяти не выводятся на
информационную ленту, то множество этих символов тождественно
множеству нетерминальных символов формальной грамматики; среди всех
состояний управляющего устройства следует выделить q1 – начальное
состояние («старт») и q0 – конечное состояние, («стоп»), что облегчит
формализацию протоколов отдельных машин Тьюринга и последующую
композицию для реализации сложных вычислений. Для формализации
перемещений головки относительно информационной ленты введем
дополнительный алфавит W = {R; L; S}, где R – означает перемещение
17
головки вправо на одну ячейку информационной ленты, L – влево на одну
ячейку и S – останов.
Работа машины происходит по программе, состоящей из отдельных
команд. Структура команды имеет вид:
где - символ, считываемый головкой с ленты, - состояние, в котором
находится устройство управления машины, - символ, который головка
записывает в обозреваемую ячейку, - состояние, в которое переходит
устройство управления машины, W - команда перемещения головки.
Построить машину Тьюринга – означает написать программу ее работы.
Построим машину Тьюринга для заданной выше функции:
1q1→1 q2R
0q2→0 q0L
1q2→1 q3R
1q3→0 q3R
1q3→1 q4L
0q4→0 q4L
1q4→1 q0L
18
Заключение.
Рассмотрев один из разделов логики высказываний, можно прийти к
выводу, что математическая логика
и теории алгоритмов является
необходимым средством для создания средств обработки и передачи
информации, а также представление моделей на компьютерах.
19
БИБЛИОГРАФИЧЕСКИЙ СПИСОК
1. Новиков Ф.А. Дискретная математика для программистов /Ф.А.
Новиков. СПб.: Питер, 2004. 364 с.
2. Судоплатов С.В. Элементы дискретной математики / С.В. Судоплатов,
Е.В. Овчинникова. М.: ИНФРА-М, 2002. 280 с.
3. Судоплатов С.В. Математическая логика и теория алгоритмов: учебник
/ С.В. Судоплатов, Е.В. Овчинникова. М.: ИНФРА-М, 2004. – 224 с.
4. Иванов Б.Н. Дискретная математика. Алгоритмы и программы / Б.Н.
Иванов. М.: Лаборатория базовых знаний, 2003. – 288 с.
5. Кузнецов О.П. Дискретная математика для инженера / О.П. Кузнецов.
СПб.: Лань, 2005. – 400 с.
6. Лавров И.А. Задачи по теории множеств, математической логике и
теории алгоритмов / И.А. Лавров, Л.Л. Максимова. М.: ФИЗМАТЛИТ, 2004.
– 256 с.
7. Гаврилов Г.П. Задачи и упражнения по дискретной математике: учеб.
пособие / Г.П. Гаврилов, А.А. Сапоженко. 3-е изд., перераб. – М.:
ФИЗМАТЛИТ, 2005. – 416 с.
20
Download