La coincidencia de patrones de alto orden es un problema indecidible. Eso significa que no existe un algoritmo que, dada una ecuación a => b
, donde a
y b
son términos abiertos en el cálculo lambda simplemente tipeado, encuentre una sustitución S
tal que aS => bS
, donde =>
significa "tiene la misma forma normal de Bn". Sin embargo, los humanos pueden resolver ese problema de manera eficiente. Por ejemplo, dado el siguiente 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))))))
Cualquier humano con suficiente conocimiento sobre el cálculo lambda podrá notar que F
es la función "doble" para los números de la iglesia, que viene rápidamente con la solución que
F = (λ a b c . (a b (a b c)))
Mi pregunta es: si ese problema es indecidible, ¿cómo pueden los humanos resolverlo rápida y fácilmente?