dijkstra 의 mini-language

2
Dijkstra 의 mini-language 의의 abort | skip | x 1 , x 2 , …, x n := E 1 , E 2 , , E n | 의의의 〈〉 ; 의의의 〈〉 | if B 1 SL 1 | B 2 → SL 2 | | B n → SL n fi | do B 1 SL 1 | B 2 → SL 2 | | B n → SL n od. • 의의 의의 (concurrent assignment) –x, y := y, x •x = old(y) ∧ y = old(x) –x := y; y := x •x = old(y) ∧ y = old(y) x := y; skip. –y := x; x := y •y = old(x) ∧ x = old(x) y := x; skip. 비비비비 (nondeterministic) 의의 의의 (guard) 의 비비의의. – True 의 의의 (B k 의의 B m ) 의 의 의의의의 의 의 비비비 (nondeterministic) 의의의의 . if x y m := x | x y m := y fi (m = x m = y) ∧ (m x) ∧ (m y). if-fi 의의의의 true 의 의의의 의의의 의의의 abort 의의. if fi abort. SIGPL 의의의의 , 2012-02- 03 의의의의의의의 의의의의 의의의 11 if x y then m := x else m := y if x > y then m := x else m := y

Upload: eden-richardson

Post on 02-Jan-2016

39 views

Category:

Documents


11 download

DESCRIPTION

Dijkstra 의 mini-language. 〈 문장 〉 → abort | skip | x 1 , x 2 , …, x n := E 1 , E 2 , … , E n | 〈 문장 〉 ; 〈 문장 〉 | if B 1 → SL 1 | B 2 → SL 2 | … | B n → SL n fi | do B 1 → SL 1 | B 2 → SL 2 | … | B n → SL n od . 동시 배정 (concurrent assignment) x , y := y , x - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Dijkstra 의  mini-language

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

Dijkstra 의 mini-language• 〈문장〉 → abort | skip

| x1, x2, …, xn := E1, E2, …, En

| 〈문장〉 ; 〈문장〉| if B1 → SL1 | B2 → SL2 | … | Bn → SLn fi

| do B1 → SL1 | B2 → SL2 | … | Bn → SLn od.

• 동시 배정 (concurrent assignment)– x, y := y, x

• x = old(y) ∧ y = old(x)

– x := y; y := x• x = old(y) ∧ y = old(y) ⇔ x := y; skip.

– y := x; x := y• y = old(x) ∧ x = old(x) ⇔ y := x; skip.

• 비결정적 (nondeterministic)으로 가드 (guard)를 선택한다 .– True인 가드(Bk 또는 Bm)가 둘 이상이면 그 중 아무나(nondeterministic) 선택한다 .

• if x ≥ y → m := x | x ≤ y → m := y fi(m = x ∨ m = y) ∧ (m ≥ x) ∧ (m ≥ y).

• if-fi 구조에서 true인 가드가 하나도 없으면 abort이다 .– if fi ⇔ abort.

SIGPL 겨울학교 , 2012-02-03

11

if x ≥ y then m := x else m := y fiif x > y then m := x else m := y fi

Page 2: Dijkstra 의  mini-language

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

Loop invariance 와 terminating 조건 • do-od 구조는 true인 가드가 없으면 loop이 끝난다.

– do-od ⇔ skip.

• 간단한 do-od 프로그램.q1, q2, q3, q4 := Q1, Q2, Q3, Q4;

do q1 > q2 → q1, q2 := q2, q1

| q2 > q3 → q2, q3 := q3, q2

| q3 > q4 → q3, q4 := q4, q3

od• do-od 프로그램이 끝나고 나면,

– ¬(q1 > q2) ∧ ¬(q2 > q3) ∧ ¬(q3 > q4)

– (q1 ≤ q2) ∧ (q2 ≤ q3) ∧ (q3 ≤ q4)

– q1 ≤ q2 ≤ q3 ≤ q4.

• s := 0; for i:=1 to 100 do s := s + i od

• Loop invariance condition– Loop 시작 직전

• Initialize

– Loop 탈출 test 할때• Update

– Loop을 나와서도 만족한다.• After termination

• Loop termination condition– Loop을 한 번 돌 때 마다 반드시 감소(단조감소; monotonically decreasing)하는 양 함수

SIGPL 겨울학교 , 2012-02-03

12

for (init; test; update)for (s=0, i=1; i<=100; i++) s += i;Loop invariance s = 1 + 2 + … + (i-1)초기상황 s = 1 + … (1-1) = 0최종상황 ((s = 1 + 2 + … + (i-1)) ∧ (i = 101))= (s = 1 + 2 + … + 100).Update s = 1 + 2 + … + i ∧ i++= s = 1 + 2 + … + (i-1)Loop termination f(i) = 101 – i.