LTCT KOREA세계 논리학의 지도
영국 국기영국편 · 연재 58

THE WORLD OF LOGIC · UNITED KINGDOM / 58

같은 프로그램을 다른 컴퓨터에서 실행해도 뜻은 같을까요?

데이나 스콧과 크리스토퍼 스트레이치의 수학적 의미론을 읽습니다. 같은 정수 명령을 다른 순서로 조립하고, 반복의 결과가 언제 드러나는지 직접 계산합니다.

원전 기반 가상 대담

실제 인터뷰나 저자의 발언·승인이 아닙니다. 아래 질문·답변과 정수 예·도해는 편집부의 교육용 재구성입니다. 원전의 추상 의미 영역과 이 글의 단순한 실험 모형을 구별합니다.

읽을 순서 · 15문답과 세 실험
01

사회자 · 독자의 질문

왜 기계 명령이 아니라 수학적 대상으로 프로그램을 해석하나요?

원전 기반 재구성 답변

컴파일 결과만 보면 변수·반복·함수 같은 언어의 생각이 비트 조작 속에 묻힙니다. Scott와 Strachey는 구현 기계와 독립적으로 프로그램 구문에 수학적 대상을 대응시키려 했습니다. 같은 의미를 가진 두 구현을 비교하고 번역의 올바름을 말하려면 이 분리가 필요합니다.

사회자 기호가 다르면 값도 달라지나요?

답변 도서관 장부에 “3”, 다른 장부에 “11₂”, 또 다른 장부에 “1+2”라고 적어 봅시다. 표기법을 정하고 해석하면 세 표현은 같은 정수 3을 가리킵니다. 하지만 문자열 길이는 각각 다릅니다. 숫자를 관찰하는 일과 인쇄된 글자 수를 관찰하는 일은 다른 질문입니다. 프로그램도 먼저 무엇을 뜻으로 볼지 정해야 합니다. 여기서는 실행 시간이나 메모리 주소가 아니라 정수 입력과 종료 결과를 비교합니다. 기계가 다르다는 이유만으로 결과 의미가 달라지는 것도 아니고, 화면 결과 하나가 같다는 이유만으로 모든 입력에서 같아지는 것도 아닙니다.

생각그림 1EDUCATIONAL MODEL
기계가 달라도 비교할 뜻x에1을 더하는 구문의 정수 의미는 n을n+1로 보내는 함수다. 두 기계의 결과가 이 의미와 맞는지는 별도 검증해야 한다.기계가 달라도 비교할 뜻구문: x := x + 1수학적 의미정수 n ↦ n + 1기계 A1 → 2기계 B1 → 2결과 일치는 검증할 대상그림만으로 구현 정당성을증명한 것은 아닙니다.
편집부가 구성한 교육용 도해. 본문의 예와 원전의 일반 이론은 적용 범위를 구별합니다.

출처·범위: §0 인쇄면1–6: 표기와 의미의 구분

직접 확인: 2+3과 10−5의 문자열이 다르면, 정수 의미도 다른가요?

정수 값만 해석하면 둘 다 5입니다. 문자열 자체나 계산 단계 수를 관찰한다면 차이가 있습니다. 같은지 묻기 전에 관찰 대상을 정해야 합니다.

02

사회자 · 독자의 질문

의미함수는 무엇을 하나요?

원전 기반 재구성 답변

구문 조각을 적절한 의미 영역의 값으로 보냅니다. 식은 값 계산으로, 명령은 상태 변환으로 읽을 수 있습니다. 중요한 점은 문장 전체의 의미가 구성요소의 의미로부터 조립된다는 합성성입니다.

사회자 문장을 조립하듯 뜻도 조립해 볼까요?

답변 I(x)=x+1, D(x)=2x를 두겠습니다. “증가한 뒤 두 배”라는 문장 I;D의 뜻은 D(I(x))=2x+2입니다. “두 배 한 뒤 증가”인 D;I는 I(D(x))=2x+1입니다. 두 문장은 같은 부품을 쓰지만 결합 순서가 다릅니다. x=4를 넣으면 첫 문장은 10, 둘째 문장은 9입니다. 합성성은 부품을 아무렇게나 섞어도 된다는 뜻이 아닙니다. 구문이 지정한 구조에 맞춰 이미 정한 부품의 뜻을 조립한다는 조건입니다. 실험 1에서 두 명령의 중간 값까지 읽으면 이 차이를 확인할 수 있습니다.

생각그림 2EDUCATIONAL MODEL
작은 뜻을 조합합니다명령 x에1더하기와 두배하기를 조합하면 상태1은2를 거쳐4가 된다. 식의 값과 명령의 상태변환은 구분한다.작은 뜻을 조합합니다식 x + 1상태 x=1에서 값 2명령 x := x + 1상태 1 → 상태 2두 명령의 의미를 순서대로124+1×2전체 뜻 = 구성요소의 뜻을정해진 규칙으로 조합
편집부가 구성한 교육용 도해. 본문의 예와 원전의 일반 이론은 적용 범위를 구별합니다.

출처·범위: §1 인쇄면7–14: 명령과 순차 합성

직접 확인: x=2에서 증가→두 배의 중간 값과 마지막 값은 무엇인가요?

2→3→6입니다. 두 배→증가는 2→4→5입니다. 마지막 숫자만 맞히지 말고 중간 상태가 다음 명령의 입력이 되는지 확인합니다.

03

사회자 · 독자의 질문

상태(store)는 왜 필요한가요?

원전 기반 재구성 답변

대입 전후에 변수 값이 바뀌기 때문입니다. 이 작은 예에서는 환경을 고정하고 상태를 변수에서 값으로 가는 대응으로 단순화합니다. 그러면 x:=x+1의 의미는 한 상태를 받아 x만 1 늘린 새 상태를 내놓는 함수가 됩니다.

