Learning Symbolic Invariants