Program verification using templates over predicate abstraction | Synapse