+ All Categories
Home > Documents > 오늘 할 것dreameye/PL/slide/PL1.pdf · 2011-03-08 · 오늘 할 것 •귀납적 정의 =...

오늘 할 것dreameye/PL/slide/PL1.pdf · 2011-03-08 · 오늘 할 것 •귀납적 정의 =...

Date post: 25-Jun-2020
Category:
Upload: others
View: 1 times
Download: 0 times
Share this document with a friend
27
오늘 할 것 귀납적 정의 = 집합의 정의 집합을 만드는 방법 원소들의 순서 귀납법 형식논리와 추론 hw1 설명 1 2011년 3월 8일 화요일
Transcript
Page 1: 오늘 할 것dreameye/PL/slide/PL1.pdf · 2011-03-08 · 오늘 할 것 •귀납적 정의 = 집합의 정의 •집합을 만드는 방법 •원소들의 순서 •귀납법 •형식논리와

오늘 할 것

•귀납적 정의 = 집합의 정의

•집합을 만드는 방법

•원소들의 순서

•귀납법

•형식논리와 추론

•hw1 설명

12011년 3월 8일 화요일

Page 2: 오늘 할 것dreameye/PL/slide/PL1.pdf · 2011-03-08 · 오늘 할 것 •귀납적 정의 = 집합의 정의 •집합을 만드는 방법 •원소들의 순서 •귀납법 •형식논리와

귀납법 = 집합의 정의

��� = ��� ��

��� ���� ��

� ���� return �, ��� dedicate �.

� � ��� ��� ��� � ��� ��� ���.

��� = ��� ��

��� ���� ��

� ���� return �, ��� dedicate �.

� � ��� ��� ��� � ��� ��� ���.•되돌아가서 return 바치다 dedicate.

•그 집합의 원소를 가지고 그 집합의 원소를 만든다.

22011년 3월 8일 화요일

Page 3: 오늘 할 것dreameye/PL/slide/PL1.pdf · 2011-03-08 · 오늘 할 것 •귀납적 정의 = 집합의 정의 •집합을 만드는 방법 •원소들의 순서 •귀납법 •형식논리와

귀납적 정의 Inductive Definition

겉모양 속뜻

N = {0, 1, 2, ...}

zero N

a Nsucc(a) N

N = {x | x = 0 ∨ ∀y ∈ N , x = y + 1}

N → zero| succ(N )

1

N = {0, 1, 2, ...}

zero N

a Nsucc(a) N

N = {x | x = 0 ∨ ∀y ∈ N , x = y + 1}

N → zero| succ(N )

[[ zero ]] = 0[[ N ]] = N + 1

T → root| node(T, T )

[[ root ]] =[[ node(T1, T2) ]] =

[[ T1 ]] [[ T2 ]]

1

N = {0, 1, 2, ...}

zero N

a Nsucc(a) N

N = {x | x = 0 ∨ ∀y ∈ N , x = y + 1}

N → zero| succ(N )

[[ zero ]] = 0[[ N ]] = N + 1

T → root| node(T, T )

[[ root ]] =[[ node(T1, T2) ]] = [[ T1 ]] [[ T2 ]]

1

N = {0, 1, 2, ...}

zero N

a Nsucc(a) N

N = {x | x = 0 ∨ ∀y ∈ N , x = y + 1}

N → zero| succ(N )

[[ zero ]] = 0[[ N ]] = N + 1

T → root| node(T, T )

[[ root ]] =[[ node(T1, T2) ]] = [[ T1 ]] [[ T2 ]]

L → nil| cons(N ;L)

1

N = {0, 1, 2, ...}

zero N

a Nsucc(a) N

N = {x | x = 0 ∨ ∀y ∈ N , x = y + 1}

N → zero| succ(N )

[[ zero ]] = 0[[ N ]] = N + 1

T → root| node(T, T )

[[ root ]] =[[ node(T1, T2) ]] = [[ T1 ]] [[ T2 ]]

L → nil| cons(N ;L)

[[ nil ]] =[[ cons(N ;L) ]] = [[ N ]] [[ L ]]

1

N = {0, 1, 2, ...}

zero N

a Nsucc(a) N

N = {x | x = 0 ∨ ∀y ∈ N , x = y + 1}

N → zero| succ(N )

[[ zero ]] = 0[[ N ]] = N + 1

T → root| node(T, T )

[[ root ]] =[[ node(T1, T2) ]] = [[ T1 ]] [[ T2 ]]

L → nil| cons(N ;L)

[[ nil ]] =[[ cons(N ;L) ]] = [[ N ]] [[ L ]]

1

N = {0, 1, 2, ...}

zero N

a Nsucc(a) N

N = {x | x = 0 ∨ ∀y ∈ N , x = y + 1}

N → zero| succ(N )

[[ zero ]] = 0[[ N ]] = N + 1

T → root| node(T, T )

[[ root ]] =[[ node(T1, T2) ]] = [[ T1 ]] [[ T2 ]]

L → nil| cons(N ;L)

[[ nil ]] =[[ cons(N ;L) ]] = [[ N ]] [[ L ]]

1

N = {0, 1, 2, ...}

zero N

a Nsucc(a) N

N = {x | x = 0 ∨ ∀y ∈ N , x = y + 1}

N → zero| succ(N )

[[ zero ]] = 0[[ N ]] = N + 1

T → empty| node(T, T )

[[ empty ]] =[[ node(T1, T2) ]] = [[ T1 ]] [[ T2 ]]

L → nil| cons(N ;L)

[[ nil ]] =[[ cons(N ;L) ]] = [[ N ]] [[ L ]]

1

N = {0, 1, 2, ...}

zero N

a Nsucc(a) N

N = {x | x = 0 ∨ ∀y ∈ N , x = y + 1}

N → zero| succ(N )

[[ zero ]] = 0[[ N ]] = N + 1

T → empty| node(T, T )

[[ empty ]] =[[ node(T1, T2) ]] = [[ T1 ]] [[ T2 ]]

L → nil| cons(N ;L)

[[ nil ]] =[[ cons(N ;L) ]] = [[ N ]] [[ L ]]

1

N = {0, 1, 2, ...}

zero N

a Nsucc(a) N

N = {x | x = 0 ∨ ∀y ∈ N , x = y + 1}

N → zero| succ(N )

[[ zero ]] = 0[[ succ(N ) ]] = [[ N ]] + 1

T → empty| node(T, T )

[[ empty ]] =[[ node(T1, T2) ]] = [[ T1 ]] [[ T2 ]]

L → nil| cons(N ;L)

[[ nil ]] =[[ cons(N ;L) ]] = [[ N ]] [[ L ]]

n�

i=0

i =n(n+ 1)

2

Base case: zero, 0 =0 ∗ (0 + 1)

2

Inductive case: succ(n),we have the induction hypothesisn�

i=0

i =n(n+ 1)

2.

We want to shown+1�

i=0

i =(n+ 1)(n+ 2)

2.

n+1�

i=0

i =n�

i=0

i+ (n+ 1) =n(n+ 1)

