'Reduces the atom to an affine expression and list of constraints.
Parameters
arg_objs : list
LinExpr for each argument.
size : tuple
The size of the resulting expression.
data :
Additional data required by the atom.
Returns
tuple
(LinOp for objective, list of constraints)'

@staticmethod
def graph_implementation(arg_objs, size, data=None):

    x = arg_objs[0]
    t = lu.create_var(size)
    (obj0, constr0) = exp.graph_implementation([lu.neg_expr(t)], size)
    (obj1, constr1) = exp.graph_implementation([lu.sub_expr(x, t)], size)
    lhs = lu.sum_expr([obj0, obj1])
    ones = lu.create_const(np.mat(np.ones(size)), size)
    constr = ((constr0 + constr1) + [lu.create_leq(lhs, ones)])
    return (t, constr)
