Designing programs that check their work | Synapse