SlideShare une entreprise Scribd logo
1  sur  71
Télécharger pour lire hors ligne
TaPL読書会 [#4]
2012.09.12
§. 9
Simply Typed Lambda-Calculus
8章でやったこと
型付け規則の導入(Simple types)
↓
型付けの一意性の証明
↓
型安全性の証明1: Progress  
↓
型安全性の証明2: Preservation
型安全性とは(復習)
● TaPLにおける型安全性(Safety = Progress +
Preservation)とは:
型付けされた項は、途中でstuckになることは
なくきちんと評価される
ということ。
● 型安全性は、後の章で扱うより複雑な型システ
ムにおいても成立する。
Lambda abstractionとは
● 関数の抽象的表現
●
数学的な関数との対応
(1) f = λx.f(x)
(2) f(x) = (λx.f(x))(x)
(3) f(a) = (λx.f(x))(a)
Lambda abstractionとは
関数 t(x) 関数 x → x + 2x
λx.t λx.x*x + 2*x
func(x){t;} func(x){
return x*x + 2*x;
}
2
Mathematics
Programming
9章でやること
λ計算への型付け規則の導入(Simple types)
↓
型付けの一意性の証明
↓
型安全性の証明1: Progress  
↓
型安全性の証明2-1: Preservation(代入)
型安全性の証明2-2: Preservation(評価)
型の削除の定義
おさらい
これまで扱った体系
● Untyped booleans (3章)
●
Untyped arithmetic expressions (3章)
● Simply typed booleans (8章)
● Simply typed arithmetic expressions (8章)
●
Untyped lambda-calculus (5章)
●
Untyped booleans
Syntactic forms
t ::= v ::=
true true
false false
if t then t else t
Evaluation rules
 if true then t2 else t3 → t2 (E-IfTrue)
 if false then t2 else t3 → t3 (E-IfFalse)
t1 → t1'
if t1 then t2 else t3 → if t1' then t2 else t3
(E-If)
B
●
Untyped arithmetic expressions
(Extends untyped booleans)
New Syntactic forms
t ::= ... v ::= ...
0 nv
succ t
pred t nv ::=
iszero t 0
succ nv
NB
Evaluation rules
t1 → t1'
succ t1 → succ t1' (E-Succ)
pred 0 → 0 (E-PredZero)
pred (succ nv1) → nv1 (E-PredSucc)
t1 → t1'
pred t1 → pred t1' (E-Pred)
iszero 0 → true (E-IszeroZero)
iszero (succ nv1) → false (E-IszeroSucc)
t1 → t1'
iszero t1 → iszero t1' (E-Iszero)
●
Untyped arithmetic expressions (Extends booleans) NB
●
Simply typed booleans
New Syntactic forms
T ::= types
Bool type of booleans
New typing rules
 true : Bool (T-True)
 false : Bool (T-False)
t1 : Bool t2 : T t3 : T
if t1 then t2 else t3 : T
(T-If)
:B
●
Simply typed arithmetic expressions
(Extends A.E. and simply typed Bool.)
New Syntactic forms
T ::= ... types
Nat type of natural numbers
New typing rules
 0 : Nat (T-True)
t1 : Nat
succ t1 : Nat (T-Succ)
t1 : Nat
pred t1 : Nat (T-Pred)
t1 : Nat
iszero t1 : Bool (T-Iszero)
:NB
● Untyped lambda-calculus
Syntactic forms
t ::= ... terms v ::=
x variable λx.t abstraction value
λx.t abstraction
t t application
Evaluation rules
t1 → t1'
t1t2 → t1't2 (E-App1)
t2 → t2'
v1t2 → v1t2' (E-App2)
(λx.t12)v2 → [x → v2]t12 (E-AppAbs)
→
B
これまで扱った体系
NB
:B
:NB
→
extend extend
extend
extend
これから導入する体系
→ :→
B
NB
:B
:NB
extend extend
extend
extend
extend
基本型として
導入
9章でやること
λ計算への型付け規則の導入(Simple types)
↓
型付けの一意性の証明
↓
型安全性の証明1: Progress  
↓
型安全性の証明2-1: Preservation(代入)
型安全性の証明2-2: Preservation(評価)
型の削除の定義
「関数型」導入の試み
● λ抽象に対して型付けを行いたい。
●
まずは、全てのλ抽象を同一の型“→”で
型付けしてみる:
λx.t : →
● 例:λx.not x : →
  λx.λy.y : →
「関数型」導入の試み
● この型付けの問題点:
 先の2つの関数を true : Bool に適用すると、
 (λx.not x) true → not true = false : Bool
 (λx.λy.y) true → λy.y : →
●
関数であることを表現するだけでは不十分
⇒引数・返り値の型を関数型の中に含める:
<λ抽象> : T1 → T2
「関数型」導入の試み
● 引数の型についての問題:
 ある文の中にλ抽象があるとき、
 …… λx.t ……
 このλ抽象について、期待されている引数の型を
 どのように知るか?
●
方法1:型推論
● 方法2:明示的型付け
cf. 8.6節 Curry-style vs.Church-style
「関数型」導入の試み
● 方法1:型推論
式を見て、引数の値がどのように使われている
か判断する
 λx.not x ⇒ x : Bool のはず
● 方法2:明示的型付け
λ抽象の表式に、期待される引数の型を付加す
る
 λx:Bool.not x
「関数型」導入の試み
● 返り値の型についての問題:
 λ抽象 λx:T1.t の返り値の型はどのように
 決まるか?
● 例:
id1 = λx:Bool.x id2 = λx:(Bool→Bool).x
id1 true = (λx:Bool.x) true = true : Bool
id2 id1 = (λx:(Bool→Bool).x)id1 = id1 : Bool→Bool
「関数型」導入の試み
●
λ抽象 λx:T1.t の返り値の型は、
引数の型に関する制約条件 x : T1 の下で定まる、
λ抽象の body t の型である。
   x : T1 |- t : T2   
|- λx:T1.t : T1 → T2
「関数型」導入の試み
● 型環境Γ (typing context)
Γ |- t : T と書いたとき、Γは
項 t に含まれる自由変数に関する型制約の
なす順序付集合を表す:
 Γ={x1:T1, x2:T2,..., xk:Tk}
 Γ, s:S := {x1:T1,..., xk:Tk,s:S}
(s ∈ dom(Γ))
Φ, s:S =: s:S (={s:S})
注) Γ, s1:S1, s2:S2 ≠ Γ, s2:S2, s1:S1
● Simply typed lambda-calculus
Syntactic forms
t ::= ... terms
x variable
λx:T.t abstraction
t t application
v ::=
λx:T.t abstraction value
T ::= terms
T → T type of functions
Γ ::= typing contexts
Φ empty context
Γ, x:T term variable binding
:→
● Simply typed lambda-calculus
Evaluation rules
t1 → t1'
t1t2 → t1't2 (E-App1)
t2 → t2'
v1t2 → v1t2' (E-App2)
(λx:T11.t12)v2 → [x → v2]t12 (E-AppAbs)
Typing rules
x:T ∈ Γ
Γ |- x:T (T-Var)
Γ,x:T1 |- t2:T2
Γ |- λx:T1.t2 :T1→T2 (T-Abs)
Γ |- t1:T11→T12 Γ |- t2:T11
Γ |- t1t2:T12 (T-App)
:→
●
Simply typed booleans
as a family of fundamental types
Merged Syntactic forms of types
T ::= types
Bool type of booleans
T → T type of functions
Typing rules
 as above.
