Hindley-Milner型システムの定数を持たないラムダ計算では、関数の結果が未解決の型変数であるような型は取得できません。すべての型変数はどこかに「起源」を持たなければなりません。たとえば、型の用語はありませんですが、型の用語があり(恒等関数)。∀ α 、β。α → β∀ α 。α → αλ X 。バツ
直感的には、型の用語では、薄い空気から型の式を作成できる必要があります。そのような型を持つ値が存在しないことは簡単にわかります。より正確には、型変数が環境内のどの項変数の型にも現れない場合、標準の形式である型の項はありません。これは、項の構造帰納法で証明できます。先頭の変数の型はであるか、引数の1つがを含む主型である必要があります。つまり、より適切な項があります。 。∀ α 、β。α → ββββββ
特定のタイプの値がないからといって、そのタイプの用語が存在しないことを意味するわけではありません。そのような型のラムダ項がない理由は、すべての適切に型付けされたHM項が強く正規化されているためです。これは、単純に型指定されたラムダ計算が強く正規化されていることを示す結果の一般化です。これは、System Fが強く正規化されているという事実の結果です。SystemFはHMに似ていますが、トップレベルだけでなく、型のあらゆる場所で型限定子を使用できます。たとえば、システムFでは、のタイプは —ただし、Δ = λ X 。バツバツ(∀ α 。α )→ (∀ α 。α )△△ 型が正しくありません。
HMとシステムFは、カリー-ハワード対応の型システムの例です。適切に型付けされた用語は特定のロジックの証明に対応し、型は式に対応します。型システムが一貫した理論に対応している場合、その理論ではなどの定理を証明できません。したがって、対応する型の項はありません。型システムにより、データ構造上の関数について「無料の定理」を推測できます。∀ A 、∀ B 、A ⇒ B∀ α 、β。α → β
この結果は、計算に特定の定数を追加するとすぐに壊れます。たとえば、などの一般的な固定小数点コンビネータを許可すると、任意の型の項を作成できますの型は。Curry-Howardの対応における一般的な固定点コンビネーターに相当するものは、示す公理であり、これによりロジックが明らかに不明瞭になります。YY(λ X 。X )∀ α 。α∀ A 、∀ B 、A ⇒ B
強力な正規化を保証する型システムとそうでない型システムの間の細かい境界線を見つけることは、困難で興味深い問題です。どの論理が健全であるか、つまりどのプログラムが定理の証明を具体化するかを決定するため、これは重要な問題です。System Fよりもさらに先に進むことができますが、ルールはより複雑になります。たとえば、Coq proof assistantの基礎である帰納的構築の計算は、強力に正規化されていますが、一般的な帰納的データ構造とそれらのアルゴリズムなどを記述することができます。
実際のプログラミング言語に到達するとすぐに、通信が途切れます。実際のプログラミング言語には、一般的な再帰関数(終了しない場合があります)、例外(常に例外を発生させる式は値を返さないため、ほとんどの型システムで任意の型を持つことができます)、再帰型(非終了を許可する)忍び込む)など