요약
표준형 수업에서는 모든 논리식이 선언 표준형과도, 연언 표준형과도 동치임을 증명했다. 이 수업에서는 그것들을 진리표 없이 계산하는 방법과 그것들을 사용하는 방법을 배운다. 계산은 세 단계로 이루어진 다시 쓰기 알고리즘이다. 먼저 쌍조건, 배타적 선언, 부정 논리합, 함언을 제거한다. 다음으로 드 모르간 법칙과 이중 부정으로 부정을 변항까지 내린다. 그리고 분배한다. 선언 표준형을 위해서는 연언을 선언에 대해, 연언 표준형을 위해서는 선언을 연언에 대해 분배한다. 알고리즘의 올바름(의미론적 대체의 귀결이다)과 종료성(각 단계의 각 스텝에서 감소하는 수치적 척도에 의한다)을 증명하고, 그 한계도 증명한다. 곧, 두 변항의 연언 개의 선언에 대한 연언 표준형은 반드시 개의 절을 가진다. 이어서 내부를 볼 수 없는 장치의 진리표로부터 표준형을 구하고, 이웃한 행의 병합으로 간단히 하며, 직렬과 병렬의 스위치 회로로 바꾼다. 네 개의 스위치를 가진 장치 문제는 표, 두 표준형, 회로와 함께 완전히 풀리고, 다섯 개의 스위치 문제는 도전 과제로 남는다.
학습 목표
- 다시 쓰기 알고리즘을 적용하여 논리식의 선언 표준형과 연언 표준형을 구하고, 쌍조건이 나타나는 위치에 따라 알맞은 제거 방법을 고른다.
- 알고리즘이 올바르다는 것을 의미론적 대체로, 멈춘다는 것을 각 스텝에서 감소하는 척도로 증명하고, 연언 표준형이 원래 논리식보다 지수적으로 길어질 수 있는 이유를 설명한다.
- 블랙박스의 표준형을 그 진리표로부터 구성하고, 이웃한 행의 병합으로 간단히 한다.
- 직렬과 병렬의 스위치 회로를 논리식으로 나타내고, 자연어로 주어진 명세를 만족하는 회로를 설계하고 간단히 한다.
표준형 수업에서는 그 존재에 대해 두 가지 증명을 제시했다. 첫째 증명은 진리표를 거친다. 그 표의 행 수는 이다(변항이 개일 때). 둘째 증명은 논리식을 그 유일한 형성 규칙에 따라 변항으로부터 따라간다. 어느 쪽도 함언, 쌍조건, 중첩된 부정으로 쓰인 논리식 앞에서 어떻게 진행해야 하는지는 말하지 않는다. 그런데 논리식은 보통 그런 모습으로 나타난다. 그렇다면, 표기 자체 위에서 작동하고, 생각하지 않고도 실행할 수 있으며, 멈춘다는 것과 동치인 논리식을 준다는 것이 확실한 절차가 빠져 있는 것이다. 그것이 알고리즘이며, 그 연구가 이 수업의 첫째 대상이다. 둘째 대상은 그것으로 하는 일, 곧 장치의 동작을 논리식으로 기술하고 그것을 재현하는 회로를 구성하는 일이다.
표기와 대체
이 코스의 논리식은 흰 동그라미와 검은 동그라미의 기호열이며, , , , , , 의 각 기호는 부정 논리합으로부터 정의된 약기였음을 떠올리자(명제 논리의 언어 수업). 식 을 쓸 때 우리는 기호열을 쓰는 것이 아니라 그 표기를 쓰는 것이다. 표기는 트리이며, 그 잎은 변항이고 노드는 결합자 , , , , , , 의 하나이며, 각 노드는 자신의 성분을 가진다. 모든 표기는 단 하나의 논리식, 곧 그 약기를 풀어서 얻는 논리식을 가리킨다. 그리고 같은 논리식이 여러 표기를 가질 수 있다. 표준형 수업에서는 식 와 식 이 같은 기호열임을 지적했다. 알고리즘이 읽는 것은 표기이지 기호열이 아니다. 그래서 둘을 구별해 두는 것이 좋다. 이 구별은 각 스텝이 어디에 작용하는지를 알기 위해서만 중요하므로, 문자 , , 를 표기에도, 그것이 가리키는 논리식에도 사용하며, 가리켜진 논리식이 의미론적으로 동치일 때 이라고 쓴다. 표기의 부분 표기란 그 노드 하나를 뿌리로 하는 부분 트리이다.
알고리즘의 한 스텝은 어떤 부분 표기를 다른 부분 표기로 바꾼다. 이 바꿈이 의미를 바꾸지 않음을 보장하는 도구는 의미론적 귀결과 동치 수업의 의미론적 대체 정리이다. 그러나 그 정리는 기호열 안의 한 출현을 바꾸는 것이고, 하나의 부분 표기는 기호열 안의 여러 출현에 대응할 수 있다. 각 약기가 자신의 성분을 복제하기 때문이다. 식 에서는 성분 가 두 번 나타난다. 다음 보조정리는 대체를 표기에 맞게 고친다.
표기 이 있고, 는 그 부분 표기의 하나, 은 조건 를 만족하는 표기라고 하자. 표기 가 의 그 부분 표기를 로 바꾸어 얻어진다면, 관계 이 성립한다.
증명
부분 표기 의 뿌리가 놓인 노드의 깊이, 곧 그 노드 위에 있는 의 결합자 개수에 대한 귀납법으로 증명한다. 깊이가 이면 부분 표기는 표기 전체이다.
깊이가 보다 크면 의 뿌리는 결합자 이고 그 성분은 이며( 도, 단 결합자 이 이항일 때), 부분 표기 은 그중 하나, 예를 들어 안의 노드에 뿌리를 두고 깊이가 더 작다. 귀납 가정에 의해 안에서의 변경은 동치인 표기를 준다.
파생 결합자의 값 정리(명제 논리의 의미론 수업)와 부정 논리합의 조항에 의해, 진리값 할당에서 의 값은 와 의 값의 함수이며, 이 값들은 바뀌지 않는다. 따라서 와 는 모든 진리값 할당에서 같은 값을 가진다.
여기서 은 결합자의 진리 함수이다. 예컨대 , 이며, 다른 결합자도 마찬가지이다. 같은 결과는 의미론적 대체 정리를 기호열 안의 의 각 사본에 한 번씩 적용하고, 동치를 추이성으로 이어서도 얻을 수 있다. 표기에 의한 증명이 더 짧은 것은 사본이 아니라 쓰인 결합자를 세기 때문이다.
콘텐츠를 불러오는 중…