型推論1(単相型) 2007.

Slides:



Advertisements
Similar presentations
プログラミング言語論 第3回 BNF 記法について(演習付き) 篠埜 功. 構文の記述 プログラミング言語の構文はどのように定式化できるか? 例1 : for ループの中に for ループが書ける。 for (i=0; i
Advertisements

一階述語論理 (first-order predicate logic) 一階述語論理入門 構文論(論理式の文 法) 意味論(論理式の解 釈) 認知システム論 知識と推論(4) 知識と論理でを組み合わせて問題を解決する.
プログラミング言語論 第10回(演習) 情報工学科 木村昌臣   篠埜 功.
人工知能特論2011 No.4 東京工科大学大学院 担当教員:亀田弘之.
人工知能特論2007 No.4 東京工科大学大学院 担当教員:亀田弘之.
Relaxed Dependency Analysis
ソフトウェア基礎科学 授業資料: 論理関係(logical relations)のお話
チューリングマシン 2011/6/6.
プログラム理論特論 第2回 亀山幸義
2006/11/30 山下 諒蔵 佐藤 春旗 前田 俊行 大山 恵弘 佐藤 秀明 住井 英二郎
プログラミング基礎I(再) 山元進.
2006/10/12 山下 諒蔵 佐藤 春旗 前田俊行 大山 恵弘 佐藤 秀明 住井 英二郎
プログラミング言語論 第6回 型 情報工学科 篠埜 功.
プログラミング言語論 第4回 式の構文、式の評価
論理式の表現を数学的に取り扱いやすくするために代数学の助けを借りる.
Natural Semantics 実行過程の、最初と最後の状態(state)の関係を考える。
条件式 (Conditional Expressions)
9.NP完全問題とNP困難問題.
言語処理系(5) 金子敬一.
言語処理系(8) 金子敬一.
プログラム理論特論 第2回 亀山幸義
2007/1/11 山下 諒蔵 佐藤 春旗 前田 俊行 大山 恵弘 佐藤 秀明 住井 英二郎
コンパイラ 2012年10月22日
米澤研究室 全体ミーティング 2010/12/22 M2 渡邊裕貴.
ML 演習 第 7 回 新井淳也、中村宇佑、前田俊行 2011/05/31.
論文紹介: A Second Look at Overloading
コンパイラ 2011年10月24日
寄せられた質問: 演習問題について この講義の範囲に含まれる適切な演習問題が載っている参考書がありますか? できれば解答や解説が付いているものがあると良いのですが… 第3回の授業の中で、演習問題に取り組む方法を説明します.
不完全な知識 不完全な知識に基づく問題解決 フレーム問題 制約条件記述問題 非単調推論 極小限定 常識の定式化 並列極小限定.
第4章 組合せ論理回路 (4) Quine McCluskeyの方法.
プログラミング言語論プログラミング言語論 プログラムの意味論 水野嘉明
プログラミング言語論 第3回 BNF記法について(演習付き)
PROGRAMMING IN HASKELL
暗黙的に型付けされる構造体の Java言語への導入
形式言語の理論 5. 文脈依存言語.
2006年10月31日 木下佳樹 高橋孝一 田辺良則 湯浅能史 産業技術総合研究所 システム検証研究センター
Macro Tree Transducer の 型検査アルゴリズム
国立情報学研究所 ソフトウェア研究系 助教授/
依存型で型付けされた 副作用のある関数のための 型保存コンパイラ
ATTAPL輪講 (第4回) 続 Dependent Types
論理と推論 命題論理 推論 命題論理体系の健全性と完全性 構文と意味 → 同値関係と標準形(節形式) 決定問題と意味木 推論規則
計算機科学概論(応用編) 数理論理学を用いた自動証明
最内戦略に基づく項書換え計算の効率化の研究
第5章 計算とプログラム 本章で説明すること ・計算の概観と記述法 ・代表的な計算モデル ・プログラムとプログラム言語.
プログラミング言語論 第9回 情報工学科 木村昌臣 篠埜 功.
コンパイラ 2011年10月20日
融合原理 (resolution) 人工知能 論理と推論(2) 論理的帰結 節形式 融合原理 知識を組み合わせて知識を生み出す
 型推論3(MLの多相型).
4. システムの安定性.
構造体と共用体.
オブジェクト指向言語論 第三回 知能情報学部 新田直也.
アルゴリズムと数式の表現 コンピュータの推論
国立情報学研究所 ソフトウェア研究系 助教授/
Type Systems and Programming Languages ; chapter 13 “Reference”
第7回  命題論理.
プログラミング言語論 第10回 情報工学科 篠埜 功.
述語論理式の構文と意味 一階述語論理式の構文 一階述語論理式の意味 述語,限量記号 自然言語文の述語論理式表現 解釈 妥当,充足不能
4.プッシュダウンオートマトンと 文脈自由文法の等価性
情報処理Ⅱ 2005年10月28日(金).
関数型言語の基礎 型なしl計算 型理論 構成的プログラミング GUIにあらわれる関数概念 PBD VL
オブジェクト指向言語論 第二回 知能情報学部 新田直也.
コンパイラ 2012年10月11日
プログラミング入門2 第6回 関数 情報工学科 篠埜 功.
PROGRAMMING IN HASKELL
型理論 ラッセルのパラドックス: 「集合の集合」は矛盾を引き起こす。 ラッセル、ホワイトヘッド 「プリンキピアマセマティカ」
オブジェクト指向言語論 第三回 知能情報学部 新田直也.
 型理論の初歩 2007 fall.
プログラミング言語論 プログラミング言語論 演習7 解答と解説 演習7 解答と解説 1.
Static Enforcement of Security with Types
オブジェクト指向言語論 第六回 知能情報学部 新田直也.
Presentation transcript:

 型推論1(単相型) 2007

型推論へ1 強い型付言語の記述上の煩瑣さを軽減

型推論へ2

型推論へ3

型推論の形式的体系について 形式的な記号の集まりからなる論理体系 プログラムの文面を含んだ体系(cf. Hoare logic) 体系の重要な要件 (1) 健全性 (2) 完全性  (3)推論アルゴリズムの有用性 → a)決定性 b)効率 「値」の正当性と「型」の正当性の比較 

