A Simpli Ed Account of Polymorphic References

A Simpli Ed Account of Polymorphic References

A Simpli ed AccountofPolymorphic References Rob ert Harp er June, 1993 CMU-CS-93-169 Scho ol of Computer Science Carnegie Mellon University Pittsburgh, PA 15213 Abstract A pro of of the soundness of Tofte's imp erativetyp e discipline with resp ect to a structured op erational semantics is given. The presentation is based on a semantic formalism that combines the b ene ts of the approaches considered byWrightandFelleisen, and byTofte, leading to a particularly simple pro of of soundness of Tofte's typ e discipline. This researchwas sp onsored by the Defense Advanced Research Pro jects Agency, CSTO, under the title \The Fox Pro ject: Advanced Development of Systems Software", ARPA Order No. 8313, issued by ESD/AVS under Contract No. F19628-91-C-0168. The views and conclusions contained in this do cument are those of the author and should not b e interpreted as representing ocial p olicies, either expressed or implied, of the Defense Advanced Research Pro jects Agency or the U.S. Government. Keywords: lamb da calculus, typ e theory, functional programming, references and assignment 1 Intro duction The extension of Damas and Milner's p olymorphic typ e system for pure functional programs [2] to accomo- date mutable cells has proved to b e problematic. The nave extension of the pure language with op erations to allo cate a cell, and to retrieve and mo dify its contents is unsound [11]. The problem has received consid- erable attention, notably by Damas [3], Tofte [10,11], and LeroyandWeiss [7]. Tofte's solution is based on a greatest xed p oint construction to de ne the semantic typing relation [11] (see also [8]). This metho d has b een subsequently used by Leroy and Weiss [7]andTalpin and Jouvelot [9]. It was subsequently noted by Wright and Felleisen [13] that the pro of of soundness can b e substantially simpli ed if the argument is made by induction on the length of an execution sequence, rather than on the structure of the typing derivation. Using this metho d they establish the soundness of a restriction of the language to require that let-b ound expressions b e values. In this note we present an alternative pro of of the soundness of Tofte's imp erativetyp e discipline using a semantic framework that is intermediate b etween that of WrightandFelleisen and that of Tofte. The formalism considered admits a very simple and intuitively app ealing pro of of the soundness of Tofte's typ e discipline, and may b e of some use in subsequent studies of this and related problems. 2 A Language with Mutable Data Structures The syntax of our illustrative language is given by the following grammar: expressions e ::= x j l j unit j ref e j e := e j ! e j x:e j e e j let x be e in e 1 2 1 2 1 2 values v ::= x j l j unit j x:e The meta-variable x ranges over a countably in nite set of variables, and the meta-variable l ranges over a countably in nite set of locations. In the ab ove grammar unit is a constant, ref and ! are one-argument primitive op erations, and :=isatwo-argument primitive op eration. Capture-avoiding substitution of a value v for a free variable x in an expression e is written [v=x]e. The syntax of typeexpressions is given by the following grammar: monotypes ::= t j unit j ref j ! 1 2 polytypes ::= j8t: The meta-variable t ranges over a countably in nite set of type variables. The symbol unit is a distinguished base typ e, and typ es of the form ref stand for the typ e of references to values of typ e . The set FTV( ) of typ e variables o ccurring freely in a p olytyp e is de ned as usual, as is the op eration of capture-avoiding substitution of a monotyp e for free o ccurrences of a typ e variable t in a p olytyp e , written [=t] . A variable typing is a function mapping a nite set of variables to p olytyp es. The meta-variable ranges over variable typings. The p olytyp e assigned to a variable x in a variable typing is (x), and the variable 0 typing [x: ] is de ned so that the variable x is assigned the p olytyp e ,anda variable x 6= x is assigned 0 the p olytyp e (x ). The set of typ e variables o ccuring freely in a variable typing , written FTV ( ), is S de ned to b e FTV ( (x)). A location typing is a function mapping a nite set of lo cations to x2dom( ) monotyp es. The meta-variable ranges over lo cation typings. Notational conventions similar to those for variable typings are used for lo cation typings. Polymorphic typ e assignment is de ned by a set of rules for deriving judgements of the form ; ` e : , with the intended meaning that the expression e has typ e under the assumption that the lo cations in e have the monotyp es ascrib ed by , and the free variables in e have the p olytyp es ascrib ed by . The rules of inference are given in Table 1. These rules make use of two auxiliary notions. The polymorphic 0 instance relation is de ned to hold i is a p olytyp e of the form 8t : ...:8t : and is a monotyp e 1 n 0 of the form [ ; ...; =t ; ...;t ] ,where , ..., are monotyp es. This relation is extended to p olytyp es 1 n 1 n 1 n 0 0 by de ning i whenever . The polymorphic generalization of a monotyp e relative to a lo cation typing and variable typing , Close ( ), is the p olytyp e 8t : ...:8t : , where FTV ( ) n ; 1 n (FTV () [ FTV( )) = f t ; ...;t g. As a notational convenience, we sometimes write ` e : for ; ;` e : 1 n and Close ( ) for Close ( ). ;; The following lemma summarizes some imp ortant prop erties of the typ e system: 1 ; ` x : ( (x) ) (var) ; ` l : ref ((l )= ) (loc) ; ` unit : unit (triv) ; ` e : (ref) ; ` ref e : ref ; ` e : ref ; ` e : 1 2 (assign) ; ` e := e : unit 1 2 ; ` e : ref (retrieve) ; ` ! e : ; [x: ] ` e : 1 2 (x 62 dom( )) (abs) ; ` x:e : ! 1 2 ; ` e : ! ; ` e : 1 2 2 2 (app) ; ` e e : 1 2 ; ` e : ; [x: Close ( )] ` e : 1 1 ; 1 2 2 (x 62 dom( )) (let) ; ` let x be e in e : 1 2 2 Table 1: Polymorphic Typ e Assignment 2 ` v ) v; (val) 0 ` e ) v; 0 (l 62 dom( )) (alloc) 0 ` ref e ) l; [l :=v ] 0 ` e ) l; (contents) 0 0 ` ! e ) (l ); ` e ) l; ` e ) v; 1 1 1 2 2 (update) ` e := e ) unit; [l :=v ] 1 2 2 0 0 0 ` e ) x:e ; ` e ) v ; ` [v =x]e ) v; 1 1 1 2 2 2 2 2 1 1 (apply) 0 ` e e ) v; 1 2 ` e ) v ; ` [v =x]e ) v ; 1 1 1 1 1 2 2 2 (bind) ` let x be e in e ) v ; 1 2 2 2 Table 2: Op erational Semantics for References Lemma 2.1 1. (Weakening) Suppose that ; ` e : .Ifl 62 dom(), then [l : ]; ` e : ,andifx 62 dom( ), then ; [x: ] ` e : . 0 0 0 0 2. (Substitution) If ; ` v : and ; [x: ] ` e : , and if Close ( ) , then ; ` [v=x]e : ; 0 0 3. (Specialization) If ; ` e : and Close ( ) , the ; ` e : . ; The pro ofs are routine inductions on the structure of typing derivations. Substitution is stated only for values, in recognition of the fact that in a call-by-value language only values are ever substituted for variables during evaluation. 3 Semantics and Soundness A memory is a partial function mapping a nite set of lo cations to values. The contents ofalocation l 2 dom()isthevalue (l ), and we write [l :=v ] for the memory which assigns to lo cation l the value v 0 0 and to a lo cation l 6= l the value (l ). Notice that the result may either b e an update of (if l 2 dom()) or an extension of (if l 62 dom()). The op erational semantics of the language is de ned by a collection of rules for deriving judgements of 0 the form ` e ) v; ,withtheintended meaning that the closed expression e,whenevaluated in memory 0 , results in value v and memory . The rules of the semantics are given in Table 2. The typing relation is extended to memories and lo cation typings by de ning : to hold i dom()= dom(), and for every l 2 dom(), ` l : (l ). Notice that the typing relation is de ned so that (l ) may mention lo cations whose typ e is de ned by . (Compare Tofte's account [11].) For example, supp ose that is the memory sending lo cation l to x:x + 1, and lo cation l to y :(! l ) y + 1, and supp ose that 0 1 0 is the lo cation typing assigning the typ e int !int to b oth l and l .Theveri cation that : requires 0 1 checking that ` y :(! l ) y +1 : int!int,which requires determining the typ e assigned to lo cation l by . 0 0 0 As p ointed out byTofte [11], the memory which assigns (l ) to b oth l and l can arise as a result of 1 0 1 0 an assignment statement. Toverify that : requires checking that ` (l ):(l ), which itself relies 0 0 on (l )! Tofte employs a \greatest xed p oint" construction to account for this p ossibility, but no such 0 machinery is needed here.

View Full Text

Details

  • File Type
    pdf
  • Upload Time
    -
  • Content Languages
    English
  • Upload User
    Anonymous/Not logged-in
  • File Pages
    8 Page
  • File Size
    -

Download

Channel Download Status
Express Download Enable

Copyright

We respect the copyrights and intellectual property rights of all users. All uploaded documents are either original works of the uploader or authorized works of the rightful owners.

  • Not to be reproduced or distributed without explicit permission.
  • Not used for commercial purposes outside of approved use cases.
  • Not used to infringe on the rights of the original creators.
  • If you believe any content infringes your copyright, please contact us immediately.

Support

For help with questions, suggestions, or problems, please contact us