Semantics with Applications Mooly Sagiv Schrirber 317 03-640-7606 html://www.cs.tau.ac.il/~msagiv/courses/sem08.html Textbooks:Winskel The.

Slides:



Advertisements
Similar presentations
Automated Theorem Proving Lecture 1. Program verification is undecidable! Given program P and specification S, does P satisfy S?
Advertisements

Rigorous Software Development CSCI-GA Instructor: Thomas Wies Spring 2012 Lecture 10.
Semantics Static semantics Dynamic semantics attribute grammars
Formal Semantics of Programming Languages 虞慧群 Topic 6: Advanced Issues.
Rigorous Software Development CSCI-GA Instructor: Thomas Wies Spring 2012 Lecture 11.
8. Introduction to Denotational Semantics. © O. Nierstrasz PS — Denotational Semantics 8.2 Roadmap Overview:  Syntax and Semantics  Semantics of Expressions.
Formal Semantics of Programming Languages 虞慧群 Topic 5: Axiomatic Semantics.
Copyright © 2006 Addison-Wesley. All rights reserved.1-1 ICS 410: Programming Languages Chapter 3 : Describing Syntax and Semantics Axiomatic Semantics.
ISBN Chapter 3 Describing Syntax and Semantics.
1 Semantic Description of Programming languages. 2 Static versus Dynamic Semantics n Static Semantics represents legal forms of programs that cannot be.
CS 355 – Programming Languages
UNIVERSITY OF SOUTH CAROLINA Department of Computer Science and Engineering CSCE 330 Programming Language Structures Ch.2: Syntax and Semantics Fall 2005.
Comp 205: Comparative Programming Languages Semantics of Imperative Programming Languages denotational semantics operational semantics logical semantics.
Lecture 02 – Structural Operational Semantics (SOS) Eran Yahav 1.
Programming Language Semantics Inductive Definitions Mooly SagivEran Yahav Schrirber 317Open space
Language Specfication and Implementation - PART II: Semantics of Procedural Programming Languages Lee McCluskey Department of Computing and Mathematical.
Programming Language Semantics Denotational Semantics Chapter 5 Based on a lecture by Martin Abadi.
1 Operational Semantics Mooly Sagiv Tel Aviv University Textbook: Semantics with Applications.
Concepts of Programming Languages 1 Describing Syntax and Semantics Brahim Hnich Högskola I Gävle
Programming Language Semantics Mooly SagivEran Yahav Schrirber 317Open space html://
Denotational Semantics Syntax-directed approach, generalization of attribute grammars: –Define context-free abstract syntax –Specify syntactic categories.
Programming Language Semantics Mooly SagivEran Yahav Schrirber 317Open space html://
1 Program Analysis Mooly Sagiv Tel Aviv University Textbook: Principles of Program Analysis.
PSUCS322 HM 1 Languages and Compiler Design II Formal Semantics Material provided by Prof. Jingke Li Stolen with pride and modified by Herb Mayer PSU Spring.
Operational Semantics Semantics with Applications Chapter 2 H. Nielson and F. Nielson
Describing Syntax and Semantics
Dr. Muhammed Al-Mulhem 1ICS ICS 535 Design and Implementation of Programming Languages Part 1 Fundamentals (Chapter 4) Denotational Semantics ICS.
Programming Language Semantics Denotational Semantics Chapter 5 Part III Based on a lecture by Martin Abadi.
Program Analysis Mooly Sagiv Tel Aviv University Sunday Scrieber 8 Monday Schrieber.
ISBN Chapter 3 Describing Syntax and Semantics.
Syntax & Semantic Introduction Organization of Language Description Abstract Syntax Formal Syntax The Way of Writing Grammars Formal Semantic.
CPSC 388 – Compiler Design and Construction Parsers – Context Free Grammars.
Program Analysis and Verification Spring 2015 Program Analysis and Verification Lecture 2: Operational Semantics I Roman Manevich Ben-Gurion University.
Chapter 25 Formal Methods Formal methods Specify program using math Develop program using math Prove program matches specification using.
Chapter Twenty-ThreeModern Programming Languages1 Formal Semantics.
Formal Semantics of Programming Languages 虞慧群 Topic 3: Principles of Induction.
ISBN Chapter 3 Describing Semantics -Attribute Grammars -Dynamic Semantics.
CS 363 Comparative Programming Languages Semantics.
Formal Semantics Chapter Twenty-ThreeModern Programming Languages, 2nd ed.1.
CS 611: Lecture 6 Rule Induction September 8, 1999 Cornell University Computer Science Department Andrew Myers.
Eran Yahav 1. Previously…  An algorithmic view  Abstract data types (ADT)  Correctness Conditions  Sequential consistency  Linearizability  Treiber’s.
Formal Semantics of Programming Languages 虞慧群 Topic 1: Introduction.
Program Analysis and Verification Spring 2014 Program Analysis and Verification Lecture 4: Axiomatic Semantics I Roman Manevich Ben-Gurion University.
3.2 Semantics. 2 Semantics Attribute Grammars The Meanings of Programs: Semantics Sebesta Chapter 3.
Chapter 3 Part II Describing Syntax and Semantics.
Programming Languages and Design Lecture 3 Semantic Specifications of Programming Languages Instructor: Li Ma Department of Computer Science Texas Southern.
Semantics In Text: Chapter 3.
Language Translation A programming language processor is any system that manipulates programs expressed in a PL A source program in some source language.
Languages and Compilers
1 / 48 Formal a Language Theory and Describing Semantics Principles of Programming Languages 4.
Program Analysis and Verification Noam Rinetzky Lecture 2: Operational Semantics 1 Slides credit: Tom Ball, Dawson Engler, Roman Manevich, Erik.
Chapter 3 © 2002 by Addison Wesley Longman, Inc Introduction - Who must use language definitions? 1. Other language designers 2. Implementors 3.
Compiler Principles Fall Compiler Principles Lecture 7: Lowering Correctness Roman Manevich Ben-Gurion University of the Negev.
Operational Semantics Mooly Sagiv Tel Aviv University Textbook: Semantics with Applications Chapter.
CSC3315 (Spring 2009)1 CSC 3315 Languages & Compilers Hamid Harroud School of Science and Engineering, Akhawayn University
C HAPTER 3 Describing Syntax and Semantics. D YNAMIC S EMANTICS Describing syntax is relatively simple There is no single widely acceptable notation or.
Program Analysis and Verification
Formal Semantics of Programming Languages 虞慧群 Topic 2: Operational Semantics.
Operational Semantics Mooly Sagiv Tel Aviv University Sunday Scrieber 8 Monday Schrieber.
Operational Semantics Mooly Sagiv Reference: Semantics with Applications Chapter 2 H. Nielson and F. Nielson
Operational Semantics Mooly Sagiv Reference: Semantics with Applications Chapter 2 H. Nielson and F. Nielson
COMP 412, FALL Type Systems C OMP 412 Rice University Houston, Texas Fall 2000 Copyright 2000, Robert Cartwright, all rights reserved. Students.
Program Analysis and Verification Noam Rinetzky Lecture 2: Operational Semantics 1 Slides credit: Tom Ball, Dawson Engler, Roman Manevich, Erik.
CENG 424-Logic for CS Introduction Based on the Lecture Notes of Konstantin Korovin, Valentin Goranko, Russel and Norvig, and Michael Genesereth.
Functional Programming
Syntax Questions 6. Define a left recursive grammar rule.
Spring 2017 Program Analysis and Verification Operational Semantics
Semantics In Text: Chapter 3.
Program correctness Axiomatic semantics
Spring 2016 Program Analysis and Verification Operational Semantics
Presentation transcript:

