POPL ミーティング 12/20 Survey: A Very Modal Model of a Modern, Major, General Type System

39
POPL ミミミミミミ 12/20 Survey: A Very Modal Model of a Modern, Major, General Type System Toshihiro YOSHINO (D1, ミミ ミ) < [email protected] >

description

POPL ミーティング 12/20 Survey: A Very Modal Model of a Modern, Major, General Type System. Toshihiro YOSHINO (D1, 米澤研 ) < [email protected] >. 今回の論文. A. Appel et al. A Very Modal Model of a Modern, Major, General Type System. To appear in POPL ’ 07. 論文概要. 型付き低級言語のための一般的な型 システムを設計 - PowerPoint PPT Presentation

Transcript of POPL ミーティング 12/20 Survey: A Very Modal Model of a Modern, Major, General Type System

Page 1: POPL  ミーティング  12/20 Survey: A Very Modal Model of a Modern, Major, General Type System

POPL ミーティング 12/20Survey: A Very Modal Model of a Modern, Major, General Type System

Toshihiro YOSHINO (D1, 米澤研 )<[email protected]>

Page 2: POPL  ミーティング  12/20 Survey: A Very Modal Model of a Modern, Major, General Type System

今回の論文 A. Appel et al. A Very Modal Model of a

Modern, Major, General Type System. To appear in POPL’07.

Page 3: POPL  ミーティング  12/20 Survey: A Very Modal Model of a Modern, Major, General Type System

論文概要 型付き低級言語のための一般的な型

システムを設計 Kripke 意味論による意味論的設計

よくある syntactic な設計ではない 安全性の議論において induction (over types) を

用いない 様相演算子 (modal operator) がある

von Neumann 型計算機、 mutable reference のある λ 計算に対して実際に適用

Page 4: POPL  ミーティング  12/20 Survey: A Very Modal Model of a Modern, Major, General Type System

研究背景 型付き低級言語 (TIL や TAL) の設計は難しい

リッチで記述力の高い型システムが必要 Intersection/Union types Address arithmetics, Mutable references Recursive types, Type quantification

とくに Type quantification は impredicative であるべき

⇒ 様相論理の手法により、一般的な型システムを設計

何重にかかってくるかはわからない、仮定できない

Page 5: POPL  ミーティング  12/20 Survey: A Very Modal Model of a Modern, Major, General Type System

背景知識様相論理学 可能性や必然性に関わる命題を扱う

「~でなければならない」「~でありうる」などといった言明が可能

古典論理学に対しいくつかの演算子を追加 必然性 □、可能性 ◇ など

意味論については Kripke による定式化がよく用いられる [Kripke 1963]

Page 6: POPL  ミーティング  12/20 Survey: A Very Modal Model of a Modern, Major, General Type System

Kripke 意味論 「モデル」は 3 つ組

W: 世界  の集合 R (⊂W×W): 世界間の遷移関係 (accessibility)

推移的かつ整礎 (well-founded) な関係でなければならない ||- : 型付け

「世界 w において、値 v は型 τ を持つ」

このモデルを small-step な操作的意味論に適用 集合 Loc によりインデックスされるストアを用意 R は step relation に対応

任意の要素 w∈W に対し、 w から始まる無限列がない

Page 7: POPL  ミーティング  12/20 Survey: A Very Modal Model of a Modern, Major, General Type System

モデルと ( 言語の ) 意味論の対応づけ Mutable reference 付き λ 計算

状態 = (e, m) e: 式、 m (:: Loc→V): ストア

世界 w はストアを特徴づける

von Neumann 型の機械 状態 = (v, m)

v: レジスタファイル , m (:: Loc→Loc): メモリ 世界 w はメモリの内容を特徴づける

Page 8: POPL  ミーティング  12/20 Survey: A Very Modal Model of a Modern, Major, General Type System

モデルと ( 言語の ) 意味論の対応づけ

状態空間

世界集合 WR

Value の世界

Type の世界

Page 9: POPL  ミーティング  12/20 Survey: A Very Modal Model of a Modern, Major, General Type System

Kripke 意味論における型付け 「世界 w において値 v が型 τ を持つ」と

いう judgement 型 τ は       となる w と v の組を

すべて列挙したものと考えることもできる (w, v) のような形の組を configuration と呼ぶ

型を configuration の集合とし、型演算子は集合操作として捉える

     : 型の subset 関係  

Page 10: POPL  ミーティング  12/20 Survey: A Very Modal Model of a Modern, Major, General Type System

型構築子 18 個のプリミティブ、 16 個の合成演算子を定義

モジュラーな設計

Page 11: POPL  ミーティング  12/20 Survey: A Very Modal Model of a Modern, Major, General Type System

型構築子プリミティブ型 (1) Intersection, union, implication

top はすべての configuration 、 bottom は空集合 Intersection (union) は集合の共通部分 ( 和 )

非常に直観的

Page 12: POPL  ミーティング  12/20 Survey: A Very Modal Model of a Modern, Major, General Type System

