米澤研究室 全体ミーティング
DESCRIPTION
米澤研究室 全体ミーティング. 2011/03/02 M2 渡邊裕貴. 今日の内容. Nominal logic Andrew M. Pitts. “Nominal logic: A first order theory of names and binding.” In Information and Computation , Vol. 186, No. 2, pp. 165–193, 2003. (TACS 2001) - PowerPoint PPT PresentationTRANSCRIPT
米澤研究室 全体ミーティング
2011/03/02M2 渡邊裕貴
1
今日の内容• Nominal logic– Andrew M. Pitts.
“Nominal logic: A first order theory of names and binding.” In Information and Computation, Vol. 186, No. 2, pp. 165–193, 2003. (TACS 2001)
– Murdoch J. Gabbay and Andrew M. Pitts. “A new approach to abstract syntax with variable binding.” In Formal Aspects of Computing, Vol. 13, No. 3, pp. 341–363, 2002.
2
Alpha Equivalence
• 束縛変数名の選び方の違いを無視する
λx. a x =α λy. a y =α λz. a z
• 型システムなどの証明では alpha-equivalent な項を同一視することがよくある– 構文的には異なる項であるにもかかわらず
3
Alpha Equivalence の必要性• 置換 (substitution)
× (λy. y x)[x λ↦ w. y] = λy. y (λw. y)
○ (λy. y x)[x λ↦ w. y] = (λz. z x)[x λ↦ w. y] = λz. z (λw. y)
where z ≠ y
– Coq などでこれを定義しようとすると複雑になる
4
Locally Nameless Representation
• Alpha-equivalent な項が全て構文的に等しくなるようにする
– ( 著者ら曰く ) 人間にとって分かりにくい
λx. λy. x a y λz. λk. z a k
λ. λ. 1 a 0
5
Nominal Logic
• 一階述語論理の拡張– Atom の互換、 N 量化子、 # 演算子……
– Nominal logic の上で型付きラムダ計算を定義し健全性などを証明することを想定• 変数名を明示的に扱える• Alpha equivalent な項を同一視できる
6
Nominal Logic vs. CIC
• Nominal logic– Alpha equivalent な項を等しいものとして扱え
る• CIC– 帰納的データ型を定義する機能が備わってい
る
7
Nominal Logic の定義の構成• Signatures and sorts• Terms and formulas• Axioms
8
Signature
• Signature とは以下の集まり– Sort を表す記号の集合• 各記号は以下のどちらかを表す
– A sort of atoms– A sort of data
– 関数を表す記号とその arity の集合• Arity は関数の ( 一つ以上の ) 引数と戻り値の sort
– 関係を表す記号とその arity の集合• Arity は関係の ( 一つ以上の ) 引数の sort
9
Sorts
• Sorts S := A (sort of atoms)
D (sort of data)
[A]S (sort of atom-abstraction)
– A と D は signature で定義された sort を表す記号
10
( 例 ) ラムダ計算の定式化• Sort 記号の集合 := { Var(atoms), Term(data) }• 関数記号の集合 := {
var : Var → Term,app : Term, Term → Term,lam : [Var]Term → Term,
}• 関係記号の集合 := {
Subst <: Term, Var, Term, TermEval <: Term, Term
}
t := x | t t | λx. t
11
Terms
• Term は帰納的に定義– Well-formed な term は一つの sort に属する
1. x : S ただし x は sort S の変数
2. f(t1, …, tn) : S ただし
– f : S1, …, Sn → S
– ti : Si (1 ≤ i ≤ n)
3. (t1 t2)·t3 : S ただし
– t1 : A, t2 : A, t3 : S
4. t1.t2 : [A]S ただし
– t1 : A, t2 : S
12
A は sort of atomsS は sort
( 例 ) ラムダ項x : Var, t : Term とすると
var(x) : Termapp(var(x), t) : Termx.app(var(x), t) : [Var]Termlam(x.app(var(x), t)) : Term
13
x
x t
λx. x t
Formulas
• Formula は帰納的に定義1. R(t1, …, tn) は formula ただし
– R <: S1, …, Sn
– ti : Si (1 ≤ i ≤ n)
2. t1 = t2 は formula ただし
– t1 : S, t2 : S
3. t1 # t2 は formula ただし
– t1 : A, t2 : S14
続く
Formulas
4. φ と Ψ が formula ならば以下も formula– ¬φ– φ ∧ Ψ– φ ∨ Ψ– φ ⇒ Ψ– φ ⇔ Ψ
15
続く
Formulas
5. (∀x : S)φ と (∃x : S)φ は formula ただし– x は sort S の変数– φ は formula
6. (Nx : A)φ は formula ただし– x は sort of atoms A の変数– φ は formula
16
( 例 ) Formulas
x : Var, y : Var, z : Var, t : Term とすると以下は formula
• ¬ t = t• x # y• x # t ∧ y # t ⇒ (x y)·t = t
17
Axioms
• Nominal logic の公理は– 普通の一階述語論理の公理• 例 : φ ∧ Ψ ⇒ φ
– Nominal logic 独自の公理• Swapping に関する公理• Equivariance に関する公理• Freshness に関する公理• ……
18
Swapping
• (t1 t2)·t3 は t3 に含まれる t1 と t2 を全て入れ替えたものを表す– Free か bound かにかかわらず全部入れ替え
る• Swapping に関する axioms– (S1) (∀a : A)(∀x : S) (a a)·x = x– (S2) (∀a, a : ′ A)(∀x : S) (a a )·(′ a a )·′ x = x– (S3) (∀a, a : ′ A) (a a )·′ a = a′
19
A は sort of atomsS は sort
なぜ Swapping を扱うのか• 普通の substitution よりも– 単純– よい性質を持つ
例えばt = t ′ ならば (a b)·t =α (a b)·t′
は成り立つがt = t ′ ならば t{a ↦ b} =α t {′ a ↦ b}
は成り立たない
20
( 自由変数の capture-avoiding でない置換 )
Equivariance
• Equivariance に関する公理– (E1) (∀a, a : ′ A)(∀b, b : ′ A )(′ ∀x : S)
(a a )·(′ b b )·′ x = ((a a )·′ b (a a )·′ b )·(′ a a )·′ x– (E2) (∀a, a : ′ A)(∀b : A)(∀x : S)
b # x ⇒ (a a )·′ b # (a a )·′ x– (E3) (∀a, a : ′ A)(∀x1 : S1)...(∀xn : Sn)
(a a )·′ f(x1, …, xn) = f((a a )·′ x1, …, (a a )·′ xn) ただし f : S1, …, Sn → S
– (E4) (∀a, a : ′ A)(∀x1 : S1)...(∀xn : Sn)R(x1, …, xn) ⇒ R((a a )·′ x1, …, (a a )·′ xn) ただし R <: S1, …, Sn
– (E5) (∀b, b : ′ A)(∀a : A)(∀x : S) (b b )·(′ a.x) = ((b b )·′ a).((b b )·′ x)
21
Equivariance に関する定理• n 個の自由変数 x1, …, xn を持つ term
t(x1, …, xn) について(∀a, a : ′ A)(∀x1 : S1)...(∀xn : Sn)(a a )·′ t(x1, …, xn) = t((a a )·′ x1, …, (a a )·′ xn)
• n 個の自由変数 x1, …, xn を持つ formula φ(x1, …, xn) について
(∀a, a : ′ A)(∀x1 : S1)...(∀xn : Sn)φ(x1, …, xn) ⇔ φ((a a )·′ x1, …, (a a )·′ xn)
22
自由変数の名前を自由に変えられる
Freshness
• t1 # t2 は t1 が t2 の自由変数でないことを表す
• Freshness に関する axioms– (F1) (∀a, a : ′ A)(∀x : S) a # x ∧ a # ′ x ⇒ (a a )·′ x = x– (F2) (∀a, a : ′ A) a # a ′⇔ ¬ a = a′– (F3) (∀a : A)(∀a : ′ A )′ a # a ′ ただし A ≠ A′
– (F4) (∀x1 : S1)...(∀xn : Sn)(∃a : A) a # x1 ∧ ... ∧ a # xn
23
Freshness に関する定理• n+1 個の自由変数 a, x1, …, xn を持つ任意
の formula φ(a, x1, …, xn) について
(∃a : A) a # x1 ∧ ... ∧ a # xn ∧ φ(a, x1, …, xn) ⇔(∀a : A) a # x1 ∧ ... ∧ a # xn ⇒ φ(a, x1, …, xn)
24
Locally nameless representation を使った型システムの定義でも同様の性質が成り立つ
N 量化子• N 量化子に関する axiom– (Q) (Na : A) φ(a, x1, …, xn) ⇔
(∃a : A) a # x1 ∧ … ∧ a # xn ∧ φ(a, x1, …, xn)
–「 (∃a : A) a # x1 ∧ ... ∧ a # xn ∧ …」と「 (∀a : A) a # x1 ∧ ... ∧ a # xn ⇒ …」が等しいことがわかっているのでこれを「 (Na : A) …」で表す
25
Atom Abstraction
• Term t1 : A, t2 : S に対しt1.t2 は t2 の中で t1 を束縛することを表す– Cf. スライド 12
• Atom abstraction に関する公理– (E5) 再掲 (∀b, b : ′ A)(∀a : A)(∀x : S)
(b b )·(′ a.x) = ((b b )·′ a).((b b )·′ x) – (A1) (∀a, a : ′ A)(∀x, x : ′ S)
a.x = a .′ x ′⇔ a = a ′∧ x = x′ ∨ a # ′ x ∧ x′ = (a a )·′ x
– (A2) (∀y : [A]S)(∃a : A)(∃x : S) y = a.x
26
Atom Abstraction に関する定理• (∀a, a : ′ A)(∀x : S) a # ′ a.x ⇔ a = ′ a ∨ a # ′ x • (∀a : A)(∀a : ′ A )(′ ∀x : S) a # ′ a.x ⇔ a # ′ x
• (∀a, a : ′ A)(∀x, x : ′ S) a.x = a .′ x ′⇔ (Na″ : A) (a a″)·x = (a ′ a″)·x′
27
Atom Abstraction に関する例• 以下の formula は nominal logic で証明可
能– (∀x, y : Var)(∀t : Term) x # t ∧ y # t ⇒
lam(x.app(var(x), t)) = lam(y.app(var(y), t))
28
Alpha equivalent な term を等しいものとして扱える
論理体系の解釈• 論理体系に現れる記号に意味を与えること
• 命題論理での例– 解釈関数 [[·]] を以下のように定める
• [[P]] = ⊥• [[Q]] = ⊤• [[⊤⇒ ]] = , [[⊤ ⊤ ⊤⇒⊥]] = ⊥, [[⊥⇒ ]] = , [[⊤ ⊤ ⊥⇒⊥]] = ⊤
– すると論理式 P ⇒ Q はこの解釈により充足される• [[P ⇒ Q]] = ⊤
29
Nominal Logic の解釈• Atoms, swapping, freshness を “ nominal set”
によって解釈する
• Nominal set とは– その要素に対して atom の swapping が
適切に定義されている– Finite support property を持つ– 射が定義される
30
Nominal Set においてSwapping が満たすべき条件
• Nominal set X の要素 x ∈ X と 同種の atom a, a ′ についてswapping (a a )·′ X x が常に定義される
• (a a)·X x = x
• (a a )·′ X(a a )·′ X x = x
• (a a )·′ X(b b )·′ X x = ((a a )′ b (a a )′ b )·′ X(a a )·′ X x– ただし (a a ) ′ は a と a ′ との互換
31
実は公理 (S1), (S2), (E1) そのもの
Finite Support Property
• Nominal set X の任意の要素 x ∈ X に含ま れる atom は有限である。すなわち– 任意の x ∈ X に対し
atom の有限集合 w が存在し 任意の a, a ′∉ w に対し (a a )·′ X x = x
– このような最小の w は各 x に対し一意に求 まるのでそれを x の support と呼ぶ (= supp(x))
32
Nominal Set の射• Nominal set X, Y に対し X から Y への関数
f : X → Y が射であるとは
任意の x ∈ X と atom a, a ′ に対しf((a a )·′ X x) = (a a )·′ Y f(x)
–定理 : Nominal set は圏をなす33
Signature の解釈• Nominal set の圏をあてはめる– [[S]] = ( 対応する適当な 圏論的意味での object)– [[f : S1, …, Sn → S]] = ( 対応する適当な射 )
: [[S1]]×…×[[Sn]] → [[S]]
– [[R <: S1, …, Sn]] = [[S1]]×…×[[Sn]] の subobject
34
Atom の解釈• [[A]] = ( 対応する適当な 圏論的意味での object)• ただし– Atom の互換が定義されていること– 異なる sorts of atoms は互いに素であること
35
Swapping の解釈• Term x : S に対し
[[(a a )·′ x]] = ([[a]] [[a ]])·′ [[S]] [[x]]
36
Freshness の解釈• [[a # x]] = (a supp(∉ x))
37
Nominal Logic の健全性• 定理 : nominal sets による解釈は nominal
logic の axioms を全て充足する
38
まとめ• Nominal logic という一階述語論理の拡張
を定義した– Alpha equivalent な項を同一視して扱える
• ポイント :– Substitution より swapping の方がよい性質を
持つ– 特に equivariant な formula と親和性が高い
39
関連研究• Nominal Isabelle– Isabelle/HOL の nominal logic による拡張– http://isabelle.in.tum.de/nominal/
• B. Aydemir et al. “Nominal Reasoning Techniques in Coq” LFMTP 2006.– Coq 上に locally nameless representation を
使って nominal logic を実装
40