The first phase of any program analysis using this framework yields a transfer function for each region in a problem-specific form. For each analysis, a representation for transfer functions with the following operations must be provided:

- Extract basic block transfer function ()
- Composition ()
- Meet (), with identity value ()
- Iteration (): yield effect after
**i**iterations, where**i**is the loop's normalized index variable. - Closure (): eliminate the most recent loop index
variable to describe the effect of the entire loop.
- : map procedure transfer function into caller space

The first phase computes relative information that summarizes the behavior of each region. To compute absolute information, a second phase may optionally be performed. The second phase determines absolute information on entry to each procedure and region, using the transfer functions found in the first phase to propagate a problem-specific data-flow value. A representation for this value must be provided, along with the following operations:

- Context of program (input value )
- Meet (), with identity value ()
- Apply transfer function to a data-flow value to yield another
- : map call context into procedure space
- : remove information
not relevant to
*Proc* - : equivalence relation on procedure contexts

Mon Oct 2 11:00:22 PDT 1995