Injectivity of the three-paths path parametrisation
ProvedMetricTSP.three_paths_seq_injThe parametrisation of the three-parallel-paths instance by (path, step) is injective away from the hubs. The instance on cities has two hubs (index ) and (index ) joined by three internally disjoint paths of internal cities each; tpSeq k p m is the -th city along path , i.e. for , for , and the internal city with index for .
If the -th city of path coincides with the -th city of path (with and ), then , and moreover either or the common step is a hub step ( or ).
The proof is index arithmetic: the internal index lies strictly between and and determines uniquely by division with remainder, while the hubs occupy the extreme indices. This injectivity underlies the cut analysis of the fractional certificate in the integrality-gap construction (MetricTSP.three_paths_cert_feasible).
import Mathlib import Definitions.Def_MetricTSP_model import Definitions.Def_MetricTSP_three_paths
namespace MetricTSP
/-- The `m`-th city along path `p` of the three-paths instance: the hub `s` at
`m = 0`, the hub `t` at `m = k+1`, and the internal cities in between. -/
def tpSeq (k p m : ℕ) : Fin (3*k+2) :=
if m = 0 then ⟨0, by omega⟩
else if m = k+1 then ⟨3*k+1, by omega⟩
else ⟨(1 + p*k + (m-1)) % (3*k+2), Nat.mod_lt _ (by omega)⟩
theorem three_paths_seq_inj (k : ℕ) (hk : 1 ≤ k) (p q m m2 : ℕ)
(hp : p < 3) (hq : q < 3) (hm : m ≤ k+1) (hm2 : m2 ≤ k+1)
(h : tpSeq k p m = tpSeq k q m2) :
m = m2 ∧ (p = q ∨ m = 0 ∨ m = k+1) := by sorry
end MetricTSP