- Text
- Formula,
- Simplified,
- Else,
- Formulas,
- Constraint,
- Analysis,
- True,
- Program,
- Simplification,
- Example,
- Www.cs.wm.edu

Small Formulas for Large Programs: On-line Constraint ...

The Full Algorithm /* * Recursive algorithm to compute simplified **for**m. * N: current sub**for**mula, C: critical constraint of N. */ simplify(N, C) { If N is a leaf: } If C => N return true /* Nonconstraining */ If C=> ¬N return false /* Nonrelaxing */ Otherwise, return N /* Neither */ If N is a connective, **for** each child X of N: Critical constraint is recomputed because Compute critical constraint C(X) siblings may change. X = simplify(X, C(X)) Repeat until no child of N can be further simplified.

Making it Practical 2n 2 ● Worst case: Requires validity checks. (n = # leaves) ● Important Optimization: – Insight: The leaves of the **for**mulas whose validity is checked are always the same. – For simplifying SMT **for**mulas, we can gainfully reuse the same conflict clauses throughout simplification ● Empirical Result: Overhead of simplification over solving sub**line**ar (logarithmic) in practice **for** constraints generated by our program analysis system.

- Page 1 and 2: Small Formulas for Large Programs:
- Page 3 and 4: Techniques to Limit Formula Size
- Page 5 and 6: Goal #1: Non-redundancy ● Given f
- Page 7 and 8: An Example enum op_type {ADD=0, SUB
- Page 9 and 10: An Example enum op_type {ADD=0, SUB
- Page 11 and 12: Now that this example has convinced
- Page 13 and 14: Redundant Leaves ● A leaf L is no
- Page 15 and 16: Properties of Simplified Forms ●
- Page 17 and 18: Critical Constraint Idea: Compute a
- Page 19 and 20: Example ● Consider again the form
- Page 21: Example ● Consider again the form
- Page 25 and 26: Impact on Analysis Scalability Anal
- Page 27 and 28: It's not just Compass ● Measured
- Page 29: Any questions?