Sound and complete proof rules for almost-sure termination: from probabilistic control-flow graphs to program-level reasoning | Synapse