논리학 기초

프로그램의 작은 부분만 증명하고도 전체를 믿을 수 있을까?

Reynolds의 분리논리 해설을 따라 분리곱과 프레임 규칙이 서로 겹치지 않는 힙 영역에 대한 국소 추론을 어떻게 가능하게 하는지 살핍니다.

전체 힙 안에 P가 소유한 x 셀, Q가 소유한 y 셀, 명령이 건드리지 않는 z 프레임을 서로 분리해 놓은 도식.
LTCT가 분리곱과 프레임의 개념을 새로 구성한 교육용 도식입니다. 원문 프로그램이나 그림을 복제하지 않았습니다.
그림 크게 열기 ↗SVG 저장

그림에서 무엇을 볼까요?

전체 힙 안에 P가 소유한 x 셀, Q가 소유한 y 셀, 명령이 건드리지 않는 z 프레임을 서로 분리해 놓은 도식.

가상 힙에 x, y, z 세 셀이 있습니다. 왼쪽 명령은 x, 오른쪽 명령은 y를 소유하고 z는 어느 명령도 건드리지 않는 프레임이라고 합시다. 두 소유 영역이 다르면 분리곱으로 조립할 수 있고, z의 값은 명령 전후에 그대로 유지된다고 추론할 여지가 생깁니다.

아래 활동에서 두 명령의 소유 셀을 같은 값으로 바꾸면 충돌이 나타납니다. 프레임 셀을 명령 소유 셀과 겹치게 하면 ‘건드리지 않는 나머지’라는 가정도 깨집니다. 실제 프로그램 검증기가 아니라 소유권 조건을 확인하는 유한 교육 모형입니다.

함께 확인할 점

논문은 논리 체계와 프로그램 예시를 다룬 이론·해설 연구이지 학습 효과를 측정한 교육 실험이 아닙니다.

실제 동시성, 공유 읽기 권한, 약한 메모리 모형, 복잡한 언어 기능에는 추가 논리와 도구가 필요합니다. 단순한 독점 셀 모형만으로 모든 프로그램 안전을 보장할 수 없습니다.

생각해 볼 질문

두 명령이 같은 셀을 읽기만 해도 반드시 충돌하나요?

← 논리학 기초 그림 더 보기