2012 SIGPL 겨울학교

42
언언 , 언언 , 언언 , 언언 , 언언언 언 , 언언언언언 언언 , 언언언 언언언 언언언 언언언 언언언언언언언 언언언언 SIGPL 언언언언 2012. 2. 3.

Transcript of 2012 SIGPL 겨울학교

Page 1: 2012 SIGPL 겨울학교

언어 , 문법 , 기계 , 파서 , 고쳐쓰기 , 현대수학의 한계 ,그리고 미래의 전산학

최광무한국과학기술원 전산학과

SIGPL 겨울학교2012. 2. 3.

Page 2: 2012 SIGPL 겨울학교

한국과학기술원 전산학과 최광무

차례• 언어이론의 기초• Regular 언어(language)

– 한글 모아쓰기 기계 (automata)• Rewriting System 혹은 파서

– Context-free 언어의 해석(parsing)• 왼 파서 (left parser) - 왼쪽 부터 유도하기(leftmost derivation)

– 위 아래 (top-down) 파서• 오른 파서(right parser) - 오른쪽부터 유도하기를 거꾸로(rightmost derivation in reversed order)

– 아래 위 (bottom-up) 파서– Deterministic parsing of CFG

• 왼 파서 Strong LL(k) 파서 ⊆ LL(k) 파서 .• 오른 파서 LR(k) 파서 ⊇ LALR(k) 파서 ⊇ SLR(k) 파서 .

• 현대수학에서 계산(computable)에 관한 Turing-Church의 주장 (Thesis)– TM Turing 1930.– μ-recursive 부분함수 Church 1934.

• 현대수학의 비극– Cantor’s diagonalization argument 1874; 1891.

• uncountable, 실수(實數 ; real number)– Russell's 모순 (Paradox) 1901; 1911.– Gödel의 incompleteness theorem 1931.

• Hilbert의 실패한 꿈 1929.– Halting 문제 (problem)과 같은 문제들

• 끝내기 이야기2/38SIGPL 겨울학교 , 2012-

02-03

미분을 완전히 그리고 적절히정의하였는가 ?

유클리드 기하학 - 증명의 아름다움피타고라스 – 무리수미분이 이상하다 ?

Page 3: 2012 SIGPL 겨울학교

한국과학기술원 전산학과 최광무

언어 (Languages) – 소통수단• 인문사회과학

– 철학 , 역사 , 사회학 , 경제 , 법률– 모국어 (자연언어 )

• 애매 (Ambiguous) 하다• 복잡하다

– 영어강의• ???

• 예술– 음악 , 미술 , 스포츠– 연주 , 형태 , 행동

• 자연과학 , 공학 , 전산학– 수학

• 엄밀 (Rigorous, Formal) 하다• 간단하다

– 전산학• 프로그래밍 언어

3/38SIGPL 겨울학교 , 2012-02-03

Page 4: 2012 SIGPL 겨울학교

한국과학기술원 전산학과 최광무

구문론 ( 構文論 ; Syntax)• 4개의 전문용어(terminology)

– 어휘(vocabulary, alphabet), Σ• 기본문자들의 집합• 언어의 axiomS(atom)

– 문자(symbol) a ∈ Σ.• 어휘의 원소

– 문자열(string) x ∈ .• 문자(symbol)들이 줄 선(sequence) 것• 문자열(수열)

– 언어(language) L ⊆ .• 문장(문자열)들의 집합

• 언어와 어휘 , 문자열의 예– 이진수 Σ = {0, 1} 2자– 십진수 Σ = {0, 1, 2, …, 9} 10자– 한글 Σ = {ㄱ , ㄴ , …, ㅎ , ㅏ , ㅑ , …, ㅣ} 24자

• ㄱ ㅕㅇㅜㄹㅎㅏㄱㄱㅛ– 영어 Σ = {a, b, …, z} 26자

• Winter School– 컴퓨터 Unicode

• 겨울학교

4/38

한글 모아쓰기 오토마타한글 모아쓰기 기계

SIGPL 겨울학교 , 2012-02-03

Page 5: 2012 SIGPL 겨울학교

한국과학기술원 전산학과 최광무

전문용어 4 개 +• ε 빈 문자열 (empty string)

– 산수에 +에서 0이나 ⅹ에서 1과 같은 항등원 (identity)• = {ε}• = = {0, 1}• = {00, 01, 10, 11}• …• = {x∈{0, 1}| |x| = n}• …• = ∪ ∪ ∪ …

– 문자열의 universe(전 집합 )– 가 많이 있다 .

• 4개의 전문용어– 문자 (symbol) a ∈ Σ 어휘 (vocabulary) Σ– 문자열 (string) x ∈ 언어 (language) L ⊆

• 언어의 문장 (statement)확인문제 (membership problem)– 문자열 x ∈ 가 문장 (x ∈ L)인가 , 아닌가 (x ¬∈ L).– 기계 (automata)

5/38SIGPL 겨울학교 , 2012-02-03

† = ∪ ∪ ∪ …

L

Σ∗

Σa∈Σ

y ∈

x ∈• ∈L

¬∈L

† = / {ε}, = † ∪ {ε}.

Page 6: 2012 SIGPL 겨울학교

한국과학기술원 전산학과 최광무

문법 (Grammar)• 예 “ x = 5” 라는 문장에 필요한 문법규칙

– < 문 > → <좌 > “=“ < 우 >– < 좌 > → “x” | …– < 우 > → “5” | …

• 문법 G = (N, , P, S) 의 요소 4 개– N: 넌 터미널 (Nonterminal symbolS), 단 V = N ∪ .

• N = {< 문 >, < 좌 >, < 우 >}– : 터미널 (Terminal symbolS)

• = {“x”, “=“, “5”}– S: 시작 문자 (Start symbol)

• S ∈ N, S = < 문 >– P: 규칙 (Production ruleS)

• P ⊆ N x (N∪)*.• (A, α) ∈ P 일 때 , A → α ∈ P 또는 A → α 로 쓴다 .

6/38SIGPL 겨울학교 , 2012-02-03

Page 7: 2012 SIGPL 겨울학교

한국과학기술원 전산학과 최광무

문법 G = (N, , P, S) 과 유도 , 언어• 유도 (derivation), ⇒

– A → α ∈ P 일 때 , 임의의 β, γ ∈ V*에 대하여 , 단 V* = (N∪)*.– βAγ ⇒A→α βαγ.– ⇒ ⊆ V* ⅹ V*.– → ⊆ ⇒.

• →는 유한 , ⇒는 무한 .• 유도의 확장 : ⇒n, ⇒*.

– ⇒0 = idV*. {α ⇒0 α| α ∈ V*}– ⇒n = ⇒n-1 ∙ ⇒ n ≥ 1.

– ⇒* = ⇒0 ∪ ∪ ∪ … • 언어 , L(G): 문법 G가 정의한 언어 L(G)

– L(G) = {w ∈ T* | S ⇒* w}.• 예 :

– <문> ⇒ <좌> “=“ <우>– ⇒ “x” “=“ <우>– ⇒ “x” “=“ “5”

< 문 >

“=” < 우 >< 좌 >

“x” “5”

7/38SIGPL 겨울학교 , 2012-02-03

