Focus In View 3여기에는물론 축제운영 의 글로벌화와 축제 조직의 전문성 강화가 우선되어야 할 것 이다. 축제를성공적으로 이끌려면 조직,예산,
오늘 할 것dreameye/PL/slide/PL1.pdf · 2011-03-08 · 오늘 할 것 •귀납적 정의 =...
Transcript of 오늘 할 것dreameye/PL/slide/PL1.pdf · 2011-03-08 · 오늘 할 것 •귀납적 정의 =...
오늘 할 것
•귀납적 정의 = 집합의 정의
•집합을 만드는 방법
•원소들의 순서
•귀납법
•형식논리와 추론
•hw1 설명
12011년 3월 8일 화요일
귀납법 = 집합의 정의
��� = ��� ��
��� ���� ��
� ���� return �, ��� dedicate �.
� � ��� ��� ��� � ��� ��� ���.
��� = ��� ��
��� ���� ��
� ���� return �, ��� dedicate �.
� � ��� ��� ��� � ��� ��� ���.•되돌아가서 return 바치다 dedicate.
•그 집합의 원소를 가지고 그 집합의 원소를 만든다.
22011년 3월 8일 화요일
귀납적 정의 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일 화요일
집합 정의
•규칙: 가정(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일 화요일
최소의 집합?
•정확히 우리가 원하는 것들만 들어가 있는 집합
•0을 포함하면서 +1에 대해서 닫힌 집합은? 자연수, 정수, 유리수, 실수 ...
•그 중 가장작은 집합은? 자연수
52011년 3월 8일 화요일
집합 만들기
•규칙 이 정의하는 함수
•규칙이 만드는 집합은 함수에 대해 닫혀 있는 집합중 가장 작은 집합니다.
•이 집합은 함수 의 최소고정점 (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일 화요일
최소고정점???
•집합은 아래와 같이 만들 수 있다.
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일 화요일
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일 화요일
두갈래 나무(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일 화요일
넓이 우선 탐색 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일 화요일
바닥이 뚫린 규칙
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일 화요일
원소들의 순서
•귀납적으로 정의된 집합
• 의 의해 새롭게 만들어지는 원소: 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일 화요일
셀 수 {있는,없는} 집합
셀 수 있는 집합countable set
자연수와 일대일 대응one-to-one correspondence
(aleph-null)cardinality of natural numbers
정수 (integers), 유리수 (rational numbers)
실수 (real numbers) 셀 수 없는 집합uncountable set
132011년 3월 8일 화요일
귀납법 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일 화요일
귀납법 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일 화요일
귀납법 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일 화요일
선언논리식 집합 Propositional Logic
��� ��
��� ��f → T | F
| ¬f
| f ∧ f
| f ∨ f
| f ⇒ f
base case
inductive case
귀납적 정의
172011년 3월 8일 화요일
논리식의 의미��� ��
��� �� 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일 화요일
[[(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일 화요일
추론규칙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일 화요일
추론과정 = 계산과정 (또는 “증명 나무”)
�� �� = �� (�� “�� ��”)
append([], [3, 4], [3, 4])
append([2], [3, 4], [2, 3, 4])
append([1, 2], [3, 4], [1, 2, 3, 4])
212011년 3월 8일 화요일
어떤 집합의 정의, 추론 규칙�� ��� ��, �� ��� ({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일 화요일
형식논리의 표기법으로����� �����
Γ � 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일 화요일
증명 나무�� ��
{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일 화요일
증명하기 증명나무 만들기
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일 화요일
또 다른 시선: 증명들의 집합을 정의
•증명들의 집합을 만드는 귀납규칙 (“증명규칙” 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일 화요일
증명 규칙의 평가
•기계가 만드는 는 어떤 것들인가?
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일 화요일