To aid individuals coming from Source 3, the docs should mention that amb is not intended to behave like ordinary Source functions.
Specifically, when we evaluate amb(alpha(), bravo()), the call is not evaluated "inside out".
The expression bravo() will only be evaluated upon backtracking.
Moreover, amb cannot be passed around as a value.