Математическая логика
.docx1. A → B ⊢ (C & A) → (C & B)
a) Проверка выводимости методом Куайна:
По теореме дедукции, перенесём посылку в правую часть и проверим выводимость формулы:
(A→ B)→ ((C & A) → (C & B))
Подставляя С = 0, получаем:
(A → B) → ((0 & A) → (0 & B)) = (A → B) → (0 → 0) = (A → B) → 1 = 1
при любой интерпретации A и B.
Подставляя С = 1, получаем:
(A → B) → ((1 & A) → (1 & B)) = (A → B) → (A → B) = 1
при любой интерпретации A и B.
Получили, что формула (A → B) → ((C & A) → (C & B))
является тавтологией, а значит, выводима в исчислении высказываний.
б)Проверка выводимости методом редукции:
По теореме дедукции, перенесём посылку в правую часть и проверим выводимость формулы:
(A → B) → ((C & A) → (C & B))
Пусть в некоторой интерпретации наша формула имеет значение 0.
Тогда, по свойству импликации
(A → B) = 1, (C & A) → (C & B) = 0.
(A → B) = A ∨ B = 1,
значит в этой интрепретации A = 0, B =1. Но тогда:
(C & 0) → (C & 1) = 0 → C = 1
Противорчие.
в) Проверка выводимости методом резолюции:
Преобразуем в конъюнкцию предложений отдельно гипотезу и отрицание целевой функции.
A → B = A ∨ B
((C & A) → (C & B)) = ((C & A) ∨ (C & B)) = (C & A) & (C ∨B)
Резольвируем предложения:
1.A ∨ B
2. C
3. A
4. C ∨ B
5. B - по правилу резолюции из 1. и 3.
6. B - по правилу резолюции из 2. и 4.
7. из 5. и 6. получаем пустую формулу
Получена пустая формула, выводимость доказана.
2.
3.
(
(
4. Опишем сначала идею. Данные имеют вид 11111 0 11 0 111.
Сначала занулим первый и последний символ данных: 01111 0 11 0 110
Далее будем “сдвигать” эти нули к центру, пока один из них не совпадет с первоначальным нулем.
10111 0 11 0 101
11011 0 11 0 011
11101 0 11 0 111
Тогда второй ноль укажет позицию, до которой надо сдвинуть первоначальные нули, чтобы получить требуемый результат:
111010110111
|/ / - сдвиг
111011011111 - требуемый результат.
Программа:
//ставим 0 в начале и в конце
q0 1 0 R q1
q1 1 1 R q2
q1 0 0 R q3
q2 1 1 R q2
q2 0 0 R q3
q3 1 1 R q3
q3 0 0 R q4
q4 1 1 R q4
q4 0 0 L q5
//циклически двигаем нули-метки к центру
q5 1 0 L q6
q6 1 1 L q36
q6 0 0 L q7
q36 0 0 L q7
q7 1 1 L q7
q7 0 0 L q8
q8 1 1 L q8
q8 0 1 R q9
q9 1 0 R q10
q10 1 1 R q11
q11 1 1 R q11
q11 0 0 R q12
q12 1 1 R q12
q12 0 0 R q13
q13 1 1 R q13
q13 0 1 L q5
//если правый нолик-метка дошел до нолика, двигаем центровые нолики влево
q5 0 1 L q14
q14 1 0 L q15
q15 1 1 L q15
q16 1 0 R q17
q17 1 1 R q17
q17 0 1 L q14
q16 0 конец
//если левый нолик-метка дошел до нолика, двигаем правый нолик метку на одну позицию влево, потом сдвигаем центровые нолики вправо
q9 0 0 R q18
q18 1 1 R q18
q18 0 0 R q19
q19 0 1, конец
q19 1 1 R q20
q20 1 1 R q20
q20 0 1 L q21
q21 1 0 L q22
q23 1 1 L q23
q23 0 0 L q24
q24 1 1 L q24
q24 0 1 R q25
q25 1 0 R q26
q26 1 1 R q26
q26 0 1 R q27
q27 1 0 L q23
q27 1 конец
Проверим машину на данных 10101, те x=y=z=1.
Указан вид ленты, когда машина переходит в соответствующее состояние.
q0 10101
q1 00101
q2 00101
q3 00101
q4 00101
q5 00101
q6 00100
q7 00100
q8 00100
q9 10100
q18 10100
q19 10100
10101, конец