TaPL読書会 [#3]               2012.08.29
§. 8Typed Arithmetic Expressions
8章でやること●   型付け規則の導入(Simple types)●    型付けの一意性の証明(Simple typesの場合)●   型安全性の証明    (* Safety = Progress + Preservation)
8章でやること●   型付け規則の導入(Simple types)●    型付けの一意性の証明(Simple typesの場合)●   型安全性の証明    (* Safety = Progress + Preservation)
おさらい●   Untyped booleans (3章)●    Untyped arithmetic expressions (3章)
●    Untyped booleans    Syntactic forms    t ::=                    v ::=        true                       true        f...
●    Untyped arithmetic expressions    (Extends untyped booleans)    New Syntactic forms    t ::= ...             v ::= .....
●    Untyped arithmetic expressions (Extends booleans)    Evaluation rules           t1 → t1      succ t1 → succ t1       ...
おさらい●   Untyped arithmetic expressionsには、stuck    となる(valueでなく、評価規則も適用できな    い)項が存在    e.g.     pred false → ?●   Untyped ...
型付け規則の導入●   Untyped arithmetic expressionsの各項に    「型」を付ける●   そのために、以下の型のsyntaxと型付け規則を    導入する●   Notation    S, T, U, …   ...
●    Simply typed booleans    New Syntactic forms    T ::=                       types        Bool                    type...
●   Simply typed arithmetic expressions    (Extends untyped A.E. and simply typed Bool.)    New Syntactic forms    T ::= ....
型付け規則の導入●   ある項 t について、ある型 T が存在し    t : T なるとき、t はwell typed(型付けされ    ている)という
8章でやること●   型付け規則の導入(Simple types)●    型付けの一意性の証明(Simple typesの場合)●   型安全性の証明    (* Safety = Progress + Preservation)
型付けの一意性(Simple types)●   Simply typed arithmetic expressionsでは、    次の型付けの一意性定理が成り立つ:    任意の項 t は、高々1つの型しかもたない。    (つまり、t が...
型付けの一意性(具体例)t = if iszero 0 then 0 else pred 0
型付けの一意性(具体例)      iszero 0     0        pred 0        ↑     ↑     ↑ subterms      if iszero 0 then 0 else pred 0
型付けの一意性(具体例)           0                  0        ↑            ↑ subterms        iszero 0     0       pred 0        ↑    ...
型付けの一意性(具体例)         0 : Nat             0 :Nat                             iszero 0  0     pred 0                        ...
型付けの一意性(具体例)         0 : Nat                 0 : Nat                                 iszero 0 : Bool 0 : Nat pred 0 : Nat ...
型付けの一意性(具体例)         0 : Nat                 0 : Nat                                 iszero 0 : Bool 0 : Nat pred 0 : Nat ...
型付けの一意性(証明)●   方針:    subterms に関する数学的帰納法で証明する。    つまり、    項 t に対し、すべての直下のsubtermに関して定理の    主張(型付けの一意性)が成り立っていると仮定した    とき...
型付けの一意性(証明)●   方針:    t の取りうるsyntax(項の形式)に応じて場合分けす    る。●   t = true                    (Case-True)●   t = false          ...
型付けの一意性(証明)●   t = if t1 then t2 else t3   (Case-If)    定理の仮定から、ある型 R が存在し    t = if t1 then t2 else t3 : R    このとき、Lemma ...
型付けの一意性(証明)    残りのケース●    t = succ t1               (Case-Succ)●    t = pred t1               (Case-Pred)●    t = iszero t...
型付けの一意性(証明)●   Lemma 8.2.2 の証明    それぞれの項のsyntaxから、適用できる型付け規則が    一意に定まる。    e.g. t = true に適用できる規則は (T-True) のみ    これにより、補...
型付けの一意性定理から分かること    Simply typed arithmetic expressionsにおいては●   任意の項が唯一つの型を持つ●    任意の項について、型の導出木は唯一つである    ※注意    後の章で扱う、よ...
8章でやること●   型付け規則の導入(Simple types)●    型付けの一意性の証明(Simple typesの場合)●   型安全性の証明    (* Safety = Progress + Preservation)
型安全性の証明●   ここでは、Simply typed arithmetic    expressionsにおいて下記2つの定理が成り立つ    ことを示す:    Theorem 8.3.2 (Thm. of Progress)    We...
型安全性とは●   TaPLにおける型安全性(Safety = Progress +    Preservation)とは:    型付けされた項は、途中でstuckになることは    なくきちんと評価される    ということ。●   型安全性...
Progress(証明)●   方針:    導出に関する数学的帰納法で証明する。    つまり、    t : T に対し、そのすべてのsubtermに関して定理の    主張(それらがvalueである、または前進評価が可能    であること...
Progress(証明)●   方針:    直前のtyping rule(導出規則)に応じて場合分け。●    t = true                    : T-True●   t = false                ...
Progress(証明)●   方針:    直前のtyping rule(導出規則)に応じて場合分け。●    t = true                    : T-True●   t = false                ...
Progress(証明)●   Case-T-If    このとき、    t = if t1 then t2 else t3 (t : T)    t1 : Bool, t2 : T, t3 : T    帰納法の仮定より、subterm t...
Progress(証明)●   Case-T-If    (i) t1 は value のとき    Lemma 8.3.1 より、t1 = true or t1 = false    ⇒ t に評価規則 E-IfTrue または E-IfFa...
Lemma8.3.1(Canonical Forms)(i) v が Bool型のvalueのとき、v = true or v = false(ii) v が Nat型のvalueのとき、v = nv証明:Simply typed A.E. に...
Preservation(証明)●   方針:    導出に関する数学的帰納法で証明する。    つまり、    t : T に対し、そのすべてのsubtermに関して定理の    主張(評価によって型が保存されること)を仮定した    ときに...
Preservation(証明)●   方針:    直前のtyping rule(導出規則)に応じて場合分け。●    t = true                    : T-True●   t = false            ...
Preservation(証明)●   最も非自明なCase-T-Ifを証明する。    このとき、    t = if t1 then t2 else t3 (t : T)    t1 : Bool, t2 : T, t3 : T    定理...
Preservation(証明)(i) E-IfTrue の場合このとき、t1 = true, t = t2t2 : T であったので、t : T(ii) E-IfFalse の場合このとき、t1 = false, t = t3t3 : T で...
Preservation(証明)    よって、    t = if t1 then t2 else t3    t1 : Bool, t2 : T, t3 : T    ⇒型付け規則 T-If により、    t = if t1 then t...
8章のまとめ●   3章で扱った Arithmetic expression の体系    に、Simpleな型付け規則を導入しました。●   Simply typed A.E. において、型付けの一意性    を証明しました。●   Simp...
Upcoming SlideShare
Loading in …5
×

20120829_TaPL8

391
-1

Published on

0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
391
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
3
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

20120829_TaPL8

  1. 1. TaPL読書会 [#3] 2012.08.29
  2. 2. §. 8Typed Arithmetic Expressions
  3. 3. 8章でやること● 型付け規則の導入(Simple types)● 型付けの一意性の証明(Simple typesの場合)● 型安全性の証明 (* Safety = Progress + Preservation)
  4. 4. 8章でやること● 型付け規則の導入(Simple types)● 型付けの一意性の証明(Simple typesの場合)● 型安全性の証明 (* Safety = Progress + Preservation)
  5. 5. おさらい● Untyped booleans (3章)● Untyped arithmetic expressions (3章)
  6. 6. ● Untyped booleans Syntactic forms t ::= v ::= true true false false if t then t else t Evaluation rules  if true then t2 else t3 → t2 (E-IfTrue)  if false then t2 else t3 → t3 (E-IfFalse) t1 → t1 if t1 then t2 else t3 → if t1 then t2 else t3 (E-If)
  7. 7. ● Untyped arithmetic expressions (Extends untyped booleans) New Syntactic forms t ::= ... v ::= ... 0 nv succ t pred t nv ::= iszero t 0 succ nv
  8. 8. ● Untyped arithmetic expressions (Extends booleans) Evaluation rules t1 → t1 succ t1 → succ t1 (E-Succ) pred 0 → 0 (E-PredZero) pred (succ nv1) → nv1 (E-PredSucc) t1 → t1 pred t1 → pred t1 (E-Pred) iszero 0 → true (E-IszeroZero) iszero (succ nv1) → false (E-IszeroSucc) t1 → t1 iszero t1 → iszero t1 (E-Iszero)
  9. 9. おさらい● Untyped arithmetic expressionsには、stuck となる(valueでなく、評価規則も適用できな い)項が存在 e.g. pred false → ?● Untyped arithmetic expressionsの世界では、 実際に評価しなければstuckかどうか判別でき ない ⇒ある項がstuckとならないことを静的に知り たい
  10. 10. 型付け規則の導入● Untyped arithmetic expressionsの各項に 「型」を付ける● そのために、以下の型のsyntaxと型付け規則を 導入する● Notation S, T, U, … metavariables of types t : T typing relation “a term t has type T”
  11. 11. ● Simply typed booleans New Syntactic forms T ::= types Bool type of booleans New typing rules  true : Bool (T-True)  false : Bool (T-False) t1 : Bool t2 : T t3 : T if t1 then t2 else t3 : T (T-If)
  12. 12. ● Simply typed arithmetic expressions (Extends untyped A.E. and simply typed Bool.) New Syntactic forms T ::= ... types Nat type of natural numbers New typing rules  0 : Nat (T-True) t1 : Nat succ t1 : Nat (T-Succ) t1 : Nat pred t1 : Nat (T-Pred) t1 : Nat iszero t1 : Bool (T-Iszero)
  13. 13. 型付け規則の導入● ある項 t について、ある型 T が存在し t : T なるとき、t はwell typed(型付けされ ている)という
  14. 14. 8章でやること● 型付け規則の導入(Simple types)● 型付けの一意性の証明(Simple typesの場合)● 型安全性の証明 (* Safety = Progress + Preservation)
  15. 15. 型付けの一意性(Simple types)● Simply typed arithmetic expressionsでは、 次の型付けの一意性定理が成り立つ: 任意の項 t は、高々1つの型しかもたない。 (つまり、t がwell typedならばその型は一意) さらに、t の型付けを導く(直前の)型付け規 則は1つしかない。
  16. 16. 型付けの一意性(具体例)t = if iszero 0 then 0 else pred 0
  17. 17. 型付けの一意性(具体例) iszero 0 0 pred 0        ↑     ↑     ↑ subterms if iszero 0 then 0 else pred 0
  18. 18. 型付けの一意性(具体例) 0 0        ↑            ↑ subterms iszero 0 0 pred 0        ↑     ↑     ↑  if iszero 0 then 0 else pred 0
  19. 19. 型付けの一意性(具体例) 0 : Nat 0 :Nat                        iszero 0 0 pred 0                       if iszero 0 then 0 else pred 0
  20. 20. 型付けの一意性(具体例) 0 : Nat 0 : Nat                 iszero 0 : Bool 0 : Nat pred 0 : Nat                       if iszero 0 then 0 else pred 0
  21. 21. 型付けの一意性(具体例) 0 : Nat 0 : Nat                 iszero 0 : Bool 0 : Nat pred 0 : Nat                       if iszero 0 then 0 else pred 0 : Nat
  22. 22. 型付けの一意性(証明)● 方針: subterms に関する数学的帰納法で証明する。 つまり、 項 t に対し、すべての直下のsubtermに関して定理の 主張(型付けの一意性)が成り立っていると仮定した とき、 t の型が一意に定まることを示す。
  23. 23. 型付けの一意性(証明)● 方針: t の取りうるsyntax(項の形式)に応じて場合分けす る。● t = true (Case-True)● t = false (Case-False)● t = if t1 then t2 else t3 (Case-If)● t = 0 (Case-Zero)● t = succ t1 (Case-Succ)● t = pred t1 (Case-Pred)● t = iszero t1 (Case-Iszero)
  24. 24. 型付けの一意性(証明)● t = if t1 then t2 else t3 (Case-If) 定理の仮定から、ある型 R が存在し t = if t1 then t2 else t3 : R このとき、Lemma 8.2.2 - 3 より t1 : Bool, t2 : R, t3 : R 帰納法の仮定により、各 ti の型付けは一意。 したがって、型付け規則 (T-If) により t はその型として R のみを持つ。
  25. 25. 型付けの一意性(証明) 残りのケース● t = succ t1 (Case-Succ)● t = pred t1 (Case-Pred)● t = iszero t1 (Case-Iszero) → t = if t1 then t2 else t3 と同様● t = true (Case-True)● t = false (Case-False)● t = 0 (Case-Zero) → Lemma 8.2.2 からダイレクトに従う
  26. 26. 型付けの一意性(証明)● Lemma 8.2.2 の証明 それぞれの項のsyntaxから、適用できる型付け規則が 一意に定まる。 e.g. t = true に適用できる規則は (T-True) のみ これにより、補題の主張が従う。
  27. 27. 型付けの一意性定理から分かること Simply typed arithmetic expressionsにおいては● 任意の項が唯一つの型を持つ● 任意の項について、型の導出木は唯一つである ※注意 後の章で扱う、より複雑な型システムにおいて は、一般にこのような定理は成り立たない cf. subtyping
  28. 28. 8章でやること● 型付け規則の導入(Simple types)● 型付けの一意性の証明(Simple typesの場合)● 型安全性の証明 (* Safety = Progress + Preservation)
  29. 29. 型安全性の証明● ここでは、Simply typed arithmetic expressionsにおいて下記2つの定理が成り立つ ことを示す: Theorem 8.3.2 (Thm. of Progress) Well typedな項は非stuck Theorem 8.3.3 (Thm. of Preservation) 項の評価は型を保存する。
  30. 30. 型安全性とは● TaPLにおける型安全性(Safety = Progress + Preservation)とは: 型付けされた項は、途中でstuckになることは なくきちんと評価される ということ。● 型安全性は、後の章で扱うより複雑な型システ ムにおいても成立する。
  31. 31. Progress(証明)● 方針: 導出に関する数学的帰納法で証明する。 つまり、 t : T に対し、そのすべてのsubtermに関して定理の 主張(それらがvalueである、または前進評価が可能 であること)を仮定したときに、 t 自身も同様にvalueである、または前進評価が可能 であることを示す。
  32. 32. Progress(証明)● 方針: 直前のtyping rule(導出規則)に応じて場合分け。● t = true : T-True● t = false : T-False● t = if t1 then t2 else t3 : T-If● t = 0 : T-Zero● t = succ t1 : T-Succ● t = pred t1 : T-Pred● t = iszero t1 : T-Iszero
  33. 33. Progress(証明)● 方針: 直前のtyping rule(導出規則)に応じて場合分け。● t = true : T-True● t = false : T-False● t = if t1 then t2 else t3 : T-If● t = 0 : T-Zero● t = succ t1 : T-Succ● t = pred t1 : T-Pred● t = iszero t1 : T-Iszero
  34. 34. Progress(証明)● Case-T-If このとき、 t = if t1 then t2 else t3 (t : T) t1 : Bool, t2 : T, t3 : T 帰納法の仮定より、subterm t1 について (i) t1 は value (ii) ある t1 が存在し、 t1 → t1
  35. 35. Progress(証明)● Case-T-If (i) t1 は value のとき Lemma 8.3.1 より、t1 = true or t1 = false ⇒ t に評価規則 E-IfTrue または E-IfFalse を  適用可能 ⇒ t → t2 (E-IfTrue) または t → t3 (E-IfFalse) (ii) ある t1 が存在し、 t1 → t1 のとき t に評価規則 E-If を適用可能 ⇒ t = if t1 then t2 else t3 → if t1 then t2 else t3
  36. 36. Lemma8.3.1(Canonical Forms)(i) v が Bool型のvalueのとき、v = true or v = false(ii) v が Nat型のvalueのとき、v = nv証明:Simply typed A.E. において、valueの取りうるsyntactic form は true, false, 0, succ nv の4種(i) v = 0 と仮定する。補題の仮定より、0 : Bool⇒ Lemma 8.2.2(inversion lemma)-4 に矛盾
  37. 37. Preservation(証明)● 方針: 導出に関する数学的帰納法で証明する。 つまり、 t : T に対し、そのすべてのsubtermに関して定理の 主張(評価によって型が保存されること)を仮定した ときに、 t 自身も同様に、評価によって型が保存されることを 示す。
  38. 38. Preservation(証明)● 方針: 直前のtyping rule(導出規則)に応じて場合分け。● t = true : T-True● t = false : T-False● t = if t1 then t2 else t3 : T-If● t = 0 : T-Zero● t = succ t1 : T-Succ● t = pred t1 : T-Pred● t = iszero t1 : T-Iszero
  39. 39. Preservation(証明)● 最も非自明なCase-T-Ifを証明する。 このとき、 t = if t1 then t2 else t3 (t : T) t1 : Bool, t2 : T, t3 : T 定理の仮定より、ある t について t → t このとき用いられる評価規則としては、 t のsyntax より E-IfTrue, E-IfFalse, E-If の3通りが考えられる。
  40. 40. Preservation(証明)(i) E-IfTrue の場合このとき、t1 = true, t = t2t2 : T であったので、t : T(ii) E-IfFalse の場合このとき、t1 = false, t = t3t3 : T であったので、t : T(iii) E-If の場合このとき、t1 → t1, t = if t1 then t2 else t3いま、t1 : Bool であるから、帰納法の仮定により、t1: Bool
  41. 41. Preservation(証明) よって、 t = if t1 then t2 else t3 t1 : Bool, t2 : T, t3 : T ⇒型付け規則 T-If により、 t = if t1 then t2 else t3 : T● その他のケースについても同様に示せる。
  42. 42. 8章のまとめ● 3章で扱った Arithmetic expression の体系 に、Simpleな型付け規則を導入しました。● Simply typed A.E. において、型付けの一意性 を証明しました。● Simply typed A.E. において、型安全性 (Progress + Preservation) を証明しました。
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×