Designing Constraint Maintainers for User Interaction
-
Upload
dalton-little -
Category
Documents
-
view
37 -
download
4
description
Transcript of Designing Constraint Maintainers for User Interaction
1
Designing Constraint Maintainers for User Interaction
2005.6.6
東京大学 情報理工学系研究科電子情報学専攻 修士1年高橋 慧
2
発表の流れ
Maintainer の復習 Biased Selector Maintainer の合成 ここまでのまとめ
s
3
Maintainer の実例 HTML エディタ
グラフィカルビューとソースコード タグに関する制約 ( 開きタグ、閉じタグ… )
maintainer の動作 ビューの table 中で enter を押したとき、ソースコー
ドに挿入するのは <tr> か <br /> か ソースで” <t” と入力したとき、補完するのは <td>
か <table> か お節介にならないように、制約も満たすように。
ユーザーの意志を尊重 → least change 動作の予測ができるように→ left most / predictable⇒ビュー / ソースの変化に対し、最適な変化を選択
st
4
復習 : maintainer
制約 R:x ~ y を常に満たしたい y が変化したら、制約 R を満たすよう x を変化
→ maintainer xy maintainer の定義
-EST : [(xy)Ry] -SKIP : [xRy → (xy)=x]( 他にもいくつか同値な定義がある )
maintainer の望ましい動作 x の候補が複数→今の x からの変化を最小に 最小な候補が複数→ left most (predictable)
sty
5
Maintainer を Selector として見ると…
maintainer は Ry に対する selector と見れる Ry という集合から最適 ( 最小 ) な要素を選択 x によって変化する (selector 自体が x の関数 ) x§ と表すと、 maintainer xy の動作は
x’ = x§(Ry) と書ける→” Biased Selector” と呼ぶ
Biased Selector を考えるメリット Biased Selector 自体は R( 制約 ) に依存しない “ よい” maintainer の構成手続きが与えられる
styl
6
Biased Selector の定義
定義A) Selector の条件を満たす
1. x§S ∈ S2. x§(S∪T) = x§{x§S, x§T}
B) if x ∈ S : x§S = x
Well-Ordered な集合には必ず x§ が存在 例えば以下のように構成できる
if x∈S : x§S = x else : x§S = init(S)
style
7
Biased Selector と maintainer
biased selector ⇒ maintainer:[ 成立 ] -EST : [(xy)Ry]
(a.1 : x§S ∈ S) で S=Ry とすればよい -SKIP : [xRy → (xy)=x]
(b: if x ∈ S : x§S = x) そのもの
maintainer ⇒ biased selector:[ 不成立 ] (a.2:x§(S∪T) = x§{x§S, x§T}) が問題 least change に関連
styled
8
“ 良い” Biased Selector を構成
maintainer としての良い性質を持つ least change, left most (predictable)
x§S を構成 (S は well-ordered) “x との近さ” を定義する ( 編集距離など ) S 中で x に最も近い距離を持つ集合を Cx(S) と
おく x§S =init(Cx(S)) とする
(init は元々の well-order を構成した min)
この x§ は、 Biased Selector になっている
styled b
9
x§ が Biased Selector になっている証明
復習 Cx(S):S のうち、 x からの距離が最小の要素の集合 init(S):S の最小値 ( みたいなもの )
a.1 : x§S ∈ S x§ の定義 : x§S = init(Cx(S))⇒ {init(A) ⊆ A, Cx(S) ⊆ S} より x§S ∈ S
a.2 : x§(S∪T) = x§{x§S, x§T} x§ の定義 : x§(S∪T) = init(Cx(S∪T)) init(Cx(S∪T)) ∈ Cx{x§S,x§T}
Cx(S∪T) ⊆ Cx(S) ∪ Cx(T) init(Cx(S∪T)) ∈ {init(Cx(S)), init(Cx(T))} = Cx{x§S,x§T}
Cx{x§S,x§T} ⊆ Cx(S∪T) init(Cx(S)) ⊆ Cx(S), init(Cx(T)) ⊆ Cx(T) {x§S,x§T} ⊆ Cx(S∪T) Cx(A) ⊆ A より Cx{x§S,x§T} ⊆ Cx(S∪T)
⇒ {init の性質 : A⊆B ∧ init(B)∈A ⇒ init(A)=init(B)} より init(Cx(S∪T)) = init(Cx(x§S∪x§T)), x§(S∪T) = x§{x§S, x§T}
b : if x ∈ S : x§S = x (x∈S) ⇒ (Cx(S) = {x}) ⇒ (init(Cx(S)) = x) ⇒ (x§S = x)
styled by
10
maintainer の推移的合成
制約 R:x ~ y S:y ~ z を合成 → T:x ~ z x T z は xR (yS z) として構成できる ?
一般には y を隠すと x ~ z が構成できない 例えば x: ある実数 y: 実数集合 z: ある実数で、
x が y の項数、 z が y の正の項数とする。 maintainer : x ~ z は、 y を考えないと構成できない
y=f(x) の関係があるとき (#Ry=1) は OK ( 証明略 )
複雑な制約を分解して maintainer を構成できる
styled by K
11
maintainer の統合
R:x ~ y, S:x ~ y → T=R∪S:x ~ y T を R と S から合成
T=x§{xRy, xSy} とすればよい 証明
xTy = x§((R∪S)y) … x§ の定義= x§(Ry∪Sy) …自明ではないが省略= x§{x§(Ry), x§(Sy)} … Selector の定義= x§{xRy, xSy)} … x§ の定義
x§ が R,S に依存しないのがポイント
styled by Ke
12
3,4 章のまとめ
Maintainer の構成 複数の候補から一つを選ぶ→順序の定義が必要 Well-order : 大小関係が一意に定まる順序 Selector :” 最小値”の必要十分条件 Biased Selector : x を基準にした selector
Maintainer の統合・合成 T=R;S : R が関数で表せれば合成できる T=R∪S : 常に合成できる
maintainer の実例に続きます。
styled by Kei