La corrispondenza dei modelli di ordine superiore è un problema indecidibile. Ciò significa che non esiste un algoritmo che, data un'equazione a => b
, dove a
e b
sono termini aperti sul calcolo lambda semplicemente tipizzato, trova una sostituzione S
tale che aS => bS
, dove =>
sta per "ha la stessa forma Bn normale". Tuttavia, gli umani possono risolvere questo problema in modo efficiente. Ad esempio, dato il seguente 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))))))
Ogni essere umano con una conoscenza sufficiente del calcolo lambda sarà in grado di notare che F
è la "doppia" funzione per i numeri di chiesa, arrivando rapidamente con la soluzione che
F = (λ a b c . (a b (a b c)))
La mia domanda è: se quel problema è indecidibile, come possono gli umani risolverlo rapidamente e senza sforzo?