エレファントな群とリー代数(10) - エレファント・ビジュアライザー調査記録で説明した単一化アルゴリズムがわかりにくいので書き直します。
『数理論理学: 合理的エ-ジェントへの応用に向けて』の「定理 4.1 (単一化定理)」の証明について、(この本には書かれていないので)参照する本に『計算論理に基づく推論ソフトウェア論』があります。『計算論理に基づく推論ソフトウェア論』の「定理 3.3」に当たります。単一化アルゴリズムの定義も『数理論理学: 合理的エ-ジェントへの応用に向けて』と『計算論理に基づく推論ソフトウェア論』では少し違うようです。
この証明のわかりにくいところを構造に関する帰納法を使って書き直したものがエレファントな群とリー代数(11) - エレファント・ビジュアライザー調査記録に書いた証明です。
構造についてはエレファントな群とリー代数(10) - エレファント・ビジュアライザー調査記録で書いた構造を使って、それを一段階ずつ進めるように書き直したものがエレファントな群とリー代数(11) - エレファント・ビジュアライザー調査記録に書いた証明なのですが、見たところわかりにくいので今回書き直してみたいと思います。
ある決まった構造を持つ項を考えます。ここではこれを単に項と呼ぶことにします。このブログでは「一般マグマの多項式」と呼んでいたのですが、このブログだけの用語なのでここでは使いません。一般的な用語は「一階の項」のようです。
項全体を とおきます。変数
に
を含まない項
を対応させる写像を、
から
への写像に拡張したものを
と書くことにします(これはこのブログだけの記法です)。このような写像の有限個の合成を代入と呼びます。
個の合成(恒等写像)は
と書くことにします。
『数理論理学: 合理的エ-ジェントへの応用に向けて』、『計算論理に基づく推論ソフトウェア論』では代入は集合のような記法 と表されています。このブログではこれは写像として扱います。多項式の代入が多項式全体から多項式全体への写像であるのと同様の考え方です。(演算の制約について議論するのではなく)代入について議論するときの一般的な用語がおそらくないので、このブロクではこのような構造を「一般マグマの多項式」と呼んでいます。『数理論理学: 合理的エ-ジェントへの応用に向けて』、『計算論理に基づく推論ソフトウェア論』では論理式について議論しているので写像や代数的構造などは扱わないのかもしれませんが、集合やアルゴリズムは使っているのでそのあたりはよくわかりません。
写像 と
の合成を
と書きます(
)。逆方向の合成を
と書きます(
、これはこのブログだけの記法です)。
項 を写像
で写した像を
と書きます(
)。項の集合
の各元を写像
で写した像全体を
と書きます(
)。
を
、
を
と書きます(
は写像)。
アルゴリズム UAP
説明のため『計算論理に基づく推論ソフトウェア論』のアルゴリズム 3.1 に番号をつけます( とします)。
| |
|
|
||
| |
|
( |
||
| |
|
(*) |
||
| |
||||
| |
||||
| |
|
( |
||
| ( |
||||
| |
|
( |
(*) は以下のようなものとします。
項は変数、定数、関数の形式で構成されるとします。項をポーランド記法で書きます。これは項を、項に現れる変数はその記号、定数はその記号、関数の形式は関数の記号の後に各引数を変換した文字列を並べた形式に変換した文字列です。この記法の各文字は、その文字を先頭とする部分項に対応しています。変数の記号、定数の記号、関数の記号をその部分項の指標と呼ぶことにします。ポーランド記法は各部分項の指標を並べた文字列となります。これを項の指標文字列と呼ぶことにします。これに対応する部分項の列を、項の部分項列と呼ぶことにします。
に属する各項の指標文字列を先頭から見ていって、最初に共通しない記号が見つかったとき、その位置を
とします。各項の対応する部分項列の
の位置の部分項全体の集合を
とおきます。
定義 (単一化代入)
項はこのような指標文字列で表されているとします。項の集合 に対して
の元の個数が
となるような代入
を
の単一化代入と呼びます。
(UAP1)
ならば
は
の単一化代入
[証明] に属する各項に含まれるすべての変数の集合の元の個数を
とおきます。
(-2)のとき
と帰納的に定義すると、
は有限で
が成り立つので、ある
では(
-2)になることはありません。よって
で終了します。
に関する帰納法により
が
の単一化代入であることを示します。
のとき
は
の単一化代入となっています。
として
が
の単一化代入と仮定します。
とおくと
の元の個数は
となります。よって
は
の単一化代入となります。
帰納法により が
の単一化代入であることが示されました。[証明終わり]
に対して
となる代入
が存在するとき
と書くことにします。
は前順序となります。
(UAP2)
が
の単一化代入ならば(
-1)または(
-2)の場合になり、(
-2)の場合は
が成り立つ
[証明] (-2)または(
-3)の場合、位置
の指標が異なる
が存在します。その指標をそれぞれ
とおきます。代入
により、
の位置
より前の指標文字列と
の位置
より前の指標文字列は
によって同じものに変化します。よって変化後の文字列の長さは一致します。位置
の変化後の位置も一致します。この位置を
とおきます。
から始まる項は
で変換されて位置
から始まる項になります。
が
の単一化代入であることから変換後の位置
の指標は一致します。
が変数でなければ
による変換で保存されるので、どちらかは変数である必要があります。よって(
-2)の場合となります。
(-2)の場合の
について
でなければなりません。よって
が成り立ちます。また、
を
以外の変数とすると
が成り立ちます。よって任意の変数に対して
と
が写す先は同一のものとなるので
が成り立ちます。よって
が成り立ちます。[証明終わり]
(UAP3)
が
の単一化代入ならば
かつ 
[証明] アルゴリズム UAP が で停止したとします。
とおくと
となります。
かつ
であることを帰納的に示します。
かつ
は成り立っています。
とし、
かつ
であると仮定します。
が(
-1)の場合は、
の場合なので、
のときは起こりません。
が(
-2)または(
-3)の場合を考えます。
より
を満たす
が存在します。
は
の単一化代入となります。
(UAP2)を と
に適用します。(UAP2)の
が存在するとき、その
を
と書くことにすると、
が成り立ち、
となります。よって
が成り立ちます。
よって帰納法により かつ
となって、
かつ
が成り立ちます。[証明終わり]
定義 (最汎単一化代入)
項の集合 に対して
- (MGU1)
が
の単一化代入で、
- (MGU2)
が
の単一化代入ならば
となるとき を
の最汎単一化代入と呼びます。
(UAP4)
ならば
は
の最汎単一化代入
[証明] (MGU1): (UAP1)より は
の単一化代入となります。
(MGU2): (UAP3)より が
の単一化代入ならば
となります。[証明終わり]
(UAP5)
が単一化可能ならば 
[証明] が単一化可能ならば、
の単一化代入
が存在します。(UAP3)より
となります。[証明終わり]

