Узгодження шаблону високого порядку - це нерозв'язна проблема. Це означає, що не існує алгоритму, який, з огляду на рівняння 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)))
Моє запитання: якщо ця проблема не може бути вирішена, як люди можуть швидко та без зусиль її вирішити?