Note: Submission is optional but recommended; try your best. We'll discuss some of these on Tuesday 12/17's review session. subtyping (chap. 15): 1. 15.5.2 (S-Ref) 2. 15.5.3 (S-Array) 3. give an example term that is well-typed using only Source (but untypable using S-Ref), and an example typable with Sink (but untypable using S-Ref). 4. under the new variant definition, consider term: case of =>x1 =>ref x2 draw the typing derivation. featherweight java (chap. 19): 0. evaluate term new Pair(new A(), new B()).setfst(new B()) all the way to a value. also show its typing derivation. 1. give an example of overriding and downcasting. why is downcasting unavoidable? 2. reformulate preservation theorem w/o the stupid casting rule. 3. define big-step semantics for FJ evaluation. 4. 19.4.5. Note: you don't need to know what is algorithmic subtyping. All you need to notice is that \gamma |- t : T means different things in chap. 15 and chap. 19. What is that crucial difference? 5. What can you say b/w evaluation context and congruence rules? Do you have a better understanding of congruence rules now? 6. What's your understanding of the override rule?