comparison slide/slide.md @ 12:62e56d73f104

WIP カンペを追加 14ページまで
author soto <soto@cr.ie.u-ryukyu.ac.jp>
date Fri, 07 Jan 2022 00:58:07 +0900
parents 8a97e69f8615
children 76c3378c61dc
comparison
equal deleted inserted replaced
11:8a97e69f8615 12:62e56d73f104
74 74
75 75
76 # Agda の基本 76 # Agda の基本
77 - Agdaとは定理証明支援器であり、関数型言語 77 - Agdaとは定理証明支援器であり、関数型言語
78 - Agdaでの関数は、最初に型について定義した後に、関数を定義する事で記述する 78 - Agdaでの関数は、最初に型について定義した後に、関数を定義する事で記述する
79 - これが Curry-Howard 対応となる
80 - 型の定義部分で、入力と出力の型を定義できる 79 - 型の定義部分で、入力と出力の型を定義できる
81 - input → output のようになる 80 - input → output のようになる
82 - 関数の定義は = を用いて行う 81 - 関数の定義は = を用いて行う
83 - 関数名の後、 = の前で受け取る引数を記述します 82 - 関数名の後、 = の前で受け取る引数を記述します
84 83
102 open Env 101 open Env
103 ``` 102 ```
104 103
105 型に対応する値の導入(intro) 104 型に対応する値の導入(intro)
106 ``` 105 ```
107 record {varx = zero ; vary = suc zero} 106 record {varn = zero ; vari = suc zero}
108 ``` 107 ```
109 record の値のアクセス(elim) 108 record の値のアクセス(elim)
110 ``` 109 ```
111 (env : Env) → varx env 110 (env : Env) → varn env
112 ``` 111 ```
113 112
114 113
115 114
116 # Gears Agda の記法 115 # Gears Agda の記法
117 Gears Agda では CbC と対応させるためにすべてLoopで記述する 116 Gears Agda では CbC と対応させるためにすべてLoopで記述する
118 loopは`→ t`の形式で表現する 117 loopは`→ t`の形式で表現する
119 再起呼び出しは使わない(構文的には禁止していないので注意が必要) 118 再帰呼び出しは使わない(構文的には禁止していないので注意が必要)
120 ``` 119 ```
121 {-# TERMINATING #-} 120 {-# TERMINATING #-}
122 whileLoop : {l : Level} {t : Set l} → Env → (Code : Env → t) → t 121 whileLoop : {l : Level} {t : Set l} → Env → (Code : Env → t) → t
123 whileLoop env next with lt 0 (varn env) 122 whileLoop env next with lt 0 (varn env)
124 whileLoop env next | false = next env 123 whileLoop env next | false = next env
172 whileLoop env next | false = next env 171 whileLoop env next | false = next env
173 whileLoop env next | true = whileLoop (record {varn = (varn env) - 1 ; vari = (vari env) + 1}) next 172 whileLoop env next | true = whileLoop (record {varn = (varn env) - 1 ; vari = (vari env) + 1}) next
174 ``` 173 ```
175 - `{-# TERMINATING #-}` 174 - `{-# TERMINATING #-}`
176 - with 文 175 - with 文
177 - 型と値
178 176
179 # Gears Agda の Pre Condition Post Condition 177 # Gears Agda の Pre Condition Post Condition
180 ``` 178 ```
181 whileLoopSeg : {l : Level} {t : Set l} → {c10 : N } → (env : Env) → (varn env + vari env ≡ c10) 179 whileLoopSeg : {l : Level} {t : Set l} → {c10 : N } → (env : Env) → (varn env + vari env ≡ c10)
182 → (next : (e1 : Env )→ varn e1 + vari e1 ≡ c10 → varn e1 < varn env → t) 180 → (next : (e1 : Env )→ varn e1 + vari e1 ≡ c10 → varn e1 < varn env → t)
218 proofGearsTermS {c10} = whileTest' {_} {_} {c10} (λ n p → conversion1 n p (λ n1 p1 → 216 proofGearsTermS {c10} = whileTest' {_} {_} {c10} (λ n p → conversion1 n p (λ n1 p1 →
219 TerminatingLoopS Env (λ env → varn env)(λ n2 p2 loop → whileLoopSeg {_} {_} {c10} n2 p2 loop 217 TerminatingLoopS Env (λ env → varn env)(λ n2 p2 loop → whileLoopSeg {_} {_} {c10} n2 p2 loop
220 (λ ne pe → whileTestSpec1 c10 ne pe)) n1 p1 )) 218 (λ ne pe → whileTestSpec1 c10 ne pe)) n1 p1 ))
221 ``` 219 ```
222 - conversion1はPre Condition をPost Conditionに変換する 220 - conversion1はPre Condition をPost Conditionに変換する
223 - whileLoopSeg
224 - ⊤ 221 - ⊤
225 222
226 # test との違い 223 # test との違い
227 - test では実数を与えた際の出力が仕様に沿ったものであるかを検証する 224 - test では実数を与えた際の出力が仕様に沿ったものであるかを検証する
228 - コーナーケースで仕様に沿った動きをしていない場合を考慮できない 225 - コーナーケースで仕様に沿った動きをしていない場合を考慮できない
443 # 今後の研究方針 440 # 今後の研究方針
444 - Deleteの実装 441 - Deleteの実装
445 - Red Black Tree の実装 442 - Red Black Tree の実装
446 - 今回定義した条件はそのまま Red Black Tree の検証に使用できるはず 443 - 今回定義した条件はそのまま Red Black Tree の検証に使用できるはず
447 - Contextを用いた並列実行時のプログラムの正しさの証明 444 - Contextを用いた並列実行時のプログラムの正しさの証明
448 - syncronized queue 445 - synchronized queue
449 - concarent tree 446 - concurrent tree
450 - xv.6への適用 447 - xv.6への適用
451 - モデル検査 448 - モデル検査
452 449
450 読めない間は待っている
451 tree
452
453 # まとめ 453 # まとめ
454 - Gears Agda にて Binary Tree を検証することができた 454 - Gears Agda にて Binary Tree を検証することができた
455 - Gears Agda における Termination を使用しない実装の仕方を確率した 455 - Gears Agda における Termination を使用しない実装の仕方を確立した
456 - Hoare Logic による検証もできるようになった 456 - Hoare Logic による検証もできるようになった
457 - 今後は Red Black Tree の検証をすすめる 457 - 今後は Red Black Tree の検証をすすめる
458 - モデル検査をしたい 458 - モデル検査をしたい
459 459
460 <!-- 英語版も欲しい--> 460 <!-- 英語版も欲しい-->