Programming Language Design (CS 422)

Programming Language Design (CS 422)

Programming Language Design (CS 422) Elsa L Gunter 2112 Siebel Center, UIUC [email protected] http://courses.engr.illinois.edu/cs422/sp2016 Slides based in part on previous lectures by Grigore Ro¸su January 18, 2017 Slides based in part on previous lectures by Grigore Ro¸suJanuary 18, 2017 1 Elsa L Gunter Programming Language Design (CS 422) / 25 Contact Information Office: 2112 Siebel Center Office hours: Wednesday, Friday 12:50pm { 1:45pm Also by appointment Email: [email protected] Slides based in part on previous lectures by Grigore Ro¸suJanuary 18, 2017 2 Elsa L Gunter Programming Language Design (CS 422) / 25 Course Website main page - summary of news items policy - rules governing the course lectures - syllabus, slides and example code mps - Information about homework unit projects - for 4 credit students resources - papers, tools, and helpful info faq - answers to some general questions about the course and course resources Slides based in part on previous lectures by Grigore Ro¸suJanuary 18, 2017 3 Elsa L Gunter Programming Language Design (CS 422) / 25 Some Course References No Required Textbook Concrete Semantics With Isabelle/HOL, by Tobias Nipkow and Gerwin Klein. Springer, 2014. (In your snv directory) Lecture Notes of Grigore Rosu, found in Resources The Formal Semantics of Programming Languages: An Introduction by Glynn Winskel. MIT Press, 1993. Essentials of Programming Languages (2nd Edition) by Daniel P. Friedman, Mitchell Wand and Christopher T. Haynes, MIT Press 2001 Slides based in part on previous lectures by Grigore Ro¸suJanuary 18, 2017 4 Elsa L Gunter Programming Language Design (CS 422) / 25 Main Programming Platform: Isabelle/HOL Download from: http://www.cl.cam.ac.uk/research/hvg/Isabelle/ Runs inside jEdit Two implementation languages: SML (for proofs) and Scala (for jEdit) Full-powered general-purpose interactive mathematical theorem prover Can export executable specifications directly to code in SML, OCaml, Haskell, and Scala. Can export annotated theories to LATEX documents Accompanied by an impressive library of formally verified mathematics and support for programming language semantics in the Archive of Formal Proofs https://www.isa-afp.org Slides based in part on previous lectures by Grigore Ro¸suJanuary 18, 2017 5 Elsa L Gunter Programming Language Design (CS 422) / 25 Course Grading Homeworks { 30% MPs turned in as plain text (theory) files submitted via course svn student directories Midterm { 30% Final { 40% Unit Project Only for 4-credit graduate students Worth 25%, with all other parts scaled down accordingly Slides based in part on previous lectures by Grigore Ro¸suJanuary 18, 2017 6 Elsa L Gunter Programming Language Design (CS 422) / 25 Collaboration on Assignments You may discuss homeworks and their solutions with others You may work in groups, but you must list members with whom you worked Each student must turn in their own solution separately You may look at examples from class and other similar examples from any source Note: University policy on plagiarism still holds Problems from homework may appear verbatim, or with some modification on exams Slides based in part on previous lectures by Grigore Ro¸suJanuary 18, 2017 7 Elsa L Gunter Programming Language Design (CS 422) / 25 Default Unit Project 1 Design, formalize and create an interpreter for a new language with specified features. Will be an extension of previously describe language. 2 Give a substantial proof in Isabelle of a property of a programming language Based on language described in class (unless you want to do more). 3 Students may develop alternate projects with instructor approval. Slides based in part on previous lectures by Grigore Ro¸suJanuary 18, 2017 8 Elsa L Gunter Programming Language Design (CS 422) / 25 Course Objectives Learn different methods of specifying the meaning of language features and how to reason about them Structural Operational Semantics Transition Semantics Reduction Semantics with Evaluation Contexts Brief overview of K Learn to specify different language features Imperative Features Object Oriented Features Functional Features Type Systems Slides based in part on previous lectures by Grigore Ro¸suJanuary 18, 2017 9 Elsa L Gunter Programming Language Design (CS 422) / 25 Semantics Expresses the meaning of syntax Static semantics Meaning based only on the form of the expression without executing it Usually restricted to type checking / type inference Dynamic semantics Method of describing meaning of executing a program Used for formal reasoning about programs and languages Several different types: Operational Semantics Axiomatic Semantics Denotational Semantics Slides based in part on previous lectures by Grigore Ro¸suJanuary 18, 2017 10 Elsa L Gunter Programming Language Design (CS 422) / 25 Dynamic Semantics Different languages better suited to different types of semantics Different types of semantics serve different purposes Slides based in part on previous lectures by Grigore Ro¸suJanuary 18, 2017 11 Elsa L Gunter Programming Language Design (CS 422) / 25 Operational Semantics Start with a simple notion of machine Describe how to execute (implement) programs of language on virtual machine, by describing how to execute each program statement (ie, following the structure of the program) Meaning of program is how its execution changes the state of the machine Useful as basis for implementations Slides based in part on previous lectures by Grigore Ro¸suJanuary 18, 2017 12 Elsa L Gunter Programming Language Design (CS 422) / 25 Axiomatic Semantics Also called Floyd-Hoare Logic Based on formal logic (first order predicate calculus) Axiomatic Semantics is a logical system built from axioms and inference rules Mainly suited to simple imperative programming languages Slides based in part on previous lectures by Grigore Ro¸suJanuary 18, 2017 13 Elsa L Gunter Programming Language Design (CS 422) / 25 Axiomatic Semantics Used to formally prove a property (post-condition) of the state (the values of the program variables) after the execution of program, assuming another property (precondition) of the state before execution Written : fPreconditiongProgramfPostconditiong Source of idea of loop invariant Useful for program specification and verification Slides based in part on previous lectures by Grigore Ro¸suJanuary 18, 2017 14 Elsa L Gunter Programming Language Design (CS 422) / 25 Denotational Semantics Construct a function M assigning a mathematical meaning to each program construct Lambda calculus often used as the range of the meaning function Meaning function is compositional: meaning of construct built from meaning of parts Mainly used for proving properties of programs Slides based in part on previous lectures by Grigore Ro¸suJanuary 18, 2017 15 Elsa L Gunter Programming Language Design (CS 422) / 25 Natural Semantics Aka \Big Step Semantics" Originally introduced by Giles Kahn Provide value for a program by rules and derivations Rule conclusions look like (C; m) + m0 or (E; m) + v Type derivation rules often take very similar shape Slides based in part on previous lectures by Grigore Ro¸suJanuary 18, 2017 16 Elsa L Gunter Programming Language Design (CS 422) / 25 Simple Imperative Programming Language #1 I 2 Identifiers N 2 Numerals E ::= N j I j E + E j E ∗ E j E − E B ::= true j false j B&B j B or B j not B j E < E j E = E C ::= skip j C; C j fCg j I ::= E j if B then C else C fi j while B do C od Slides based in part on previous lectures by Grigore Ro¸suJanuary 18, 2017 17 Elsa L Gunter Programming Language Design (CS 422) / 25 Natural Semantics of Atomic Expressions Let m : Identifiers * Values be a partial function supplying values for program variable names Identifiers:( I ; m) + m(I ) Numerals are values:( N; m) + N Booleans: (true; m) + true (false; m) + false Slides based in part on previous lectures by Grigore Ro¸suJanuary 18, 2017 18 Elsa L Gunter Programming Language Design (CS 422) / 25 Boolean Expressions (B; m) + false (B; m) + true (B0; m) + b (B&B0; m) + false (B&B0; m) + b (B; m) + true (B; m) + false (B0; m) + b (B or B0; m) + true (B or B0; m) + b (B; m) + true (B; m) + false (not B; m) + false (not B; m) + true Slides based in part on previous lectures by Grigore Ro¸suJanuary 18, 2017 19 Elsa L Gunter Programming Language Design (CS 422) / 25 Relations (E; m) + U (E 0; m) + VU ∼ V = b (E ∼ E 0; m) + b By U ∼ V = b, we mean does (the meaning of) the relation ∼ hold on the meaning of U and V May be specified by a mathematical expression/equation or rules matching U and V Slides based in part on previous lectures by Grigore Ro¸suJanuary 18, 2017 20 Elsa L Gunter Programming Language Design (CS 422) / 25 Arithmetic Expressions (E; m) + U (E 0; m) + VU ⊕ V = N (E ⊕ E 0; m) + N where N is the specified value for U ⊕ V Slides based in part on previous lectures by Grigore Ro¸suJanuary 18, 2017 21 Elsa L Gunter Programming Language Design (CS 422) / 25 Commands Skip:( skip; m) + m (E; m) + V Assignment: (I ::= E; m) + m[I V ] (C; m) + m0 (C 0; m0) + m00 Sequencing: (C; C 0; m) + m00 (C; m) + m0 Block: (fCg; m) + m0 V if J = I where m[I V ](J) = m(J) otherwise Slides based in part on previous lectures by Grigore Ro¸suJanuary 18, 2017 22 Elsa L Gunter Programming Language Design (CS 422) / 25 If Then Else Command (B; m) + true (C; m) + m0 (if B then C else C 0 fi; m) + m0 (B; m) + false (C 0; m) + m0 (if B then C else C 0 fi; m) + m0 Slides based in part on previous lectures by Grigore Ro¸suJanuary 18, 2017 23 Elsa L Gunter Programming Language Design (CS 422) / 25 While Command (B; m) + false (while B do C od ; m) + m (B; m) + true (C; m) + m0 (while B do C od ; m0) + m00 (while B do C od ; m) + m00 Slides based in part on previous lectures by Grigore Ro¸suJanuary 18, 2017 24 Elsa L Gunter Programming Language Design (CS 422) / 25 Simple Imperative Programming Language #2 I 2 Identifiers N 2 Numerals E ::= N j I j E + E j E ∗ E j E − E j I ::= E B ::= true j false j B&B j B or B j not B j E < E j E = E C ::= skip j C; C j fCg j E j if B then C else C fi j while B do C od What is the new semantics? What changes to our \machine state" do we need to make? Slides based in part on previous lectures by Grigore Ro¸suJanuary 18, 2017 25 Elsa L Gunter Programming Language Design (CS 422) / 25.

View Full Text

Details

  • File Type
    pdf
  • Upload Time
    -
  • Content Languages
    English
  • Upload User
    Anonymous/Not logged-in
  • File Pages
    25 Page
  • File Size
    -

Download

Channel Download Status
Express Download Enable

Copyright

We respect the copyrights and intellectual property rights of all users. All uploaded documents are either original works of the uploader or authorized works of the rightful owners.

  • Not to be reproduced or distributed without explicit permission.
  • Not used for commercial purposes outside of approved use cases.
  • Not used to infringe on the rights of the original creators.
  • If you believe any content infringes your copyright, please contact us immediately.

Support

For help with questions, suggestions, or problems, please contact us