https://1library.org/document/yngj3k1j-another-proof-of-banaschewski-s-surjection-theorem.html