By induction we deduce [Psi]; 0 [??.sub.TAL] R(v') : [Tau]'[[Sigma]/[Alpha]] wval, and then the rule (pack-word) proves [Psi]; 0 [??.sub.TAL] pack [[Sigma], R(v')] as [exists][Alpha].[Tau]' : [exists][Alpha].[Tau]' wval.

(4) If [Tau] = [exists][Alpha].[Tau] then R(v) = pack [[Tau]', w] as [exists][Alpha].[Tau] and [Psi]; 0 [??.sub.TAL] w : [Tau][[Tau]'/[Alpha]] wval.

(2) By Canonical Forms it follows that R([r.sub.s]) and R(v) are integer literals, and therefore [Psi]; 0 [??.sub.TAL] R([r.sub.s])p R(v) : int wval. We conclude [Psi] [??.sub.TAL] R' : [Gamma]' by Register File Update.

Since [[Psi].sub.i] = 1 it must be the case (by inspection of the (init) rule) that [Psi]; 0 [??.sub.TAL] [w.sub.i] : [[Tau].sub.i] wval. By Register File we conclude [Psi] [??.sub.TAL] R' : [Gamma]'.

(2) By the (type), (reflex), and (label) rules we may deduce that [Psi]'; 0 [??.sub.TAL] l : [Sigma] wval. By Heap Extension we deduce that [Psi]';0 [??.sub.TAL] R: [Gamma], and it follows by Register File Update that [Psi]' [??.sub.TAL] R': [Gamma]'.

(2) By R Typing it follows from [Psi]; 0; [Gamma] [??.sub.TAL] v : [Tau] that [Psi]; 0 [??.sub.TAL] R(v): [Tau] wval.

(1) Since [Psi]; 0; [Gamma] [??.sub.TAL] [r.sub.d] = [[Sigma].sub.0], it must be the case that [Gamma]([r.sub.d]) = [[Sigma].sub.0], and thus since [Psi] [??.sub.TAL] R : [Gamma] and R([r.sub.d]) = l we may deduce [Psi]; 0 [??.sub.TAL], l : [[Sigma].sub.0] wval. The latter judgment must be proven with the (label) rule; hence 0 [??.sub.TAL] [[Sigma]'.sub.0] <[is less than or equal to] [[Sigma].sub.0] where [Psi] (l) = [[Sigma]'.sub.0].

Using R Typing and Heap Update, we may deduce that [Psi]; 0 [??.sub.TAL] R([r.sub.s]) : [[Tau].sub.i] wval, and by applying the (init) and (tuple) rules we may conclude that

Thus, [Psi]; 0 [??.sub.TAL] l : [[Sigma].sub.1] wval, and by Register File Update we may conclude that [Psi]' [??.sub.TAL] R: [Gamma]' (since R = R{[r.sub.d] ??

(2) By Canonical Forms it follows from [Psi];0 [Gamma] [??.sub.TAL]F v : [exists][Alpha].[Tau]' that [Psi]; 0 [??.sub.TAL] w : [Tau]'[[Tau]/[Alpha]] wval. Let [Gamma]'= [Gamma]{r: [Tau]'[[Tau]-/[Alpha]]}.