1 / 61

Hop Operational Semantics

Hop Operational Semantics. Paris, February 23 rd Tamara Rezk Indes Team, INRIA. Hop Multi-tiers compiler. Input: a web application written in a single homogenous language. HOP multi-tiers compiler. SQL (server). scheme code and protocols over html (server code).

traci
Download Presentation

Hop Operational Semantics

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. Hop Operational Semantics Paris, February 23rd Tamara Rezk Indes Team, INRIA

  2. Hop Multi-tiers compiler Input: a web application written in a single homogenous language HOP multi-tiers compiler SQL (server) scheme code and protocols over html (server code) javascript (client code)

  3. A precise Hop specification • specifications are used to understand the meaning of programs • In this lecture: a precise (mathematical) specification of the Hop programming language by means of operational semantics Unless there is a prior, generally-accepted mathematical definition of a language at hand, who is to say whether a proposed implementation is correct? (Dana Scott 1969)

  4. Formal Semantics • Denotational Semantics: programs are partial functions mapping initial states to final states (Strachey-Scott, domain theory) Unless there is a prior, generally-accepted mathematical definition of a language at hand, who is to say whether a proposed implementation is correct? Dana Scott, Turing Award 76

  5. Formal Semantics • Axiomatic Semantics: programs are given specifications in e.g. first order logic and can be proven correct with respect to their spec. in the logic “There are two ways of constructing a software design: One way is to make it so simple that there are obviously no deficiencies, and the other way is to make it so complicated that there are no obvious deficiencies. The first method is far more difficult.” Tony Hoare, Turing Award 80

  6. Formal Semantics • Structural Operational Semantics (also called “Transition semantics” or “small-step semantics”) Execution of a program can be foramlized as a sequence of configurations Gordon Plotkin

  7. Structural Operational Semantics • Abstract grammar of the language • Configurations and states • Transition relation

  8. Hop abstract grammar (Abstract grammars may remind to context-free/BNF grammars but abstract grammars are independent from representations such as which operators are infix, what strings are used to denote contants and variables, etc, etc)

  9. Hop semantics We will study Hop semantics in layers: • Scheme subset of Hop • Distributed aspects of Hop (server+client) • Document Object Model (DOM) aspects of Hop • Same Origin Policy (SOP) • Access Control (AC) and semantics

  10. Hop semantics We will study Hop semantics in layers: • Scheme subset of Hop • Distributed aspects of Hop (server+client) • Document Object Model (DOM)aspects of Hop • Same Origin Policy (SOP) • Access Control (AC) and semantics

  11. Hop abstract grammar (Abstract grammars may remind to context-free/BNF grammars but abstract grammars are independent from representations such as which operators are infix, what strings are used to denote contants and variables, etc, etc)

  12. 1.Scheme abstract grammar program or expression e :: = x | w | (e0 e1) | (set! x e ) values w:: = (lambda (x) e) | i | ( )

  13. Scheme abstract grammar program or expression e :: = x | w | (e0 e1) | (set! x e ) values w:: = (lambda (x) e) | i | ( ) Example programs: (lambda (z) (lambda (y) (set! y z))) ((lambda (z) ((lambda (y) (set! y z)) 2)) 3) (lambda (z) ((lambda (y) (set! y z)) 2))

  14. Structural Operational Semantics • Abstract grammar of the language • Configurations and states • Transition relation

  15. Scheme configurations Abstract grammar: e :: = x | w | (e0 e1) | (set! x e ) w:: = (lambda (x) e) | i | ( ) Configurations are of the form: < e , μ> e expression μenvironment or store, mapping variables to values

  16. Scheme configurations Configurations are of the form: < e , μ> e expression μenvironment or store, mapping variables to values Example of configuration: < (set! x 3), { x  2, z  4} >

  17. Scheme configurations μenvironment or store, mapping variables to values In the store we will consider: local variables (defined by lambda expressions) global variables (already defined in the store before execution, in scheme #define )

  18. Structural Operational Semantics • Abstract grammar of the language • Configurations and states • Transition relation

  19. Transition relation The operational semantics is defined by a transition system (configurations, ). The transition relation  is defined by a set of semantics rules of the form: constraints _______________________ <conf0 >  <conf1>

  20. Transition relation y not in dom(μ) _______________________ <((lambda (x) e) w), μ >  < e{y/x}, μU {y -> w} > e :: = x | w | (e0 e1) | (set! x e ) w:: = (lambda (x) e) | i | ( )

  21. Transition relation y not in dom(μ) _______________________ <((lambda (x) e) w), μ >  < e{y/x}, μU {y -> w} > μ(y) = w _______________________ < y , μ >  <w , μ>

  22. Transition relation y not in dom(μ) _______________________ <((lambda (x) e) w), μ >  < e{y/x}, μU {y -> w} > Example of execution with 2 steps: <((lambda (x) x) 2), {z ->3} > < x{y/x}, {z ->3 , y -> 2} >  < 2, {z ->3 , y -> 2} >

  23. Transition relation y not in dom(μ) _______________________ <((lambda (x) e) w), μ >  < e{y/x}, μU {y -> w} > Exercise: give an execution for <( (lambda (z) (lambda (y) y)) 2), {z -> 2}>

  24. Transition relation y not in dom(μ) _______________________ <((lambda (x) e) w), μ >  < e{y/x}, μU {y -> w} > This rule is not enough: what happens if we want to reduce an application (e e’) where e’ is not a value? ((lambda (z) z) ((lambda (z) z) 3) ) We need to define contextual rules!!

  25. Evaluation contexts E ::= [] | (E e) | (w E) | (set! x E) ((lambda (z) z) ((lambda (z) z) 3) ) In this example: E = ((lambda (z) z) [] ) y not in dom(μ) _______________________ <E[((lambda (x) e) w)], μ >  < E[e{y/x}], μU {y -> w} >

  26. Evaluation contexts y not in dom(μ) _______________________ <E[((lambda (x) e) w)], μ >  < E[e{y/x}], μU {y -> w} > E ::= [] | (E e) | (w E) | (set! x E) <((lambda (z) z) ((lambda (z) z) 3) ), {z  2} >  <((lambda (z) z) y), {z  2, y  3} >  <((lambda (z) z) 3), {z  2, y  3} >  <((lambda (z) z) 3), {z  2, y  3, x 3} >  < x, {z  2, y  3, x 3}  < 3, {z  2, y  3, x 3}

  27. y not in dom(μ) _______________________ <E[((lambda (x) e) w)], μ >  < E[e{y/x}], μU {y -> w} > Transition relation for Scheme subset μ(y) = w _______________________ < E[y] , μ >  <E[w] , μ> x in dom(μ) _______________________ < E[(set! x w)] , μ >  <E[()] , μ[x-> w] >

  28. Exercises Find executions for the following programs starting with store { z -> 5} • (set! z 3) • 2. (((lambda (z) (lambda (y) (set! y z))) 2) 3) • 3. ((lambda (z) ((lambda (y) (set! y z))) 2) 3) • 4. (((lambda (x) (lambda (y) (set! x z))) 2) 3) • 5. (set! z ((lambda (y) y) 2))

  29. Hop semantics We will study Hop semantics in layers: • Scheme subset of Hop • Distributed aspects of Hop (server+client) • Document Object Model (DOM) aspects of Hop • Same Origin Policy (SOP) • Access Control (AC) and semantics

  30. Hop distribution: Abstract grammar

  31. Hop distribution: Abstract grammar

  32. Hop distribution: Abstract grammar

  33. Hop distribution: Abstract grammar

  34. Hop distribution: Abstract grammar

  35. Hop distribution: Abstract grammar E ::= [] | (E S) | (w E) | (set! x E) | (with-hop E s) | (with-hop w E)

  36. Distribution aspects server/client

  37. Core Hop configuration

  38. Core Hop configuration

  39. Core Hop configuration

  40. Core Hop configuration

  41. Core Hop configuration

  42. Core Hop configuration

  43. Core Hop configuration

  44. Transition relation: service definition

  45. INIT rule Bound url New client instance New server thread When a client enter a URL in a browser, the service bound to the URL will be invoked;

  46. Hop Compilation + Init and Invoke rule Hop source Hop client code Client code compiler CSS Code Injection Prevention HTML Server code compiler Mashic Compiler JS Invoke Generate URL Server Bytecode Access URLs Server Bytecode URL URL Server Bytecode HTTP URL Server Bytecode

  47. Transition relation: service invocation

  48. Transition relation: service invocation exercise: Let s be (service (z) (set! z ((lambda (y) y) 2))) . Find a (partial) execution for s

  49. Transition relation: service return

  50. Transition relation: service invocation

More Related