LTCT KOREA세계 논리학의 지도
덴마크 국기덴마크편 · 연재 60

THE WORLD OF LOGIC · DENMARK / 60

프로그램이 한 단계씩 움직이면,
전체 실행을 설명할 수 있을까요?

대출기에 책 두 권이 기록돼 있습니다. 한 권을 더 올리면 장부와 화면 중 어느 쪽이 먼저 바뀔까요? 오르후스에서 쓴 고든 플롯킨의 강의노트로 한 번의 전이와 그 근거를 읽습니다.

원전 기반 가상 대담15개의 질문3가지 규칙 실험
이 대담의 성격

1981년 오르후스 강의노트를 바탕으로 편집부가 구성한 가상 대담입니다. 도서관 대출기는 전이의 크기를 설명하려고 만든 사례입니다. 본문은 원전의 규칙과 사례에 덧붙인 규칙을 구분합니다.

Q

사회자 · 독자의 질문

대출 승인이 뜨기 전, 장부를 이미 바꿨을까요?

P

플롯킨의 논의를 재구성한 답변

화살표를 따라가고, 그 화살표를 허용한 규칙을 살핍니다.

이번 글의 흐름 살펴보기

PART I · 01–05

대출 장부와 식의 한 단계

01
사회자

도서관 화면에 ‘대출 승인’이 뜨기까지 무엇이 달라졌나요?

P원전 기반 가상 답변

민서가 책 두 권을 빌린 뒤 세 번째 책을 올려놓습니다. 대출기는 대출 수를 하나 늘리고, 세 권 이하면 승인 화면으로 갑니다. 마지막 글자만 읽어서는 수를 언제 바꿨는지 모릅니다. 플롯킨은 지금 남은 프로그램과 지금 가진 자료를 하나의 구성으로 묶고, 한 구성에서 다른 구성으로 가는 화살표를 적습니다.

사회자 장부의 2가 먼저 3이 되나요, 아니면 세 번째 책을 받을 수 있다는 판정이 먼저 나오나요?

답변 대입이 끝난 뒤 조건을 읽어야 합니다. 처음의 2를 보고 승인했어도 이번 화면은 우연히 같았을 겁니다. 처음부터 세 권이었던 독자로 바꿔 보세요. 갱신한 4를 읽으면 거절하고, 옛 3을 읽으면 잘못 승인합니다.

생각그림 01 · 같은 기계에 두 장부 넣기편집부 도해
같은 기계에 두 장부 넣기두 번째 줄이 검산에 중요합니다. 옛 값을 잘못 읽으면 세 권에서 출발한 사람의 결과가 뒤집힙니다.처음갱신 뒤답2권3권승인3권4권거절조건은 갱신 뒤의 수를 읽습니다.
두 번째 줄이 검산에 중요합니다. 옛 값을 잘못 읽으면 세 권에서 출발한 사람의 결과가 뒤집힙니다.

원문·범위 · §§1.1–1.2, 3–5쪽. 대출기는 편집부 사례.

처음이 한 권이라면, 마지막 검사에서 읽는 수는 얼마일까요?

두 권입니다. 검사는 새 장부에서 2 ≤ 3을 읽습니다.

02
사회자

전이 화살표 하나에 어떤 약속이 들어 있나요?

P원전 기반 가상 답변

구성의 집합 Γ와 그 위의 이항관계 →를 정합니다. γ → δ라고 쓰면 γ에서 δ로 바로 갈 수 있다는 뜻입니다. 정상 종료를 구분할 때에는 나가는 화살표가 없는 구성들 가운데 최종 집합 T도 따로 지정합니다. 화살표가 없다는 사실만으로 T에 넣을 수는 없습니다.

사회자 대출 수를 읽고 더하는 일을 화살표 하나로 묶어도 되나요?

답변 규칙을 어떻게 정했는지에 달려 있습니다. 이 글의 확대 모형에서 books+1은 장부를 읽어 2+1이 되고, 다음에 3이 됩니다. 원문의 명령 규칙은 우변을 끝까지 계산한 증거를 한 대입 화살표의 전제로 둡니다. 같은 작업을 보아도 세는 대상이 다릅니다.

