Program Analysis and Verification 0368-4479

Slides:



Advertisements
Similar presentations
Semantics Static semantics Dynamic semantics attribute grammars
Advertisements

Models of Concurrency Manna, Pnueli.
3-Valued Logic Analyzer (TVP) Tal Lev-Ami and Mooly Sagiv.
Hoare’s Correctness Triplets Dijkstra’s Predicate Transformers
Rigorous Software Development CSCI-GA Instructor: Thomas Wies Spring 2012 Lecture 11.
Formal Semantics of Programming Languages 虞慧群 Topic 5: Axiomatic Semantics.
Program Analysis and Verification
Program Analysis and Verification
ISBN Chapter 3 Describing Syntax and Semantics.
CS 355 – Programming Languages
Comp 205: Comparative Programming Languages Semantics of Imperative Programming Languages denotational semantics operational semantics logical semantics.
A Semantic Characterization of Unbounded-Nondeterministic Abstract State Machines Andreas Glausch and Wolfgang Reisig 1.
Lecture 02 – Structural Operational Semantics (SOS) Eran Yahav 1.
1 Basic abstract interpretation theory. 2 The general idea §a semantics l any definition style, from a denotational definition to a detailed interpreter.
Programming Language Semantics Inductive Definitions Mooly SagivEran Yahav Schrirber 317Open space
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.
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 Denotational Semantics Chapter 5 Part II.
C LAUS B RABRAND S EMANTICS (Q1,’05) S EP 8, 2005 C LAUS B RABRAND © 2005, University of Aarhus [ ] [
CS 330 Programming Languages 09 / 18 / 2007 Instructor: Michael Eckmann.
Programming Language Semantics Mooly SagivEran Yahav Schrirber 317Open space html://
Abstract Interpretation Part I Mooly Sagiv Textbook: Chapter 4.
A Denotational Semantics For Dataflow with Firing Edward A. Lee Jike Chong Wei Zheng Paper Discussion for.
1 Program Analysis Mooly Sagiv Tel Aviv University Textbook: Principles of Program Analysis.
Semantics with Applications Mooly Sagiv Schrirber html:// Textbooks:Winskel The.
Operational Semantics Semantics with Applications Chapter 2 H. Nielson and F. Nielson
Describing Syntax and Semantics
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.
1 Program Analysis Mooly Sagiv Tel Aviv University Textbook: Principles of Program Analysis.
C LAUS B RABRAND © S EMANTICS (Q1,’05) S EP 1, 2005 C LAUS B RABRAND © 2005, University of Aarhus [ ] [
CSC 8310 Programming Languages Meeting 2 September 2/3, 2014.
1 Introduction to Parsing Lecture 5. 2 Outline Regular languages revisited Parser overview Context-free grammars (CFG’s) Derivations.
Program Analysis and Verification Spring 2015 Program Analysis and Verification Lecture 2: Operational Semantics I Roman Manevich Ben-Gurion University.
MATH 224 – Discrete Mathematics
Program Analysis and Verification Noam Rinetzky Lecture 6: Abstract Interpretation 1 Slides credit: Roman Manevich, Mooly Sagiv, Eran Yahav.
Program Analysis and Verification
PART I: overview material
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.
Eran Yahav 1. Previously…  An algorithmic view  Abstract data types (ADT)  Correctness Conditions  Sequential consistency  Linearizability  Treiber’s.
Program Analysis and Verification Spring 2014 Program Analysis and Verification Lecture 4: Axiomatic Semantics I Roman Manevich Ben-Gurion University.
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.
Ivan Lanese Computer Science Department University of Bologna/INRIA Italy Decidability Results for Dynamic Installation of Compensation Handlers Joint.
Program Analysis and Verification Noam Rinetzky Lecture 2: Operational Semantics 1 Slides credit: Tom Ball, Dawson Engler, Roman Manevich, Erik.
Program Analysis and Verification Spring 2015 Program Analysis and Verification Lecture 4: Axiomatic Semantics I Roman Manevich Ben-Gurion University.
Fall 2008Programming Development Techniques 1 Topic 17 Assignment, Local State, and the Environment Model of Evaluation Section 3.1 & 3.2.
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.
1 Iterative Program Analysis Abstract Interpretation Mooly Sagiv Tel Aviv University Textbook:
CSC3315 (Spring 2009)1 CSC 3315 Languages & Compilers Hamid Harroud School of Science and Engineering, Akhawayn University
Prof. Necula CS 164 Lecture 171 Operational Semantics of Cool ICOM 4029 Lecture 10.
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.
CS5205Semantics1 CS5205: Foundation in Programming Languages Semantics Static Semantics Dynamic Semantics Operational Semantics Big-step Small-Step Denotational.
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
Program Analysis and Verification Noam Rinetzky Lecture 2: Operational Semantics 1 Slides credit: Tom Ball, Dawson Engler, Roman Manevich, Erik.
Program Analysis and Verification
Spring 2017 Program Analysis and Verification Operational Semantics
Programming Languages and Compilers (CS 421)
Spring 2016 Program Analysis and Verification Operational Semantics
Program Analysis and Verification
Presentation transcript:

Program Analysis and Verification Noam Rinetzky Lecture 3: Program Semantics Slides credit: Roman Manevich, Mooly Sagiv, Eran Yahav

Good manners Mobiles 2

Admin Grades – First home assignment will be published on Tuesday. Due lesson 5 Scribes (this week) ?Scribes (next week) 3

Today Operational semantics – Advanced features Traces semantics Denotational Semantics 4

What do we mean? שלום syntax semantics 5

What do we mean? P syntax semantics P: x  7 6

Why formal semantics? Implementation-independent definition of a programming language Automatically generating interpreters (and some day maybe full fledged compilers) Verification and debugging – if you don’t know what it does, how do you know its incorrect? 7

Programming Languages Syntax “how do I write a program?” – BNF – “Parsing” Semantics “What does my program mean?” – … 8

Program semantics State-transformer – Set-of-states transformer – Trace transformer Predicate-transformer Functions … 9

What semantics do we want? Captures the aspects of computations we care about – “adequate” Hides irrelevant details – “fully abstract” Compositional 10

A simple imperative language: While Abstract syntax: a ::= n | x | a 1 + a 2 | a 1  a 2 | a 1 – a 2 b ::= true | false | a 1 = a 2 | a 1  a 2 |  b | b 1  b 2 S ::= x := a | skip | S 1 ; S 2 | if b then S 1 else S 2 | while b do S 11

Syntactic categories n  Numnumerals x  Varprogram variables a  Aexparithmetic expressions b  Bexpboolean expressions S  Stmstatements 12

Semantic categories Z Integers {0, 1, -1, 2, -2, …} T Truth values { ff, tt } State Var  Z Example state:s=[ x  5, y  7, z  0] Lookup: s x = 5 Update: s[ x  6] = [ x  6, y  7, z  0] 13

Semantics of expressions Arithmetic expressions are side-effect free – Semantic function A  Aexp  : State  Z – Defined by induction on the syntax tree A  n  s = n A  x  s = s x A  a 1 + a 2  s = A  a 1  s + A  a 2  s A  a 1 - a 2  s = A  a 1  s - A  a 2  s A  a 1 * a 2  s = A  a 1  s  A  a 2  s A  (a 1 )  s = A  a 1  s --- not needed A  - a  s = 0 - A  a 1  s – Compositional – Properties can be proved by structural induction Similarly for Boolean expressions 14

Operational Semantics (Recap)

Operational Semantics The meaning of a program in the language is explained in terms of a hypothetical computer which performs the set of actions which constitute the elaboration of that program. [Algol68, Section 2]

Operational Semantics It is all very well to aim for a more ‘abstract’ and a ‘cleaner’ approach to semantics, but if the plan is to be any good, the operational aspects cannot be completely ignored. [Scott70]

Operational semantics Concerned with how to execute programs – How statements modify state – Define transition relation between configurations Two flavors – Structural operational semantics: describes how the individual steps of a computations take place So-called “small-step” semantics – Natural semantics: describes how the overall results of executions are obtained So-called “big-step” semantics 18

Structural operating semantics (SOS) aka “Small-step semantics”  S, s    S’, s’  first step 19

Structural operational semantics Developed by Gordon Plotkin [TR 1981]TR 1981 Configurations:  has one of two forms:  S, s  Statement S is about to execute on state s sTerminal (final) state Transitions  S, s     =  S’, s’  Execution of S from s is not completed and remaining computation proceeds from intermediate configuration   = s’Execution of S from s has terminated and the final state is s’  S, s  is stuck if there is no  such that  S, s    first step 20

Structural semantics for While  x:=a, s   s[x  A  a  s] [ass sos ]  skip, s   s [skip sos ]  S 1, s    S 1 ’, s’   S 1 ; S 2, s    S 1 ’; S 2, s’  [comp 1 sos ]  if b then S 1 else S 2, s    S 1, s  if B  b  s = tt [if tt sos ]  if b then S 1 else S 2, s    S 2, s  if B  b  s = ff [if ff sos ]  S 1, s   s’  S 1 ; S 2, s    S 2, s’  [comp 2 sos ] 21

Derivation sequences A derivation sequence of a statement S starting in state s is either A finite sequence  0,  1,  2 …,  k such that 1.  0 =  S, s  2.  i   i+1 3.  k is either stuck configuration or a final state An infinite sequence  0,  1,  2, … such that 1.  0 =  S, s  2.  i   i+1 Notations: –  0  k  k  0 derives  k in k steps –  0  *   0 derives  in a finite number of steps 22

Natural operating semantics (NS) aka “Large-step semantics”  S, s   s’ all steps 23

Natural operating semantics Developed by Gilles Kahn [STACS 1987]STACS 1987 Configurations  S, s  Statement S is about to execute on state s sTerminal (final) state Transitions  S, s   s’Execution of S from s will terminate with the result state s’ – Ignores non-terminating computations 24

Natural operating semantics  defined by rules of the form The meaning of compound statements is defined using the meaning immediate constituent statements  S 1, s 1   s 1 ’, …,  S n, s n   s n ’  S, s   s’ if… premise conclusion side condition 25

Natural semantics for While  x := a, s   s[x  A  a  s] [ass ns ]  skip, s   s [skip ns ]  S 1, s   s’,  S 2, s’   s’’  S 1 ; S 2, s   s’’ [comp ns ]  S 1, s   s’  if b then S 1 else S 2, s   s’ if B  b  s = tt [if tt ns ]  S 2, s   s’  if b then S 1 else S 2, s   s’ if B  b  s = ff [if ff ns ] axioms 26

Derivation trees Using axioms and rules to derive a transition  S, s   s’ gives a derivation tree – Root:  S, s   s’ – Leaves: axioms – Internal nodes: conclusions of rules Immediate children: matching rule premises 27

Evaluation via derivation sequences For any While statement S and state s it is always possible to find at least one derivation sequence from  S, s  – Apply axioms and rules forever or until a terminal or stuck configuration is reached Proposition: there are no stuck configurations in While 28

The semantic function S sos The meaning of a statement S is defined as a partial function from State to State S sos : Stm  (State  State) Examples: S sos  skip  s = s S sos  x:=1  s = s [x  1] S sos  while true do skip  s = undefined S sos  S  s = s’ if  S, s   * s’ undefined otherwise  S  : What a statement S means to the context: P[S] S 1 = x:=x+2 S 2 = x:=x+1 ; x:=x+1 P[S] = z:=x; S; y:=x; 29

The semantic function S ns The meaning of a statement S is defined as a partial function from State to State S ns : Stm  (State  State) Examples: S ns  skip  s = s S ns  x:=1  s = s [x  1] S ns  while true do skip  s = undefined S ns  S  s = s’ if  S, s   s’ undefined otherwise 30

An equivalence result S 1 and S 2 are semantically equivalent if for all s and s’  S 1, s   s’ if and only if  S 2, s   s’ – Same semantics SOS and NS – For every statement in While S ns  S  = S sos  S  – Proof in pages

While in WHILE 32

Semantic equivalence S 1 and S 2 are semantically equivalent if for all s and s’  S 1, s   s’ if and only if  S 2, s   s’ Simple example while b do S is semantically equivalent to: if b then (S; while b do S) else skip – Read proof in pages

Structural semantics for while  while b do S, s    if b then S; while b do S ) else skip, s  [while sos ] 34

Natural semantics for While  S, s   s’,  while b do S, s’   s’’  while b do S, s   s’’ if B  b  s = tt [while tt ns ]  while b do S, s   s if B  b  s = ff [while ff ns ] Non-compositional 35

Comparing semantics Structural semantics Natural semantics Statement abort abort; S skip; S if x = 0 then abort else y := y / x The natural semantics cannot describe looping executions ‒Every execution is represented by a finite derivation tree The structural operational semantics can describe both Looping executions have infinite derivation sequences Every step in the derivation sequence is justified by a finite derivation tree Terminating executions have a finite one

What is a semantics good for? Allows to “evaluate” a program Properties of programming language semantics holds for all programs … 37

What is a semantics good for? Allows to “evaluate” a program Properties of programming language semantics holds for all programs … NS: more abstract – Fewer rules, top-down interpreter, simpler proofs SOS: more “accurate” – Order of evaluation, non-termination 38

Operational Semantics (paceR)

Operational Semantics (Extended language)

Language Extensions abort statement (like C’s exit w/o return value) Non-determinism Parallelism Local Variables Procedures – Static Scope – Dynamic scope 41

While + abort Abstract syntax S ::= x := a | skip | S 1 ; S 2 | if b then S 1 else S 2 | while b do S | abort Abort terminates the execution – In “skip; S” the statement S executes – In “abort; S” the statement S should never execute Natural semantics rules: …? Structural semantics rules: …? 42

Comparing semantics Structural semantics Natural semantics Statement abort abort; S skip; S while true do skip if x = 0 then abort else y := y / x The natural semantics cannot distinguish between looping and abnormal termination ‒Unless we add a special error state The structural operational semantics can distinguish looping is reflected by infinite derivations and abnormal termination is reflected by stuck configuration

While + non-determinism Abstract syntax S ::= x := a | skip | S 1 ; S 2 | if b then S 1 else S 2 | while b do S | S 1 or S 2 Either S 1 is executed or S 2 is executed Example: x:=1 or (x:=2; x:=x+2) – Possible outcomes for x : 1 and 4 44

While + non-determinism: natural semantics  S 1, s   s’  S 1 or S 2, s   s’ [or 1 ns ]  S 2, s   s’  S 1 or S 2, s   s’ [or 2 ns ] 45

While + non-determinism: structural semantics ? [or 1 sos ] ? [or 2 sos ] 46

While + non-determinism What about the definitions of the semantic functions? – S ns  S 1 or S 2  s – S sos  S 1 or S 2  s 47

Comparing semantics Structural semantics Natural semantics Statement x:=1 or (x:=2; x:=x+2) (while true do skip) or (x:=2; x:=x+2) In the natural semantics non-determinism will suppress non-termination (looping) if possible In the structural operational semantics non-determinism does not suppress non-terminating statements

While + parallelism Abstract syntax S ::= x := a | skip | S 1 ; S 2 | if b then S 1 else S 2 | while b do S | S 1  S 2 All the interleaving of S 1 and S 2 are executed Example: x:=1  (x:=2; x:=x+2) – Possible outcomes for x : 1, 3, 4 49

While + parallelism: structural semantics  S 1, s    S 1 ’, s’   S 1  S 2, s    S 1 ’  S 2, s’  [par 1 sos ]  S 1, s   s’  S 1  S 2, s    S 2, s’  [par 2 sos ]  S 2, s    S 2 ’, s’   S 1  S 2, s    S 1  S 2 ’, s’  [par 3 sos ]  S 2, s   s’  S 1  S 2, s    S 1, s’  [par 4 sos ] 50

While + parallelism: natural semantics Challenge problem: Give a formal proof that this is in fact impossible. Idea: try to prove on a restricted version of While without loops/conditions 51

Example: derivation sequences of a parallel statement  x:=1  (x:=2; x:=x+2), s   52

While + Local Variables S ::= …| Let x := a in S 53

Conclusion In the structural operational semantics we concentrate on small steps so interleaving of computations can be easily expressed In the natural semantics immediate constituent is an atomic entity so we cannot express interleaving of computations 54

While + memory Abstract syntax S ::= x := a | skip | S 1 ; S 2 | if b then S 1 else S 2 | while b do S | x := malloc( a ) | x := [ y ] | [ x ] := y State : Var  Z State : Stack  Heap Stack : Var  Z Heap : Z  Z Integers as memory addresses 55

From states to traces 56

Trace semantics Low-level (conceptual) semantics Add program counter (pc) with states –  = State + pc The meaning of a program is a relation     Stm   Execution is a finite/infinite sequence of states A useful concept in defining static analysis as we will see later 57

Example 1: y := 1; while 2:  (x=1) do ( 3: y := y * x; 4: x := x - 1 ) 5: 58

Traces 1: y := 1; while 2:  (x=1) do ( 3: y := y * x; 4: x := x - 1 ) 5:  {x  2,y  3},1  [ y:=1 ]  {x  2,y  1},2  [  (x=1)]  {x  2,y  1},3  [y:=y*x]  {x  2,y  2},4  [x:=x-1]  {x  1,y  2},2  [  (x=1)]  {x  1,y  2},5   {x  3,y  3},1  [ y:=1 ]  {x  3,y  1},2  [  (x=1)]  {x  3,y  1},3  [y:=y*x]  {x  3,y  3},4  [x:=x-1]  {x  2,y  3},2  [  (x=1)]  {x  2,y  3},3  [y:=y*x]  {x  2,y  6},4  [x:=x-1]  {x  1,y  6},2  [  (x=1)]  {x  1,y  6},5  … Set of traces is infinite therefore trace semantics is incomputable in general 59

Operational semantics summary SOS is powerful enough to describe imperative programs – Can define the set of traces – Can represent program counter implicitly – Handle goto statements and other non-trivial control constructs (e.g., exceptions) Natural operational semantics is an abstraction Different semantics may be used to justify different behaviors Thinking in concrete semantics is essential for a analysis writer 60

Denotational Semantics Based on a lecture by Martin Abadi

Denotational Semantics A “mathematical” semantics –  S  is a mathematical object – A fair amount of mathematics is involved Compositional More abstract and canonical than Op. Sem. – No notion of “execution” Merely definitions – No small step vs. big step 62

Denotational Semantics Denotational semantics is also called – Fixed point semantics – Mathematical semantics – Scott-Strachey semantics 63

Plan Denotational semantics of While (1st attempt) Math – Complete partial orders – Montonicity – Continuity Denotational semantics of While 64

Denotational semantics A: Aexp  (  N) B: Bexp  (  T) S: Stm  (    ) Defined by structural induction 65

Denotational semantics A: Aexp  (  N) B: Bexp  (  T) S: Stm  (    ) Defined by structural induction A  a , B  b , S ns  S , S sos  S  66

Denotational semantics of Aexp A: Aexp  (  N) A  n  = {( , n) |   } A  X  = {( ,  X) |   } A  a 0 +a 1  = {( , n 0 +n 1 ) | ( , n 0 )  A  a 0 , ( ,n 1 )  A  a 1  } A  a 0 -a 1  = {( , n 0 -n 1 ) | ( , n 0 )  A  a 0 , ( ,n 1 )  A  a 1  } A  a 0  a 1  = {( , n 0  n 1 ) | ( , n 0 )  A  a 0 , ( ,n 1 )  A  a 1  } Lemma: A  a  is a function 67 Functions represented as sets of pairs

Denotational semantics of Aexp with A: Aexp  (  N) A  n  = .n A  X  = .  (X) A  a 0 +a 1  = .(A  a 0   +A  a 1   ) A  a 0 -a 1  = .(A  a 0   -A  a 1   ) A  a 0  a 1  = .(A  a 0    A  a 1   ) 68

Denotational semantics of Bexp B: Bexp  (  T) B  true  = {( , true) |   } B  false  = {( , false) |   } B  a 0 =a 1  = {( , true) |   & A  a 0   =A  a 1   }  {( , false) |   & A  a 0   A  a 1   } B  a 0  a 1  = {( , true) |   & A  a 0    A  a 1   }  {( , false) |   & A  a 0    A  a 1   } B  b  = {( ,  T t) |  , ( , t)  B  b  } B  b 0  b 1  = {( , t 0  T t 1 ) |  , ( , t 0 )  B  b 0 , ( , t 1 )  B  b 1  } B  b 0  b 1  = {( , t 0  T t 1 ) |  , ( , t 0 )  B  b 0 , ( , t 1 )  B  b 1  } Lemma: B  b  is a function 69

Denotational semantics of statements? Intuition: – Running a statement s starting from a state  yields another state  ’ Can we define S  s  as a function that maps  to  ‘ ? – S .  : Stm  (    ) 70

Denotational semantics of commands? Problem: running a statement might not yield anything if the statement does not terminate We introduce the special element  to denote a special outcome that stands for non-termination For any set X, we write X  for X  {  } Convention: – whenever f  X  X  we extend f to X   X  “strictly” so that f(  ) =  71

Denotational semantics of statements? We try: – S .  : Stm  (      ) S  skip   =  S  s 0 ; s 1   = S  s 1  (S  s 0   ) S  if b then s 0 else s 1   = if B  b   then S  s 0   else S  s 1   72

Examples S  X:= 2; X:=1   =  [X  1] S  if true then X:=2; X:=1 else …   =  [X  1] The semantics does not care about intermediate states So far, we did not explicitly need  73

Denotational semantics of loops? S  while b do s   = ? 74

Denotational semantics of statements? Abbreviation W=S  while b do s  Idea: we rely on the equivalence while b do s  if b then (s; while b do s) else skip We may try using unwinding equation W(  ) = if B  b   then W(S  s   ) else  Unacceptable solution – Defines W in terms of itself – It not evident that a suitable W exists – It may not describe W uniquely (e.g., for while true do skip) 75

Introduction to Domain Theory We will solve the unwinding equation through a general theory of recursive equations Think of programs as processors of streams of bits (streams of 0’s and 1’s, possibly terminated by $) What properties can we expect? input output 76

Motivation Let “isone” be a function that must return “1$” when the input string has at least a 1 and “0$” otherwise – isone(00…0$) = 0$ – isone(xx…1…$) =1$ – isone(0…0) =? Monotonicity : Output is never retracted – More information about the input is reflected in more information about the output How do we express monotonicity precisely? 77

Montonicity Define a partial order x  y – A partial order is reflexive, transitive, and anti-symmetric – y is a refinement of x “more precise” For streams of bits x  y when x is a prefix of y For programs, a typical order is: – No output (yet)  some output 78

Montonicity A set equipped with a partial order is a poset Definition: – D and E are postes – A function f: D  E is monotonic if  x, y  D: x  D y  f(x)  E f(y) – The semantics of the program ought to be a monotonic function More information about the input leads to more information about the output 79

Montonicity Example Consider our “isone” function with the prefix ordering Notation: – 0 k is the stream with k consecutive 0’s – 0  is the infinite stream with only 0’s Question (revisited): what is isone(0 k )? – By definition, isone(0 k $) = 0$ and isone(0 k 1$) = 1$ – But 0 k  0 k $ and 0 k  0 k 1$ – “isone” must be monotone, so: isone( 0 k )  isone( 0 k $) = 0$ isone( 0 k )  isone( 0 k 1$) = 1$ – Therefore, monotonicity requires that isone(0 k ) is a common prefix of 0$ and 1$, namely  80

Motivation Are there other constraints on “isone”? Define “isone” to satisfy the equations – isone(  )=  – isone(1s)=1$ – isone(0s)=isone(s) – isone($)=0$ What about 0  ? Continuity: finite output depends only on finite input (no infinite lookahead) 81

Chains A chain is a countable increasing sequence = {x i  X | x 0  x 1  … } An upper bound of a set if an element “bigger” than all elements in the set The least upper bound is the “smallest” among upper bounds: – x i   for all i  N –   y for all upper bounds y of and it is unique if it exists 82

Complete Partial Orders Not every poset has an upper bound – with   n and n  n for all n  N – {1, 2} does not have an upper bound Sometimes chains have no upper bound …  210210 The chain 0  1  2  … does not have an upper bound 83

Complete Partial Orders It is convenient to work with posets where every chain (not necessarily every set) has a least upper bound A partial order P is complete if every chain in P has a least upper bound also in P We say that P is a complete partial order (cpo) A cpo with a least (“bottom”) element  is a pointed cpo (pcpo) 84

Examples of cpo’s Any set P with the order x  y if and only if x = y is a cpo It is discrete or flat If we add  so that  x for all x  P, we get a flat pointed cpo The set N with  is a poset with a bottom, but not a complete one The set N  {  } with n  is a pointed cpo The set N with  is a cpo without bottom Let S be a set and P(S) denotes the set of all subsets of S ordered by set inclusion – P(S) is a pointed cpo 85

The End 86