Declarative Computation Model Kernel language semantics - PowerPoint PPT Presentation

About This Presentation
Title:

Declarative Computation Model Kernel language semantics

Description:

C. Varela; Adapted w/permission from S. Haridi and P. Van Roy. 1. Declarative ... procedural application | case x of pattern then s1 else s2 end pattern ... abstraction ... – PowerPoint PPT presentation

Number of Views:40
Avg rating:3.0/5.0
Slides: 45
Provided by: varelahar
Learn more at: http://www.cs.rpi.edu
Category:

less

Transcript and Presenter's Notes

Title: Declarative Computation Model Kernel language semantics


1
Declarative Computation ModelKernel language
semantics
  • Carlos Varela
  • RPI
  • Adapted with permission from
  • Seif Haridi
  • KTH
  • Peter Van Roy
  • UCL

2
Kernel language syntax
The following defines the syntax of a statement,
?s? denotes a statement
?s? skip
empty statement ?x? ?y?

variable-variable binding
?x?
?v? variable-value binding
?s1?
?s2? sequential composition local ?x?
in ?s1? end declaration if ?x? then ?s1?
else ?s2? end conditional ?x? ?y1?
?yn? procedural application case ?x?
of ?pattern? then ?s1? else ?s2? end pattern
matching ?v? proc ?y1? ?yn? ?s1?
end ... value
expression ?pattern? ...

3
Examples
  • local X in X 1 end
  • local X Y T Z in X 5 Y 10 T (XgtY) if T
    then Z X else Z Y end Browse Zend
  • local S T in
  • S proc X Y Y XX end
  • S 5 T
  • Browse T
  • end

4
Procedure abstraction
  • Any statement can be abstracted to a procedure by
    selecting a number of the free variable
    identifiers and enclosing the statement into a
    procedure with the identifiers as parameters
  • if X gt Y then Z X else Z Y end
  • Abstracting over all variablesproc Max X Y
    Z if X gt Y then Z X else Z Y endend
  • Abstracting over X and Zproc LowerBound X
    Z if X gt Y then Z X else Z Y endend

5
Computations (abstract machine)
  • A computation defines how the execution state is
    transformed step by step from the initial state
    to the final state
  • A single assignment store ? is a set of store
    variables, a variable may be unbound, bound to a
    partial value, or bound to a group of other
    variables
  • An environment E is mapping from variable
    identifiers to variables or values in ?, e.g. X
    ? x1, Y ? x2
  • A semantic statement is a pair ( ?s? , E )
    where ?s? is a statement
  • ST is a stack of semantic statements

6
Computations (abstract machine)
  • A computation defines how the execution state is
    transformed step by step from the initial state
    to the final state
  • The execution state is pair
  • ( ST , ? )
  • ST is a stack of semantic statements
  • A computation is a sequence of execution
    states( ST0 , ?0 ) ? ( ST1 , ?1 ) ? ( ST2 , ?2 )
    ? ...

7
Semantics
  • To execute a program (i.e., a statement) ?s? the
    initial execution state is ( (?s? , ?) , ?
    )
  • ST has a single semantic statement (?s? , ?)
  • The environment E is empty, and the store ? is
    empty
  • ... denotes the stack
  • At each step the first element of ST is popped
    and execution proceeds according to the form of
    the element
  • The final execution state (if any) is a state in
    which ST is empty

8
Calculating with environments
  • E is mapping from identifiers to entities (both
    store variables and values) in the store
  • The notation E(?y?) retrieves the entity
    associated with the identifier ?x? from the store
  • The notation E ?y?1 ? x1, ? y?2 ? x2, ... , ?
    y?n ? xn
  • denotes a new environment E constructed from E
    by adding the mappings ?y?1 ? x1, ? y?2 ? x2,
    ... , ? y?n ? xn
  • E(?z?) is xk if ?z? is equal to ? y?k ,
    otherwise E(?z?) is equal to E(?z?)
  • The notation E?y?1, ? y?2, ... , ? y?n denotes
    the projection of E onto the set ?y?1, ? y?2,
    ... , ? y?n, i.e., E restricted to the members
    of the set