사회자 한 칸을 고치면 다른 칸도 바뀌나요?

답변 상태를 (x,y)=(2,9)라고 적고 x:=x+1을 실행합시다. 이 명령의 규칙은 x만 바꾸므로 결과는 (3,9)입니다. y를 보존한다는 조건도 의미의 일부입니다. x만 적힌 출력 화면에 3이 보였다고 해서 y가 보존됐다는 사실까지 확인한 것은 아닙니다. 전체 상태를 비교하려면 y도 읽어야 합니다. 이 글의 화면 실험은 정수 x 한 개만 다룹니다. 두 변수 예는 상태의 범위를 설명하기 위한 별도 손계산입니다. 실제 대출 권수에 음수가 없더라도 실험에서는 함수 비교를 위해 음의 정수도 허용합니다.

생각그림 3EDUCATIONAL MODEL
대입은 한 칸을 바꿉니다이 단순한 변수에서값으로 가는 상태표에서 x=1,y=7을 x:=x+1로 바꾸면 x=2,y=7이다. y는 보존된다.대입은 한 칸을 바꿉니다변수 → 값으로 단순화한 상태x = 1y = 7x := x+1x = 2y = 7x의 새 값은 이전 x에서 계산다른 변수 y는 그대로환경은 고정한 예입니다.
편집부가 구성한 교육용 도해. 본문의 예와 원전의 일반 이론은 적용 범위를 구별합니다.

출처·범위: §1 인쇄면7–8; 정수 대입은 편집부 예

직접 확인: (x,y)=(5,8)에서 x:=2*x 뒤에 y:=y+1을 실행하면?

첫 명령 뒤 (10,8), 둘째 뒤 (10,9)입니다. 첫 명령은 y를 읽거나 바꾸지 않고, 둘째는 x를 읽거나 바꾸지 않습니다.

04

사회자 · 독자의 질문

환경(environment)과 상태는 같은가요?

원전 기반 재구성 답변

환경은 식별자에 뜻을 연결하는 대응입니다. 원전 §4의 작은 언어에서는 명령 식별자를 상태변환에 연결합니다. 예를 들어 bump라는 이름에 “정수를 1 늘리는 함수”를 연결할 수 있습니다. 변수 이름→저장 위치→현재 값이라는 익숙한 설명은 별도의 교육용 확장입니다. 원전 §5는 위치를 값의 한 종류로 도입하지만 대입의 전체 의미론은 자세히 전개하지 않습니다. 두 설명을 같은 정의처럼 섞지 않겠습니다.

사회자 이름의 뜻을 바꾸는 것과 저장된 값을 바꾸는 것은 어떻게 다른가요?

답변 첫 패널에서는 ρ(bump)=I로 두고 bump를 실행합니다. I(x)=x+1이므로 x=3이 4가 됩니다. 같은 이름을 ρ′(bump)=D로 다시 연결하면 같은 입력 3에서 6을 얻습니다. 이것은 이름이 가리키는 명령의 뜻을 바꾼 경우입니다. 둘째 패널은 다른 교육용 모형입니다. 이름 x가 위치 L7을 가리키고 저장소의 L7 값이 3이라면, L7의 값을 4로 고쳐도 이름이 가리키는 위치는 그대로입니다. 두 패널은 서로 다른 대응 관계를 보여 줍니다. 원전의 명령 환경을 곧바로 메모리 주소표라고 부르면 안 되는 이유입니다.

생각그림 4EDUCATIONAL MODEL
환경의 대상을 구분합니다원전4절의환경은명령이름bump를상태변환에대응시킨다.아래의변수x에서위치L7과값3으로가는그림은별도로정한편집부예이며원전4절의정의와같지않다.환경의 대상을 구분합니다원전 §4 · 명령 이름의 환경ρ(bump) = 상태변환정수 x를 x+1로 바꾸기편집부의 별도 변수·위치 예이름 x위치 L₇현재 값 3두 그림은 환경의 대상이 다릅니다.원전의 같은 정의로 읽지 않습니다.
편집부가 구성한 교육용 도해. 본문의 예와 원전의 일반 이론은 적용 범위를 구별합니다.

출처·범위: §4 인쇄면26–27; 위치의 언급은 §5 인쇄면31

직접 확인: ρ(bump)=I와 ρ′(bump)=D에서 입력 2의 결과를 비교해 보세요.

I(2)=3, D(2)=4입니다. 같은 식별자라도 환경이 달라지면 그 식별자의 의미가 달라질 수 있습니다.

05

사회자 · 독자의 질문

순차 실행의 의미는 어떻게 합치나요?

원전 기반 재구성 답변

먼저 C1의 상태변환을 적용하고 그 결과에 C2를 적용하므로 함수 합성으로 나타냅니다. 실행 순서를 거꾸로 합성하면 결과가 달라질 수 있어 표기 순서와 적용 순서를 직접 확인해야 합니다.

사회자 다른 칸을 바꾸는 명령이면 순서를 바꿔도 괜찮나요?

답변 서로 다른 칸에 쓴다는 사실만으로는 부족합니다. (x,y)=(1,2)에서 x:=y 뒤에 y:=x를 실행하면 먼저 (2,2)가 되고 끝까지 (2,2)입니다. 순서를 바꾸면 첫 명령 y:=x 뒤에 (1,1)이 되고 마지막도 (1,1)입니다. 두 명령은 상대가 바꾼 칸을 읽기 때문에 결과가 달라집니다. 반면 x:=x+1과 y:=y+1은 서로의 칸을 읽지 않으므로 이 정수 모형에서 순서를 바꿔도 (2,3)입니다. 부작용·오류·공유 위치가 없는 지금의 조건을 벗어나면 다시 따져야 합니다.

