Partial (In)Completeness in Abstract Interpretation: Limiting the Imprecision in Program Analysis