2+ (n+ 1) =

(n+ 1)(n+ 2)

2.

1

32011년 3월 8일 화요일

Page 4: 오늘 할 것dreameye/PL/slide/PL1.pdf · 2011-03-08 · 오늘 할 것 •귀납적 정의 = 집합의 정의 •집합을 만드는 방법 •원소들의 순서 •귀납법 •형식논리와

집합 정의

•규칙: 가정(premise)과 결론(conclusion)

•가정에 있는 것들이 집합에 있으면 결론도 있어야한다.

•닫힌 집합중 가장 작은 집합

J1 ... JnJ

N = {0, 1, 2, ...}

zero N

a Nsucc(a) N

N = {x | x = 0 ∨ ∀y ∈ N , x = y + 1}

N → zero| succ(N )

[[ zero ]] = 0[[ succ(N ) ]] = [[ N ]] + 1

T → empty| node(T, T )

[[ empty ]] =[[ node(T1, T2) ]] = [[ T1 ]] [[ T2 ]]

L → nil| cons(N ;L)

[[ nil ]] =[[ cons(N ;L) ]] = [[ N ]] [[ L ]]

n�

i=0

i =n(n+ 1)

2

Base case: zero, 0 =0 ∗ (0 + 1)

2

Inductive case: succ(n),we have the induction hypothesisn�

i=0

i =n(n+ 1)

2.

We want to shown+1�

i=0

i =(n+ 1)(n+ 2)

2.

n+1�

i=0

i =n�

i=0

i+ (n+ 1) =n(n+ 1)

2+ (n+ 1) =

(n+ 1)(n+ 2)

2.

1

닫힌 집합

최소의 집합

J

J1 ... Jn∈ R, J1 ... Jn ∈ S ⇒ J ∈ S

�{S | S is closed under R}

N = {0, 1, 2, ...}

zero N

a Nsucc(a) N

N = {x | x = 0 ∨ ∀y ∈ N , x = y + 1}

N → zero| succ(N )

[[ zero ]] = 0[[ succ(N ) ]] = [[ N ]] + 1

T → empty| node(T, T )

[[ empty ]] =[[ node(T1, T2) ]] = [[ T1 ]] [[ T2 ]]

L → nil| cons(N ;L)

[[ nil ]] =[[ cons(N ;L) ]] = [[ N ]] [[ L ]]

n�

i=0

i =n(n+ 1)

2

1

J1 ... JnJ

∈ R, J1 ... Jn ∈ S ⇒ J ∈ S

F (X) = {J | J1 ... JnJ

∈ R, J1 ... Jn ∈ X}

�{S | S is closed under R}

N = {0, 1, 2, ...}

zero N

a Nsucc(a) N

N = {x | x = 0 ∨ ∀y ∈ N , x = y + 1}

N → zero| succ(N )

[[ zero ]] = 0[[ succ(N ) ]] = [[ N ]] + 1

T → empty| node(T, T )

[[ empty ]] =[[ node(T1, T2) ]] = [[ T1 ]] [[ T2 ]]

L → nil| cons(N ;L)

[[ nil ]] =[[ cons(N ;L) ]] = [[ N ]] [[ L ]]

n�

i=0

i =n(n+ 1)

2

1

42011년 3월 8일 화요일

Page 5: 오늘 할 것dreameye/PL/slide/PL1.pdf · 2011-03-08 · 오늘 할 것 •귀납적 정의 = 집합의 정의 •집합을 만드는 방법 •원소들의 순서 •귀납법 •형식논리와

최소의 집합?

•정확히 우리가 원하는 것들만 들어가 있는 집합

•0을 포함하면서 +1에 대해서 닫힌 집합은? 자연수, 정수, 유리수, 실수 ...

•그 중 가장작은 집합은? 자연수

52011년 3월 8일 화요일

Page 6: 오늘 할 것dreameye/PL/slide/PL1.pdf · 2011-03-08 · 오늘 할 것 •귀납적 정의 = 집합의 정의 •집합을 만드는 방법 •원소들의 순서 •귀납법 •형식논리와

집합 만들기

•규칙 이 정의하는 함수

•규칙이 만드는 집합은 함수에 대해 닫혀 있는 집합중 가장 작은 집합니다.

•이 집합은 함수 의 최소고정점 (least fixed point)이다.

J1 ... JnJ

∈ R, J1 ... Jn ∈ S ⇒ J ∈ S

F (X) = {J | J1 ... JnJ

∈ R, J1 ... Jn ∈ X}

�{S | S is closed under R}

N = {0, 1, 2, ...}

zero N

a Nsucc(a) N

N = {x | x = 0 ∨ ∀y ∈ N , x = y + 1}

N → zero| succ(N )

[[ zero ]] = 0[[ succ(N ) ]] = [[ N ]] + 1

T → empty| node(T, T )

[[ empty ]] =[[ node(T1, T2) ]] = [[ T1 ]] [[ T2 ]]

L → nil| cons(N ;L)

[[ nil ]] =[[ cons(N ;L) ]] = [[ N ]] [[ L ]]

n�

i=0

i =n(n+ 1)

2

1

J1 ... JnJ

∈ R, J1 ... Jn ∈ S ⇒ J ∈ S

F (X) = {J | J1 ... JnJ

∈ R, J1 ... Jn ∈ X}

�{X | F (X) ⊆ X}

�{S | S is closed under R}

N = {0, 1, 2, ...}

zero N

a Nsucc(a) N

N = {x | x = 0 ∨ ∀y ∈ N , x = y + 1}

N → zero| succ(N )

[[ zero ]] = 0[[ succ(N ) ]] = [[ N ]] + 1

T → empty| node(T, T )

[[ empty ]] =[[ node(T1, T2) ]] = [[ T1 ]] [[ T2 ]]

L → nil| cons(N ;L)

[[ nil ]] =[[ cons(N ;L) ]] = [[ N ]] [[ L ]]

n�

i=0

i =n(n+ 1)

2

1

J1 ... JnJ

∈ R, J1 ... Jn ∈ S ⇒ J ∈ S

F (X) = {J | J1 ... JnJ

∈ R, J1 ... Jn ∈ X}

�{X | F (X) ⊆ X}

�{S | S is closed under R}

N = {0, 1, 2, ...}

zero N

a Nsucc(a) N

N = {x | x = 0 ∨ ∀y ∈ N , x = y + 1}

N → zero| succ(N )

[[ zero ]] = 0[[ succ(N ) ]] = [[ N ]] + 1

T → empty| node(T, T )

[[ empty ]] =[[ node(T1, T2) ]] = [[ T1 ]] [[ T2 ]]

L → nil| cons(N ;L)

[[ nil ]] =[[ cons(N ;L) ]] = [[ N ]] [[ L ]]

n�

i=0

i =n(n+ 1)

2

1

J1 ... JnJ

∈ R, J1 ... Jn ∈ S ⇒ J ∈ S

F (X) = {J | J1 ... JnJ

∈ R, J1 ... Jn ∈ X}

�{X | F (X) ⊆ X}

�{S | S is closed under R}

