A brief summary of Lecture 3 (March 11): (1) Refined type language for AEXP Instead of tau ::= Int we define tau' ::= IntE | IntO -- we distinguish among even and odd integers (2) We need to adjust AEXP's static semantics: (OP) |- e1 : IntE |- e2 : IntE ---------------------------- |- e1 op e2 : IntE |- e1 : IntE |- e2 : IntO ---------------------------- |- e1 op e2 : IntO where op in {+,-,*,/} and soon (3) Further refinement: a ::= i | a op a where op in {+,-,*,/} tau'' ::= Int(a) (OP) |- e1 : Int(a1) |- e2 : Int(a2) ---------------------------------- |- e1 op e2 : Int(a1 op a2) (4) Soundness of static semantics wrt dynamic semantics We say a system consituting of ( |- e : tau, |- e => v) (note I use `=>` instead of the downarrow) is sound iff for any expression and type tau if |- e : tau then |- e => v for some value v