comparison slides/20150519/slide.md @ 104:4c2f5cc9f676

Add slide for seminar
author Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
date Tue, 19 May 2015 19:57:16 +0900
parents
children
comparison
equal deleted inserted replaced
103:b9664a92428d 104:4c2f5cc9f676
1 title: Verification of programs using Code Segments and Data Segments
2 author: Yasutaka Higa
3 profile:
4 lang: Japanese
5
6
7 # 研究目的
8 * コードセグメントとデータセグメントという単位を用いてプログラムを記述する手法を提案する
9 * プログラムはコードセグメントという処理の集合として表され、相互に接続される
10 * 個々のコードセグメントを検証し、検証されたコードセグメントどうしの組み合わせによりプログラム全体を検証する
11
12 # 研究内容
13 * コードセグメントとデータセグメントを用いたプログラムに対し、自動で検証する機構を提案する
14 * 検証機構には可能な状態を列挙できるモデルチェッカーや、型システムを用いた証明を用いる
15 * 検証をメタ計算として定義し、通常のプログラムから検証を含んだプログラムを導出する
16 * メタ計算の形式化には Monad を用い、通常の計算とメタ計算間の一対一対応を保証する
17
18 # 近況報告
19 * Spin 触ってます
20 * チュートリアルとかちょろっと
21
22 # Spin
23 * Promela によって記述されたコードを実行するもの
24 * Promela は以下のような特徴を持つ
25 * proc という処理単位を並列に実行する
26 * boolean condition の assertion によって性質をチェックする
27 * proc の実行順を列挙することにより、反例などを見付ける
28
29 # Statements
30 * Promela の構文には2種類の状態がある(executable/blockng)
31 * 代入は always executable
32 * expression は non-zero の時のみ executable
33 * flag == 1 と書くと flag が 1 になるまで blocking
34
35 # control flow
36 * if によって実行を分岐できる
37
38 ```
39 if
40 :: condition -> expression
41 :: condition -> expression
42 ...
43 fi
44 ```
45
46 * condition が executable なものから non-deterministic に実行される
47
48 # repeat
49 * do 構文で if を repeat できる
50
51 ```
52 do
53 :: condition -> expression
54 :: condition -> expression
55 ...
56 od
57 ```
58
59 # assertion
60 * assert 構文で boolean の assertion ができます
61 * assert 構文は always executable
62
63 # channel
64 * proc 間の messaging
65 * ほとんど synchironized queue
66 * FIFO
67 * block when take from empty queue
68 * block when put to full queue
69 * golang の channel っぽい。
70
71 # 実装周りの話
72 * 状態は vector にしてるっぽいです
73 * 同じ vector は hash に入れてる
74
75
76 # bibliographies
77 * [Spin Online References](http://spinroot.com/spin/Man/)
78 * [Tutorial](http://spinroot.com/spin/Doc/SpinTutorial.pdf)
79 * [Basic Spin Manual](http://spinroot.com/spin/Man/Manual.html)
80
81 <!-- vim: set filetype=markdown.slide: -->