생각그림 02 · 화살표의 출발점과 도착점편집부 도해
화살표의 출발점과 도착점이 그림은 변숫값을 읽는 순간을 한 단계로 잡습니다. 읽기만으로 장부가 갱신되지는 않습니다.구성 γ · books + 1, 장부2변수 읽기 · 화살표 한 개구성 δ · 2 + 1, 장부 2다음 화살표 · 3, 장부 2
이 그림은 변숫값을 읽는 순간을 한 단계로 잡습니다. 읽기만으로 장부가 갱신되지는 않습니다.

원문·범위 · §1.2, 정의 1–2, 4–5쪽. §3.2 대입 규칙, 33쪽.

γ → δ이면 δ → γ도 따라오나요?

그렇지 않습니다. 역방향 이동을 허용하는 규칙이 따로 있어야 합니다.

03
사회자

프로그램이 같은데 왜 장부까지 구성에 넣을까요?

P원전 기반 가상 답변

〈books+1, σ〉의 앞은 남은 식이고 뒤는 저장소입니다. σ(books)가 2인 독자와 8인 독자에게 같은 문자 books를 보여도 다음 식이 달라집니다. 이 예에서 식을 읽는 동안 σ는 보존되고, 대입이 일어나는 순간에만 저장소가 바뀝니다.

사회자 식이 3이 되는 순간에 대출 장부도 이미 3인가요?

답변 아직 2입니다. 종이 메모에 합계 3을 계산하는 일과, 대출기에 그 수를 기록하는 일은 다른 규칙입니다. 〈books := 3, 2〉에서 대입해야 〈skip, 3〉이 됩니다. 뒤 그림에서 숫자가 어느 쪽 칸에 있는지 확인해 보세요.

생각그림 03 · 계산한 값과 저장한 값편집부 도해
계산한 값과 저장한 값오른쪽 칸이 바뀌는 행은 하나뿐입니다. 왼쪽에 적은 숫자 3은 대입 전에는 식의 값입니다.남은 일장부2 + 1 계산2books := 32skip3
오른쪽 칸이 바뀌는 행은 하나뿐입니다. 왼쪽에 적은 숫자 3은 대입 전에는 식의 값입니다.

원문·범위 · §3.1.1, 28–29쪽, 변수 규칙. §3.2, 32–33쪽.

〈books+1, 8〉에서 변수 읽기 직후의 구성은?

〈8+1, 8〉입니다. 계산 결과 9는 아직 나오지 않았습니다.

04
사회자

큰 식의 한 단계를 어떻게 증명하나요?

P원전 기반 가상 답변

가로선 위의 전제를 먼저 확인하고 아래 결론을 읽습니다. 1+2가 3으로 갈 수 있다면 큰 식 (1+2)+(3+4)도 3+(3+4)로 갈 수 있습니다. 위 전이와 아래 전이는 두 번 연이어 실행한 기록이 아닙니다. 위 전이가 아래의 단 한 번을 정당화합니다.

사회자 숫자를 보자마자 큰 식을 곧바로 10으로 바꿔도 되나요?

답변 큰 식의 바로 아래 두 피연산자는 아직 합식입니다. 두 수를 바로 더하는 기본 규칙의 전제가 성립하지 않습니다. 먼저 왼쪽 덧셈을 한 뒤, 3+7까지 와야 마지막 덧셈 규칙을 쓸 수 있습니다.

생각그림 04 · 전제와 결론을 가르는 한 줄편집부 도해
전제와 결론을 가르는 한 줄윗줄의 작은 전이는 아랫줄 화살표의 근거입니다. 유도 높이와 실제 실행 횟수를 따로 읽으세요.기본 계산1 + 2 → 3왼쪽 전이를 큰 식으로 올리기(1+2)+(3+4) → 3+(3+4)
윗줄의 작은 전이는 아랫줄 화살표의 근거입니다. 유도 높이와 실제 실행 횟수를 따로 읽으세요.

원문·범위 · §3.1, 25–27쪽, 덧셈 규칙 1–3.

