generated at
2/17/2025, 6:12:10 PM
単一化
unification
ちゃんと書くならタイトルは「
型推論
の
一階の単一化
」とかになると思う
2つの
項
が同一または同等であるかどうかを判定する
同一を示すものを
統語論的単一化
同等を示すものを
意味論的単一化
と呼ぶ
「同等であるかどうか」は換言すれば「適当な具体型を代入したときに一致することがあるかどうか」
John Alan Robinson
型推論
の文脈では
2つの型を引数にとって、それらが等しいかどうかを判定する
hs
unify :: Constraint -> Constraint -> TI Bool
unyfyVarは何をしているのか
片方が型変数で、片方が具体型の場合に実行する
https://qiita.com/h_sakurai/items/f16502e6f867b5e90b86
例
例
入力1
入力2
結果
CVar 1
CInt
True
CInt
CBool
False
CVar 1
CVar 2
True
CLambda (CVar 1) (CVar 2)
CLambda (CVar 2) (CVar 3)
True
CVar 1
CLambda (CVar 2) (CVar 1)
occurs check
によりFalse
関連
エルブランの定理
Pattern Matching
変数が片方にしか存在しない単一化と見ることができる
単一化問題
単一化子
semi-unification
参考
7-6. Unification
/mrsekut-book-4781912850/177
https://ja.wikipedia.org/wiki/ユニフィケーション
https://www.math.nagoya-u.ac.jp/~garrigue/papers/unification/proofsummit.pdf