N = {0, 1, 2, ...}

zero N

a Nsucc(a) N

N = {x | x = 0 ∨ ∀y ∈ N , x = y + 1}

N → zero| succ(N )

[[ zero ]] = 0[[ succ(N ) ]] = [[ N ]] + 1

T → empty| node(T, T )

[[ empty ]] =[[ node(T1, T2) ]] = [[ T1 ]] [[ T2 ]]

L → nil| cons(N ;L)

[[ nil ]] =[[ cons(N ;L) ]] = [[ N ]] [[ L ]]

n�

i=0

i =n(n+ 1)

2

1

append(l, [], c)

{P ⇒ Q,R ⇒ ¬Q,P ∧R} � S

{g1, ..., gn} � f

[[ g1 ∧ .... ∧ gn ⇒ f ]] = true

∀x ∈ S.P (x)

(∀Ji.P (Ji)) ⇒ P (J)

JP (J)

J1 ... JnJ

∈ R, J1 ... Jn ∈ S ⇒ J ∈ S

F (X) = {J | J1 ... JnJ

∈ R, J1 ... Jn ∈ X}

�{X | F (X) ⊆ X}

F 0 = F 1 = F 2 = ... = ∅

ℵ0

F 0 = ∅F 1 = {zero}F 1 = {zero, succ(zero)}F 2 = {zero, succ(zero), succ(succ(zero))}

...

F 0 = ∅F 1 = {empty}F 1 = {empty, node(empty,empty)}F 2 = {empty, node(empty,empty), node(empty,node(empty,empty)), ...}

...

F 0 ∪ F 1 ∪ F 2 ∪ ... =�

i∈NF i

whereF 0 = ∅F i = F (F i−1) i ∈ N

1

62011년 3월 8일 화요일

Page 7: 오늘 할 것dreameye/PL/slide/PL1.pdf · 2011-03-08 · 오늘 할 것 •귀납적 정의 = 집합의 정의 •집합을 만드는 방법 •원소들의 순서 •귀납법 •형식논리와

최소고정점???

•집합은 아래와 같이 만들 수 있다.

J1 ... JnJ

∈ R, J1 ... Jn ∈ S ⇒ J ∈ S

F (X) = {J | J1 ... JnJ

∈ R, J1 ... Jn ∈ X}

�{X | F (X) ⊆ X}

F 0 ∪ F 1 ∪ F 2 ∪ ... =�

i∈NF i

�{S | S is closed under R}

N = {0, 1, 2, ...}

zero N

a Nsucc(a) N

N = {x | x = 0 ∨ ∀y ∈ N , x = y + 1}

N → zero| succ(N )

[[ zero ]] = 0[[ succ(N ) ]] = [[ N ]] + 1

T → empty| node(T, T )

[[ empty ]] =[[ node(T1, T2) ]] = [[ T1 ]] [[ T2 ]]

L → nil| cons(N ;L)

[[ nil ]] =[[ cons(N ;L) ]] = [[ N ]] [[ L ]]

n�

i=0

i =n(n+ 1)

2

1

J1 ... JnJ

∈ R, J1 ... Jn ∈ S ⇒ J ∈ S

F (X) = {J | J1 ... JnJ

∈ R, J1 ... Jn ∈ X}

�{X | F (X) ⊆ X}

F 0 ∪ F 1 ∪ F 2 ∪ ... =�

i∈NF i

�{S | S is closed under R}

N = {0, 1, 2, ...}

zero N

a Nsucc(a) N

N = {x | x = 0 ∨ ∀y ∈ N , x = y + 1}

N → zero| succ(N )

[[ zero ]] = 0[[ succ(N ) ]] = [[ N ]] + 1

T → empty| node(T, T )

[[ empty ]] =[[ node(T1, T2) ]] = [[ T1 ]] [[ T2 ]]

L → nil| cons(N ;L)

[[ nil ]] =[[ cons(N ;L) ]] = [[ N ]] [[ L ]]

n�

i=0

i =n(n+ 1)

2

1

J1 ... JnJ

∈ R, J1 ... Jn ∈ S ⇒ J ∈ S

F (X) = {J | J1 ... JnJ

∈ R, J1 ... Jn ∈ X}

�{X | F (X) ⊆ X}

F 0 ∪ F 1 ∪ F 2 ∪ ... =�

i∈NF i

whereF 0 = ∅F i = F (F i−1) i ∈ N

�{S | S is closed under R}

N = {0, 1, 2, ...}

zero N

a Nsucc(a) N

N = {x | x = 0 ∨ ∀y ∈ N , x = y + 1}

N → zero| succ(N )

[[ zero ]] = 0[[ succ(N ) ]] = [[ N ]] + 1

T → empty| node(T, T )

[[ empty ]] =[[ node(T1, T2) ]] = [[ T1 ]] [[ T2 ]]

L → nil| cons(N ;L)

[[ nil ]] =[[ cons(N ;L) ]] = [[ N ]] [[ L ]]

1

여기서

72011년 3월 8일 화요일

Page 8: 오늘 할 것dreameye/PL/slide/PL1.pdf · 2011-03-08 · 오늘 할 것 •귀납적 정의 = 집합의 정의 •집합을 만드는 방법 •원소들의 순서 •귀납법 •형식논리와

N = {0, 1, 2, ...}

zero N

a Nsucc(a) N

N = {x | x = 0 ∨ ∀y ∈ N , x = y + 1}

N → zero| succ(N )

1

J1 ... JnJ

∈ R, J1 ... Jn ∈ S ⇒ J ∈ S

F (X) = {J | J1 ... JnJ

∈ R, J1 ... Jn ∈ X}

�{X | F (X) ⊆ X}

F 0 = ∅F 1 = {zero}F 1 = {zero, succ(zero)}F 2 = {zero, succ(zero), succ(succ(zero))}

...

F 0 ∪ F 1 ∪ F 2 ∪ ... =�

i∈NF i

whereF 0 = ∅F i = F (F i−1) i ∈ N

�{S | S is closed under R}

N = {0, 1, 2, ...}

zero N

a Nsucc(a) N

N = {x | x = 0 ∨ ∀y ∈ N , x = y + 1}

1

자연수를 만들어 내는 규칙

만들어내는 집합은

이 것들의 합집합이며 함수 F의 최소 고정점이다.

82011년 3월 8일 화요일

Page 9: 오늘 할 것dreameye/PL/slide/PL1.pdf · 2011-03-08 · 오늘 할 것 •귀납적 정의 = 집합의 정의 •집합을 만드는 방법 •원소들의 순서 •귀납법 •형식논리와

두갈래 나무(binary tree)를 만드는 규칙

만들어내는 집합은

이 것들의 합집합이며 함수 F의 최소 고정점이다.

N = {0, 1, 2, ...}

zero N

a Nsucc(a) N

N = {x | x = 0 ∨ ∀y ∈ N , x = y + 1}

N → zero| succ(N )

[[ zero ]] = 0[[ N ]] = N + 1

T → empty| node(T, T )

