有限ドメインを使用した有限マップ モデル置換。無限ドメインでの置換操作をエミュレートするか、無限ドメインでの置換を表す適切な方法を見つける必要があります。たとえば、置換に対する制限操作を考えてみましょう。
- σ| e (x n ) = if x n ∈ FV(e) then σ(x n ) else x n
制限操作は無限セットの可能性があるすべての変数に適用されるため、有限マップのようなデータ型は、新しいバインディングが追加されたときに制限を予測するために「先を見越す」ことができません。もちろん、無限のドメインを持つ有限マップを使用すると、非終了が発生します。有限マップを使用した制限などの操作をシミュレートする方法や、制限などの操作を簡単に記述できる置換の別の表現はありますか? 明らかな解決策を見落としているように感じます-たとえば、遅延評価や関数置換を利用しています。
編集:
参考までに、有限マップを使用した単純なソリューションを次に示します。代入 σ と式 e に制限操作を適用するたびに、e の自由変数の集合 FV( e ) を求めます。σ のドメイン内の各変数 x nに対して、x n ∈ FV( e ) の場合、σ'(x n ) = x nを設定します。σ' を返します。x n ∉ dom(σ') の場合、σ'(x n ) = x nとします。
編集:これは私が見落とした明らかな解決策です。