Skip to content

Home

Twindex Twindex

Your inverse solver returned a parameter. Twindex proves whether the data could have determined it.

Two very different coefficients give the same measurements

Open In Colab Live demo: could anyone have known R₀ in 1978? Real outbreak data, certified twins, and a "check this proof" button that runs the exact checker in your browser.

Does your PINN have a twin? Train a small PINN, then let Twindex prove that a very different parameter fits the same data. Runs in seconds.

Twindex produces exact, replayable proofs that noisy measurements cannot tell two parameter sets apart, for ODE models and for PDEs in one and two dimensions and in time.

It searches for twins: two different parameter vectors whose true solutions both fit the same noisy data. Each finding is written as a certificate that a small exact checker replays using only the Python standard library and rational arithmetic. A VALID pair certificate proves that no estimator (least squares, Bayesian inference, a physics-informed neural network, anything) can recover the parameter from those data with worst-case error below half the certified gap.

$ pip install twindex
$ twindex example theta500_pair > pair.json
$ twindex check pair.json
pair.json: VALID: both witnesses are data-compatible; D_Q(y) >= 1000, so every estimator of theta_0 has worst-case error >= 500 on these data

What it covers

problem example applications evidence
polynomial ODE systems epidemics (SIR/SEIR), pharmacokinetics, chemical kinetics, ecology, neuron models exact certificates (ODE systems)
1-D boundary value problems coefficient inverse problems, sensor design exact certificates, including two-sided bounds
2-D elliptic, heat equation steady and time-dependent diffusion–reaction exact certificates (2-D, heat)
any Python simulator FEM, finite differences, surrogates numerical audit, labelled as such (any model)

Early-epidemic data cannot determine R₀. From eight infection counts with noise \(10^{-3}\), Twindex proves that SIR parameters with \(R_0 = 2.5\) and \(R_0 \approx 1.72\) both fit every measurement.

Two SIR twins fit every measurement

Why trust it?

  • No floating point in the checker. Every number is an exact Fraction; floats are rejected at every entry point, including JSON decoding.
  • A small trusted core. About 4,400 lines of standard-library Python. The solver and search may use floats freely, because they only propose certificates.
  • Every step is proved. Barrier theorems (PDEs) and a tube theorem (ODEs) turn a rigorously bounded residual into a pointwise error bound on the true solution, with no convergence assumptions. See Theory.
  • Three honest verdicts. VALID (proved), INVALID (malformed or disproved), INCONCLUSIVE (not decided). A failed sufficient condition is never reported as a disproof.

Where to go next