Page 8: 2012 SIGPL 겨울학교

한국과학기술원 전산학과 최광무

문법의 계층 (hierarchical) 구조• Type 3: 정규(regular) 문법

– A → xB, A → y. A, B ∈ N, x, y ∈ *.• 오른 줄(right linear) (정규 )문법

– A → aB, A → b. A, B ∈ N, a, b ∈ .• 오른 줄 (정규)문법의 normal form

– A → Bx, A → y. A, B ∈ N, x, y ∈ *.• 왼 줄(left linear) (정규 )문법

– 오른 줄 (정규)문법 ⇔ 왼 줄 (정규)문법• x1x2…xnyn ↔ ynxnxn-1…x1.

– 줄(linear) 구조 .• 줄(linear list)

• Type 2: 문맥자유(context-free) 문법– A → α. A ∈ N, α ∈ V* = (N∪)*.– A → BC, A → a except S → ε. A, B, C ∈ N, a ∈ .

• 문맥자유 문법의 normal form• Chomsky’s normal form(CNF)

– 계층(hierarchical) 구조• 나무(tree)

• Type 1: 문맥민감(context-sensitive; recursive) 문법– βAγ → βαγ, A →β:γ α. A ∈ N, α ∈ V†, β, γ ∈ V*.– α → β. α ∈ V†, β ∈ V*, |α| ≤ |β|.

• Type 0: unrestricted 문법– α → β. α ∈ V†, β ∈ V*.

8/38

SA1 x1

A2x2

An xn

…An-1

yn

S

An-1

yn

A1x1

A2x2

Anxn

문법CSGCFGRG

문법의 계층구조

SIGPL 겨울학교 , 2012-02-03

β

S

B

y

γ

z

α

x

Page 9: 2012 SIGPL 겨울학교

한국과학기술원 전산학과 최광무

기계 (Automata) 의 계층구조• Type 3: 유한상태기계 (Finite state automata; FA)

– 상태(stateS), 입력 문자 (S), state 변화(transitionS)– 초기(initial) 상태 , 끝나는(finalS) 상태– 결정적 (deterministic), 비결정적 (non-deterministic)– 정규(regular) 문법 , 언어

• Type 2: Stack을 가진 기계 (Pushdown automata; PDA)– FA + stack– 문맥자유 (context-free) 문법 , 언어

• Type 1, 0: Turing machine( 메모리를 가진 기계 )– FA + memory(tape)– 컴퓨터 , 프로그램

• Type 1: TM– 항상 끝난다 (terminate).– 알고리즘

• Type 0: TM– 끝나지 않을 수도 있다 (infinite loop).– 프로그램

9/38

TMPDAFA

기계의 계층구조

프로그램알고리즘문맥자유

정규

언어 ( 문제 ) 의 계층구조프로그램 할 수 없다

문제가 아니다 .수학의 대상이 아니다 .Cantor, Russell, Gödel, Hilbert, …

SIGPL 겨울학교 , 2012-02-03

Page 10: 2012 SIGPL 겨울학교

한국과학기술원 전산학과 최광무

언어와 문법의 예 (1)• Type 3: 정규 언어

– L3 = { anbm| n, m ≥ 0 }.– 정규식 (regular expression)

• a*b*.• 합(union), 곱(concatenation), 반복곱의 합(closure; *).• 더하기 , 붙이기 , 많이

– 유한상태기계 (FA)• Nondeterministic• Deterministic• 한글모아쓰기기계(automata)

– 정규문법 :• G3N: A → aA | B | ε, B → bB | ε.

• Type 2: 문맥자유 언어– L2n = { anbn| n ≥ 0 }. L2n ⊆ L3.G2n: S → aSb | ε.– L2= = { x ∈ {a, b}*| |x|b = |x|a }. L2= ⊆ L2n.G2=: S → aSbS | bSaS | ε.

• L(G2=) ⊆ L2=, L2= ⊆? L(G2=).– Lk,m = {x ∈ {a, b}*| |x|b = k∙|x|a + m}.Gk,m?

10/38

A B

a bε

A B

a bb

G3D: A → aA | bB | ε, B → bB | ε.

SIGPL 겨울학교 , 2012-02-03

Page 11: 2012 SIGPL 겨울학교

한국과학기술원 전산학과 최광무

언어와 문법의 예 (2)• Type 1: 문맥민감 언어

– L13 = { anbncn| n ≥ 0}.– G13: S → aSBC | aBC | ε.– CB → HB, HB → HC, HC → BC,– aB → ab, bB → bb, bC → bc, cC → cc.– S ⇒S→aSBC

n-1 an-1S(BC)n-1 ⇒S→aBC an(BC)n = anB(CB)n-1C – (⇒CB→HB∙HB→HC∙HC→BC)¹/₂n(n-1) anBnCn – ⇒aB→ab anbBn-1Cn ⇒bB→bb

n-1 anbnCn – ⇒bC→bc anbncCn-1 ⇒cC→cc

n-1 anbncn.• Type 1: recursive 언어

– L1xx = { xx| x ∈ {a, b}* }.– G1xx: S → aAS | bBS | T– Aa → aA, Ba → aB, Ab → bA, Bb → bB,– BT → Tb, AT → Ta, T → ε.– S ⇒S→aAS|bBS

n (aA|bB)nS ⇒S→T (aA|bB)nT ⇒Aa→aA|Ba→aB|Ab→bA|Bb→bBn (a|b)n(A|B)nT

– ⇒BT→Tb|AT→Tan (a|b)nT(a|b)n ⇒T→ε (a|b)n(a|b)n.

• Type 0: 언어

11/38SIGPL 겨울학교 , 2012-02-03

Page 12: 2012 SIGPL 겨울학교

한국과학기술원 전산학과 최광무

고쳐쓰기 (Rewriting system)• 고쳐쓰기 R = (C, →, ι, Φ)

– C: 고쳐쓰기 상황(ConfigurationS)– → ⊆ C ⅹ C.

• α → β, α, β ∈ C.– ι: 처음 상황(initial configuration)

• ι ∈ C.– Φ: 끝 상황(final configurationS)

• Φ ⊆ C.• 유도(derivation), ⇒

– α → β 일 때 , 임의의 γ, δ ∈ C에 대하여γAδ ⇒α→β γβδ.– →, ⇒, ⇒* ⊆ C ⅹ C.

• 고쳐쓰기의 정상적인 마침.ι ⇒* φ ∈ Φ.

• 문법 고쳐쓰기– 문장을 만들어가는 고쳐쓰기

• 생성문법(generative grammar)– 문법 G = (N, Σ, P, S)의 고쳐쓰기 RG = ((N ∪ Σ)*, →G = P, S, Σ*).– L(RG) = {w ∈ Σ* (= Φ)| ι = S w ∈ Σ*(= Φ)} = L(G).

• 기계 고쳐쓰기– 문장을 없애가며 확인하는 고쳐쓰기(문장확인기계)– 기계 M 의 고쳐쓰기 RM = (C ⅹ Σ*, →M, (ci, w), {(cF, ε)}).

• C: 고쳐쓰기(기계) 상황• Σ*: 나머지 입력문자열

