この言語は、以上の3つの条件のうち、いずれかを満たす項のみからなる。以下に、この言語におけるいくつかのプログラム例をみてみましょう。ような項も許容されることに注意してください。言語の構文を定義したので、次は、項がどう評価されるかを定義します。最初に着目したいのは、項の中でも、そのものが値を示しているような特別な項です。表す項として以下のものがあります。適用したものが数値です。以下のように定義できます。nv次に、値以外の項の評価規則を定義していきます。評価される」とよみます。前提条件がある場合には、以下のように前提となる評価関係と、適用される評価関係を重ねた推論規則の形をとります。起きかえることを意味しています。評価されることを示しています。\]前節で示したプログラム例について、評価の様子を確認してみましょう。値なので、そこで評価はおしまいです。ついては以下のようになります。ついてはどうでしょうか。これまでの定義にてらしてみると、この2つはいずれも値ではなく、かといって、これらに当てはまる評価規則も存在しません。なるかのどちらかとなります。できれば項を実際に評価せずに、その項の評価が行き詰まり状態にならないことを保証したいところです。文の検査対象に真理値以外を置いてしまったケースがあることがわかります。分類することにします。項に型を割り当てる推論規則の集合として定義しましょう。型を割り当てています。割り当てられることを主張しています。型を持つことが、項の値を評価することなくわかりました。このようなに「項の値を実際に計算することなく」行う分析のことを、静的な分析といいます。実際に値を計算せずに行う型分析は、保守的になります。どんな型も持てません。行き詰まり状態にならないことを保証することです。この性質のことを安全性といいます。この性質は、進行と保存という2つのステップに分けて証明できることができます*2。進行とは、正しく型付けされた項は行き詰まり状態ではない(値であるか、評価規則によって評価を進められる)ということ保存とは、正しく片づけされた項が評価できるならば、評価後の項も正しく型付けされるということこれらの性質をあわせると、正しく型付けされた項は評価において行き詰まり状態になりえないことがいえます。型システムの概要をみてきました。つぎに、本章では、もう少し大きな言語に対する型推論について述べます。本章で扱うプログラミング言語の構文を以下に示します。