The tools you are referring to are commonly called presolvers.
Resources (Implementation) / Availability
Every optimization software makes use of those (to improve performance, but also numerical-stability). This includes commercial solvers, as well as non-commercial ones.
Most implementations, if not all are embedded into the solver framework. The sole exception known to me would be:
- papilo: Parallel Presolve for Integer and Linear Optimization (LP + MILP)
Embedded candidates to look at:
- SCIP (LP + MILP + ?MINLP?)
- HiGHS (LP + MILP)
- CoinOR Clp (LP)
- (somewhere in CoinOR Cbc or related libs would be MILP presolving too)
Even if embedded, most most solvers allow to do the presolving step in an isolated step without automatically triggering follow-up solving (if the user wants it).
There are high-quality resources on this topic.
Andersen, Erling D., and Knud D. Andersen. "Presolving in linear programming." Mathematical Programming 71 (1995): 221-245.
In this context, presolving is usually much more important and much more powerful (imho).
Achterberg, Tobias, et al. "Presolve reductions in mixed integer programming." INFORMS Journal on Computing 32.2 (2020): 473-506.
Gamrath, Gerald, et al. "Progress in presolving for mixed integer programming." Mathematical Programming Computation 7 (2015): 367-398.