생각그림 5EDUCATIONAL MODEL
순서가 바뀌면 결과도입력1에 증가뒤두배를 적용하면4이고 두배뒤증가를 적용하면3이다. C1;C2의 의미는 C2를C1다음에적용한다.순서가 바뀌면 결과도C₁: +1 C₂: ×2C₁ 다음 C₂1 → 2 → 4C₂ 다음 C₁1 → 2 → 3⟦C₁; C₂⟧(s)= ⟦C₂⟧(⟦C₁⟧(s))합성 표기에서 안쪽 함수가먼저 적용됩니다.
편집부가 구성한 교육용 도해. 본문의 예와 원전의 일반 이론은 적용 범위를 구별합니다.

출처·범위: §1 인쇄면10–14; 두 변수 반례는 편집부 예

직접 확인: I;D의 의미를 I∘D라고 쓰면 어떤 실수가 생기나요?

통상적인 함수 합성에서 I∘D는 D를 먼저 적용합니다. I;D를 나타내려면 D∘I라고 써야 합니다. x=1에서 잘못 쓴 식은 3, 올바른 식은 4입니다.

06

사회자 · 독자의 질문

조건문은 어떻게 수학식이 되나요?

원전 기반 재구성 답변

조건이 참이면 첫 명령을, 거짓이면 둘째 명령을 고릅니다. 이 글의 예에서는 조건을 검사해도 상태가 바뀌지 않는다고 정합니다. 원전 §1은 조건 평가가 상태도 바꿀 수 있는 더 넓은 틀을 다룹니다. 화면의 세 실험은 순차 실행·유한 입력 대조·반복 근사이며, 일반 조건문 실행기를 별도로 제공하는 것은 아닙니다.

사회자 조건이 거짓일 때도 두 분기를 모두 실행하나요?

답변 “x<3이면 x에 1을 더하고, 아니면 그대로 둔다”고 정합시다. x=2에서는 조건이 참이므로 3, x=4에서는 거짓이므로 4입니다. 고르지 않은 분기는 실행하지 않습니다. 이 예의 조건은 x를 읽기만 합니다. 만약 조건 검사 자체가 방문 횟수를 늘린다면 조건 평가 뒤의 상태를 선택한 분기에 전달해야 합니다. 같은 참·거짓 값이 나왔다고 상태까지 같다고 할 수 없습니다. 여기서는 그런 부작용 조건을 구현하지 않았으므로 실제 언어의 조건 평가 전체를 실험 결과로 보증하지 않습니다.

생각그림 6EDUCATIONAL MODEL
조건에 맞는 한 갈래if x<3 then x:=x+1 else skip에서입력2는참갈래로3,입력4는거짓갈래로4가된다.조건에 맞는 한 갈래조건: x < 3참거짓x := x+1입력 2 → 3skip입력 4 → 4각 입력에서는 선택된한 갈래의 뜻을 적용합니다.조건식이 결과를 못 내는 경우는별도의 의미 규칙이 필요합니다.
편집부가 구성한 교육용 도해. 본문의 예와 원전의 일반 이론은 적용 범위를 구별합니다.

출처·범위: §1 인쇄면11–14; 화면은 부작용 없는 조건만 사용

직접 확인: x=3에서 “x<3이면 증가, 아니면 두 배”의 결과는?

3<3은 거짓이므로 두 배 분기를 골라 6이 됩니다. “이하”와 “미만”을 혼동하면 틀립니다.

07

사회자 · 독자의 질문

반복문은 왜 고정점이 필요한가요?

원전 기반 재구성 답변

반복의 의미를 정의하려면 그 반복 자체의 의미를 다시 참조하게 됩니다. 유한 횟수 근사들을 아래에서 쌓고, 이를 보존하는 연속적 함수의 최소 고정점으로 반복의 의미를 잡습니다.

사회자 반복 전체를 한 번 더 펼치면 무엇이 보이나요?

답변 W를 while x<3 do x:=x+1의 뜻이라고 합시다. 입력 x가 3 이상이면 W(x)=x입니다. 입력 x가 3보다 작으면 한 번 증가한 x+1에서 나머지 반복을 수행하므로 W(x)=W(x+1)입니다. x=1을 넣으면 W(1)=W(2)=W(3)=3이 됩니다. 이 식은 원하는 관계를 쓰지만, 모든 재귀식에서 그것만으로 유일한 답을 정하는 것은 아닙니다. 항상 참인 조건에 skip을 반복하면 식은 W(x)=W(x)가 되어 아무 결과나 허용하는 듯 보입니다. 그래서 종료 정보를 근거 없이 더하지 않는 최소 해를 고르는 기준이 필요합니다.

생각그림 7EDUCATIONAL MODEL
반복의 뜻을 다시 참조while x<3 do x:=x+1의의미w는조건이참일때w(x+1),거짓일때x이다.입력0은1,2,3을거쳐3을반환한다.반복의 뜻을 다시 참조F(g)(x) = g(x+1), x<3F(g)(x) = x, x≥3구할 반복의 뜻: w = F(w)x=0x=1x=2x=3조건 거짓 → 3 반환
편집부가 구성한 교육용 도해. 본문의 예와 원전의 일반 이론은 적용 범위를 구별합니다.

출처·범위: §2 인쇄면15–19: 재귀 명령의 방정식

직접 확인: 항상 참인 조건에서 skip을 반복하는 식 W(x)=W(x)만으로 종료 결과를 정할 수 있나요?

정할 수 없습니다. 임의의 상수 함수도 식을 만족합니다. 최소 부분함수 의미는 어떤 입력에도 종료 결과를 주지 않는 ⊥ 함수입니다.

08

사회자 · 독자의 질문

왜 ⊥에서 시작하나요?

원전 기반 재구성 답변

