annotate Paper/tex/abst.tex @ 16:40a9af45b375

fix
author soto <soto@cr.ie.u-ryukyu.ac.jp>
date Thu, 02 Feb 2023 17:49:33 +0900
parents f0d512637e52
children 785dd684c529
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1
a72446879486 Init paper
soto <soto@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1 \chapter*{要旨}
16
soto <soto@cr.ie.u-ryukyu.ac.jp>
parents: 15
diff changeset
2
8
soto <soto@cr.ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
3 開発手法の一つとして,形式手法というものがある.
soto <soto@cr.ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
4 形式手法とはプログラムの仕様を形式化,つまり数学的な記述を行い,
16
soto <soto@cr.ie.u-ryukyu.ac.jp>
parents: 15
diff changeset
5 書いたプログラムがそれを満たしているか検証を行う開発手法である.
8
soto <soto@cr.ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
6 代表的な形式の検証手法として,定理証明やモデル検査が挙げられる.
soto <soto@cr.ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
7
16
soto <soto@cr.ie.u-ryukyu.ac.jp>
parents: 15
diff changeset
8 形式手法で開発したプログラムは数学的に正しいことが証明されている.
8
soto <soto@cr.ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
9 そのため高い安全性が必要とされる鉄道や電力などのインフラ分野に使用されている.
16
soto <soto@cr.ie.u-ryukyu.ac.jp>
parents: 15
diff changeset
10 一見完璧な手法であるように思えるが欠点として,形式化や検証が複雑なため膨大なコストを要する.
soto <soto@cr.ie.u-ryukyu.ac.jp>
parents: 15
diff changeset
11 シンプルな実装であれば仕様の形式化が容易に行えるが,そうであれば形式手法を使用する利点が薄くなる.
8
soto <soto@cr.ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
12
16
soto <soto@cr.ie.u-ryukyu.ac.jp>
parents: 15
diff changeset
13 そのため,他のプログラミング言語と比べて検証に適している Gears Agda を使用する.
soto <soto@cr.ie.u-ryukyu.ac.jp>
parents: 15
diff changeset
14 Gears Agda とは当研究室で開発している Continuation based C (CbC) の概念を
soto <soto@cr.ie.u-ryukyu.ac.jp>
parents: 15
diff changeset
15 取り入れた記法で記述された定理証明支援器 Agda のことである.
8
soto <soto@cr.ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
16
soto <soto@cr.ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
17 定理証明によるプログラムの検証は一般的に難易度が高いが,
15
f0d512637e52 Add ref
soto <soto@cr.ie.u-ryukyu.ac.jp>
parents: 14
diff changeset
18 Gears Agda では検証をプログラム単位に分割することができ,比較的容易に検証を行えるようになっている.
8
soto <soto@cr.ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
19
15
f0d512637e52 Add ref
soto <soto@cr.ie.u-ryukyu.ac.jp>
parents: 14
diff changeset
20 先行研究では implies を用いて Hoare Logic での定理証明を行っていた.
16
soto <soto@cr.ie.u-ryukyu.ac.jp>
parents: 15
diff changeset
21 しかし、それでは記述が長く複雑になっていた.
soto <soto@cr.ie.u-ryukyu.ac.jp>
parents: 15
diff changeset
22 そこで今回は Invariant というプログラムの不変条件を新たに取り入れた.これを検証しながら実行をすることで,Hoare Logic を用いた定理証明を比較的簡単に行えるようになった.
13
62d87fdd7775 add intro
soto <soto@cr.ie.u-ryukyu.ac.jp>
parents: 11
diff changeset
23
16
soto <soto@cr.ie.u-ryukyu.ac.jp>
parents: 15
diff changeset
24 また,定理証明では並列処理の検証は困難である。出現する状態を一度全て出してからそれらの検証を行わないといけないためである。
8
soto <soto@cr.ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
25 そのため,もう一つの代表的な検証手法であるモデル検査を Gears Agda にて行えるようにした.
soto <soto@cr.ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
26
16
soto <soto@cr.ie.u-ryukyu.ac.jp>
parents: 15
diff changeset
27 これらのことから,本論文では Gears Agda の定理証明とモデル検査での検証手法について述べる。
1
a72446879486 Init paper
soto <soto@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
28
a72446879486 Init paper
soto <soto@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
29 \chapter*{Abstract}
14
f52e5fd41f58 Add ref
soto <soto@cr.ie.u-ryukyu.ac.jp>
parents: 13
diff changeset
30 One of the development methods is called formal methods.
f52e5fd41f58 Add ref
soto <soto@cr.ie.u-ryukyu.ac.jp>
parents: 13
diff changeset
31 Formal methods formalize the specification of a program, i.e., describe it mathematically, and verify that the written program satisfies the specification.
f52e5fd41f58 Add ref
soto <soto@cr.ie.u-ryukyu.ac.jp>
parents: 13
diff changeset
32 The typical formal verification methods include theorem proving and model checking.
f52e5fd41f58 Add ref
soto <soto@cr.ie.u-ryukyu.ac.jp>
parents: 13
diff changeset
33 Theorem proving and model checking are typical formal verification methods.
f52e5fd41f58 Add ref
soto <soto@cr.ie.u-ryukyu.ac.jp>
parents: 13
diff changeset
34
f52e5fd41f58 Add ref
soto <soto@cr.ie.u-ryukyu.ac.jp>
parents: 13
diff changeset
35 Programs developed by formal methods are proven to be mathematically correct.
f52e5fd41f58 Add ref
soto <soto@cr.ie.u-ryukyu.ac.jp>
parents: 13
diff changeset
36 For this reason, they are used in infrastructure fields such as railroads and electric power, where high safety is required.
f52e5fd41f58 Add ref
soto <soto@cr.ie.u-ryukyu.ac.jp>
parents: 13
diff changeset
37 However, the drawback of this seemingly perfect method is that it is extremely costly.
f52e5fd41f58 Add ref
soto <soto@cr.ie.u-ryukyu.ac.jp>
parents: 13
diff changeset
38 Formalization of specifications is easy for simple implementations, but then it is not necessary to use formal methods.
f52e5fd41f58 Add ref
soto <soto@cr.ie.u-ryukyu.ac.jp>
parents: 13
diff changeset
39
f52e5fd41f58 Add ref
soto <soto@cr.ie.u-ryukyu.ac.jp>
parents: 13
diff changeset
40 For this reason, we use Gears Agda, which is more suitable for verification than other programming languages.
f52e5fd41f58 Add ref
soto <soto@cr.ie.u-ryukyu.ac.jp>
parents: 13
diff changeset
41 Gears Agda is a programming language written in a notation that incorporates the concept of Continuation based C (CbC), which is being developed in our laboratory.
f52e5fd41f58 Add ref
soto <soto@cr.ie.u-ryukyu.ac.jp>
parents: 13
diff changeset
42 Gears Agda is an Agda written in a notation that incorporates the concept of Continuation based C (CbC), which is being developed in our laboratory.
f52e5fd41f58 Add ref
soto <soto@cr.ie.u-ryukyu.ac.jp>
parents: 13
diff changeset
43
f52e5fd41f58 Add ref
soto <soto@cr.ie.u-ryukyu.ac.jp>
parents: 13
diff changeset
44 Verification of programs by theorem proving is generally difficult.
15
f0d512637e52 Add ref
soto <soto@cr.ie.u-ryukyu.ac.jp>
parents: 14
diff changeset
45 Gears Agda can be divided into program units, making verification relatively easy.
14
f52e5fd41f58 Add ref
soto <soto@cr.ie.u-ryukyu.ac.jp>
parents: 13
diff changeset
46
f52e5fd41f58 Add ref
soto <soto@cr.ie.u-ryukyu.ac.jp>
parents: 13
diff changeset
47 In previous research, implies were used for theorem proving in Hoare Logic.
f52e5fd41f58 Add ref
soto <soto@cr.ie.u-ryukyu.ac.jp>
parents: 13
diff changeset
48 However, this made the description long and complicated.
f52e5fd41f58 Add ref
soto <soto@cr.ie.u-ryukyu.ac.jp>
parents: 13
diff changeset
49 Therefore, in this study, we introduced a new program invariant called Invariant. By verifying the invariant condition while executing the program, theorem proving using Hoare Logic became relatively easy.
f52e5fd41f58 Add ref
soto <soto@cr.ie.u-ryukyu.ac.jp>
parents: 13
diff changeset
50
f52e5fd41f58 Add ref
soto <soto@cr.ie.u-ryukyu.ac.jp>
parents: 13
diff changeset
51 In addition, verification of concurrency is difficult in theorem proving.
f52e5fd41f58 Add ref
soto <soto@cr.ie.u-ryukyu.ac.jp>
parents: 13
diff changeset
52 Therefore, we made it possible to perform model checking, another typical verification method, in Gears Agda.
f52e5fd41f58 Add ref
soto <soto@cr.ie.u-ryukyu.ac.jp>
parents: 13
diff changeset
53
f52e5fd41f58 Add ref
soto <soto@cr.ie.u-ryukyu.ac.jp>
parents: 13
diff changeset
54 Based on the above, this paper describes the theorem proving and model checking verification methods of Gears Agda.