Introduction / 1: |
A Hierarchy of Constants / 2: |
A Taxonomy of Constants / 2.1: |
Flow Graphs / 2.1.1: |
May- and Must-Constants / 2.1.2: |
Weakened Constant Detection Problems / 2.1.3: |
Classes of Integer Constants / 2.1.4: |
Known Results / 2.2: |
New Undecidability Results / 2.3: |
New Intractability Results / 2.4: |
Summary / 2.5: |
Deciding Constants by Effective Weakest Preconditions / 3: |
Presburger and Polynomial Constants / 3.1: |
Presburger-Constant Detection at a Glance / 3.2: |
A Generic Algorithm / 3.3: |
Detection of Presburger Constants / 3.4: |
A Primer on Computable Ideal Theory / 3.5: |
Zeros / 3.6: |
Substitution / 3.6.3: |
Projection / 3.6.4: |
Detection of Polynomial Constants / 3.7: |
Conclusion / 3.8: |
Limits of Parallel Flow Analysis / 4: |
A Motivating Example / 4.1: |
Parallel Programs / 4.2: |
Interprocedural Copy-Constant Detection / 4.3: |
Two-Counter Machines / 4.3.1: |
Constructing a Program / 4.3.2: |
Correctness of the Reduction / 4.3.3: |
Intraprocedural Copy-Constant Detection / 4.4: |
Copy-Constant Detection in Loop-Free Programs / 4.5: |
Beyond Fork/Join Parallelism / 4.6: |
Owicki/Gries-Style Program Proofs / 4.7: |
Correctness of the Reduction in Section 4.3 / 4.8: |
Enriching the Program / 4.8.1: |
The Proof Outlines / 4.8.2: |
Interference Freedom / 4.8.3: |
Correctness of the Reduction in Section 4.4 / 4.9: |
An Auxiliary Predicate / 4.9.1: |
Proof Outline for Main / 4.9.3: |
Parallel Flow Graphs / 4.9.6: |
Operational Semantics / 5.1: |
Atomic Runs / 5.3: |
The Run Sets of Ultimate Interest / 5.4: |
The Constraint Systems / 5.5: |
Same-Level Runs / 5.5.1: |
Inverse Same-Level Runs / 5.5.2: |
Two Assumptions and a Simple Analysis / 5.5.3: |
Reaching Runs / 5.5.4: |
Terminating Runs / 5.5.5: |
Bridging Runs / 5.5.6: |
The General Case / 5.5.7: |
Discussion / 5.6: |
Non-atomic Execution / 6: |
Modeling Non-atomic Execution by Virtual Variables / 6.1: |
The Domain of Non-atomic Run Sets / 6.2: |
Base Statements / 6.3.1: |
Sequential Composition / 6.3.2: |
Interleaving Operator / 6.3.3: |
Pre-operator / 6.3.4: |
Post-operator / 6.3.5: |
Dependence Traces / 6.4: |
Transparency and Dependences / 7.1: |
Implication Order / 7.2: |
Subsumption Order / 7.4: |
A Lattice of Antichains / 7.5: |
Short Dependence Traces / 7.6: |
The Abstract Domain / 7.7: |
Interleaving / 7.8: |
Complementary Dependence Traces / 7.11.1: |
Soundness Lemmas / 7.11.2: |
Completeness Lemmas / 7.11.4: |
Proof of Theorem 7.11.1 / 7.11.5: |
Base Edges / 7.12: |
Running Time / 7.13: |
Detecting Copy Constants and Eliminating Faint Code / 7.14: |
Copy-Constant Detection / 8.1: |
Faint-Code Elimination / 8.2: |
Complexity in the Non-atomic Scenario / 8.3: |
The SAT-reduction / 9.1: |
Towards Stronger Lower Bounds / 9.2: |
Assignment Statements That Propagate Twice / 9.2.1: |
Propagating Runs of Exponential Length / 9.2.2: |
Future Research / 9.3: |
A Primer on Constraint-Based Program Analysis / A: |
References |
Introduction / 1: |
A Hierarchy of Constants / 2: |
A Taxonomy of Constants / 2.1: |
Flow Graphs / 2.1.1: |
May- and Must-Constants / 2.1.2: |
Weakened Constant Detection Problems / 2.1.3: |