– L(RM) = {w ∈ Σ* | ι = (ci, w) (cF, ε) ∈ Φ}.12/38SIGPL 겨울학교 , 2012-

02-03

Page 13: 2012 SIGPL 겨울학교

정규문법 , 문장확인 유한상태기계 ,그리고 고쳐쓰기• 정규 문법 G3 = (N, Σ, P, S).

• 유한상태기계 A = (Q, Σ, δ, qS, F).

• 기계 A의 고쳐쓰기 상황(configurationS)– 기계의 상태(stateS) Q ⅹ 나머지 입력문자열 Σ*.

• 문법 G3를 위한 고쳐쓰기 RA = (Q ⅹ Σ*, →A, (qs, w), {(qf, ε)| qf ∈ F}).qB ∈ δ(qA, y) ⇔ (qA, y) →(qA, y)→(qB, ε) (qB, ε) ⇔ A → yB ∈ P.

• 유한상태기계 A ⇔ (정규)고쳐쓰기 RA. ⇔ 정규문법 G3.

S

z

A

x

By

S ⇒* xA ⇒A→yB xyB ⇒* xyz.

δ( , y)δ *( , z) = qF.qF ∈ F.

qAδ *( , z)

= qBδ *( , z) =δ( , y)

δ*( , x)

qS

qFz…qS

x… qAy

qB

(qS, xyz)⇒ 𝐴∗(qA, yz)

(qA, y)→(qB, ε) (qB, z)⇒ 𝐴∗(qF, ε) qF ∈ F.

SIGPL 겨울학교 , 2012-02-03 한국과학기술원 전산학과 최광무 13/38

(qS, xyz) (qA, yz)

(qB, z) (qF, ε)

Page 14: 2012 SIGPL 겨울학교

한국과학기술원 전산학과 최광무

문맥자유문법 유도파스 (parse) 나무 (tree)• 문맥자유문법

– A → α, A ∈ N, α ∈ V* = (N∪)*.• 문맥자유문법의 문자의 구분

– N: 터미널이 아닌(nonterminal) 문자• 바꿀 문자.

– T: 터미널(terminal) 문자• 바꾼 문자.

• 유도과정에서 바꿀 문자가 여럿 나온다.• 파스(parse)나무(tree)

– 나무에는 가지(subtree)가 있다.• 시작(subroot)이 바꿀 문자• 끝(leaf)이 바꾼 문자

– 계층적(hierarchical) 구조(structure).• 문맥자유문법 고치기(유도)의 일반 꼴

– S x0A1x1A2x2 … xn-1Anxn • 0 ≤ ∀k ≤ n: xk ∈ *, 1 ≤ ∀k ≤ n: Ak ∈ N,

• A1, Ak, …, An 중 어떤 문자를 먼저 바꾸어도 나무는 같다 .• 무엇이 파스나무를 다르게 하는가?• 바꿀 문자가 가진 문법 규칙에서 우변 고르기

– A → α | β.– Nondeterministic

14/38

S

A1 Ak An

y1 yk ynx0 xn

…xk-1x1

…xk xn-1 x0y1x1y2x2 … xn-1ynxn∈ *.

Ak yk ∈ *.

SIGPL 겨울학교 , 2012-02-03

Page 15: 2012 SIGPL 겨울학교

한국과학기술원 전산학과 최광무

문맥자유문법의 두 가지 고치기 순서(⇒/⇒)

• 문장 구하기의 두 가지 고치기 순서– 왼쪽부터 고치기(Leftmost derivation)– 오른쪽부터 고치기 (Rightmost derivation)

• 왼쪽부터 고치기 (⇒)• S xBγ

– x∈*, γ∈V*, B∈N,

• 오른쪽부터 고치기 (⇒)• S αBz

– α∈V*, z∈*, B∈N,

• 고치기 순서에 따른 두 가지 기계– 고치기 순서가 달라도 결과나무는 같다 .– 왼 파서 (Left parser)

• 왼쪽부터 고치며 , 위에서 아래로 (top-down) 나무 만들기 (parsing).– 오른 파서 (Right parser)

• 오른쪽부터 고치기를 거꾸로 하며 , 아래서 위로 (bottom-up) 나무 만들기 . 15/38

xβγ xyγ xyz ∈ *.B → β, β y ∈ *, γ z ∈ *.

αβz αyz xyz ∈ *.B → β,

β y ∈ *, α x ∈ *.

S

B

S

B

β

y

β

y

x

γ

z

α

x z

SIGPL 겨울학교 , 2012-02-03

Page 16: 2012 SIGPL 겨울학교

한국과학기술원 전산학과 최광무

왼 유도 (⇒), 파스나무 ,Stack, 입력문자열 , (Stack, 입력문자열 )

문⇒ 문→좌 = 우 좌 = 우⇒ 좌→ x x = 우⇒ 우→ 5 x = 5

16/38

문= 우좌

x 5x = 5

문좌=우x

5위에서 아래로왼쪽에서 오른쪽으로나무가 자란다 .

확인한다 .예상한다 .

예상과확인끝

시작 ( 문 , x=5)⇒ 문→좌 = 우 ( 좌 = 우 , x=5)⇒ 좌→ x (x= 우 , x=5)⇒↓x (= 우 , =5)⇒↓= ( 우 , 5)⇒ 우→ 5 (5, 5)⇒↓5 (ε, ε).

SIGPL 겨울학교 , 2012-02-03

Page 17: 2012 SIGPL 겨울학교

한국과학기술원 전산학과 최광무

왼 파서 (→), 문장확인기계예상과 확인 (Guess and verify)• 왼 파서의 상황 : V*ⅹΣ*.

– Stack 상황 : V* = (N ∪ )*, 단 α ∈ V*, 일 때 , stack top 이 1:α.– 나머지 입력 문자열 : Σ*.

• (1) Stack top 이 Y=B ∈ N일 때 :– S xBγ ⇒ xβγ xyγ xyz– •S x•Bγ x•βγ xy•γ xyz• – (S, xyz) (Bγ, yz) (βγ, yz) (γ, z) (ε, ε)

• B → β를 선택 (nondeterministic)하여 B 를 β 로 예상한다 .• Stack 에서 B 를 pop 하고 β 를 push.• (B, ε) → (β, ε). B 를 β로 예상 Guess(Produce) A as α.

• (2) Stack top 이 Y=a=y ∈ 일 때 :– S xaγ =() xyγ xyz– •S x•aγ xa•γ = xy•γ xyz• – (S, xyz) (aγ, az) (= ) (γ, z) (ε, ε)

• Stack top a가 현재입력문자 a 와 같은가를 확인 .• Stack 에서 a 를 pop 하고 입력문자열에서도 a 를 제거 . ↓• (a, a) →(= → (ε, ε)). a 를 확인 Verify(shift) a.

17/38SIGPL 겨울학교 , 2012-02-03

S

B

β γ

yx zS

a

= γ

yx z

Page 18: 2012 SIGPL 겨울학교

한국과학기술원 전산학과 최광무

왼 파서 - 2• 문법 G의 왼 파서 → = (V*ⅹΣ*, →, (S, w), {(ε, ε)}).