⊥는 아직 결과 정보가 없는 계산을 나타냅니다. w₀는 모든 입력에 대해 결과 미정인 함수입니다. “본문을 0번 실행해 입력을 그대로 반환한다”는 뜻이 아닙니다. wₙ₊₁(s)는 조건이 거짓이면 s이고, 참이면 wₙ(본문(s))입니다. 근사 번호를 늘리며 더 많은 종료 입력의 결과를 알게 됩니다. 유한한 관측에서 결과가 아직 없다는 사실만으로 비종료를 증명하지는 않습니다. 오류와 ⊥를 자동으로 같게 두지는 않습니다.

사회자 w₀부터 직접 표를 채워 볼까요?

답변 w₀는 모든 입력에서 ⊥입니다. w₁은 조건이 이미 거짓인 입력만 반환합니다. 그래서 w₁(3)=3이지만 w₁(2)는 w₀(3)=⊥입니다. 다음 w₂(2)=w₁(3)=3, w₃(1)=w₂(2)=3, w₄(0)=w₃(1)=3이 됩니다. 입력 0에서는 본문을 세 번 실행하지만 결과를 알게 되는 근사 번호는 4입니다. 종료 조건을 확인하는 한 층이 필요하기 때문입니다. 반대로 입력 4는 본문을 한 번도 실행하지 않지만 w₀(4)는 여전히 ⊥이고 w₁(4)=4입니다. 근사 번호를 실행 횟수라고 읽지 마세요.

생각그림 8EDUCATIONAL MODEL
근사 번호와 실행 횟수w0는모든입력에서bottom이다.입력0은w0부터w3까지bottom,w4에서3이고입력3은w0에서bottom,w1부터3이다.근사 번호와 실행 횟수while x<3 do x:=x+1근사입력 0입력 3w0⊥⊥w1⊥3w2⊥3w3⊥3w433w₀는 입력을 그대로 돌려주는0회 실행 함수가 아닙니다.유한 관측의 ⊥만으로비종료를 단정하지 않습니다.
편집부가 구성한 교육용 도해. 본문의 예와 원전의 일반 이론은 적용 범위를 구별합니다.

출처·범위: §3 인쇄면20–25; 구체 while 표는 편집부 예

직접 확인: 입력 x=−1이면 처음 결과가 나타나는 근사는 몇 번째인가요?

본문을 네 번 실행해 3에 도달한 뒤 조건이 거짓임을 확인하므로 w₅(−1)=3입니다. 화면이 w₄까지만 보여 준다면 끝까지 ⊥가 남아도 비종료라고 결론낼 수 없습니다.

09

사회자 · 독자의 질문

재귀식도 같은 방법으로 다룰 수 있나요?

원전 기반 재구성 답변

재귀 정의가 만드는 함수 F를 세우고 F를 반복 적용해 최소 고정점을 구합니다. 교육용 유한 표는 원리를 보여 줄 뿐, 무한 영역에서의 존재 정리는 완비성과 연속성 같은 조건을 따로 요구합니다.

사회자 팩토리얼도 밑에서부터 계산할 수 있나요?

답변 자연수 입력에 대해 f₀(k)=⊥, fₙ₊₁(0)=1, fₙ₊₁(k)=k·fₙ(k−1)(k>0)로 정합시다. ⊥에 수를 곱한 결과는 ⊥로 둡니다. f₁은 0의 결과 1만 알고, f₂는 1의 결과 1까지, f₃는 2의 결과 2까지, f₄는 3의 결과 6까지 압니다. 이 계산에서 음수 입력은 정의하지 않았습니다. 팩토리얼 표는 반복 근사와 같은 발상을 보여 주는 별도 예이며 화면의 while 실험에 숨겨진 기능은 아닙니다. 유한 표 몇 칸이 모든 재귀 함수의 수렴을 증명하지도 않습니다.

생각그림 9EDUCATIONAL MODEL
재귀도 아래에서 근사편집부팩토리얼모형fn+1(0)=1,fn+1(k)=k fn(k−1)에서f0는모든입력에bottom이다.f4에서0,1,2,3의결과1,1,2,6을얻는다.재귀도 아래에서 근사F(g)(0)=1F(g)(k)=k·g(k−1), k>0⊥에 수를 곱해도 ⊥함수0123f0⊥⊥⊥⊥f11⊥⊥⊥f211⊥⊥f3112⊥f41126열 머리 숫자는 입력입니다.존재 정리의 조건은 따로 필요표는 유한 계산 예입니다.
편집부가 구성한 교육용 도해. 본문의 예와 원전의 일반 이론은 적용 범위를 구별합니다.

출처·범위: §3 인쇄면20–25; 자연수 팩토리얼 표는 편집부 예

직접 확인: f₂(2)와 f₃(2)는 각각 얼마인가요?

f₂(2)=2·f₁(1)=⊥입니다. f₃(2)=2·f₂(1)=2입니다. 0에서 시작한 정보를 한 번에 한 층씩 확장합니다.

10

사회자 · 독자의 질문

의미가 구현과 독립적이면 실행 비용은 사라지나요?

원전 기반 재구성 답변

이 논문의 목표 의미론에서는 우선 무엇을 계산하는지를 정합니다. 얼마나 빠른지, 메모리를 얼마나 쓰는지는 별도 비용 의미론이나 구현 분석이 필요합니다. 같은 결과 의미라도 효율은 다를 수 있습니다.

사회자 답이 같아도 느린 프로그램이 있을 수 있나요?