9
Calculating with environments (2)
  • E X ? 1, Y ? 2 3, Z ? xi
  • E E X ? 2
  • E(X) 2, E(X) 1
  • EX,Y restricts E to the domain X,Y,i.e.,
    it is equal to X ? 1, Y ? 2 3

10
Calculating with environments (3)
  • local X in X 1 (E) local X in X 2 (E)
    Browse X end (E) Browse Xend

11
skip
  • The semantic statement is (skip, E)
  • Continue to next execution step

12
skip
  • The semantic statement is (skip, E)
  • Continue to next execution step

?
?
(skip, E) ST


ST
13
Sequential composition
  • The semantic statement is (?s1? ?s2? , E)
  • Push (?s2? , E) and then push (?s1? , E) on ST
  • Continue to next execution step

?
(?s1? , E) (?s2? , E) ST
?
(?s1? ?s2? , E) ST


14
Variable declaration
  • The semantic statement is (local ?x? in ?s?
    end, E)
  • Create a new store variable x in the Store
  • Let E be E?x? ? x, i.e. E is the same as E
    but the identifier ?x? is mapped to x.
  • Push (?s? , E) on ST
  • Continue to next execution step

15
Variable declaration
  • The semantic statement is (local X in ?s? end,
    E)

?
?
?
(local X in ?s? end , ) ST
(?s? , ) ST


xi
unbound
E
E
X xi
16
Variable-variable equality
  • The semantic statement is ( ?x? ?y?, E )
  • Bind E(?x?) and E(?y?) in the store

17
Variable-value equality
  • The semantic statement is ( ?x? ?v?, E )
  • Where ?v? is a record, a number, or a procedure
  • Construct the value in the store and refer to it
    by the variable y.
  • Bind E(?x?) and y in the store
  • We have seen how to construct records and
    numbers, but what is a procedure value?

18
Lexical scoping
  • Free and bound identifier occurrences
  • An identifier occurrence is bound with respect to
    a statement ?s? if it is in the scope of a
    declaration inside ?s?
  • A variable identifier is declared either by a
    local statement, as a parameter of a procedure,
    or implicitly declared by a case statement
  • An identifier occurrence is free otherwise
  • In a running program every identifier is bound
    (i.e., declared)

19
Lexical scoping (2)
  • proc P X local Y in Y 1 Browse Y end X
    Yend

Bound Occurrences
Free Occurrences
20
Lexical scoping (3)
  • local Arg1 Arg2 in Arg1 111111 Arg2
    999999 Res Arg1Arg2end

Bound Occurrences
Free Occurrences
This is not a runnable program!
21
Lexical scoping (4)
  • local Res in local Arg1 Arg2 in Arg1
    111111 Arg2 999999 Res
    Arg1Arg2 end Browse Resend

22
Lexical scoping (5)
  • local P Q inproc P Q endproc Q Browse
    hello endlocal Q in proc Q Browse hi
    end Pend
  • end

23
Procedure values
  • Constructing a procedure value in the store is
    not simple because a procedure may have external
    references

local P Q inQ proc Browse hello endP
proc Q endlocal Q in Q proc
Browse hi end Pend end
24
Procedure values (2)
( , )
x1
P
proc Q end
Q ? x2
local P Q inQ proc Browse hello endP
proc Q endlocal Q in Q proc
Browse hi end Pend end
( , )
x2
proc Browse hello end
Browse ? x0
25
Procedure values (3)
  • The semantic statement is (proc ?x? ?y1? ...
    ?yn? ?s? end, E)
  • ?y1? ... ?yn? are the (formal) parameters of the
    procedure
  • Other free identifiers of ?s? are called external
    references ?z1? ... ?zk?
  • These are defined by the environment E where the
    procedure is declared (lexical scoping)
  • The contextual environment of the procedure CE is
    E ?z1? ... ?zk?
  • When the procedure is called CE is used to
    construct the environment of ?s?