型構築子プリミティブ型 (2) 量化子

Polymorphism の記述に用いられる 型変数だけでなく、ストア ( やメモリ ) に関す

る変数も扱えるような統一的モデルとして定義

A ∈ {Type, Loc, Mem} として共通に使える

Page 13: POPL  ミーティング  12/20 Survey: A Very Modal Model of a Modern, Major, General Type System

型構築子プリミティブ型 (3) 世界に対する言明

!τ (everywhere τ): その世界の全ての値が τ 型 = τ( という式・言明 ) が成り立つ

?τ (somewhere τ): その世界に τ 型の値が存在

これらは値によらず、世界のみに対する言明 世界の選択により、 top ( 真 ) または bot ( 偽 ) と等しく

なる

Page 14: POPL  ミーティング  12/20 Survey: A Very Modal Model of a Modern, Major, General Type System

型構築子合成演算子 プリミティブ型構築子を用いて新たな

演算子を合成することができる 例 : 型の等価性

σ⇔τ ≡ ある値について型 σ と τ が等価 実際は世界と関連付けられることに注意。暗黙に現

れる世界を「現在の世界」と呼ぶ teq(τ,σ) は世界における τ と σ の等価

Page 15: POPL  ミーティング  12/20 Survey: A Very Modal Model of a Modern, Major, General Type System

型構築子様相演算子 (1) “Later” operator:

        ≡  w の後に来る世界で v は τ 型 世界の間に前後関係がなければならないので、 accessibility は整礎である必要

(1)   は ( 型の subset 関係について ) 単調(2)   は intersection で分配される

性質

Page 16: POPL  ミーティング  12/20 Survey: A Very Modal Model of a Modern, Major, General Type System

型構築子様相演算子 (2) Necessity operator: □

           と合成できる 直観的には、「現在以降」という意味

(1) □ は単調である(2) 任意の型 τ について、□ τ|- τ(3) □σ|- τ  ⇒ □ σ|- □τ(4) □ は intersection で分配される

また     であるような型を necessary という

性質

Page 17: POPL  ミーティング  12/20 Survey: A Very Modal Model of a Modern, Major, General Type System

再帰型の扱い F: Type→Type が与えられ、 rec F を考える

F が縮小写像 (contractive) なら rec F は F の不動点

次の定理が成り立つ   求める不動点は唯一に定まる

Page 18: POPL  ミーティング  12/20 Survey: A Very Modal Model of a Modern, Major, General Type System

ストアの Kripke 意味論 Mutable reference に対応するにはどういっ

た Kripke モデル が適切か? R は整礎なので、実行は必ず有限ステップで停止

⇒ 世界 w は残りステップ数カウンタを持つ

あとは世界においてストアの型付けΨが必要

じゃあこうすればよい? Ψ

Page 19: POPL  ミーティング  12/20 Survey: A Very Modal Model of a Modern, Major, General Type System

ストアの Kripke 意味論世界集合の定義 しかしこの定式化は解をもたない

基数の議論により明らか W > Type かつ Type > W

かわりに n に関して層化した定義を行う

これなら Type = P(W×V) として問題ない

Page 20: POPL  ミーティング  12/20 Survey: A Very Modal Model of a Modern, Major, General Type System

ストアの Kripke 意味論Accessibility Relation の定義

Typen の間には包含関係がある

また、型の近似関数を次のように定義

これらを用いて、 accessibility relation を定義

Page 21: POPL  ミーティング  12/20 Survey: A Very Modal Model of a Modern, Major, General Type System

ストアの Kripke 意味論Accessibility Relation の定義

W0

W1

Wn

中 略矢印が

accessibility( のハッセ図 ) を表す

Page 22: POPL  ミーティング  12/20 Survey: A Very Modal Model of a Modern, Major, General Type System

ストアの Kripke 意味論Reference Type の定義 代入可能な値 (Loc ⊂ SV ⊂ V) の型

Store typing Ψ について

これを使ってメモリの well-typedness を記述

最終的に reference は以下のようになる

変数から値への単射

Page 23: POPL  ミーティング  12/20 Survey: A Very Modal Model of a Modern, Major, General Type System

ストアの Kripke 意味論Reference Type の定義

メモリ m : Loc→V

l = ??? : τ’

teq(τ, τ’)

Page 24: POPL  ミーティング  12/20 Survey: A Very Modal Model of a Modern, Major, General Type System

Type Preservation Mutable store の update 後に型が保存

しなければならない 証明する必要あり

割り当てられたメモリは解放されることがなく、ずっと同じ型に型付けられる

R の定義により dom(Ψ) ⊂ dom(Ψ’) なことに注意すれば簡単に示せる

Page 25: POPL  ミーティング  12/20 Survey: A Very Modal Model of a Modern, Major, General Type System

Type PreservationMemory Update メモリへの代入 m[l := u] が可能であり、 va

lidmem が保存される

Page 26: POPL  ミーティング  12/20 Survey: A Very Modal Model of a Modern, Major, General Type System

