SlideShare ist ein Scribd-Unternehmen logo
1 von 71
Downloaden Sie, um offline zu lesen
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の項(の存在)≫に帰着させることがで
きる。
λ簡約…証明の単純化に相当
●
様々な論理/型システムに適用可能
例:線形論理 → 線形型システム

Weitere ähnliche Inhalte

Was ist angesagt?

PRML 1.5-1.5.5 決定理論
PRML 1.5-1.5.5 決定理論PRML 1.5-1.5.5 決定理論
PRML 1.5-1.5.5 決定理論Akihiro Nitta
 
高速な倍精度指数関数expの実装
高速な倍精度指数関数expの実装高速な倍精度指数関数expの実装
高速な倍精度指数関数expの実装MITSUNARI Shigeo
 
Visual Studio CodeでRを使う
Visual Studio CodeでRを使うVisual Studio CodeでRを使う
Visual Studio CodeでRを使うAtsushi Hayakawa
 
「型の理論」と証明支援システム -- COQの世界
「型の理論」と証明支援システム -- COQの世界「型の理論」と証明支援システム -- COQの世界
「型の理論」と証明支援システム -- COQの世界maruyama097
 
数学カフェ 確率・統計・機械学習回 「速習 確率・統計」
数学カフェ 確率・統計・機械学習回 「速習 確率・統計」数学カフェ 確率・統計・機械学習回 「速習 確率・統計」
数学カフェ 確率・統計・機械学習回 「速習 確率・統計」Ken'ichi Matsui
 
大規模グラフ解析のための乱択スケッチ技法
大規模グラフ解析のための乱択スケッチ技法大規模グラフ解析のための乱択スケッチ技法
大規模グラフ解析のための乱択スケッチ技法Takuya Akiba
 
充足可能性問題のいろいろ
充足可能性問題のいろいろ充足可能性問題のいろいろ
充足可能性問題のいろいろHiroshi Yamashita
 
Bot勉強会プレゼン
Bot勉強会プレゼンBot勉強会プレゼン
Bot勉強会プレゼンShuhei Sawamura
 
金融情報における時系列分析
金融情報における時系列分析金融情報における時系列分析
金融情報における時系列分析Fujio Toriumi
 
Intro to SVE 富岳のA64FXを触ってみた
Intro to SVE 富岳のA64FXを触ってみたIntro to SVE 富岳のA64FXを触ってみた
Intro to SVE 富岳のA64FXを触ってみたMITSUNARI Shigeo
 
最適化超入門
最適化超入門最適化超入門
最適化超入門Takami Sato
 
証明プログラミング超入門
証明プログラミング超入門証明プログラミング超入門
証明プログラミング超入門Kyoko Kadowaki
 
第11回 配信講義 計算科学技術特論A(2021)
第11回 配信講義 計算科学技術特論A(2021)第11回 配信講義 計算科学技術特論A(2021)
第11回 配信講義 計算科学技術特論A(2021)RCCSRENKEI
 
第8章 ガウス過程回帰による異常検知
第8章 ガウス過程回帰による異常検知第8章 ガウス過程回帰による異常検知
第8章 ガウス過程回帰による異常検知Chika Inoshita
 
プログラミングコンテストでのデータ構造
プログラミングコンテストでのデータ構造プログラミングコンテストでのデータ構造
プログラミングコンテストでのデータ構造Takuya Akiba
 

Was ist angesagt? (20)

PRML 1.5-1.5.5 決定理論
PRML 1.5-1.5.5 決定理論PRML 1.5-1.5.5 決定理論
PRML 1.5-1.5.5 決定理論
 
高速な倍精度指数関数expの実装
高速な倍精度指数関数expの実装高速な倍精度指数関数expの実装
高速な倍精度指数関数expの実装
 
Visual Studio CodeでRを使う
Visual Studio CodeでRを使うVisual Studio CodeでRを使う
Visual Studio CodeでRを使う
 
「型の理論」と証明支援システム -- COQの世界
「型の理論」と証明支援システム -- COQの世界「型の理論」と証明支援システム -- COQの世界
「型の理論」と証明支援システム -- COQの世界
 
1次式とノルムで構成された最適化問題とその双対問題
1次式とノルムで構成された最適化問題とその双対問題1次式とノルムで構成された最適化問題とその双対問題
1次式とノルムで構成された最適化問題とその双対問題
 
数学カフェ 確率・統計・機械学習回 「速習 確率・統計」
数学カフェ 確率・統計・機械学習回 「速習 確率・統計」数学カフェ 確率・統計・機械学習回 「速習 確率・統計」
数学カフェ 確率・統計・機械学習回 「速習 確率・統計」
 
