{
 "bundle_of": "C16",
 "schema_version": "0.40",
 "paper": {
  "id": "entrylib:2026.000002",
  "version": 3,
  "title": "Admissibility of lagged state space models through the ARIMA form of the whole model",
  "licence": "CC-BY-4.0",
  "status": "corrected",
  "date": "2026-11-10",
  "status_notice": {
   "date": "2026-11-10",
   "reason_code": "correction",
   "statement": "Limitations L2 and L4 are answered by a planned independent check (new evidence E25): an exact oracle in rational arithmetic with certified root enclosures, written by a new contributor (P5) without the prototype, compared on the models of the planned tests; it agrees with the PBH reference, the cyclotomic cancellation, the step-down test and the bisection on every model it decides, and its four hypotheses are reported as claims C29-C32, one of them inconclusive by its rule. The assumptions C14 (reworded to the band the tests leave out) and C19 are tested by it; claims C1-C5, C10, C11 and C16 carry its checks; claims C3, C4, C16 and C24-C26 relate to the earlier work they extend, supersede or contradict. The lab record (A9) and the results file (A18) are updated to the record's current version. No earlier claim's conclusion or ID changed.",
   "issued_by": "Ivan Svetunkov (ORCID 0000-0001-7826-0281)"
  }
 },
 "claims": [
  {
   "id": "C16",
   "statement": "On [[D21:800 random additive ETS and GUM models in four families]], [[D12:the implementation of the check in smooth (smoothEigensCpp() through smoothEigensR())]] gave the same [[D29:decision]] as [[D10:the numpy prototype]] on every model, a [[D30:largest root modulus]] within the bisection tolerance of it on the models both found inadmissible, and the same modulus and MA polynomial on three consecutive calls with each model.",
   "about": {
    "subject": "D12",
    "relation": "gives the same admissibility decision and largest mode modulus as",
    "object": [
     "D29",
     "D30"
    ],
    "comparator": "D10",
    "conditions": [
     "D21"
    ]
   },
   "type": "methodological",
   "role": "principal",
   "novelty": "no_prior_found",
   "support": [
    {
     "kind": "simulation",
     "evidence": "E13",
     "artefacts": [
      "A5",
      "A8"
     ],
     "results": [
      "E13.T1.r1",
      "E13.T1.r2",
      "E13.T1.r3",
      "E13.T1.r4"
     ]
    }
   ],
   "provenance": "author_stated",
   "hypothesis": {
    "lab_event": "H6",
    "outcome": "supported"
   },
   "planning": "confirmatory",
   "planned_at": "2026-10-22T10:03:01Z",
   "planned_at_anchor": "git_remote",
   "test": {
    "framework": "deterministic",
    "parameters": {
     "seed": 2027,
     "tolerance": 1.1e-06,
     "sample": "800 models, fixed; no interim analysis"
    },
    "quantities": {
     "m1": {
      "variable": "admissibility decisions of the C++ core that differ from the prototype",
      "conditions": {
       "family": "ETS"
      }
     },
     "d1": {
      "variable": "max abs difference of the largest root modulus on inadmissible models, C++ core against prototype",
      "conditions": {
       "family": "ETS"
      }
     },
     "r1": {
      "variable": "max abs difference between three calls of the C++ core on the same model",
      "conditions": {
       "family": "ETS"
      }
     },
     "m2": {
      "variable": "admissibility decisions of the C++ core that differ from the prototype",
      "conditions": {
       "family": "ETS high degree"
      }
     },
     "d2": {
      "variable": "max abs difference of the largest root modulus on inadmissible models, C++ core against prototype",
      "conditions": {
       "family": "ETS high degree"
      }
     },
     "r2": {
      "variable": "max abs difference between three calls of the C++ core on the same model",
      "conditions": {
       "family": "ETS high degree"
      }
     },
     "m3": {
      "variable": "admissibility decisions of the C++ core that differ from the prototype",
      "conditions": {
       "family": "GUM identity"
      }
     },
     "d3": {
      "variable": "max abs difference of the largest root modulus on inadmissible models, C++ core against prototype",
      "conditions": {
       "family": "GUM identity"
      }
     },
     "r3": {
      "variable": "max abs difference between three calls of the C++ core on the same model",
      "conditions": {
       "family": "GUM identity"
      }
     },
     "m4": {
      "variable": "admissibility decisions of the C++ core that differ from the prototype",
      "conditions": {
       "family": "GUM random"
      }
     },
     "d4": {
      "variable": "max abs difference of the largest root modulus on inadmissible models, C++ core against prototype",
      "conditions": {
       "family": "GUM random"
      }
     },
     "r4": {
      "variable": "max abs difference between three calls of the C++ core on the same model",
      "conditions": {
       "family": "GUM random"
      }
     }
    },
    "supported": "m1 == 0 and d1 < 0.0000011 and r1 == 0 and m2 == 0 and d2 < 0.0000011 and r2 == 0 and m3 == 0 and d3 < 0.0000011 and r3 == 0 and m4 == 0 and d4 < 0.0000011 and r4 == 0",
    "not_supported": "m1 > 0 or d1 >= 0.0000011 or r1 > 0 or m2 > 0 or d2 >= 0.0000011 or r2 > 0 or m3 > 0 or d3 >= 0.0000011 or r3 > 0 or m4 > 0 or d4 >= 0.0000011 or r4 > 0",
    "verdict": "computed",
    "runs": 1,
    "lab_plan": "PL6"
   },
   "scope": {
    "population": "pure additive lagged SSOE models",
    "conditions": [
     "additive ETS: level; no, additive or damped trend; 0 to 2 seasonal lags from {4, 7, 12, 24, 52}; optional constant; some persistence fixed at 0",
     "additive ETS with 0 to 2 seasonal lags from {24, 168, 365}",
     "GUM with F = I and lags from {1, 4, 12}",
     "GUM with random F and lags from {1, 4, 12, 24}",
     "R 4.3.3, -O0 build of pkgload"
    ],
    "excludes": [
     "ARIMA components",
     "CES",
     "adaptive regressors",
     "multiplicative models",
     "seasonal harmonics with non-integer periods (TBATS)"
    ]
   },
   "depends_on": [
    "C3",
    "C4",
    "C18",
    "C20"
   ],
   "assumptions": [
    "C19"
   ],
   "limitations": [
    "L2",
    "L3",
    "L4",
    "L8"
   ],
   "assessments": [
    {
     "by": "author",
     "strength": "moderate",
     "rationale": "A planned test on 800 seeded models with exact agreement of the decisions, against a prototype written by the same agent."
    }
   ],
   "checks": [
    {
     "by": "P3",
     "outcome": "confirmed",
     "extent": "full",
     "notes": "cpp_check.py --seed 2027 --n 200 reproduced E13 to the last digit (0 mismatches; 9.4885e-7, 9.5266e-7, 9.4058e-7, 9.4854e-7; three-call differences 0); smoothEigensR() wraps the polynomial check of eigenCalc.h; 720 more ETS models sharing F in groups of 12 gave 0 mismatches. Noted that 9.5e-7 is the bisection resolution and that the three calls cover the modulus and the MA polynomial only; the statement was reworded."
    },
    {
     "by": "P5",
     "outcome": "confirmed",
     "extent": "partial",
     "notes": "The prototype's side only (the C++ values were not stored): the exact oracle of P5 (E25) decides the 800 models as the prototype does, the 3 within 6.9e-9 of 1 included, moduli within 5.2e-10 on the 292 inadmissible ones (E25.T1.r4, E25.T4.r2)."
    }
   ],
   "relations": [
    {
     "type": "supersedes",
     "reference": "B3",
     "locator": "smoothEigensCpp(), smooth 4.6.0",
     "self": true,
     "note": "smooth 4.6.0 decides admissibility from the eigenvalues of the per-lag discount matrices, one block per lag."
    }
   ],
   "verifiability": "open",
   "verifiability_flags": []
  },
  {
   "id": "C3",
   "statement": "On [[D19:500 random additive ETS and GUM models]], the [[D29:admissibility decision]] from [[D10:the roots of the MA polynomial after cyclotomic cancellation]] differed from the [[D5:PBH reference]] on 0 models, and on the 172 models that both found inadmissible the [[D30:largest mode modulus]] differed from the reference by at most 4.4e-13.",
   "about": {
    "subject": "D10",
    "relation": "gives the same admissibility decision and largest mode modulus as",
    "object": [
     "D29",
     "D30"
    ],
    "comparator": "D5",
    "conditions": [
     "D19"
    ]
   },
   "type": "methodological",
   "role": "principal",
   "novelty": "no_prior_found",
   "support": [
    {
     "kind": "simulation",
     "evidence": "E3",
     "artefacts": [
      "A1",
      "A3"
     ],
     "results": [
      "E3.R1",
      "E3.R2"
     ]
    }
   ],
   "provenance": "author_stated",
   "hypothesis": {
    "lab_event": "H3",
    "outcome": "supported"
   },
   "planning": "confirmatory",
   "planned_at": "2026-10-21T15:21:36Z",
   "planned_at_anchor": "git_remote",
   "test": {
    "framework": "deterministic",
    "parameters": {
     "seed": 2026,
     "edge_band": 1e-08,
     "pbh_tolerance": 1e-07,
     "cancellation_tolerance": 1e-09,
     "sample": "500 models, fixed; no interim analysis"
    },
    "quantities": {
     "mism": {
      "variable": "admissibility decisions that differ from the PBH reference"
     },
     "diff": {
      "variable": "max abs difference of max |lambda| from the PBH reference, inadmissible models"
     }
    },
    "supported": "mism == 0 and diff < 0.000001",
    "not_supported": "mism > 0 or diff >= 0.000001",
    "verdict": "computed",
    "runs": 1,
    "lab_plan": "PL3"
   },
   "scope": {
    "population": "pure additive lagged SSOE models",
    "conditions": [
     "additive ETS: level; no, additive or damped trend; 0 to 2 seasonal lags from {4, 7, 12, 24, 52}; optional constant; some persistence fixed at 0",
     "GUM with F = I and lags from {1, 4, 12}",
     "GUM with random F and lags from {1, 4, 12, 24}",
     "numpy prototype",
     "models within 1e-8 of the unit circle excluded (none occurred)"
    ],
    "excludes": [
     "ARIMA components",
     "CES",
     "adaptive regressors",
     "multiplicative models",
     "seasonal harmonics with non-integer periods (TBATS)",
     "the largest mode modulus of admissible models, where a common factor that is not cyclotomic can remain in the cancelled MA polynomial",
     "an eigenvalue of modulus above 1 shared by a reachable and observable mode and an unreachable or unobservable one"
    ]
   },
   "depends_on": [
    "C6",
    "C8",
    "C17"
   ],
   "assumptions": [
    "C14"
   ],
   "limitations": [
    "L2",
    "L3"
   ],
   "assessments": [
    {
     "by": "author",
     "strength": "moderate",
     "rationale": "A planned test on 500 seeded models with exact agreement, against a reference written by the same agent with the same numerical libraries."
    }
   ],
   "checks": [
    {
     "by": "P3",
     "outcome": "confirmed",
     "extent": "full",
     "notes": "0 mismatches, 172 inadmissible models, max difference 4.39648e-13 reproduced; D6 implemented as defined; seeds 1-5 with n = 400 (1000 models each) also gave 0 mismatches and maximum differences from 2.4e-13 to 5.3e-12."
    },
    {
     "by": "P5",
     "outcome": "confirmed",
     "extent": "full",
     "notes": "Exact oracle of P5 (E25) on the 500 models: the PBH reference and the cancellation decide every model as the oracle does, moduli within 4.7e-15 and 4.4e-13 on the 172 inadmissible models, cancelled degrees equal (E25.T1.r2)."
    }
   ],
   "relations": [
    {
     "type": "extends",
     "reference": "B1",
     "locator": "Chapter 11",
     "self": false,
     "note": "Hyndman, Koehler, Ord and Snyder relate the reduced forms of linear innovations state space models to ARIMA models."
    }
   ],
   "verifiability": "open",
   "verifiability_flags": []
  },
  {
   "id": "C4",
   "statement": "On [[D20:575 random additive ETS and GUM models]], including ETS models with up to two seasonal lags from {24, 168, 365} whose generator allows MA polynomial degrees up to 536, the [[D7:step-down test]] on the MA polynomial after [[D6:cyclotomic cancellation]] gave an [[D29:admissibility decision]] different from [[D15:the roots of that polynomial]] on 0 models.",
   "about": {
    "subject": "D7",
    "relation": "gives the same admissibility decision as",
    "object": [
     "D29"
    ],
    "comparator": "D15",
    "conditions": [
     "D20"
    ]
   },
   "type": "methodological",
   "role": "principal",
   "novelty": "no_prior_found",
   "support": [
    {
     "kind": "simulation",
     "evidence": "E4",
     "artefacts": [
      "A1",
      "A3"
     ],
     "results": [
      "E4.R1",
      "E4.R3"
     ]
    },
    {
     "kind": "cited",
     "reference": "B2"
    }
   ],
   "provenance": "author_stated",
   "hypothesis": {
    "lab_event": "H4",
    "outcome": "supported"
   },
   "planning": "confirmatory_with_deviations",
   "planned_at": "2026-10-21T15:21:39Z",
   "planned_at_anchor": "git_remote",
   "test": {
    "framework": "deterministic",
    "parameters": {
     "seed": 2026,
     "edge_band": 1e-08,
     "pbh_tolerance": 1e-07,
     "cancellation_tolerance": 1e-09,
     "sample": "575 models, fixed; no interim analysis"
    },
    "quantities": {
     "mism": {
      "variable": "step-down decisions that differ from the decision by the roots"
     }
    },
    "supported": "mism == 0",
    "not_supported": "mism > 0",
    "verdict": "computed",
    "runs": 1,
    "lab_plan": "PL4"
   },
   "limitations": [
    "L3",
    "L4",
    "L5",
    "L8"
   ],
   "scope": {
    "population": "pure additive lagged SSOE models",
    "conditions": [
     "additive ETS: level; no, additive or damped trend; 0 to 2 seasonal lags from {4, 7, 12, 24, 52}; optional constant; some persistence fixed at 0",
     "GUM with F = I and lags from {1, 4, 12}",
     "GUM with random F and lags from {1, 4, 12, 24}",
     "additive ETS with up to two seasonal lags from {24, 168, 365}",
     "GUM with random F and lags (1, 24, 168)",
     "numpy prototype"
    ],
    "excludes": [
     "ARIMA components",
     "CES",
     "adaptive regressors",
     "multiplicative models",
     "seasonal harmonics with non-integer periods (TBATS)"
    ]
   },
   "depends_on": [
    "C3"
   ],
   "assessments": [
    {
     "by": "author",
     "strength": "moderate",
     "rationale": "A planned test on 575 seeded models with exact agreement; the reference roots at high degree were not checked by a second method."
    }
   ],
   "checks": [
    {
     "by": "P3",
     "outcome": "disputed",
     "extent": "partial",
     "notes": "On the earlier statement 'MA polynomials of degree up to 366': 0 step-down mismatches on 575 models reproduced, but the statement's description 'degree up to 366' was false: instrumented runs reached degree 535 before cancellation and 533 after.",
     "resolution": "The statement was reworded to the generator's bound of 536, the departure from the plan's text was recorded as a deviation (limitation L5), and the recheck confirmed the reworded statement."
    },
    {
     "by": "P3",
     "outcome": "confirmed",
     "extent": "partial",
     "notes": "0 mismatches on 575 models reproduced; the bound of 536 holds by construction (1 + 1 + 168 + 365 + 1), with 535 measured before cancellation and 533 after, but no recorded result holds the realised degree."
    },
    {
     "by": "P5",
     "outcome": "confirmed",
     "extent": "full",
     "notes": "Exact oracle of P5 (E25) on the 575 models: the step-down decisions and the decisions from numpy's roots equal the certified decisions on every model, MA degree up to 533 after cancellation (E25.T1.r3, E25.T2)."
    }
   ],
   "assumptions": [
    "C19"
   ],
   "relations": [
    {
     "type": "extends",
     "reference": "B2",
     "self": false,
     "note": "Barndorff-Nielsen and Schou parametrise stationary autoregressions by their partial autocorrelations, which all lie in (-1, 1) exactly when every root of the autoregressive polynomial lies outside the unit circle."
    }
   ],
   "verifiability": "open",
   "verifiability_flags": []
  },
  {
   "id": "C6",
   "statement": "For a [[D1:lagged SSOE model]], ignoring the initial states, $$\\det(I - D L(B))\\, \\epsilon_t = \\det(I - F L(B))\\, y_t,$$ so the model has the ARIMA form with AR polynomial $\\phi(B) = \\det(I - F L(B))$ and MA polynomial $\\theta(B) = \\det(I - D L(B))$.",
   "about": {
    "subject": "D1",
    "relation": "has the ARIMA form with",
    "object": "AR polynomial det(I - F L(B)) and MA polynomial det(I - D L(B))",
    "comparator": null,
    "conditions": [
     "initial states ignored"
    ]
   },
   "type": "formal",
   "role": "supporting",
   "novelty": "extension",
   "support": [
    {
     "kind": "formal_proof",
     "evidence": "E6"
    },
    {
     "kind": "consensus"
    },
    {
     "kind": "simulation",
     "evidence": "E10",
     "artefacts": [
      "A1",
      "A2"
     ]
    }
   ],
   "scope": {
    "population": "pure additive lagged SSOE models",
    "conditions": [
     "identity of lag-operator polynomials, initial states ignored"
    ]
   },
   "relations": [
    {
     "type": "extends",
     "reference": "B1",
     "locator": "Chapter 11",
     "self": false,
     "note": "Hyndman, Koehler, Ord and Snyder relate the reduced forms of linear innovations state space models to ARIMA models."
    }
   ],
   "verification": "agent_checked",
   "checks": [
    {
     "by": "P3",
     "outcome": "confirmed",
     "extent": "full",
     "notes": "Steps S1-S7 of E6 re-derived; simulated residual of the identity on 40 random GUMs at late t at most 1.7e-15 relative; the identity holds after start-up (initial states ignored), which was then in the scope only and is now in the statement."
    },
    {
     "by": "P3",
     "outcome": "confirmed",
     "extent": "full",
     "notes": "The statement now carries the condition on initial states."
    }
   ],
   "verifiability": "open",
   "verifiability_flags": []
  },
  {
   "id": "C8",
   "statement": "An eigenvalue $\\lambda \\neq 0$ of the expanded transition matrix $\\tilde F$ with an eigenvector unobservable through $\\tilde w$ or a left eigenvector unreachable from $\\tilde g$ is an eigenvalue of the [[D2:expanded discount matrix]], and $1/\\lambda$ is a common root of $\\phi(B) = \\det(I - F L(B))$ and $\\theta(B) = \\det(I - D L(B))$.",
   "about": {
    "subject": "a nonzero eigenvalue of the expanded transition matrix that is unobservable or unreachable",
    "relation": "is an eigenvalue of",
    "object": "D2",
    "comparator": null,
    "conditions": []
   },
   "type": "formal",
   "role": "supporting",
   "novelty": "no_prior_found",
   "support": [
    {
     "kind": "formal_proof",
     "evidence": "E8"
    }
   ],
   "scope": {
    "population": "pure additive lagged SSOE models"
   },
   "depends_on": [
    "C15"
   ],
   "verification": "agent_checked",
   "checks": [
    {
     "by": "P3",
     "outcome": "confirmed",
     "extent": "full",
     "notes": "Steps re-derived and checked on 5 random GUMs with a constructed unobservable mode (residuals about 1e-14). Noted that step S3 rested on the general identity of the expansion rather than on C7; the dependency now points to C15."
    },
    {
     "by": "P3",
     "outcome": "confirmed",
     "extent": "full",
     "notes": "E8.S3 now cites C15 in its lambda != 0 form; S4 follows with M = F and M = D."
    }
   ],
   "verifiability": "open",
   "verifiability_flags": []
  },
  {
   "id": "C14",
   "statement": "The [[D5:PBH reference]] with relative rank tolerance 1e-7 classifies every eigenvalue of modulus at least 1 of the [[D2:expanded discount matrix]] of the tested models correctly as both reachable and observable or not, outside the band of 1e-8 around the unit circle that the tests leave out.",
   "type": "methodological",
   "role": "supporting",
   "support": [
    {
     "kind": "assumption"
    }
   ],
   "assumption_category": "methodological",
   "check": "tested",
   "check_evidence": "E25",
   "verifiability": "not_applicable",
   "verifiability_flags": []
  },
  {
   "id": "C15",
   "statement": "For the lag-1 expansion $\\tilde M$ of $v_t = M v_{t-l}$ in a [[D1:lagged SSOE model]], $$\\det(\\lambda I - \\tilde M) = \\det(\\Lambda(\\lambda) - M),$$ which equals $$\\lambda^{\\sum_j l_j} \\det(I - M L(1/\\lambda))$$ for $\\lambda \\neq 0$.",
   "about": {
    "subject": "D1",
    "relation": "has as characteristic polynomial of its lag-1 expansion",
    "object": "det(Lambda(lambda) - M)",
    "comparator": null,
    "conditions": [
     "any square matrix M of size k"
    ]
   },
   "type": "formal",
   "role": "supporting",
   "novelty": "no_prior_found",
   "support": [
    {
     "kind": "formal_proof",
     "evidence": "E11"
    }
   ],
   "scope": {
    "population": "pure additive lagged SSOE models",
    "conditions": [
     "any square matrix $M$ of size $k$"
    ]
   },
   "verification": "agent_checked",
   "checks": [
    {
     "by": "P3",
     "outcome": "confirmed",
     "extent": "full",
     "notes": "Steps S1-S6 of E11 re-derived; on 200 random models with lags from {1, 2, 3, 5} at complex lambda the identities of S2, S3, S5 and S6 held to relative errors of at most 7.3e-15; the rule of S6 was corrected to factor Lambda on the right."
    }
   ],
   "verifiability": "open",
   "verifiability_flags": []
  },
  {
   "id": "C17",
   "statement": "For a [[D1:lagged SSOE model]] with $\\theta(B) = \\det(I - D L(B))$ and $\\phi(B) = \\det(I - F L(B))$, the roots of $\\theta(B) / \\gcd(\\theta(B), \\phi(B))$ are exactly the reciprocals $1/\\lambda$ of the nonzero eigenvalues $\\lambda$ of the reachable and observable part of the [[D2:expanded discount matrix]] (its Kalman decomposition), with their multiplicities.",
   "about": {
    "subject": "D2",
    "relation": "has, in its reachable and observable part, the reciprocals of the roots of",
    "object": "theta(B) / gcd(theta(B), phi(B))",
    "comparator": null,
    "conditions": []
   },
   "type": "formal",
   "role": "supporting",
   "novelty": "no_prior_found",
   "support": [
    {
     "kind": "formal_proof",
     "evidence": "E14"
    },
    {
     "kind": "consensus"
    }
   ],
   "scope": {
    "population": "pure additive lagged SSOE models",
    "conditions": [
     "the definition D3 agrees with this part unless an eigenvalue is shared by the reachable and observable part and the rest"
    ]
   },
   "depends_on": [
    "C6",
    "C15"
   ],
   "verification": "agent_checked",
   "checks": [
    {
     "by": "P3",
     "outcome": "confirmed",
     "extent": "full",
     "notes": "Re-derived S1-S5; exact rational arithmetic against the Kalman decomposition on 300 random lagged models (159 with an unreachable or unobservable part) agreed; noted that S5 needed the reversal, the normalisation and the coprimality under reversal spelled out, since added."
    }
   ],
   "verifiability": "open",
   "verifiability_flags": []
  },
  {
   "id": "C18",
   "statement": "For a polynomial $c$ with $c(0) \\neq 0$ and $r > 0$, the [[D7:step-down test]] passes on $c(B/r)$ if and only if $1/|B| < r$ for every root $B$ of $c$.",
   "about": {
    "subject": "D7",
    "relation": "passes on c(B/r) exactly when every root B of c has 1/|B| below",
    "object": "r",
    "comparator": null,
    "conditions": [
     "c(0) nonzero",
     "r > 0"
    ]
   },
   "type": "formal",
   "role": "supporting",
   "novelty": "no_prior_found",
   "support": [
    {
     "kind": "formal_proof",
     "evidence": "E15"
    },
    {
     "kind": "cited",
     "reference": "B2"
    }
   ],
   "scope": {
    "population": "real polynomials with a nonzero constant term"
   },
   "verification": "agent_checked",
   "checks": [
    {
     "by": "P3",
     "outcome": "confirmed",
     "extent": "full",
     "notes": "The scaling is correct and the equivalence rests on D7 and B2; noted the missing division by c(0) and the citation of D7 for a substitution in E15, since corrected."
    }
   ],
   "verifiability": "open",
   "verifiability_flags": []
  },
  {
   "id": "C19",
   "statement": "In additive ETS models, and in GUM models with an identity transition or with transition, persistence and measurement in general position, every factor shared by $\\theta(B)$ and $\\phi(B)$ with a root in $|B| \\le 1$ is a product of cyclotomic polynomials $\\Phi_n(B)$ with $n$ dividing a lag of the model.",
   "type": "methodological",
   "role": "supporting",
   "support": [
    {
     "kind": "assumption"
    }
   ],
   "assumption_category": "theoretical",
   "check": "tested",
   "check_evidence": "E25",
   "verifiability": "not_applicable",
   "verifiability_flags": []
  },
  {
   "id": "C20",
   "statement": "For a square matrix $M$ of size $k$ and lags $l_1, \\dots, l_k$, $$\\det(I - M L(B)) = \\sum_{S \\subseteq \\{1, \\dots, k\\}} (-1)^{|S|} \\det(M_{SS})\\, B^{\\sum_{j \\in S} l_j},$$ with $\\det(M_{\\emptyset\\emptyset}) = 1$.",
   "about": {
    "subject": "det(I - M L(B))",
    "relation": "is the signed sum over subsets of",
    "object": "the principal minors of M",
    "comparator": null,
    "conditions": [
     "M square of size k",
     "positive integer lags"
    ]
   },
   "type": "formal",
   "role": "supporting",
   "novelty": "no_prior_found",
   "support": [
    {
     "kind": "formal_proof",
     "evidence": "E16"
    },
    {
     "kind": "consensus"
    }
   ],
   "scope": {
    "population": "square matrices and positive integer lags"
   },
   "verification": "agent_checked",
   "checks": [
    {
     "by": "P3",
     "outcome": "confirmed",
     "extent": "full",
     "notes": "Steps of E16 re-derived; against the determinant at random complex B the relative error was at most 3.0e-15 for real M (200 cases) and complex M (100 cases)."
    }
   ],
   "verifiability": "open",
   "verifiability_flags": []
  }
 ],
 "definitions": [
  {
   "id": "D1",
   "term": "lagged SSOE model",
   "definition": "A pure additive single-source-of-error state space model with $k$ components, $$\\begin{aligned} y_t &= w' v_{t-l} + \\epsilon_t \\\\ v_t &= F v_{t-l} + g \\epsilon_t, \\end{aligned}$$ in which component $j$ of $v_{t-l}$ enters with its own lag $l_j$; its discount matrix is $D = F - g w'$ and its lag matrix is $L(B) = \\mathrm{diag}(B^{l_1}, \\dots, B^{l_k})$ for the backshift operator $B$; $\\Lambda(\\lambda) = \\mathrm{diag}(\\lambda^{l_1}, \\dots, \\lambda^{l_k})$ for a complex number $\\lambda$.",
   "kind": "method"
  },
  {
   "id": "D2",
   "term": "expanded discount matrix",
   "definition": "The transition matrix $\\tilde D$ of size $\\sum_j l_j$ of the lag-1 system equivalent to $v_t = D v_{t-l}$, in which component $j$ carries itself and its $l_j - 1$ lagged copies; $\\tilde F$, $\\tilde g$ and $\\tilde w$ are expanded in the same way, so that $\\tilde D = \\tilde F - \\tilde g \\tilde w'$.",
   "kind": "concept"
  },
  {
   "id": "D3",
   "term": "decaying weights",
   "definition": "A lagged SSOE model has decaying weights when the weights $\\tilde w' \\tilde D^j \\tilde g$ of the past observations in its fitted values tend to zero, that is, when every eigenvalue $\\lambda$ of its expanded discount matrix that is reachable from $\\tilde g$ and observable through $\\tilde w$ has $|\\lambda| < 1$; the largest such $|\\lambda|$ is its largest mode modulus. A mode that $\\tilde g$ does not reach but $\\tilde w$ sees carries an initial state whose effect is not covered: with $|\\lambda| > 1$ it grows.",
   "kind": "concept"
  },
  {
   "id": "D4",
   "term": "per-lag check",
   "definition": "The test applied by smoothEigens() of smooth 4.6.0 and of its repository until commit 4a44c1c (src/headers/eigenCalc.h) to models without adaptive regressors: every eigenvalue of every diagonal block of $D$, one block per unique lag, has modulus below 1; reimplemented in numpy as per_lag_max().",
   "kind": "method"
  },
  {
   "id": "D5",
   "term": "PBH reference",
   "definition": "The largest modulus among the eigenvalues $\\lambda$ of the expanded discount matrix for which the smallest singular values of $[\\lambda I - \\tilde D;\\ \\tilde w']$ and of $[\\lambda I - \\tilde D,\\ \\tilde g]$ both exceed $10^{-7}(\\|\\tilde D\\|_2 + \\|\\tilde g\\| + \\|\\tilde w\\|)$ (Popov-Belevitch-Hautus rank tests), computed with numpy as pbh_max().",
   "kind": "method"
  },
  {
   "id": "D6",
   "term": "cyclotomic cancellation",
   "definition": "The procedure that computes the coefficients of $$\\begin{aligned} \\theta(B) &= \\det(I - D L(B)) \\\\ \\phi(B) &= \\det(I - F L(B)) \\end{aligned}$$ by an inverse discrete Fourier transform of their values at the $N$-th roots of unity ($N$ the smallest power of 2 above $\\sum_j l_j$), and divides both by every cyclotomic polynomial $\\Phi_n(B)$, $n$ dividing one of the lags, for as long as it divides both with a remainder at most $10^{-9}$ times the sum of absolute coefficients; the quotient of $\\theta$ is the cancelled MA polynomial $\\theta^*(B)$.",
   "kind": "method"
  },
  {
   "id": "D7",
   "term": "step-down test",
   "definition": "The Levinson-Durbin step-down (Schur-Cohn) recursion on $1 + c_1 B + \\dots + c_n B^n$: for $j = n, \\dots, 1$, $$\\kappa_j = c_j, \\qquad c_i \\leftarrow \\frac{c_i - \\kappa_j c_{j-i}}{1 - \\kappa_j^2};$$ the test passes when every $|\\kappa_j| < 1$, which holds if and only if all roots lie outside the unit circle (the $\\kappa_j$ are the partial autocorrelations of the autoregression with this polynomial).",
   "source": "B2",
   "kind": "method"
  },
  {
   "id": "D8",
   "term": "GUM",
   "definition": "Generalised Univariate Model of the smooth package: a lagged SSOE model whose $F$, $g$ and $w$ are all estimated.",
   "source": "B3",
   "kind": "method"
  },
  {
   "id": "D9",
   "term": "ETS(A,N,A)",
   "definition": "Exponential smoothing with additive error, no trend and additive seasonality of period $m$; here in the lagged form with a level of lag 1 and one seasonal state of lag $m$, $F = I$, $w = (1, 1)'$, $g = (\\alpha, \\gamma)'$.",
   "source": "B1",
   "kind": "method"
  },
  {
   "id": "D10",
   "term": "check of the whole model",
   "kind": "method",
   "definition": "Admissibility of a lagged SSOE model from the MA polynomial $$\\theta(B) = \\det(I - D L(B))$$ of its ARIMA form: $\\theta$ is divided by its common factors with $\\phi(B) = \\det(I - F L(B))$ by [[D6:cyclotomic cancellation]], and the model is accepted when the cancelled polynomial $\\theta^*$ has no root in $|B| \\le 1$ and, for a model with ARIMA components, the AR polynomial of its ARIMA part is stationary; its largest mode modulus is $1/\\min|B|$ over the roots of $\\theta^*$. In the numpy prototype (admissibility.py, confirm.py, ets_arima.py) the roots come from numpy; in smooth the [[D7:step-down test]] decides and bisection gives the modulus."
  },
  {
   "id": "D11",
   "term": "bisection for the largest root modulus",
   "kind": "method",
   "definition": "Bisection on $r$ over the [[D7:step-down test]] applied to $\\theta^*(B/r)$, which passes exactly when $1/|B| < r$ for every root $B$ of $\\theta^*$, so that the smallest such $r$ is the largest mode modulus; run to a width of 1e-10 in the prototype and to a tolerance of 1e-6 in smooth.",
   "part_of": [
    "D10"
   ]
  },
  {
   "id": "D12",
   "term": "smoothEigensCpp()",
   "kind": "method",
   "definition": "The [[D10:check of the whole model]] as implemented in smooth (src/headers/eigenCalc.h, shared by R and Python): the coefficients of $\\theta$ and $\\phi$ by inverse discrete Fourier transform, cyclotomic cancellation, the step-down test and bisection with tolerance 1e-6; called in R through smoothEigensR().",
   "broader": [
    "D10"
   ]
  },
  {
   "id": "D15",
   "term": "roots by numpy",
   "kind": "method",
   "definition": "The roots of a polynomial by numpy's roots (the eigenvalues of its companion matrix), and the admissibility decision and largest modulus $1/\\min|B|$ they give."
  },
  {
   "id": "D17",
   "term": "ETS(A,N,A) grid",
   "kind": "data",
   "definition": "The 3042 [[D9:ETS(A,N,A)]] models with $m = 4$ and $m = 12$ and $\\alpha$ and $\\gamma$ on the grid 0.05, 0.10, ..., 1.95 (confirm.py, plan PL1)."
  },
  {
   "id": "D18",
   "term": "random GUM models with lags (1, 12)",
   "kind": "data",
   "definition": "200 [[D8:GUM]] models with lags (1, 12): entries of $F$ normal with mean 0 and standard deviation 0.35, of $g$ with mean 0 and standard deviation 0.175, of $w$ with mean 1 and standard deviation 0.175 (confirm.py, seed 2026)."
  },
  {
   "id": "D19",
   "term": "random additive ETS and GUM models",
   "kind": "data",
   "definition": "The 500 models of plan PL3 (confirm.py --test cancel --seed 2026 --n 200): 200 additive ETS models (level; no, additive or damped trend with $\\phi$ in (0.8, 0.99); 0 to 2 seasonal lags from {4, 7, 12, 24, 52}; a constant with probability 0.3; $\\beta = 0$ with probability 0.1 and each $\\gamma = 0$ with probability 0.15; $\\alpha$ in (0.01, 1.9)), 100 GUM models with $F = I$, lags from {1, 4, 12}, $g$ uniform on (-0.3, 0.6) and $w$ normal with mean 1 and standard deviation 0.3, and 200 GUM models with lags from {1, 4, 12, 24} and normal $F$ (standard deviation 0.35).",
   "part_of": [
    "D20"
   ]
  },
  {
   "id": "D20",
   "term": "random additive ETS and GUM models with long seasonal lags",
   "kind": "data",
   "definition": "The 575 models of plan PL4 (confirm.py --test stepdown --seed 2026 --n 200): the 500 models of plan PL3 generated afresh, 50 additive ETS models with seasonal lags from {24, 168, 365} and 25 GUM models with lags (1, 24, 168) and normal $F$ (standard deviation 0.3). The generator allows MA polynomial degrees up to 536 (level, trend, seasonal lags 168 and 365, constant)."
  },
  {
   "id": "D21",
   "term": "four model families of the implementation test",
   "kind": "data",
   "definition": "200 models in each of four families (cpp_check.py --seed 2027 --n 200, plan PL6): additive ETS with 0 to 2 seasonal lags from {4, 7, 12, 24, 52}; additive ETS with 0 to 2 seasonal lags from {24, 168, 365}; GUM with $F = I$ and lags from {1, 4, 12}; GUM with normal $F$ (standard deviation 0.35) and lags from {1, 4, 12, 24}."
  },
  {
   "id": "D24",
   "term": "ETS(A,N,A,A) with seasonal lags 24 and 168",
   "kind": "data",
   "definition": "The additive ETS model with a level and two seasonal states of lags 24 and 168, $\\alpha = 0.3$ and $\\gamma = (0.1, 0.05)$, in the lagged form."
  },
  {
   "id": "D25",
   "term": "starting point of gum()",
   "kind": "data",
   "definition": "The default starting point of gum() with orders (2, 2) and lags (1, 12): $F = I$, $g = 0.1$, $w = 1$."
  },
  {
   "id": "D26",
   "term": "comparison with a reference",
   "kind": "design",
   "definition": "Each model's admissibility decision, and its largest mode modulus where both find it inadmissible, computed by the method studied and by a reference on the same model (the [[D5:PBH reference]], the roots by numpy, the numpy prototype of the check of the whole model or an exact oracle); the result is the number of models whose decisions differ and the largest absolute difference of the modulus. In the planned tests, models whose reference modulus lies within 1e-8 of 1 are left out and counted."
  },
  {
   "id": "D29",
   "term": "admissibility decision",
   "kind": "variable",
   "definition": "Whether a method accepts a model as admissible ([[D3:decaying weights]]); compared between a method and a reference as the number of models on which the two differ."
  },
  {
   "id": "D30",
   "term": "largest mode modulus",
   "kind": "variable",
   "definition": "The largest modulus of the modes that decide admissibility: for the [[D5:PBH reference]] the largest $|\\lambda|$ of the reachable and observable eigenvalues of the [[D2:expanded discount matrix]], for the check of the whole model $1/\\min|B|$ over the roots $B$ of the cancelled MA polynomial, for the per-lag check the largest $|\\lambda|$ of its blocks; a model is admissible when it is below 1."
  },
  {
   "id": "D41",
   "term": "exact oracle",
   "kind": "method",
   "definition": "Admissibility decided in exact rational arithmetic with certified root enclosures (independent/oracle.py, python-flint 0.9.0), written by the contributor P5 from the definitions of this claimset without the prototype: each float of $F$, $g$, $w$ is converted exactly to a rational, $D = F - g w'$, and $$\\theta(B) = \\det(I - D L(B)), \\qquad \\phi(B) = \\det(I - F L(B))$$ by fraction-free elimination over $\\mathbb{Q}[B]$; $G = \\gcd(\\theta, \\phi)$ exactly and $\\theta_G = \\theta / G$; $C$ is the product of the cyclotomic polynomials $\\Phi_n$, $n$ dividing a lag, at the multiplicity dividing both, and $\\theta_C = \\theta / C$; the roots of $\\theta_G$, $\\theta_C$ and $G / C$ are enclosed in Arb balls of 128 bits, raised to 512 and 2048 bits while a modulus ball contains 1, and a root counts as on the unit circle only when it is proved a root of unity whose $\\Phi_n$ divides the polynomial. The largest mode modulus is $1/\\min|B|$ over the roots; a model is admissible when it is below 1."
  },
  {
   "id": "D42",
   "term": "models of the planned tests",
   "kind": "data",
   "definition": "The models of the planned tests PL1-PL6 and the two examples of C10 and C11, drawn again by export_models.py exactly as confirm.py and cpp_check.py draw them (the counts of the original tests are reproduced), with the prototype's values for each: 3242 models of PL1 and PL2, 500 of PL3, 575 of PL4 and PL5 (MA degree up to 535), 800 of PL6 and 2 examples; 5119 in all."
  },
  {
   "id": "D43",
   "term": "comparison with the exact oracle",
   "kind": "design",
   "definition": "For each model, the admissibility decision and largest mode modulus of a method of the study against those of the [[D41:exact oracle]]: the PBH reference against $\\theta_G$; the prototype's cancellation, step-down test and bisection against $\\theta_C$. Counted are the models whose decisions differ and the largest absolute difference of the modulus on the models both find inadmissible (for the bisection, on every model with a value). Models the oracle cannot decide, and models whose certified largest modulus lies within $10^{-8}$ of 1, are left out and counted."
  },
  {
   "id": "D44",
   "term": "non-cyclotomic shared factor in the closed unit disc",
   "kind": "variable",
   "definition": "Whether $G / C$, the factor shared by $\\theta$ and $\\phi$ after removing the cyclotomic polynomials $\\Phi_n$ ($n$ dividing a lag), has a root in $|B| \\le 1$, certified by the [[D41:exact oracle]]; counted over models."
  }
 ],
 "evidence": [
  {
   "id": "E3",
   "profile": "simulation",
   "description": "Planned test of the cyclotomic cancellation (lab plan PL3, run RN9): confirm.py --test cancel --seed 2026 --n 200 generated 200 additive ETS models (level; no, additive or damped trend with phi in (0.8, 0.99); 0 to 2 seasonal lags from {4, 7, 12, 24, 52}; a constant with probability 0.3; beta = 0 with probability 0.1 and each gamma = 0 with probability 0.15; alpha in (0.01, 1.9)), 100 GUM models with F = I, lags from {1, 4, 12}, g uniform on (-0.3, 0.6) and w normal with mean 1 and standard deviation 0.3, and 200 GUM models with lags from {1, 4, 12, 24} and normal F (standard deviation 0.35); for each it compared the largest root modulus of the cancelled MA polynomial with the PBH reference.",
   "setup": {
    "studied": [
     "D10"
    ],
    "cases": [
     "D19"
    ],
    "procedure": [
     "D26",
     "D5"
    ],
    "lens": [
     "D29",
     "D30"
    ]
   },
   "availability": {
    "level": "public"
   },
   "lab_runs": [
    "RN9"
   ],
   "results": [
    {
     "id": "R1",
     "variable": "admissibility decisions that differ from the PBH reference",
     "value": 0.0,
     "conditions": {}
    },
    {
     "id": "R2",
     "variable": "max abs difference of max |lambda| from the PBH reference, inadmissible models",
     "value": 4.39648e-13,
     "conditions": {
      "inadmissible_models": 172
     }
    },
    {
     "id": "R3",
     "variable": "models within 1e-8 of the unit circle, excluded",
     "value": 0.0,
     "conditions": {}
    },
    {
     "id": "R4",
     "variable": "models compared",
     "value": 500.0,
     "conditions": {}
    }
   ],
   "execution": {
    "code_version": "fe3ecfad42341fb0d2b81d02a7919b43baa5f695",
    "software": {
     "python": "3.13.16",
     "platform": "Linux-6.18.44-fc-v139-x86_64-with-glibc2.39"
    }
   },
   "artefacts": [
    "A1",
    "A3"
   ],
   "model": "random lagged SSOE models (additive ETS and GUM) generated by confirm.py",
   "parameters": "A3",
   "runs": 1,
   "seeds": [
    2026
   ]
  },
  {
   "id": "E4",
   "profile": "simulation",
   "description": "Planned test of the step-down test (lab plan PL4, run RN10): confirm.py --test stepdown --seed 2026 --n 200 generated the 500 models of plan PL3 afresh plus 50 additive ETS models with seasonal lags from {24, 168, 365} and 25 GUM models with lags (1, 24, 168) and normal F (standard deviation 0.3), and compared the step-down decision on the cancelled MA polynomial with the decision from its roots computed by numpy. The generator allows MA polynomial degrees up to 536 (level, trend, seasonal lags 168 and 365, constant); the realised maximum was not recorded as a result.",
   "setup": {
    "studied": [
     "D7"
    ],
    "cases": [
     "D20"
    ],
    "procedure": [
     "D26",
     "D15"
    ],
    "lens": [
     "D29"
    ]
   },
   "availability": {
    "level": "public"
   },
   "lab_runs": [
    "RN10"
   ],
   "results": [
    {
     "id": "R1",
     "variable": "step-down decisions that differ from the decision by the roots",
     "value": 0.0,
     "conditions": {}
    },
    {
     "id": "R2",
     "variable": "models within 1e-8 of the unit circle, excluded",
     "value": 0.0,
     "conditions": {}
    },
    {
     "id": "R3",
     "variable": "models compared",
     "value": 575.0,
     "conditions": {}
    }
   ],
   "execution": {
    "code_version": "fe3ecfad42341fb0d2b81d02a7919b43baa5f695",
    "software": {
     "python": "3.13.16",
     "platform": "Linux-6.18.44-fc-v139-x86_64-with-glibc2.39"
    }
   },
   "artefacts": [
    "A1",
    "A3"
   ],
   "model": "random lagged SSOE models (additive ETS and GUM) generated by confirm.py",
   "parameters": "A3",
   "runs": 1,
   "seeds": [
    2026
   ]
  },
  {
   "id": "E13",
   "profile": "simulation",
   "description": "Planned test of the implementation in smooth (lab plan PL6, run RN43): cpp_check.py --seed 2027 --n 200 generated 200 models in each of four families (additive ETS with 0-2 seasonal lags from {4, 7, 12, 24, 52}; additive ETS with 0-2 seasonal lags from {24, 168, 365}; GUM with F = I and lags from {1, 4, 12}; GUM with normal F, standard deviation 0.35, and lags from {1, 4, 12, 24}), called smoothEigensR() of the repository (through pkgload::load_all) three times on each, and compared its decision and modulus with the numpy prototype (roots of the cancelled MA polynomial).",
   "setup": {
    "studied": [
     "D12"
    ],
    "cases": [
     "D21"
    ],
    "procedure": [
     "D26",
     "D10"
    ],
    "lens": [
     "D29",
     "D30"
    ]
   },
   "availability": {
    "level": "public"
   },
   "lab_runs": [
    "RN43"
   ],
   "execution": {
    "code_version": "0630dbeab5173c2a72c7828fca3f71573fa1ea85",
    "software": {
     "python": "3.13.16",
     "platform": "Linux-6.18.44-fc-v140-x86_64-with-glibc2.39"
    }
   },
   "artefacts": [
    "A1",
    "A5",
    "A8"
   ],
   "model": "random lagged SSOE models (additive ETS and GUM) generated by cpp_check.py",
   "parameters": "A5",
   "runs": 1,
   "seeds": [
    2027
   ],
   "tables": [
    {
     "id": "T1",
     "description": "Comparison of the C++ core (smoothEigensR()) with the numpy prototype on 200 models in each of four families: admissibility decisions that differ, largest absolute difference of the root modulus on the models found inadmissible, models whose cancelled polynomials differ in degree, largest absolute difference between three calls on the same model, and the number of models found inadmissible",
     "conditions": {
      "models": 200
     },
     "row_labels": [
      "family"
     ],
     "columns": [
      "admissibility decisions of the C++ core that differ from the prototype",
      "max abs difference of the largest root modulus on inadmissible models, C++ core against prototype",
      "models whose cancelled polynomials differ in degree, C++ core against prototype",
      "max abs difference between three calls of the C++ core on the same model",
      "inadmissible"
     ],
     "rows": [
      {
       "id": "r1",
       "label": [
        "ETS"
       ],
       "values": [
        0,
        9.48849e-07,
        0,
        0.0,
        86
       ]
      },
      {
       "id": "r2",
       "label": [
        "ETS high degree"
       ],
       "values": [
        0,
        9.52663e-07,
        0,
        0.0,
        95
       ]
      },
      {
       "id": "r3",
       "label": [
        "GUM identity"
       ],
       "values": [
        0,
        9.40581e-07,
        0,
        0.0,
        84
       ]
      },
      {
       "id": "r4",
       "label": [
        "GUM random"
       ],
       "values": [
        0,
        9.48539e-07,
        0,
        0.0,
        27
       ]
      }
     ],
     "artefact": "A18"
    }
   ]
  },
  {
   "id": "E10",
   "profile": "simulation",
   "description": "Exploratory run RN2 of explore.py --seed 0: the ARIMA-form polynomials, their cyclotomic cancellation and the PBH reference for ETS(A,N,A,A) with seasonal lags 24 and 168 (alpha = 0.3, gamma = (0.1, 0.05)) and for GUM with orders (2, 2), lags (1, 12), F = I, g = 0.1 and w = 1 (the default starting point of gum()); the determinant identity at random complex B on 100 random GUM models; the expanded discount matrix of a block-diagonal D; and mean times over 50 repeats of three computations for a random GUM with lags (1, 24, 168). The result labelled 'block-diagonal D, lags (1,12)' comes from D = [[0.7, 0], [-0.1, 0.3]], which is lower-triangular rather than block-diagonal.",
   "setup": {
    "studied": [
     "D1",
     "D6",
     "D10"
    ],
    "cases": [
     "D24",
     "D25"
    ],
    "procedure": [
     "D26",
     "D5"
    ],
    "lens": [
     "D30"
    ]
   },
   "artefacts": [
    "A1",
    "A2"
   ],
   "model": "fixed and random lagged SSOE models generated by explore.py",
   "parameters": "A2",
   "runs": 1,
   "seeds": [
    0
   ],
   "availability": {
    "level": "public"
   },
   "lab_runs": [
    "RN2"
   ],
   "results": [
    {
     "id": "R11",
     "variable": "max relative error of the determinant identity",
     "value": 9.17156e-15,
     "conditions": {
      "models": 100
     }
    },
    {
     "id": "R12",
     "variable": "max |lambda|, per-lag check",
     "value": 0.7,
     "conditions": {
      "model": "block-diagonal D, lags (1,12)"
     }
    },
    {
     "id": "R13",
     "variable": "max |lambda|, all modes of the expanded discount matrix",
     "value": 0.904538,
     "conditions": {
      "model": "block-diagonal D, lags (1,12)"
     }
    },
    {
     "id": "R14",
     "variable": "mean time, ms",
     "value": 4.69635,
     "conditions": {
      "task": "coefficients by DFT",
      "degree": 193
     }
    },
    {
     "id": "R15",
     "variable": "mean time, ms",
     "value": 0.00693922,
     "conditions": {
      "task": "step-down test",
      "degree": 193
     }
    },
    {
     "id": "R16",
     "variable": "mean time, ms",
     "value": 22.2257,
     "conditions": {
      "task": "all roots, numpy companion eigenvalues",
      "degree": 193
     }
    }
   ],
   "execution": {
    "code_version": "4151c76e4125035cf1258be7f32b24ca2408c4a2",
    "software": {
     "python": "3.13.16",
     "platform": "Linux-6.18.44-fc-v139-x86_64-with-glibc2.39"
    },
    "hardware": {
     "machine": "x86_64",
     "cpus": 4
    }
   },
   "tables": [
    {
     "id": "T1",
     "description": "Degree of the MA polynomial theta and of its shared cyclotomic factor, and the largest mode modulus from the roots of theta before and after cancellation and from the PBH reference, for ETS(A,N,A,A) with seasonal lags 24 and 168 and for the default starting point of gum() with orders (2, 2) and lags (1, 12)",
     "row_labels": [
      "model"
     ],
     "columns": [
      "degree of theta",
      "degree of the shared cyclotomic factor",
      "max |lambda|, roots of theta before cancellation",
      "max |lambda|, roots of theta after cancellation",
      "max |lambda|, controllable and observable modes (PBH)"
     ],
     "rows": [
      {
       "id": "r1",
       "label": [
        "ETS(A,N,A,A), alpha=0.3, gamma=(0.1,0.05)"
       ],
       "values": [
        193.0,
        25.0,
        1.0,
        0.999997,
        0.999997
       ]
      },
      {
       "id": "r2",
       "label": [
        "GUM start, orders (2,2), lags (1,12)"
       ],
       "values": [
        26.0,
        14.0,
        1.0,
        0.982937,
        0.982937
       ]
      }
     ],
     "artefact": "A18"
    }
   ]
  },
  {
   "id": "E6",
   "profile": "formal",
   "foundation": "linear algebra over the field of rational functions in $B$",
   "description": "Derivation of the ARIMA form of a lagged SSOE model by the matrix determinant lemma.",
   "availability": {
    "level": "public"
   },
   "steps": [
    {
     "id": "S1",
     "statement": "$$\\epsilon_t = y_t - w' v_{t-l} \\Rightarrow v_t = D v_{t-l} + g y_t,\\ D = F - g w'$$",
     "by": [
      "D1"
     ],
     "rule": "substitution"
    },
    {
     "id": "S2",
     "statement": "$$v_{t-l} = L(B) v_t \\Rightarrow (I - D L(B)) v_t = g y_t$$",
     "by": [
      "S1",
      "D1"
     ],
     "rule": "definition of $L(B)$"
    },
    {
     "id": "S3",
     "statement": "$$\\det(I - D L(B))|_{B=0} = 1 \\Rightarrow I - D L(B) \\text{ is invertible over rational functions}$$",
     "by": [
      "S2"
     ],
     "rule": "evaluation at $B = 0$"
    },
    {
     "id": "S4",
     "statement": "$$\\epsilon_t = \\left(1 - w' L(B) (I - D L(B))^{-1} g\\right) y_t$$",
     "by": [
      "S1",
      "S2",
      "S3"
     ],
     "rule": "substitution"
    },
    {
     "id": "S5",
     "statement": "$$I - D L(B) - g\\, w' L(B) = I - F L(B)$$",
     "by": [
      "D1"
     ],
     "rule": "definition of $D$"
    },
    {
     "id": "S6",
     "statement": "$$\\det(I - F L(B)) = \\det(I - D L(B))\\left(1 - w' L(B)(I - D L(B))^{-1} g\\right)$$",
     "by": [
      "S3",
      "S5"
     ],
     "rule": "matrix determinant lemma $\\det(A - g u') = \\det(A)(1 - u' A^{-1} g)$"
    },
    {
     "id": "S7",
     "statement": "$$\\det(I - D L(B))\\, \\epsilon_t = \\det(I - F L(B))\\, y_t$$",
     "by": [
      "S4",
      "S6"
     ],
     "rule": "substitution"
    }
   ]
  },
  {
   "id": "E8",
   "profile": "formal",
   "foundation": "linear algebra over the complex numbers",
   "description": "Unobservable or unreachable modes of the expanded transition matrix are modes of the expanded discount matrix and give common roots of the two ARIMA-form polynomials.",
   "availability": {
    "level": "public"
   },
   "steps": [
    {
     "id": "S1",
     "statement": "$$\\tilde F u = \\lambda u,\\ \\tilde w' u = 0 \\Rightarrow \\tilde D u = \\tilde F u - \\tilde g (\\tilde w' u) = \\lambda u$$",
     "by": [
      "D2"
     ],
     "rule": "substitution of $\\tilde D = \\tilde F - \\tilde g \\tilde w'$"
    },
    {
     "id": "S2",
     "statement": "$$u' \\tilde F = \\lambda u',\\ u' \\tilde g = 0 \\Rightarrow u' \\tilde D = u' \\tilde F - (u' \\tilde g) \\tilde w' = \\lambda u'$$",
     "by": [
      "D2"
     ],
     "rule": "substitution of $\\tilde D = \\tilde F - \\tilde g \\tilde w'$"
    },
    {
     "id": "S3",
     "statement": "$$\\det(\\lambda I - \\tilde M) = \\lambda^{\\sum_j l_j} \\det(I - M L(1/\\lambda)),\\ \\lambda \\neq 0$$",
     "by": [
      "C15"
     ],
     "rule": "identity of the lag-1 expansion"
    },
    {
     "id": "S4",
     "statement": "$$\\phi(1/\\lambda) = \\det(I - F L(1/\\lambda)) = 0,\\ \\theta(1/\\lambda) = \\det(I - D L(1/\\lambda)) = 0$$",
     "by": [
      "S1",
      "S2",
      "S3"
     ],
     "rule": "substitution"
    }
   ]
  },
  {
   "id": "E11",
   "profile": "formal",
   "foundation": "linear algebra over the complex numbers",
   "description": "Schur-complement derivation of the characteristic polynomial of the lag-1 expansion.",
   "availability": {
    "level": "public"
   },
   "steps": [
    {
     "id": "S1",
     "statement": "$$\\lambda I - \\tilde M = \\begin{pmatrix} \\lambda I_k - A & -B \\\\ -C & \\lambda I - S \\end{pmatrix}$$",
     "by": [
      "D2"
     ],
     "rule": "partition of the states into the $k$ current values (heads) and the $\\sum_j (l_j - 1)$ lagged copies (tails); $S$ shifts each tail chain, $C$ feeds each head into its first copy, $A$ and $B$ hold the entries of $M$ that act on heads with lag 1 and on last copies"
    },
    {
     "id": "S2",
     "statement": "$$\\det(\\lambda I - S) = \\lambda^{\\sum_j (l_j - 1)}$$",
     "by": [
      "S1"
     ],
     "rule": "determinant of a lower-triangular matrix with diagonal $\\lambda$"
    },
    {
     "id": "S3",
     "statement": "$$A + B (\\lambda I - S)^{-1} C = M\\, \\mathrm{diag}(\\lambda^{1 - l_1}, \\dots, \\lambda^{1 - l_k}),\\ \\lambda \\neq 0$$",
     "by": [
      "S1"
     ],
     "rule": "$(\\lambda I - S)^{-1} C$ maps head $j$ to its copies $\\lambda^{-s}$, $s = 1, \\dots, l_j - 1$, and $B$ reads copy $l_i - 1$ of component $i$"
    },
    {
     "id": "S4",
     "statement": "$$\\det(\\lambda I - \\tilde M) = \\lambda^{\\sum_j (l_j - 1)} \\det(\\lambda I_k - M\\, \\mathrm{diag}(\\lambda^{1 - l_j})) = \\det(\\Lambda(\\lambda) - M),\\ \\lambda \\neq 0$$",
     "by": [
      "S2",
      "S3"
     ],
     "rule": "Schur complement, then factoring $\\lambda\\, \\Lambda(\\lambda)^{-1}$ out on the right"
    },
    {
     "id": "S5",
     "statement": "$$\\det(\\lambda I - \\tilde M) = \\det(\\Lambda(\\lambda) - M) \\text{ for all } \\lambda$$",
     "by": [
      "S4"
     ],
     "rule": "two polynomials equal on $\\lambda \\neq 0$ are equal"
    },
    {
     "id": "S6",
     "statement": "$$\\det(\\lambda I - \\tilde M) = \\lambda^{\\sum_j l_j} \\det(I - M L(1/\\lambda)),\\ \\lambda \\neq 0$$",
     "by": [
      "S5",
      "D1"
     ],
     "rule": "factoring $\\Lambda(\\lambda)$ out on the right: $\\Lambda(\\lambda) - M = (I - M \\Lambda(\\lambda)^{-1}) \\Lambda(\\lambda)$"
    }
   ]
  },
  {
   "id": "E14",
   "profile": "formal",
   "foundation": "linear systems theory over the complex numbers",
   "description": "The reduced form of the ARIMA polynomials through the Kalman decomposition of the expanded system.",
   "availability": {
    "level": "public"
   },
   "steps": [
    {
     "id": "S1",
     "statement": "$$\\exists T: T^{-1}\\tilde F T \\text{ block-triangular with a reachable and observable block } (F_{co}, g_{co}, w_{co}),\\ \\tilde w'(zI - \\tilde F)^{-1}\\tilde g = w_{co}'(zI - F_{co})^{-1} g_{co}$$",
     "by": [
      "D2"
     ],
     "rule": "Kalman canonical decomposition"
    },
    {
     "id": "S2",
     "statement": "$$\\tilde D = \\tilde F - \\tilde g \\tilde w' \\text{ keeps the reachable and the unobservable subspaces, so } D_{co} = F_{co} - g_{co} w_{co}'$$",
     "by": [
      "S1",
      "D2"
     ],
     "rule": "reachability is invariant under state feedback and observability under output injection"
    },
    {
     "id": "S3",
     "statement": "$$1 + w_{co}'(zI - F_{co})^{-1} g_{co} = \\frac{\\det(zI - D_{co})}{\\det(zI - F_{co})},\\ \\gcd(\\det(zI - D_{co}), \\det(zI - F_{co})) = 1$$",
     "by": [
      "S2"
     ],
     "rule": "matrix determinant lemma; a single-input single-output realisation is minimal if and only if the numerator and denominator of its transfer function are coprime"
    },
    {
     "id": "S4",
     "statement": "$$1 + \\tilde w'(zI - \\tilde F)^{-1}\\tilde g = \\frac{\\det(zI - \\tilde D)}{\\det(zI - \\tilde F)} = \\frac{\\theta(1/z)}{\\phi(1/z)}$$",
     "by": [
      "C15",
      "D1"
     ],
     "rule": "matrix determinant lemma and the identity of the lag-1 expansion"
    },
    {
     "id": "S5",
     "statement": "$$\\frac{\\theta(B)}{\\gcd(\\theta, \\phi)}(B) = 0 \\iff B = 1/\\lambda,\\ \\lambda \\in \\mathrm{spec}(D_{co}) \\setminus \\{0\\} \\text{ (with multiplicity)}$$",
     "by": [
      "S3",
      "S4"
     ],
     "rule": "uniqueness of the reduced fraction, with z = 1/B: the eigenvalues at zero give no root, theta(0) = phi(0) = 1 makes theta / gcd the reduced numerator, and the reversal keeps coprimality away from B = 0"
    }
   ]
  },
  {
   "id": "E15",
   "profile": "formal",
   "foundation": "algebra of complex polynomials",
   "description": "Scaling the argument of a polynomial scales its roots.",
   "availability": {
    "level": "public"
   },
   "steps": [
    {
     "id": "S1",
     "statement": "$$c(B_i) = 0 \\iff c((r B_i) / r) = 0$$",
     "by": [],
     "rule": "substitution"
    },
    {
     "id": "S2",
     "statement": "$$|r B_i| > 1\\ \\forall i \\iff 1/|B_i| < r\\ \\forall i$$",
     "by": [
      "S1"
     ],
     "rule": "r > 0"
    },
    {
     "id": "S3",
     "statement": "$$c(B/r) / c(0) = 1 + \\sum_i (c_i / c_0)\\, r^{-i} B^i \\text{ has the roots of } c(B/r)$$",
     "by": [
      "S1"
     ],
     "rule": "$c(0) \\neq 0$"
    },
    {
     "id": "S4",
     "statement": "$$\\text{the step-down passes on } c(B/r) \\iff |r B_i| > 1\\ \\forall i$$",
     "by": [
      "D7",
      "S1",
      "S3"
     ],
     "rule": "the step-down test passes exactly when all roots lie outside the unit circle"
    }
   ]
  },
  {
   "id": "E16",
   "profile": "formal",
   "foundation": "linear algebra over the field of rational functions in $B$",
   "description": "Expansion of det(I - M L(B)) by multilinearity in the columns.",
   "availability": {
    "level": "public"
   },
   "steps": [
    {
     "id": "S1",
     "statement": "$$\\text{column } j \\text{ of } I - M L(B) = e_j - B^{l_j} m_j$$",
     "by": [
      "D1"
     ],
     "rule": "definition of $L(B)$"
    },
    {
     "id": "S2",
     "statement": "$$\\det(I - M L(B)) = \\sum_{S} \\det\\left[\\, e_j\\ (j \\notin S),\\ -B^{l_j} m_j\\ (j \\in S) \\right]$$",
     "by": [
      "S1"
     ],
     "rule": "multilinearity of the determinant in the columns"
    },
    {
     "id": "S3",
     "statement": "$$\\det\\left[\\, e_j\\ (j \\notin S),\\ -B^{l_j} m_j\\ (j \\in S) \\right] = (-1)^{|S|} B^{\\sum_{j \\in S} l_j} \\det(M_{SS})$$",
     "by": [
      "S2"
     ],
     "rule": "Laplace expansion along the unit columns, and pulling the scalars out of the other columns"
    }
   ]
  },
  {
   "id": "E25",
   "profile": "simulation",
   "description": "Planned test of the contributor P5 (lab plan AC5.PL1, run AC5.RN8, with the breakdown run AC5.RN9): the [[D41:exact oracle]], written without the prototype, on the [[D42:models of the planned tests]] exported by runs RN57-RN61, against the prototype's values stored with each model. The oracle was tried beforehand only on models of other seeds (AC5.RN2, AC5.RN6, AC5.RN7) and on hand-checkable models. AC5.RN8 took 30 s.",
   "setup": {
    "studied": [
     "D5",
     "D10",
     "D7",
     "D11",
     "D4"
    ],
    "cases": [
     "D42",
     "D17",
     "D18",
     "D20"
    ],
    "procedure": [
     "D43",
     "D41"
    ],
    "lens": [
     "D29",
     "D30",
     "D44"
    ]
   },
   "availability": {
    "level": "public"
   },
   "lab_runs": [
    "AC5.RN8",
    "AC5.RN9"
   ],
   "execution": {
    "code_version": "dc74fc0c9dd1efc112b3f4b97a57c52ba54595c7",
    "software": {
     "python": "3.13.18",
     "platform": "Linux-6.18.44-fc-v338-x86_64-with-glibc2.39"
    }
   },
   "artefacts": [
    "A19",
    "A20",
    "A18"
   ],
   "model": "the random and grid models of the planned tests PL1-PL6, and two examples",
   "parameters": "A19",
   "runs": 2,
   "tables": [
    {
     "id": "T1",
     "description": "Each set of models of the planned tests (D42) given to the exact oracle (D41), and over all sets: models given, left out by the edge band and undecided; decisions of the PBH reference and of the prototype's cancellation that differ from the oracle, and the largest absolute difference of the largest mode modulus on the models both find inadmissible; models with a non-cyclotomic shared factor in the closed unit disc (D44); models whose cancelled MA degree differs from the prototype's. Empty cells: the set has no such value of the prototype (perlag holds the PBH reference only; stepdown and cpp the cancellation only).",
     "row_labels": [
      "set"
     ],
     "columns": [
      {
       "variable": "models given to the oracle"
      },
      {
       "variable": "models on which the oracle failed"
      },
      {
       "variable": "models compared"
      },
      {
       "variable": "models whose shared non-cyclotomic factor could not be located"
      },
      {
       "variable": "models with a shared non-cyclotomic factor, all roots in |B| > 1"
      },
      {
       "variable": "models excluded by edge"
      },
      {
       "variable": "models excluded by undecided"
      },
      {
       "variable": "admissibility decisions of the PBH reference that differ from the exact oracle"
      },
      {
       "variable": "max abs difference of the largest mode modulus, PBH reference against the exact oracle, models both find inadmissible"
      },
      {
       "variable": "admissibility decisions of the prototype's cancellation that differ from the exact oracle"
      },
      {
       "variable": "max abs difference of the largest mode modulus, prototype's roots after cancellation against the exact oracle, models both find inadmissible"
      },
      {
       "variable": "models with a shared factor of theta and phi that is not a product of Phi_n, n dividing a lag, with a root in |B| <= 1"
      },
      {
       "variable": "models whose cancelled MA degree differs from the prototype's"
      }
     ],
     "artefact": "A18",
     "rows": [
      {
       "id": "r1",
       "label": [
        "perlag"
       ],
       "values": [
        3242.0,
        0.0,
        3164.0,
        0.0,
        0.0,
        78.0,
        0.0,
        0.0,
        4.21885e-15,
        null,
        null,
        0.0,
        null
       ]
      },
      {
       "id": "r2",
       "label": [
        "cancel"
       ],
       "values": [
        500.0,
        0.0,
        500.0,
        0.0,
        8.0,
        0.0,
        0.0,
        0.0,
        4.66294e-15,
        0.0,
        4.39426e-13,
        0.0,
        0.0
       ]
      },
      {
       "id": "r3",
       "label": [
        "stepdown"
       ],
       "values": [
        575.0,
        0.0,
        575.0,
        0.0,
        8.0,
        0.0,
        0.0,
        null,
        null,
        0.0,
        6.58518e-12,
        0.0,
        0.0
       ]
      },
      {
       "id": "r4",
       "label": [
        "cpp"
       ],
       "values": [
        800.0,
        0.0,
        797.0,
        0.0,
        8.0,
        3.0,
        0.0,
        null,
        null,
        0.0,
        5.20488e-10,
        0.0,
        0.0
       ]
      },
      {
       "id": "r5",
       "label": [
        "examples"
       ],
       "values": [
        2.0,
        0.0,
        2.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0
       ]
      },
      {
       "id": "r6",
       "label": [
        "all"
       ],
       "values": [
        5119.0,
        0.0,
        5038.0,
        0.0,
        24.0,
        81.0,
        0.0,
        0.0,
        4.66294e-15,
        0.0,
        5.20488e-10,
        0.0,
        0.0
       ]
      }
     ]
    },
    {
     "id": "T2",
     "description": "The 575 models of PL4 and PL5 (MA degree up to 535 before cancellation): step-down decisions of the prototype that differ from the exact oracle; the largest absolute difference of the bisection value from the certified largest mode modulus, over the models that have one; and the degrees.",
     "conditions": {
      "set": "stepdown"
     },
     "row_labels": [
      "set"
     ],
     "columns": [
      {
       "variable": "step-down decisions of the prototype that differ from the exact oracle"
      },
      {
       "variable": "max abs difference of the largest mode modulus, prototype's bisection against the exact oracle"
      },
      {
       "variable": "models with a bisection value"
      },
      {
       "variable": "max degree of theta, exact"
      },
      {
       "variable": "max degree of the cancelled MA polynomial, exact"
      }
     ],
     "artefact": "A18",
     "rows": [
      {
       "id": "r1",
       "label": [
        "stepdown"
       ],
       "values": [
        0.0,
        5.7387e-11,
        198.0,
        535.0,
        533.0
       ]
      }
     ]
    },
    {
     "id": "T3",
     "description": "The models of PL1 and PL2 (3042 ETS(A,N,A) grid models, 200 GUM models with lags (1, 12)): the counts of C1 and C2 with the exact oracle in place of the PBH reference and the band of 1e-8.",
     "conditions": {
      "set": "perlag"
     },
     "row_labels": [
      "family"
     ],
     "columns": [
      {
       "variable": "models accepted by the per-lag check that do not forget their initial states, exact oracle"
      },
      {
       "variable": "models rejected by the per-lag check that forget their initial states, exact oracle"
      },
      {
       "variable": "models accepted by the per-lag check"
      },
      {
       "variable": "models of the family"
      }
     ],
     "artefact": "A18",
     "rows": [
      {
       "id": "r1",
       "label": [
        "ETS(A,N,A)"
       ],
       "values": [
        1482.0,
        0.0,
        3042.0,
        3042.0
       ]
      },
      {
       "id": "r2",
       "label": [
        "GUM"
       ],
       "values": [
        10.0,
        1.0,
        193.0,
        200.0
       ]
      }
     ]
    },
    {
     "id": "T4",
     "description": "The models in the edge band, by set and family (run AC5.RN9): their number, the largest distance of the certified largest mode modulus from 1, those with roots proved on the unit circle, and those whose decision by the method of the original test (the PBH reference for perlag, the prototype's cancellation for cpp) differs from the oracle's, with the largest modulus difference.",
     "row_labels": [
      "set",
      "family"
     ],
     "columns": [
      {
       "variable": "models in the edge band"
      },
      {
       "variable": "max distance of the certified largest mode modulus from 1, edge models"
      },
      {
       "variable": "edge models with roots proved on the unit circle"
      },
      {
       "variable": "edge models whose decision differs from the exact oracle"
      },
      {
       "variable": "max abs difference of the largest mode modulus against the exact oracle, edge models"
      }
     ],
     "artefact": "A18",
     "rows": [
      {
       "id": "r1",
       "label": [
        "perlag",
        "ETS(A,N,A)"
       ],
       "values": [
        78.0,
        4.44089e-16,
        2.0,
        6.0,
        2.44249e-15
       ]
      },
      {
       "id": "r2",
       "label": [
        "cpp",
        "ETS high degree"
       ],
       "values": [
        3.0,
        6.89469e-09,
        0.0,
        0.0,
        3.70814e-14
       ]
      }
     ]
    },
    {
     "id": "T5",
     "description": "The examples of C10 and C11 (run AC5.RN9): the certified largest mode modulus, its difference from the PBH reference and from the prototype's roots after cancellation, and the exact degrees of theta, of the shared cyclotomic factor and of the gcd of theta and phi.",
     "row_labels": [
      "model"
     ],
     "columns": [
      {
       "variable": "largest mode modulus, exact oracle (theta_G)"
      },
      {
       "variable": "abs difference of the largest mode modulus, PBH reference against the exact oracle"
      },
      {
       "variable": "abs difference of the largest mode modulus, prototype's roots after cancellation against the exact oracle"
      },
      {
       "variable": "degree of theta, exact"
      },
      {
       "variable": "degree of the shared cyclotomic factor, exact"
      },
      {
       "variable": "degree of the exact gcd of theta and phi"
      }
     ],
     "artefact": "A18",
     "rows": [
      {
       "id": "r1",
       "label": [
        "ETS(A,N,A,A), alpha=0.3, gamma=(0.1,0.05)"
       ],
       "values": [
        0.999997,
        1.66533e-15,
        1.11022e-16,
        193.0,
        25.0,
        25.0
       ]
      },
      {
       "id": "r2",
       "label": [
        "GUM start, orders (2,2), lags (1,12)"
       ],
       "values": [
        0.982937,
        7.77156e-16,
        2.22045e-16,
        26.0,
        14.0,
        14.0
       ]
      }
     ]
    }
   ]
  }
 ],
 "limitations": [
  {
   "id": "L2",
   "category": "measurement",
   "statement": "The PBH reference and the cyclotomic cancellation were written by the same agent and share the lag-1 expansion code and numpy's LAPACK eigenvalue routines.",
   "affects": [
    "C1",
    "C2",
    "C3",
    "C10",
    "C11",
    "C16"
   ],
   "impact": "could_reverse",
   "mitigation": "addressed",
   "mitigation_evidence": "E25"
  },
  {
   "id": "L3",
   "category": "sampling",
   "statement": "The random model sets (persistence ranges, the probabilities of zero persistence and of a constant, the standard deviations of the GUM matrices) were chosen by the agent and not drawn from models estimated on data.",
   "affects": [
    "C2",
    "C3",
    "C4",
    "C5",
    "C16"
   ],
   "impact": "reduces_transferability",
   "mitigation": "none"
  },
  {
   "id": "L4",
   "category": "measurement",
   "statement": "The reference decisions use numpy's polynomial roots (companion-matrix eigenvalues) for polynomials of degree up to 535 before cancellation with many roots near the unit circle.",
   "affects": [
    "C4",
    "C5",
    "C16"
   ],
   "impact": "could_reverse",
   "mitigation": "addressed",
   "mitigation_evidence": "E25"
  },
  {
   "id": "L5",
   "category": "deviation",
   "statement": "The plans of the tests behind the step-down and bisection claims stated MA polynomial degrees up to 366; the generator code named in the plans, run unchanged, produced degrees up to 535 before cancellation.",
   "affects": [
    "C4",
    "C5"
   ],
   "impact": "reduces_transferability",
   "mitigation": "none"
  },
  {
   "id": "L8",
   "category": "model_specification",
   "statement": "For GUM models with structured parameters, such as a state with |F_ii| > 1 and zero persistence, theta and phi can share a factor with a root in |B| <= 1 that is not cyclotomic; the check keeps it and rejects the model although its observation weights decay, because the initial state of that mode has a growing effect.",
   "affects": [
    "C4",
    "C16"
   ],
   "impact": "reduces_transferability",
   "mitigation": "none"
  }
 ],
 "artefacts": [
  {
   "id": "A1",
   "kind": "code",
   "uri": "https://github.com/openforecast-org/smooth/blob/fe3ecfad42341fb0d2b81d02a7919b43baa5f695/.claude/research/eigenChecker/admissibility.py",
   "availability": {
    "level": "public"
   },
   "version": "sha256:f966bd9f065ee5453a2f809cb4e0f3aee938068589540b45ddf36eaa225c8b04",
   "licence": "LGPL-2.1-only",
   "description": "numpy prototype of the admissibility check of pure additive lagged SSOE models: lag-1 expansion, the per-lag check of smoothEigens(), the PBH reference, ARIMA-form polynomials by inverse DFT, cyclotomic cancellation, step-down test and bisection; ETS and GUM model builders"
  },
  {
   "id": "A2",
   "kind": "code",
   "uri": "https://github.com/openforecast-org/smooth/blob/fe3ecfad42341fb0d2b81d02a7919b43baa5f695/.claude/research/eigenChecker/explore.py",
   "availability": {
    "level": "public"
   },
   "version": "sha256:363cd20efd99fe98d1682440e14d160ddfe3095e27eb89e269465011d18a045d",
   "licence": "LGPL-2.1-only",
   "description": "exploratory script: ETS(A,N,A) cases, multiple seasonality and the GUM starting point, determinant identity, step-down and bisection on random GUMs, timings"
  },
  {
   "id": "A3",
   "kind": "code",
   "uri": "https://github.com/openforecast-org/smooth/blob/fe3ecfad42341fb0d2b81d02a7919b43baa5f695/.claude/research/eigenChecker/confirm.py",
   "availability": {
    "level": "public"
   },
   "version": "sha256:626d350fd940dd6fc4bdc057e350a3bbfcd92f71a51244fda0c31cb7d97e11f6",
   "licence": "LGPL-2.1-only",
   "description": "test script: per-lag check against the PBH reference, cancellation against the PBH reference, step-down decisions and bisection against roots, on seeded random model sets"
  },
  {
   "id": "A5",
   "kind": "code",
   "uri": "https://github.com/openforecast-org/smooth/blob/5d5611bcdcce26a3c363352fdd738c14f18c96f4/.claude/research/eigenChecker/cpp_check.py",
   "availability": {
    "level": "public"
   },
   "version": "sha256:da6d52153154136fa679681afd66ede768f211c56ace67ff139fa063e28cac2d",
   "licence": "LGPL-2.1-only",
   "description": "test script of the C++ implementation: smoothEigensR() through pkgload::load_all, called three times per model, against the numpy prototype on seeded random ETS and GUM models"
  },
  {
   "id": "A8",
   "kind": "code",
   "uri": "https://github.com/openforecast-org/smooth/blob/5d5611bcdcce26a3c363352fdd738c14f18c96f4/src/headers/eigenCalc.h",
   "availability": {
    "level": "public"
   },
   "version": "sha256:0f5604775db84b6739363561e87a908fb76c683ffcce3e3771a86227ed88f5d4",
   "licence": "LGPL-2.1-only",
   "description": "the C++ implementation in smooth: lagPolynomial(), minorPolynomial(), complexDeterminant(), fftCore(), cyclotomicPolynomial(), polynomialDivide(), cancelUnitRoots(), largestRootModulus() and smoothEigensCpp()"
  },
  {
   "id": "A18",
   "kind": "data",
   "uri": "https://entrylib.org/p/2026.000002/v3/files/files/adam-admissible-bounds.results.csv",
   "version": "sha256:96615c120ab55a010bb7fb0343bd8200729319db710c0e8a329209e385f674ac",
   "availability": {
    "level": "public"
   },
   "licence": "CC-BY-4.0",
   "description": "Every result of the lab record at full precision, one row per result: the lab result, the run that produced it, the quantity, its conditions (JSON) and the value.",
   "columns": [
    {
     "name": "lab_result",
     "dimension": "lab record result"
    },
    {
     "name": "run",
     "dimension": "lab record run"
    },
    {
     "name": "quantity",
     "dimension": "quantity"
    },
    {
     "name": "conditions",
     "dimension": "conditions of the result"
    },
    {
     "name": "value",
     "variable": "value of the quantity"
    }
   ]
  },
  {
   "id": "A19",
   "kind": "code",
   "uri": "https://github.com/openforecast-org/smooth/blob/dc74fc0c9dd1efc112b3f4b97a57c52ba54595c7/claimset-code/adam-admissible-bounds/independent/oracle.py",
   "version": "sha256:7be8ce868a8ca841e448deef541e48a99d9600581aeda524c38f28c7e3cf39c6",
   "availability": {
    "level": "public"
   },
   "licence": "LGPL-2.1-only",
   "description": "The exact oracle of the contributor P5 (with test_oracle.py and, from commit e4963c49, edge_report.py in the same folder): exact theta, phi, gcd and cyclotomic cancellation over the rationals, certified root enclosures with python-flint 0.9.0, and the comparison with the prototype's values."
  },
  {
   "id": "A20",
   "kind": "code",
   "uri": "https://github.com/openforecast-org/smooth/blob/d0872799007766a53c31c243b67fb21e99fc35a4/claimset-code/adam-admissible-bounds/export_models.py",
   "version": "sha256:f5da0ffd7e8b77e330604f24ddddf6a68dc6c5f138548e1854505bf2a904f891",
   "availability": {
    "level": "public"
   },
   "licence": "LGPL-2.1-only",
   "description": "Draws the models of the planned tests PL1-PL6 as confirm.py and cpp_check.py do and writes them, with the prototype's values for each, to models.json (lab runs RN57-RN61)."
  }
 ],
 "references": [
  {
   "id": "B1",
   "target": "10.1007/978-3-540-71918-2",
   "id_type": "doi"
  },
  {
   "id": "B2",
   "target": "10.1016/0047-259X(73)90030-4",
   "id_type": "doi"
  },
  {
   "id": "B3",
   "target": "10.32614/CRAN.package.smooth",
   "id_type": "doi"
  }
 ]
}