어떤 조건에서 기본 덧셈을 쓸 수 있나요?

현재 덧셈 바로 아래의 양쪽이 모두 수일 때입니다.

05
사회자

어느 쪽부터 계산할지는 누가 정하나요?

P원전 기반 가상 답변

왼쪽 우선 규칙은 먼저 왼쪽을 움직입니다. 왼쪽이 수가 되면 오른쪽의 전이를 올리고, 둘 다 수이면 합을 냅니다. 같은 식에 오른쪽 우선 규칙을 대신 넣으면 맨 처음 나오는 구성이 달라집니다. 실험 1에서는 순서만 바꿔 이 차이를 볼 수 있습니다.

사회자 결과가 모두 10이라면 이 순서는 관찰할 수 없는 차이인가요?

답변 최종 수만 기록하면 두 실행은 같은 칸에 들어갑니다. 첫 화살표를 기록하면 왼쪽 우선은 3+(3+4), 오른쪽 우선은 (1+2)+7입니다. 이 식에는 부작용도 오류도 없으므로 이 사례에서 최종값 차이까지 발견했다고 말할 근거는 없습니다.

생각그림 05 · 같은 합으로 가는 서로 다른 첫 발편집부 도해
같은 합으로 가는 서로 다른 첫 발각 상자 안의 괄호는 아직 계산하지 않은 덧셈입니다. 출발 직후의 두 식은 다릅니다.(1+2) + (3+4)왼쪽 먼저 ·3+(3+4)오른쪽 먼저 ·(1+2)+7두 경로의 최종값 10
각 상자 안의 괄호는 아직 계산하지 않은 덧셈입니다. 출발 직후의 두 식은 다릅니다.

원문·범위 · §3.1, 25–27쪽. 오른쪽 우선은 비교용 변형.

이미 3+7이라면 왼쪽부터와 오른쪽부터의 첫 결과는?

두 경우 모두 10입니다. 어느 쪽의 부분식도 더 움직일 수 없습니다.

PART II · 06–10

일곱 번의 전이와 유도의 근거

06
사회자

도서관 예제는 승인까지 모두 몇 단계인가요?

P원전 기반 가상 답변

교육용 확대 모형에서 일곱 단계입니다. 대입 우변에서 ① books를 2로 읽고 ② 2+1을 3으로 계산합니다. ③ 장부에 3을 쓰고 ④ skip ; C에서 앞의 skip을 벗깁니다. 조건에서 ⑤ books를 3으로 읽고 ⑥ 3 ≤ 3을 true로 계산한 뒤 ⑦ 승인 가지 lend를 고릅니다. 여기서 C는 조건문 전체이고 lend와 deny는 최종 화면 표지입니다.

사회자 원문 33쪽을 보고 세었더니 수가 더 적습니다. 어떤 줄에서 달라졌을까요?

답변 플롯킨의 대입 규칙은 우변의 여러 식 단계를 전제로 묶어 한 번에 최종 저장소로 갑니다. 그 저장소를 순차명령이 이어받습니다. 조건 규칙도 참거짓을 얻기까지의 계산을 전제로 둡니다. 이 글은 읽기와 쓰기를 화면에서 분리하려고 skip과 조건 내부 전이를 따로 두었습니다. →*는 0번을 포함해 여러 번 이어 감을 표시합니다.

생각그림 06 · 일곱 번 중 장부가 바뀌는 한 번편집부 도해
일곱 번 중 장부가 바뀌는 한 번장부를 실제로 바꾸는 순간은 ③입니다. ⑤는 갱신된 값을 읽는 순간입니다.단계무슨 변화인가① ②변수 읽기, 덧셈③ ④장부 쓰기, 순서제거⑤ ⑥ ⑦변수 읽기, 비교,선택
장부를 실제로 바꾸는 순간은 ③입니다. ⑤는 갱신된 값을 읽는 순간입니다.

원문·범위 · §§3.2–3.3, 32–35쪽. 7단계와 skip·≤·화면 표지는 편집부 규칙.

처음부터 3권이어도 일곱 단계를 거치나요?

