У обчисленні лямбда без констант із системою типу Хіндлі-Мілнера ви не можете отримати таких типів, коли результатом функції є нерозв'язана змінна тип. Усі змінні типу повинні десь мати "походження". Наприклад, немає терміна типу , але є термін типу ∀ α .∀ α , β.α → β (функція тотожності λ x . x ).∀ α .α → αλ x . х
Інтуїтивно зрозумілий термін типу вимагає можливості побудувати вираз типу β з повітря. Неважко помітити, що немаєзначення,яке має такий тип. Точніше, якщо змінна типу β не відображається в типі будь-якої термінової змінної в середовищі, то немає терміна типу β, який знаходиться в голові нормальної форми. Ви можете довести це структурною індукцією за терміном: або змінна на чолі повинна мати тип β , або один з аргументів повинен мати основний тип, що включає β , тобто був би менший відповідний термін.∀ α , β.α → ββββββ
Тільки тому, що немає значення певного типу, не означає, що не існує терміна цього типу: може бути термін без значення, тобто термін, що не закінчується (саме кажучи, термін без нормальної форми). Причина, чому немає лямбда-терміна з такими типами, полягає в тому, що всі добре набрані терміни HM сильно нормалізуються. Це узагальнення результату, яке стверджує, що просто набране лямбдальне числення сильно нормалізується. Це наслідок того, що система F сильно нормалізується: система F схожа на HM, але дозволяє застосовувати квантори кількості типів скрізь у типах, а не лише на верхньому рівні. Наприклад, у системі F має тип ( ∀ α . α ) → ( ∀ α . α ) - але ΔΔ = λ x . хх( ∀ α . Α ) → ( ∀ α . Α ) неправильно набраний.ΔΔ
HM і System F - приклади систем типів, які мають відповідність Curry-Howard : добре набрані терміни відповідають доказів у певній логіці, а типи відповідають формулі. Якщо типова система відповідає послідовній теорії, то ця теорія не дозволяє доводити такі теореми, як ; тому немає терміна відповідного типу ∀ α , β .∀ A , ∀ B , A ⇒ B∀ α , β.α → β
Цей результат розбивається, як тільки ви додаєте певні константи до обчислення. Наприклад, якщо ви дозволите загальний комбінатор точок фіксації, такий як , можна побудувати умови довільного типу: Y ( λ x . X ) має тип ∀YY(λx.x)∀α.α∀A,∀B,A⇒B
Пошук тонкої межі між типами систем, які забезпечують сильну нормалізацію, і типовими системами, які не є складною і цікавою проблемою. Це важлива проблема, оскільки вона визначає, яка логіка є здоровою, іншими словами, які програми втілюють докази теорем. Ви можете піти набагато далі, ніж System F, але правила стають складнішими. Наприклад, обчислення індуктивних конструкцій, що є основою асистента доказування Coq , сильно нормалізується, але здатне описати загальні індуктивні структури даних та алгоритми над ними тощо.
Як тільки ви перейдете до справжніх мов програмування, листування руйнується. Реальні мови програмування мають такі функції, як загальні рекурсивні функції (які можуть не припинятися), винятки (вираз, який завжди викликає виняток, ніколи не повертає значення і, отже, може мати будь-який тип у більшості типів систем), рекурсивні типи (які дозволяють не припиняти підкрастися) тощо.