답변 P를 x:=x+2, Q를 x:=x+1; x:=x+1로 둡시다. 무한 정수 모형에서 모든 입력에 대해 둘 다 x+2를 냅니다. 단순히 명령문 한 개를 비용 1로 세면 P는 비용 1, Q는 비용 2입니다. 이 비용은 편집부가 정한 문장 수이며 실제 CPU 시간의 측정값이 아닙니다. 컴파일러가 두 프로그램을 같은 기계 명령으로 바꿀 수도 있습니다. 따라서 결과 의미가 같다는 증명과 어느 쪽이 빠른지의 측정은 다른 검증입니다. 같은 결과를 낸다는 이유만으로 더 싸거나 안전하다고 결론내리지 않습니다.

생각그림 10EDUCATIONAL MODEL
같은 결과, 다른 명령문 수정수입력x에x+2를한번계산하는명령과x+1을두번계산하는명령의최종값은같다.명령문 한 개를 비용 1로 센 가상 비용은 1과 2이며 실제 속도 측정이 아니다.같은 결과, 다른 명령문 수A: x := x + 2입력 1 → 결과 3명령문 1개B: x := x + 1; x := x + 1입력 1 → 2 → 결과 3명령문 2개최종 정수만 관찰하면 같음정한 비용까지 관찰하면 다름이 횟수는 가상 비용 모형입니다.실제 컴퓨터 속도 측정이 아닙니다.
편집부가 구성한 교육용 도해. 본문의 예와 원전의 일반 이론은 적용 범위를 구별합니다.

출처·범위: §0의 구현 독립성과 구별되는 편집부 비용 예

직접 확인: P와 Q가 같은 결과를 내면 메모리 사용량도 같다고 할 수 있나요?

아닙니다. 지금 의미 모형에는 메모리 사용량이 관찰 항목으로 들어 있지 않습니다. 그것을 비교하려면 비용 모형이나 실제 측정 조건을 추가해야 합니다.

11

사회자 · 독자의 질문

함수 호출은 어떻게 해석하나요?

원전 기반 재구성 답변

함수 호출의 뜻을 정하려면 인수를 언제 평가하고 어떤 환경에서 몸체를 해석하는지 밝혀야 합니다. 아래 계산은 부작용 없는 값 전달 방식을 택한 편집부의 작은 예입니다. 원전 §5의 프로시저는 인수와 상태를 받아 결과 값과 바뀐 상태를 내놓을 수 있습니다. 이 범위를 단순한 정수 함수 하나와 같다고 주장하지 않습니다.

사회자 작은 호출 하나를 처음부터 끝까지 읽어 주세요.

답변 부작용 없는 값 전달 예로 f(a)=a+1, 호출 f(2+2)를 고릅시다. 먼저 인수 2+2를 계산해 4를 얻고, 매개변수 a에 값 4를 연결한 환경에서 몸체 a+1을 계산해 5를 얻습니다. 밖에 같은 이름 a=100이 있어도 이 예에서는 함수 안의 매개변수 a가 4를 가리킵니다. 반환 뒤 바깥 a는 100으로 남습니다. 이는 이름의 범위를 설명하려고 고른 단순한 규칙입니다. 실제 언어의 참조 전달·이름 전달·부작용·클로저 전체가 이 예 하나로 결정되지 않으며, PRG-6의 프로시저 공간 전체를 재현한 것도 아닙니다.

생각그림 11EDUCATIONAL MODEL
호출 규칙을 먼저 정합니다순수함수f(a)=a+1을값전달로호출한다.인수식2+2를4로평가하고매개변수a에4를연결하여몸체a+1에서5를얻는다.호출 규칙을 먼저 정합니다편집부 예 · 순수 값 전달f(2 + 2)인수식 평가: 4매개변수 a ↦ 4몸체 a + 1 → 5저장 공유·부작용이 있는 호출은이 예만으로 설명하지 않습니다.
편집부가 구성한 교육용 도해. 본문의 예와 원전의 일반 이론은 적용 범위를 구별합니다.

출처·범위: §5 인쇄면30–31: 값과 상태를 받는 프로시저; 값 전달 예는 별도 단순화

직접 확인: 바깥 a=10일 때 같은 예의 f(3)은 얼마이며 바깥 a는 어떻게 되나요?

반환 값은 4, 바깥 a는 10입니다. 이 예는 매개변수의 지역 바인딩을 사용하고 바깥 저장소를 바꾸는 부작용을 두지 않았습니다.

12

사회자 · 독자의 질문

의미식이 프로그램 실행기인가요?

원전 기반 재구성 답변

의미식은 구현 절차를 지시하는 코드라기보다 프로그램이 뜻하는 수학적 대상을 규정합니다. 식을 계산 가능하게 만들 수는 있지만, 논문의 주된 구분은 의미와 구현을 섞지 않는 데 있습니다.

사회자 정수 뜻과 실제 기계의 실행을 어떻게 비교하나요?

답변 뜻을 I(n)=n+1로 정해도 컴퓨터가 무한한 정수를 한 번에 저장할 수 있다는 결론은 나오지 않습니다. 예를 들어 0부터 255까지만 담는 8비트 부호 없는 저장소를 택하고 넘치면 0으로 돌아간다고 정합시다. 입력 4에서는 수학식과 기계 모두 5를 냅니다. 입력 255에서는 수학식이 256을 내지만 이 기계 규칙은 0을 냅니다. 그러므로 입력 범위를 0..254로 제한하거나, 더 큰 정수 표현을 쓰거나, 넘침을 뜻에 포함해야 합니다. 어떤 선택을 했는지 없이 구현이 올바르다고 말할 수 없습니다. 그림은 비교해야 할 관계를 보여 주며 두 구현의 일치를 증명한 그림은 아닙니다.

