predicate geas_cumulative_var(array[int] of var int: s,
  array[int] of var int: d,
  array[int] of var int: r,
  var int: b);
predicate geas_cumulative(array[int] of var int: s,
  array[int] of int: d,
  array[int] of int: r,
  int: b);


predicate fzn_cumulative(array[int] of var int: s,
  array[int] of var int: d,
  array[int] of var int: r,
  var int: b) =
    geas_cumulative_var(s, d, r, b);

%% TODO: once disjunctive propagator is fixed, add
%% special case for b = 1.
predicate fzn_cumulative(array[int] of var int: s,
  array[int] of int: d,
  array[int] of int: r,
  int: b) =
    geas_cumulative(s, d, r, b);