– 첫 상황 ι = (S, w) ∈ V*ⅹΣ*.– 끝 상황 Ф = {(ε, ε) ∈ V*ⅹΣ*}.– → = {(B, ε) → (β, ε)| B → β} ∪ {(a, a) → (ε, ε)| a ∈ Σ}

• 왼 파서는 stack이 입력문자열을 유도하는가 예상하고 확인한다 .– 첫 상황 끝 상황 .(S, w) (ε, ε).– 일반 상황 (α, xyz) (Y, z), α ∈ V*, x, y, z ∈ *, Y ∈ N ∪ Σ.

• 증명 αz xYz ⇔ (α, xyz) (Y, yz).• B → β1 | β2 (β1 ≠ β2)일 때 ,

– (B, ε) → (β1, ε). (B, ε) → (β2, ε).– 비결정적 (Nondeterministic)이다 .– 왼 파서는 문맥자유언어의 문장확인문제를 푸는 기계이다 .– 문맥자유언어의 문장확인문제는 NP이다 .

• 그러나 CYK 알고리즘은 O(n3).– 문맥자유언어의 문장확인문제는 P이다 .

• (S, w) (ε, ε) ↔ •S w• → S . w ∈ Σ*, π ∈ *.– |π| ≤ |π| + |w|.– 왼 유도 ()는 왼 파서(⇒)의 요약해석 (abstract interpretation)이다 .– 왼 파서 (⇒)와 ⇒ 은 같다.

SIGPL 겨울학교 , 2012-02-03 17-1/38

Page 19: 2012 SIGPL 겨울학교

한국과학기술원 전산학과 최광무

왼 파서의 예상을 예상한다 .결정적 (deterministic) SLL(k) 파서• 문맥자유문법 G = (N, Σ, P, S)의 왼 파서의 예상

→ = {(B, ε) → (β, ε)| B → β}• B → β1 | β2 (β1 ≠ β2).• (S, xyz) (Bγ, yz) (β1γ, yz) (γ, z) (ε, ε)

– B ⇒ β1 y1 ∈ *,– k:y1 ∈ Firstk(β1).

• (S, xyz) (Bγ, yz) (β2γ, yz) (γ, z) (ε, ε)– B ⇒ β2 y2 ∈ *,– k:y2 ∈ Firstk(β2).

• γ ⇒* z ∈ *,– k:z ∈ Followk(B).

• k:Firstk(β1)∙Followk(B) ∩ k:Firstk(β2)∙Followk(B) = ø이면 결정적.– u1 ∈ k:Firstk(β1)∙Followk(B): (B, u1) →SLL(k) (β1, u1)– u2 ∈ k:Firstk(β2)∙Followk(B): (B, u2) →SLL(k) (β2, u2)

• 문법 G의 Strong LL(k) 파서 →SLL(k) = (V*ⅹΣ*, →, (S, w), {(ε, ε)}),– → = {(B, y) → (β, y)| B → β, y ∈ k:Firstk(β)∙Followk(B)}– ∪ {(a, a) → (ε, ε)| a ∈ Σ}

• 문법 G의 Strong LL(k) 파서가 결정적(deterministic)이면,– 문법 G는 SLL(k) 문법이다.– Left to right scan with Leftmost derivation using k-lookahead symbols.

• SLL(1) 문법 ⊆ SLL(k) 문법 ⊆ LL(k) 문법(u1 = k:y1z, u2 = k:y2z).• 하지만 k=1인 경우 , SLL(1) 문법 = LL(1) 문법.

18/38

S

B

β

yx

γ

z왼파서(B, ε) → (β1, ε)(B, ε) → (β2, ε)

SIGPL 겨울학교 , 2012-02-03

β1β2

y1y2

Page 20: 2012 SIGPL 겨울학교

한국과학기술원 전산학과 최광무

오른 파서는오른 유도(⇒) 를 거꾸로 (←) 한다 .

x = 5←x← 좌 좌 = 5←5← 우 좌 = 우← 좌 = 우←문 문 .

19/38

문= 우좌

x 5x = 5

문좌=우x

5

오른쪽에서 왼쪽으로아래에서 위로나무가 자란다 .

확인한다 .저장한다 .

저장과확인끝

시작 (ε, x=5)⇒↑x (x, =5)⇒ x← 좌 ( 좌 , =5)⇒↑= (= 좌 , 5)⇒↑5 (5= 좌 , ε)⇒ 5← 우 ( 우 = 좌 , ε)⇒ 우 = 좌←문 ( 문 , ε).

SIGPL 겨울학교 , 2012-02-03

( 좌 = 우 )R

Page 21: 2012 SIGPL 겨울학교

한국과학기술원 전산학과 최광무

오른 파서 (→)저장과 확인 (Shift and reduce)• 오른 파서가 하는 두 가지 행동

– Stack에 입력문자 a ∈ Σ를 저장(shift)한다 .• Stack에서 a를 저장하고 입력문자열에서 a를 제거 .• (ε, a) → (a, ε). a ∈ Σ를 stack에 저장 shift a ∈ Σ.

– Stack에 A → α의 우변 αR이 있을 때 : αR을 A로 확인(reduce)한다 .• Stack에서 αR을 pop하고 A를 push한다 .• (αR, ε) → (A, ε). Stack에 α 를 A 로 확인 reduce α to A.

• 오른 파서는 입력문자열을 stack에 저장한 후 확인한다 .– 첫 상황 끝 상황 . (ε, w) (S, ε).– 일반 상황 (ε, xyz) (YαR, z), α ∈ V*, x, y, z ∈ *, Y ∈ N ∪ Σ.

• 증명 αYz xyz ⇔ (ε, xyz) (YαR, z).

• 오른 파서의 비결정성 (Nondeterminism)– Stack에 규칙 A → α의 우변 αR이 있을 때

• 입력문자열에서 a를 저장 (shift)할까 , αR을 A로 확인(reduce)할 까?– shift-reduce conflict

• 또 다른 규칙 A’ → α’의 우변 α’R이 있을 때 ,– reduce-reduce conflict

20/38SIGPL 겨울학교 , 2012-02-03

S

Y

αα

zx y

β

Page 22: 2012 SIGPL 겨울학교

한국과학기술원 전산학과 최광무

오른 파서와 LR(1) itemSx = 5←x← 좌 좌 = 5←5← 우 좌 = 우← 좌 = 우←문 문 .

21

문= 우좌

x 5x = 5

문좌=우x

5

오른쪽에서 왼쪽으로아래에서 위로나무가 자란다 .

확인한다 .저장한다 .

저장과확인끝

시작 (ε, x=5)⇒↑x (x, =5)⇒ x← 좌 ( 좌 , =5)⇒↑= (= 좌 , 5)⇒↑5 (5= 좌 , ε)⇒ 5← 우 ( 우 = 좌 , ε)⇒ 우 = 좌←문 ( 문 , ε).

SIGPL 겨울학교 , 2012-02-03

[S’ → • 문 , ε][ 문 → •좌 = 우 , ε][ 좌 → • x, =]

[S’ → 문• , ε]

[ 문 → 좌 =• 우 , ε][ 우 → • 5, ε]

[ 좌 → x•, =]

[ 문 → 좌 = 우• , ε]

