Обычное ли взаимодействие сетей оставить груды избыточных поклонников?

Я компилирую термины лямбда-исчисления в сети взаимодействия, чтобы их оценить, используя абстрактный алгоритм ламинга. Чтобы проверить мою реализацию, я использовал эту функцию разделения числа церквей:

div = (λ a b c d . (b (λ e . (e d)) (a (b (λ e f g . (e (λ h . (f h g)))) (λ e . e) (λ e f . (f (c e)))) (b (λ e f . e) (λ e . e) (λ e . e)))))

Разделение 4 на 4 (т.е. (λ k . (div k k)) (λ f x . (f (f (f (f x)))))), я получаю эту сеть:

введите описание изображения здесь

(Извините за ужасный рендеринг. λ - лямбда, R - корень, D - вентилятор, e - ластик.)

Читая этот термин, я получаю номер церкви 1, как и ожидалось. Но эта сеть очень завышена: у нее много поклонников и ластиков, которые не имеют очевидной цели. Разделение большего числа еще хуже. Здесь div 32 32:

введите описание изображения здесь

Это снова читается как one, но здесь мы видим еще более длинный хвост избыточных узлов вентилятора. Мой вопрос: - это ожидаемое поведение потребностей взаимодействия при сокращении этого конкретного термина или это возможная ошибка в моей реализации? Если это не ошибка, существует ли какой-либо способ этого?

Ответы

Ответ 1

Да, это обычно (но есть способы уменьшить его присутствие)

С учетом некоторых деталей вашей реализации с сетями взаимодействия, а также из вашей гипотезы о достоверности абстрактного алгоритма для вашего div, все кажется мне в порядке.

  • Никакое взаимодействие не может быть применено к выходу, который вы показываете, несмотря на chi, потому что ни одна из пар D-e не может взаимодействовать через их главный порт.

  • Это последнее правило сокращения (которое не допускается инфраструктурой IN) может повысить эффективность, и это также звучит в некоторых частных случаях. В принципе, задействованный вентилятор не должен иметь никакого "двойника", т.е. В сети не должно существовать D', так что в конечном итоге может произойти аннигиляция D-D'. Для более подробной информации смотрите Оптимальная реализация языка функционального программирования, глава Безопасные узлы (которые доступны в Интернете!) Или в оригинальной бумаге, из которой оно было получено:

    Асперти, Андреа и Юлиуш Хробочек. "Безопасные операторы: скобки закрыты навсегда Оптимизация оптимальных решений λ-исчисления". Применимая алгебра в области проектирования, связи и вычислительной техники 8.6 (1997): 437-468.

  • Наконец, процедура обратного хода должна быть предназначена не как какая-то внешняя стоимость для вашего сокращения, а скорее как отложенная стоимость вычисления дублирования и стирания. Как вы заметили, такая стоимость редко незначительна, поэтому, если вы хотите проверить эффективность в реальном сценарии, всегда суммируйте как сокращение совместного использования, так и сокращение обратного хода.