since the prolog chat isn't active i'll post this here. i stumbled upon a comment by the maintainer of clpfd/clpz
> Le Graal de propagation, if we can call it that, will consist in finding a way to generate these propagation rules automatically, ideally starting from a declarative definition of what we mean by "exponentiation" (in this case). Currently, they are only implemented manually, by painstakingly considering the different cases. -- https://github.com/SWI-Prolog/swipl-devel/issues/167#issuecomment-316996913
> Le Graal de propagation, if we can call it that, will consist in finding a way to generate these propagation rules automatically, ideally starting from a declarative definition of what we mean by "exponentiation" (in this case). Currently, they are only implemented manually, by painstakingly considering the different cases. -- https://github.com/SWI-Prolog/swipl-devel/issues/167#issuecomment-316996913