그렇습니다. ③에서 4가 되고 ⑥에서 4 ≤ 3이 거짓이므로 ⑦에서 deny를 고릅니다.

07
사회자

유도 나무와 실행 기록을 어떻게 구별하나요?

P원전 기반 가상 답변

실행 기록은 방금 얻은 구성을 다음 화살표의 출발점으로 잇습니다. 유도 나무는 지금 주장하는 화살표 하나를 받치는 전제를 쌓습니다. 순차명령의 앞이 움직여 저장소 3을 만들었다면, 그것을 감싸는 결론에도 같은 3을 적어야 합니다.

사회자 규칙 이름만 맞추고 마지막에 저장소 2를 쓰면요?

답변 앞 명령 books := 3이 2를 받아 3을 남겼다는 전제를 사용해 놓고, 큰 명령에는 2를 적는다면 서로 맞지 않습니다. 실험 2에서 마지막 저장소만 2로 바꾸어 반례를 확인할 수 있습니다. 반대로 if true의 가지를 고르는 전제에서는 장부 2가 그대로입니다.

생각그림 07 · 위에서 만든 장부를 아래로 전달편집부 도해
위에서 만든 장부를 아래로 전달아래 A는 위의 books := 3입니다. 양쪽 결론의 마지막 숫자가 3으로 일치해야 합니다.앞 명령의 전이〈books := 3, 2〉 →〈skip, 3〉순차명령의 첫 전이〈A ; C, 2〉 → 〈skip ; C,3〉
아래 A는 위의 books := 3입니다. 양쪽 결론의 마지막 숫자가 3으로 일치해야 합니다.

원문·범위 · §3.1, 26–27쪽, 유도 예시. §3.2, 33–34쪽, 순차명령 규칙.

순차명령의 전제가 저장소 3을 주었을 때 4를 적을 수 있나요?

그 규칙으로는 안 됩니다. 새 대입 없이 저장소가 한 번 더 바뀌었다는 잘못된 결론입니다.

08
사회자

‘구조적’이라는 말에서 무엇의 구조를 보나요?

P원전 기반 가상 답변

현재 프로그램의 바깥 문법 모양을 봅니다. 맨 바깥이 덧셈이면 덧셈 규칙을 살피고, 순차명령이면 그 앞 명령의 전이와 앞이 이미 끝났을 때의 규칙을 살핍니다. 같은 숫자 3이 보인다고 책 수를 대입하는 규칙과 두 수를 더하는 규칙을 뒤섞지 않습니다.

사회자 skip ; C에서 C가 아주 복잡해도 첫 단계가 정해지나요?

답변 이 글의 순서 제거 규칙은 C를 그대로 남깁니다. C 안을 계산할 필요가 없습니다. 반대로 (if true then A else B) ; C는 앞이 아직 skip이 아니므로 조건문 전이를 확인한 뒤 순차명령에 올립니다. 두 경우의 차이는 바깥과 바로 아래의 모양에서 드러납니다.

생각그림 08 · 첫 기호가 가리키는 규칙편집부 도해
첫 기호가 가리키는 규칙구문은 후보 규칙을 좁힙니다. 마지막에는 각 규칙의 전제도 확인합니다.보이는 구문확인할 것2 + 3두 수의 덧셈skip ; C앞의 skip 제거(if …) ; C앞의 전이 올리기
구문은 후보 규칙을 좁힙니다. 마지막에는 각 규칙의 전제도 확인합니다.

원문·범위 · §§3.2–3.3, 32–35쪽. skip은 이 글의 무동작 표지.

조건이 이미 false라면 if false then A else B가 고르는 것은?

B입니다. 선택하지 않은 A의 실행을 전제로 요구하지 않습니다.

09
사회자

결정성은 예제 몇 개로 판단할 수 있나요?

P원전 기반 가상 답변

결정적이라는 말은 각 구성에서 서로 다른 후속 구성이 최대 하나라는 뜻입니다. 최종값에서는 하나도 없을 수 있습니다. 원문은 작은 식 언어에 대해 구문의 구성 방식으로 귀납합니다. 덧셈의 마지막 규칙이 왼쪽 이동, 오른쪽 이동, 두 숫자 계산 중 무엇인지 나누고 작은 식에 대한 가정을 씁니다.