[[ empty ]] =[[ node(T1, T2) ]] = [[ T1 ]] [[ T2 ]]

L → nil| cons(N ;L)

[[ nil ]] =[[ cons(N ;L) ]] = [[ N ]] [[ L ]]

1

J1 ... JnJ

∈ R, J1 ... Jn ∈ S ⇒ J ∈ S

F (X) = {J | J1 ... JnJ

∈ R, J1 ... Jn ∈ X}

�{X | F (X) ⊆ X}

F 0 = ∅F 1 = {zero}F 1 = {zero, succ(zero)}F 2 = {zero, succ(zero), succ(succ(zero))}

...

F 0 = ∅F 1 = {empty}F 1 = {empty, node(empty,empty)}F 2 = {empty, node(empty,empty), node(empty,node(empty,empty)), ...}

...

F 0 ∪ F 1 ∪ F 2 ∪ ... =�

i∈NF i

whereF 0 = ∅F i = F (F i−1) i ∈ N

�{S | S is closed under R}

N = {0, 1, 2, ...}

zero N

a Nsucc(a) N

N = {x | x = 0 ∨ ∀y ∈ N , x = y + 1}

1

92011년 3월 8일 화요일

Page 10: 오늘 할 것dreameye/PL/slide/PL1.pdf · 2011-03-08 · 오늘 할 것 •귀납적 정의 = 집합의 정의 •집합을 만드는 방법 •원소들의 순서 •귀납법 •형식논리와

넓이 우선 탐색 Breadth-first Search

G = (N,E)

F (X) = X ∪ {b | ∀(a, b) ∈ E ∧ a ∈ X}

append(l, [], c)

{P ⇒ Q,R ⇒ ¬Q,P ∧R} � S

{g1, ..., gn} � f

[[ g1 ∧ .... ∧ gn ⇒ f ]] = true

∀x ∈ S.P (x)

(∀Ji.P (Ji)) ⇒ P (J)

JP (J)

J1 ... JnJ

∈ R, J1 ... Jn ∈ S ⇒ J ∈ S

F (X) = {J | J1 ... JnJ

∈ R, J1 ... Jn ∈ X}

�{X | F (X) ⊆ X}

F 0 = F 1 = F 2 = ... = ∅

ℵ0

F 0 = ∅F 1 = {zero}F 1 = {zero, succ(zero)}F 2 = {zero, succ(zero), succ(succ(zero))}

...

F 0 = ∅F 1 = {empty}F 1 = {empty, node(empty,empty)}F 2 = {empty, node(empty,empty), node(empty,node(empty,empty)), ...}

...

1

그래프 와 시작 노드 가 주어졌을때

G = (N,E)

s

F (X) = X ∪ {b | ∀(a, b) ∈ E ∧ a ∈ X}

append(l, [], c)

{P ⇒ Q,R ⇒ ¬Q,P ∧R} � S

{g1, ..., gn} � f

[[ g1 ∧ .... ∧ gn ⇒ f ]] = true

∀x ∈ S.P (x)

(∀Ji.P (Ji)) ⇒ P (J)

JP (J)

J1 ... JnJ

∈ R, J1 ... Jn ∈ S ⇒ J ∈ S

F (X) = {J | J1 ... JnJ

∈ R, J1 ... Jn ∈ X}

�{X | F (X) ⊆ X}

F 0 = F 1 = F 2 = ... = ∅

ℵ0

F 0 = ∅F 1 = {zero}F 1 = {zero, succ(zero)}F 2 = {zero, succ(zero), succ(succ(zero))}

...

F 0 = ∅F 1 = {empty}F 1 = {empty, node(empty,empty)}F 2 = {empty, node(empty,empty), node(empty,node(empty,empty)), ...}

...

1

이 노드로부터 도달가능한 모든 노드들의 집합은 아래 함수의 최소고정점이다.

F 0 = {s}F 1 = {zero}F 1 = {zero, succ(zero)}F 2 = {zero, succ(zero), succ(succ(zero))}

...

G = (N,E)

s

F (X) = {s} ∪X ∪ {b | ∀a ∈ X, (a, b) ∈ E}

append(l, [], c)

{P ⇒ Q,R ⇒ ¬Q,P ∧R} � S

{g1, ..., gn} � f

[[ g1 ∧ .... ∧ gn ⇒ f ]] = true

∀x ∈ S.P (x)

(∀Ji.P (Ji)) ⇒ P (J)

JP (J)

J1 ... JnJ

∈ R, J1 ... Jn ∈ S ⇒ J ∈ S

F (X) = {J | J1 ... JnJ

∈ R, J1 ... Jn ∈ X}

�{X | F (X) ⊆ X}

F 0 = F 1 = F 2 = ... = ∅

ℵ0

F 0 = ∅F 1 = {zero}F 1 = {zero, succ(zero)}F 2 = {zero, succ(zero), succ(succ(zero))}

...

1

F 0 = {s}F 1 = {zero}F 1 = {zero, succ(zero)}F 2 = {zero, succ(zero), succ(succ(zero))}

...

G = (N,E)

s

F (X) = {s} ∪X ∪ {b | ∀a ∈ X, (a, b) ∈ E}

append(l, [], c)

{P ⇒ Q,R ⇒ ¬Q,P ∧R} � S

{g1, ..., gn} � f

[[ g1 ∧ .... ∧ gn ⇒ f ]] = true

∀x ∈ S.P (x)

(∀Ji.P (Ji)) ⇒ P (J)

JP (J)

J1 ... JnJ

∈ R, J1 ... Jn ∈ S ⇒ J ∈ S

F (X) = {J | J1 ... JnJ

∈ R, J1 ... Jn ∈ X}

�{X | F (X) ⊆ X}

F 0 = F 1 = F 2 = ... = ∅

ℵ0

F 0 = ∅F 1 = {zero}F 1 = {zero, succ(zero)}F 2 = {zero, succ(zero), succ(succ(zero))}

...

1

102011년 3월 8일 화요일

Page 11: 오늘 할 것dreameye/PL/slide/PL1.pdf · 2011-03-08 · 오늘 할 것 •귀납적 정의 = 집합의 정의 •집합을 만드는 방법 •원소들의 순서 •귀납법 •형식논리와

바닥이 뚫린 규칙

N → zero| succ(N )

[[ zero ]] = 0[[ succ(N ) ]] = [[ N ]] + 1

T → empty| node(T, T )

T → node(T, T )

[[ empty ]] =[[ node(T1, T2) ]] = [[ T1 ]] [[ T2 ]]

L → nil| cons(N ;L)

[[ nil ]] =[[ cons(N ;L) ]] = [[ N ]] [[ L ]]

n�

i=0

i =n(n+ 1)

2

Base case: zero, 0 =0 ∗ (0 + 1)

2

Inductive case: succ(n),we have the induction hypothesisn�

i=0

i =n(n+ 1)

2.

We want to shown+1�

i=0

i =(n+ 1)(n+ 2)

2.

n+1�

i=0

i =n�

i=0

i+ (n+ 1) =n(n+ 1)

2+ (n+ 1) =

