The simplest BT lattice has just two elements:
bt ::=dynamic is top, static is bottom (S|D
S < D).
Say we are analyzing
(prim r + a b)
In abstract interpretation, the value assigned to r is the
abstraction of the + primop (denoted
) applied to the
values of a and b in the analysis environment.
In my BTA the abstraction of all the generic primops is the same: if
any argument is not S then the result is D. Call this function
. Thus if any argument is unknown at compile time, then the
prim must be delayed until runtime.