<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def proximal_convex_conj(prox_factory):
 r"""Calculate the proximal of the dual using Moreau decomposition. Parameters prox_factory : callable A factory function that, when called with a step size, returns the proximal operator of ``F`` Returns ------- prox_factory : function Factory for the proximal operator to be initialized Notes ----- The Moreau identity states that for any convex function :math:`F` with convex conjugate :math:`F^*`, the proximals satisfy .. math:: \mathrm{prox}_{\sigma F^*}(x) +\sigma \, \mathrm{prox}_{F / \sigma}(x / \sigma) = x where :math:`\sigma` is a scalar step size. Using this, the proximal of the convex conjugate is given by .. math:: \mathrm{prox}_{\sigma F^*}(x) = x - \sigma \, \mathrm{prox}_{F / \sigma}(x / \sigma) Note that since :math:`(F^*)^* = F`, this can be used to get the proximal of the original function from the proximal of the convex conjugate. For reference on the Moreau identity, see [CP2011c]. References [CP2011c] Combettes, P L, and Pesquet, J-C. *Proximal splitting methods in signal processing.* In: Bauschke, H H, Burachik, R S, Combettes, P L, Elser, V, Luke, D R, and Wolkowicz, H. Fixed-point algorithms for inverse problems in science and engineering, Springer, 2011. """

    def convex_conj_prox_factory(sigma):
        """Create proximal for the dual with a given sigma.

        Parameters
        ----------
        sigma : positive float or array-like
            Step size parameter. Can be a pointwise positive space element or
            a sequence of positive floats if `prox_factory` supports that.

        Returns
        -------
        proximal : `Operator`
            The proximal operator of ``s * F^*`` where ``s`` is the step size
        """

        # Get the underlying space. At the same time, check if the given
        # prox_factory accepts stepsize objects of the type given by sigma.
        space = prox_factory(sigma).domain

        mult_inner = MultiplyOperator(1.0 / sigma, domain=space, range=space)
        mult_outer = MultiplyOperator(sigma, domain=space, range=space)
        result = (IdentityOperator(space) -
                  mult_outer * prox_factory(1.0 / sigma) * mult_inner)
        return result

    return convex_conj_prox_factory