SlideShare uma empresa Scribd logo
1 de 28
Baixar para ler offline
有限オートマトンとスティッカー系に関する
Coqによる形式証明について
溝口 佳寛 (九大IMI), 田中 久治 (佐賀大工),
坂下 一生 (九大IMI), 井口 修一 (九大数理)
日本数学会2014年度年会 (学習院大学)
2014年3月16日
訂正後の講演アブストラクトは九大カタログで「形式証明」で検索して下さい.
http://catalog.lib.kyushu-u.ac.jp/ja/
表現・意味・対象 (1)
0
B
B
B
B
B
B
B
B
@
1 27
2 12
3 95
...
...
...
...
99 87
1
C
C
C
C
C
C
C
C
A
0
B
B
B
B
B
B
B
B
@
2 12
51 19
1 27
...
...
...
...
3 95
1
C
C
C
C
C
C
C
C
A
データ空間
Denotation (意味)
for(i = 0; i < n - 1; i++) {
for(j =i+1; j <n ; j++) {
if (x[j]<x[i]){t = x[j];x[j] = x[i];x[i]= t;}
}
}
プログラム
Expression(表現)
• 成績処理
• 商品管理
• 工作機械
• その他
Target (対象)
研究者
実装作業・製作作業
研
究
対
象
表現・意味・対象 (2)
0
B
B
B
B
B
B
B
B
@
1 27
2 12
3 95
...
...
...
...
99 87
1
C
C
C
C
C
C
C
C
A
0
B
B
B
B
B
B
B
B
@
2 12
51 19
1 27
...
...
...
...
3 95
1
C
C
C
C
C
C
C
C
A
データ空間
Denotation (意味)
for(i = 0; i < n - 1; i++) {
for(j =i+1; j < n; j++) {
if (x[j]<x[i]){t = x[j];x[j] = x[i];x[i]= t;}
}
}
プログラム(証明)
Expression(表現)
• 成績処理
• 商品管理
• 工作機械
• その他
Target (対象)
研究者
研究対象
Target (モデルのひとつ)
数学基礎論
証明論・計算理論
ソフトウェア工学
形式仕様記述・ソフトウェア検証
表現・意味・対象 (3)
0
B
B
B
B
B
B
B
B
@
1 27
2 12
3 95
...
...
...
...
99 87
1
C
C
C
C
C
C
C
C
A
0
B
B
B
B
B
B
B
B
@
2 12
51 19
1 27
...
...
...
...
3 95
1
C
C
C
C
C
C
C
C
A
データ空間
Denotation (意味)
for(i = 0; i < n - 1; i++) {
for(j =i+1; j <n>; j++) {
if (x[j]<x[i]){t = x[j];x[j] = x[i];x[i]= t;}
}
}
プログラム(証明)
Expression(表現) 研究者
研究対象
Target (モデルのひとつ)
数学基礎論
証明論・計算理論
ゲーデルの不完全性定理
• Expressionも数学的対象物だが

ゲーデルは自然数 N (因数分解)だけを使った.
• Expressionに文字列Σ*, 数式表現, グラフ構造を

用いたら不完全性定理の証明そのものは簡単になる
• 証明が簡単になっても定理(結果)は変わらない
• 一方, 簡単に証明出来る仕組み(文字列や木構造)を

考えたら別の詳細な定理(結果)を導けるかもしれない
表現・意味・対象 (4)
for(i = 0; i < n - 1; i++) {
for(j =i+1; j <n ; j++) {
if (x[j]<x[i]){t = x[j];x[j] = x[i];x[i]= t;}
}
}
プログラム(証明)
Expression(表現)
• 成績処理
• 商品管理
• 工作機械
• その他
Target (対象)
研究者
研究対象
ソフトウェア工学
形式仕様記述・ソフトウェア検証
高信頼ソフトウェア開発
• 仕様の明確なデータ構造とアルゴリズムを使った

プログラムを作るように心がける.
• 言語を変えても計算結果は変わらない.
• 一方, 再利用可能な構造型プログラム言語を

利用したら別のソフトウェア開発に有用である.
• ソフトウェアの計算結果が正しいことを確認する

ための有効な手段の研究が(分野を問わず)必要.
Curry-Howard同型
• 計算機プログラムと証明の間の対応関係のこと
• 命題を証明する手順とプログラムを作成することとは似ている!

数学が出来る人はプログラミングも出来る人が一般に多い(例外を除く).
• 命題を型と捉え, 証明を型の間のプログラムと考えたときに対応 が得られます.

最初の発見者は数学者 Haskell Curry と論理学者 William Alvin Howard です.
• 型付きλ計算の理論の中に自然に同型関係が含ま れています. 

プログラムであるλ式と証明の間に自然な厳密な1対1の対応があります.
• ここでは Curry-Howard 対応を意識しつつ, Coq証明支援系は

何をしてくれるのか, そもそも 形式的証明を書くということは何なのか, 

証明を書くときに関数型プログラミングの考え方 が活かされるのか, 

など雑多なことをぼんやりと関連付けながら説明します.
キーワード
Curry-Howard同型対応とは
(関数)プログラム = 証明
という対応があるということ.
Coq 実行画面 (Proof General)
命題や証明構成のためのコマンド列
Print文出力
仮定とゴール
出来上がった証明
命題論理の簡単な証明 (1)
Coq で Lemma lm1: (P->(Q->R))->((P->Q)->(P->R)).
を考えます.
f : P -> Q -> R
g : P -> Q
p : P
============================
R
============================
(P -> Q -> R) -> (P -> Q) -> P -> R
move => f g p. (仮定(証明)に名前をつける操作)
• f は P と Q の元から R の元を計算する関数
• g は P の元から Q の元を計算する関数
• p は P の元
Rの元を計算するプログラム(関数)を完成させたい
f : P -> Q -> R
g : P -> Q
p : P
============================
R
Curry-Howard対応の
プログラム(関数)側でゴールを見る
Curry-Howard対応の
命題と証明側でゴールを見る
f : P -> Q -> R
g : P -> Q
p : P
============================
R
• P, Q, R は命題, f, g , p はその証明に対する名前です.
• (f, g, pの名前のついた)これらの命題が解けているとき, 

