description: the propagate function takes an initial superposition and an operator, and applies it repeatedly. examples: see also: TODO: work out what this is trying to do!!