Bool, Bool → Bool, Bool → (Bool → Bool),...
などが具体的な型として存在
:B
9章でやること
λ計算への型付け規則の導入(Simple types)
↓
型付けの一意性の証明
↓
型安全性の証明1: Progress  
↓
型安全性の証明2-1: Preservation(代入)
型安全性の証明2-2: Preservation(評価)
型の削除の定義
型付けの一意性(Simple types)
● Simply typed lambda-calculusでは、次の型付
けの一意性定理が成り立つ(Thm 9.3.3):
与えられた型環境Γの下で、
任意の項 t は、高々1つの型しかもたない。
(つまり、t がwell typedならばその型は一意)
さらに、t の型付けの導出木も一意に定まる。
型付けの一意性(具体例)
x:Bool ∈ x:Bool
   
x:Bool |- x:Bool
         
|- λx:Bool.x : Bool→Bool |- true: Bool
                    
|- (λx:Bool.x)true : Bool
● t = (λx:Bool.x)true の型の導出木
型付けの一意性(具体例)
x:Bool ∈ x:Bool
   
x:Bool |- x:Bool
         
|- λx:Bool.x : Bool→Bool |- true: Bool
                    
|- (λx:Bool.x)true : Bool
● t = (λx:Bool.x)true の型の導出木
T-Var
型付けの一意性(具体例)
x:Bool ∈ x:Bool
   
