Semantic definitions for programming languages which are fully abstract are needed in the construction of a mathematical framework for program optimization. In particular, the observable behavior of program phrases in practical languages needs to be captured. Today, denotational language specifications often make artificial distinctions between program phrases with indistinguishable behavior. A new approach based upon a realistic treatment of error values and error propagation in models is utilized in this project. Sequential functions form an ordinary Scott-domain under pointwise ordering in the presence of error elements and can be represented as decision trees. This helps to implicitly describe how errors are propagated. This approach will be used to define practical languages such as FORTRAN, Pascal, C, ML, and Scheme.