(proc ?y1? ... ?yn? ?s? end , CE)
26
Procedure values (4)
  • Procedure values are pairs
  • (proc ?y1? ... ?yn? ?s? end , CE)
  • They are stored in the store just as any other
    value

(proc ?y1? ... ?yn? ?s? end , CE)
27
Procedure introduction
  • The semantic statement is (?x? proc ?y1? ...
    ?yn? ?s? end, E)
  • Environment is ?x? ? xP, ...
  • Create a new procedure value of the form (proc
    ?y1? ... ?yn? ?s? end, CE) , refer to it by
    the variable xP
  • Bind the store variable E(?x?) to xP
  • Continue to next execution step

28
Suspendable statements
  • The remaining statements require ?x? to be bound
    in order to execute
  • The activation condition (E(?x?) is determined),
    i.e., bound to a number, record or a procedure
    value

?s? if ?x? then ?s1? else ?s2?
end conditional ?x? ?y1? ?yn?
procedural application case ?x?
of pattern matching ?pattern? then
?s1? else ?s2? end
29
Life cycle of a thread
ST not empty
A B / Execute
Running
B/Resume
A
A not B/Suspend
not A /Terminate
Top(ST) activation condition is true
Suspended
Terminated
B
30
Conditional
  • The semantic statement is ( if ?x? then ?s1?
    else ?s2? end , E)
  • The activation condition (E(?x?) is determined)
    is true
  • If E(?x?) is not Boolean (true, false), raise an
    error
  • E(?x?) is true, push (?s1? , E) on the stack
  • E(?x?) is false, push (?s2? , E) on the stack
  • The activation condition (E(?x?) is determined)
    is false suspend

31
Procedure application
  • The semantic statement is ( ?x? ?y1? ?yn? ,
    E)
  • The activation condition (E(?x?) is determined)
    is true
  • If E(?x?) is not procedure value, or a procedure
    with arity that is not equal to n, raise an error
  • E(?x?) is (proc ?z1? ... ?zn? ?s? end, CE) ,
    push ( ?s? , CE ?z1? ? E(?y1?) ?zn? ?
    E(?yn?) ) on the stack
  • The activation condition (E(?x?) is determined)
    is false suspend

32
Case statement
  • The semantic statement is ( case ?x? of ?l?
    (?f1? ?x1? ?fn? ?xn?)
  • then ?s1? else ?s2? end , E)
  • The activation condition (E(?x?) is determined)
    is true
  • The label of E(?x?) is ?l? and its arity is ?f1?
    ?fn?push (local ?x1? ?x?. ?f1? ?xn?
    ?x?. ?fn? in ?s1? end, E)on the stack
  • Otherwise push (?s2? , E) on the stack
  • The activation condition (E(?x?) is determined)
    is false suspend

33
Execution examples
  • local Max C in proc Max X Y Z ?s?3 if X gt
    Y then ZX else ZY end end Max 3 5 Cend

?s?2
?s?1
34
Execution examples (2)
local Max C in proc Max X Y Z ?s?3 if X gt
Y then ZX else ZY end end ?s?4 Max 3 5 Cend
?s?2
?s?1
  • Initial state ((?s?1, ?), ?)
  • After local Max C in ( (?s?2, Max ? m, C ?
    c) , m, c )
  • After Max binding( (?s?4, Max ? m, C ? c) ,
    m (proc X Y Z ?s?3end , ?) , c )

35
Execution examples (3)
local Max C in proc Max X Y Z ?s?3 if X gt
Y then ZX else ZY end end ?s?4 Max 3 5 Cend
?s?2
?s?1
  • After Max binding( (?s?4, Max ? m, C ? c) ,
    m (proc X Y Z ?s?3end , ?) , c )
  • After procedure call( (?s?3, X ? t1, Y ? t2,
    Z ? c) , m (proc X Y Z ?s?3end , ?) ,
    t13, t25, c )

