To carry out significant program optimization, it is necessary to know what properties hold at each program unit. Frequently the properties of interest form a partially ordered set with a minimum condition (i.e., well-founded). When this occurs, it is possible to directly compute the properties that can be attached to program units and, optionally, to expand the program text to obtain a strong assignment of properties. Techniques are presented for property computation in iterative and recursive programs. Application to a variety of property sets is discussed.