Simplex Redundancy Checker
A linear-programming–backed redundancy checker built on Hipparchus's SimplexSolver. A half-space a · x <= b is redundant with respect to a set of other half-spaces exactly when the largest value of a · x over the region defined by the others does not exceed b. This checker therefore solves the LP max a · x s.t. others and declares the target redundant when the optimum is <= b (within tolerance):
bounded optimum
<= b⇒ every feasible point already satisfies the target ⇒ redundant;bounded optimum
> b⇒ some feasible point violates the target ⇒ not redundant;unbounded (the others do not bound
a · xfrom above) ⇒ the target can be violated arbitrarily ⇒ not redundant;infeasible others (their intersection is empty) ⇒ the target is vacuously satisfied by every feasible point ⇒ redundant.
Decision variables are treated as free (they may be negative), since the polytope half-spaces are expressed in the problem's natural coordinates, which can include negative values. The semantics match BruteForceRedundancyChecker (Fourier–Motzkin) on the supplied half-space set; this LP-based variant is the recommended choice in higher dimensions, where Fourier–Motzkin elimination can blow up. On any unexpected solver state the checker delegates to a BruteForceRedundancyChecker so a decision is always returned.
This is the LP upgrade described in the ISC implementation plan; it requires the hipparchus-optim dependency.
Parameters
the slack used when comparing the LP optimum to the bound; defaults to HalfSpace.defaultTolerance
the simplex iteration cap; must be at least 1