(n+ 1)(n+ 2)

2.

Base case: empty, e = 1, n = 0Inductive case: node(T1, T2),we have the induction hypothesis e1 = n1 + 1 and e2 = n2 + 1.

We want to show e = n+ 1.e = e1 + e2 = n1 + 1 + n2 + 1 and n = n1 + n2 + 1.

2

J1 ... JnJ

∈ R, J1 ... Jn ∈ S ⇒ J ∈ S

F (X) = {J | J1 ... JnJ

∈ R, J1 ... Jn ∈ X}

�{X | F (X) ⊆ X}

F 0 = F 1 = F 2 = ... = ∅

F 0 = ∅F 1 = {zero}F 1 = {zero, succ(zero)}F 2 = {zero, succ(zero), succ(succ(zero))}

...

F 0 = ∅F 1 = {empty}F 1 = {empty, node(empty,empty)}F 2 = {empty, node(empty,empty), node(empty,node(empty,empty)), ...}

...

F 0 ∪ F 1 ∪ F 2 ∪ ... =�

i∈NF i

whereF 0 = ∅F i = F (F i−1) i ∈ N

�{S | S is closed under R}

N = {0, 1, 2, ...}

zero N

a Nsucc(a) N

N = {x | x = 0 ∨ ∀y ∈ N , x = y + 1}

1

바닥이 없는 규칙은 공허한 외침, 소리없는 아우성

모든 정의는 가정을 필요로하지 않는 기본 규칙을 적어도 하나는

가지고 있어야 한다.

112011년 3월 8일 화요일

Page 12: 오늘 할 것dreameye/PL/slide/PL1.pdf · 2011-03-08 · 오늘 할 것 •귀납적 정의 = 집합의 정의 •집합을 만드는 방법 •원소들의 순서 •귀납법 •형식논리와

원소들의 순서

•귀납적으로 정의된 집합

• 의 의해 새롭게 만들어지는 원소: i번째

•첫번째로 만들어진 원소들이 씨

•기초가 튼튼한 순서 (well-founded order)

•귀납적으로 정의된 집합은 기초가 튼튼한 순서를 가지고 있다.

J1 ... JnJ

∈ R, J1 ... Jn ∈ S ⇒ J ∈ S

F (X) = {J | J1 ... JnJ

∈ R, J1 ... Jn ∈ X}

�{X | F (X) ⊆ X}

F 0 = F 1 = F 2 = ... = ∅

F 0 = ∅F 1 = {zero}F 1 = {zero, succ(zero)}F 2 = {zero, succ(zero), succ(succ(zero))}

...

F 0 = ∅F 1 = {empty}F 1 = {empty, node(empty,empty)}F 2 = {empty, node(empty,empty), node(empty,node(empty,empty)), ...}

...

F 0 ∪ F 1 ∪ F 2 ∪ ... =�

i∈NF i

whereF 0 = ∅F i = F (F i−1) i ∈ N

�{S | S is closed under R}

N = {0, 1, 2, ...}

zero N

a Nsucc(a) N

N = {x | x = 0 ∨ ∀y ∈ N , x = y + 1}

1

그럼 귀납적으로 정의할 수 없는 집합은?

122011년 3월 8일 화요일

Page 13: 오늘 할 것dreameye/PL/slide/PL1.pdf · 2011-03-08 · 오늘 할 것 •귀납적 정의 = 집합의 정의 •집합을 만드는 방법 •원소들의 순서 •귀납법 •형식논리와

셀 수 {있는,없는} 집합

셀 수 있는 집합countable set

자연수와 일대일 대응one-to-one correspondence

(aleph-null)cardinality of natural numbers

정수 (integers), 유리수 (rational numbers)

실수 (real numbers) 셀 수 없는 집합uncountable set

132011년 3월 8일 화요일

Page 14: 오늘 할 것dreameye/PL/slide/PL1.pdf · 2011-03-08 · 오늘 할 것 •귀납적 정의 = 집합의 정의 •집합을 만드는 방법 •원소들의 순서 •귀납법 •형식논리와

귀납법 Induction수학적 귀납법

(mathematical induction)

N = {0, 1, 2, ...}

zero N

a Nsucc(a) N

N = {x | x = 0 ∨ ∀y ∈ N , x = y + 1}

N → zero| succ(N )

1

N = {0, 1, 2, ...}

zero N

a Nsucc(a) N

N = {x | x = 0 ∨ ∀y ∈ N , x = y + 1}

N → zero| succ(N )

[[ zero ]] = 0[[ N ]] = N + 1

T → empty| node(T, T )

[[ empty ]] =[[ node(T1, T2) ]] = [[ T1 ]] [[ T2 ]]

L → nil| cons(N ;L)

[[ nil ]] =[[ cons(N ;L) ]] = [[ N ]] [[ L ]]

n�

i=0

i =n(n+ 1)

2

1

N = {0, 1, 2, ...}

zero N

a Nsucc(a) N

N = {x | x = 0 ∨ ∀y ∈ N , x = y + 1}

N → zero| succ(N )

[[ zero ]] = 0[[ N ]] = N + 1

T → empty| node(T, T )

[[ empty ]] =[[ node(T1, T2) ]] = [[ T1 ]] [[ T2 ]]

L → nil| cons(N ;L)

[[ nil ]] =[[ cons(N ;L) ]] = [[ N ]] [[ L ]]

n�

i=0

i =n(n+ 1)

2

Base case: zero, 0 =0 ∗ (0 + 1)

2

Inductive case: succ(n),we have the induction hypothesisn�

i=0

i =n(n+ 1)

2.

We want to shown+1�

i=0

i =(n+ 1)(n+ 2)

2.

n+1�

i=0

i =n�

i=0

i+ (n+ 1) =n(n+ 1)

2+ (n+ 1) =

(n+ 1)(n+ 2)

2.

1

명제proposition

생성 순서를 줄 수 있기 때문

142011년 3월 8일 화요일

Page 15: 오늘 할 것dreameye/PL/slide/PL1.pdf · 2011-03-08 · 오늘 할 것 •귀납적 정의 = 집합의 정의 •집합을 만드는 방법 •원소들의 순서 •귀납법 •형식논리와

귀납법 Induction좀 더

일반적으로

•집합 가 귀납적으로 정의됨, 즉, 모든 원소들의 (셀 수 있는) 순서가 있음.

• (첫번째 원소)를 증명

•임의의 에 대해서

∀x ∈ S.P (x)

J1 ... JnJ

∈ R, J1 ... Jn ∈ S ⇒ J ∈ S

F (X) = {J | J1 ... JnJ

∈ R, J1 ... Jn ∈ X}

�{X | F (X) ⊆ X}

F 0 = F 1 = F 2 = ... = ∅

ℵ0

F 0 = ∅F 1 = {zero}F 1 = {zero, succ(zero)}F 2 = {zero, succ(zero), succ(succ(zero))}

...

F 0 = ∅F 1 = {empty}F 1 = {empty, node(empty,empty)}F 2 = {empty, node(empty,empty), node(empty,node(empty,empty)), ...}