型推論規則のアイデア(例) E0, E1, E2を式として、 もし E0が bool式であることが示され     かつ E1の型がTであることが示され     かつ E2の型がTであることが示されたなら  その時、式if E0 then E1 else E2は型Tをもつことが示される これを 形式化して 与えられた式がある型をもつことを証明する(prove) 与えられた式がもつ型を見つける/推論する(find/infer)

言語の型システムを与えるとは 言語Lの構文規則を与える (言語Lの意味論を与える) 言語Lの型式の構文(規則)を与える 型推論規則で使われる記法 E : T - 式(または文)Eが型Tを持つという命題 A - 型環境(前提)と呼ぶ。式の中に現われる変数や定数が持つ型を与える. A(x) = T は型環境Aにおいては、変数(または名前)xは型Tを持つ。 A |- E : T 型判定(type judgment)と呼ばれ、Aのもとで式Eが型Tをもつことを表明・主張する。

If-then-else式の型推論規則 E0,E1,E2を式として、 もし E0がbool型の値をもつことが示され     かつ E1の型がTであることが示され     かつ E2の型がTであることが示されたなら  その時 if E0 then E1 else E2は型Tをもつことが示される これを 形式化して  A |- E0 : bool, A |- E1 : T, A |- E2 : T -------------------------------------------------------- A |- (if E0 then E1 else E2) : T

単相型(monomorphic type) の推論規則を持つ言語L

Lの型式と記法 L 

Lの型推論規則

型推論の例1

型推論の例2 int>

 型推論2(多相型の序)

多相型の型推論に向けて 主型(principal type) λ計算に型推論を入れる例 多相型の型推論規則を考える上での注意点 ・ 型理論λ→ 主型の3性質 型を持つことの特性 多相型の型推論規則を考える上での注意点

主型 型多相(type polymorphism, polymorphic type)を許す言語の型推論を説明する上で重要な概念。   次の1)、2) が成立すること。 |- t: T  が成立。 任意のT1 に対して、|- t:T1 が成立するなら、Tの中の型変数に対する適当な代入σが必ず存在して、    T1≡Tσ となる。

λ式の型 一般のλ式(項)に型を導入する 閉じたλ式は一般に関数に対応するから、 その型は、関数型である。  λ式の型 一般のλ式(項)に型を導入する 閉じたλ式は一般に関数に対応するから、 その型は、関数型である。 例えば、 λx.x (恒等関数)の定義域の型をTとすると、その値域の型はやはりTである。よって、 λx.x : T → T となることは明らか。

型理論λ→ λ→における項:(term、式)を次のように定義する: λ→における型式(型のsyntax, 記法): 変数は項である。  (x,y,z等の文字を使って表す) t1、t2が項のとき、t1t2も項である。 xが変数、tが項のとき、λx.tは項である。 λ→における型式(型のsyntax, 記法): 変数( α、β、、、)は型式である。  T1,T2が型式のとき、T1→T2も型式である。 項の並び

λ→の型推論規則 A |- x : T 但しA(x)=Tのとき。 A |- f : T1→T2 A |- a : T1   --------------------------------- A |- f a : T2 A + x : T1 |- t : T2 ------------------------  A |- λx.t : T1 →T2

複数の型付けと型変数 K ≡ λxy.x の型は このようにKの型として整合する型は複数あり得る。  T1→T2→T1  (T1→T2)→T3→ (T1→T2)  … このようにKの型として整合する型は複数あり得る。  一般に型を値とする型変数α、βなどの文字を用いて、  Kの型を  K : α→β→α    と表し、このα、βに任意の型を代入すると、Kに整合する全ての型が得られる。 すると、α→β→αがKの主型と考えてよい。

λ→の型に関する特徴 主型性(principal type properties)ーー Hindley&Seldan  λ→の型に関する特徴 主型性(principal type properties)ーー Hindley&Seldan 項 t が型をもつなら、t は主型を持つ。 項 t の主型は計算可能である。(計算するアルゴリズムがある。) 主型を計算するO(n)のアルゴリズムが存在する。 ある項が型を持つ(型付け可能である)ことは、その項は以下の“良い”性質を持つ。 |- t : T (型をもつならば)かつ t -*-> s ならば、 |- s : T |- t : T ならば(型をもつならば)、どの戦略によっても、簡約は停止し、       t は正規形を持つ。(strong normalizability) 3. |- t : T1 かつ |- s : T2 なら(どちらも型付け可能なら)      t  s  か否かを判定する問題は決定可能である。 型を持つλ式は限られていて、既に正規形となっている式でも、型を持たないものもある。  たとえば, λx. xx は型をもたない。(自己適用など)    課題:これ以外に型を持たない正規系をもつ例は??