<while b do S1, s''> โ s' ๊ฐ ์ฃผ์ด์ก์ ๋,
<while b do S1, s''> โ* s'
๋ฅผ ์ฆ๋ช ํ๊ธฐ ์ํด ๊ท๋ฉ ๊ฐ์ ์ ์ธ ์ ์๋๊ฐ?
์ด ์ํฉ์ <while b do S1, s> โ s'
๋ฅผ ์ฆ๋ช
์ค์, <while b do S1, s''> โ s'
๋ผ๋ ํ์ ๋์ถ์ด ๋ฑ์ฅํ๋ ๊ฒฝ์ฐ์ผ.
S โ Stmt
(๊ตฌ๋ฌธ๊ตฌ์กฐ)S = skip
, x := a
S = while b do S1
์ด๋ฉด,P(S1)
์ ๊ฐ์ ํ์ฌ P(S)
๋ฅผ ์ฆ๋ช
ํด์ผ ํจS1
์ด S
๋ณด๋ค ๊ตฌ์กฐ์ ์ผ๋ก "์๋ค" (์๋ธํธ๋ฆฌ ๊ตฌ์กฐ)while์ ๋ค์๊ณผ ๊ฐ์ big-step ๊ท์น์ ๊ฐ์ง:
beval(b, s) = true
<S1, s> โ s1 <while b do S1, s1> โ s2
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
<while b do S1, s> โ s2
๋ ๋ฒ์งธ ์ ์ <while b do S1, s1>
โ s2 ๋ S
์ ๊ตฌ์กฐ์ ์ผ๋ก ๋์ผ
โ Structural induction ์ ์ฉ ๋ถ๊ฐ (์ํ ๊ตฌ์กฐ๊ฐ ์์์ง์ง ์์)
<S, s> โ s'
)D
such that D โข <S, s> โ s'
P(D)
skip
, assign
, while-false
)๋์ถ <while b do S1, s> โ s'
๋ ๋ค์์ ํฌํจํจ:
D1: <S1, s> โ s1 D2: <while b do S1, s1> โ s2
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
D: <while b do S1, s> โ s2