これらの証明の組合せで R が解けるのではないかと考えます.
(注) 数理論理学では成立する命題そのものを考えて行きますので, f, g, pなどの
名前を考えることは殆どありません. しかし, 既存の証明から新しい証明を構成
するという考え方では既存の証明に名前を付けないと語ることが出来ません.
命題論理の簡単な証明 (2)
Coq で Lemma lm1: (P->(Q->R))->((P->Q)->(P->R)).
を考えます.
f : P -> Q -> R
g : P -> Q
p : P
============================
R
No more subgoals.
apply (f p (g p)). (Rを計算する関数を指定)
示すべくゴールがなくなり, 証明終わり.
(注意) Coqでは(f x y) が f(x)(y) を意味し, (g x) が g(x)を意味します.
命題論理の簡単な証明 (3)
f : P -> Q -> R
g : P -> Q
p : P
============================
R
============================
(P -> Q -> R) -> (P -> Q) -> P -> R
move => f g p. (仮定と結論に分ける操作)
Coq で Lemma lm1: (P->(Q->R))->((P->Q)->(P->R)).
を考えます. 今度は逐次的に証明してみます.
命題論理の簡単な証明 (4)
f : P -> Q -> R
g : P -> Q
p : P
============================
R
apply f.
2 subgoals, subgoal 1 (ID 16)
f : P -> Q -> R
g : P -> Q
p : P
============================
P
!
subgoal 2 (ID 17) is:
Q
Goal(R)を導く証明(f)
を適用してみるとCoq
は, そのために証明しな
いといけない別のGoal
を列挙してくれる.
人間はその新しいGoal
たちを証明する.
命題論理の簡単な証明 (5)
1 subgoals, subgoal 1 (ID 17)
f : P -> Q -> R
g : P -> Q
p : P
============================
Q
apply p.
2 subgoals, subgoal 1 (ID 16)
f : P -> Q -> R
g : P -> Q
p : P
============================
P
!
subgoal 2 (ID 17) is:
Q
命題論理の簡単な証明 (6)
1 subgoals, subgoal 1 (ID 17)
f : P -> Q -> R
g : P -> Q
p : P
============================
Q
apply g.
1 subgoals, subgoal 1 (ID 18)
f : P -> Q -> R
g : P -> Q
p : P
============================
P
命題論理の簡単な証明 (7)
apply p.
1 subgoals, subgoal 1 (ID 18)
f : P -> Q -> R
g : P -> Q
p : P
============================
P
No more subgoals.
Qed.
lm1 is defined
最後にQedを入れて証明を完成する.
命題論理の簡単な証明 (8)
Print lm1 .
lm1 = !
fun (f : P -> Q -> R) (g : P -> Q) (p : P) => f p (g p)!
: (P -> Q -> R) -> (P -> Q) -> P -> R!
lm1 is defined
完成された証明(関数プログラム)は
Printで確認出来る. 

