410 likes | 547 Views
米澤研究室 全体ミーティング. 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)
E N D
米澤研究室 全体ミーティング 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) • 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.
Alpha Equivalence • 束縛変数名の選び方の違いを無視する λx. ax =αλy. ay=αλz. az • 型システムなどの証明では alpha-equivalent な項を同一視することがよくある • 構文的には異なる項であるにもかかわらず
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 などでこれを定義しようとすると複雑になる
Locally Nameless Representation • Alpha-equivalent な項が全て構文的に等しくなるようにする • (著者ら曰く) 人間にとって分かりにくい λx. λy. xay λz. λk. zak λ. λ. 1a 0
Nominal Logic • 一階述語論理の拡張 • Atom の互換、N 量化子、# 演算子…… • Nominal logic の上で型付きラムダ計算を定義し健全性などを証明することを想定 • 変数名を明示的に扱える • Alpha equivalent な項を同一視できる
Nominal Logic vs. CIC • Nominal logic • Alpha equivalent な項を等しいものとして扱える • CIC • 帰納的データ型を定義する機能が備わっている
Nominal Logic の定義の構成 • Signatures and sorts • Terms and formulas • Axioms
Signature • Signature とは以下の集まり • Sort を表す記号の集合 • 各記号は以下のどちらかを表す • A sort of atoms • A sort of data • 関数を表す記号とその arity の集合 • Arity は関数の (一つ以上の)引数と戻り値の sort • 関係を表す記号とその arity の集合 • Arity は関係の(一つ以上の)引数の sort
Sorts • SortsS := A(sort of atoms)D(sort of data) [A]S(sort of atom-abstraction) • Aと D は signature で定義された sort を表す記号
(例) ラムダ計算の定式化 • 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
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
(例) ラムダ項 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
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 続く
Formulas • φと Ψが formula ならば以下も formula • ¬φ • φ∧Ψ • φ∨Ψ • φ⇒Ψ • φ⇔Ψ 続く
Formulas • (∀x : S)φと (∃x : S)φは formula ただし • xは sort Sの変数 • φは formula • (Nx : A)φは formula ただし • xは sort of atoms Aの変数 • φは formula
(例) Formulas x : Var, y : Var, z : Var, t: Term とすると以下は formula • ¬t = t • x # y • x # t∧y # t⇒(xy)·t = t
Axioms • Nominal logic の公理は • 普通の一階述語論理の公理 • 例:φ∧Ψ⇒ φ • Nominal logic 独自の公理 • Swapping に関する公理 • Equivariance に関する公理 • Freshness に関する公理 • ……
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
なぜ Swapping を扱うのか • 普通の substitution よりも • 単純 • よい性質を持つ 例えば t = t′ ならば (ab)·t =α (ab)·t′ は成り立つが t = t′ ならば t{a ↦ b} =α t′{a ↦ b} は成り立たない (自由変数の capture-avoiding でない置換)
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)
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) 自由変数の名前を自由に変えられる
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
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 を使った型システムの定義でも同様の性質が成り立つ
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) …」で表す
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
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′
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 を等しいものとして扱える
論理体系の解釈 • 論理体系に現れる記号に意味を与えること • 命題論理での例 • 解釈関数 [[·]] を以下のように定める • [[P]] = ⊥ • [[Q]] = ⊤ • [[⊤⇒⊤]] = ⊤, [[⊤⇒⊥]] = ⊥, [[⊥⇒⊤]] = ⊤, [[⊥⇒⊥]] = ⊤ • すると論理式 P⇒Qはこの解釈により充足される • [[P⇒Q]] = ⊤
Nominal Logic の解釈 • Atoms, swapping, freshness を “nominal set” によって解釈する • Nominal set とは • その要素に対して atom の swapping が適切に定義されている • Finite support property を持つ • 射が定義される
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) そのもの
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))
Nominal Set の射 • Nominal set X, Yに対し Xから Yへの関数 f : X→ Yが射であるとは任意の x∈Xと atom a,a′ に対し f((aa′)·Xx) = (aa′)·Yf(x) • 定理:Nominal set は圏をなす
Signature の解釈 • Nominal set の圏をあてはめる • [[S]] = (対応する適当な 圏論的意味でのobject) • [[f : S1, …, Sn→ S]] = (対応する適当な射) : [[S1]]×…×[[Sn]] → [[S]] • [[R <: S1, …, Sn]] = [[S1]]×…×[[Sn]] の subobject
Atom の解釈 • [[A]] = (対応する適当な 圏論的意味でのobject) • ただし • Atom の互換が定義されていること • 異なる sorts of atoms は互いに素であること
Swapping の解釈 • Term x : S に対し[[(aa′)·x]] = ([[a]] [[a′]])·[[S]] [[x]]
Freshness の解釈 • [[a # x]] = (a∉ supp(x))
Nominal Logic の健全性 • 定理:nominal sets による解釈は nominal logic の axioms を全て充足する
まとめ • Nominal logic という一階述語論理の拡張を定義した • Alpha equivalent な項を同一視して扱える • ポイント: • Substitution より swapping の方がよい性質を持つ • 特に equivariantな formula と親和性が高い
関連研究 • 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 を実装