comparison slide/memo.md @ 23:016e82a71407

Add slide
author soto <soto@cr.ie.u-ryukyu.ac.jp>
date Tue, 07 Feb 2023 02:27:53 +0900
parents b37e4cd69468
children 83e28d9da152
comparison
equal deleted inserted replaced
22:b37e4cd69468 23:016e82a71407
1 #
2
3 # 目的 1 # 目的
4 2
3 そのまま読むかな
5 4
5 # agdaの基本
6 たぶんここの説明全部実際のコードでやったほうがいいらしい
7
8 # record
9 論文にもかいてあるし三段論法を
10 取り扱ったほうが見る人も面白いのでは
11
12 # CbC
13 goto文のやつは消すかな
14
15 # normal levelとmetalevel
16 ポインタの操作は含まれない
17
18 上の方は normal level の実装
19
20 下の方が meta level の計算を可視化したもの
21
22 例えば、変数がメモリのある番地に存在していれば、
23 Meta Data Gear がその番地を持っている。
24 (なので Data Gear に wrap されているというイメージ)
25
26 Meta Code Gear がそのメモリから取り出して、
27
28 普通の Code Gear が実行をするという流れ、
29
30 後ろのほうでまた新しく保存したいデータがあれば
31 Meta Code Gear が保存して、
32
33 最後の Meta Data Gear が新しいデータのメモリ番地を
34 持っているという流れになります。
35
36 プログラムをする際は上のようにシンプルな実装をするが、
37 実際には内部でメタ計算が走っているのが理想ですね
38
39 Gears Agda
40
41 # Gears Agda
42
43 この矢印tが Gears Agda のミソで、
44
45 この定義を見ると、While loop はEnvとCode を受け取ってtを返します。
46
47 この While loop を code Gear に
48 見立てるなら、次に遷移する関数を指定する必要があります
49
50 それがCodeになります。
51 なので、Gears Agda では次に受け取る関数を受け取る用にしていて、それがnextになります。
52
53 このようにして、CbC の継続という概念を
54 矢印tで表現しています。
55
56 (CbCのCodeGear はDataGearをうけとってそれを元に実行することはnextがEnvを受け取って実行すること)
57
58 (CodeGear の実行終了時に、次の CodeGearに
59 DataGearを与えることもnextにEnvを与えていることからわかると思います)
60
61
62 <!-- 実行の文を持ってくるんだっけな -->
63
64 - with 文
65 with文で展開してパターンマッチすることもできる。
66 ここでは less than がそれにあたる
67 0とvarnを比較して
68 false だった場合、trueだった場合をcase文のように
69 書ける
70
71 - `{-# TERMINATING #-}`
72 Agdaが停止性を理解できない場合に、このようにアノテーションすることで停止することを示せます
73
74 # loopの接続
75
76 reduceがあるため、Agdaは
77
78 で、前回のものは最初から構造体(record)に値が格納されている状態から始まっていたので
79 proofGearsTermS では、入力が自然数で、recordの定義から検証を行っている
80
81 そしてそれを行っているのが最初の関数であるwhileTest'で
82 ここでvarnが入力c10と一致し、variが0であることを証明している
83
84 次の関数であるversionでは、whileTest'のrecord定義時のConditionから
85
86 loop時のconditionを生成しています
87
88 - これで Gears Agda にて While Loop を Hoare Logic を使って検証することができた。
89
90 # テストと定理証明の違い
91
92 # 定理証明とモデル検査の違い
93
94 # DPPの実装
95 pidは哲学者をindexで管理するために必要
96 どの哲学者がどのフォークを取るのか決まっているため