사회자 유도 나무에 대한 귀납과 구문에 대한 귀납은 어떻게 다릅니까?

답변 구문 귀납에서는 덧셈을 이루는 왼쪽과 오른쪽 식이 더 작습니다. 유도 귀납에서는 마지막 화살표를 정당화한 전제들의 유도가 더 작습니다. 무엇이 작아지는지 적어야 같은 결론을 슬쩍 전제로 쓰는 일을 막을 수 있습니다.

생각그림 09 · 귀납에서 무엇이 작아지나편집부 도해
귀납에서 무엇이 작아지나“모든 상태에 하나” 대신 “서로 다른 다음 구성이 최대 하나”라고 읽어야 숫자값도 포함합니다.기준작은 대상구문바로 아래 부분식유도마지막 규칙의 전제유도종료값후속 구성 0개 가능
“모든 상태에 하나” 대신 “서로 다른 다음 구성이 최대 하나”라고 읽어야 숫자값도 포함합니다.

원문·범위 · §3.4, 37–39쪽, 사실 13 및 증명.

초기 구성이 두 후속 구성을 가지지만 끝에서는 모두 10이 되면 결정적인가요?

아닙니다. 그 초기 구성에서 바로 다음 구성이 둘이므로 이미 결정성 조건을 어깁니다.

10
사회자

다음 화살표가 없으면 계산이 끝난 건가요?

P원전 기반 가상 답변

정상 종료인지 알려면 최종 집합을 확인합니다. 수 3과 skip은 이 글의 정상 최종 구성입니다. true+3에는 수 덧셈 규칙이 적용되지 않고, 이 식은 최종값도 아니므로 막힘입니다. 원문의 자연수 뺄셈에서도 작은 수에서 큰 수를 빼면 기본 규칙으로 진행할 수 없습니다.

사회자 원문 예제와 true+3은 같은 언어에 있나요?

답변 3.1절 L은 수식과 불식을 문법으로 구분해 자연수 뺄셈을 막힘의 예로 듭니다. true+3처럼 서로 다른 종류의 값을 섞는 식은 3.6절의 확장 언어와 이 글의 교재 모형에서 살핍니다. 이 층위를 구분하면 문법상 만들 수 없는 프로그램을 L의 실행 오류라고 부르지 않게 됩니다.

생각그림 10 · 멈춰 있는 두 구성의 명찰편집부 도해
멈춰 있는 두 구성의 명찰표면상 둘 다 멈췄지만 3은 결과로 돌려줄 수 있고 true+3은 결과값을 만들지 못했습니다.다음 화살표 0개3은 정상 최종값true + 3은최종값 아님최종 집합에 있는지 확인
표면상 둘 다 멈췄지만 3은 결과로 돌려줄 수 있고 true+3은 결과값을 만들지 못했습니다.

원문·범위 · §3.1, 29쪽, 정의 11. §§3.5–3.6, 41–43쪽.

오류 규칙을 끈 2−3은 정상 종료일까요?

막힘입니다. 자연수 뺄셈 규칙은 2 ≥ 3을 요구하고, 2−3은 이미 얻은 수가 아닙니다.

PART III · 11–15

오류를 드러내는 규칙과 관찰 범위

11
사회자

막혔다는 것과 오류를 보고했다는 것은 어떻게 다른가요?

P원전 기반 가상 답변

기본 뺄셈에서 2−3은 화살표가 없습니다. 오류 보고 규칙을 켜면 2−3 → error라는 화살표 하나가 생깁니다. error는 오류를 보고한 종료 표지이며 정상 숫자값과 구별합니다. 안쪽에서 잘못된 뺄셈을 만났을 때 바깥 연산까지 오류를 전달하는 규칙도 필요합니다.

사회자 5+(2−3)이라는 식을 화면에 넣으면 무엇을 적어야 할까요?

