annotate paper/vmpcbc.tex @ 14:784913eb2902

Wrote section 3
author Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
date Mon, 04 Jul 2016 13:59:34 +0900
parents fccf91d337c3
children aab1f02f16e8
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
9
a9e93aee0af1 Fix Newline code
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents: 7
diff changeset
1 \documentclass[submit,PRO]{ipsj}
a9e93aee0af1 Fix Newline code
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents: 7
diff changeset
2 \usepackage{PROpresentation}
a9e93aee0af1 Fix Newline code
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents: 7
diff changeset
3 \PROheadtitle{y-n-(x): 情報処理学会プログラミング研究会 発表資料 Y年m月d日}
a9e93aee0af1 Fix Newline code
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents: 7
diff changeset
4
a9e93aee0af1 Fix Newline code
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents: 7
diff changeset
5 \usepackage{graphicx}
a9e93aee0af1 Fix Newline code
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents: 7
diff changeset
6 \usepackage{latexsym}
a9e93aee0af1 Fix Newline code
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents: 7
diff changeset
7
a9e93aee0af1 Fix Newline code
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents: 7
diff changeset
8 \def\Underline{\setbox0\hbox\bgroup\let\\\endUnderline}
a9e93aee0af1 Fix Newline code
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents: 7
diff changeset
9 \def\endUnderline{\vphantom{y}\egroup\smash{\underline{\box0}}\\}
a9e93aee0af1 Fix Newline code
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents: 7
diff changeset
10 \def\|{\verb|}
a9e93aee0af1 Fix Newline code
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents: 7
diff changeset
11
a9e93aee0af1 Fix Newline code
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents: 7
diff changeset
12 \setcounter{巻数}{57}
a9e93aee0af1 Fix Newline code
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents: 7
diff changeset
13 \setcounter{号数}{1}
a9e93aee0af1 Fix Newline code
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents: 7
diff changeset
14 \setcounter{page}{1}
a9e93aee0af1 Fix Newline code
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents: 7
diff changeset
15
a9e93aee0af1 Fix Newline code
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents: 7
diff changeset
16
a9e93aee0af1 Fix Newline code
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents: 7
diff changeset
17 \受付{2015}{3}{4}
a9e93aee0af1 Fix Newline code
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents: 7
diff changeset
18 %\再受付{2015}{7}{16} %省略可能
a9e93aee0af1 Fix Newline code
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents: 7
diff changeset
19 %\再再受付{2015}{7}{20} %省略可能
a9e93aee0af1 Fix Newline code
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents: 7
diff changeset
20 \採録{2015}{8}{1}
a9e93aee0af1 Fix Newline code
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents: 7
diff changeset
21
a9e93aee0af1 Fix Newline code
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents: 7
diff changeset
22
a9e93aee0af1 Fix Newline code
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents: 7
diff changeset
23
a9e93aee0af1 Fix Newline code
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents: 7
diff changeset
24
a9e93aee0af1 Fix Newline code
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents: 7
diff changeset
25 \begin{document}
a9e93aee0af1 Fix Newline code
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents: 7
diff changeset
26
a9e93aee0af1 Fix Newline code
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents: 7
diff changeset
27
a9e93aee0af1 Fix Newline code
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents: 7
diff changeset
28 \title{Continuation based C を用いたプログラムの検証手法}
a9e93aee0af1 Fix Newline code
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents: 7
diff changeset
29 \etitle{Verification method of programs using Continuation based C}
a9e93aee0af1 Fix Newline code
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents: 7
diff changeset
30
a9e93aee0af1 Fix Newline code
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents: 7
diff changeset
31 \affiliate{RUnivIe}{琉球大学 大学院 理工学研究科 情報工学専攻\\
a9e93aee0af1 Fix Newline code
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents: 7
diff changeset
32 Infomation Engineering Course Graduate School of Engineering and Science University of the Ryukyus}
a9e93aee0af1 Fix Newline code
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents: 7
diff changeset
33 \affiliate{RUniv}{琉球大学\\
a9e93aee0af1 Fix Newline code
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents: 7
diff changeset
34 University of the Ryukyus}
a9e93aee0af1 Fix Newline code
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents: 7
diff changeset
35
a9e93aee0af1 Fix Newline code
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents: 7
diff changeset
36
a9e93aee0af1 Fix Newline code
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents: 7
diff changeset
37 \author{比嘉 健太}{Yasutaka HIGA}{RUnivIe}[atton@cr.ie.u-ryukyu.ac.jp]
a9e93aee0af1 Fix Newline code
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents: 7
diff changeset
38 \author{河野 真治}{Shinji KONO}{RUniv}[kono@ie.u-ryukyu.ac.jp]
a9e93aee0af1 Fix Newline code
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents: 7
diff changeset
39
a9e93aee0af1 Fix Newline code
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents: 7
diff changeset
40 \begin{abstract}
12
96f146208607 Add TODO
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents: 11
diff changeset
41 % TODO: update
9
a9e93aee0af1 Fix Newline code
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents: 7
diff changeset
42 Continuation based C 言語によって記述されたプログラムのデータ構造の性質を検証する手法を提案する。
a9e93aee0af1 Fix Newline code
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents: 7
diff changeset
43 Continuation based C とは当研究室が提案している Code Segment, Data Segment という単位でプログラムを記述する言語である。
a9e93aee0af1 Fix Newline code
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents: 7
diff changeset
44 Code Segment とは処理の単位であり、データの単位である Data Segment を入力と出力に持つ。
a9e93aee0af1 Fix Newline code
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents: 7
diff changeset
45 プログラム全体は Code Segment どうしの接続により表現され、あるCode Segment の出力は接続された次の Code Segment の入力となる。
a9e93aee0af1 Fix Newline code
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents: 7
diff changeset
46 また、メモリ管理やエラーの処理など、本来中心に行ないたい処理と異なる処理はメタ計算として分離し、Meta Code Segment, Meta Data Segment として記述する。
a9e93aee0af1 Fix Newline code
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents: 7
diff changeset
47 Code Segment の接続処理を Meta Code Segment として表現し、接続部分に検証を含めることで 元の Code Segment を変更することなくプログラムの検証を行なう。
a9e93aee0af1 Fix Newline code
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents: 7
diff changeset
48 本論文では Continuatoin based C によって記述された赤黒木や Synchronized Queue といったデータ構造の性質を検証する。
a9e93aee0af1 Fix Newline code
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents: 7
diff changeset
49 \end{abstract}
a9e93aee0af1 Fix Newline code
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents: 7
diff changeset
50
a9e93aee0af1 Fix Newline code
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents: 7
diff changeset
51
a9e93aee0af1 Fix Newline code
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents: 7
diff changeset
52 \begin{jkeyword}
a9e93aee0af1 Fix Newline code
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents: 7
diff changeset
53 プログラミング言語, 検証, 赤黒木
a9e93aee0af1 Fix Newline code
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents: 7
diff changeset
54 \end{jkeyword}
a9e93aee0af1 Fix Newline code
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents: 7
diff changeset
55
a9e93aee0af1 Fix Newline code
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents: 7
diff changeset
56 \begin{eabstract}
12
96f146208607 Add TODO
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents: 11
diff changeset
57 % TODO: update
9
a9e93aee0af1 Fix Newline code
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents: 7
diff changeset
58 We propose a verification method for programs using Continuation based C language.
a9e93aee0af1 Fix Newline code
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents: 7
diff changeset
59 Our laboratory develops Continuation based C language which supports programming unit called Code Segment, Data Segment.
a9e93aee0af1 Fix Newline code
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents: 7
diff changeset
60 Code segments are calculation units which have input/output data segments that data unit.
a9e93aee0af1 Fix Newline code
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents: 7
diff changeset
61 Programs are represented by connections among with code segments and code segments.
a9e93aee0af1 Fix Newline code
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents: 7
diff changeset
62 The output data segment of some code segment is converted to the input data segment of connected one.
a9e93aee0af1 Fix Newline code
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents: 7
diff changeset
63 We introduce meta computations which split main computations and complicated computations such as memory control, error handling and more.
a9e93aee0af1 Fix Newline code
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents: 7
diff changeset
64 Meta computations represented to meta code segment and meta data segment, which saves main computations.
a9e93aee0af1 Fix Newline code
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents: 7
diff changeset
65 In this paper, We define a meta computation which connects code segments with verifications and verify properties of data structures such as Red-Black Tree and Synchronized Queue.
a9e93aee0af1 Fix Newline code
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents: 7
diff changeset
66 \end{eabstract}
a9e93aee0af1 Fix Newline code
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents: 7
diff changeset
67
a9e93aee0af1 Fix Newline code
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents: 7
diff changeset
68 \begin{ekeyword}
a9e93aee0af1 Fix Newline code
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents: 7
diff changeset
69 Programming Language, Verification, Red-Black Tree
a9e93aee0af1 Fix Newline code
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents: 7
diff changeset
70 \end{ekeyword}
a9e93aee0af1 Fix Newline code
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents: 7
diff changeset
71
a9e93aee0af1 Fix Newline code
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents: 7
diff changeset
72 \maketitle
a9e93aee0af1 Fix Newline code
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents: 7
diff changeset
73
a9e93aee0af1 Fix Newline code
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents: 7
diff changeset
74 \section{コードセグメントとデータセグメント}
10
aeb1ce0e33c8 Wrote section 1
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents: 9
diff changeset
75 本研究は実際に動作するプログラムの信頼性を保証することを目的とする。
aeb1ce0e33c8 Wrote section 1
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents: 9
diff changeset
76 プログラムの信頼性とは、定められた環境下においてプログラムの動作が必ず仕様を満たすことである。
aeb1ce0e33c8 Wrote section 1
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents: 9
diff changeset
77 プログラムが仕様を満たすことを保証する手法として、プログラムの性質を証明する手法やプログラムの状態を全て数えあげるモデルチェッカなどが存在する。 % TODO ref
aeb1ce0e33c8 Wrote section 1
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents: 9
diff changeset
78 しかし、証明では実際に動作するコードでなく証明用にコードを書き直したり、モデルチェッカでは高速化のために抽象化した記号実行によって性質が検証されるなど、実際に動作するコードとの乖離が発生してしまう。
aeb1ce0e33c8 Wrote section 1
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents: 9
diff changeset
79
aeb1ce0e33c8 Wrote section 1
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents: 9
diff changeset
80 実際に動作するコードを検証しやすいよう、本研究室ではコードセグメントとデータセグメントを用いるプログラミングスタイルを提案している。 % TODO ref?
aeb1ce0e33c8 Wrote section 1
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents: 9
diff changeset
81 コードセグメントとは処理の単位であり、ループを含まない単純な処理のみを行なう。
aeb1ce0e33c8 Wrote section 1
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents: 9
diff changeset
82 プログラムはコードセグメントどうしを組み合わせることにより構築される。
aeb1ce0e33c8 Wrote section 1
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents: 9
diff changeset
83 組み合わせる際のコードセグメント間における値の受け渡しにはデータセグメントを用いる。
aeb1ce0e33c8 Wrote section 1
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents: 9
diff changeset
84 データセグメントとはデータの単位である。
aeb1ce0e33c8 Wrote section 1
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents: 9
diff changeset
85 なお、接続されたコードセグメントには依存関係が発生するが、依存関係が無いコードセグメントは並列に実行することが可能である。
aeb1ce0e33c8 Wrote section 1
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents: 9
diff changeset
86
aeb1ce0e33c8 Wrote section 1
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents: 9
diff changeset
87 % TODO cs/ds の図
aeb1ce0e33c8 Wrote section 1
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents: 9
diff changeset
88
aeb1ce0e33c8 Wrote section 1
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents: 9
diff changeset
89 ここで、コードセグメントどうしの接続処理について考える。
aeb1ce0e33c8 Wrote section 1
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents: 9
diff changeset
90 処理を表すコードセグメントの接続も処理であるため、コードセグメントで表現できる。
aeb1ce0e33c8 Wrote section 1
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents: 9
diff changeset
91 このように、計算を実現するための計算をメタ計算と呼び、メタ計算を行なうコードセグメントをメタコードセグメントと呼ぶ。
aeb1ce0e33c8 Wrote section 1
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents: 9
diff changeset
92 メタコードセグメントはコードセグメント間に存在する処理と考えることもできる。
aeb1ce0e33c8 Wrote section 1
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents: 9
diff changeset
93 また、メタ計算に必要なデータはメタデータセグメントに格納する。
aeb1ce0e33c8 Wrote section 1
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents: 9
diff changeset
94 プログラムの性質を検証する機能をメタ計算として提供することで、ユーザが書いたコードセグメントを変更することなく、メタコードセグメントを切り替えるだけでプログラムの信頼性を上げることができる。
aeb1ce0e33c8 Wrote section 1
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents: 9
diff changeset
95
9
a9e93aee0af1 Fix Newline code
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents: 7
diff changeset
96 \section{Continuation based C}
11
bac0852b7258 Wrote section 2
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents: 10
diff changeset
97 コードセグメントとデータセグメントを用いたプログラミングスタイルで記述言語に Continuation based C 言語が存在する。 % TODO ref
bac0852b7258 Wrote section 2
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents: 10
diff changeset
98 Continuation based C (以下 CbC)はOSや組込みシステムなどの記述を行なうことを目標に作られた、アセンブラとC言語の中間のような言語である。 % TODO 要出典
bac0852b7258 Wrote section 2
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents: 10
diff changeset
99 CbC におけるコードセグメントはC言語における関数に、関数呼び出しが末尾のみである制約を加えようなものである。
bac0852b7258 Wrote section 2
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents: 10
diff changeset
100 コードセグメントどうしの接続は goto によって表される。
bac0852b7258 Wrote section 2
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents: 10
diff changeset
101
bac0852b7258 Wrote section 2
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents: 10
diff changeset
102 % TODO: かんたんな goto program
bac0852b7258 Wrote section 2
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents: 10
diff changeset
103
bac0852b7258 Wrote section 2
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents: 10
diff changeset
104 また、データセグメントは構造体と共用体を用いたデータ構造を用いる。
bac0852b7258 Wrote section 2
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents: 10
diff changeset
105
bac0852b7258 Wrote section 2
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents: 10
diff changeset
106 CbC におけるメタコードセグメントは goto する際に必ず通るコードセグメント(以下の例では \verb/meta/ がそれにあたる)として表現される。
bac0852b7258 Wrote section 2
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents: 10
diff changeset
107
bac0852b7258 Wrote section 2
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents: 10
diff changeset
108 % TODO: meta を使った program
bac0852b7258 Wrote section 2
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents: 10
diff changeset
109 メタコードセグメントの切り替えは \verb/meta/ の切り替えで表現できる。
bac0852b7258 Wrote section 2
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents: 10
diff changeset
110 メタデータセグメントはデータセグメントをフィールドに持つ構造体として表現できる。
bac0852b7258 Wrote section 2
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents: 10
diff changeset
111
14
784913eb2902 Wrote section 3
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents: 13
diff changeset
112 CbC におけるメタ計算の例にメモリ管理がある。
784913eb2902 Wrote section 3
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents: 13
diff changeset
113 メモリの確保やポインタ演算をメタコードセグメントのみで行なうことで、コードセグメント側ではメモリに由来するエラーを排除することができる。
11
bac0852b7258 Wrote section 2
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents: 10
diff changeset
114 また、メタ計算を切り替えることでメモリの管理方法も切り替えることができるため、不要な領域の開放するよう拡張することも容易である。
bac0852b7258 Wrote section 2
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents: 10
diff changeset
115
9
a9e93aee0af1 Fix Newline code
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents: 7
diff changeset
116 \section{メタ計算を用いたデータ構造の性質の検証}
14
784913eb2902 Wrote section 3
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents: 13
diff changeset
117 CbC で記述されさデータ構造と、データ構造に対する処理の性質を実際に検証する。
13
fccf91d337c3 Writing section 3
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents: 12
diff changeset
118 検証の対象として、当研究室で CbC を用いて開発している Gears OS における非破壊赤黒木を用いる。
fccf91d337c3 Writing section 3
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents: 12
diff changeset
119 赤黒木とは木構造を持ったデータ構造であり、各ノードに赤と黒の色を割り当て、その色を用いて木の高さのバランスを取る。
fccf91d337c3 Writing section 3
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents: 12
diff changeset
120 また、非破壊であるため木にデータを挿入、削除した際に過去の木は変更されない。
fccf91d337c3 Writing section 3
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents: 12
diff changeset
121 非破壊赤黒木に求められる性質には、挿入したデータを参照できること、削除できること、値の更新ができること、操作を行なった後の木はバランスしていること、などが存在する。
14
784913eb2902 Wrote section 3
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents: 13
diff changeset
122 本論文では任意の順番で木に要素を挿入しても木がバランスしていることを検証する。
784913eb2902 Wrote section 3
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents: 13
diff changeset
123
784913eb2902 Wrote section 3
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents: 13
diff changeset
124 まず、検証を行なうために満たすべき仕様を定義する。
784913eb2902 Wrote section 3
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents: 13
diff changeset
125 仕様はデータ構造が常に満たすべき論理式として表現し、CbC のコードで記述する。
784913eb2902 Wrote section 3
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents: 13
diff changeset
126 検証する仕様として、木を根から辿った際に最も長い経路は最も短い経路の高々2倍に収まることを CbC で定義する。
784913eb2902 Wrote section 3
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents: 13
diff changeset
127 % TODO code
784913eb2902 Wrote section 3
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents: 13
diff changeset
128 定義した仕様に対し、挿入する値と順番の全ての組み合わせに対して確認していく。
784913eb2902 Wrote section 3
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents: 13
diff changeset
129 また、仕様を満たさない反例が存在する場合はその具体的な組み合わせの値を出力する。
13
fccf91d337c3 Writing section 3
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents: 12
diff changeset
130
14
784913eb2902 Wrote section 3
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents: 13
diff changeset
131 当研究室で開発している検証用メタ計算ライブラリ akasha と、C言語の有限モデルチェッカ cbmc を用いてこの仕様を検証した。
784913eb2902 Wrote section 3
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents: 13
diff changeset
132 akasha では検証用の仕様をメタコードセグメントに定義する。
784913eb2902 Wrote section 3
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents: 13
diff changeset
133 検証に必要な木の状態の保持や挿入順番の数え上げといった状態の保持はメタデータセグメントが行なう。
784913eb2902 Wrote section 3
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents: 13
diff changeset
134 akasha を用いて要素数12個までは任意の順で挿入を行なっても仕様が満たされることを検証した。 % todo: だっけか
784913eb2902 Wrote section 3
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents: 13
diff changeset
135 また、赤黒木の処理に恣意的にバグを追加した際には反例をきちんとと返した。
784913eb2902 Wrote section 3
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents: 13
diff changeset
136
784913eb2902 Wrote section 3
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents: 13
diff changeset
137 CbCは C とほぼ同じ構文を持つため、単純な置換でC言語に変換することができる。
784913eb2902 Wrote section 3
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents: 13
diff changeset
138 CbCで記述された赤黒木のコードを置換でC言語に変換し、cbmcで検証する。
784913eb2902 Wrote section 3
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents: 13
diff changeset
139 cbmc における仕様は bool を返すコードとして記述するため、akashaと同じ仕様定義を用いることができる。
784913eb2902 Wrote section 3
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents: 13
diff changeset
140 任意の順番での挿入の検証にはcbmcの機能に存在する非決定的な入力を用いた。
784913eb2902 Wrote section 3
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents: 13
diff changeset
141 しかし、cbmcで検証できる範囲内では赤黒木の仕様を検証することはできなかった。
784913eb2902 Wrote section 3
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents: 13
diff changeset
142 有限モデルチェッカでは探索する状態空間を有限の数で指定し、それを越える範囲は探索しない。
784913eb2902 Wrote section 3
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents: 13
diff changeset
143 cbmcで実行可能な最大の状態空間まで探索しても、バグを含んだ赤黒木に対する反例を得ることはできなかった。
13
fccf91d337c3 Writing section 3
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents: 12
diff changeset
144
9
a9e93aee0af1 Fix Newline code
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents: 7
diff changeset
145 \section{まとめと今後の課題}
14
784913eb2902 Wrote section 3
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents: 13
diff changeset
146 % unbounded にする
784913eb2902 Wrote section 3
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents: 13
diff changeset
147 % 状態の抽象化
784913eb2902 Wrote section 3
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents: 13
diff changeset
148 % 証明を使った空間削減
9
a9e93aee0af1 Fix Newline code
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents: 7
diff changeset
149
a9e93aee0af1 Fix Newline code
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents: 7
diff changeset
150 \begin{thebibliography}{9}
a9e93aee0af1 Fix Newline code
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents: 7
diff changeset
151 \bibitem{okumura}
a9e93aee0af1 Fix Newline code
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents: 7
diff changeset
152 奥村晴彦:改訂第5版 \LaTeXe 美文書作成入門,
a9e93aee0af1 Fix Newline code
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents: 7
diff changeset
153 技術評論社(2010).
a9e93aee0af1 Fix Newline code
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents: 7
diff changeset
154
a9e93aee0af1 Fix Newline code
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents: 7
diff changeset
155 \bibitem{companion}
a9e93aee0af1 Fix Newline code
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents: 7
diff changeset
156 Goossens, M., Mittelbach, F. and Samarin, A.: {\it The LaTeX Companion},
a9e93aee0af1 Fix Newline code
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents: 7
diff changeset
157 Addison Wesley, Reading, Massachusetts (1993).
a9e93aee0af1 Fix Newline code
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents: 7
diff changeset
158
a9e93aee0af1 Fix Newline code
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents: 7
diff changeset
159 \bibitem{book1}
a9e93aee0af1 Fix Newline code
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents: 7
diff changeset
160 木下是雄:
a9e93aee0af1 Fix Newline code
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents: 7
diff changeset
161 理科系の作文技術,
a9e93aee0af1 Fix Newline code
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents: 7
diff changeset
162 中公新書(1981).
a9e93aee0af1 Fix Newline code
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents: 7
diff changeset
163
a9e93aee0af1 Fix Newline code
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents: 7
diff changeset
164 \bibitem{book2}
a9e93aee0af1 Fix Newline code
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents: 7
diff changeset
165 Strunk, W.J. and White, E.B.: {\it The Elements of Style, Forth Edition},
a9e93aee0af1 Fix Newline code
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents: 7
diff changeset
166 Longman (2000).
a9e93aee0af1 Fix Newline code
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents: 7
diff changeset
167
a9e93aee0af1 Fix Newline code
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents: 7
diff changeset
168 \bibitem{book3}
a9e93aee0af1 Fix Newline code
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents: 7
diff changeset
169 Blake, G. and Bly, R.W.: {\it The Elements of Technical Writing},
a9e93aee0af1 Fix Newline code
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents: 7
diff changeset
170 Longman (1993).
a9e93aee0af1 Fix Newline code
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents: 7
diff changeset
171
a9e93aee0af1 Fix Newline code
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents: 7
diff changeset
172 \bibitem{book4}
a9e93aee0af1 Fix Newline code
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents: 7
diff changeset
173 Higham, N.J.:
a9e93aee0af1 Fix Newline code
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents: 7
diff changeset
174 {\it Handbook of Writing for the Mathematical Sciences},
a9e93aee0af1 Fix Newline code
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents: 7
diff changeset
175 SIAM (1998).
a9e93aee0af1 Fix Newline code
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents: 7
diff changeset
176
a9e93aee0af1 Fix Newline code
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents: 7
diff changeset
177 \bibitem{webpage1}
a9e93aee0af1 Fix Newline code
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents: 7
diff changeset
178 情報処理学会論文誌ジャーナル編集委員会:
a9e93aee0af1 Fix Newline code
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents: 7
diff changeset
179 投稿者マニュアル(オンライン),
a9e93aee0af1 Fix Newline code
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents: 7
diff changeset
180 \urlj{http://www.ipsj.or.jp/journal/ submit/manual/j\_manual.html}%
a9e93aee0af1 Fix Newline code
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents: 7
diff changeset
181 \refdatej{2007-04-05}.
a9e93aee0af1 Fix Newline code
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents: 7
diff changeset
182
a9e93aee0af1 Fix Newline code
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents: 7
diff changeset
183 \bibitem{webpage2}
a9e93aee0af1 Fix Newline code
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents: 7
diff changeset
184 情報処理学会論文誌ジャーナル編集委員会:
a9e93aee0af1 Fix Newline code
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents: 7
diff changeset
185 べからず集(オンライン),
a9e93aee0af1 Fix Newline code
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents: 7
diff changeset
186 \urlj{http://www.ipsj.or.jp/journal/\\ manual/bekarazu.html}%
a9e93aee0af1 Fix Newline code
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents: 7
diff changeset
187 \refdatej{2011-09-15}.
a9e93aee0af1 Fix Newline code
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents: 7
diff changeset
188
a9e93aee0af1 Fix Newline code
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents: 7
diff changeset
189 \end{thebibliography}
a9e93aee0af1 Fix Newline code
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents: 7
diff changeset
190
12
96f146208607 Add TODO
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents: 11
diff changeset
191 % TODO: update
9
a9e93aee0af1 Fix Newline code
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents: 7
diff changeset
192 \begin{biography}
a9e93aee0af1 Fix Newline code
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents: 7
diff changeset
193 \profile{m,E}{情報 太郎}{1970年生.1992年情報処理大学理学部情報科学科卒業.
a9e93aee0af1 Fix Newline code
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents: 7
diff changeset
194 1994年同大学大学院修士課程修了.同年情報処理学会入社.オンライン出版の研究
a9e93aee0af1 Fix Newline code
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents: 7
diff changeset
195 に従事.電子情報通信学会,IEEE,ACM 各会員.}
a9e93aee0af1 Fix Newline code
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents: 7
diff changeset
196 %
a9e93aee0af1 Fix Newline code
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents: 7
diff changeset
197 \profile{n}{処理 花子}{1960年生.1982年情報処理大学理学部情報科学科卒業.
a9e93aee0af1 Fix Newline code
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents: 7
diff changeset
198 1984年同大学大学院修士課程修了.1987年同博士課程修了.理学博士.1987年情報処
a9e93aee0af1 Fix Newline code
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents: 7
diff changeset
199 理大学助手.1992年架空大学助教授.1997年同大教授.オンライン出版の研究
a9e93aee0af1 Fix Newline code
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents: 7
diff changeset
200 に従事.2010年情報処理記念賞受賞.電子情報通信学会,IEEE,IEEE-CS,ACM
a9e93aee0af1 Fix Newline code
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents: 7
diff changeset
201 各会員.}
a9e93aee0af1 Fix Newline code
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents: 7
diff changeset
202 %
a9e93aee0af1 Fix Newline code
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents: 7
diff changeset
203 \profile{h,L}{学会 次郎}{1950年生.1974年架空大学大学院修士課程修了.
a9e93aee0af1 Fix Newline code
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents: 7
diff changeset
204 1987年同博士課程修了.工学博士.1977年架空大学助手.1992年情報処理大学助
a9e93aee0af1 Fix Newline code
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents: 7
diff changeset
205 教授.1987年同大教授.2000年から情報処理学会顧問.オンライン出版の研究
a9e93aee0af1 Fix Newline code
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents: 7
diff changeset
206 に従事.2010年情報処理記念賞受賞.情報処理学会理事.電子情報通信学会,
a9e93aee0af1 Fix Newline code
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents: 7
diff changeset
207 IEEE,IEEE-CS,ACM 各会員.}
a9e93aee0af1 Fix Newline code
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents: 7
diff changeset
208 \end{biography}
a9e93aee0af1 Fix Newline code
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents: 7
diff changeset
209
a9e93aee0af1 Fix Newline code
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents: 7
diff changeset
210
a9e93aee0af1 Fix Newline code
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents: 7
diff changeset
211
a9e93aee0af1 Fix Newline code
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents: 7
diff changeset
212 \end{document}