Semantics with Applications Mooly Sagiv Schrirber html:// Textbooks:Winskel The Formal Semantics of Programming Languages Types and Programming Languages Benjamin C. Pierce

Outline Course requirements What is semantics Who needs semantics Forms of semantics Tentative Plan Trace semantics Introduction to operational semantics

Course Requirements Prerequisites –Compiler Course –Basic set theory and logic A theoretical course –Forms of induction –Domain theory –No algorithms Grade –Course Notes 10% –Assignments 60% Mostly theoretical with some programming –Home exam 30%

Modern Programming Languages Imperative –PL/1 –Pascal –C Object Oriented –C++ –Java –C# Functional –Scheme –ML –Ocaml –F# –Haskel Logic –Prolog

Programming Languages Syntax –Which string is a legal program? –Usually defined using context free grammar+ contextual constraints Semantics –What does a program mean? –What is the output of the program on a given run? –When does a runtime error occur? –A formal definition

Benefits of Formal Semantics Programming language design –hard-to-define= hard-to-implement=hard-to-use –Avoid design mistakes Programming language implementation –Compiler Correctness Correctness of program optimizations Design of Static Analysis Programming language understanding Program correctness –Type checking Program equivalence Automatic generation of interpreter Techniques used in software engineering

Desired Features of PL Semantics Tractable –as simple as possible without losing the ability to express behavior accurately Abstract –uncluttered by irrelevant detail Computational –an accurate abstraction from runtime behavior Compositional –The meaning of compound language construct is defined using the meaning of subconstructs –Supports modular reasoning

