A variable is live at a program point if its current value may be used along some path before being overwritten. Backward data-flow analysis: drives register allocation and dead-store elimination.
Key formulas
live_in[B]=use[B]∪(live_out[B]∖def[B])
live_out[B]=⋃S∈succ(B)live_in[S]
Lattice: subsets of variables, ordered by ⊆; join is union.