タイプルール


Type_rule
で型理論、タイプのルールがある推論規則について説明型システムは、構文建設にタイプを割り当てます。これらのルールは、かどうかを判断するために型システムによって適用することができるプログラムがうまく入力されると、タイプのどの表現が型付き規則の使用の典型的な例は、デカルト閉圏の内部言語である単純型付きラムダ計算で型推論を定義することです。

表記
表現 e {e}

  タイプの τ { tau}

  と書かれていますe : τ
{e !:! tau}

 。タイピング環境はと書かれています Γ { Gamma}

 。推論の表記法は、シークエントと推論規則の通常の表記法であり、次の一般的な形式になります。 Γ 1⊢ e 1 : τ
1⋯ Γ
n⊢ e n :
τ ⊢ e : τ
{{ frac { Gamma _ {1} vdash e_ {1} !:! tau _ {1} quad cdots quad Gamma _ {n} vdash e_ {n} ! :! tau _ {n}} { Gamma vdash e !:! tau}}}
  境界線より上のシークエントは、ルールを適用するために満たす必要のある前提条件であり、結論を導き出します。境界線より下のシークエントです。これは次のように読み取ることができます:if式
e I {e_ {i}}

  タイプがあります τ I
{ tau _ {i}}

 環境 Γ I
{ Gamma _ {i}}

 、 すべてのためにI =
1.。 n {i = 1..n}

 、次に式 e {e}

  環境があります Γ { Gamma}

  とタイプ τ { tau}

 。
たとえば、実数の算術計算を実行する単純な言語には、次のルールが
Γ⊢ e 1 : r
ea l Γ ⊢ e
2: r e a l
Γ⊢ e 1 + e
2: r e a l
Γ⊢ e 1 : I
nt e g e r
Γ⊢ e 2 : I
nt e g e r
Γ⊢ e 1 + e
2: I n t eg e r ⋯
{{ frac { Gamma vdash e_ {1} !:!real quad Gamma vdash e_ {2} !:!real} { Gamma vdash e_ {1} + e_ { 2} !:!real}} qquad { frac { Gamma vdash e_ {1} !:!integer quad Gamma vdash e_ {2}:integer} { Gamma vdash e_ { 1} + e_ {2} !:!integer}} qquad cdots}
  タイプルールには前提がない場合があり、通常、これらの場合、行は省略されます。タイプルールは、以前の環境に新しい変数を追加することによって環境を変更することもできます。たとえば、宣言には次のタイプルールがあり、新しい変数は次のようになります。I d {id}
 、タイプ付き
τ ′ { tau ‘}

 、に追加されます Γ { Gamma}

 :
Γ⊢ e ′
: τ ′
Γ 私d : τ
′⊢ e : τ Γ ⊢ id = e ′
 の  e  終わり: τ
{{ frac { Gamma vdash e ‘!:! tau’ quad Gamma、id !:! tau ‘ vdash e !:! tau} { Gamma vdash { text {let id =}} e ‘{ text {in}} e { text {end}}:! tau}}}
  ここで、let式の構文はStandardMLの構文です。したがって、タイプルールを使用して、自然演繹の場合と同様に、合成された式のタイプを導出できます。

も参照してください
判断(数理論理学)
型システム
型理論
カリーハワード対応

参考文献
ルカ・カーデリ(1996年3月)。「型システム」 (PDF)。ACMコンピューティング調査。28(1):263–264。土井:10.1145 /234313.234418。Γ ⊢X : Int
{ Gamma vdash x:{ text {Int}}}
  このプログラミング言語理論または型理論関連