Types and Programming Languages PowerPoint PPT Presentation

presentation player overlay
About This Presentation
Transcript and Presenter's Notes

Title: Types and Programming Languages


1
Types and Programming Languages
Lecture 12
Simon Gay Department of Computing
Science University of Glasgow
2006/07
2
Type 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.
3
Linear 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,
4
Linear 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.
5
Linear Lambda Calculus Semantics
Next we define reductions which consume values.
m,n different
6
Linear Lambda Calculus Semantics
Finally we define reductions within expressions,
as usual.
Similarly for the other operators.
7
Example
? , (?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
8
Example
? ,
(?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
9
Exercise
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?
10
Proving 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.
11
Linear 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)
12
Well-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
13
Well-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.
14
Substitution 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.
15
Substitution 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.
16
Type 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.
17
Type 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.
18
Type 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.
19
Type Preservation
4. The remaining cases, such as
follow from straightforward uses of the induction
hypothesis.
20
Progress
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.
21
The 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
  1. S is mtrue
  2. S is mfalse
  3. S is mv for some integer literal v
  4. 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
Write a Comment
User Comments (0)
About PowerShow.com