1 / 8

General approach to domain design

Explore different lattice structures like boolean logic and powerset lattice; create complex lattices using combinator techniques; understand the distinction between May versus Must computations. Improve efficiency in sub-expression elimination and flow functions.

penney
Download Presentation

General approach to domain design

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. General approach to domain design • Simple lattices: • boolean logic lattice • powerset lattice • incomparable set: set of incomparable values, plus top and bottom (eg const prop lattice) • two point lattice: just top and bottom • Use combinators to create more complicated lattices • tuple lattice constructor • map lattice constructor

  2. May vs Must • Has to do with definition of computed info • Set of x ! y must-point-to pairs • if we compute x ! y, then, then during program execution, x must point to y • Set of x! y may-point-to pairs • if during program execution, it is possible for x to point to y, then we must compute x ! y

  3. May vs must

  4. May vs must

  5. Common Sub-expression Elim • Want to compute when an expression is available in a var • Domain:

  6. Common Sub-expression Elim • Want to compute when an expression is available in a var • Domain:

  7. Flow functions in FX := Y op Z(in) = X := Y op Z out in FX := Y(in) = X := Y out

  8. Flow functions in FX := Y op Z(in) = in – { X ! * } – { * ! ... X ... } [ { X ! Y op Z | X  Y Æ X  Z} X := Y op Z out in FX := Y(in) = in – { X ! * } – { * ! ... X ... } [ { X ! E | Y ! E 2 in } X := Y out

More Related