Program graphs, an algebra, and their implication for programming | Synapse