I've been struggling with discrete_log function. The docs say it is the generic BSGS algorithm that is supposed to work in any group. The function works e.g. if I write
discrete_log(Mod(9, 17), Mod(2, 17), 16, operation='*')
However it keeps returning 0 when I put operation='other', e.g.
discrete_log(9, 2, 16, operation='other', op=lambda x, y: (x * y) % 17)
The op function is not even called once. Is there something that I'm doing wrong or is discrete_log not really generic?