Documentation

LeanPool.GoemansFlow.Counterexample

A counterexample to Goemans' cost conjecture #

Jason Hickey directed Claude's formal verification of Dmitry Rybin's counterexample, discovered with GPT-5.6 Pro. Upstream also acknowledges Katherine Schlitz. Adapted from jyh/dinitz-verify, commit ffba3523f0edd14be3460d039f22a6b98c02fd9e.

The splittable flow costs 58; every unsplittable routing satisfying the additive maximum-demand capacity bound costs at least 60, and this lower bound is attained. Generic coefficient transfer gives refutations over all linearly ordered commutative rings.

1. The counterexample instance #

The seven vertices.

Instances For
    @[instance_reducible]
    Equations
    @[instance_reducible]
    Equations
    • One or more equations did not get rendered due to their size.

    The nine arcs.

    Instances For
      @[instance_reducible]
      Equations
      Equations
      Instances For
        @[instance_reducible]
        Equations
        • One or more equations did not get rendered due to their size.

        Demand of commodity i.

        Equations
        Instances For

          d_max, the largest demand.

          Equations
          Instances For

            The instance is a simple digraph: no two arcs share both endpoints.

            The instance has no self-loops.

            theorem GoemansFlow.flow_feasible (z : Vertex) :
            z ≠ Vertex.s → ((∑ a : Arc, if head a = z then fractionalFlow a else 0) - ∑ a : Arc, if tail a = z then fractionalFlow a else 0) = ∑ i : Fin 3, if terminal i = z then demand i else 0

            Flow conservation at every vertex other than the source: inflow − outflow = demand absorbed there (which is 0 at non-terminals).

            Flow conservation at the source: net outflow = total demand.

            2. Loads and costs #

            A routing: one walk from s to t_i per commodity i.

            Equations
            Instances For

              Capacity-good: every arc load stays within x(a) + d_max.

              Equations
              Instances For

                The cost of the fractional flow.

                3. Path completeness: the digraph has exactly six s-t_i walks #

                All nine arcs, in the order used for walk enumeration.

                Equations
                • One or more equations did not get rendered due to their size.
                Instances For
                  theorem GoemansFlow.mem_outOf {e : Arc} {x : Vertex} (h : tail e = x) :

                  All walks of length at most n starting at x, paired with their endpoint.

                  Equations
                  Instances For
                    theorem GoemansFlow.walksFrom_complete (n : ℕ) (x : Vertex) (l : List Arc) (y : Vertex) :
                    l.length ≤ n → IsWalk tail head x l y → (l, y) ∈ walksFrom n x
                    theorem GoemansFlow.walk_len (x : Vertex) (l : List Arc) (y : Vertex) :
                    IsWalk tail head x l y → l.length + rank x ≤ rank y

                    Path completeness. For each commodity i, the arc-lists forming a walk from the source s to the terminal t_i are exactly the two listed paths. This is derived from the arc list — via the enumeration walksFrom together with the topological rank bounding every walk by 4 arcs — and not assumed.

                    theorem GoemansFlow.routing_paths_nodup (p : Fin 3 → List Arc) (h : IsRouting p) (i : Fin 3) :
                    (p i).Nodup

                    Every routing in the counterexample uses arc-simple paths.

                    theorem GoemansFlow.routing_load_eq_sum (p : Fin 3 → List Arc) (h : IsRouting p) (a : Arc) :
                    unsplittableLoad demand p a = ∑ i : Fin 3, if a ∈ p i then demand i else 0

                    The traversal-counting load agrees with upstream's membership formula on every routing.

                    The vertex sequence visited by a walk.

                    Equations
                    Instances For

                      4. Layer A: the eight-case check and the cost lower bound #

                      def GoemansFlow.loadThree (q0 q1 q2 : List Arc) (a : Arc) :

                      The load written as a function of the three chosen paths.

                      Equations
                      Instances For

                        Routing cost expressed in terms of the three chosen paths.

                        Equations
                        Instances For
                          theorem GoemansFlow.unsplittableLoad_eq (p : Fin 3 → List Arc) (a : Arc) :
                          unsplittableLoad demand p a = loadThree (p 0) (p 1) (p 2) a
                          theorem GoemansFlow.routingCost_eq (p : Fin 3 → List Arc) :
                          routingCost p = routingCostThree (p 0) (p 1) (p 2)

                          The eight-case kernel check. Over the eight combinations of path choices, every capacity-good one costs at least 60.

                          Layer A (main). Every unsplittable routing of the three demands along arbitrary walks out of s whose arc loads stay within x(a) + d_max costs at least 60 — strictly more than the fractional cost 58.

                          Non-vacuity and tightness #

                          Route every commodity on its "expensive" path.

                          Equations
                          Instances For

                            Route t1, t2 expensively and t3 on the zero-cost path: cost exactly 60.

                            Equations
                            Instances For

                              Positive control. The instance does satisfy the conclusion of DGG Theorem 1.2 (the capacity clause (i) on its own): an unsplittable routing with flow_P(a) ≤ x(a) + d_max for every arc a exists. So the refutation isolates clause (ii), the cost clause — it is not an artifact of an unsatisfiable capacity requirement.

                              Route every commodity on its zero-cost path.

                              Equations
                              Instances For

                                Positive control for the other clause. Clause (ii) of Conjecture 1.3 -- the cost clause -- is also satisfiable on its own here: the all-Z routing costs 0 ≤ 58 = c^T x. So neither clause is individually unsatisfiable at this instance; only their conjunction fails, which is what makes the instance a counterexample to Conjecture 1.3 rather than to either half of it.

                                No conflict with the primary source's planar theorems. Planarity is not formalized here. The instance satisfies the numerical conclusion of the planar result in arXiv:2308.02651. Theorem 1.8 of that paper grants a two-sided violation of 2·d_max together with the cost bound, and its conclusion is satisfied here: the all-Z routing keeps every arc load within 2·d_max = 30 of x on both sides and costs 0 ≤ 58. The counterexample therefore refutes the d_max grade only, exactly as Conjecture 1.3 states it.

                                theorem GoemansFlow.optimum_is_sixty :
                                (∀ (p : Fin 3 → List Arc), IsRouting p → CapacityGood p → 60 ≤ routingCost p) ∧ ∃ (p : Fin 3 → List Arc), IsRouting p ∧ CapacityGood p ∧ routingCost p = 60

                                60 is exactly the optimum: it is a lower bound and it is attained.

                                5. Layer B: the conjecture, and its refutation #

                                Goemans' cost conjecture (Dinitz–Garg–Goemans / SSUF), Conjecture 1.3 of arXiv:2308.02651, stated over a linearly ordered commutative ring R.

                                Read: for every finite digraph (W, E) with arc endpoints tail, head, every source src, every finite family of commodities K with distinct terminals term k ≠ src and positive demands d k, every dmax equal to the maximum demand, every nonnegative cost vector c and every nonnegative feasible single-source flow x routing the demands, there is an unsplittable routing P (one walk per commodity) with

                                • flow_P(a) ≤ x(a) + dmax for every arc a, and
                                • c^T flow_P ≤ c^T x.

                                This form ranges over arbitrary directed graphs and omits capacities. The refutation of GoemansCostConjectureFull also supplies a simple, loopless, acyclic instance with explicit capacities, avoiding dependence on these differences from the source.

                                Equations
                                • One or more equations did not get rendered due to their size.
                                Instances For

                                  The Full form is the weaker Prop. It is GoemansCostConjecture with four hypotheses added (simple, loopless, acyclic, x ≤ u), so the bare conjecture implies it. Hence ¬ GoemansCostConjectureFull is the stronger statement, and it implies ¬ GoemansCostConjecture.

                                  If the conjecture held over R, it would hold over ℤ (an integral instance is an R-instance, and the conclusion pulls back along the order embedding ℤ ↪ R).

                                  The same transfer for the literature-faithful form: if the Full conjecture held over R, it would hold over ℤ. The four extra hypotheses (simple, loopless, acyclic, x ≤ u) transfer verbatim -- the first three do not mention the ring at all, and x ≤ u pushes forward along the order embedding ℤ ↪ R.

                                  Layer B (main), literature-faithful form, over ℤ. The counterexample instance discharges every hypothesis of GoemansCostConjectureFull: it is simple (arcs_simple), loopless (no_self_loops), acyclic (⟨rank, rank_arc⟩), and takes u := x (the worst case the primary source identifies), so x ≤ u holds by reflexivity.

                                  Layer B (main), literature-faithful form, general coefficient ring. Goemans' cost conjecture -- capacities restored, digraph simple, loopless and acyclic -- is false over every linearly ordered commutative ring.

                                  The literature-faithful form over ℚ, the setting of Conjecture 1.3.

                                  THE HEADLINE. Goemans' cost conjecture for single-source unsplittable flow (Conjecture 1.3 of arXiv:2308.02651, the cost version of the Dinitz–Garg–Goemans theorem) is false over ℚ, in the form that keeps every piece of the literature's data: arc capacities u with x ≤ u, and a simple, loopless, acyclic digraph.

                                  dgg_cost_conjecture_false below is the same refutation for the bare form GoemansCostConjecture and is kept as the searchable alias.

                                  Layer B, bare form. Goemans' cost conjecture is false over ℤ.

                                  Layer B, bare form, general coefficient ring. Goemans' cost conjecture is false over every linearly ordered commutative ring — in particular over ℚ, the setting of Conjecture 1.3 of arXiv:2308.02651, and over ℝ.

                                  The bare form over ℚ; the searchable alias of the headline goemans_cost_conjecture_false. (It also follows from the headline without re-running the instance, via GoemansCostConjectureFull_of_GoemansCostConjecture — see dgg_cost_conjecture_false_of_headline — since the Full form is the weaker Prop.)

                                  The headline implies the bare-form refutation, with no second appeal to the instance: the Full form is the weaker Prop, so refuting it refutes the bare one.