36
Execution examples (4)
local Max C in proc Max X Y Z ?s?3 if X gt
Y then ZX else ZY end end ?s?4 Max 3 5 Cend
?s?2
?s?1
  • After procedure call( (?s?3, X ? t1, Y ? t2,
    Z ? c) , m (proc X Y Z ?s?3end , ?) ,
    t13, t25, c )
  • After T (XgtY)( (?s?3, X ? t1, Y ? t2, Z ?
    c, T ? t) , m (proc X Y Z ?s?3end , ?)
    , t13, t25, c, tfalse )
  • ( (ZY , X ? t1, Y ? t2, Z ? c, T ? t) ,
    m (proc X Y Z ?s?3end , ?) , t13, t25, c,
    tfalse )

37
Execution examples (5)
local Max C in proc Max X Y Z ?s?3 if X gt
Y then ZX else ZY end end ?s?4 Max 3 5 Cend
?s?2
?s?1
  • ( (ZY , X ? t1, Y ? t2, Z ? c, T ? t) ,
    m (proc X Y Z ?s?3end , ?) , t13, t25, c,
    tfalse )
  • ( , m (proc X Y Z ?s?3end , ?) ,
    t13, t25, c5, tfalse )

38
Procedures with external references
  • local LB Y C in Y 5 proc LB X Z ?s?3
    if X gt Y then ZX else ZY end end LB 3
    Cend

?s?1
?s?2
39
Procedures with external references
  • local LB Y C in Y 5 proc LB X Z ?s?3
    if X gt Y then ZX else ZY end end LB 3
    Cend

?s?1
?s?2
  • The procedure value of LB is
  • (proc X Z ?s?3 end , Y ? y)
  • The store is y 5,

40
Procedures with external references
  • local LB Y C in Y 5 proc LB X Z ?s?3
    if X gt Y then ZX else ZY end end LB 3
    Cend

?s?1
?s?2
  • The procedure value of LB is
  • (proc X Z ?s?3 end , Y ? y)
  • The store is y 5,
  • STACK ( LB T C , Y ? y , LB ? lb, C ? c, T ?
    t)
  • STORE y 5, lb (proc X Z ?s?3 end , Y ?
    y) , t 3, c

41
Procedures with external references
  • local LB Y C in Y 5 proc LB X Z ?s?3
    if X gt Y then ZX else ZY end end LB 3
    Cend

?s?1
?s?2
  • STACK ( LB T C , Y ? y , LB ? lb, C ? c, T ?
    t)
  • STORE y 5, lb (proc X Z ?s?3 end , Y ?
    y) , t 3, c
  • STACK (?s?3 , Y ? y , X ? t , Z ? c)
  • STORE y 5, lb (proc X Z ?s?3 end , Y ?
    y) , t 3, c

42
Procedures with external references
  • local LB Y C in Y 5 proc LB X Z ?s?3
    if X gt Y then ZX else ZY end end LB 3
    Cend

?s?1
?s?2
  • STACK (?s?3 , Y ? y , X ? t , Z ? c)
  • STORE y 5, lb (proc X Z ?s?3 end , Y ?
    y) , t 3, c
  • STACK (ZY , Y ? y , X ? t , Z ? c)
  • STORE y 5, lb (proc X Z ?s?3 end , Y ?
    y) , t 3, c
  • STACK
  • STORE y 5, lb (proc X Z ?s?3 end , Y ?
    y) , t 3, c 5

43
Exercises
  1. Explain the difference between static binding and
    dynamic binding. Does dynamic binding require
    keeping an environment in a closure (procedure
    value)? Why or why not?
  2. VRH Exercise 2.2 (page 107)
  3. VRH Exercise 2.7 (page 108) translate example to
    kernel language and execute using operational
    semantics.
  4. Write an example of a program that suspends. Now,
    write an example of a program that never
    terminates. Use the operational semantics to
    prove suspension or non-termination.

44
Exercises
  • Translate the following function to the kernel
    language
  • fun AddList L1 L2
  • case L1 of H1T1 then
  • case L2 of H2T2 then
  • H1H2AddList T1 T2
  • end
  • else nil end
  • end
  • Using the operational semantics, execute the
    call AddList 1 2 3 4
  • Read VRH Sections 2.5-2.7.
Write a Comment
User Comments (0)
About PowerShow.com