[ 문 → 좌• = 우 , ε]

[ 우 → 5•, ε]

Page 23: 2012 SIGPL 겨울학교

한국과학기술원 전산학과 최광무

오른 파서의 비결정성 줄이기오른 파서 → LR(k) 파서• 문자(오른 파서) 대신에 LR(k) state(LR(k) 파서)를 stack에 넣는다.

– X ∈ N ∪ → [XαR]LR(k) ↔ 〈XαR〉LR(k).• Rk = {[B → β1•β2, x]| B→β1β2, x ∈ ≤k }: LR(k) itemS.• LR(k) itemsS: 〈 〉∙ k: V* → 2Rk.

〈αβ1〉k = {[B → β1•β2, k:z]| S αBz ⇒ αβ1β2z, B → β1β2}

• δ1R LR(k)(ρk) δ2

R, if 〈δ1〉k = 〈δ2〉 k.– 오른쪽에 있는 문자를 stack top에 넣으므로 stack 문자열이 뒤집어져(δR) 있다.– LR(k)는 집합 V*에 정의된 같은관계이다 .– 같은부류 [δ]LR(k)를(stack 문자열의 집합) LR(k) state라 한다.

• [δR]LR(k) ↔ [δR]ρk ↔ [δR]k ↔ 〈[δR]LR(k)〉k ↔ 〈δ〉LR(k) ↔ 〈δ〉ρk ↔ 〈δ〉k.– ParLR(k)(V*)를 [V*]LR(k)라고 쓰고 LR(k) state의 집합이다.

• LR(k) state ↔LR(k) item의 집합 ↔ stack 문자열의 집합• Stack에 있는 βR←B로 확인할 때 ,

– •S αB•z αβ•z αy•z •xyz.– •xyz αy•z αβ•z αB•z S•.– (ε, xyz) (αR, yz) (βRαR, y2z) ⇒ (BαR, z) (S, ε).– (βR, ε) → (B, ε)를 (βRαR, x) →LR(k) (BαR, x), x = k:z로 제한하여 확인한다 .

• [B → β1•β2, x] ∈ 〈αβ1〉 LR(k) ↔ [β1RαR]LR(k) 일 때,

– β2 = ε이면 x를 보고 β1←B로 확인(reduce)한다.– 1:β2 ∈ 이면 저장(shift)한다.– 1:β2 ∈ N이면 확인을 미리 준비(《 》∙ )한다.

22/38SIGPL 겨울학교 , 2012-02-03

S

B

αα

zx y

β

Page 24: 2012 SIGPL 겨울학교

한국과학기술원 전산학과 최광무

LR(k) 파서 만들기• 《 》∙ ρk: Rk → 2Rk.

– 《[B→β1•Aβ2, x]》ρk = {[A→•ξ, y]| A → ξ, y ∈ Firstk(β2x)}– [A→ξ•, y] ∈ 〈αβ1ξ〉ρk일 때, y를 보고 ξ←A로 확인할 준비한다.

• 〈ε〉ρk = 《[S’→•S, ε]》ρk* ∈ []LR(k)로 시작(basis).

• [B→β1•Xβ2, x] ∈ 〈αβ1〉ρk ∈ []LR(k)이면(recursion),[B→β1X•β2, x] ∈ 《〈αβ1X〉ρk 》ρk

* ∈ []LR(k).• 〈αβ1X〉ρk = 《[B→β1X•β2, y]》ρk

* = {[B→β1X•β2, y]} ∪ 《[B→β1X•β2, y]》ρk†.

단 {[B→β1X•β2, y]} ∪ 《[B→β1X•β2, y]》ρk† = ø.

