Title: Types and Programming Languages
1Types and Programming Languages
Lecture 12
Simon Gay Department of Computing
Science University of Glasgow
2006/07
2Type Safety Unique Use
In order to prove that every value is used
exactly once, we need to define an alternative
operational semantics which allows us to see
values being consumed.
The idea is to explicitly represent every value
as being stored in memory and accessed by a
pointer. Then we can define reductions on Store
, Term configurations so that every value is
removed from the store when it is first used.
Then we will prove that when executing a
well-typed term, we never get a dangling pointer,
and that at the end of execution, there is
nothing left in the store except the final value.
The system will look like what we would get in
lambda calculus with references, if we put ref
around every value.
3Linear Lambda Calculus Syntax
The same as before, plus store locations
(pointers) m,n,
v integer literal true false
?xT.e m (not
top-level syntax) e v x e e
e e e e if e then e else e ee
T int bool T ? T
Store S mv,
4Linear Lambda Calculus Semantics
First define removal of a location from the store
(S, mv, S) m S,S
Now define reductions of the form
S , e ? S , e
Evaluating a value creates a store location and
returns it
S , true ? Smtrue , m S , false ?
Smfalse , m S , v ? Smv , m S ,
?xT.e ? Sm?xT.e , m
v is a integer literal
In each case, m is a fresh location.
5Linear Lambda Calculus Semantics
Next we define reductions which consume values.
m,n different
6Linear Lambda Calculus Semantics
Finally we define reductions within expressions,
as usual.
Similarly for the other operators.
7Example
? , (?xint.
x1)2
m ?xint. x1 , m 2
(m ?xint. x1 , n 2) , m n
n 2 , n1
(n 2 , p 1) , np
q 3 , q
FINAL RESULT
8Example
? ,
(?xint. (x1)x)2
m ?xint. (x1)x , m 2
(m ?xint. (x1)x , n 2) , m n
n 2 ,
(n1)n
(n 2 , p 1) , (np)n
q 3 , qn
STUCK n is a dangling pointer
9Exercise
We now have two different semantics for
(essentially) the same language lambda calculus.
The original semantics is based on reductions of
expressions. The new semantics uses a store (and
destroys values after their first use).
Try to prove the following theorem, relating the
semantics
If ? , e ? S,mv, m in the linear lambda
calculus semantics, then e ? v in the
standard lambda calculus semantics.
Why dont we expect the converse to be true?
10Proving Type Safety Unique Use
Just as in the case of lambda calculus with
references, we need the idea of a store typing ?
, so that we can give a type to the expression m
(store location).
The store typing must be treated in the same way
as the environment ?, so that in a typing
judgement ? ? ? eT the ? and ? describe
exactly the variables and locations used by e.
11Linear Lambda Calculus with Store Typings
? ? ? true bool ? ? ? false bool ? ? ?
v int if v is an integer literal
(LS-Var)
(LS-Loc)
x T ? ? x T
? mT ? m T
(LS-Plus)
similarly ,
(LS-If)
(LS-Abs)
(LS-App)
12Well-Typed Stores
Just as we saw for references, we need the idea
of a well-typed store. We write ? S ? and
define it by the following rules
? ? ?
Empty
Next
This is rather subtle. The store typing ?
describes the store locations that are available
for use, i.e. not already used within other parts
of the store.
Examples
? m2, ntrue mint, nbool
? m2, n?xint. xm nint?int
13Well-Typed Stores
We will need the following fact about well-typed
stores.
Lemma If ? S,mv ?,mT and ? ?
? v T then ? S ?,?
This might seem trivial, but the effect is that
we can use rule Next (previous slide) in reverse
even when m was not the last location to be
added.
It can be proved (exercise) by induction on the
derivation of ? S,mv ?,mT . The base case
is trivial and the inductive case breaks into two
sub-cases, depending on whether or not m is the
last location added.
14Substitution Lemma
As usual we need a substitution lemma. Because of
the way the operational semantics is defined, we
only need to consider substituting a store
location for a variable.
Lemma If ?, xT ? ? eU then ?
?,nT ? en/x U
Proof (outline)
e cannot be a boolean or integer literal or a
store location (why?)
If e is a variable then it must be x (why?) and ?
and ? must be ? (why?) so the desired conclusion
is ? nT ? nT which follows from rule
LS-Loc.
15Substitution Lemma
Proof (continued)
The other cases use the induction hypothesis in a
similar way to the Substitution Lemma for simply
typed lambda calculus. The difference is that the
substitution only goes into one part of
the expression.
If e is tu then we have
where
and we consider two cases, depending on whether x
is used in e or in f.
16Type Preservation
Theorem If ? ? ? eT and ? S ? and S
, e ? S , e then there exists ?
such that ? ? ? eT and ? S ? .
Proof By induction on the derivation of S , e
? S , e .
1. S , true ? Smtrue , m
We have ? ? ? truebool so ?? (why?) and
S? (why?).
Therefore S (mtrue) .
Taking ? mbool gives ? ? ? mbool and
? S ? as required.
The cases of the other values are similar. For
?yU.e we cant say that ?? and S? because e
may use locations.
17Type Preservation
2. S , if m then e else e ? S-m , e
because S(m)true .
We have
therefore
we have ? ? ? eT
Taking
and we just need ? S-m ?
which follows from the Lemma on slide 13.
18Type Preservation
3. S , mn ? S-m , en/x because
S(m) ?xT.e .
We have
and ? S mT o U, nT
By the lemma on slide 13, ? S-m ?,nT
where ? ? ? ?xT.e T?U
This typing is justified by xT ? ? e U
from which the Substitution Lemma gives ? ?,nT
? en/x U
as required.
19Type Preservation
4. The remaining cases, such as
follow from straightforward uses of the induction
hypothesis.
20Progress
Finally we can also prove
Progress Theorem
If ? S ? and ? ? ? eT then either S
, e ? S , e (for some S) or e is a store
location.
very easily, by checking that for every
potentially reducing term (e.g. if m then t else
e), the typing and the store typing mean that one
of the reduction rules applies.
21The Final Value
Combining Progress and Preservation, we see that
reduction of a typed term in a typed store
terminates with S , m and one of the following
cases applies
- S is mtrue
- S is mfalse
- S is mv for some integer literal v
- S(m) ?xT.e and ? S-m ? and xT ?
? e Ui.e. S contains just m and the locations
referred to by e
Exercise work out the complete reduction
sequence for
(?xint.?yint.xy)3