1 / 12

Just Enough Type Theory or, Featherweight Java A Simple Formal Model of Objects

Just Enough Type Theory or, Featherweight Java A Simple Formal Model of Objects. Jonathan Aldrich 15-819. 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

elie
Download Presentation

Just Enough Type Theory or, Featherweight Java A Simple Formal Model of Objects

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Just Enough Type Theoryor,Featherweight JavaA 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 Base case: each class subtypes itself Transitivity rule Both exprs on top must hold If we know this Then we can conclude this

  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.  maps var -> class Read ├ e  C as, “in the context of type environment , expression e has type C FJ Types

  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

More Related