...

F 0 ∪ F 1 ∪ F 2 ∪ ... =�

i∈NF i

whereF 0 = ∅F i = F (F i−1) i ∈ N

�{S | S is closed under R}

N = {0, 1, 2, ...}

zero N

a Nsucc(a) N

N = {x | x = 0 ∨ ∀y ∈ N , x = y + 1}

1

증명 목표

��� = ��� ��

�� ��:

∀x ∈ S.P (x)

� S� ����� ���, �, �� ���� ���

��.

� P (0�� ��)� ��: �� ��

� ��� i > 0� ���

(∀j < i.P (j�� ��)) ⇒ P (i�� ��)

� ��.

(“��� ��”� ��)

��� = ��� ��

�� ��:

∀x ∈ S.P (x)

� S� ����� ���, �, �� ���� ���

��.

� P (0�� ��)� ��: �� ��

� ��� i > 0� ���

(∀j < i.P (j�� ��)) ⇒ P (i�� ��)

� ��.

(“��� ��”� ��)

��� = ��� ��

�� ��:

∀x ∈ S.P (x)

� S� ����� ���, �, �� ���� ���

��.

� P (0�� ��)� ��: �� ��

� ��� i > 0� ���

(∀j < i.P (j�� ��)) ⇒ P (i�� ��)

� ��.

(“��� ��”� ��)

��� = ��� ��

�� ��:

∀x ∈ S.P (x)

� S� ����� ���, �, �� ���� ���

��.

� P (0�� ��)� ��: �� ��

� ��� i > 0� ���

(∀j < i.P (j�� ��)) ⇒ P (i�� ��)

� ��.

(“��� ��”� ��)

를 증명

152011년 3월 8일 화요일

Page 16: 오늘 할 것dreameye/PL/slide/PL1.pdf · 2011-03-08 · 오늘 할 것 •귀납적 정의 = 집합의 정의 •집합을 만드는 방법 •원소들의 순서 •귀납법 •형식논리와

귀납법 Induction좀 더

일반적으로

•case i = 1: P(1째번 원소 증명)

•case i > 1:

��� = ��� ��

�� ��:

∀x ∈ S.P (x)

� S� ����� ���, �, �� ���� ���

��.

� P (0�� ��)� ��: �� ��

� ��� i > 0� ���

(∀j < i.P (j�� ��)) ⇒ P (i�� ��)

� ��.

(“��� ��”� ��)

즉,

•“base case”: 규칙 가 만드는 녀석들에 대해 증명

•“inductive case”: 규칙 에 대해서

∀x ∈ S.P (x)

J

J1 ... JnJ

∈ R, J1 ... Jn ∈ S ⇒ J ∈ S

F (X) = {J | J1 ... JnJ

∈ R, J1 ... Jn ∈ X}

�{X | F (X) ⊆ X}

F 0 = F 1 = F 2 = ... = ∅

ℵ0

F 0 = ∅F 1 = {zero}F 1 = {zero, succ(zero)}F 2 = {zero, succ(zero), succ(succ(zero))}

...

F 0 = ∅F 1 = {empty}F 1 = {empty, node(empty,empty)}F 2 = {empty, node(empty,empty), node(empty,node(empty,empty)), ...}

...

F 0 ∪ F 1 ∪ F 2 ∪ ... =�

i∈NF i

whereF 0 = ∅F i = F (F i−1) i ∈ N

�{S | S is closed under R}

1

∀x ∈ S.P (x)

JP (J)

J1 ... JnJ

∈ R, J1 ... Jn ∈ S ⇒ J ∈ S

F (X) = {J | J1 ... JnJ

∈ R, J1 ... Jn ∈ X}

�{X | F (X) ⊆ X}

F 0 = F 1 = F 2 = ... = ∅

ℵ0

F 0 = ∅F 1 = {zero}F 1 = {zero, succ(zero)}F 2 = {zero, succ(zero), succ(succ(zero))}

...

F 0 = ∅F 1 = {empty}F 1 = {empty, node(empty,empty)}F 2 = {empty, node(empty,empty), node(empty,node(empty,empty)), ...}

...

F 0 ∪ F 1 ∪ F 2 ∪ ... =�

i∈NF i

whereF 0 = ∅F i = F (F i−1) i ∈ N

�{S | S is closed under R}

1

∀x ∈ S.P (x)

JP (J)

J1 ... JnJ

∈ R, J1 ... Jn ∈ S ⇒ J ∈ S

F (X) = {J | J1 ... JnJ

∈ R, J1 ... Jn ∈ X}

�{X | F (X) ⊆ X}

F 0 = F 1 = F 2 = ... = ∅

ℵ0

F 0 = ∅F 1 = {zero}F 1 = {zero, succ(zero)}F 2 = {zero, succ(zero), succ(succ(zero))}

...

F 0 = ∅F 1 = {empty}F 1 = {empty, node(empty,empty)}F 2 = {empty, node(empty,empty), node(empty,node(empty,empty)), ...}

...

F 0 ∪ F 1 ∪ F 2 ∪ ... =�

i∈NF i

whereF 0 = ∅F i = F (F i−1) i ∈ N

�{S | S is closed under R}

1

∀x ∈ S.P (x)

(∀Ji.P (Ji)) ⇒ P (J)

JP (J)

J1 ... JnJ

∈ R, J1 ... Jn ∈ S ⇒ J ∈ S

F (X) = {J | J1 ... JnJ

∈ R, J1 ... Jn ∈ X}

�{X | F (X) ⊆ X}

F 0 = F 1 = F 2 = ... = ∅

ℵ0

F 0 = ∅F 1 = {zero}F 1 = {zero, succ(zero)}F 2 = {zero, succ(zero), succ(succ(zero))}

...

F 0 = ∅F 1 = {empty}F 1 = {empty, node(empty,empty)}F 2 = {empty, node(empty,empty), node(empty,node(empty,empty)), ...}

...

F 0 ∪ F 1 ∪ F 2 ∪ ... =�

i∈NF i

whereF 0 = ∅F i = F (F i−1) i ∈ N

�{S | S is closed under R}

1

��� = ��� ��

�� ��:

∀x ∈ S.P (x)

� S� ����� ���, �, �� ���� ���

��.

� P (0�� ��)� ��: �� ��

� ��� i > 0� ���

(∀j < i.P (j�� ��)) ⇒ P (i�� ��)

� ��.

(“��� ��”� ��)

를 증명162011년 3월 8일 화요일

Page 17: 오늘 할 것dreameye/PL/slide/PL1.pdf · 2011-03-08 · 오늘 할 것 •귀납적 정의 = 집합의 정의 •집합을 만드는 방법 •원소들의 순서 •귀납법 •형식논리와

선언논리식 집합 Propositional Logic

��� ��

��� ��f → T | F

| ¬f

| f ∧ f

| f ∨ f

| f ⇒ f

base case

inductive case

귀납적 정의

172011년 3월 8일 화요일

