「合流性」の版間の差分

削除された内容 追加された内容
編集の要約なし
2行目:
 
== 合流性の例 ==
一般的な算術の規則は[[項書き換え]]系となすことができる。次のような式があるとする。
: <math> (11 + 9) \times (2 + 4)</math>
この式を書き換える方法は2種類ある。最初の括弧の中を単純化するか、2番目の括弧の中を単純化するかである。最初の括弧の中を先に項書き換えで単純化すると、次のようになる。
13行目:
[[Image:Confluence.svg|thumb|right|図1: 合流性の定義]]
 
一般的な[[項書き換え]]システムを考えると、特定の項を書き換え可能な規則や書き換え可能な部分が複数あるため、書き換えの流れは1通りとは限らない。合流性とは、途中の書き換えの道筋には関係なく唯一の正規形に書き換えられることで、任意の項 ''a'' を簡約化していって項 ''b'', ''c'' を得たならば、必ず ''b'', ''c'' から合流できる項 ''d'' が存在することである。
 
より形式的には、抽象書換え系 <math>\left\langle A, \to \right\rangle</math> について、a から b への簡約化 {{lang|en|(reduction)}} を <math>a \rightarrow b</math> 、簡約化の有限のステップを <math>a \overset{*}{{}\to{}} b</math> と表現した場合、合流性の定義は以下のようになる。
19行目:
::<math>\Rightarrow\,\, b\,\overset{*}{{}\to{}}d \quad\text{and}\quad c\,\overset{*}{{}\to{}}d </math>
 
これを図で表現したものが図1である。実線は[[全称記号]]、点線は[[存在記号]]を意味し、''*'' は簡約化の有限のステップを表す。
 
換え系が合流性を満たすとき、以下が成り立つ。
* 項 ''a'' の正規形は高々1個しか存在しない。
* 等式 <math>a = b</math> が成立するならば、適当な項 ''c'' が存在して <math>a \overset{*}{{}\to{}} c</math> かつ <math>b \overset{*}{{}\to{}} c</math> である。
 
33行目:
 
=== チャーチ・ロッサー性 ===
'''チャーチ・ロッサー性'''({{lang|en|''Church-Rosser property''}})とは、抽象書換え系 <math>\left\langle A, \to \right\rangle</math> の任意の <math>a,\,b \in\,A</math> について <math>a \overset{*}{{}\leftrightarrow{}} b</math> ならば <math>a\,\overset{*}{{}\to{}}c \quad\text{and}\quad b\,\overset{*}{{}\to{}}c </math> となるような ''c'' が存在することである。ここで <math>a \overset{*}{{}\leftrightarrow{}} b</math> は ''a'' と ''b'' それぞれの方向に有限ステップで簡約できることを表す。
 
チャーチ・ロッサー性は合流性と等価である。チャーチ・ロッサー性は[[ラムダ計算]]でのベータ簡約の合流性を示す[[チャーチ・ロッサーの定理]]で用いられた
チャーチ・ロッサー性は[[ラムダ計算]]でのベータ簡約の合流性を示す[[チャーチ・ロッサーの定理]]で用いられた。
=== 局所合流性 ===
要素 <math>a \in\,A</math> が '''局所合流性'''({{lang|en|''Local confluence''}})を持つとは、<math>c\,\leftarrow\,a\,\rightarrow\,b</math> となる任意の <math>b,\,c\,\in\,A</math> について <math>c\,\overset{*}{{}\to{}}d\,\overset{*}{{}\leftarrow{}}b </math> となるような ''d'' が存在することである。これを図で表現したものが図2である。
46 ⟶ 45行目:
ただし、システムが停止性と局所合流性とを持つ場合、システムは合流性を持つ(''ニューマンの補助定理''、{{lang|en|Newman's lemma}})。
=== 準合流性 ===
要素 <math>a\in\,A</math> が '''準合流性'''({{lang|en|''Semi-confluence''}})を持つとは、<math>c\,\leftarrow\,a\,\overset{*}\rightarrow\,b</math> となる任意の <math>b,\,c\,\in\,A</math> について <math>c\,\overset{*}{{}\to{}}d\,\overset{*}{{}\leftarrow{}}b </math> となるような ''d'' が存在することである。これを図で表現したものが図3である。
 
全ての要素が準合流性を持つならば、システムは合流性を持つ。
=== 強合流性 ===
'''強合流性'''({{lang|en|''Strong confluence''}})は局所合流性を強くした性質である。要素 <math>a\in\,A</math> が強合流性を持つとは、<math>c\,\leftarrow\,a\,\rightarrow\,b</math> となる任意の <math>b,\,c\,\in\,A</math> について <math>c\,\overset{=}{{}\to{}}d\,\overset{*}{{}\leftarrow{}}b </math> となるような ''d'' が存在することである。ここで <math>c\,\overset{=}{{}\to{}}d</math> とは、 <math>c\,{{}\to{}}d</math> か <math>c\,= d</math> のいずれかが成立することを表す。これを図で表現したものが図4である。
 
全ての要素が強合流性を持つならば、システムは合流性を持つ。強合流性は以下の定理と共に用いることができる: