Типы не сохраняются при бета-расширении в любом исчислении, которое может выражать понятие «мертвый код».Вы, вероятно, можете выяснить, как написать что-то похожее на это на любом используемом языке:
if True then something typable else utter nonsense
Например, пусть M = (\x y -> x) (something typable)
и N = (utter nonsense)
и P = (something typable)
, так что M N = P
и P
можно вводить, но M N
нет.
... перечитывая ваш вопрос, я вижу, что вы требуете, чтобы M
был набираемым, но это кажется очень странным значением для"сохранено под бета-расширением" для меня.Во всяком случае, я не понимаю, почему какой-то аргумент, подобный приведенному выше, не может быть применен: просто позвольте M
иметь в себе какой-нибудь нетипичный мертвый код.