大規模グラフ解析のための乱択スケッチ技法
大規模グラフ解析のための乱択スケッチ技法大規模グラフ解析のための乱択スケッチ技法
大規模グラフ解析のための乱択スケッチ技法
 
充足可能性問題のいろいろ
充足可能性問題のいろいろ充足可能性問題のいろいろ
充足可能性問題のいろいろ
 
Bot勉強会プレゼン
Bot勉強会プレゼンBot勉強会プレゼン
Bot勉強会プレゼン
 
金融情報における時系列分析
金融情報における時系列分析金融情報における時系列分析
金融情報における時系列分析
 
動的計画法を極める!
動的計画法を極める!動的計画法を極める!
動的計画法を極める!
 
Intro to SVE 富岳のA64FXを触ってみた
Intro to SVE 富岳のA64FXを触ってみたIntro to SVE 富岳のA64FXを触ってみた
Intro to SVE 富岳のA64FXを触ってみた
 
最適化超入門
最適化超入門最適化超入門
最適化超入門
 
証明プログラミング超入門
証明プログラミング超入門証明プログラミング超入門
証明プログラミング超入門
 
第11回 配信講義 計算科学技術特論A(2021)
第11回 配信講義 計算科学技術特論A(2021)第11回 配信講義 計算科学技術特論A(2021)
第11回 配信講義 計算科学技術特論A(2021)
 
第8章 ガウス過程回帰による異常検知
第8章 ガウス過程回帰による異常検知第8章 ガウス過程回帰による異常検知
第8章 ガウス過程回帰による異常検知
 
Binary indexed tree
Binary indexed treeBinary indexed tree
Binary indexed tree
 
プログラミングコンテストでのデータ構造
プログラミングコンテストでのデータ構造プログラミングコンテストでのデータ構造
プログラミングコンテストでのデータ構造
 
Chokudai search
Chokudai searchChokudai search
Chokudai search
 
計算量
計算量計算量
計算量
 

Ähnlich wie TaPL9

20120829_TaPL8
20120829_TaPL820120829_TaPL8
20120829_TaPL85th_person
 
TaPL読書会 #9 ~ §14 Exception
TaPL読書会 #9 ~ §14 ExceptionTaPL読書会 #9 ~ §14 Exception
TaPL読書会 #9 ~ §14 ExceptionAkihiro Miyashita
 
Tpp2012 mwpl on_coq
Tpp2012 mwpl on_coqTpp2012 mwpl on_coq
Tpp2012 mwpl on_coqSUDA Keishi
 
TaPL_chap11
TaPL_chap11TaPL_chap11
TaPL_chap11a-hisame
 
[第2版]Python機械学習プログラミング 第14章
[第2版]Python機械学習プログラミング 第14章[第2版]Python機械学習プログラミング 第14章
[第2版]Python機械学習プログラミング 第14章Haruki Eguchi
 
言語処理系入門€7
言語処理系入門€7言語処理系入門€7
言語処理系入門€7Kenta Hattori
 
PRML 6.1章 カーネル法と双対表現
PRML 6.1章 カーネル法と双対表現PRML 6.1章 カーネル法と双対表現
PRML 6.1章 カーネル法と双対表現hagino 3000
 
オンライン凸最適化と線形識別モデル学習の最前線_IBIS2011
オンライン凸最適化と線形識別モデル学習の最前線_IBIS2011オンライン凸最適化と線形識別モデル学習の最前線_IBIS2011
オンライン凸最適化と線形識別モデル学習の最前線_IBIS2011Preferred Networks
 
論理と計算のしくみ 5.3 型付きλ計算 (前半)
論理と計算のしくみ 5.3 型付きλ計算 (前半)論理と計算のしくみ 5.3 型付きλ計算 (前半)
論理と計算のしくみ 5.3 型付きλ計算 (前半)Lintaro Ina
 
パターン認識第9章 学習ベクトル量子化
パターン認識第9章 学習ベクトル量子化パターン認識第9章 学習ベクトル量子化
パターン認識第9章 学習ベクトル量子化Miyoshi Yuya
 
PRML輪講用資料10章(パターン認識と機械学習,近似推論法)
PRML輪講用資料10章(パターン認識と機械学習,近似推論法)PRML輪講用資料10章(パターン認識と機械学習,近似推論法)
PRML輪講用資料10章(パターン認識と機械学習,近似推論法)Toshiyuki Shimono
 

Ähnlich wie 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