• 문법 G = (N, , P, S)의 LR(k) 파서,– LRk(G) = (([]LR(k) ⅹ*, →LR(k), (〈ε〉k, w), {(〈ε〉k∙〈S〉k, ε)}).– →LR(k) = {(〈αβ1〉k, a) →LR(k) (〈αβ1∙a〉k∙〈αβ1〉k, ε)– | a ∈ Σ, [A → β1•aβ2, x] ∈ 〈αβ1〉k}– ∪ {(〈αβ1∙ξ〉k∙〈αβ1∙ξ:|ξ|-1〉k∙ … ∙〈αβ1∙ξ:1〉k∙〈αβ1〉k, x) →LR(k) (〈αβ1∙A〉k∙〈αβ1〉k, x)– | [B → β1•Aβ2, y] ∈ 〈αβ1〉k, [A → •ξ, x] ∈ 《〈αβ1〉k》k

†,– [A → ξ•, x] ∈ 〈αβ1ξ〉k, [B → β1A•β2, y] ∈ 〈αβ1A〉k}.

23/38SIGPL 겨울학교 , 2012-02-03

[S’→•S, ε]

∈ 〈 ε 〉k

[S’→S•, ε]

∈ 〈 S 〉 k

[B→β1•Aβ2, x]

∈ 〈 αβ1 〉 k

[B→β1A•β2, x]

∈ 〈 αβ1A 〉k

[A→•ξ, y]

∈ 《〈 αβ1 〉k 》 k

[A→ξ•, y]

∈ 〈 αβ1ξ 〉k

S

Aαβ1

ξ

Page 25: 2012 SIGPL 겨울학교

왼 파서의 비결정성 더 줄이기SLL(k) 파서 → LL(k) 파서

• 문자(SLL(k) 파서) 대신에 LL(k) state(LL(k) 파서)를 stack에 넣는다 .– X ∈ N ∪ → [XαR]LR(k) ↔ 〈XαR〉LR(k).

• Lk = {[B → β1•β2, x]| B→β1β2, x ∈ ≤k}: LL(k) itemS.• 예상할 때 , 올 수 있는 입력 문자열을 SLL(k) 보다 더 자세히 계산한다 .• LL(k) itemS: 〈 〉∙ k: V* → 2Lk.

〈β2γ〉k = {[B → β1•β2, x]| S Bγ ⇒lm xβ1β2γ, B → β1β2, x ∈ Firstk(β2γ)}

• δ1 LL(k)(λk) δ2, if 〈δ1〉k = 〈δ2〉k.– 왼쪽에 있는 문자를 stack top에 넣으므로 stack 문자열이 뒤집히지 않는다.– LL(k)는 집합 V*에 정의된 같은관계이다.– 같은부류 [δ]LL(k)(stack 문자열들의 집합)를 LL(k) state라 한다 .

• [δ]LL(k) ↔ [δ]λk ↔ [δ]k ↔ 〈[δ]LL(k)〉k ↔ 〈δ〉LL(k) ↔ 〈δ〉λk ↔ 〈δ〉k.– ParLL(k)(V*)를 [V*]LL(k) 라고 쓰고 LL(k) state의 집합이다.

• Stack에 있는 B→β로 예상할 때,– •S x•Bγ x•βγ xy•γ xyz•.– (S, xyz) (Bγ, yz) ⇒ (βγ, yz) (γ, z) (ε, ε).– (B, u) →SLL(k) (β, u)에서 u ∈ k:Firstk(β)∙Followk(A)로 예상하나 ,– (B, x) →LL(k) (β, x)에서 x = k:yz로 제한하여 예상한다 .

• {k:yz} ⊆ k:Firstk(β)∙Followk(A).• [B → β1•β2, x] ∈ 〈β2γ〉 LL(k) ↔ [β2γ]LL(k) 일 때,

– β1 = ε이면 x를 보고 B→β2로 예상한다.– β1:1 ∈ 이면 이면 확인(verify)한다 .– β1:1 ∈ N이면 예상을 미리 준비(《 》∙ )한다 .

한국과학기술원 전산학과 최광무 24/38SIGPL 겨울학교 , 2012-02-03

S

B

β γ

yx z

Page 26: 2012 SIGPL 겨울학교

LL(k) 파서 만들기• 《 》∙ λk: Lk → 2Lk.

– 《[B→β1A•β2, x]》λk = {[A→ξ•, x]| A → ξ}– [A→•ξ, x] ∈ 〈β2γ〉λk일 때, A→ξ로 예상할 준비한다.

• 〈ε〉λk = 《[S’→S•, ε]》λk* ∈ []LL(k) 로 시작(basis).

• [B→β1X•β2, x] ∈ 〈β2γ〉λk ∈ []LL(k)이면(recursion),[B→β1•Xβ2, y] ∈ 《〈Xβ2γ〉λk》λk

* ∈ []LL(k), y ∈ Firstk(Xx).

• 〈Xβ2γ〉λk = 《[B→β1•Xβ2, y]》λk* = {[B→β1•Xβ2, y]} ∪ 《[B→β1•Xβ2, y]》λk

†.단 {[B→β1•Xβ2, y]} ∪ 《[B→β1•Xβ2, y]》λk

† = ø.• 문법 G = (N, , P, S)의 LL(k) 파서,

– LLk(G) = (([]LL(k) ⅹ*, →LL(k), ([ε]k∙[S]k, w), {([ε]k, ε)}).– →LL(k) = {([A∙β2γ]k∙[γ]k, x) →LL(k) {([ξ∙β2γ]k∙[ξ:|β|-1∙β2γ]k∙ … ∙[ξ:1∙β2γ]k∙[β2γ]k, x)– | [B → β1A•β2, y] ∈ 〈β2γ〉k, [A →ξ•, y] ∈ 《〈β2γ〉k》k

†,– [A → •ξ, x] ∈ 〈β2γ〉k, [B → β1•Aβ2, X] ∈ 〈A∙β2γ〉k}. x ⊆ X.– ∪ {([aβ2γ]k∙[γ]k, a) →LL(k) ([β2γ]k, ε)– | a ∈ Σ, [A → β1•aβ2, x] ∈ 〈aβ2γ〉k}

한국과학기술원 전산학과 최광무 25/38SIGPL 겨울학교 , 2012-02-03

[S’→S•, ε]

∈ [ε]k [S’→•S, s]

∈ [S]k

[B→β1A•β2, x]

∈ [β2γ]k [B→β1•Aβ2, X]

∈ [Aβ2γ]k

[A→ξ•, x]

∈ 《 [β2γ]k 》k†

[A→•ξ, y]

∈ [ξβ2γ ]k

S

Aβ2γ

ξ

Page 27: 2012 SIGPL 겨울학교

한국과학기술원 전산학과 최광무

왼 파서의 종류• 유한상태기계

– A = (Q , →A, (, w), {(f, ε)| f∈F})– (q, x) →A (p, ε).

• 왼 파서– L = (( ), →L, (S, w), {(ε, ε)})– B 를 β로 (B → β) 예상 (guess B as β) a ∈ Σ를 확인 (verify a)– (B, ε) →L (β, ε), (a, a) →L (ε, ε).

• SLL(k) 왼 파서– SLL(k) = (( ), →SLL(k), (S, w), {(ε, ε)})– (B, x) →SLL(k) (β, x), (a, a) →SLL(k) (ε, ε).– x ∈ Firstk(β∙Follwk(B)),

• LL(k) 왼 파서– LL(k) = (([]LL(k) ), →LL(k), ([ε]k[S]k, w), {([ε]k}, (ε, ε)})– ([B∙γ]k∙[γ]k, x) →LL(k) ([β∙γ]k…[γ]k, x), ([a∙γ]k∙[γ]k, a) →LL(k) [γ]k, ε).

• [B → •β, x] ∈ 〈β∙γ〉 LL(k), [~ → ~•a~, a~] ∈ 〈a∙γ〉 LL(k).• SLL(k) ⊆ 문법 LL(k)문법 .

26/38SIGPL 겨울학교 , 2012-02-03

Page 28: 2012 SIGPL 겨울학교

한국과학기술원 전산학과 최광무

오른 파서의 종류• 오른 파서

– R = (( ), →R, (ε, w), {(S, ε)})– a ∈ Σ를 저장(shift a) β를 B로(B → β) 확인(reduce β to B)– (ε, a) →R (a, ε); (, ε) →R (B, ε)

• LR(k) 오른 파서 LR(k, k)– LR(k) = (([]LR(k) ), →LR(k), ([ε]k, w), {([ε]k∙[S]k}, (ε, ε)})– LR(k) 상태 , LR(k) 확인(reduce)– ([]k, a) →LR(k) ([]k∙]k, ε), ([]k…[]k, x) →LR(k) ([]k∙[]k, x)– [~ → ~•a~, a~] ∈ 〈α〉 LR(k), [B → β•, x] ∈ 〈αβ〉 LR(k).

• SLR(k) 오른 파서 LR(0, K) K ⊇ k.– SLR(k) = (([]LR(0) ), →SLR(k), ([ε]0, w), {([ε]0∙[S]0}, (ε, ε)})– LR(0) 상태 , Followk(B) 확인(reduce)– ([]0, a) →SLR(k) ([]0∙[]0, ε), ([]0…[]0, y) →SLR(k) ([]0∙[]0, y)– [~ → ~•a~] ∈ 〈α〉 LR(0), [B → β•] ∈ 〈αβ〉 LR(0), y ∈ Followk(B).

• LALR(k) 오른 파서 LR(0, k)– LALR(k) = (([]LR(0) ), →LALR(k), ([ε]0, w), {([ε]0∙[S]0}, (ε, ε)})– LR(0) 상태 , LR(k) 확인(reduce)– ([]0, a) →LALR(k) ([]0∙[]0, ε), ([]0…[]0, x) →LALR(k) ([]0∙[]0, x)– [~ → ~•a~] ∈ 〈α〉 LR(0), [B → β•, x] ∈ 〈αβ〉 LR(k).

• SLR(k)문법 ⊆ LALR(k)문법 ⊆ LR(k)문법 .

27/38SIGPL 겨울학교 , 2012-02-03

Page 29: 2012 SIGPL 겨울학교

한국과학기술원 전산학과 최광무

LL, RR/LR, RL 파서

21/38

S

B

β γ

yx z

S

B

α

S

B

S

B

βα

yx z

β

S

B

y

γ

z

α

x

LL RR

LR RLSIGPL 겨울학교 , 2012-02-03

α

zx y

β β

x y z

γ

Page 30: 2012 SIGPL 겨울학교

한국과학기술원 전산학과 최광무

결정적 왼 / 오른 파서• 왼 파서의 결정적 파서

– Stack 이 유도할 문자열을 미리 계산하여 예상하고 후에 확인한다 . – SLL(k) 문법 ⊆ LL(k) 문법이지만– SLL(1) 문법 = LL(1) 문법– 좌 반복 (left recursive) 문법은 LL(k) 가 아니다 .

• A → Aα | β 이면• Firstk(Aα) ⊇ Firstk(A) ⊇ Firstk(β).

• 오른 파서의 결정적 파서– Stack 에 미리 기억하고 후에 확인한다 .

• 왼 파서는 ( 성실한 ) 미래학자이고 ,– Stack 에 있는 미래 ( 우문맥 (right context)) 를 미리 예측하고 확인한다 .

• 오른 파서는 ( 성실한 ) 역사학자이다 .– Stack 에 과거 ( 좌문맥 (left context)) 를 기억하여 정리하고 확인한다 .

• … ⊆ LL(k) 문법 ⊆ SLR(k) 문법 ⊆ …28/38SIGPL 겨울학교 , 2012-

02-03

Page 31: 2012 SIGPL 겨울학교

한국과학기술원 전산학과 최광무

Turing 기계 (machine) 는 컴퓨터다 .• Turing 기계(machine; TM) Turing 1930.• M = (Q, Σ, Γ, →TM, qs, qf)

– Q: StateS– Σ: 입력문자Γ: Tape 문자(Σ ⊆ Γ, B ∈ Γ, B ¬∈ Σ)– qs ∈ Q: 시작 상태 qf ∈ Q: 마지막 상태 .– TM의 상태 : QⅹΓ*ⅹΓ*: StateⅹTape 왼쪽내용ⅹTape 오른쪽내용 .– (q, αZ, Xβ) →TM

(p/Y/L) (p, αZY, β)– (q, αZ, Xβ) →TM

(p/Y/R) (p, α, ZYβ)• L(TM) = {w ∈ Σ*| (q0, ε, w) ⇒TM

* (qf, α, β)}.• TM은 메모리에 읽고 쓰고 , head를 움직일 수 있다 .• TM은 컴퓨터다 .

– 1 cell을 32bit로 확장(word)한다 .– 단일 head를 다중 head로 바꿀 수 있다 .

• Register, memory– 산수와 논리(ALU)를 흉내 낼 수 있다 .– Program 메모리와 data 메모리를 구분한다 .

• Von Neumann 구조• Stored(Programmable) control logic

– Hardware vs. Software• TM은 프로그램이다 .

SIGPL 겨울학교 , 2012-02-03 29/38

프로그램알고리즘

NP-complete

문제 ( 프로그램 ) 의 계층구조프로그램 할 수 없다

Page 32: 2012 SIGPL 겨울학교

한국과학기술원 전산학과 최광무

TM 은 프로그램이다• 프로그램의 꽃

– 반복 (재귀 )구조 (loop)• 변하지 않는 (loop invariance) 성질• 변하는 (loop termination) 성질

• 반복구조 (loop)의 문제– 끝나지 않을 수 (infinite loop) 도 있다

• 항상 끝나는 프로그램 (알고리즘 )– Type 1– Recursive– 전체 (total) 함수

• 끝나지 않은 수 도 있는 프로그램– Type 0– Recursively enumerable– 부분 (partial) 함수

• Recursively enumerable 밖에는 무엇이 있나?– 프로그램 할 수 없는 문제들

SIGPL 겨울학교 , 2012-02-03 30/38

Page 33: 2012 SIGPL 겨울학교

한국과학기술원 전산학과 최광무

함수와 컴퓨터 ( 프로그램 , TM)• 문제를 푸는 두 가지 방법

– 프로그램(TM)• 해결 방법(operational)• 어떻게 하는가(how)?• (ε, qs, w) (α, qf, β). w ∈ Σ*, αβ ∈ Γ*.

– 함수• 문제(functional)• 무엇을 하는가(what)?• fTM(w) = αβ.

• 함수 f: Nn → Nm.– Nn ↔ N ↔ Nm.– f: Nn → Nm. ↔ f’: N → N.

• 부분함수 g: N → N. ∃x∈ N: [g(x) = X ¬∈N(undefined).

• 기본재귀함수(primitive recursive) 함수– 상수 함수

• 영(zero) 함수: ζ: N → N({0}).– ζ(x) = 0.

• 다음수(successor) 함수: σ: N → N.– σ(n) = n+1.

– 인수 찾기(projection): πkn: Nn → N. πk

n(x) = ak 단 1≤k≤n ∧ x = (a1, …, ak,, … ,an).• 기본재귀

– f: N ⅹ N → N를• g: N → N와 h: N ⅹ N ⅹ N → N로 정의한다.

– f(x, ζ(n)) = g(x). f(x, 0) = g(x).– f(x, σ(n)) = h(x, n, f(x, n)). f(x, n+1) = h(x, n, f(x, n)).

SIGPL 겨울학교 , 2012-02-03 31/38

Page 34: 2012 SIGPL 겨울학교

한국과학기술원 전산학과 최광무

TM, 최소화 재귀함수 ,Turing-Church 의 주장

• Ackermann함수는 기초재귀로는 안 된다 .A(0, y) = y+1A(x+1, 0) = A(x, 1)A(x+1, y+1) = A(x, A(x+1), y))

• μ-(최소화)재귀함수 – Church 1934; lecture at Princetonf(x) = μ n [g(x, n) = 0] Min n: [g(x, n) = 0 ∧ (1 ≤ ∀k ≤ n: ∃g(x, k)]

• Turing의 주장– TM(프로그램)은 계산가능(computable, programmable)이다.

• TM ⇒ 계산가능 .– 계산가능은 TM(프로그램)이다(?)라고 주장(Thesis)

• TM ⇔ 계산가능 .• Church의 주장

– μ-재귀함수는 TM으로 프로그램할 수 있다.– TM도 μ-재귀함수로 표현할 수 있다.(증명)

• TM ⇔ μ-재귀함수 .– 계산가능은 μ-재귀함수이기도 하다.

• Turing-Church의 주장– 계산가능은 프로그램(TM)이나 μ-재귀함수이다.

• 프로그램 ⇔ μ-재귀함수 ⇔ 계산가능(?)– 계산가능은 λ-calculus(Church 1934, Kleene 1935, Rosser 1935)다.– 계산가능은 combinatory logic(Schönfinkel 1924, Curry 1929)이다.– 계산가능은 type 0 grammar(Chomsky 1959)이다.

SIGPL 겨울학교 , 2012-02-03 32/38

Page 35: 2012 SIGPL 겨울학교

한국과학기술원 전산학과 최광무

Cantor 의 대각선화 주장 (1874; 1891)비극의 시작• 무한이진수 ↔ 자연수(셀 수 있게 무한)이라고 하자.• a1 = 00000…• a2 = 11111…• a3 = 01101…• …• a = 011 … 대각선화(diagonalization)• ¬a = 100 … 대각선화의 부정• a, ¬a ∈ 무한이진문자열,

그러나, a ↔ 자연수, ¬a ¬↔ 자연수.

• 무한이진수 ¬↔ 자연수.– |자연수의 부분집합| > |자연수|

• 자연수 셀 수 있게(countable) 무한(많다)• 자연수의 부분집합 셀 수 없이(uncountable) 무한(많다)

• 증명의 핵심– 대각선화(diagonalization) 후에 부정한다.

• Russell에 영향을 준 것으로 예상 .– Self-recursion에 대한 부정.– 내 개인 생각

33/38SIGPL 겨울학교 , 2012-02-03

Page 36: 2012 SIGPL 겨울학교

한국과학기술원 전산학과 최광무

Russell 의 모순 (paradox, 1901; 1911)• Cantor 의 naive set theory 에 대한 부정• Let R = {x| x ¬∈ R}• 매우 아름다운 집합에 대한 정의

– 집합도 집합의 원소가 될 수 있다 .• {{}, {{}}, {{{}}}, …}

– 집합이 그 집합 자신을 원소로 갖는 것은 이상하다 .• 사각형의 집합이 사각형의 집합을 원소로 가지지 않는다 .

– 그러나 ,• in x = R then (R ∈ R) ⇔ (R ¬∈ R).• 자기자신으로 재귀 (self-recursion) 에 대한 부정 .

• 자신을 부정하는 사람은 존재하지 않는다 .34/38SIGPL 겨울학교 , 2012-

02-03

x ¬∈ x.

Page 37: 2012 SIGPL 겨울학교

한국과학기술원 전산학과 최광무

Hilbert 의 실패한 꿈 (1929)Gödel 의 불완전성 정리 (1931)

• Hilbert의 꿈(program), 1929.– 공리(axiom)로 시작한 완전하고(complete) 일관된(consistent) 수학(정리 , theorem; 식 , formula)의 모든 정리

(theorem)는 일관된 증명(proof; 프로그램)이 있다 .• Gödel의 불완전성 정리(Incompleteness Theorem), 1931.

– 증명(proof)도 정리(theorem)다.1. 완전하고 일관된 공리를 가진 수학은 없다 .2. 자신의 일관됨을 주장하는 정리는 일관되지 않다 .• Gödel의 불완전성 정리의 증명

– G(T): 정리 → Gödel수: 정리 T의 Gödel수– prov: Gödel수 → 수; prov(G(T)) = G(p) if ∃p: 정리 T의 증명; = Gödel수가 아닌 수 , otherwise.– p ⇔ F(G(p))– Consider Beweisbar(y: Gödel수) = ∃x: ((y = G(T): T: x의 정리) ∧ (x = G(p): (p: y의 증명))– Beweisbar(Gödel의 모국어인 독일어로 provable)는 너무 길다.

• Beweisbar(y) = G(p): (p: y의 증명)• Gödel수(증명 ↔ 정리 ↔ 자연수)도 필요 없다 .

• Bew(T: 정리) = if prov(T) → true | ¬prov(T) → false fi.• Bew(T) = F(T).• 대각선화(diagonalization)하고 부정한다 .• ¬Bew(T: 정리) = if prov(T) → false | ¬prov(T) → true fi.• ¬Bew(T) = ¬F(T).• Self recursion

– ¬Bew(Bew) = ¬prov(prov) ⇔ prov(prov) = Bew(Bew).

35/38SIGPL 겨울학교 , 2012-02-03

Page 38: 2012 SIGPL 겨울학교

한국과학기술원 전산학과 최광무

Halting problem 과 같은 문제들• Let H(p, d) = if p(d) stops → ¬stop

| p(d) ¬stop → stopsfi.

• in p = d = H• then H(H, H) stops ⇔ H(H) ¬stop ⇔ H(H, H) ¬stop.• 거짓말쟁이 개똥이가 , “이 글은 내가 썼다”

그 글을 개똥이가 썼나 , 안 썼다?• 이발 못하는 사람만 이발해주는 이발사 .

자신이 자신을 이발 할 까 , 안 할 까?• 이종형용사 (Heterological)는 이종형용사인가 아닌가?

– 형용사가 표현하는 성질을 가지지 않은 형용사• 예 (단음절 )monosyllabic heterological(다음절 )polysyllabic ¬ heterological• 그러나 Heterological ???

• p ⇔ ¬ p.– Gödel의 불완전성 두 번째 정리(첫 번째 정리의 corollary).– 큰일 났다 !

• 그런데 , 이거 모두 말장난 (논리장난 ) 아닌가?– 맞다 ()

36/38SIGPL 겨울학교 , 2012-02-03

Page 39: 2012 SIGPL 겨울학교

한국과학기술원 전산학과 최광무

서양 과학과 동양 인문학• 서양 과학

– 수학 또는 과학• F = ma.• E = mc2.

– 19c말 – 20c초 , 쉬운 과학과 공학을 이용한 무력으로 세계제패 .• 경제적 우월성

– 과학 또는 수학은 쉽다 .– 공학은 어렵다 .

• 자연과 사람의 문제 .– Cantor, Russell, Gödel, Hilbert, ...

• 형식주의 , 논리주의의 붕괴• 과학(수학) 만능에 대한 수학자들의 경고 .

• 동양 인문학– 사람에 대한 이해와 존경– 사람이 제일 어렵다 .

• 미래의 전산학– 사람의 문제를 다룬다 .– 기존의 공학과는 전혀 다른 새로운 학문이다 .– 프로그램학

• SIGPL

37/38SIGPL 겨울학교 , 2012-02-03

Page 40: 2012 SIGPL 겨울학교

한국과학기술원 전산학과 최광무

전산학과 사람• 미래학자들

– 전화기 망한다 .• 전 세계 인구의 1/3이 교환수• 기계식 교환기 , 컴퓨터 교환기

– 기술적 비약 (Technical take-off)– 컴퓨터 망한다 .

• 전 세계 인구의 반이 프로그래머• ???• 새로운 파라다임 .

• 좋은 프로그래밍언어– E. W. Dijkstra(1970년대 )

• 사람을 위한 프로그래밍언어 vs. 기계를 위한 프로그래밍 언어– 최광무 (1990년대 )

• 사람을 위한 프로그래밍언어 vs. 수학을 위한 프로그래밍 언어• 사람을 위한 프로그램학

– 수학과의 만남– 인문사회학과의 만남– 사람과의 만남

38/38SIGPL 겨울학교 , 2012-02-03

Page 41: 2012 SIGPL 겨울학교

한국과학기술원 전산학과 최광무

미래에 지도자• 수신제가 (修身齊家 ) 치국평천하 (治國平天下 )– 공자 , 대학 제 2 장

• 격물치지 (格物致知 ) 성의정심 (誠意正心 )– 격물치지

• 이공학 공부• 세상 무서운 줄 안다 .

– 성의정심• 인문사회학 공부• 사람 귀한 줄 안다 .

• 미래에 지도자– 세상 무서운 줄 알고 , 사람 귀한 줄 아는 사람

SIGPL 겨울학교 , 2012-02-03 38-1

Page 42: 2012 SIGPL 겨울학교

감사합니다 한국과학기술원 전산학과 최광무 38-2

전산학과 인문사회학 공부모두 열심히 하신 후에 ,미래에 훌륭한 지도자가되시기 바랍니다 .SIGPL 겨울학교 , 2012-02-03