x:Bool |- x:Bool
         
|- λx:Bool.x : Bool→Bool |- true: Bool
                    
|- (λx:Bool.x)true : Bool
● t = (λx:Bool.x)true の型の導出木
T-Var
T-Abs T-True
型付けの一意性(具体例)
x:Bool ∈ x:Bool
   
x:Bool |- x:Bool
         
|- λx:Bool.x : Bool→Bool |- true: Bool
                    
|- (λx:Bool.x)true : Bool
● t = (λx:Bool.x)true の型の導出木
T-Var
T-Abs T-True
T-App
型付けの一意性(証明)
● 方針:
subtermsに関する数学的帰納法で証明する。
つまり、
項 t に対し、すべての直下のsubtermに関して定理の
主張(型付けの一意性)が成り立っていると仮定した
とき、
t の型が一意に定まることを示す。
型付けの一意性(証明)
● 方針:
t の取りうるsyntax(項の形式)に応じて場合分けす
る。
● t = x (Case-Variable)
● t = λx:T1.t2 (Case-Abstraction)
●
t = t1 t2 (Case-Application)
●
t = true (Case-True)
● t = false (Case-False)
● t = if t1 then t2 else t3 (Case-If)
型付けの一意性(証明)
● t = λx:T1.t2 (Case-Abstraction)
定理の仮定から、ある型 R が存在し
Γ |- λx:T1.t2 : R
このとき、Lemma 9.3.1 - 2 より
ある型 R2 が存在し、
R = T1 → R2, Γ,x:T1 |- t2 : R2
帰納法の仮定より、t の body t2 の型付けは一意。
したがって、型付け規則 (T-Abs) により
t はその型として R のみを持つ。
型付けの一意性(証明)
残りのケース
●
t = t1 t2 (Case-Application)
●
t = x (Case-Variable)
→ 上と同様
● t = if t1 then t2 else t3 (Case-If)
→ 8章と同様
●
t = true (Case-True)
●
t = false (Case-False)
→ Lemma 9.3.1 からダイレクトに従う
型付けの一意性(証明)
● Lemma 9.3.1 の証明
それぞれの項のsyntaxから、適用できる型付け規則が
一意に定まる。
e.g. t = λx:T1.t2に適用できる規則は (T-Abs) のみ
これにより、補題の主張が従う。
型付けの一意性定理
Simply typed lambda-calculusにおいては
● 任意のwell-typedな項が唯一つの型を持つ
●
任意のwell-typedな項について、型の導出木は
唯一つである
※注意
後の章で扱う、より複雑な型システムにおいて
は、一般にこのような定理は成り立たない
cf. subtyping
9章でやること
λ計算への型付け規則の導入(Simple types)
↓
型付けの一意性の証明
↓
型安全性の証明1: Progress  
↓
型安全性の証明2-1: Preservation(代入)
型安全性の証明2-2: Preservation(評価)
型の削除の定義
型安全性の証明
● ここでは、Simply typed lambda-calculusにお
いて下記3つの定理が成り立つことを示す:
Theorem 9.3.5 (Thm. of Progress)
Closed(自由変数なし) & well typedな項は
非stuck
Lemma 9.3.8 (Thm. of Preservation)
項への代入は型を変えない。
Theorem 9.3.9 (Thm. of Preservation)
項の評価は型を変えない。
Progress(証明)
● 方針:
導出に関する数学的帰納法で証明する。
つまり、
|- t : T に対し、そのすべてのsubtermに関して定理
の主張(それらがvalueである、または前進評価が可
能であること)を仮定したときに、
t 自身も同様にvalueである、または前進評価が可能
であることを示す。
Progress(証明)
● 方針:
直前のtyping rule(導出規則)に応じて場合分け。
●
t = x (Case-Variable)
● t = λx:T1.t2 (Case-Abstraction)
●
t = t1 t2 (Case-Application)
● t = true (Case-True)
● t = false (Case-False)
● t = if t1 then t2 else t3 (Case-If)
Progress(証明)
● 方針:
直前のtyping rule(導出規則)に応じて場合分け。
●
t = x (Case-Variable)
● t = λx:T1.t2 (Case-Abstraction)
●
t = t1 t2 (Case-Application)
● t = true (Case-True)
● t = false (Case-False)
● t = if t1 then t2 else t3 (Case-If)
Progress(証明)
● t = t1 t2 (Case-Application)
このとき、
|- t1 : T11 → T12, |- t2 : T11
帰納法の仮定より、subterm t1 について
(i) ある t1' が存在し、 t1 → t1'
(ii) t1 は value
Progress(証明)
● t = t1 t2 (Case-Application)
(i) ある t1' が存在し、 t1 → t1'
このとき、E-App1より
t = t1 t2 → t1't2
(ii) t1 は value
このとき、帰納法の仮定より、subterm t2 について
 (a) ある t2' が存在し、 t2 → t2'
 (b) t2 は value