Type PreservationMemory Update

k+1 の世界 k の世界

Memory m Memory m’ = m[l := u]

R

Ψ

validmem(m)

Ψ’

validmem(m’)

ref τ τ

l = ??? l = u

u

domain は変わらない

Page 27: POPL  ミーティング  12/20 Survey: A Very Modal Model of a Modern, Major, General Type System

Type PreservationMemory Allocation, Access validmem ⇒ ref へのアクセスが成功する

アクセスに 1 ステップかかる

メモリ割り当てもできる

Page 28: POPL  ミーティング  12/20 Survey: A Very Modal Model of a Modern, Major, General Type System

Memory Safety safek: k ステップの実行に関する安全性

Mutable Reference があるので、メモリ操作に関しての安全性が必要

safe: メモリが well-typed ならば実行が安全である

Page 29: POPL  ミーティング  12/20 Survey: A Very Modal Model of a Modern, Major, General Type System

データ構造の表現 アドレス計算の型付け レコード型

メモリのオフセットを使う             である

あとは intersection, union で代数的データ構造を構成できる

Page 30: POPL  ミーティング  12/20 Survey: A Very Modal Model of a Modern, Major, General Type System

von Neumann アーキテクチャへの適用 ここまでの議論は一般的な枠組みに関するもの

特定の計算体系を仮定していない λ 計算などにも適用可能

今回のサーベイでは省略 以下実際に von Neumann アーキテクチャに対する適用例について議論

PCC Framework を構成するのと同じ流れ

Page 31: POPL  ミーティング  12/20 Survey: A Very Modal Model of a Modern, Major, General Type System

命令の表現 命令とは状態集合上の関係である

「状態」はプログラムカウンタも含んでいることに注意

たとえばメモリからのロード命令の意味論は、

von Neumann アーキテクチャでは命令もデータ プログラムは整数列 p(i) としてエンコードされている

7320 が LOAD(3,2,0) ≡ r3←m(r2+0) に対応する、等 「エンコードしている」という関係は以下のように定

Page 32: POPL  ミーティング  12/20 Survey: A Very Modal Model of a Modern, Major, General Type System

プログラムの型 プログラムは前述のとおり整数列にエンコードされており、レコードとして表せる

またプログラムは ( 意味論的には ) continuation と考えることができる コードラベルに対して安全性が保証できる事前条件を関連付ける : codeptr(τ)

Page 33: POPL  ミーティング  12/20 Survey: A Very Modal Model of a Modern, Major, General Type System

プログラムの型付け 基本的にはすべての i について

を検証すればよい しかしコードは分岐することがある

たとえば i 番目の命令が j にも分岐するならば、 Γj にも依存する必要

⇒ 一般化して、          とできる⇒ 最終的に           、さらに

命令の型付け規則 たとえば LOAD 命令 →

Page 34: POPL  ミーティング  12/20 Survey: A Very Modal Model of a Modern, Major, General Type System

プログラムの型付け : 例 以下の簡単なプログラムを考える

プログラムの中身について、

このプログラムの型は、

Page 35: POPL  ミーティング  12/20 Survey: A Very Modal Model of a Modern, Major, General Type System

プログラムの型付け : 例 Invariant を次のようにすれば、

命令の型付け規則を用いて、

となる このプログラムは分岐しないので Γi+1 のみでよい

Page 36: POPL  ミーティング  12/20 Survey: A Very Modal Model of a Modern, Major, General Type System

エントリポイント プログラムの先頭番地は、特別な仮定なく実行可

能でなければならない つまり、 codeptr(top) に型付けられなければならない

したがって、プログラム全体の型付けとしては

すなわち

でなければならない これから安全性が導かれること (健全性 ) を次で言う

Page 37: POPL  ミーティング  12/20 Survey: A Very Modal Model of a Modern, Major, General Type System

Type Soundness プログラムの初期状態と対応づく世界が存在

プログラムが l にロードされたとは、 プログラムの長さまでの i に対し m(l + i) = p(i) プログラムカウンタが l を指している

健全性

Page 38: POPL  ミーティング  12/20 Survey: A Very Modal Model of a Modern, Major, General Type System

Related Work Approximation Modality[Nakano 2000, Nakano 2001]

本論分の  と類似機構を初めて導入した論文

XCAP[Yu et al. 2003, Ni and Shao 2006]

“Certified Assembly Programming” Calculus of Inductive Construction を用いた

アセンブリ言語プログラムの検証フレームワーク

Page 39: POPL  ミーティング  12/20 Survey: A Very Modal Model of a Modern, Major, General Type System

まとめ 様相論理を型システムの設計に適用

継続や reference がさらにシンプルな要素から構成できることを示した

また実際にその型システムが強力かつ一般的であることを示した

Mutable reference つき λ 計算、 von Neumann 型機械にもモデルを変えずに適用が可能

Coq で実装した ( 論文中では言明だけ ) http://www.pps.jussieu.fr/~vouillon/smot/