{
  "id": "kalman",
  "title": "Linear Kalman tracker (constant velocity)",
  "blurb": "A textbook predict\u2192update Kalman filter \u2014 cuts position noise and recovers the unmeasured velocity from position measurements alone.",
  "emit_targets": 32,
  "proofs": [
    {
      "theorem": "kalman2d_cov_predict_psd",
      "claim": "the predicted covariance F\u00b7P\u00b7F\u1d40+Q stays positive-semidefinite",
      "clean": true,
      "trail": "kalman2d_cov_predict_psd.axioms.txt"
    },
    {
      "theorem": "kalman2d_joseph_psd",
      "claim": "the Joseph covariance update preserves PSD for any gain",
      "clean": true,
      "trail": "kalman2d_joseph_psd.axioms.txt"
    }
  ],
  "checks": [
    {
      "quantity": "filter RMS vs measurement RMS",
      "value": "0.525 / 0.934",
      "relation": "ratio",
      "bound": "0.56 < 0.6",
      "holds": true
    },
    {
      "quantity": "recovered velocity (never measured)",
      "value": "0.516",
      "relation": "\u2248",
      "bound": "0.5",
      "holds": true
    },
    {
      "quantity": "max |filter \u2212 NumPy-KF|",
      "value": "1.1e-16",
      "relation": "<",
      "bound": "1e-9",
      "holds": true
    }
  ],
  "silicon": [
    "kalman2d_predict.cov_predict"
  ]
}