Сопоставление паттернов высокого порядка - неразрешимая проблема. Это означает, что не существует алгоритма, который, учитывая уравнение a => b
, где a
и b
являются открытыми слагаемыми в простом типе лямбда-исчисления, находит замену так S
, что aS => bS
, где =>
означает «имеет такую же Bn нормальную форму». Тем не менее, люди могут эффективно решить эту проблему. Например, с учетом следующей проблемы:
a = (λt . t
(F (λ f x . (f (f (f x)))))
(F (λ f x . (f (f x)))))
b = (λ t . t
(λ f x . (f (f (f (f (f (f x)))))))
(λ f x . (f (f (f (f x))))))
Любой человек, обладающий достаточными знаниями в области лямбда-исчисления, сможет заметить, F
что это «двойная» функция для церковных чисел, быстро пришедшая с решением, которое
F = (λ a b c . (a b (a b c)))
Мой вопрос: если эта проблема неразрешима, как люди могут быстро и без усилий решить ее?