@MichaelHong : I am not sure whether this helps you, but I think the description of the right adjoint you cited is slightly incomplete (this is related to the confusion I had when we first defined \\(f_{\ast}\\) ): \\(f_{\ast}(A)\\) does not just give you "all the buckets that only contain balls from A", but also all the buckets that never get any ball from \\(X\\).

The description of the left adjoint seems right to me - and it definitely does not say the same thing as the one for the right adjoint:

1) it includes buckets (i.e., points of \\(Y\\) ) that receive balls from both \\(A\\) and \\(X-A\\) and which would thus be excluded from \\(f_{\ast}(A)\\) (this bites only if \\(f\\) is not injective);

2) conversely, according to my description, \\(f_{\ast}(A)\\) includes buckets outside the range of \\(f\\) which are instead excluded by \\(f_{!}\\) (this bites only if \\(f\\) is not surjective).

3) If \\(f\\) is both injective and surjective, then the two adjoints coincide with the inverse \\(f^{-1}\\) of \\(f\\).

The description of the left adjoint seems right to me - and it definitely does not say the same thing as the one for the right adjoint:

1) it includes buckets (i.e., points of \\(Y\\) ) that receive balls from both \\(A\\) and \\(X-A\\) and which would thus be excluded from \\(f_{\ast}(A)\\) (this bites only if \\(f\\) is not injective);

2) conversely, according to my description, \\(f_{\ast}(A)\\) includes buckets outside the range of \\(f\\) which are instead excluded by \\(f_{!}\\) (this bites only if \\(f\\) is not surjective).

3) If \\(f\\) is both injective and surjective, then the two adjoints coincide with the inverse \\(f^{-1}\\) of \\(f\\).