Reusing constraint proofs in program analysis