moved unGen
simplified proof; promote's spec is trivial