comparison paper/type.tex @ 37:881bd1d12a45

Writing expression ...
author atton <atton@cr.ie.u-ryukyu.ac.jp>
date Sat, 28 Jan 2017 11:28:38 +0900
parents 34812c1b33c2
children 5d4097922243
comparison
equal deleted inserted replaced
36:34812c1b33c2 37:881bd1d12a45
177 これらの振舞いが同じプログラムを実行した時に何かしらの意味であれば、結果としてその言語の実装の正しさを証明することに繋がる。 177 これらの振舞いが同じプログラムを実行した時に何かしらの意味であれば、結果としてその言語の実装の正しさを証明することに繋がる。
178 178
179 まずはブール式のみの操作的意味論を定義する。 179 まずはブール式のみの操作的意味論を定義する。
180 180
181 \begin{definition} 181 \begin{definition}
182 ブール値(B)
182 183
183 構文 184 構文
184
185 \begin{align*} 185 \begin{align*}
186 t ::= && \text{項} \\ 186 t ::= && \text{項} \\
187 true && \text{定数真} \\ 187 true && \text{定数真} \\
188 false && \text{定数偽} \\ 188 false && \text{定数偽} \\
189 if \; t \; then \; t \; else \; t && \text{条件式} 189 if \; t \; then \; t \; else \; t && \text{条件式}
190 \end{align*} 190 \end{align*}
191 \end{definition} 191
192
193 \begin{definition}
194 192
195
196 \begin{align*} 193 \begin{align*}
197 v ::= && \text{値} \\ 194 v ::= && \text{値} \\
198 true && \text{真} \\ 195 true && \text{真} \\
199 false && \text{偽} 196 false && \text{偽}
200 \end{align*} 197 \end{align*}
201 \end{definition} 198
202
203 \begin{definition}
204 評価 199 評価
205
206 \begin{align*} 200 \begin{align*}
207 if \; true \; then \; t_2 \; else t_3 \rightarrow t_2 && \text{(E-IFTRUE)} \\ 201 if \; true \; then \; t_2 \; else t_3 \rightarrow t_2 && \text{(E-IFTRUE)} \\
208 if \; false \; then \; t_2 \; else t_3 \rightarrow t_3 && \text{(E-IFFALSE)} \\ 202 if \; false \; then \; t_2 \; else t_3 \rightarrow t_3 && \text{(E-IFFALSE)} \\
209 \AxiomC{$ t_1 \rightarrow t_1'$} 203 \AxiomC{$ t_1 \rightarrow t_1'$}
210 \UnaryInfC{$ if \; t_1 \; then \; t_2 \; else \; t_3 \rightarrow if \; t_1' \; then t_2 \; else \;t_3 $} 204 \UnaryInfC{$ if \; t_1 \; then \; t_2 \; else \; t_3 \rightarrow if \; t_1' \; then t_2 \; else \;t_3 $}
211 \DisplayProof 205 \DisplayProof
212 && \text{(E-IF)} 206 && \text{(E-IF)}
213 \end{align*} 207 \end{align*}
214 \end{definition} 208
215 209 \end{definition}
216 210
211 評価の最終結果になりえる項である値は定数 $ true $ と $ false $ のみである。
212 評価の定義は評価関係の定義である。
213 評価関係 $ t \rightarrow t' $ は「$ t $ が1ステップで $ t' $ に評価される」と読む。
214 直感的には抽象機械の状態が $ t $ ならば $ t' $ が手に入るという意味である。
215
216 評価関係は3つあるが、2つは前提を持たないため、2つの公理と1つの規則から成る。
217 1つめの規則 E-IFTRUE の意味は、評価の対象となる項の条件式が定数 $ true $ である時に、then 節にある $ t_2 $ を残して他の全ての項を捨てるという意味である。
218 E-EIFFALSE も同様に条件式が $ false $ の時に $ t_3 $ のみを残す。
219 3つ目の規則 E-IF は条件式の評価である。
220 条件式 $ t $ が $ t'$ に評価されうるのならば then 節と else 節を変えずに条件部のみを評価する。
221
222 評価の定義から分かることの中に、if の中の then節 と else 節は条件部より先に評価されないことがある。
223 よって、この言語は条件式の評価に対し条件部から評価が優先されるという評価戦略を持つことが分かる。
224
225 \begin{definition}
226 推論規則のインスタンスとは、規則の結論や前提に対し、一貫して同じ項による書き換えを行なったものである。
227 \end{definition}
228
229 例えば、
230
231 \verb/if true then true else (if false then false else false)/
232
233 は E-IFTRUE のインスタンスであり、 E-IFTRUEの $ t_2 $ が \verb/true/ かつ $ t_3 $ が \verb/if false then false else false/ の時である。
234
235 \begin{definition}
236 1ステップ評価関係 $ \rightarrow $ とは、3つの評価の規則を満たす、項に関する最小の二項関係である。
237 $ (t, \; t') $ がこの関係の元である時、「評価関係式 $ t \rightarrow t'$ は導出可能である」と言う。
238 \end{definition}
239
240 ここで「最小」という言葉が表れるため、評価関係式 $ t \rightarrow t'$ が導出可能である時かつその時に限り、その関係式は規則によって正当化される。
241 すなわち評価関係式は公理 E-IFTRUE か E-IFFALSE 、前提が成り立つ時の E-IF のインスタンスとなる。
242 与えられた評価関係式が導出可能であることを証明するには、葉が E-IFTRUE か E-IFFALSE であり、内部ノードのラベルが E-IF のインスタンスである導出木が示せれば良い。
243 例えば以下の略記の元 $ if \; t \; then \; false \; then \; false \rightarrow if \; u \; then \; false \; else \; false $ の導出可能性は以下のような導出木によって示せる。
244
245 \begin{itemize}
246 \item $ s = if \; true \; then \; false \; else \; false $
247 \item $ t = if \; s \; then \; true \; else \; true $
248 \item $ u = if \; false \; then \; true \; else \; true $
249 \end{itemize}
250
251
252 \begin{prooftree}
253 \AxiomC{}
254 \RightLabel{E-IFTRUE}
255 \UnaryInfC{ $ s \rightarrow true $ }
256 \RightLabel{E-IF}
257 \UnaryInfC{ $ t \rightarrow u $}
258 \RightLabel{E-IF}
259 \UnaryInfC{ $ if \; t \; then \; false \; then \; false/ \rightarrow if \; u \; then \; false \; else \; false $}
260 \end{prooftree}
261
262 1ステップ評価関係は与えられた項に対して抽象機械の状態遷移を定義する。
263 この時、機械がそれ以上ステップを進められない時にそれが最終結果となる。
264
265 \begin{definition}
266 正規形
267
268 項 $ t $ が正規形であるとは、$ t \rightarrow t'$となる評価規則が存在しないことである。
269 \end{definition}
270
271 この言語において $ true $ や $ false $ は正規形である。
272 逆に言えば、構文的に正しい if が用いられている場合は評価することが可能なため正規形ではない。
273 極端に言えばこの言語における全ての値は正規形なのである。
274 しかし、他の言語における値は一般的に正規形ではない。
275 実のところ、値でない正規形は実行時エラーとなって表れる。
276
277 実際にこの言語に整数を導入して値では無い正規形を確認していく。
217 278
218 279
219 280
220 % {{{ 型なしラムダ計算 281 % {{{ 型なしラムダ計算
221 \section{型なしラムダ計算} 282 \section{型なしラムダ計算}