hod used to identify and remove redundant rows from the
    equality constraint matrix after presolve.
tol : float
    The tolerance which determines when a solution is "close enough" to
    zero in Phase 1 to be considered a basic feasible solution or close
    enough to positive to serve as an optimal solution.

Returns
-------
lp : A `scipy.optimize._linprog_util._LPProblem` consisting of the following fields:

    c : 1D array
        The coefficients of the linear objective function to be minimized.
    A_ub : 2D array, optional
        The inequality constraint matrix. Each row of ``A_ub`` specifies the
        coefficients of a linear inequality constraint on ``x``.
    b_ub : 1D array, optional
        The inequality constraint vector. Each element represents an
        upper bound on the corresponding value of ``A_ub @ x``.
    A_eq : 2D array, optional
        The equality constraint matrix. Each row of ``A_eq`` specifies the
        coefficients of a linear equality constraint on ``x``.
    b_eq : 1D array, optional
        The equality constraint vector. Each element of ``A_eq @ x`` must equal
        the corresponding element of ``b_eq``.
    bounds : 2D array
        The bounds of ``x``, as ``min`` and ``max`` pairs, possibly tightened.
    x0 : 1D array, optional
        Guess values of the decision variables, which will be refined by
        the optimization algorithm. This argument is currently used only by the
        'revised simplex' method, and can only be used if `x0` represents a
        basic feasible solution.

c0 : 1D array
    Constant term in objective function due to fixed (and eliminated)
    variables.
x : 1D array
    Solution vector (when the solution is trivial and can be determined
    in presolve)
revstack: list of functions
    the functions in the list reverse the operations of _presolve()
    the function signature is x_org = f(x_mod), where x_mod is the result
    of a presolve step and x_org the value at the start of the step
    (currently, the revstack contains only one function)
complete: bool
    Whether the solution is complete (solved or determined to be infeasible
    or unbounded in presolve)
status : int
    An integer representing the exit status of the optimization::

     0 : Optimization terminated successfully
     1 : Iteration limit reached
     2 : Problem appears to be infeasible
     3 : Problem appears to be unbounded
     4 : Serious numerical difficulties encountered

message : str
    A string descriptor of the exit status of the optimization.

References
----------
.. [5] Andersen, Erling D. "Finding all linearly dependent rows in
       large-scale linear programming." Optimization Methods and Software
       6.3 (1995): 219-227.
.. [8] Andersen, Erling D., and Knud D. Andersen. "Presolving in linear
       programming." Mathematical Programming 71.2 (1995): 221-245.

r