(注) lm1 は関数名, もとい, 証明の名前!
逐次的に操作した結果として (f p (g p)) が構成されている
論理演算子を含む証明 (1)
Coq で Lemma lm2: ((P/Q)->R))->((P/Q)->R).
を考えます.
f : P / Q -> R
pq : P / Q
============================
R
============================
(P / Q -> R) -> P / Q -> R
move => f pq. (仮定(証明)に名前をつける操作)
Curry-Howard同型対応では論理和 P/QはPとQの直和P+Q,
論理積 P/QはPとQの直積 P Qと考える.
直和(colimit)には挿入関数 or_introl: P→P+Q,
直積(limit)には射影関数 proj1: P Q→Pなどがある.
論理演算子を含む証明 (2)
f : P / Q -> R
pq : P / Q
============================
R
apply (f (or_introl (proj1 pq)).
(備忘録) or_introl: P -> P/Q, proj1: P/Q -> P.
No more subgoals.
読みが深い人は1行で証明出来る.
論理演算子を含む証明 (3)
f : P / Q -> R
pq : P / Q
============================
R
elim pq. (/の記号が見えたら試してみたい!)
move => p q. (増えた仮定に名前をつける)
apply f.
left. (/のどちらかを使うとき試してみたい!)
apply p.
No more subgoals.
読みが深くなくてもCoqのコマンドで逐次証明出来る.
復習
Curry-Howard同型対応とは
(関数)プログラム = 証明
という対応があるということ.
既存の証明を組み合わせて, 大きな証明を書くことは
既存の関数プログラムを組み合わせて,
大きな関数プログラムを作ることと同じ.
証明とは, 既存の証明たちの組み合わせ方を書くことである.
有限オートマトンの例 (1)
関数 : Q Q は, q Q, x , w に対して,
(q, ) = q,
(q, xw) = ( (q, x), w),
とすることで, 自然に : Q Q に拡張することが出来る. Coq で を d
と書くとき, を (dstar d) で定義したとする.
このとき, q Q, u, v に対して, 次の補題 dstarLemma
(q, uv) = ( (q, u), v)
を証明したい.
Lemma dstarLemma :
forall d : State -> Symbol -> State,
forall q :State, forall u v : string,
(dstar d q (u ++ v)) = (dstar d (dstar d q u) v).
有限オートマトンの例 (2)
Lemma dstarLemma :
forall d : State -> Symbol -> State, forall
q :State, forall u v : string,
(dstar d q (u ++ v)) = (dstar d (dstar d q u) v).
Proof.
move => d q u v; move :q; elim :u.
by [].
move => a s H q0.
simpl.
by rewrite H.
Qed.
出来上がった証明(関数プログラム)を見る
dstarLemma = !
fun (d : State -> Symbol -> State) (q : State) (u v : string) =>!
(fun!
_evar_0_ : (fun s : string =>!
forall q0 : State,!
dstar d q0 (s ++ v) = dstar d (dstar d q0 s) v) "" =>!
(string_ind!
(fun s : string =>!
forall q0 : State, dstar d q0 (s ++ v) = dstar d (dstar d q0 s) v)!
_evar_0_)^~ u) (fun q0 : State => erefl (dstar d (dstar d q0 "") v))!
(fun (a : ascii) (s : string)!
(H : forall q0 : State, dstar d q0 (s ++ v) = dstar d (dstar d q0 s) v)!
(q0 : State) =>!
(fun!
_evar_0_ : dstar d (dstar d (d q0 a) s) v =!
dstar d (dstar d (d q0 a) s) v =>!
eq_ind_r (eq^~ (dstar d (dstar d (d q0 a) s) v)) _evar_0_ (H (d q0 a)))!
(erefl (dstar d (dstar d (d q0 a) s) v))) q!
: forall (d : State -> Symbol -> State) (q : State) (u v : string),!
dstar d q (u ++ v) = dstar d (dstar d q u) v!
Print dstarLemma .
Rosenbergの結果の検証
Definition 1
Let M = (Q, , , q0, FM ) be an automaton.
Construct the sticker system M = (Q, , A, R) where
• = {(a, a) | a }, A = A1 A2, R = D F, k = |Q| 1,
• A1 = {(x, x, 0, 0) | x L(M), |x| k + 2},
• A2 =
k+1
i=1 {(xu, x, 0, 0) | x k+2 i
, u i
, (0, xu) = i 1},
• D =
k+1
i=1
k+1
j=1 {(( , , 0, 0), (xu, vx, 0, |v|)) | x k+2 i
, u i
,
v j
, (j 1, xu) = i 1}, and
• F =
k+2
i=1
k+1
j=1 {(( , , 0, 0), (x, vx, 0, |v|)) | x i
, v j
,
(j 1, x) = FM }.
Theorem 1 L( R
M1
) = L(M1).
赤の k + 2 の部分を k + 1 として構成したスティッカー系を
R
M と書くことにする. このとき, 要求する条件を満たさないこと,
具体的には以下の定理を Coq で検証した.
今後の課題
• オートマトン理論の形式化の完成
• 組み込みソフトウェア等の検証へ利用
• 情報基礎論・数学基礎論の教材開発
• 数学の形式化の難しい点 :
• 対象物の形式化が一通りではない

(検証応用に有効な形式化の指針が欲しい)
• 証明も一通りではない

(効率の良い証明, 他の検証利用しやすい証明)
• 一般の証明には結構ギャップ(省略)がある

(十分大きなn, 不明瞭な仮定(⃝⃝より明らか)など)
• 具体的な証明の形式化の中で形式証明法の知見を蓄積する
• 一般の形式化の方針を与える形式証明の理論へ発展させる
産業応用に関する話題
Common Criteria (ISO/IEC 15408)
情報技術に関連した製品及びシステムが適切に設計され、その設計が
正しく実装されていることを評価するための国際標準規格.
日本では IPA(独立行政法人情報処理推進機構)が認証を行う.
今後, 高信頼のソフトウエア, 認証評価されたソフトウェアの必要性
はますます増えるでしょう.
本評価基準の最高位の評価保証レベル(EAL7)において形式的検証済
設計, 及びテストが要求されます. EAL5以上は軍用, 政府最高機密機
関向けと言われていましたが, 2012年9月, SONY社が非接触ICカー
ド用チップとしての世界初の認証EAL6+をFeliCaチップで取得し
ました. 高信頼のアプリケーションとして金融・決済用途へ積極的に
市場参入されています.
https://www.ipa.go.jp/security/jisec/about_cc.html
http://www.sony.co.jp/SonyInfo/News/Press/201209/12-133/

Mais conteúdo relacionado

Mais procurados

Rで計量時系列分析~CRANパッケージ総ざらい~
Rで計量時系列分析~CRANパッケージ総ざらい~ Rで計量時系列分析~CRANパッケージ総ざらい~
Rで計量時系列分析~CRANパッケージ総ざらい~ Takashi J OZAKI
 
diffの真髄
diffの真髄diffの真髄
diffの真髄fuku68
 
マーク&スイープ勉強会
マーク&スイープ勉強会マーク&スイープ勉強会
マーク&スイープ勉強会7shi
 
Granger因果による 時系列データの因果推定(因果フェス2015)
Granger因果による時系列データの因果推定(因果フェス2015)Granger因果による時系列データの因果推定(因果フェス2015)
Granger因果による 時系列データの因果推定(因果フェス2015)Takashi J OZAKI
 
AtCoder Regular Contest 030 解説
AtCoder Regular Contest 030 解説AtCoder Regular Contest 030 解説
AtCoder Regular Contest 030 解説AtCoder Inc.
 
JavaScript難読化読経
JavaScript難読化読経JavaScript難読化読経
JavaScript難読化読経Yosuke HASEGAWA
 
定理証明支援系Coqについて
定理証明支援系Coqについて定理証明支援系Coqについて
定理証明支援系CoqについてYoshihiro Mizoguchi
 
卒業論文発表スライド 分割統治法の拡張
卒業論文発表スライド 分割統治法の拡張卒業論文発表スライド 分割統治法の拡張
卒業論文発表スライド 分割統治法の拡張masakazuyamanaka
 
Rによるデータサイエンス:12章「時系列」
Rによるデータサイエンス:12章「時系列」Rによるデータサイエンス:12章「時系列」
Rによるデータサイエンス:12章「時系列」Nagi Teramo
 
pre: 数列で学ぶ初めての CommonLisp #fibonacci
pre: 数列で学ぶ初めての CommonLisp #fibonaccipre: 数列で学ぶ初めての CommonLisp #fibonacci
pre: 数列で学ぶ初めての CommonLisp #fibonaccipgf2alpha
 
LCA and RMQ ~簡潔もあるよ!~
LCA and RMQ ~簡潔もあるよ!~LCA and RMQ ~簡潔もあるよ!~
LCA and RMQ ~簡潔もあるよ!~Yuma Inoue
 
言語処理系入門€9
言語処理系入門€9言語処理系入門€9
言語処理系入門€9Kenta Hattori
 
ClojureではじめるSTM入門
ClojureではじめるSTM入門ClojureではじめるSTM入門
ClojureではじめるSTM入門sohta
 
Goをカンストさせる話
Goをカンストさせる話Goをカンストさせる話
Goをカンストさせる話Moriyoshi Koizumi
 
ゆとりが数週間でC++を始めるようです
ゆとりが数週間でC++を始めるようですゆとりが数週間でC++を始めるようです
ゆとりが数週間でC++を始めるようですEric Sartre
 
数列で学ぶ初めての CommonLisp #fibonacci
数列で学ぶ初めての CommonLisp #fibonacci数列で学ぶ初めての CommonLisp #fibonacci
数列で学ぶ初めての CommonLisp #fibonaccipgf2alpha
 
for関数を使った繰り返し処理によるヒストグラムの一括出力
for関数を使った繰り返し処理によるヒストグラムの一括出力for関数を使った繰り返し処理によるヒストグラムの一括出力
for関数を使った繰り返し処理によるヒストグラムの一括出力imuyaoti
 

Mais procurados (20)

Rで計量時系列分析~CRANパッケージ総ざらい~
Rで計量時系列分析~CRANパッケージ総ざらい~ Rで計量時系列分析~CRANパッケージ総ざらい~
Rで計量時系列分析~CRANパッケージ総ざらい~
 
diffの真髄
diffの真髄diffの真髄
diffの真髄
 
マーク&スイープ勉強会
マーク&スイープ勉強会マーク&スイープ勉強会
マーク&スイープ勉強会
 
Granger因果による 時系列データの因果推定(因果フェス2015)
Granger因果による時系列データの因果推定(因果フェス2015)Granger因果による時系列データの因果推定(因果フェス2015)
Granger因果による 時系列データの因果推定(因果フェス2015)
 
Lazyk
LazykLazyk
Lazyk
 
AtCoder Regular Contest 030 解説
AtCoder Regular Contest 030 解説AtCoder Regular Contest 030 解説
AtCoder Regular Contest 030 解説
 
Coqチュートリアル
CoqチュートリアルCoqチュートリアル
Coqチュートリアル
 
JavaScript難読化読経
JavaScript難読化読経JavaScript難読化読経
JavaScript難読化読経
 
定理証明支援系Coqについて
定理証明支援系Coqについて定理証明支援系Coqについて
定理証明支援系Coqについて
 
卒業論文発表スライド 分割統治法の拡張
卒業論文発表スライド 分割統治法の拡張卒業論文発表スライド 分割統治法の拡張
卒業論文発表スライド 分割統治法の拡張
 
Rによるデータサイエンス:12章「時系列」
Rによるデータサイエンス:12章「時系列」Rによるデータサイエンス:12章「時系列」
Rによるデータサイエンス:12章「時系列」
 
pre: 数列で学ぶ初めての CommonLisp #fibonacci
pre: 数列で学ぶ初めての CommonLisp #fibonaccipre: 数列で学ぶ初めての CommonLisp #fibonacci
pre: 数列で学ぶ初めての CommonLisp #fibonacci
 
LCA and RMQ ~簡潔もあるよ!~
LCA and RMQ ~簡潔もあるよ!~LCA and RMQ ~簡潔もあるよ!~
LCA and RMQ ~簡潔もあるよ!~
 
言語処理系入門€9
言語処理系入門€9言語処理系入門€9
言語処理系入門€9
 
ClojureではじめるSTM入門
ClojureではじめるSTM入門ClojureではじめるSTM入門
ClojureではじめるSTM入門
 
Goをカンストさせる話
Goをカンストさせる話Goをカンストさせる話
Goをカンストさせる話
 
ゆとりが数週間でC++を始めるようです
ゆとりが数週間でC++を始めるようですゆとりが数週間でC++を始めるようです
ゆとりが数週間でC++を始めるようです
 
RMQ クエリ処理
RMQ クエリ処理RMQ クエリ処理
RMQ クエリ処理
 
数列で学ぶ初めての CommonLisp #fibonacci
数列で学ぶ初めての CommonLisp #fibonacci数列で学ぶ初めての CommonLisp #fibonacci
数列で学ぶ初めての CommonLisp #fibonacci
 
for関数を使った繰り返し処理によるヒストグラムの一括出力
for関数を使った繰り返し処理によるヒストグラムの一括出力for関数を使った繰り返し処理によるヒストグラムの一括出力
for関数を使った繰り返し処理によるヒストグラムの一括出力
 

Semelhante a 有限オートマトンとスティッカー系に関するCoqによる形式証明について

Coq 20100208a
Coq 20100208aCoq 20100208a
Coq 20100208atmiya
 
情報検索の基礎(11章)
情報検索の基礎(11章)情報検索の基礎(11章)
情報検索の基礎(11章)Katsuki Tanaka
 
Deep Learning を実装する
Deep Learning を実装するDeep Learning を実装する
Deep Learning を実装するShuhei Iitsuka
 
Sec15 dynamic programming
Sec15 dynamic programmingSec15 dynamic programming
Sec15 dynamic programmingKeisuke OTAKI
 
topology of musical data
topology of musical datatopology of musical data
topology of musical dataTatsuki SHIMIZU
 
Ekmett勉強会発表資料
Ekmett勉強会発表資料Ekmett勉強会発表資料
Ekmett勉強会発表資料時響 逢坂
 
130604 fpgax kibayos
130604 fpgax kibayos130604 fpgax kibayos
130604 fpgax kibayosMikio Yoshida
 
RTミドルウェアによるロボットプログラミング技術 4.ロボットの運動学と制御の基礎(解答)
RTミドルウェアによるロボットプログラミング技術 4.ロボットの運動学と制御の基礎(解答)RTミドルウェアによるロボットプログラミング技術 4.ロボットの運動学と制御の基礎(解答)
RTミドルウェアによるロボットプログラミング技術 4.ロボットの運動学と制御の基礎(解答)Noriaki Ando
 
アルゴリズムイントロダクション15章 動的計画法
アルゴリズムイントロダクション15章 動的計画法アルゴリズムイントロダクション15章 動的計画法
アルゴリズムイントロダクション15章 動的計画法nitoyon
 
Stochastic complexities of reduced rank regression証明概略
 Stochastic complexities of reduced rank regression証明概略 Stochastic complexities of reduced rank regression証明概略
Stochastic complexities of reduced rank regression証明概略Xiangze
 
Delimited Dynamic Binding
Delimited Dynamic BindingDelimited Dynamic Binding
Delimited Dynamic BindingYouyou Cong
 
20190625 OpenACC 講習会 第3部
20190625 OpenACC 講習会 第3部20190625 OpenACC 講習会 第3部
20190625 OpenACC 講習会 第3部NVIDIA Japan
 
[DLHacks]PyTorch, PixyzによるGenerative Query Networkの実装
[DLHacks]PyTorch, PixyzによるGenerative Query Networkの実装 [DLHacks]PyTorch, PixyzによるGenerative Query Networkの実装
[DLHacks]PyTorch, PixyzによるGenerative Query Networkの実装 Deep Learning JP
 

Semelhante a 有限オートマトンとスティッカー系に関するCoqによる形式証明について (20)

Coq 20100208a
Coq 20100208aCoq 20100208a
Coq 20100208a
 
情報検索の基礎(11章)
情報検索の基礎(11章)情報検索の基礎(11章)
情報検索の基礎(11章)
 
20180728 halide-study
20180728 halide-study20180728 halide-study
20180728 halide-study
 
汎化性能測定
汎化性能測定汎化性能測定
汎化性能測定
 
C07
C07C07
C07
 
R intro
R introR intro
R intro
 
Deep Learning を実装する
Deep Learning を実装するDeep Learning を実装する
Deep Learning を実装する
 
Sec15 dynamic programming
Sec15 dynamic programmingSec15 dynamic programming
Sec15 dynamic programming
 
topology of musical data
topology of musical datatopology of musical data
topology of musical data
 
NLPforml5
NLPforml5NLPforml5
NLPforml5
 
HiRoshimaR3_IntroR
HiRoshimaR3_IntroRHiRoshimaR3_IntroR
HiRoshimaR3_IntroR
 
Topic model
Topic modelTopic model
Topic model
 
Ekmett勉強会発表資料
Ekmett勉強会発表資料Ekmett勉強会発表資料
Ekmett勉強会発表資料
 
130604 fpgax kibayos
130604 fpgax kibayos130604 fpgax kibayos
130604 fpgax kibayos
 
RTミドルウェアによるロボットプログラミング技術 4.ロボットの運動学と制御の基礎(解答)
RTミドルウェアによるロボットプログラミング技術 4.ロボットの運動学と制御の基礎(解答)RTミドルウェアによるロボットプログラミング技術 4.ロボットの運動学と制御の基礎(解答)
RTミドルウェアによるロボットプログラミング技術 4.ロボットの運動学と制御の基礎(解答)
 
アルゴリズムイントロダクション15章 動的計画法
アルゴリズムイントロダクション15章 動的計画法アルゴリズムイントロダクション15章 動的計画法
アルゴリズムイントロダクション15章 動的計画法
 
Stochastic complexities of reduced rank regression証明概略
 Stochastic complexities of reduced rank regression証明概略 Stochastic complexities of reduced rank regression証明概略
Stochastic complexities of reduced rank regression証明概略
 
Delimited Dynamic Binding
Delimited Dynamic BindingDelimited Dynamic Binding
Delimited Dynamic Binding
 
20190625 OpenACC 講習会 第3部
20190625 OpenACC 講習会 第3部20190625 OpenACC 講習会 第3部
20190625 OpenACC 講習会 第3部
 
[DLHacks]PyTorch, PixyzによるGenerative Query Networkの実装
[DLHacks]PyTorch, PixyzによるGenerative Query Networkの実装 [DLHacks]PyTorch, PixyzによるGenerative Query Networkの実装
[DLHacks]PyTorch, PixyzによるGenerative Query Networkの実装
 

Mais de Yoshihiro Mizoguchi

DockerでAlmaLinux(web, php, pukiwiki)環境構築
DockerでAlmaLinux(web, php, pukiwiki)環境構築DockerでAlmaLinux(web, php, pukiwiki)環境構築
DockerでAlmaLinux(web, php, pukiwiki)環境構築Yoshihiro Mizoguchi
 
DockerでCoq インストール
DockerでCoq インストールDockerでCoq インストール
DockerでCoq インストールYoshihiro Mizoguchi
 
Homebrewによるソフトウェアの実装 (3)
Homebrewによるソフトウェアの実装 (3)Homebrewによるソフトウェアの実装 (3)
Homebrewによるソフトウェアの実装 (3)Yoshihiro Mizoguchi
 
Homebrewによるソフトウェアの実装 (2)
Homebrewによるソフトウェアの実装 (2)Homebrewによるソフトウェアの実装 (2)
Homebrewによるソフトウェアの実装 (2)Yoshihiro Mizoguchi
 
Homebrewによるソフトウェアの実装(1)
Homebrewによるソフトウェアの実装(1)Homebrewによるソフトウェアの実装(1)
Homebrewによるソフトウェアの実装(1)Yoshihiro Mizoguchi
 
Overleafを使った文書作成
Overleafを使った文書作成Overleafを使った文書作成
Overleafを使った文書作成Yoshihiro Mizoguchi
 
Symbolic Computations in Conformal Geometric Algebra for Three Dimensional O...
Symbolic Computations in Conformal Geometric Algebra for Three Dimensional  O...Symbolic Computations in Conformal Geometric Algebra for Three Dimensional  O...
Symbolic Computations in Conformal Geometric Algebra for Three Dimensional O...Yoshihiro Mizoguchi
 
Theory of Relational Calculus and its Formalization
Theory of Relational Calculus and its FormalizationTheory of Relational Calculus and its Formalization
Theory of Relational Calculus and its FormalizationYoshihiro Mizoguchi
 
数式処理ソフトMathematicaで数学の問題を解く
数式処理ソフトMathematicaで数学の問題を解く数式処理ソフトMathematicaで数学の問題を解く
数式処理ソフトMathematicaで数学の問題を解くYoshihiro Mizoguchi
 
Verification of a brick wang tiling algorithm
Verification of a brick wang tiling algorithmVerification of a brick wang tiling algorithm
Verification of a brick wang tiling algorithmYoshihiro Mizoguchi
 
計算機を用いて数学の問題を解くということ
計算機を用いて数学の問題を解くということ計算機を用いて数学の問題を解くということ
計算機を用いて数学の問題を解くということYoshihiro Mizoguchi
 
A Coq Library for the Theory of Relational Calculus
A Coq Library for the Theory of Relational CalculusA Coq Library for the Theory of Relational Calculus
A Coq Library for the Theory of Relational CalculusYoshihiro Mizoguchi
 
Algebras for programming languages
Algebras for programming languagesAlgebras for programming languages
Algebras for programming languagesYoshihiro Mizoguchi
 
Coq関係計算ライブラリの開発と写像の性質の証明
Coq関係計算ライブラリの開発と写像の性質の証明Coq関係計算ライブラリの開発と写像の性質の証明
Coq関係計算ライブラリの開発と写像の性質の証明Yoshihiro Mizoguchi
 
Mac bookでwebサーバーを起動する方法
Mac bookでwebサーバーを起動する方法Mac bookでwebサーバーを起動する方法
Mac bookでwebサーバーを起動する方法Yoshihiro Mizoguchi
 
複素数・四元数と図形の回転
複素数・四元数と図形の回転複素数・四元数と図形の回転
複素数・四元数と図形の回転Yoshihiro Mizoguchi
 
グラフデータ構造と5色定理
グラフデータ構造と5色定理グラフデータ構造と5色定理
グラフデータ構造と5色定理Yoshihiro Mizoguchi
 

Mais de Yoshihiro Mizoguchi (20)

DockerでAlmaLinux(web, php, pukiwiki)環境構築
DockerでAlmaLinux(web, php, pukiwiki)環境構築DockerでAlmaLinux(web, php, pukiwiki)環境構築
DockerでAlmaLinux(web, php, pukiwiki)環境構築
 
DockerでCoq インストール
DockerでCoq インストールDockerでCoq インストール
DockerでCoq インストール
 
Homebrewによるソフトウェアの実装 (3)
Homebrewによるソフトウェアの実装 (3)Homebrewによるソフトウェアの実装 (3)
Homebrewによるソフトウェアの実装 (3)
 
Homebrewによるソフトウェアの実装 (2)
Homebrewによるソフトウェアの実装 (2)Homebrewによるソフトウェアの実装 (2)
Homebrewによるソフトウェアの実装 (2)
 
Homebrewによるソフトウェアの実装(1)
Homebrewによるソフトウェアの実装(1)Homebrewによるソフトウェアの実装(1)
Homebrewによるソフトウェアの実装(1)
 
Overleafを使った文書作成
Overleafを使った文書作成Overleafを使った文書作成
Overleafを使った文書作成
 
Amazon AWSの使い方
Amazon AWSの使い方Amazon AWSの使い方
Amazon AWSの使い方
 
ShareLaTeXの使い方
ShareLaTeXの使い方ShareLaTeXの使い方
ShareLaTeXの使い方
 
Symbolic Computations in Conformal Geometric Algebra for Three Dimensional O...
Symbolic Computations in Conformal Geometric Algebra for Three Dimensional  O...Symbolic Computations in Conformal Geometric Algebra for Three Dimensional  O...
Symbolic Computations in Conformal Geometric Algebra for Three Dimensional O...
 
Theory of Relational Calculus and its Formalization
Theory of Relational Calculus and its FormalizationTheory of Relational Calculus and its Formalization
Theory of Relational Calculus and its Formalization
 
数式処理ソフトMathematicaで数学の問題を解く
数式処理ソフトMathematicaで数学の問題を解く数式処理ソフトMathematicaで数学の問題を解く
数式処理ソフトMathematicaで数学の問題を解く
 
Verification of a brick wang tiling algorithm
Verification of a brick wang tiling algorithmVerification of a brick wang tiling algorithm
Verification of a brick wang tiling algorithm
 
計算機を用いて数学の問題を解くということ
計算機を用いて数学の問題を解くということ計算機を用いて数学の問題を解くということ
計算機を用いて数学の問題を解くということ
 
A Coq Library for the Theory of Relational Calculus
A Coq Library for the Theory of Relational CalculusA Coq Library for the Theory of Relational Calculus
A Coq Library for the Theory of Relational Calculus
 
Algebras for programming languages
Algebras for programming languagesAlgebras for programming languages
Algebras for programming languages
 
Coq関係計算ライブラリの開発と写像の性質の証明
Coq関係計算ライブラリの開発と写像の性質の証明Coq関係計算ライブラリの開発と写像の性質の証明
Coq関係計算ライブラリの開発と写像の性質の証明
 
Mac bookでwebサーバーを起動する方法
Mac bookでwebサーバーを起動する方法Mac bookでwebサーバーを起動する方法
Mac bookでwebサーバーを起動する方法
 
計算可能実数とは
計算可能実数とは計算可能実数とは
計算可能実数とは
 
複素数・四元数と図形の回転
複素数・四元数と図形の回転複素数・四元数と図形の回転
複素数・四元数と図形の回転
 
グラフデータ構造と5色定理
グラフデータ構造と5色定理グラフデータ構造と5色定理
グラフデータ構造と5色定理
 

Último

TEAMIN Service overview for customer_20240422.pdf
TEAMIN Service overview for customer_20240422.pdfTEAMIN Service overview for customer_20240422.pdf
TEAMIN Service overview for customer_20240422.pdfyukisuga3
 
東京工業大学 環境・社会理工学院 建築学系 大学院入学入試・進学説明会2024_v2
東京工業大学 環境・社会理工学院 建築学系 大学院入学入試・進学説明会2024_v2東京工業大学 環境・社会理工学院 建築学系 大学院入学入試・進学説明会2024_v2
東京工業大学 環境・社会理工学院 建築学系 大学院入学入試・進学説明会2024_v2Tokyo Institute of Technology
 
The_Five_Books_Overview_Presentation_2024
The_Five_Books_Overview_Presentation_2024The_Five_Books_Overview_Presentation_2024
The_Five_Books_Overview_Presentation_2024koheioishi1
 
UniProject Workshop Make a Discord Bot with JavaScript
UniProject Workshop Make a Discord Bot with JavaScriptUniProject Workshop Make a Discord Bot with JavaScript
UniProject Workshop Make a Discord Bot with JavaScriptyuitoakatsukijp
 
ゲーム理論 BASIC 演習105 -n人囚人のジレンマモデル- #ゲーム理論 #gametheory #数学
ゲーム理論 BASIC 演習105 -n人囚人のジレンマモデル- #ゲーム理論 #gametheory #数学ゲーム理論 BASIC 演習105 -n人囚人のジレンマモデル- #ゲーム理論 #gametheory #数学
ゲーム理論 BASIC 演習105 -n人囚人のジレンマモデル- #ゲーム理論 #gametheory #数学ssusere0a682
 
TokyoTechGraduateExaminationPresentation
TokyoTechGraduateExaminationPresentationTokyoTechGraduateExaminationPresentation
TokyoTechGraduateExaminationPresentationYukiTerazawa
 

Último (6)

TEAMIN Service overview for customer_20240422.pdf
TEAMIN Service overview for customer_20240422.pdfTEAMIN Service overview for customer_20240422.pdf
TEAMIN Service overview for customer_20240422.pdf
 
東京工業大学 環境・社会理工学院 建築学系 大学院入学入試・進学説明会2024_v2
東京工業大学 環境・社会理工学院 建築学系 大学院入学入試・進学説明会2024_v2東京工業大学 環境・社会理工学院 建築学系 大学院入学入試・進学説明会2024_v2
東京工業大学 環境・社会理工学院 建築学系 大学院入学入試・進学説明会2024_v2
 
The_Five_Books_Overview_Presentation_2024
The_Five_Books_Overview_Presentation_2024The_Five_Books_Overview_Presentation_2024
The_Five_Books_Overview_Presentation_2024
 
UniProject Workshop Make a Discord Bot with JavaScript
UniProject Workshop Make a Discord Bot with JavaScriptUniProject Workshop Make a Discord Bot with JavaScript
UniProject Workshop Make a Discord Bot with JavaScript
 
ゲーム理論 BASIC 演習105 -n人囚人のジレンマモデル- #ゲーム理論 #gametheory #数学
ゲーム理論 BASIC 演習105 -n人囚人のジレンマモデル- #ゲーム理論 #gametheory #数学ゲーム理論 BASIC 演習105 -n人囚人のジレンマモデル- #ゲーム理論 #gametheory #数学
ゲーム理論 BASIC 演習105 -n人囚人のジレンマモデル- #ゲーム理論 #gametheory #数学
 
TokyoTechGraduateExaminationPresentation
TokyoTechGraduateExaminationPresentationTokyoTechGraduateExaminationPresentation
TokyoTechGraduateExaminationPresentation
 

有限オートマトンとスティッカー系に関するCoqによる形式証明について

  • 1. 有限オートマトンとスティッカー系に関する Coqによる形式証明について 溝口 佳寛 (九大IMI), 田中 久治 (佐賀大工), 坂下 一生 (九大IMI), 井口 修一 (九大数理) 日本数学会2014年度年会 (学習院大学) 2014年3月16日 訂正後の講演アブストラクトは九大カタログで「形式証明」で検索して下さい. http://catalog.lib.kyushu-u.ac.jp/ja/
  • 2. 表現・意味・対象 (1) 0 B B B B B B B B @ 1 27 2 12 3 95 ... ... ... ... 99 87 1 C C C C C C C C A 0 B B B B B B B B @ 2 12 51 19 1 27 ... ... ... ... 3 95 1 C C C C C C C C A データ空間 Denotation (意味) for(i = 0; i < n - 1; i++) { for(j =i+1; j <n ; j++) { if (x[j]<x[i]){t = x[j];x[j] = x[i];x[i]= t;} } } プログラム Expression(表現) • 成績処理 • 商品管理 • 工作機械 • その他 Target (対象) 研究者 実装作業・製作作業 研 究 対 象
  • 3. 表現・意味・対象 (2) 0 B B B B B B B B @ 1 27 2 12 3 95 ... ... ... ... 99 87 1 C C C C C C C C A 0 B B B B B B B B @ 2 12 51 19 1 27 ... ... ... ... 3 95 1 C C C C C C C C A データ空間 Denotation (意味) for(i = 0; i < n - 1; i++) { for(j =i+1; j < n; j++) { if (x[j]<x[i]){t = x[j];x[j] = x[i];x[i]= t;} } } プログラム(証明) Expression(表現) • 成績処理 • 商品管理 • 工作機械 • その他 Target (対象) 研究者 研究対象 Target (モデルのひとつ) 数学基礎論 証明論・計算理論 ソフトウェア工学 形式仕様記述・ソフトウェア検証
  • 4. 表現・意味・対象 (3) 0 B B B B B B B B @ 1 27 2 12 3 95 ... ... ... ... 99 87 1 C C C C C C C C A 0 B B B B B B B B @ 2 12 51 19 1 27 ... ... ... ... 3 95 1 C C C C C C C C A データ空間 Denotation (意味) for(i = 0; i < n - 1; i++) { for(j =i+1; j <n>; j++) { if (x[j]<x[i]){t = x[j];x[j] = x[i];x[i]= t;} } } プログラム(証明) Expression(表現) 研究者 研究対象 Target (モデルのひとつ) 数学基礎論 証明論・計算理論 ゲーデルの不完全性定理 • Expressionも数学的対象物だが
 ゲーデルは自然数 N (因数分解)だけを使った. • Expressionに文字列Σ*, 数式表現, グラフ構造を
 用いたら不完全性定理の証明そのものは簡単になる • 証明が簡単になっても定理(結果)は変わらない • 一方, 簡単に証明出来る仕組み(文字列や木構造)を
 考えたら別の詳細な定理(結果)を導けるかもしれない
  • 5. 表現・意味・対象 (4) for(i = 0; i < n - 1; i++) { for(j =i+1; j <n ; j++) { if (x[j]<x[i]){t = x[j];x[j] = x[i];x[i]= t;} } } プログラム(証明) Expression(表現) • 成績処理 • 商品管理 • 工作機械 • その他 Target (対象) 研究者 研究対象 ソフトウェア工学 形式仕様記述・ソフトウェア検証 高信頼ソフトウェア開発 • 仕様の明確なデータ構造とアルゴリズムを使った
 プログラムを作るように心がける. • 言語を変えても計算結果は変わらない. • 一方, 再利用可能な構造型プログラム言語を
 利用したら別のソフトウェア開発に有用である. • ソフトウェアの計算結果が正しいことを確認する
 ための有効な手段の研究が(分野を問わず)必要.
  • 6. Curry-Howard同型 • 計算機プログラムと証明の間の対応関係のこと • 命題を証明する手順とプログラムを作成することとは似ている!
 数学が出来る人はプログラミングも出来る人が一般に多い(例外を除く). • 命題を型と捉え, 証明を型の間のプログラムと考えたときに対応 が得られます.
 最初の発見者は数学者 Haskell Curry と論理学者 William Alvin Howard です. • 型付きλ計算の理論の中に自然に同型関係が含ま れています. 
 プログラムであるλ式と証明の間に自然な厳密な1対1の対応があります. • ここでは Curry-Howard 対応を意識しつつ, Coq証明支援系は
 何をしてくれるのか, そもそも 形式的証明を書くということは何なのか, 
 証明を書くときに関数型プログラミングの考え方 が活かされるのか, 
 など雑多なことをぼんやりと関連付けながら説明します.
  • 8. Coq 実行画面 (Proof General) 命題や証明構成のためのコマンド列 Print文出力 仮定とゴール 出来上がった証明
  • 9. 命題論理の簡単な証明 (1) Coq で Lemma lm1: (P->(Q->R))->((P->Q)->(P->R)). を考えます. f : P -> Q -> R g : P -> Q p : P ============================ R ============================ (P -> Q -> R) -> (P -> Q) -> P -> R move => f g p. (仮定(証明)に名前をつける操作)
  • 10. • f は P と Q の元から R の元を計算する関数 • g は P の元から Q の元を計算する関数 • p は P の元 Rの元を計算するプログラム(関数)を完成させたい f : P -> Q -> R g : P -> Q p : P ============================ R Curry-Howard対応の プログラム(関数)側でゴールを見る
  • 11. Curry-Howard対応の 命題と証明側でゴールを見る f : P -> Q -> R g : P -> Q p : P ============================ R • P, Q, R は命題, f, g , p はその証明に対する名前です. • (f, g, pの名前のついた)これらの命題が解けているとき, 
 これらの証明の組合せで R が解けるのではないかと考えます. (注) 数理論理学では成立する命題そのものを考えて行きますので, f, g, pなどの 名前を考えることは殆どありません. しかし, 既存の証明から新しい証明を構成 するという考え方では既存の証明に名前を付けないと語ることが出来ません.
  • 12. 命題論理の簡単な証明 (2) Coq で Lemma lm1: (P->(Q->R))->((P->Q)->(P->R)). を考えます. f : P -> Q -> R g : P -> Q p : P ============================ R No more subgoals. apply (f p (g p)). (Rを計算する関数を指定) 示すべくゴールがなくなり, 証明終わり. (注意) Coqでは(f x y) が f(x)(y) を意味し, (g x) が g(x)を意味します.
  • 13. 命題論理の簡単な証明 (3) f : P -> Q -> R g : P -> Q p : P ============================ R ============================ (P -> Q -> R) -> (P -> Q) -> P -> R move => f g p. (仮定と結論に分ける操作) Coq で Lemma lm1: (P->(Q->R))->((P->Q)->(P->R)). を考えます. 今度は逐次的に証明してみます.
  • 14. 命題論理の簡単な証明 (4) f : P -> Q -> R g : P -> Q p : P ============================ R apply f. 2 subgoals, subgoal 1 (ID 16) f : P -> Q -> R g : P -> Q p : P ============================ P ! subgoal 2 (ID 17) is: Q Goal(R)を導く証明(f) を適用してみるとCoq は, そのために証明しな いといけない別のGoal を列挙してくれる. 人間はその新しいGoal たちを証明する.
  • 15. 命題論理の簡単な証明 (5) 1 subgoals, subgoal 1 (ID 17) f : P -> Q -> R g : P -> Q p : P ============================ Q apply p. 2 subgoals, subgoal 1 (ID 16) f : P -> Q -> R g : P -> Q p : P ============================ P ! subgoal 2 (ID 17) is: Q
  • 16. 命題論理の簡単な証明 (6) 1 subgoals, subgoal 1 (ID 17) f : P -> Q -> R g : P -> Q p : P ============================ Q apply g. 1 subgoals, subgoal 1 (ID 18) f : P -> Q -> R g : P -> Q p : P ============================ P
  • 17. 命題論理の簡単な証明 (7) apply p. 1 subgoals, subgoal 1 (ID 18) f : P -> Q -> R g : P -> Q p : P ============================ P No more subgoals. Qed. lm1 is defined 最後にQedを入れて証明を完成する.
  • 18. 命題論理の簡単な証明 (8) Print lm1 . lm1 = ! fun (f : P -> Q -> R) (g : P -> Q) (p : P) => f p (g p)! : (P -> Q -> R) -> (P -> Q) -> P -> R! lm1 is defined 完成された証明(関数プログラム)は Printで確認出来る. 
 (注) lm1 は関数名, もとい, 証明の名前! 逐次的に操作した結果として (f p (g p)) が構成されている
  • 19. 論理演算子を含む証明 (1) Coq で Lemma lm2: ((P/Q)->R))->((P/Q)->R). を考えます. f : P / Q -> R pq : P / Q ============================ R ============================ (P / Q -> R) -> P / Q -> R move => f pq. (仮定(証明)に名前をつける操作) Curry-Howard同型対応では論理和 P/QはPとQの直和P+Q, 論理積 P/QはPとQの直積 P Qと考える. 直和(colimit)には挿入関数 or_introl: P→P+Q, 直積(limit)には射影関数 proj1: P Q→Pなどがある.
  • 20. 論理演算子を含む証明 (2) f : P / Q -> R pq : P / Q ============================ R apply (f (or_introl (proj1 pq)). (備忘録) or_introl: P -> P/Q, proj1: P/Q -> P. No more subgoals. 読みが深い人は1行で証明出来る.
  • 21. 論理演算子を含む証明 (3) f : P / Q -> R pq : P / Q ============================ R elim pq. (/の記号が見えたら試してみたい!) move => p q. (増えた仮定に名前をつける) apply f. left. (/のどちらかを使うとき試してみたい!) apply p. No more subgoals. 読みが深くなくてもCoqのコマンドで逐次証明出来る.
  • 22. 復習 Curry-Howard同型対応とは (関数)プログラム = 証明 という対応があるということ. 既存の証明を組み合わせて, 大きな証明を書くことは 既存の関数プログラムを組み合わせて, 大きな関数プログラムを作ることと同じ. 証明とは, 既存の証明たちの組み合わせ方を書くことである.
  • 23. 有限オートマトンの例 (1) 関数 : Q Q は, q Q, x , w に対して, (q, ) = q, (q, xw) = ( (q, x), w), とすることで, 自然に : Q Q に拡張することが出来る. Coq で を d と書くとき, を (dstar d) で定義したとする. このとき, q Q, u, v に対して, 次の補題 dstarLemma (q, uv) = ( (q, u), v) を証明したい. Lemma dstarLemma : forall d : State -> Symbol -> State, forall q :State, forall u v : string, (dstar d q (u ++ v)) = (dstar d (dstar d q u) v).
  • 24. 有限オートマトンの例 (2) Lemma dstarLemma : forall d : State -> Symbol -> State, forall q :State, forall u v : string, (dstar d q (u ++ v)) = (dstar d (dstar d q u) v). Proof. move => d q u v; move :q; elim :u. by []. move => a s H q0. simpl. by rewrite H. Qed.
  • 25. 出来上がった証明(関数プログラム)を見る dstarLemma = ! fun (d : State -> Symbol -> State) (q : State) (u v : string) =>! (fun! _evar_0_ : (fun s : string =>! forall q0 : State,! dstar d q0 (s ++ v) = dstar d (dstar d q0 s) v) "" =>! (string_ind! (fun s : string =>! forall q0 : State, dstar d q0 (s ++ v) = dstar d (dstar d q0 s) v)! _evar_0_)^~ u) (fun q0 : State => erefl (dstar d (dstar d q0 "") v))! (fun (a : ascii) (s : string)! (H : forall q0 : State, dstar d q0 (s ++ v) = dstar d (dstar d q0 s) v)! (q0 : State) =>! (fun! _evar_0_ : dstar d (dstar d (d q0 a) s) v =! dstar d (dstar d (d q0 a) s) v =>! eq_ind_r (eq^~ (dstar d (dstar d (d q0 a) s) v)) _evar_0_ (H (d q0 a)))! (erefl (dstar d (dstar d (d q0 a) s) v))) q! : forall (d : State -> Symbol -> State) (q : State) (u v : string),! dstar d q (u ++ v) = dstar d (dstar d q u) v! Print dstarLemma .
  • 26. Rosenbergの結果の検証 Definition 1 Let M = (Q, , , q0, FM ) be an automaton. Construct the sticker system M = (Q, , A, R) where • = {(a, a) | a }, A = A1 A2, R = D F, k = |Q| 1, • A1 = {(x, x, 0, 0) | x L(M), |x| k + 2}, • A2 = k+1 i=1 {(xu, x, 0, 0) | x k+2 i , u i , (0, xu) = i 1}, • D = k+1 i=1 k+1 j=1 {(( , , 0, 0), (xu, vx, 0, |v|)) | x k+2 i , u i , v j , (j 1, xu) = i 1}, and • F = k+2 i=1 k+1 j=1 {(( , , 0, 0), (x, vx, 0, |v|)) | x i , v j , (j 1, x) = FM }. Theorem 1 L( R M1 ) = L(M1). 赤の k + 2 の部分を k + 1 として構成したスティッカー系を R M と書くことにする. このとき, 要求する条件を満たさないこと, 具体的には以下の定理を Coq で検証した.
  • 27. 今後の課題 • オートマトン理論の形式化の完成 • 組み込みソフトウェア等の検証へ利用 • 情報基礎論・数学基礎論の教材開発 • 数学の形式化の難しい点 : • 対象物の形式化が一通りではない
 (検証応用に有効な形式化の指針が欲しい) • 証明も一通りではない
 (効率の良い証明, 他の検証利用しやすい証明) • 一般の証明には結構ギャップ(省略)がある
 (十分大きなn, 不明瞭な仮定(⃝⃝より明らか)など) • 具体的な証明の形式化の中で形式証明法の知見を蓄積する • 一般の形式化の方針を与える形式証明の理論へ発展させる
  • 28. 産業応用に関する話題 Common Criteria (ISO/IEC 15408) 情報技術に関連した製品及びシステムが適切に設計され、その設計が 正しく実装されていることを評価するための国際標準規格. 日本では IPA(独立行政法人情報処理推進機構)が認証を行う. 今後, 高信頼のソフトウエア, 認証評価されたソフトウェアの必要性 はますます増えるでしょう. 本評価基準の最高位の評価保証レベル(EAL7)において形式的検証済 設計, 及びテストが要求されます. EAL5以上は軍用, 政府最高機密機 関向けと言われていましたが, 2012年9月, SONY社が非接触ICカー ド用チップとしての世界初の認証EAL6+をFeliCaチップで取得し ました. 高信頼のアプリケーションとして金融・決済用途へ積極的に 市場参入されています. https://www.ipa.go.jp/security/jisec/about_cc.html http://www.sony.co.jp/SonyInfo/News/Press/201209/12-133/