Page 18: 오늘 할 것dreameye/PL/slide/PL1.pdf · 2011-03-08 · 오늘 할 것 •귀납적 정의 = 집합의 정의 •집합을 만드는 방법 •원소들의 순서 •귀납법 •형식논리와

논리식의 의미��� ��

��� �� compositional definition

[[T ]] = true

[[F ]] = false

[[¬f ]] = not[[f ]]

[[f1 ∧ f2]] = [[f1]] andalso [[f2]]

[[f1 ∨ f2]] = [[f1]] orelse [[f2]]

[[f1 ⇒ f2]] = [[f1]] implies [[f2]]

��� ��� f� ��� �� � �.

조립식 정의 compositional definition

임의의 논리식의 의미가 정의된 셈

기계적이다!

182011년 3월 8일 화요일

Page 19: 오늘 할 것dreameye/PL/slide/PL1.pdf · 2011-03-08 · 오늘 할 것 •귀납적 정의 = 집합의 정의 •집합을 만드는 방법 •원소들의 순서 •귀납법 •형식논리와

[[(T ∧ (T ∨ F )) ⇒ F ]]

= [[T ∧ (T ∨ F )]] implies [[F ]]

= ([[T ]] andalso [[T ∨ F ]]) implies false

= (true andalso ([[T ]] orelse [[F ]])) implies false

= (true andalso (true orelse false)) implies false

= false

192011년 3월 8일 화요일

Page 20: 오늘 할 것dreameye/PL/slide/PL1.pdf · 2011-03-08 · 오늘 할 것 •귀납적 정의 = 집합의 정의 •집합을 만드는 방법 •원소들의 순서 •귀납법 •형식논리와

추론규칙inference rules��� ��, �� ��

� � uncle(a, b)�� ��

male(u) father(f, i) brother(f, u)

uncle(u, i)

father(c, a) father(c, b)

brother(a, b)

· · ·

� � append(a, b, c)�� ��

append(l, [], l) append([], l, l)

append(r, b, c)

append(a :: r, b, a :: c)

리스트의 합치기 관계를 규정하는 규칙들

��� ��, �� ��� � uncle(a, b)�� ��

male(u) father(f, i) brother(f, u)

uncle(u, i)

father(c, a) father(c, b)

brother(a, b)

· · ·

� � append(a, b, c)�� ��

append(l, [], l) append([], l, l)

append(r, b, c)

append(a :: r, b, a :: c)

친척 관계를 규정하는 규칙들

202011년 3월 8일 화요일

Page 21: 오늘 할 것dreameye/PL/slide/PL1.pdf · 2011-03-08 · 오늘 할 것 •귀납적 정의 = 집합의 정의 •집합을 만드는 방법 •원소들의 순서 •귀납법 •형식논리와

추론과정 = 계산과정 (또는 “증명 나무”)

�� �� = �� (�� “�� ��”)

append([], [3, 4], [3, 4])

append([2], [3, 4], [2, 3, 4])

append([1, 2], [3, 4], [1, 2, 3, 4])

212011년 3월 8일 화요일

Page 22: 오늘 할 것dreameye/PL/slide/PL1.pdf · 2011-03-08 · 오늘 할 것 •귀납적 정의 = 집합의 정의 •집합을 만드는 방법 •원소들의 순서 •귀납법 •형식논리와

어떤 집합의 정의, 추론 규칙�� ��� ��, �� ��� ({g1, · · · , gn}, f)�� ��

(Γ, T ) (Γ, f)f ∈ Γ

(Γ, F )

(Γ, f)

(Γ,¬¬f)

(Γ, f)

(Γ, f1) (Γ, f2)

(Γ, f1 ∧ f2)

(Γ, f1 ∧ f2)

(Γ, f1)

(Γ, f1)

(Γ, f1 ∨ f2)

(Γ, f1 ∨ f2)(Γ ∪ {f1}, f3) (Γ ∪ {f2}, f3)

(Γ, f3)

(Γ ∪ {f1}, f2)

(Γ, f1 ⇒ f2)

(Γ, f1 ⇒ f2) (Γ, f1)

(Γ, f2)

(Γ ∪ {f}, F )

(Γ,¬f)

(Γ, f) (Γ,¬f)

(Γ, F )

관계들의 집합�� ��� ��, �� ��� ({g1, · · · , gn}, f)�� ��

(Γ, T ) (Γ, f)f ∈ Γ

(Γ, F )

(Γ, f)

(Γ,¬¬f)

(Γ, f)

(Γ, f1) (Γ, f2)

(Γ, f1 ∧ f2)

(Γ, f1 ∧ f2)

(Γ, f1)

(Γ, f1)

(Γ, f1 ∨ f2)

(Γ, f1 ∨ f2)(Γ ∪ {f1}, f3) (Γ ∪ {f2}, f3)

(Γ, f3)

(Γ ∪ {f1}, f2)

(Γ, f1 ⇒ f2)

(Γ, f1 ⇒ f2) (Γ, f1)

(Γ, f2)

(Γ ∪ {f}, F )

(Γ,¬f)

(Γ, f) (Γ,¬f)

(Γ, F )

222011년 3월 8일 화요일

Page 23: 오늘 할 것dreameye/PL/slide/PL1.pdf · 2011-03-08 · 오늘 할 것 •귀납적 정의 = 집합의 정의 •집합을 만드는 방법 •원소들의 순서 •귀납법 •형식논리와

형식논리의 표기법으로����� �����

Γ � T Γ � ff ∈ Γ Γ � F

Γ � fΓ � ¬¬f

Γ � f

Γ � f1 Γ � f2

Γ � f1 ∧ f2

Γ � f1 ∧ f2

Γ � f1

Γ � f1

Γ � f1 ∨ f2

Γ � f1 ∨ f2

Γ ∪ {f1} � f3 Γ ∪ {f2} � f3

Γ � f3

Γ ∪ {f1} � f2

Γ � f1 ⇒ f2

Γ � f1 ⇒ f2 Γ � f1

Γ � f2

Γ ∪ {f} � FΓ � ¬f

Γ � f Γ � ¬fΓ � F

232011년 3월 8일 화요일

Page 24: 오늘 할 것dreameye/PL/slide/PL1.pdf · 2011-03-08 · 오늘 할 것 •귀납적 정의 = 집합의 정의 •집합을 만드는 방법 •원소들의 순서 •귀납법 •형식논리와

증명 나무�� ��

{p→ ¬p, p} � p

{p→ ¬p, p} � p→ ¬p {p→ ¬p, p} � p

{p→ ¬p, p} � ¬p

{p→ ¬p, p} � F

{p→ ¬p} � ¬p

����� �����

Γ � T Γ � ff ∈ Γ Γ � F

Γ � fΓ � ¬¬f

Γ � f

Γ � f1 Γ � f2

Γ � f1 ∧ f2

Γ � f1 ∧ f2

Γ � f1

Γ � f1

Γ � f1 ∨ f2

Γ � f1 ∨ f2

Γ ∪ {f1} � f3 Γ ∪ {f2} � f3

Γ � f3

Γ ∪ {f1} � f2

Γ � f1 ⇒ f2

