Lattice Theory

Lattice Theory

First, something interesting • Brouwer Fixed point Theorem • Every continuous function f from a closed disk into itself has at least one fixed point Lattice Theory • More formally: • Domain D: a convex, closed, bounded subspace in a plane (generalizes to higher dimensions) • Function f : D → D • There exists some x such that f(x) = x Wednesday, November 18, 15 Wednesday, November 18, 15 Intuition Back to dataflow • Consider the one-dimensional Game plan: case: mapping a line segment • onto itself • Finite partially ordered set with least element: D 1 • x ∈ [0, 1] • Function f : D → D • f(x) ∈ [0, 1] • Monotonic function f : D → D • There must exist some x for • ∃ fixpoint of f which f(x) = x • ∃ least fixpoint of f • Examples (in 2D) • Generalization to case when D has a greatest element, ⊤ • A mall directory 0 1 ∃ greatest fixpoint of f • Crumpling up a piece of • graph paper • Generalization to systems of equations Wednesday, November 18, 15 Wednesday, November 18, 15 Partially ordered set (poset) Another example Set D with a relation ⊑ that is • … Reflexive: x ⊑ x • 3 {a,b,c} Anti-symmetric: x ⊑ y and y ⊑ x ⇒ y = x • 2 • Powerset of any set, ordered by ⊆ is Transitive: x ⊑ y, y ⊑ z ⇒ x ⊑ z 1 • a poset {a,b} {a,c} {b,c} • Example: set of integers and ≤ 0 • In the example, poset elements are {}, {a}, {a, b}, {a, b, c}, etc. • Graphical representation of poset -1 {a} {b} {c} • Graph in which nodes are elements of D and relation ⊑ is -2 • X ⊑ Y iff X ⊆ Y indicated by arrows -3 { } • Usually omit reflexive and transitive arrows for legibility .. • Not counting reflexive edges, graph is always a DAG (why?) Wednesday, November 18, 15 Wednesday, November 18, 15 Finite poset with least element Domains • Poset in which • Set is finite • There is a least element that is below all other elements in poset “Finite poset with least element” is a mouthful, so we will Examples • • abbreviate this to domain • Set of integers ordered by ≤ is not a finite poset with least element (no least element, not finite) • Later, we will add additional conditions to domains that are of interest to us in the context of dataflow analysis • Set of natural numbers ordered by ≤ has a least element (0), but not finite • (Goal: what is a lattice?) • Set of factors of 12, ordered by ≤ has a least element as is finite • Powerset example from before is finite (how many elements?) with a least element ({ }) Wednesday, November 18, 15 Wednesday, November 18, 15 Functions on domains Monotonic functions • A function f : D → D on a domain D is monotonic if • If D is a domain, we can define a function f : D → D • x ⊑ y ⇒ f(x) ⊑ f(y) • Function maps each element of domain on to another • Note: this is not the same as x ⊑ f(x) element of the domain • This means that x is extensive • Example: for D = powerset of {a, b, c} • Intuition: think of f as an electrical circuit mapping input to • f(x) = x ∪ {a} output • g(x) = x – {a} • If f is monotonic, raising the input voltage raises the output voltage (or keeps it the same) • h(x) = {a} – x • If f is extensive, the output voltage is always the same or more than the input voltage Wednesday, November 18, 15 Wednesday, November 18, 15 Examples Fixpoints • Domain D is the powerset of {a, b, c} • Suppose f : D → D. • Montonic functions: • A value x is a fixpoint of f if f(x) = x • f(x) = { } (why?) f maps x to itself • f(x) = x ∪ {a} • Examples: D is a powerset of {a, b, c} • f(x) = x - {a} • • Not monotonic • Identity function: f(x) = x • f(x) = {a} - x (why?) • Every element is a fixpoint • Extensivity • f(x) = x ∪ {a} • f(x) = x ∪ {a} is monotonic and extensive • Every set that contains a is a fixpoint • f(x) = x - {a} is monotonic but not extensive f(x) = {a} - x • f(x) = {a} - x is neither • • What is a function that is extensive, but not monotonic? • No fixpoints Wednesday, November 18, 15 Wednesday, November 18, 15 Fixpoint theorem Examples • One form of Knaster-Tarski Theorem: • For domain of powersets, { } is the least element n If D is a domain and f : D → D is monotonic, then f has at least • For identity function, f ({ }) is the chain one fixpoint { }, { }, { }, ... so least fixpoint is { }, which is correct • More interesting consequence: • For f(x) = x ∪ {a}, we get the chain If ⊥ is the least element of D, then f has a least fixpoint, and { }, {a}, {a}, ... so least fixpoint is {a}, which is correct that fixpoint is the largest element in the chain For f(x) = {a} – x, function is not monotonic, so not n • ⊥, f(⊥), f(f(⊥)), f(f(f(⊥))) ... f (⊥) guaranteed to have a fixpoint! • Least fixpoint: a fixpoint of f, x such that, if y is a fixpoint of f, • Important observation: as soon as the chain repeats, we have then x ⊑ y found the fixpoint (why?) Wednesday, November 18, 15 Wednesday, November 18, 15 Proof of fixpoint theorem Solving equations • First, prove that largest element of chain fn(⊥) is a fixpoint • If D is a domain and f : D → D is a monotone function on that domain, then the equation f(x) = x has a least fixpoint, given by the largest element in the sequence • Second, prove that fn(⊥) is the least fixpoint ⊥, f(⊥), f(f(⊥)), f(f(f(⊥))) ... • Proof follows directly from fixpoint theorem Wednesday, November 18, 15 Wednesday, November 18, 15 Adding a top Multi-argument functions • Now let us consider domains with an element ⊤, such that for every point x in the domain, x ⊑ ⊤ • If D is a domain, a function f : D×D → D is monotonic if it is monotonic in each argument when the other is held constant • New theorem: if D is a domain with a greatest element ⊤ and f : D → D is monotonic, then the equation x = f(x) has a • Intuition: greatest solution, and that solution is the smallest element in the sequence • Electrical circuit has two inputs If you raise either input while holding the other constant, ⊤, f(⊤), f(f(⊤)), ... • the output either goes up or stays the same • Proof? Wednesday, November 18, 15 Wednesday, November 18, 15 Fixpoints of multi-arg functions Lattices A bounded lattice is a partially ordered set with a ⊥ and ⊤, Can generalize fixpoint theorem in a straightforward way • • with two special functions for any pair of points x and y in the • If D is a domain and f, g : D×D → D are monotonic, the lattice: following system of equations has a least fixpoint solution, A join: x ⊔ y is the least element that is greater than x and y calculated in the obvious way • (also called the least upper bound) x = f(x, y) and y = g(x, y) • A meet: x ⊓ y is the greatest element that is less than x and • Can generalize this to more than two variables and domains y (also called the greatest lower bound) with greatest elements easily • Are ⊔ and ⊓ monotonic? Wednesday, November 18, 15 Wednesday, November 18, 15 More about lattices Solving system of equations • Bounded lattices with a finite number of • Consider elements are a special case of domains with ⊤ (why are they not the same?) x = f(x, y, z) • Systems of monotonic functions (including ⊔ y = g(x, y, z) and ⊓) will have fixpoints z = h(x, y, z) • But some lattices are infinite! (example: the lattice for constant propagation) ⊤ • Obvious iterative solution: evaluate every function at every step: • It turns out that you can show a monotonic function will have a least fixpoint for any ⊥ f(⊥,⊥,⊥) ... lattice (or domain) of finite height ... -2 -1 0 1 2 ... • Finite height: any totally ordered subset of ⊥ g(⊥,⊥,⊥) ... domain (this is called a chain) must be finite ⊥ ⊥ h(⊥,⊥,⊥) ... • Why does this work? Wednesday, November 18, 15 Wednesday, November 18, 15 Worklist algorithm Mapping worklist algorithm • Obvious point: only necessary to re-evaluate functions whose • Careful: the “variables” in constant propagation are not the individual variable “important” inputs have changed values in a state vector. Each variable (from a fixpoint perspective) is an entire • Worklist algorithm state vector – there are as many variables as there are edges in the CFG • Initialize worklist with all equations • Functions: Program statements: eval(e, V ) • Initialize solution vector S to all ⊥ • in • These are called transfer functions • While worklist not empty • Need to make sure this is monotonic • Get equation from worklist • Branches • Re-evaluate equation based on S, update entry corresponding to lhs in S • Propagates input state vector to output – trivially monotonic • Put all equations which use this lhs on their rhs in the worklist • Merges • Claim: the worklist algorithm for constant propagation is an instance of • Use join or meet to combine multiple input variables – monotonic by this approach definition Wednesday, November 18, 15 Wednesday, November 18, 15 Constant propagation • Step 1: choose lattice • Use constant lattice (infinite, but finite height) • Step 2: choose direction of dataflow • Run forward through program • Step 3: create monotonic transfer functions • If input goes from ⊥ to constant, output can only go up. If input goes from constant to ⊤, output goes to ⊤ • Step 4: choose confluence operator • What do do at merges? For constant propagation, use join Wednesday, November 18, 15.

View Full Text

Details

  • File Type
    pdf
  • Upload Time
    -
  • Content Languages
    English
  • Upload User
    Anonymous/Not logged-in
  • File Pages
    5 Page
  • File Size
    -

Download

Channel Download Status
Express Download Enable

Copyright

We respect the copyrights and intellectual property rights of all users. All uploaded documents are either original works of the uploader or authorized works of the rightful owners.

  • Not to be reproduced or distributed without explicit permission.
  • Not used for commercial purposes outside of approved use cases.
  • Not used to infringe on the rights of the original creators.
  • If you believe any content infringes your copyright, please contact us immediately.

Support

For help with questions, suggestions, or problems, please contact us