annotate tex/hoare.tex @ 10:c162ca9b997e

add reference
author soto@cr.ie.u-ryukyu.ac.jp
date Tue, 15 Sep 2020 04:49:26 +0900
parents 27a6616b6683
children a8bc8c6b48bd
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
3
b124f02ea3f1 post agda code
soto@cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
1 \section{Hoare Logic}
7
acad18934981 add description of rbtree
soto@cr.ie.u-ryukyu.ac.jp
parents: 3
diff changeset
2 Hoare Logic とは C.A.R Hoare、 R.W Floyd が考案したプログラムの検証の手法である。
acad18934981 add description of rbtree
soto@cr.ie.u-ryukyu.ac.jp
parents: 3
diff changeset
3 これは、「プログラムの事前条件(P)が成立しているとき、コマンド(C)実行して停止すると事後条件(Q)が成り立つ」
acad18934981 add description of rbtree
soto@cr.ie.u-ryukyu.ac.jp
parents: 3
diff changeset
4 というもので、CbCの実行を継続するという性質に非常に相性が良い。
acad18934981 add description of rbtree
soto@cr.ie.u-ryukyu.ac.jp
parents: 3
diff changeset
5 Hoare Logic を表記すると以下のようになる。
8
soto@cr.ie.u-ryukyu.ac.jp
parents: 7
diff changeset
6 $$ \{P\}\ C \ \{Q\} $$
7
acad18934981 add description of rbtree
soto@cr.ie.u-ryukyu.ac.jp
parents: 3
diff changeset
7 この3つ組は Hoare Triple と呼ばれる。
acad18934981 add description of rbtree
soto@cr.ie.u-ryukyu.ac.jp
parents: 3
diff changeset
8
acad18934981 add description of rbtree
soto@cr.ie.u-ryukyu.ac.jp
parents: 3
diff changeset
9 Hoare Triple の事後条件を受け取り異なる条件を返す別の Hoare Triple を繋げることでプログラムを記述していく。
3
b124f02ea3f1 post agda code
soto@cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
10
7
acad18934981 add description of rbtree
soto@cr.ie.u-ryukyu.ac.jp
parents: 3
diff changeset
11 Hoare Logic の検証では、「条件がすべて正しく接続されている」かつ「コマンドが停止する」ことが必要である。
acad18934981 add description of rbtree
soto@cr.ie.u-ryukyu.ac.jp
parents: 3
diff changeset
12 これらを満たし、事前条件から事後条件を導けることを検証することで Hoare Logic の健全性を示すことができる。
acad18934981 add description of rbtree
soto@cr.ie.u-ryukyu.ac.jp
parents: 3
diff changeset
13
8
soto@cr.ie.u-ryukyu.ac.jp
parents: 7
diff changeset
14 \subsection{Hoare による Code Gear の検証 }
soto@cr.ie.u-ryukyu.ac.jp
parents: 7
diff changeset
15
soto@cr.ie.u-ryukyu.ac.jp
parents: 7
diff changeset
16 以下の図が agda にて Hoare Logic を用いて Code Gear を検証する際の流れになる。
soto@cr.ie.u-ryukyu.ac.jp
parents: 7
diff changeset
17 input DataGear が Hoare Logic上の Pre Condition(事前条件)となり、output DataGear が Post Conditionとなる。
soto@cr.ie.u-ryukyu.ac.jp
parents: 7
diff changeset
18 各DataGear が Pre / Post Condition を満たしているかの検証は、各 Condition を Meta DataGear で定義し、
soto@cr.ie.u-ryukyu.ac.jp
parents: 7
diff changeset
19 条件を満たしているのかをMeta CodeGear で検証する。
3
b124f02ea3f1 post agda code
soto@cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
20
7
acad18934981 add description of rbtree
soto@cr.ie.u-ryukyu.ac.jp
parents: 3
diff changeset
21 \begin{center}
10
c162ca9b997e add reference
soto@cr.ie.u-ryukyu.ac.jp
parents: 8
diff changeset
22 \includegraphics[height=3.4cm]{pic/hoare_cg_dg.pdf}
7
acad18934981 add description of rbtree
soto@cr.ie.u-ryukyu.ac.jp
parents: 3
diff changeset
23 \caption{CodeGear、DataGear での Hoare Logic}
acad18934981 add description of rbtree
soto@cr.ie.u-ryukyu.ac.jp
parents: 3
diff changeset
24 \label{hoare}
acad18934981 add description of rbtree
soto@cr.ie.u-ryukyu.ac.jp
parents: 3
diff changeset
25 \end{center}
3
b124f02ea3f1 post agda code
soto@cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
26
8
soto@cr.ie.u-ryukyu.ac.jp
parents: 7
diff changeset
27
soto@cr.ie.u-ryukyu.ac.jp
parents: 7
diff changeset
28