답변 오류 보고가 없을 때에는 안쪽 뺄셈에 전이가 없으므로 전체 식도 막힙니다. 보고 규칙과 전파 규칙을 쓰면 2−3 → error를 전제로 전체가 error로 갑니다. 이 글의 오류 스위치는 자연수 뺄셈에만 오류를 추가합니다. true+3은 스위치를 켜도 막힙니다.

생각그림 11 · 오류 한 번이 바깥까지 올라가는 이유편집부 도해
오류 한 번이 바깥까지 올라가는 이유오류를 보이는 규칙과 이미 생긴 오류를 바깥에 전달하는 규칙이 각각 필요합니다.안쪽에서 보고한 오류2 − 3 → error오른쪽 오류를 바깥으로 전달5 + (2 − 3) → error
오류를 보이는 규칙과 이미 생긴 오류를 바깥에 전달하는 규칙이 각각 필요합니다.

원문·범위 · §3.5, 41–42쪽, 오류 도입·전파 규칙.

2−3에서 ‘후속 구성 하나’와 ‘명시 오류’는 언제 관찰하나요?

첫 구성의 후보는 error 하나입니다. 그 화살표를 따라 도착한 뒤의 상태가 명시 오류입니다.

12
사회자

형 검사를 통과한 계산도 실패할 수 있나요?

P원전 기반 가상 답변

형 검사는 실행 전에 조합을 살핍니다. 2+3의 피연산자는 둘 다 nat이므로 결과 형은 nat입니다. true+3은 왼쪽이 bool이어서 이 덧셈의 형을 만들 수 없습니다. 반면 2−3은 두 수라는 형 조건을 만족해도 자연수 뺄셈의 값 조건 2 ≥ 3은 실패합니다.

사회자 형에 맞는지, 끝까지 실행되는지 같은 질문 아닌가요?

답변 검사표에 nat와 nat만 적으면 5−3과 2−3은 같은 줄에 놓입니다. 실제 수를 대입하면 하나는 값 2를 만들고 다른 하나는 오류 보고 규칙으로 갑니다. 반복을 갖는 언어에서는 형에 맞는 반복문도 계속 돌 수 있습니다. 형 검사만으로 종료 여부를 읽을 수 없습니다.

생각그림 12 · 같은 형 검사를 거친 두 뺄셈편집부 도해
같은 형 검사를 거친 두 뺄셈둘째 행의 error는 오류 보고 규칙을 켠 경우입니다. 형이 알려 주는 것과 구체적인 수가 알려 주는 것을 나눕니다.식형실행5 − 3nat22 − 3naterrortrue + 3형 없음검사 거절
둘째 행의 error는 오류 보고 규칙을 켠 경우입니다. 형이 알려 주는 것과 구체적인 수가 알려 주는 것을 나눕니다.

원문·범위 · §§3.5–3.7, 41–46쪽. 3.6절의 nat·bool, 3.7절의 정적 오류.

오류 보고를 끄면 2−3의 정적 형도 바뀌나요?

형은 여전히 nat입니다. 바뀌는 것은 실행에서 막힘으로 남는지 error를 보이는지입니다.

13
사회자

두 규칙이 열려 있으면 어떤 뜻이 생기나요?

P원전 기반 가상 답변

화살표는 함수일 필요가 없는 관계입니다. 양쪽 부분식을 모두 먼저 움직일 수 있게 하면 한 구성에서 서로 다른 다음 구성 두 개가 나올 수 있습니다. 이를 비결정적이라고 합니다. 같은 다음 구성을 설명하는 증명이 두 개 있다는 것만으로는 충분하지 않습니다.

사회자 끝에 같은 수가 나오는 두 길도 목록에 모두 남겨야 할까요?

답변 지금 묻는 것은 다음 구성들이므로 둘 다 남깁니다. (1+2)+(3+4)에서 왼쪽을 줄인 식과 오른쪽을 줄인 식은 다릅니다. 한 방향을 고정하면 하나만 남습니다. 실험 3에서 양쪽 허용으로 바꾸고 각 후보를 따라가 보세요. 이 예에서 두 경로가 합류한다는 사실은 다른 모든 프로그램의 합류를 보장하지 않습니다.

