Static analysis is a technique for analyzing source code structure without executing the program. It constructs symbol tables and control flow graphs to determine properties like variable initialization, usage, and flows. Symbolic execution assigns symbolic values to inputs instead of concrete values, propagating the symbols through computations to represent all outcomes with expressions over the symbols. It can derive path conditions for branches as functions of inputs to find input values that execute particular paths when the conditions are linear. Both techniques help validate programs by finding errors, anomalies, and deviations from standards.