comparison Paper/soto-sigos.tex @ 3:952d4dbb7c6a

WIP 仮完成
author soto <soto@cr.ie.u-ryukyu.ac.jp>
date Thu, 05 May 2022 03:30:26 +0900
parents f9794e92f964
children 7434c0aa1859
comparison
equal deleted inserted replaced
2:f9794e92f964 3:952d4dbb7c6a
46 } 46 }
47 \usepackage{caption} 47 \usepackage{caption}
48 \newcommand\newblock{\hskip .11em\@plus.33em\@minus.07em} 48 \newcommand\newblock{\hskip .11em\@plus.33em\@minus.07em}
49 \captionsetup[lstlisting]{font={small, tt}} 49 \captionsetup[lstlisting]{font={small, tt}}
50 50
51 \renewcommand{\lstlistingname}{Code}
52
53
51 \begin{document} 54 \begin{document}
52 55
53 % Title, Author %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 56 % Title, Author %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
54 \title{GearsAgda上のモデル検査の形式化} 57 \title{GearsAgda上のモデル検査の形式化}
55 58
76 \input{tex/cbc.tex} % cbc の説明 軽く 79 \input{tex/cbc.tex} % cbc の説明 軽く
77 % \input{tex/agda.tex} % agda の説明 もしかしたらいるかも 80 % \input{tex/agda.tex} % agda の説明 もしかしたらいるかも
78 \input{tex/cbc_agda.tex}% Gears Agda の記法 loopのやつやる 81 \input{tex/cbc_agda.tex}% Gears Agda の記法 loopのやつやる
79 82
80 \section{モデル検査} 83 \section{モデル検査}
81 モデル検査の説明をする。 84 モデル検査とは、検証手法の一つである。
85 他の検証手法として代表的なものとして、定理証明が挙げられる
86
87 モデル検査はプログラムが入力に対して仕様を満たした動作を
88 行うことを網羅的に検証することを指す。
89
90 モデル検査と定理証明を比較した際に、モデル検査は入力が無限になる
91 状態爆発が起こり得るという問題がある。
92 定理証明では数学的な証明をするため状態爆発を起こさず検証を行うことが
93 できるが、専門的な知識が多く難易度が高いという欠点がある。
82 94
83 \input{tex/dpp_impl.tex}% Gears Agda の記法 loopのやつやる 95 \input{tex/dpp_impl.tex}% Gears Agda の記法 loopのやつやる
84 96
85 \section{DPPのモデル検査} 97 \section{DPPのモデル検査}
86 モデル検査の機能として、入力の網羅が挙げられる。 98 モデル検査の機能として、入力の網羅が挙げられる。
89 101
90 そのため、next-codeがthinkingかeatingであるものに対して分岐を網羅する Code \ref{agda-dpp-bruteforce} 102 そのため、next-codeがthinkingかeatingであるものに対して分岐を網羅する Code \ref{agda-dpp-bruteforce}
91 を定義した。 103 を定義した。
92 104
93 105
94 \lstinputlisting[caption= Gears Agdaでの DPP の 左のフォークを取るコード, label=agda-dpp-bruteforce]{src/agda-dpp-modelcheck.agda.replaced} 106 \lstinputlisting[caption= Gears Agdaでの DPP の場合を網羅するコード, label=agda-dpp-bruteforce]{src/agda-dpp-modelcheck.agda.replaced}
95 107
96 内部で行っていることとして、その Code Gear 内に存在している next-code が thinking もしくは eatingである場合に 108 内部で行っていることとして、その Code Gear 内に存在している next-code が thinking もしくは eatingである場合に
97 そのプロセスのnext-codeをそのままにするか、それぞれ pickup-rfork か putdown-lfork にする。 109 そのプロセスのnext-codeをそのままにするか、それぞれ pickup-rfork か putdown-lfork にする。
98 そのため、その部分に対してbit全探索を行い、場合の網羅を行っている。 110 そのため、その部分に対してbit全探索を行い、場合の網羅を行っている。
99 111