Alternative Formal Semantics Operational Semantics [Plotkin, Kahn] –The meaning of the program is described “operationally” –Trace based Semantics –Structural Operational Semantics –Natural Semantics Denotational Semantics [Strachey, Scott] –The meaning of the program is an input/output relation Axiomatic Semantics [Floyd, Hoare] –The meaning of the program is observed properties –Proof rules to show that the program is correct Complement each other

Tentative Plan A simple programming language IMP –Natural Semantics of IMP –Structural operational Semantics of IMP –Denotational Semantics of IMP Axiomatic Semantics –IMP –Non-Determinism and Parallelism –Rely Guarantee Axiomatic Semantics –Separation Logic Type inference/checking

IMP: A Simple Imperative Language numbers N –Positive and negative numbers –n, m  N truth values T={true, false} locations Loc –X, Y  Loc arithmetic Aexp –a  Aexp boolean expressions Bexp –b  Bexp commands Com –c  Com

(3+5)   5+ 3 Abstract Syntax for IMP Aexp –a ::= n | X | a 0 + a 1 | a 0 – a 1 | a 0  a 1 Bexp –b ::= true | false | a 0 = a 1 | a 0  a 1 |  b | b 0  b 1 | b 0  b 1 Com –c ::= skip | X := a | c 0 ; c 1 | if b then c 0 else c 1 | while b do c 2+3  4-5 (2+(3  4))-5 ((2+3)  4))-5

Example Program Y := 1; while  (X=1) do Y := Y * X; X := X - 1

But what about semantics

Trace Based Semantics For every program P define a set potential states  (P) Let  be the set of finite and infinite traces over  –  =  (P) *   (P)  The meaning of P is a set of maximal traces  P   

Example Program 1: while 2:(X>0) do 3:X := X – 1 4: [pc  1, x  2] [pc  2, x  2] [pc  3, x  2] [pc  2, x  1] [pc  3, x  1] [pc  2, x  0] [pc  4, x  0] [pc  1, x  - 7] [pc  2, x  - 7] [pc  4, x  - 7]..

Example Program 1: while 2:(true) do 3: skip 4: [pc  1, x  2] [pc  2, x  2] [pc  3, x  2] [pc  2, x  2] [pc  3, x  2] [pc  2, x  2] [pc  3, x  2] ..

Limitations of trace based semantics The program counter is an implementation detail Equivalent programs do not necessarily have the same set of traces Hard to define semantics by induction on the syntax Hard to prove properties of the programming language

Chapter 2 Introduction to Operational Semantics

Expression Evaluation States –Mapping locations to values –  - The set of states  : Loc  N  (X)=  X=value of X in   = [ X  5, Y  7] –The value of X is 5 –The value of Y is 7 –The value of Z is undefined – For a  Exp,   , n  N,  n –a is evaluated in  to n

Evaluating (a 0 + a 1 ) at  Evaluate a 0 to get a number n 0 at  Evaluate a 1 to get a number n 1 at  Add n 0 and n 1

Expression Evaluation Rules Numbers –  n Locations –   (X) Sums Subtractions Products Axioms

Derivations A rule instance –Instantiating meta variables with corresponding values

Derivation (Tree) Axioms in the leafs Rule instances at internal nodes

Computing a derivation We write  n when there exists a derivation tree whose root is  n Can be computed in a top-down manner At every node try all derivations “in parallel”

Recap Operational Semantics –The rules can be implemented easily –Define interpreter Natural semantics

Equivalence of IMP expressions a0  a1a0  a1 iff

Boolean Expression Evaluation Rules  true  false

Boolean Expression Evaluation Rules(cont)

Equivalence of Boolean expressions b0 b1b0 b1 iff

Extensions Shortcut evaluation of Boolean expressions “Parallel” evaluation of Boolean expressions Other data types

The execution of commands   ’ –c terminates on  in a final state  ’ Initial state  0 –  0 (X)=0 for all X Handling assignments   ’   [5/X]

Rules for commands   Sequencing: Conditionals: Atomic

Rules for commands (while)

Example Program Y := 1; while  (X=1) do Y := Y * X; X := X - 1

Equivalence of commands c0 c1c0 c1 iff

Proposition 2.8 while b do c  if b then (c; while b do c) else skip

Small Step Operational Semantics The natural semantics defines evaluation in large steps –Abstracts “computation time” It is possible to define a small step operational semantics –  1 “one” step of executing a in a state  yields a’ in a state  ’

SOS for Additions

SOS Rules for commands  1  Sequencing: Atomic

SOS Rules for commands Conditionals:  1  1 true  1  1 false

SOS rules for while  1

Summary Operational semantics enables to naturally express program behavior Can handle –Non determinism –Concurrency –Procedures –Object oriented –Pointers and dynamically allocated structures But remains very closed to the implementation –Two programs which compute the same functions are not necessarily equivalent