생각그림 12EDUCATIONAL MODEL
뜻의 명세와 구현수학적명세n↦n+1과구체구현을구분한다.구현의입력표현과출력표현을정수로해석했을때명세와맞아야하며유한범위나오버플로정책은별도조건이다.뜻의 명세와 구현수학적 명세정수 n ↦ n+1맞는지 비교할 관계구체 구현기계의 비트·저장·명령정수 표현 방식과 허용 입력오버플로 정책을 정해야구현의 올바름을 비교할 수 있음
편집부가 구성한 교육용 도해. 본문의 예와 원전의 일반 이론은 적용 범위를 구별합니다.

출처·범위: §0 구현과 의미의 구분; §5의 위치 언급과 구별되는 편집부 8비트 예

직접 확인: 8비트 순환 규칙에서 255에 1을 더한 결과와 정수 의미를 비교해 보세요.

순환하는 기계 결과는 0, 무한 정수 의미는 256입니다. 허용 입력을 제한하지 않았다면 이 구현은 I(n)=n+1의 모든 정수 입력을 그대로 구현한 것이 아닙니다.

13

사회자 · 독자의 질문

두 프로그램의 의미가 같다는 말은 무엇인가요?

원전 기반 재구성 답변

이 글의 결정적·단일 스레드 모형에서는 입력 상태마다 종료 여부와 최종 상태가 같은지 비교합니다. 출력값이나 상태의 일부만 관찰한다면 그것은 더 약한 관찰 동등성입니다. 어떤 기계와 자료형을 정했는지도 중요합니다. 원전 §4의 모델 안에서의 동치와, 편집부가 정한 관찰 범위를 구별하겠습니다.

사회자 화면에 x만 보여 주면 무엇을 놓치나요?

답변 P가 (x,y)를 (1,0)으로, Q가 (1,9)로 만드는 두 프로그램이라고 합시다. 화면에 x만 보여 주면 둘 다 1이므로 구별되지 않습니다. x와 y를 함께 관찰하면 곧바로 구별됩니다. 처음부터 최종 상태 전체가 같다고 정의했다면 P와 Q는 동치가 아닙니다. 제한된 화면에서 같아 보인다는 사실은 더 약한 명제입니다. 실험 2는 x만 가진 정수 상태와 다섯 입력이라는 두 가지 제한을 모두 사용합니다. 화면에서 “같다”고 읽을 때는 바로 옆에 적힌 그 범위를 함께 읽어야 합니다.

생각그림 13EDUCATIONAL MODEL
무엇을 관찰하나요?두프로그램의최종상태가x=1,y=0과x=1,y=9이면x만보는관찰은같고전체상태관찰은다르다.무엇을 관찰하나요?프로그램 P의 최종 상태x=1, y=0프로그램 Q의 최종 상태x=1, y=9x만 관찰: 1 = 1전체 상태: (1,0) ≠ (1,9)동치의 기준을 함께 밝혀야 합니다.
편집부가 구성한 교육용 도해. 본문의 예와 원전의 일반 이론은 적용 범위를 구별합니다.

출처·범위: §4 인쇄면28–29의 모형 상대적 동치; 관찰 투영 예는 편집부 구성

직접 확인: y가 보이지 않는 화면에서 같았다는 관찰로 전체 상태 동치를 증명할 수 있나요?

없습니다. 관찰하지 않은 성분이 다를 수 있습니다. 반례의 P와 Q는 x 관찰에서는 같고 전체 (x,y) 관찰에서는 다릅니다.

14

사회자 · 독자의 질문

작은 상태표로 일반 정리를 증명할 수 있나요?

원전 기반 재구성 답변

아닙니다. 화면 실험의 상태는 정수 x 한 개이며, 동치 대조 입력은 −2, −1, 0, 1, 2의 다섯 값입니다. 이 표는 반례를 찾고 합성 규칙을 이해하는 교육용 모형입니다. 모든 프로그램에 대한 정당성은 원문의 영역·함수 조건과 수학적 증명을 따로 요구합니다.

사회자 다섯 입력을 모두 통과해도 반례가 남을 수 있나요?

답변 P(x)=x, Q(x)=x가 3이면 4를 반환하고 그 밖에는 x를 반환한다고 정합시다. 시험 입력 −2,−1,0,1,2에서는 두 프로그램의 결과가 모두 같습니다. 그러나 입력 3에서는 P(3)=3, Q(3)=4입니다. 표의 모든 칸을 확인했다는 사실은 표 밖의 입력을 확인했다는 뜻이 아닙니다. 실험 2가 다섯 입력의 성공을 전체 정수 동치 증명이라고 부르지 않는 이유입니다. 반례 하나는 전칭 주장을 깨뜨릴 수 있지만, 성공한 사례를 많이 모았다는 것만으로 무한한 전칭 주장이 완성되지는 않습니다.

생각그림 14EDUCATIONAL MODEL
다섯 입력은 모든 입력일까요?P(x)=x와Q(x)는x=3일때4이고그외에는x이다.다섯입력−2,−1,0,1,2에서는같지만3에서는다르다.다섯 입력은 모든 입력일까요?P(x) = xQ(x) = 4, x=3일 때Q(x) = x, 나머지 입력입력PQ-2-2-2-1-1-1000111222334유한 검사 통과는전체 정수에서의 동치 증명이 아님
편집부가 구성한 교육용 도해. 본문의 예와 원전의 일반 이론은 적용 범위를 구별합니다.

출처·범위: §4 인쇄면29의 동치와 유한 검사 범위의 구별

직접 확인: 시험 입력에 3을 추가하면 무엇이 달라지나요?

반례가 드러나 두 함수가 같다는 주장을 반박할 수 있습니다. 다만 새 표를 통과한 다른 함수들이 모든 정수에서 같다는 보장은 여전히 없습니다.

15

사회자 · 독자의 질문

이번 글의 결론은 어디까지인가요?

원전 기반 재구성 답변

