diff --git a/cpmpy/transformations/decompose_global.py b/cpmpy/transformations/decompose_global.py index 4e89ae07b..7548aede1 100644 --- a/cpmpy/transformations/decompose_global.py +++ b/cpmpy/transformations/decompose_global.py @@ -47,8 +47,9 @@ def decompose_in_tree(lst_of_expr, supported=set(), supported_reified=set(), _to continue elif isinstance(expr, Operator): - expr, base_con = normalized_numexpr(expr) - _toplevel.extend(base_con) # should be added toplevel + if any(isinstance(a,GlobalFunction) for a in expr.args): + expr, base_con = normalized_numexpr(expr) + _toplevel.extend(base_con) # should be added toplevel # recurse into arguments, recreate through constructor (we know it stores no other state) args = decompose_in_tree(expr.args, supported, supported_reified, _toplevel, nested=True) newlist.append(Operator(expr.name, args))