Verification of C Programs Via Natural Semantics and Abstract Interpretation