구문을 상태·함수·고정점과 연결하면 프로그램의 의미를 구현 기계와 분리해 구성적으로 설명할 수 있습니다. 다만 실제 언어의 예외, 동시성, 입출력 전체를 이 작은 모형이 포괄한다고 주장하지 않습니다.

사회자 마지막으로 무엇을 실제로 확인한 셈인가요?

답변 정수 명령의 순서, 다섯 입력에서의 결과 비교, while 근사의 처음 다섯 층을 실제 계산했습니다. 각 결과는 명령의 규칙과 초기값에서 다시 계산할 수 있습니다. 별도 손계산에서는 환경의 종류, 교차 읽기, 팩토리얼 근사, 비용과 관찰 범위를 구별했습니다. 이 글을 읽고 확인할 질문은 “같다”라는 말 뒤에 어떤 입력·상태·종료·관찰 조건이 붙어 있는가입니다. 이 조건을 빠뜨린 채 실제 은행·시험·대출 시스템의 정확성을 보증해서는 안 됩니다. 작은 모형의 검산과 운영 시스템 검증은 각각 필요한 증거가 다릅니다.

생각그림 15EDUCATIONAL MODEL
구문에서 뜻으로 읽는 길구문,환경과상태,함수조합,반복의고정점을연결한다.예외와동시성과입출력전체는이교육모형범위밖이다.구문에서 뜻으로 읽는 길구문: 무엇을 썼나?환경과 상태무엇을 가리키고 저장하나?함수의 조합입력을 어떻게 바꾸나?고정점반복의 뜻은 어떻게 정하나?범위 밖: 예외·동시성·입출력 전체작은 모형의 결론을 넓히지 않기
편집부가 구성한 교육용 도해. 본문의 예와 원전의 일반 이론은 적용 범위를 구별합니다.

출처·범위: §6 인쇄면39–41; 이 글의 적용 범위 정리

직접 확인: 실험 3에서 x=−10의 w₄가 ⊥이면 프로그램이 영원히 끝나지 않는다는 뜻인가요?

아닙니다. 이 반복은 3까지 열세 번 증가하고 w₁₄에서 결과 3이 나타납니다. 지금 화면이 보여 주는 근사 범위 밖일 뿐입니다.

직접 실험 · 순서, 유한 입력, 반복 근사

정수 연산은 BigInt로 계산합니다. 음의 정수도 허용하며 실제 대출 권수나 기계 정수 오버플로를 재현하는 모형은 아닙니다. 입력은 20자리 이하의 정수입니다.

1. 명령 순서를 바꾸면?

2. 유한 입력에서 비교하기

현재 고른 두 명령과 반대 순서를 x=-2,-1,0,1,2에서 대조합니다. 다른 결과를 찾으면 첫 반례를 보여 줍니다.

3. w₀와 ‘0번 실행’은 다릅니다

w₀(x)=⊥입니다. wₙ₊₁(x)는 조건이 거짓이면 x이고, 참이면 wₙ(본문(x))입니다.

본문은 x:=x+1입니다. 유한 표의 ⊥는 아직 종료 결과를 얻지 못했다는 뜻이며, 이것만으로 비종료를 증명하지 않습니다.

출처와 적용 범위

  1. Dana Scott · Christopher Strachey (1971)

    Toward a Mathematical Semantics for Computer Languages, Oxford Technical Monograph PRG-6, August 1971. Oxford 공식 PDF는 표지 등을 포함한 49페이지이며 본문의 인쇄면은 1–43입니다. 인쇄면 1은 PDF 뷰어의 7번째 페이지입니다. DOI를 추정해 넣지 않았습니다.

  2. 직접 대조한 중심 범위

    §0 표기와 의미, §1 상태·명령·합성, §2 재귀 방정식, §3 격자·최소 고정점, §4 명령 식별자 환경과 모형 상대적 동치, §5의 프로시저 도입 부분을 대조했습니다. 고차 재귀 영역의 전체 구성·모든 증명·실제 프로그래밍 언어를 독립 검증했다고 주장하지 않습니다.

  3. 원전의 영역과 편집부 모형

    원전은 §3에서 아래·위 원소를 덧붙인 완비 격자와 연속 함수 공간을 설명합니다. 여기의 정수·⊥ 반복 표는 부분함수 근사를 보여 주는 단순화이며 원전의 모든 영역 구성과 동일하지 않습니다. 명령 이름의 환경과 변수 이름·저장 위치 표도 서로 다른 설명입니다. 8비트 순환·팩토리얼·비용·관찰 투영 예는 별도의 손계산입니다.

  4. 이번 실험이 하지 않는 일

    실제 기계의 실행 시간·입출력·동시성·예외·권한·컴파일러 정확성을 검사하지 않습니다. 유한 입력에서 성공한 결과를 모든 정수 또는 모든 프로그램의 동치 증명으로 확대하지 않습니다.

읽기를 마치며

명령의 뜻을 정하고, 그 뜻을 순서대로 조합하고, 반복에서 아직 모르는 결과와 이미 확인한 결과를 나눠 보았습니다. “같다”라는 결론에는 입력과 관찰 범위가 따라붙습니다. 그 범위를 정확히 적는 일도 검증의 일부입니다.