생각그림 13 · 두 선은 다음 식이 다를 때 두 후보편집부 도해
두 선은 다음 식이 다를 때 두 후보서로 다른 후보를 셉니다. 어느 것을 먼저 클릭했는지는 관계가 허용하는 후보 수를 바꾸지 않습니다.양쪽을 허용한 덧셈3 + (3+4)(1+2) + 7다음 구성의 집합 크기 2
서로 다른 후보를 셉니다. 어느 것을 먼저 클릭했는지는 관계가 허용하는 후보 수를 바꾸지 않습니다.

원문·범위 · §1.2 정의 1, 4쪽. §3.4 사실 13, 38–39쪽. 양쪽 허용은 비교용.

이미 값 2가 놓인 곳에 오른쪽 우선 규칙을 추가하면 후보가 둘이 되나요?

아닙니다. 값 2에서 나가는 화살표는 여전히 없습니다.

14
사회자

이 규칙으로 만든 대출기는 실제 하드웨어처럼 작동하나요?

P원전 기반 가상 답변

이 글에서는 책 수와 승인·거절을 관찰합니다. 카드 판독기 신호, 네트워크 지연, 기록 재시도는 구성에 넣지 않았습니다. 두 기기가 같은 책 수를 같은 새 장부와 화면으로 보낸다면 여기서 정한 관찰로는 구별되지 않습니다. 지연을 비교하려면 시각이나 사건을 구성과 규칙에 추가해야 합니다.

사회자 승인 화면이 같아도 위험한 차이를 알아낼 수 있나요?

답변 어떤 자료를 기록하기로 했는지에 달렸습니다. 처음 세 권의 독자로 시험해 두 장부를 비교하면 옛값을 쓰는 오류가 드러납니다. 반면 화면과 장부가 모두 같아도 네트워크 요청을 두 번 보냈는지는 이 모형에 그 사건이 없으므로 판단할 수 없습니다.

생각그림 14 · 관찰 창을 어디까지 열었나편집부 도해
관찰 창을 어디까지 열었나규칙으로 비교할 수 있는 성질은 처음부터 구성에 무엇을 넣었는지와 연결됩니다.관찰 항목여기서 볼 수 있나화면 종류승인 또는 거절저장한 책 수저장소 σ서버 요청 횟수모형 밖
규칙으로 비교할 수 있는 성질은 처음부터 구성에 무엇을 넣었는지와 연결됩니다.

원문·범위 · §1.2, 4–5쪽, 내부·외부 행위와 단계의 크기. §3.2, 31–33쪽.

요청이 두 번 갔는지를 검증하려면 무엇을 추가할까요?

요청 사건을 남기는 로그나 횟수와, 요청을 보낼 때 그것을 갱신하는 규칙이 필요합니다.

15
사회자

이 노트에서 찾은 답을 어디까지 가져갈 수 있을까요?

P원전 기반 가상 답변

플롯킨은 덴마크 오르후스대학교에서 강의하며 이 자료를 발전시켰습니다. 1981년 강의노트의 저자 공개본에서 이번에 읽은 부분은 전이 시스템, 식과 명령, 구조적 귀납, 동적 오류와 형 검사입니다. 5장은 선언을, 7장은 함수와 프로시저 등을 더 다룹니다. 서론은 예외와 동시성 같은 주제를 다루지 않았다고 밝힙니다.

사회자 대출기 사례를 다른 프로그램에 옮기려면 제일 먼저 무엇을 적을까요?

답변 지금 남은 구문과 기억할 자료, 정상적으로 끝난 표지를 먼저 정하세요. 다음으로 가장 작은 한 단계를 정해 규칙을 쓰고, 한 번은 규칙이 적용되는 경우, 한 번은 전제가 실패하는 경우를 계산해 보세요. 다룬 예가 몇 개이든 모든 프로그램에 대한 결론을 내릴 때에는 별도 증명이 필요합니다.

