<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:

def _aggregation_op(cls,
            op: Callable[[tf.Tensor, Optional[Sequence[int]]], tf.Tensor],
            x: 'TensorFluent',
            vars_list: List[str]) -> 'TensorFluent':
        '''Returns a TensorFluent for the aggregation `op` applied to fluent `x`.

        Args:
            op: The aggregation operation.
            x: The input fluent.
            vars_list: The list of variables to be aggregated over.

        Returns:
            A TensorFluent wrapping the aggregation operator's output.
        '''
        axis = cls._varslist2axis(x, vars_list)
        t = op(x.tensor, axis)

        scope = []
        for var in x.scope.as_list():
            if var not in vars_list:
                scope.append(var)

        batch = x.batch

        return TensorFluent(t, scope, batch=batch)