Γ � f1 ⇒ f2 Γ � f1

Γ � f2

Γ ∪ {f} � FΓ � ¬f

Γ � f Γ � ¬fΓ � F

����� �����

Γ � T Γ � ff ∈ Γ Γ � F

Γ � fΓ � ¬¬f

Γ � f

Γ � f1 Γ � f2

Γ � f1 ∧ f2

Γ � f1 ∧ f2

Γ � f1

Γ � f1

Γ � f1 ∨ f2

Γ � f1 ∨ f2

Γ ∪ {f1} � f3 Γ ∪ {f2} � f3

Γ � f3

Γ ∪ {f1} � f2

Γ � f1 ⇒ f2

Γ � f1 ⇒ f2 Γ � f1

Γ � f2

Γ ∪ {f} � FΓ � ¬f

Γ � f Γ � ¬fΓ � F

����� �����

Γ � T Γ � ff ∈ Γ Γ � F

Γ � fΓ � ¬¬f

Γ � f

Γ � f1 Γ � f2

Γ � f1 ∧ f2

Γ � f1 ∧ f2

Γ � f1

Γ � f1

Γ � f1 ∨ f2

Γ � f1 ∨ f2

Γ ∪ {f1} � f3 Γ ∪ {f2} � f3

Γ � f3

Γ ∪ {f1} � f2

Γ � f1 ⇒ f2

Γ � f1 ⇒ f2 Γ � f1

Γ � f2

Γ ∪ {f} � FΓ � ¬f

Γ � f Γ � ¬fΓ � F

����� �����

Γ � T Γ � ff ∈ Γ Γ � F

Γ � fΓ � ¬¬f

Γ � f

Γ � f1 Γ � f2

Γ � f1 ∧ f2

Γ � f1 ∧ f2

Γ � f1

Γ � f1

Γ � f1 ∨ f2

Γ � f1 ∨ f2

Γ ∪ {f1} � f3 Γ ∪ {f2} � f3

Γ � f3

Γ ∪ {f1} � f2

Γ � f1 ⇒ f2

Γ � f1 ⇒ f2 Γ � f1

Γ � f2

Γ ∪ {f} � FΓ � ¬f

Γ � f Γ � ¬fΓ � F

사용된 규칙

242011년 3월 8일 화요일

Page 25: 오늘 할 것dreameye/PL/slide/PL1.pdf · 2011-03-08 · 오늘 할 것 •귀납적 정의 = 집합의 정의 •집합을 만드는 방법 •원소들의 순서 •귀납법 •형식논리와

증명하기 증명나무 만들기

append(l, [], c)

{P ⇒ Q,R ⇒ ¬Q,P ∧R} � S

∀x ∈ S.P (x)

(∀Ji.P (Ji)) ⇒ P (J)

JP (J)

J1 ... JnJ

∈ R, J1 ... Jn ∈ S ⇒ J ∈ S

F (X) = {J | J1 ... JnJ

∈ R, J1 ... Jn ∈ X}

�{X | F (X) ⊆ X}

F 0 = F 1 = F 2 = ... = ∅

ℵ0

F 0 = ∅F 1 = {zero}F 1 = {zero, succ(zero)}F 2 = {zero, succ(zero), succ(succ(zero))}

...

F 0 = ∅F 1 = {empty}F 1 = {empty, node(empty,empty)}F 2 = {empty, node(empty,empty), node(empty,node(empty,empty)), ...}

...

F 0 ∪ F 1 ∪ F 2 ∪ ... =�

i∈NF i

whereF 0 = ∅F i = F (F i−1) i ∈ N

�{S | S is closed under R}

1

252011년 3월 8일 화요일

Page 26: 오늘 할 것dreameye/PL/slide/PL1.pdf · 2011-03-08 · 오늘 할 것 •귀납적 정의 = 집합의 정의 •집합을 만드는 방법 •원소들의 순서 •귀납법 •형식논리와

또 다른 시선: 증명들의 집합을 정의

•증명들의 집합을 만드는 귀납규칙 (“증명규칙” inference rules).

•예를 들어, 아래의 증명규칙은 또다른 증명을 만드는 규납 규칙이다.

� �� ��: ��(����)�� ��� �

���� ��� ��� ���� (“����” inference

rules).

� �� ��, ����

Γ � f1 Γ � f2

Γ � f1 ∧ f2

� ��� ��� �� ��

� Γ � f1� Γ � f2� ���� ��� Γ � f1 ∧ f2�

��� ���.

� �� ��: ��(����)�� ��� �

���� ��� ��� ���� (“����” inference

rules).

� �� ��, ����

Γ � f1 Γ � f2

Γ � f1 ∧ f2

� ��� ��� �� ��

� Γ � f1� Γ � f2� ���� ��� Γ � f1 ∧ f2�

��� ���.

262011년 3월 8일 화요일

Page 27: 오늘 할 것dreameye/PL/slide/PL1.pdf · 2011-03-08 · 오늘 할 것 •귀납적 정의 = 집합의 정의 •집합을 만드는 방법 •원소들의 순서 •귀납법 •형식논리와

증명 규칙의 평가

•기계가 만드는 는 어떤 것들인가?

append(l, [], c)

{P ⇒ Q,R ⇒ ¬Q,P ∧R} � S

{g1, ..., gn} � f

[[ g1 ∧ .... ∧ gn ⇒ f ]] = true

∀x ∈ S.P (x)

(∀Ji.P (Ji)) ⇒ P (J)

JP (J)

J1 ... JnJ

∈ R, J1 ... Jn ∈ S ⇒ J ∈ S

F (X) = {J | J1 ... JnJ

∈ R, J1 ... Jn ∈ X}

�{X | F (X) ⊆ X}

F 0 = F 1 = F 2 = ... = ∅

ℵ0

F 0 = ∅F 1 = {zero}F 1 = {zero, succ(zero)}F 2 = {zero, succ(zero), succ(succ(zero))}

...

F 0 = ∅F 1 = {empty}F 1 = {empty, node(empty,empty)}F 2 = {empty, node(empty,empty), node(empty,node(empty,empty)), ...}

...

F 0 ∪ F 1 ∪ F 2 ∪ ... =�

i∈NF i

whereF 0 = ∅F i = F (F i−1) i ∈ N

1

기계의 안전성 soundness

기계의 완전성 completeness

�� ��� ����� ��� {g1, · · · , gn} � f � �� ����? �)

[[g1 ∧ · · · ∧ gn ⇒ f ]] = true ��?

� ��� ��� soundness:

Γ � f �� [[Γ ⇒ f ]] = true

� ��� ��� completeness:

Γ � f �� [[Γ ⇒ f ]] = true

�� ��� ����� ��� {g1, · · · , gn} � f � �� ����? �)

[[g1 ∧ · · · ∧ gn ⇒ f ]] = true ��?

� ��� ��� soundness:

Γ � f �� [[Γ ⇒ f ]] = true

� ��� ��� completeness:

Γ � f �� [[Γ ⇒ f ]] = true

272011년 3월 8일 화요일


Recommended