Understanding user understanding: determining correctness of generated program invariants | Synapse