Progress(証明)
● t = t1 t2 (Case-Application)
 (a) ある t2' が存在し、 t2 → t2'
 いま、t1 はvalueなので、E-App2により
 t = t1 t2 → t1 t2'
 (b) t2 は value
 いま、t1 (:T11 → T12)はvalueなので、
Lemma9.3.4より t1 = λx:T11.t12
よって、E-AppAbsにより
 t = (λx:T11.t12)t2 → [x → t2]t12
 
Progress(証明)
● t = t1 t2 (Case-Application)
 (a) ある t2' が存在し、 t2 → t2'
 いま、t1 はvalueなので、E-App2により
 t = t1 t2 → t1 t2'
 (b) t2 は value
 いま、t1 (:T11 → T12)はvalueなので、
Lemma9.3.4より t1 = λx:T11.t12
よって、E-AppAbsにより
 t = (λx:T11.t12)t2 → [x → t2]t12
 
Lemma9.3.4(Canonical Forms)
(i) v が Bool型のvalueのとき、
v = true or v = false
(ii) v が T1 → T2 型のvalueのとき、
v = λx:T1.t2
証明:
Simply typed λ-calculus において、valueの取りう
るsyntactic form は true, false, λx:T.t の3種
(ii) v = true と仮定する。
補題の仮定より、true : T1 → T2
⇒ Lemma 9.3.1(inversion lemma)-4 に矛盾
Preservation: 代入(証明)
● 方針:
導出に関する数学的帰納法で証明する。
つまり、
t : T に対し、そのすべてのsubtermに関して定理の
主張(代入によって型が不変であること)を仮定した
ときに、
t 自身も同様に、代入によって型が不変であることを
示す。
Preservation: 代入(証明)
● 方針:
直前のtyping rule(導出規則)に応じて場合分け。
●
t = x (Case-Variable)
● t = λx:T1.t2 (Case-Abstraction)
●
t = t1 t2 (Case-Application)
● t = true (Case-True)
● t = false (Case-False)
● t = if t1 then t2 else t3 (Case-If)
Preservation: 代入(証明)
● 方針:
直前のtyping rule(導出規則)に応じて場合分け。
●
t = x (Case-Variable)
● t = λx:T1.t2 (Case-Abstraction)
●
t = t1 t2 (Case-Application)
● t = true (Case-True)
● t = false (Case-False)
● t = if t1 then t2 else t3 (Case-If)
Preservation: 代入(証明)
● t = λy:T2.t1 (Case-Abstraction)
このとき、
T = T2 → T1
Γ,x:S,y:T2 |- t1 : T1
なるT1が存在する。
型環境の定義より、y≠x, y∈FV(s)であるから、
Lemma9.3.6 (Permutation)より、
Γ,y:T2,x:S |- t1 : T1
Preservation: 代入(証明)
● t = λy:T2.t1 (Case-Abstraction)
Γ |- s:S と Lemma9.3.7 (Weakening)より、
Γ,y:T2, |- s:S
一方、t1に対して、帰納法の仮定から
Γ,y:T2 |- [x → s]t1 : T1
よって、T-Absにより
Γ |- λy:T2[x → s]t1 : T2 → T1
Preservation: 代入(証明)
● t = λy:T2.t1 (Case-Abstraction)
Γ |- s:S と Lemma9.3.7 (Weakening)より、
Γ,y:T2, |- s:S
一方、t1に対して、帰納法の仮定から
Γ,y:T2 |- [x → s]t1 : T1
よって、T-Absにより
Γ |- λy:T2[x → s]t1 : T2 → T1
置換の補題、弱化の補題
● Lemma 9.3.6 (Permutation)
「型環境への置換操作の下で型付けは不変」
Γ |- t:T, Δ=P(Γ) P:Permutation
⇒Δ |- t:T
●
Lemma 9.3.7 (Weakening)
「型環境の拡大の下で型付けは不変」
Γ |- t:T, x ∈ dom(Γ)
⇒ Γ,x:S |- t:T
ともに、型導出に関する数学的帰納法により示される
Preservation: 評価(証明)
● 方針:
導出に関する数学的帰納法で証明する。
つまり、
t : T に対し、そのすべてのsubtermに関して定理の
主張(評価によって型が不変であること)を仮定した
ときに、
t 自身も同様に、評価によって型が不変であることを
示す。
Preservation: 評価(証明)
● 方針:
直前のtyping rule(導出規則)に応じて場合分け。
●
t = x (Case-Variable)
● t = λx:T1.t2 (Case-Abstraction)
● t = t1 t2 (Case-Application)
●
t = true (Case-True)
●
t = false (Case-False)
● t = if t1 then t2 else t3 (Case-If)
Preservation: 評価(証明)
● 方針:
直前のtyping rule(導出規則)に応じて場合分け。
●
t = x (Case-Variable)
● t = λx:T1.t2 (Case-Abstraction)
● t = t1 t2 (Case-Application)
●
t = true (Case-True)
●
t = false (Case-False)
● t = if t1 then t2 else t3 (Case-If)
8章
Preservation: 評価(証明)
● t = t1 t2 (Case-Application)
このとき、
Γ |- t1 : T1 → T
Γ |- t2 : T1
t に直前に適用された評価規則として、
E-App1, E-App2, E-AppAbs
の3つがありえる。
Preservation: 評価(証明)
● Subcase-E-App1
このとき、あるt1'が存在し、
t1 → t1'
t → t' = t1't2
帰納法の仮定により、
Γ |- t1': T1 → T
よって、T-Appより
Γ |- t1't2 : T
● Subcase-E-App2 もほぼ同様。
Preservation: 評価(証明)
● Subcase-E-App1
このとき、あるt1'が存在し、
t1 → t1'
t → t' = t1't2
帰納法の仮定により、
Γ |- t1': T1 → T
よって、T-Appより
Γ |- t1't2 : T
● Subcase-E-App2 もほぼ同様。
Preservation: 評価(証明)
● Subcase-E-AppAbs
このとき、あるt12が存在し、
t1 = λx:T1.t12
t → t' = [x → t2]t12 (x ∈ dom(Γ))
t1 : T1 → T であったから、Lemma9.3.1-2 より
Γ,x:T1 |- t12 : T
これと Γ |- t2 : T1 より、
Lemma9.3.8(型保存の定理:代入)を適用できて
Γ |- [x → t2]t12 : T
型の削除
● 項の評価(プログラム実行)時には、型情報を
保持しておく必要はない。
(型安全性は静的に保障されているので)
● 型の削除は、評価の任意のタイミングで行うこ
とができる
(評価してから型を外しても、型を外してから
評価しても、評価結果は変わらない)
型の削除
Simply typed λ-calculus での erasure(型
削除子)の定義:
変数に対して、
erase(x) := x
λ抽象に対して、
erase(λx:T.t) := λx.erase(t)
関数適用に対して、
erase(t1 t2) := erase(t1)erase(t2)
型の削除
定理(9.5.2):
1.
2.
t t'
erase(t) erase(t')
erase erase
t t'
erase(t) m'
erase erase
ヨ
型の削除
t0
e(t0) e(t1)
t1
e(ti)
ti
e(tn)
tn
・・・
・・・
・・・
・・・
erase
evaluation
e(・) := erase(・)
型づけ可能性(Def 9.5.3)
t0
m0
t1 ti tn
・・・
・・・
・・・
・・・
m1 mi mn
typed λ-calculus
untyped λ-calculus
Untyped lambda-calculus の項から見ると、
この関係は「型付け可能性」を示している
9章のまとめ
● 5章で扱った lambda-calculus の体系
に、Simply typed booleansを基本型として
Simpleな型付け規則を導入しました。
● Simply typed lambda-calculus において、
型付けの一意性を証明しました。
● Simply typed lambda-calculus において、
型安全性(Progress + Preservation) を証明し
ました。
Appendix
● Curry-Howard対応 (9.4節)
論理とプログラミング言語の対応関係
≪命題Pの証明(可能性)≫の問題を
≪型Pの項(の存在)≫に帰着させることがで
きる。
λ簡約…証明の単純化に相当
●
様々な論理/型システムに適用可能
例:線形論理 → 線形型システム

Contenu connexe

Tendances

Rにおける大規模データ解析(第10回TokyoWebMining)
Rにおける大規模データ解析(第10回TokyoWebMining)Rにおける大規模データ解析(第10回TokyoWebMining)
Rにおける大規模データ解析(第10回TokyoWebMining)
Shintaro Fukushima
 
オブジェクト指向できていますか?
オブジェクト指向できていますか?オブジェクト指向できていますか?
オブジェクト指向できていますか?
Moriharu Ohzu
 

Tendances (20)

文字列カーネルによる辞書なしツイート分類 〜文字列カーネル入門〜
文字列カーネルによる辞書なしツイート分類 〜文字列カーネル入門〜文字列カーネルによる辞書なしツイート分類 〜文字列カーネル入門〜
文字列カーネルによる辞書なしツイート分類 〜文字列カーネル入門〜
 
Estimating Mutual Information for Discrete‐Continuous Mixtures 離散・連続混合の相互情報量の推定
Estimating Mutual Information for Discrete‐Continuous Mixtures 離散・連続混合の相互情報量の推定Estimating Mutual Information for Discrete‐Continuous Mixtures 離散・連続混合の相互情報量の推定
Estimating Mutual Information for Discrete‐Continuous Mixtures 離散・連続混合の相互情報量の推定
 
チームメイトのためにdocstringを書こう! pyconjp2019
チームメイトのためにdocstringを書こう! pyconjp2019チームメイトのためにdocstringを書こう! pyconjp2019
チームメイトのためにdocstringを書こう! pyconjp2019
 
Rpn and forth 超入門
Rpn and forth 超入門Rpn and forth 超入門
Rpn and forth 超入門
 
20170422 数学カフェ Part2
20170422 数学カフェ Part220170422 数学カフェ Part2
20170422 数学カフェ Part2
 
Rにおける大規模データ解析(第10回TokyoWebMining)
Rにおける大規模データ解析(第10回TokyoWebMining)Rにおける大規模データ解析(第10回TokyoWebMining)
Rにおける大規模データ解析(第10回TokyoWebMining)
 
たのしい高階関数
たのしい高階関数たのしい高階関数
たのしい高階関数
 
EMアルゴリズム
EMアルゴリズムEMアルゴリズム
EMアルゴリズム
 
圏論のモナドとHaskellのモナド
圏論のモナドとHaskellのモナド圏論のモナドとHaskellのモナド
圏論のモナドとHaskellのモナド
 
[DL輪読会]Convolutional Conditional Neural Processesと Neural Processes Familyの紹介
[DL輪読会]Convolutional Conditional Neural Processesと Neural Processes Familyの紹介[DL輪読会]Convolutional Conditional Neural Processesと Neural Processes Familyの紹介
[DL輪読会]Convolutional Conditional Neural Processesと Neural Processes Familyの紹介
 
Rの高速化
Rの高速化Rの高速化
Rの高速化
 
R高速化
R高速化R高速化
R高速化
 
自動定理証明の紹介
自動定理証明の紹介自動定理証明の紹介
自動定理証明の紹介
 
オブジェクト指向できていますか?
オブジェクト指向できていますか?オブジェクト指向できていますか?
オブジェクト指向できていますか?
 
xtsパッケージで時系列解析
xtsパッケージで時系列解析xtsパッケージで時系列解析
xtsパッケージで時系列解析
 
TabNetの論文紹介
TabNetの論文紹介TabNetの論文紹介
TabNetの論文紹介
 
中3女子でもわかる constexpr
中3女子でもわかる constexpr中3女子でもわかる constexpr
中3女子でもわかる constexpr
 
並列プログラミング 入門!&おさらい!
並列プログラミング入門!&おさらい!並列プログラミング入門!&おさらい!
並列プログラミング 入門!&おさらい!
 
TensorFlow計算グラフ最適化処理
TensorFlow計算グラフ最適化処理TensorFlow計算グラフ最適化処理
TensorFlow計算グラフ最適化処理
 
二次形式と素数で遊ぼう - 第2回 #日曜数学会
二次形式と素数で遊ぼう - 第2回 #日曜数学会 二次形式と素数で遊ぼう - 第2回 #日曜数学会
二次形式と素数で遊ぼう - 第2回 #日曜数学会
 

Similaire à TaPL9

20120829_TaPL8
20120829_TaPL820120829_TaPL8
20120829_TaPL8
5th_person
 
オンライン凸最適化と線形識別モデル学習の最前線_IBIS2011
オンライン凸最適化と線形識別モデル学習の最前線_IBIS2011オンライン凸最適化と線形識別モデル学習の最前線_IBIS2011
オンライン凸最適化と線形識別モデル学習の最前線_IBIS2011
Preferred Networks
 
パターン認識第9章 学習ベクトル量子化
パターン認識第9章 学習ベクトル量子化パターン認識第9章 学習ベクトル量子化
パターン認識第9章 学習ベクトル量子化
Miyoshi Yuya
 

Similaire à TaPL9 (16)

20120829_TaPL8
20120829_TaPL820120829_TaPL8
20120829_TaPL8
 
TaPL読書会 #9 ~ §14 Exception
TaPL読書会 #9 ~ §14 ExceptionTaPL読書会 #9 ~ §14 Exception
TaPL読書会 #9 ~ §14 Exception
 
Tpp2012 mwpl on_coq
Tpp2012 mwpl on_coqTpp2012 mwpl on_coq
Tpp2012 mwpl on_coq
 
TaPL_chap11
TaPL_chap11TaPL_chap11
TaPL_chap11
 
[第2版]Python機械学習プログラミング 第14章
[第2版]Python機械学習プログラミング 第14章[第2版]Python機械学習プログラミング 第14章
[第2版]Python機械学習プログラミング 第14章
 
言語処理系入門€7
言語処理系入門€7言語処理系入門€7
言語処理系入門€7
 
Pythonintro
PythonintroPythonintro
Pythonintro
 
PRML 第4章
PRML 第4章PRML 第4章
PRML 第4章
 
PRML 6.1章 カーネル法と双対表現
PRML 6.1章 カーネル法と双対表現PRML 6.1章 カーネル法と双対表現
PRML 6.1章 カーネル法と双対表現
 
型推論
型推論型推論
型推論
 
PRML 第14章
PRML 第14章PRML 第14章
PRML 第14章
 
オンライン凸最適化と線形識別モデル学習の最前線_IBIS2011
オンライン凸最適化と線形識別モデル学習の最前線_IBIS2011オンライン凸最適化と線形識別モデル学習の最前線_IBIS2011
オンライン凸最適化と線形識別モデル学習の最前線_IBIS2011
 
論理と計算のしくみ 5.3 型付きλ計算 (前半)
論理と計算のしくみ 5.3 型付きλ計算 (前半)論理と計算のしくみ 5.3 型付きλ計算 (前半)
論理と計算のしくみ 5.3 型付きλ計算 (前半)
 
パターン認識第9章 学習ベクトル量子化
パターン認識第9章 学習ベクトル量子化パターン認識第9章 学習ベクトル量子化
パターン認識第9章 学習ベクトル量子化
 
Chap. 6(nakagawa)
Chap. 6(nakagawa)Chap. 6(nakagawa)
Chap. 6(nakagawa)
 
PRML輪講用資料10章(パターン認識と機械学習,近似推論法)
PRML輪講用資料10章(パターン認識と機械学習,近似推論法)PRML輪講用資料10章(パターン認識と機械学習,近似推論法)
PRML輪講用資料10章(パターン認識と機械学習,近似推論法)
 

TaPL9