The quality of many optimizations and analyses of parallelizing compilers depends signi cantly on the ability to evaluate symbolic expressions and on the amount of information available about program variables at arbitrary program points. In this paper, we describe an e ective and uni ed symbolic evaluation framework that statically determines the values of variables and symbolic expressions, assumptions about and constraints between variable values and the condition under which control ow reaches a program statement. We introduce program context, a novel representation for comprehensive and compact control and data ow analysis information. Program contexts are described as rst order logic formulas which enable us to use public domain software for standard symbolic manipulation. Computations are represented as algebraic expressions de ned over a program's problem size. Our symbolic evaluation techniques comprise accurate modeling of assignment and input/output statements, branches, loops, recurrences, arrays and procedures. E ciency and accuracy are highly improved by aggressive simpli cation techniques. All of our techniques target both linear as well as non-linear expressions and constraints. A variety of examples, including program veri cation, dependence analysis, array privatization, communication vectorization and elimination of redundant communication is used to illustrate the e ectiveness of our approach. We present results from a preliminary implementation of our framework as part of a parallelizing compiler that demonstrate the potential performance gains achievable by employing symbolic evaluation to support program parallelization.