A correspondência de padrões de alta ordem é um problema indecidível. Isso significa que não há algoritmo que, dada uma equação a => b
, onde a
e b
são termos abertos no cálculo lambda simplesmente digitado, encontre uma substituição S
tal que aS => bS
, onde =>
significa "tenha a mesma forma normal de Bn". No entanto, os humanos podem resolver esse problema com eficiência. Por exemplo, dado o seguinte problema:
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))))))
Qualquer humano com conhecimento suficiente sobre o cálculo lambda poderá perceber que F
é a função "dupla" para os números das igrejas, que vem rapidamente com a solução que
F = (λ a b c . (a b (a b c)))
Minha pergunta é: se esse problema é indecidível, como os humanos podem resolvê-lo com rapidez e facilidade?