Подстановки модели конечных отображений с конечными областями. Мне нужно либо эмулировать операции с подстановками с бесконечными доменами, либо найти подходящий способ представления подстановок с бесконечными доменами. Например, рассмотрим операцию ограничения на подстановки:
- σ | e (x n ) = если x n ∈ FV (e), то σ (x n ) иначе х п
Поскольку операция ограничения применяется к всем переменным в возможно бесконечном наборе, тип данных, такой как конечная карта, не может "смотреть вперед", чтобы предвидеть ограничение при добавлении новых привязок. И, конечно же, использование конечных отображений с бесконечными областями приводит к нетерминации. Есть ли способ имитировать такие операции, как ограничение, с использованием конечных отображений или другого представления подстановок, который позволил бы легко записывать такие операции, как ограничение над ними? Мне кажется, я упускаю очевидное решение - например, пользуюсь ленивой оценкой или функциональными заменами.
редактирование:
Для справки, вот наивное решение с использованием конечных карт. Каждый раз, когда операция ограничения применяется к подстановке σ и выражению e, найдите множество FV ( e ) свободных переменных, равное e . Для каждой переменной x n в области σ, если x n ∈ FV ( e ), тогда установите σ '(x n ) = x n . Вернуть σ '. Предположим, что σ '(x n ) = x n , если x n dom (σ').
edit: Это очевидное решение, которое я упустил.