1 / 40

米澤研究室 全体ミーティング

米澤研究室 全体ミーティング. 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)

leif
Download Presentation

米澤研究室 全体ミーティング

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 米澤研究室 全体ミーティング 2011/03/02 M2 渡邊裕貴

  2. 今日の内容 • 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.

  3. Alpha Equivalence • 束縛変数名の選び方の違いを無視する λx. ax =αλy. ay=αλz. az • 型システムなどの証明では alpha-equivalent な項を同一視することがよくある • 構文的には異なる項であるにもかかわらず

  4. Alpha Equivalence の必要性 • 置換 (substitution) × (λy. yx)[x↦ λw. y] = λy. y (λw. y) ○ (λy. yx)[x ↦ λw. y] = (λz. zx)[x ↦ λw. y] = λz. z (λw. y) where z ≠ y • Coq などでこれを定義しようとすると複雑になる

  5. Locally Nameless Representation • Alpha-equivalent な項が全て構文的に等しくなるようにする • (著者ら曰く) 人間にとって分かりにくい λx. λy. xay λz. λk. zak λ. λ. 1a 0

  6. Nominal Logic • 一階述語論理の拡張 • Atom の互換、N 量化子、# 演算子…… • Nominal logic の上で型付きラムダ計算を定義し健全性などを証明することを想定 • 変数名を明示的に扱える • Alpha equivalent な項を同一視できる

  7. Nominal Logic vs. CIC • Nominal logic • Alpha equivalent な項を等しいものとして扱える • CIC • 帰納的データ型を定義する機能が備わっている

  8. Nominal Logic の定義の構成 • Signatures and sorts • Terms and formulas • Axioms

  9. Signature • Signature とは以下の集まり • Sort を表す記号の集合 • 各記号は以下のどちらかを表す • A sort of atoms • A sort of data • 関数を表す記号とその arity の集合 • Arity は関数の (一つ以上の)引数と戻り値の sort • 関係を表す記号とその arity の集合 • Arity は関係の(一つ以上の)引数の sort

  10. Sorts • SortsS := A(sort of atoms)D(sort of data) [A]S(sort of atom-abstraction) • Aと D は signature で定義された sort を表す記号

  11. (例) ラムダ計算の定式化 • 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 | tt | λx. t

  12. Terms • Term は帰納的に定義 • Well-formed な term は一つの sort に属する • x : Sただし xは sort Sの変数 • f(t1, …, tn) : Sただし • f : S1, …, Sn→ S • ti : Si(1 ≤ i≤ n) • (t1t2)·t3 : Sただし • t1 : A, t2 : A, t3 : S • t1.t2 : [A]Sただし • t1 : A, t2 : S Aは sort of atoms Sは sort

  13. (例) ラムダ項 x : Var, t : Term とすると var(x) : Term app(var(x), t) : Term x.app(var(x), t) : [Var]Term lam(x.app(var(x), t)) : Term x xt λx. xt

  14. Formulas • Formula は帰納的に定義 • R(t1, …, tn) は formula ただし • R <: S1, …, Sn • ti : Si(1 ≤ i≤ n) • t1 = t2は formula ただし • t1 : S, t2 : S • t1 # t2は formula ただし • t1 : A, t2 : S 続く

  15. Formulas • φと Ψが formula ならば以下も formula • ¬φ • φ∧Ψ • φ∨Ψ • φ⇒Ψ • φ⇔Ψ 続く

  16. Formulas • (∀x : S)φと (∃x : S)φは formula ただし • xは sort Sの変数 • φは formula • (Nx : A)φは formula ただし • xは sort of atoms Aの変数 • φは formula

  17. (例) Formulas x : Var, y : Var, z : Var, t: Term とすると以下は formula • ¬t = t • x # y • x # t∧y # t⇒(xy)·t = t

  18. Axioms • Nominal logic の公理は • 普通の一階述語論理の公理 • 例:φ∧Ψ⇒ φ • Nominal logic 独自の公理 • Swapping に関する公理 • Equivariance に関する公理 • Freshness に関する公理 • ……

  19. Swapping • (t1t2)·t3は t3に含まれる t1と t2を全て入れ替えたものを表す • Free か bound かにかかわらず全部入れ替える • Swapping に関する axioms • (S1) (∀a : A)(∀x : S) (aa)·x = x • (S2) (∀a, a′ : A)(∀x : S) (aa′)·(aa′)·x = x • (S3) (∀a, a′ : A) (aa′)·a = a′ Aは sort of atoms Sは sort

  20. なぜ Swapping を扱うのか • 普通の substitution よりも • 単純 • よい性質を持つ 例えば t = t′ ならば (ab)·t =α (ab)·t′ は成り立つが t = t′ ならば t{a ↦ b} =α t′{a ↦ b} は成り立たない (自由変数の capture-avoiding でない置換)

  21. Equivariance • Equivariance に関する公理 • (E1) (∀a, a′ : A)(∀b, b′ : A′)(∀x : S) (aa′)·(bb′)·x = ((aa′)·b (aa′)·b′)·(aa′)·x • (E2) (∀a, a′ : A)(∀b : A)(∀x : S) b # x⇒ (aa′)·b # (aa′)·x • (E3) (∀a, a′ : A)(∀x1 : S1)...(∀xn : Sn) (aa′)·f(x1, …, xn) = f((aa′)·x1, …, (aa′)·xn)ただし f : S1, …, Sn→ S • (E4) (∀a, a′ : A)(∀x1 : S1)...(∀xn : Sn)R(x1, …, xn) ⇒R((aa′)·x1, …, (aa′)·xn)ただし R <: S1, …, Sn • (E5) (∀b, b′ : A)(∀a : A)(∀x : S) (bb′)·(a.x) = ((bb′)·a).((bb′)·x)

  22. Equivariance に関する定理 • n 個の自由変数 x1, …, xnを持つ term t(x1, …, xn) について (∀a, a′ : A)(∀x1 : S1)...(∀xn : Sn) (aa′)·t(x1, …, xn) = t((aa′)·x1, …, (aa′)·xn) • n 個の自由変数 x1, …, xnを持つ formula φ(x1, …, xn) について (∀a, a′ : A)(∀x1 : S1)...(∀xn : Sn)φ(x1, …, xn) ⇔φ((aa′)·x1, …, (aa′)·xn) 自由変数の名前を自由に変えられる

  23. Freshness • t1 # t2は t1が t2の自由変数でないことを表す • Freshness に関する axioms • (F1) (∀a, a′ : A)(∀x : S) a # x∧a′ # x⇒ (aa′)·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

  24. 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) Locally nameless representation を使った型システムの定義でも同様の性質が成り立つ

  25. 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) …」で表す

  26. Atom Abstraction • Term t1 : A, t2 : Sに対しt1.t2は t2の中で t1を束縛することを表す • Cf. スライド 12 • Atom abstraction に関する公理 • (E5)再掲 (∀b, b′ : A)(∀a : A)(∀x : S) (bb′)·(a.x) = ((bb′)·a).((bb′)·x) • (A1) (∀a, a′ : A)(∀x, x′ : S)a.x = a′.x′ ⇔a = a′ ∧x = x′∨ a′ # x∧x′ = (aa′)·x • (A2) (∀y : [A]S)(∃a : A)(∃x : S) y = a.x

  27. 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) (aa″)·x = (a′ a″)·x′

  28. 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)) Alpha equivalent な term を等しいものとして扱える

  29. 論理体系の解釈 • 論理体系に現れる記号に意味を与えること • 命題論理での例 • 解釈関数 [[·]] を以下のように定める • [[P]] = ⊥ • [[Q]] = ⊤ • [[⊤⇒⊤]] = ⊤, [[⊤⇒⊥]] = ⊥, [[⊥⇒⊤]] = ⊤, [[⊥⇒⊥]] = ⊤ • すると論理式 P⇒Qはこの解釈により充足される • [[P⇒Q]] = ⊤

  30. Nominal Logic の解釈 • Atoms, swapping, freshness を “nominal set” によって解釈する • Nominal set とは • その要素に対して atom の swapping が適切に定義されている • Finite support property を持つ • 射が定義される

  31. Nominal Set においてSwapping が満たすべき条件 • Nominal set Xの要素 x∈Xと同種の atom a, a′ について swapping (aa′)·Xxが常に定義される • (aa)·Xx = x • (aa′)·X(aa′)·Xx = x • (aa′)·X(bb′)·Xx = ((aa′)b (aa′)b′)·X(aa′)·Xx • ただし (aa′) は aとa′ との互換 実は公理 (S1), (S2), (E1) そのもの

  32. Finite Support Property • Nominal set Xの任意の要素 x∈Xに含まれる atom は有限である。すなわち • 任意の x∈Xに対し atom の有限集合 wが存在し任意の a,a′ ∉wに対し (aa′)·Xx = x • このような最小の wは各 xに対し一意に求まるのでそれを xの support と呼ぶ (= supp(x))

  33. Nominal Set の射 • Nominal set X, Yに対し Xから Yへの関数 f : X→ Yが射であるとは任意の x∈Xと atom a,a′ に対し f((aa′)·Xx) = (aa′)·Yf(x) • 定理:Nominal set は圏をなす

  34. Signature の解釈 • Nominal set の圏をあてはめる • [[S]] = (対応する適当な 圏論的意味でのobject) • [[f : S1, …, Sn→ S]] = (対応する適当な射) : [[S1]]×…×[[Sn]] → [[S]] • [[R <: S1, …, Sn]] = [[S1]]×…×[[Sn]] の subobject

  35. Atom の解釈 • [[A]] = (対応する適当な 圏論的意味でのobject) • ただし • Atom の互換が定義されていること • 異なる sorts of atoms は互いに素であること

  36. Swapping の解釈 • Term x : S に対し[[(aa′)·x]] = ([[a]] [[a′]])·[[S]] [[x]]

  37. Freshness の解釈 • [[a # x]] = (a∉ supp(x))

  38. Nominal Logic の健全性 • 定理:nominal sets による解釈は nominal logic の axioms を全て充足する

  39. まとめ • Nominal logic という一階述語論理の拡張を定義した • Alpha equivalent な項を同一視して扱える • ポイント: • Substitution より swapping の方がよい性質を持つ • 特に equivariantな formula と親和性が高い

  40. 関連研究 • 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 を実装

More Related