unification

Menu

Unification (単一化) は、二つの項が同じになる可能性があるかどうかを調べる。

これは、引数に data 型がある時にも起きる。

可能性がなければ失敗する。


Term

Term は以下の規則によって型と一緒に構築される。

1. Haskell の変数 x,y,z は項。つまり let a = ... で宣言された小文字で始まる記号。対応する型(変数で指定された)を持つ。

    1 や 'a' も対応する型を持つ項である。

2. u が型U、v が型V を持てば、(u,v) は型(U,V)を持つ項である。

3. 型(U,V)を持つ項 t に対して、fst t は型U を持つ項、snd t は型 V を持つ項である。

4. v が型V を持つ項で、x0,x1,...,xn が型Uを持てば、 \x0 x1 ..., xn -> v は項である。

    Haskell によって変数の名前のスコープは適切に扱われるとする。

5. t が型 U->V を持ち、u が 型U を持てば、 t u は型V を持つ項である。


単一化


Shinji KONO / Fri Oct 19 19:26:55 2018