In the current implementation we cannot use both addons and functional form constraints in the same model.
The reason is because functional form constraints delay (1, 2) actual product of messages and execute an approximation method later.
The addons feature on the other hand assumes a product of messages to be available immediately.
Things are a bit even more complicated because sometimes the product is not delayed and actually executed in-place. If we have an analytical solution to a product of messages we execute it and check later if the result is compatible with the specified functional form constraint. This is done for performance and common sense reasons, but this behaviour can be controlled via FormConstraintCheckEach or FormConstraintCheckLast .
In the current implementation we cannot use both addons and functional form constraints in the same model.
The reason is because functional form constraints delay (1, 2) actual product of messages and execute an approximation method later.
The addons feature on the other hand assumes a product of messages to be available immediately.
Things are a bit even more complicated because sometimes the product is not delayed and actually executed in-place. If we have an analytical solution to a product of messages we execute it and check later if the result is compatible with the specified functional form constraint. This is done for performance and common sense reasons, but this behaviour can be controlled via
FormConstraintCheckEachorFormConstraintCheckLast.