「前提にいくつかの規則を有限回適用して結論を導く」(再掲)
自然演繹と呼ばれる体系の導出規則の抜粋
型システムは、プログラムをなんらかの仕方で分類することによって、プログラムが望ましくない振る舞いを起こさないことを保証する仕組み
ところで、
みなさんは型付きラムダ計算を……
知っていますね😊
t ::= true | false(ブール値)
| if t then t else t(条件式)
| x (変数)
| λx:T.t (ラムダ抽象。Haskellなら単に`\x -> t`。`T`は型で、説明の都合上たまに省略する)
| t t (適用。要するに関数の呼び出し)
1 + 1
という式は2
に評価されるf(1 + 1)
ならまず引数を評価するので、f(2)
になるどんどん評価していくと最終的に
矢印は「評価可能」、横棒は「上段が成り立っていれば下段も成り立つ」と読む
E-App1
: 関数適用の左辺が評価できるなら評価するE-App2
: 関数適用の右辺が評価できるなら評価するE-AppAbs
: 関数適用の左辺がラムダ抽象で右辺が値なら、右辺をラムダ抽象の本体に代入するE-IfTrue
: 条件式の条件がtrue
なら、条件式の真の方を評価するE-IfFalse
: 条件式の条件がfalse
なら、条件式の偽の方を評価するE-If
: 条件式の条件が評価できるなら評価する証明論と同じように、型の導出規則というものを定める
論理学 | 型システム | |
---|---|---|
意味の世界 | 意味論 | 操作的意味論 |
証明の世界 | 証明論 | 型システム |
2つの関係 | 健全性・完全性 | 型安全性(健全性) |
Thank you!