ソフトウェア基礎科学 授業資料 : 論理関係 (logical relations) のお話

17
ソソソソソソソソソソ ソソソソ : ソソソソ (logical relations) ソソ 2006/1/13 住住 住住住

Upload: corbin

Post on 09-Jan-2016

37 views

Category:

Documents


3 download

DESCRIPTION

ソフトウェア基礎科学 授業資料 : 論理関係 (logical relations) のお話. 2006/1/13 住井 英二郎. 復習 : ML の多相関数. # let id x = x ;; val id : 'a -> 'a = # let first x y = x ;; val first : 'a -> 'b -> 'a = # let second x y = y ;; val second : 'a -> 'b -> 'b = . ML の多相関数 : その 2. - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: ソフトウェア基礎科学 授業資料 : 論理関係 (logical relations) のお話

ソフトウェア基礎科学 授業資料 :論理関係 (logical relations) のお話

2006/1/13住井 英二郎

Page 2: ソフトウェア基礎科学 授業資料 : 論理関係 (logical relations) のお話

復習 : ML の多相関数

# let id x = x ;;val id : 'a -> 'a = <fun># let first x y = x ;;val first : 'a -> 'b -> 'a = <fun># let second x y = y ;;val second : 'a -> 'b -> 'b = <fun>

Page 3: ソフトウェア基礎科学 授業資料 : 論理関係 (logical relations) のお話

ML の多相関数 : その 2

# let rec f x = f x ;;val f : 'a -> 'b = <fun># let rec g x = g (x + 1) ;;val g : int -> 'a = <fun># let rec h x = assert false ;;val h : 'a -> 'b = <fun># h 123 ;;Exception: Assert_failure ("", 2, -7).

Page 4: ソフトウェア基礎科学 授業資料 : 論理関係 (logical relations) のお話

多相関数のパラメタ性 (Parametricity)

無限ループや副作用等がなければ、. 型の関数はすべて id と等価.. 型の関数はすべて first と等価.. 型の関数はすべて second と等価.. 型の関数は存在しない.int 型の関数は存在しない

etc.

Page 5: ソフトウェア基礎科学 授業資料 : 論理関係 (logical relations) のお話

どうやって証明するのか?

「型に関する帰納法」の一種を利用

論理関係 (logical relations):型を受け取って、型の式の組(e1, ..., en) の集合を返す写像で、「型に従って」定義されたもの– n = 1 でもよい

⇒ 関係 (relation) というより述語 (predicate)

Page 6: ソフトウェア基礎科学 授業資料 : 論理関係 (logical relations) のお話

パラメタ性を証明するための論理関係 (1/2)

型を受け取って、型の値の集合を返す写像 Pを、以下のように定義– ただしは型変数から値の集合への写像(後述)

P(bool) = { true, false }

P(int) = すべての整数の集合– 一般に任意の基本型 b について、

P(b) = 型 b を持つすべての値の集合

P(12) = { v |├ v : 1 2 かか任意の v1P(1) について、v v1 * v2 ならば v2P(2) }

Page 7: ソフトウェア基礎科学 授業資料 : 論理関係 (logical relations) のお話

パラメタ性を証明するための論理関係 (2/2)

P(12) ={ (v1, v2) | v1P(1) かつ v2P(2) }

P(12) ={ InL(v1) | v1P(1) } ∪{ InR(v2 ) | v2P(2) }

P() = ()

P(. ) = { v |├ v : . かつ任意の閉じた型 ' と ' 型の値の任意の集合 r について、vP,r() }

Page 8: ソフトウェア基礎科学 授業資料 : 論理関係 (logical relations) のお話

基本定理(Fundamental Theorem )

├ v : ならば vP()

証明の方針:├ e : の場合に一般化して、├ e : の導出に関する帰納法を用いる

Page 9: ソフトウェア基礎科学 授業資料 : 論理関係 (logical relations) のお話

使い方の例 1

型 . の値はすべて恒等関数(無限ループや副作用等がなければ)

├ v : . ならば、基本定理より vP(.)

よって任意の├ v1 : ' について、r = {v1} とおくと vPr()

よって v v1 * v2 ならば v2rすなわち v2 = v1

Page 10: ソフトウェア基礎科学 授業資料 : 論理関係 (logical relations) のお話

使い方の例 2

型 .int の関数は存在しない(無限ループや副作用等がなければ)

├ v : .int ならば、基本定理より vP(.int)

よって r = とおくと vPr(int)

よって適当な整数を v1 とするとv v1 * v2 ならば v2r となるがそれはありえない

Page 11: ソフトウェア基礎科学 授業資料 : 論理関係 (logical relations) のお話

パラメタ性以外への論理関係の応用

停止性の証明

等価性の証明

– 秘密性の証明 :f(x) が x を完全に秘密にする 任意の v, v' について f(v) と f(v') が等価

抽象型 , 暗号化 , 情報流解析 , etc.

Page 12: ソフトウェア基礎科学 授業資料 : 論理関係 (logical relations) のお話

停止性

主張:

再帰関数や再帰型等がプリミティブとして導入されていない型付き計算では、

├ e : ならば e * v なる v が存在

Page 13: ソフトウェア基礎科学 授業資料 : 論理関係 (logical relations) のお話

停止性を証明するための論理関係簡単のために単純型についてのみ説明

::= b | 1 2

T(b) = { e |├ e : b かつe * v なる v が存在 }

T(1 2) = { e |├ e : 1 2 かつe * v なる v が存在、かつ任意の e1T(1) について e e1T(2) }

Page 14: ソフトウェア基礎科学 授業資料 : 論理関係 (logical relations) のお話

基本定理

├ e : ならば eT()

証明の方針:下のように一般化し、型導出についての帰納法で示す

x1 : 1, ..., xn : n├ e : ならば任意の e1T(1), ..., enT(n) について[e1,...,en/x1,...,xn]eT()

Page 15: ソフトウェア基礎科学 授業資料 : 論理関係 (logical relations) のお話

等価性を証明するための論理関係(単純型の場合)

R(b) = { (e, e') |├ e : b かつ├ e' : b かつ任意の v について e * v e' * v }

R(1 2) = { (e, e') |├ e : 1 2 かつ├ e' : 1 2 かつ任意の (e1, e1')R(1) について(e e1, e' e1')R(2) }

Page 16: ソフトウェア基礎科学 授業資料 : 論理関係 (logical relations) のお話

基本定理

├ e : ならば (e, e)R()

証明の方針:一般化して型導出について帰納法x1 : 1, ..., xn : n├ e : ならば任意の (e1,e1')T(1),...,(en,en')T(n) について([e1,...,en/x1,...,xn]e,([e1',...,en'/x1,...,xn]e)T()

Page 17: ソフトウェア基礎科学 授業資料 : 論理関係 (logical relations) のお話

(e1, e2)R() ならば、任意の├ e : bool についてe e1 * true e e2 * true

理由:基本定理より (e, e)R( bool) だから。

つまり、e1と e2はどんな関数 e についても同値