Presentation is loading. Please wait.

Presentation is loading. Please wait.

Just Enough Type Theory or, Featherweight Java A Simple Formal Model of Objects Jonathan Aldrich 15-819.

Similar presentations


Presentation on theme: "Just Enough Type Theory or, Featherweight Java A Simple Formal Model of Objects Jonathan Aldrich 15-819."— Presentation transcript:

1 Just Enough Type Theory or, Featherweight Java A Simple Formal Model of Objects Jonathan Aldrich 15-819

2 Why Formal Models? Make precise what a language means –What can you say in the language? –How does a program execute? Allow us to prove formal properties –Typically, lack of certain run-time errors This course –Type theory not required for much of the reading –However, some papers use formal notation A brief introduction will help us get more out of it

3 Example: Featherweight Java A minimal core calculus for Java –Classes, methods, fields, inheritance –Any FJ program is a Java program Purpose of a core language –Leaves out unnecessary details –Focuses attention on issues of interest –Makes proving formal properties easier Citation –Atsushi Igarashi, Benjamin Pierce, and Philip Wadler. Featherweight Java: A Minimal Core Calculus for Java and GJ. OOPSLA ’99.

4 FJ Syntax Standard BNF definition Overbar represents a sequence

5 Subtyping Judgments If we know this Then we can conclude this Base case: each class subtypes itself Transitivity rule Both exprs on top must hold

6 Dynamic Semantics Computation expressed as rewriting rules [d/x] e – substitute d for x in e

7 Evaluation Examples

8 Type System Conceptually: –Annotates an object or expression –Describes operations that are applicable Prevents run-time errors from undefined operations –X = “hello” – 2 –snail.fly() Type soundness –A well-typed program will not halt with an undefined operation error Java’s type system does a dynamic check at casts, and so programs can halt with a cast error. FJ’s type system, however prevents all other run time errors. –Real languages have additional error cases; however, the type soundness guarantee is still useful

9 FJ Types  maps var -> class Read  ├ e  C as, “in the context of type environment , expression e has type C

10 Class/Method Typing

11 Other definitions

12 Type Soundness A well-typed program remains well-typed after a reduction step A well-typed program can take a step Well-typed FJ programs eventually reduce to either a value or an expression with an embedded cast error Proofs are by induction, beyond the scope of this course


Download ppt "Just Enough Type Theory or, Featherweight Java A Simple Formal Model of Objects Jonathan Aldrich 15-819."

Similar presentations


Ads by Google