생각그림 15 · 다른 언어로 옮길 때의 세 질문편집부 도해
다른 언어로 옮길 때의 세 질문세 질문과 반례 하나는 새 언어를 읽는 출발점입니다. 선언·프로시저의 규칙까지 이 사례로 입증한 것은 아닙니다.무엇을 구성에 적을까?한 단계에 무엇이 바뀔까?무엇을 정상 종료로 부를까?그 규칙을 확인할 반례는?
세 질문과 반례 하나는 새 언어를 읽는 출발점입니다. 선언·프로시저의 규칙까지 이 사례로 입증한 것은 아닙니다.

원문·범위 · §1.1, 3쪽, 방문·강의와 제외 범위. 목차 1–2쪽, 5·7장.

처음 세 권인 독자 한 명의 성공만으로 모든 구현이 옳다고 할 수 있나요?

그 입력의 기록만 확인했습니다. 가능한 모든 입력과 명령에 대한 주장은 범위를 정하고 증명해야 합니다.

INTERACTIVE NOTEBOOK

전이 규칙을 손으로 시험하기

예상 답을 적고 규칙 하나만 바꿔 보세요. 세 실험은 아래에 적은 작은 언어에서 작동합니다.

EXPERIMENT 01

왼쪽과 오른쪽 중 무엇이 지금 움직일까요?

평가 순서를 고른 뒤 한 단계에 쓸 규칙을 선택하세요. 전제가 맞는 경우에만 아래 기록이 한 칸 늘어납니다.

(1 + 2) + (3 + 4)

왼쪽 우선에서 적용할 첫 규칙은 왼쪽 올리기입니다.

왼쪽 우선의 첫 단계는 1+2 → 3을 전제로 합니다.

종이로 해 보기 · 왼쪽 우선의 식은 3+(3+4), 3+7, 10 순서입니다.

EXPERIMENT 02

유도 나무의 위와 아래를 맞춰 보세요

장부는 books 한 칸뿐입니다. A와 B는 조건 가지이고 C는 뒤에 남은 명령입니다. 전제 카드와 마지막 규칙을 차례로 고르고, 결론에 남을 장부의 수를 넣으세요.

조건문이 한 단계 움직일 때 장부는 2로 유지됩니다.

참 가지를 고르고 순차명령 안으로 올리면 저장소 2가 유지됩니다.

종이로 해 보기 · 대입 사례에서 앞 명령이 만든 3을 결론에 그대로 적어야 합니다.

EXPERIMENT 03

후속 구성의 개수로 멈춤과 갈림을 구별하세요

두 피연산자와 규칙을 정하세요. 현재 구성의 판정과 가능한 다음 구성이 모두 나옵니다. 원하는 후보를 선택해 한 번 더 관찰할 수 있습니다.

2+3의 다음 구성은 수 5 하나입니다.

종이로 해 보기 · 2−3은 기본 규칙에서 막힙니다. 오류 보고를 켜면 다음 구성은 error이고, 그곳에서 명시 오류로 멈춥니다.

원문으로 돌아가는 길

  1. 고든 플롯킨, 《A Structural Approach to Operational Semantics》. 1981년 오르후스대학교 강의노트 DAIMI FN-19의 저자 공개본입니다. 쪽수는 2004년 1월 30일자 공개본에 인쇄된 쪽을 따릅니다. 1.2절에서 전이 시스템을, 3.1–3.4절에서 규칙과 귀납을, 3.5–3.7절에서 오류·형 검사를 읽었습니다.
  2. 저자의 연구 목록 17번에서 이 문서를 오르후스 노트의 전자 조판본으로 소개합니다. 플롯킨의 2004년 회고 논문은 1981년 원전의 출처와 강의 배경을 확인하는 데 사용했습니다.

모든 생각그림은 플롯킨의 전이 규칙을 바탕으로 편집부가 구성한 교육용 도해입니다.

읽은 뒤에 점검할 문장

한 번의 전이는 두 구성을 잇습니다. 그 한 번을 허용한 근거는 유도 나무에서 찾습니다. 다음 화살표가 끊겼을 때에는 먼저 정상 최종 구성인지 살핍니다.

포함된 서체의 라이선스 보기
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'.