using logic and macros to deduce possible functions for arg sets