Software abstractions: logic, language and analysis | Synapse