처음으로
포함된 서체의 라이선스 보기
Copyright 2014-2021 Adobe (http://www.adobe.com/), with Reserved Font Name 'Source'

This Font Software is licensed under the SIL Open Font License, Version 1.1.
This license is copied below, and is also available with a FAQ at:
https://scripts.sil.org/OFL


-----------------------------------------------------------
SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007
-----------------------------------------------------------

PREAMBLE
The goals of the Open Font License (OFL) are to stimulate worldwide
development of collaborative font projects, to support the font creation
efforts of academic and linguistic communities, and to provide a free and
open framework in which fonts may be shared and improved in partnership
with others.

The OFL allows the licensed fonts to be used, studied, modified and
redistributed freely as long as they are not sold by themselves. The
fonts, including any derivative works, can be bundled, embedded, 
redistributed and/or sold with any software provided that any reserved
names are not used by derivative works. The fonts and derivatives,
however, cannot be released under any other type of license. The
requirement for fonts to remain under this license does not apply
to any document created using the fonts or their derivatives.

DEFINITIONS
"Font Software" refers to the set of files released by the Copyright
Holder(s) under this license and clearly marked as such. This may
include source files, build scripts and documentation.

"Reserved Font Name" refers to any names specified as such after the
copyright statement(s).

"Original Version" refers to the collection of Font Software components as
distributed by the Copyright Holder(s).

"Modified Version" refers to any derivative made by adding to, deleting,
or substituting -- in part or in whole -- any of the components of the
Original Version, by changing formats or by porting the Font Software to a
new environment.

"Author" refers to any designer, engineer, programmer, technical
writer or other person who contributed to the Font Software.

PERMISSION & CONDITIONS
Permission is hereby granted, free of charge, to any person obtaining
a copy of the Font Software, to use, study, copy, merge, embed, modify,
redistribute, and sell modified and unmodified copies of the Font
Software, subject to the following conditions:

1) Neither the Font Software nor any of its individual components,
in Original or Modified Versions, may be sold by itself.

2) Original or Modified Versions of the Font Software may be bundled,
redistributed and/or sold with any software, provided that each copy
contains the above copyright notice and this license. These can be
included either as stand-alone text files, human-readable headers or
in the appropriate machine-readable metadata fields within text or
binary files as long as those fields can be easily viewed by the user.

3) No Modified Version of the Font Software may use the Reserved Font
Name(s) unless explicit written permission is granted by the corresponding
Copyright Holder. This restriction only applies to the primary font name as
presented to the users.

4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font
Software shall not be used to promote, endorse or advertise any
Modified Version, except to acknowledge the contribution(s) of the
Copyright Holder(s) and the Author(s) or with their explicit written
permission.

5) The Font Software, modified or unmodified, in part or in whole,
must be distributed entirely under this license, and must not be
distributed under any other license. The requirement for fonts to
remain under this license does not apply to any document created
using the Font Software.

TERMINATION
This license becomes null and void if any of the above conditions are
not met.

DISCLAIMER
THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE
COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM
OTHER DEALINGS IN THE FONT SOFTWARE.


DejaVu Sans license and copyright:

Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
Upstream-Name: DejaVu fonts
Upstream-Author: Stepan Roh <src@users.sourceforge.net> (original author),
                  see /usr/share/doc/fonts-dejavu-core/AUTHORS for full list
Source: https://dejavu-fonts.github.io/

Files: *
Copyright: Copyright (c) 2003 by Bitstream, Inc. All Rights Reserved. 
 Bitstream Vera is a trademark of Bitstream, Inc.
 DejaVu changes are in public domain.
License: bitstream-vera
 Permission is hereby granted, free of charge, to any person obtaining a copy
 of the fonts accompanying this license ("Fonts") and associated
 documentation files (the "Font Software"), to reproduce and distribute the
 Font Software, including without limitation the rights to use, copy, merge,
 publish, distribute, and/or sell copies of the Font Software, and to permit
 persons to whom the Font Software is furnished to do so, subject to the
 following conditions:
 .
 The above copyright and trademark notices and this permission notice shall
 be included in all copies of one or more of the Font Software typefaces.
 .
 The Font Software may be modified, altered, or added to, and in particular
 the designs of glyphs or characters in the Fonts may be modified and
 additional glyphs or characters may be added to the Fonts, only if the fonts
 are renamed to names not containing either the words "Bitstream" or the word
 "Vera".
 .
 This License becomes null and void to the extent applicable to Fonts or Font
 Software that has been modified and is distributed under the "Bitstream
 Vera" names.
 .
 The Font Software may be sold as part of a larger software package but no
 copy of one or more of the Font Software typefaces may be sold by itself.
 .
 THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
 OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF MERCHANTABILITY,
 FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF COPYRIGHT, PATENT,
 TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL BITSTREAM OR THE GNOME
 FOUNDATION BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, INCLUDING
 ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL DAMAGES,
 WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF
 THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM OTHER DEALINGS IN THE
 FONT SOFTWARE.
 .
 Except as contained in this notice, the names of Gnome, the Gnome
 Foundation, and Bitstream Inc., shall not be used in advertising or
 otherwise to promote the sale, use or other dealings in this Font Software
 without prior written authorization from the Gnome Foundation or Bitstream
 Inc., respectively. For further information, contact: fonts at gnome dot
 org.

Files: debian/*
Copyright: (C) 2005-2006 Peter Cernak <pce@users.sourceforge.net> 
           (C) 2006-2011 Davide Viti <zinosat@tiscali.it>
           (C) 2011-2013 Christian Perrier <bubulle@debian.org>
           (C) 2013 Fabian Greffrath <fabian+debian@greffrath.com>
License: GPL-2+
 This program is free software; you can redistribute it
 and/or modify it under the terms of the GNU General Public
 License as published by the Free Software Foundation; either
 version 2 of the License, or (at your option) any later
 version.
 .
 This program is distributed in the hope that it will be
 useful, but WITHOUT ANY WARRANTY; without even the implied
 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
 PURPOSE.  See the GNU General Public License for more
 details.
 .
 You should have received a copy of the GNU General Public
 License along with this package; if not, write to the Free
 Software Foundation, Inc., 51 Franklin St, Fifth Floor,
 Boston, MA  02110-1301 USA
 .
 On Debian systems, the full text of the GNU General Public
 License version 2 can be found in the file
 /usr/share/common-licenses/GPL-2'.