cis 500 software foundations subtyping fall 2005 14
play

CIS 500 Software Foundations Subtyping Fall 2005 14 November - PowerPoint PPT Presentation

CIS 500 Software Foundations Subtyping Fall 2005 14 November CIS 500, 14 November 1 CIS 500, 14 November 2 Motivation Motivation With our usual typing rule for applications With


  1. ✬ ✩ ✬ ✩ CIS 500 Software Foundations Subtyping Fall 2005 14 November ✫ ✪ ✫ ✪ CIS 500, 14 November 1 CIS 500, 14 November 2 ✬ ✩ ✬ ✩ Motivation Motivation With our usual typing rule for applications With our usual typing rule for applications Γ ⊢ t 1 : T 11 → T 12 Γ ⊢ t 2 : T 11 Γ ⊢ t 1 : T 11 → T 12 Γ ⊢ t 2 : T 11 ( T-App ) ( T-App ) Γ ⊢ t 1 t 2 : T 12 Γ ⊢ t 1 t 2 : T 12 the term the term ( λ r:{x:Nat}. r.x) {x=0,y=1} ( λ r:{x:Nat}. r.x) {x=0,y=1} is not well typed. is not well typed. This is silly: all we’re doing is passing the function a better argument than it needs. ✫ ✪ ✫ ✪ CIS 500, 14 November 3 CIS 500, 14 November 3-a

  2. ✬ ✩ ✬ ✩ Polymorphism Polymorphism A polymorphic function may be applied to many different types of data. A polymorphic function may be applied to many different types of data. Varieties of polymorphism: Varieties of polymorphism: � Parametric polymorphism (ML-style) � Parametric polymorphism (ML-style) � Subtype polymorphism (OO-style) � Subtype polymorphism (OO-style) � Ad-hoc polymorphism (overloading) � Ad-hoc polymorphism (overloading) In this class, we will consider subtype polymorphism, which is based on the idea of subsumption. ✫ ✪ ✫ ✪ CIS 500, 14 November 4 CIS 500, 14 November 4-a ✬ ✩ ✬ ✩ Subsumption Example More generally: some types are better than others, in the sense that a value of We will define subtyping between record types so that, for example, one can always safely be used where a value of the other is expected. {x:Nat, y:Nat} < : {x:Nat} We can formalize this intuition by introducing 1. a subtyping relation between types, written S < : T So, by subsumption, 2. a rule of subsumption stating that, if S < : T , then any value of type S can ⊢ {x=0,y=1} : {x:Nat} also be regarded as having type T and hence ( λ r:{x:Nat}. r.x) {x=0,y=1} Γ ⊢ t : S S < : T ( T-Sub ) is well typed. Γ ⊢ t : T ✫ ✪ ✫ ✪ CIS 500, 14 November 5 CIS 500, 14 November 6

  3. ✬ ✩ ✬ ✩ The Subtype Relation: Records The Subtype Relation: Records Permutation of fields: “Width subtyping” (forgetting fields on the right): j ∈ 1 ..n } is a permutation of {l i :T i i ∈ 1 ..n } {k j :S j ( S-RcdWidth ) i ∈ 1 ..n + k } < i ∈ 1 ..n } {l i :T i : {l i :T i ( S-RcdPerm ) j ∈ 1 ..n } < i ∈ 1 ..n } {k j :S j : {l i :T i Intuition: {x:Nat} is the type of all records with at least a numeric x field. By using S-RcdPerm together with S-RcdWidth and S-Trans , we can drop Note that the record type with more fields is a subtype of the record type with arbitrary fields within records. fewer fields. Reason: the type with more fields places a stronger constraint on values, so it describes fewer values. ✫ ✪ ✫ ✪ CIS 500, 14 November 7 CIS 500, 14 November 8 ✬ ✩ ✬ ✩ “Depth subtyping” within fields: Example for each i S i < : T i S-RcdWidth S-RcdWidth ( S-RcdDepth ) {a:Nat,b:Nat} < : {a:Nat} {m:Nat} < : {} i ∈ 1 ..n } < i ∈ 1 ..n } {l i :S i : {l i :T i S-RcdDepth {x:{a:Nat,b:Nat},y:{m:Nat}} < : {x:{a:Nat},y:{}} The types of individual fields may change. ✫ ✪ ✫ ✪ CIS 500, 14 November 9 CIS 500, 14 November 10

  4. ✬ ✩ ✬ ✩ Variations The Subtype Relation: Arrow types Real languages often choose not to adopt all of these record subtyping rules. For example, in Java, T 1 < : S 1 S 2 < : T 2 ( S-Arrow ) � A subclass may not change the argument or result types of a method of its S 1 → S 2 < : T 1 → T 2 superclass (i.e., no depth subtyping) � Each class has just one superclass (“single inheritance” of classes) Note the order of T 1 and S 1 in the first premise. The subtype relation is contravariant in the left-hand sides of arrows and covariant in the right-hand → each class member (field or method) can be assigned a single − sides. index, adding new indices “on the right” as more members are added in subclasses Intuition: if we have a function f of type S 1 → S 2 , then we know that f accepts (i.e., no permutation for classes) elements of type S 1 ; clearly, f will also accept elements of any subtype T 1 of S 1 . The type of f also tells us that it returns elements of type S 2 ; we can also � A class may implement multiple interfaces (“multiple inheritance” of view these results belonging to any supertype T 2 of S 2 . That is, any function f interfaces) of type S 1 → S 2 can also be viewed as having type T 1 → T 2 . I.e., permutation is allowed for interfaces. ✫ ✪ ✫ ✪ CIS 500, 14 November 11 CIS 500, 14 November 12 ✬ ✩ ✬ ✩ The Subtype Relation: Top The Subtype Relation: General rules It is convenient to have a type that is a supertype of every type. We introduce ( S-Refl ) a new type constant Top , plus a rule that makes Top a maximum element of S < : S the subtype relation. S < : U U < : T ( S-Trans ) ( S-Top ) S < : Top S < : T Cf. Object in Java. ✫ ✪ ✫ ✪ CIS 500, 14 November 13 CIS 500, 14 November 14

  5. ✬ ✩ ✬ ✩ Subtype relation T 1 < : S 1 S 2 < : T 2 ( S-Arrow ) S 1 → S 2 < : T 1 → T 2 ( S-Refl ) S < : S ( S-Top ) S < : Top S < : U U < : T ( S-Trans ) S < : T ( S-RcdWidth ) i ∈ 1 ..n + k } < i ∈ 1 ..n } {l i :T i : {l i :T i for each i S i < : T i ( S-RcdDepth ) i ∈ 1 ..n } < i ∈ 1 ..n } {l i :S i : {l i :T i j ∈ 1 ..n } is a permutation of {l i :T i i ∈ 1 ..n } {k j :S j ( S-RcdPerm ) j ∈ 1 ..n } < i ∈ 1 ..n } {k j :S j : {l i :T i ✫ ✪ ✫ ✪ CIS 500, 14 November 15 CIS 500, 14 November 16 ✬ ✩ ✬ ✩ Safety Statements of progress and preservation theorems are unchanged from λ → . Proofs become a bit more involved, because the typing relation is no longer Properties of Subtyping syntax directed. Given a derivation, we don’t always know what rule was used in the last step. The rule T-Sub could appear anywhere. Γ ⊢ t : S S < : T ( T-Sub ) Γ ⊢ t : T ✫ ✪ ✫ ✪ CIS 500, 14 November 17 CIS 500, 14 November 18

  6. ✬ ✩ ✬ ✩ Preservation Subsumption case → t ′ , then Γ ⊢ t ′ : T . Theorem: If Γ ⊢ t : T and t − Case T-Sub : t : S S < : T Proof: By induction on typing derivations. (Which cases are hard?) ✫ ✪ ✫ ✪ CIS 500, 14 November 19 CIS 500, 14 November 20 ✬ ✩ ✬ ✩ Subsumption case Subsumption case Case T-Sub : Case T-Sub : t : S S < : T t : S S < : T By the induction hypothesis, Γ ⊢ t ′ : S . By T-Sub , Γ ⊢ t : T . By the induction hypothesis, Γ ⊢ t ′ : S . By T-Sub , Γ ⊢ t : T . Not hard! ✫ ✪ ✫ ✪ CIS 500, 14 November 20-a CIS 500, 14 November 20-b

  7. ✬ ✩ ✬ ✩ Application case Application case Case T-App : Case T-App : t = t 1 t 2 Γ ⊢ t 1 : T 11 → T 12 Γ ⊢ t 2 : T 11 T = T 12 t = t 1 t 2 Γ ⊢ t 1 : T 11 → T 12 Γ ⊢ t 2 : T 11 T = T 12 By the inversion lemma for evaluation, there are three rules by which t − → t ′ By the inversion lemma for evaluation, there are three rules by which t − → t ′ can be derived: E-App1 , E-App2 , and E-AppAbs . Proceed by cases. can be derived: E-App1 , E-App2 , and E-AppAbs . Proceed by cases. t ′ = t ′ → t ′ Subcase E-App1 : t 1 − 1 t 2 1 The result follows from the induction hypothesis and T-App . Γ ⊢ t 1 : T 11 → T 12 Γ ⊢ t 2 : T 11 Γ ⊢ t 1 : T 11 → T 12 Γ ⊢ t 2 : T 11 ( T-App ) ( T-App ) Γ ⊢ t 1 t 2 : T 12 Γ ⊢ t 1 t 2 : T 12 → t ′ t 1 − 1 ( E-App1 ) → t ′ t 1 t 2 − 1 t 2 ✫ ✪ ✫ ✪ CIS 500, 14 November 21 CIS 500, 14 November 21-a ✬ ✩ ✬ ✩ Case T-App (continued) : Case T-App (continued) : t = t 1 t 2 Γ ⊢ t 1 : T 11 → T 12 Γ ⊢ t 2 : T 11 T = T 12 t = t 1 t 2 Γ ⊢ t 1 : T 11 → T 12 Γ ⊢ t 2 : T 11 T = T 12 t ′ = v 1 t ′ t ′ = [ x � → v 2 ] t 12 → t ′ Subcase E-App2 : t 1 = v 1 t 2 − Subcase E-AppAbs : t 1 = λ x:S 11 . t 12 t 2 = v 2 2 2 Similar. By the inversion lemma for the typing relation... Γ ⊢ t 1 : T 11 → T 12 Γ ⊢ t 2 : T 11 ( T-App ) Γ ⊢ t 1 t 2 : T 12 Γ ⊢ t 1 : T 11 → T 12 Γ ⊢ t 2 : T 11 ( T-App ) Γ ⊢ t 1 t 2 : T 12 → t ′ t 2 − 2 ( E-App2 ) ( E-AppAbs ) → v 1 t ′ → [ x � → v 2 ] t 12 v 1 t 2 − ( λ x:T 11 .t 12 ) v 2 − 2 ✫ ✪ ✫ ✪ CIS 500, 14 November 22 CIS 500, 14 November 23

Download Presentation
Download Policy: The content available on the website is offered to you 'AS IS' for your personal information and use only. It cannot be commercialized, licensed, or distributed on other websites without prior consent from the author. To download a presentation, simply click this link. If you encounter any difficulties during the download process, it's possible that the publisher has removed the file from their server.

Recommend


More recommend