universal-physics-tensor 9.0.0 → 11.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1109) hide show
  1. package/README.md +21 -17
  2. package/bin/upt.mjs +13 -1
  3. package/data/atlas/atlas.json +79 -68
  4. package/data/atlas/atlas.jsonld +1 -1
  5. package/data/atlas/diffusion.json +24 -23
  6. package/data/atlas/oscillators.json +21 -16
  7. package/data/atlas/waves.json +36 -31
  8. package/data/atlas/witness-results.json +11 -11
  9. package/data/bridge-catalog.json +1192 -1636
  10. package/data/bridge-catalog.schema.json +390 -135
  11. package/data/quantities.json +53 -19
  12. package/data/schemas/atlas-record.v0.json +184 -46
  13. package/data/units.json +33 -4
  14. package/dist/atlas/applicability.d.ts.map +1 -1
  15. package/dist/atlas/applicability.js +35 -18
  16. package/dist/atlas/applicability.js.map +1 -1
  17. package/dist/atlas/association.js.map +1 -1
  18. package/dist/atlas/benchmark/backend-shapes.d.ts.map +1 -1
  19. package/dist/atlas/benchmark/backend-shapes.js +5 -1
  20. package/dist/atlas/benchmark/backend-shapes.js.map +1 -1
  21. package/dist/atlas/benchmark/baselines.d.ts.map +1 -1
  22. package/dist/atlas/benchmark/baselines.js +8 -0
  23. package/dist/atlas/benchmark/baselines.js.map +1 -1
  24. package/dist/atlas/benchmark/hybrid-retrieval.d.ts +12 -3
  25. package/dist/atlas/benchmark/hybrid-retrieval.d.ts.map +1 -1
  26. package/dist/atlas/benchmark/hybrid-retrieval.js +30 -21
  27. package/dist/atlas/benchmark/hybrid-retrieval.js.map +1 -1
  28. package/dist/atlas/benchmark/leakage.js.map +1 -1
  29. package/dist/atlas/benchmark/loader.js +2 -2
  30. package/dist/atlas/benchmark/loader.js.map +1 -1
  31. package/dist/atlas/benchmark/run-atlas.d.ts.map +1 -1
  32. package/dist/atlas/benchmark/run-atlas.js +14 -2
  33. package/dist/atlas/benchmark/run-atlas.js.map +1 -1
  34. package/dist/atlas/benchmark/stats.d.ts +3 -3
  35. package/dist/atlas/benchmark/stats.d.ts.map +1 -1
  36. package/dist/atlas/benchmark/stats.js +16 -8
  37. package/dist/atlas/benchmark/stats.js.map +1 -1
  38. package/dist/atlas/benchmark/study.js.map +1 -1
  39. package/dist/atlas/benchmark/types.js.map +1 -1
  40. package/dist/atlas/bridge-record.d.ts +4 -4
  41. package/dist/atlas/bridge-record.d.ts.map +1 -1
  42. package/dist/atlas/bridge-record.js +6 -6
  43. package/dist/atlas/bridge-record.js.map +1 -1
  44. package/dist/atlas/catalog-formal-ref.d.ts +26 -3
  45. package/dist/atlas/catalog-formal-ref.d.ts.map +1 -1
  46. package/dist/atlas/catalog-formal-ref.js +52 -5
  47. package/dist/atlas/catalog-formal-ref.js.map +1 -1
  48. package/dist/atlas/chain-pipeline.d.ts +0 -11
  49. package/dist/atlas/chain-pipeline.d.ts.map +1 -1
  50. package/dist/atlas/chain-pipeline.js +12 -24
  51. package/dist/atlas/chain-pipeline.js.map +1 -1
  52. package/dist/atlas/composition-table.js.map +1 -1
  53. package/dist/atlas/conventions.js.map +1 -1
  54. package/dist/atlas/coverage.d.ts +2 -2
  55. package/dist/atlas/coverage.js.map +1 -1
  56. package/dist/atlas/derivation.js.map +1 -1
  57. package/dist/atlas/derive-evidence.d.ts +6 -4
  58. package/dist/atlas/derive-evidence.d.ts.map +1 -1
  59. package/dist/atlas/derive-evidence.js +7 -2
  60. package/dist/atlas/derive-evidence.js.map +1 -1
  61. package/dist/atlas/diffusion/bridges-closure.d.ts +0 -4
  62. package/dist/atlas/diffusion/bridges-closure.d.ts.map +1 -1
  63. package/dist/atlas/diffusion/bridges-closure.js +8 -17
  64. package/dist/atlas/diffusion/bridges-closure.js.map +1 -1
  65. package/dist/atlas/diffusion/bridges.d.ts.map +1 -1
  66. package/dist/atlas/diffusion/bridges.js +27 -42
  67. package/dist/atlas/diffusion/bridges.js.map +1 -1
  68. package/dist/atlas/diffusion/dimensions.d.ts +6 -14
  69. package/dist/atlas/diffusion/dimensions.d.ts.map +1 -1
  70. package/dist/atlas/diffusion/dimensions.js +8 -16
  71. package/dist/atlas/diffusion/dimensions.js.map +1 -1
  72. package/dist/atlas/diffusion/index.d.ts +1 -1
  73. package/dist/atlas/diffusion/index.d.ts.map +1 -1
  74. package/dist/atlas/diffusion/index.js.map +1 -1
  75. package/dist/atlas/diffusion/models.d.ts +3 -3
  76. package/dist/atlas/diffusion/models.d.ts.map +1 -1
  77. package/dist/atlas/diffusion/models.js +5 -10
  78. package/dist/atlas/diffusion/models.js.map +1 -1
  79. package/dist/atlas/diffusion/numerics.d.ts +16 -4
  80. package/dist/atlas/diffusion/numerics.d.ts.map +1 -1
  81. package/dist/atlas/diffusion/numerics.js +38 -24
  82. package/dist/atlas/diffusion/numerics.js.map +1 -1
  83. package/dist/atlas/error-algebra.d.ts +6 -0
  84. package/dist/atlas/error-algebra.d.ts.map +1 -1
  85. package/dist/atlas/error-algebra.js +26 -0
  86. package/dist/atlas/error-algebra.js.map +1 -1
  87. package/dist/atlas/export.d.ts +18 -2
  88. package/dist/atlas/export.d.ts.map +1 -1
  89. package/dist/atlas/export.js +9 -3
  90. package/dist/atlas/export.js.map +1 -1
  91. package/dist/atlas/families.d.ts +19 -2
  92. package/dist/atlas/families.d.ts.map +1 -1
  93. package/dist/atlas/families.js +26 -3
  94. package/dist/atlas/families.js.map +1 -1
  95. package/dist/atlas/family.d.ts +27 -0
  96. package/dist/atlas/family.d.ts.map +1 -0
  97. package/dist/atlas/family.js +12 -0
  98. package/dist/atlas/family.js.map +1 -0
  99. package/dist/atlas/index.d.ts +3 -2
  100. package/dist/atlas/index.d.ts.map +1 -1
  101. package/dist/atlas/index.js +2 -1
  102. package/dist/atlas/index.js.map +1 -1
  103. package/dist/atlas/link-prediction.d.ts +107 -4
  104. package/dist/atlas/link-prediction.d.ts.map +1 -1
  105. package/dist/atlas/link-prediction.js +212 -66
  106. package/dist/atlas/link-prediction.js.map +1 -1
  107. package/dist/atlas/model.js.map +1 -1
  108. package/dist/atlas/oscillators/bridges-coarse.d.ts.map +1 -1
  109. package/dist/atlas/oscillators/bridges-coarse.js +7 -12
  110. package/dist/atlas/oscillators/bridges-coarse.js.map +1 -1
  111. package/dist/atlas/oscillators/bridges-exact.d.ts.map +1 -1
  112. package/dist/atlas/oscillators/bridges-exact.js +6 -10
  113. package/dist/atlas/oscillators/bridges-exact.js.map +1 -1
  114. package/dist/atlas/oscillators/bridges-limits.d.ts +3 -16
  115. package/dist/atlas/oscillators/bridges-limits.d.ts.map +1 -1
  116. package/dist/atlas/oscillators/bridges-limits.js +23 -36
  117. package/dist/atlas/oscillators/bridges-limits.js.map +1 -1
  118. package/dist/atlas/oscillators/dimensions.d.ts +9 -21
  119. package/dist/atlas/oscillators/dimensions.d.ts.map +1 -1
  120. package/dist/atlas/oscillators/dimensions.js +9 -21
  121. package/dist/atlas/oscillators/dimensions.js.map +1 -1
  122. package/dist/atlas/oscillators/index.d.ts +1 -16
  123. package/dist/atlas/oscillators/index.d.ts.map +1 -1
  124. package/dist/atlas/oscillators/index.js.map +1 -1
  125. package/dist/atlas/oscillators/limit-witnesses.d.ts +2 -2
  126. package/dist/atlas/oscillators/limit-witnesses.d.ts.map +1 -1
  127. package/dist/atlas/oscillators/limit-witnesses.js +17 -15
  128. package/dist/atlas/oscillators/limit-witnesses.js.map +1 -1
  129. package/dist/atlas/oscillators/models.d.ts.map +1 -1
  130. package/dist/atlas/oscillators/models.js +2 -6
  131. package/dist/atlas/oscillators/models.js.map +1 -1
  132. package/dist/atlas/oscillators/norm-transport-witness.js.map +1 -1
  133. package/dist/atlas/oscillators/norm-transport.js.map +1 -1
  134. package/dist/atlas/oscillators/norms.js.map +1 -1
  135. package/dist/atlas/oscillators/pendulum-motion.d.ts +29 -6
  136. package/dist/atlas/oscillators/pendulum-motion.d.ts.map +1 -1
  137. package/dist/atlas/oscillators/pendulum-motion.js +60 -40
  138. package/dist/atlas/oscillators/pendulum-motion.js.map +1 -1
  139. package/dist/atlas/oscillators/phase-carriage.js.map +1 -1
  140. package/dist/atlas/oscillators/phase-translation.d.ts +0 -11
  141. package/dist/atlas/oscillators/phase-translation.d.ts.map +1 -1
  142. package/dist/atlas/oscillators/phase-translation.js +3 -4
  143. package/dist/atlas/oscillators/phase-translation.js.map +1 -1
  144. package/dist/atlas/oscillators/position-translation.d.ts +68 -7
  145. package/dist/atlas/oscillators/position-translation.d.ts.map +1 -1
  146. package/dist/atlas/oscillators/position-translation.js +123 -12
  147. package/dist/atlas/oscillators/position-translation.js.map +1 -1
  148. package/dist/atlas/oscillators/rejections.d.ts +0 -2
  149. package/dist/atlas/oscillators/rejections.d.ts.map +1 -1
  150. package/dist/atlas/oscillators/rejections.js +0 -7
  151. package/dist/atlas/oscillators/rejections.js.map +1 -1
  152. package/dist/atlas/path-bound.js.map +1 -1
  153. package/dist/atlas/physjs-entries.generated.d.ts +25 -24
  154. package/dist/atlas/physjs-entries.generated.d.ts.map +1 -1
  155. package/dist/atlas/physjs-entries.generated.js +25 -24
  156. package/dist/atlas/physjs-entries.generated.js.map +1 -1
  157. package/dist/atlas/physjs-ref.d.ts +107 -70
  158. package/dist/atlas/physjs-ref.d.ts.map +1 -1
  159. package/dist/atlas/physjs-ref.js +184 -101
  160. package/dist/atlas/physjs-ref.js.map +1 -1
  161. package/dist/atlas/physjs-reviewed.d.ts +31 -0
  162. package/dist/atlas/physjs-reviewed.d.ts.map +1 -0
  163. package/dist/atlas/physjs-reviewed.js +194 -0
  164. package/dist/atlas/physjs-reviewed.js.map +1 -0
  165. package/dist/atlas/poster/associations.js.map +1 -1
  166. package/dist/atlas/poster/derivations.js.map +1 -1
  167. package/dist/atlas/poster/statements.d.ts +0 -19
  168. package/dist/atlas/poster/statements.d.ts.map +1 -1
  169. package/dist/atlas/poster/statements.js +1 -1
  170. package/dist/atlas/poster/statements.js.map +1 -1
  171. package/dist/atlas/proof-target.d.ts +1 -1
  172. package/dist/atlas/proof-target.js +1 -1
  173. package/dist/atlas/proof-target.js.map +1 -1
  174. package/dist/atlas/public.d.ts +2 -1
  175. package/dist/atlas/public.d.ts.map +1 -1
  176. package/dist/atlas/public.js +2 -1
  177. package/dist/atlas/public.js.map +1 -1
  178. package/dist/atlas/regime.d.ts +1 -1
  179. package/dist/atlas/regime.d.ts.map +1 -1
  180. package/dist/atlas/regime.js +1 -1
  181. package/dist/atlas/regime.js.map +1 -1
  182. package/dist/atlas/serialize.d.ts +18 -12
  183. package/dist/atlas/serialize.d.ts.map +1 -1
  184. package/dist/atlas/serialize.js +28 -18
  185. package/dist/atlas/serialize.js.map +1 -1
  186. package/dist/atlas/statement.js.map +1 -1
  187. package/dist/atlas/text-overlap.d.ts +23 -0
  188. package/dist/atlas/text-overlap.d.ts.map +1 -0
  189. package/dist/atlas/text-overlap.js +41 -0
  190. package/dist/atlas/text-overlap.js.map +1 -0
  191. package/dist/atlas/translation-registry.js.map +1 -1
  192. package/dist/atlas/translation.js.map +1 -1
  193. package/dist/atlas/types.d.ts +9 -2
  194. package/dist/atlas/types.d.ts.map +1 -1
  195. package/dist/atlas/types.js +1 -1
  196. package/dist/atlas/types.js.map +1 -1
  197. package/dist/atlas/waves/bridges-closure.d.ts.map +1 -1
  198. package/dist/atlas/waves/bridges-closure.js +2 -9
  199. package/dist/atlas/waves/bridges-closure.js.map +1 -1
  200. package/dist/atlas/waves/bridges.d.ts.map +1 -1
  201. package/dist/atlas/waves/bridges.js +32 -52
  202. package/dist/atlas/waves/bridges.js.map +1 -1
  203. package/dist/atlas/waves/index.d.ts +1 -1
  204. package/dist/atlas/waves/index.d.ts.map +1 -1
  205. package/dist/atlas/waves/index.js.map +1 -1
  206. package/dist/atlas/waves/models.d.ts +5 -6
  207. package/dist/atlas/waves/models.d.ts.map +1 -1
  208. package/dist/atlas/waves/models.js +7 -13
  209. package/dist/atlas/waves/models.js.map +1 -1
  210. package/dist/atlas/waves/numerics.d.ts.map +1 -1
  211. package/dist/atlas/waves/numerics.js +10 -3
  212. package/dist/atlas/waves/numerics.js.map +1 -1
  213. package/dist/atlas/witness-artifact.js.map +1 -1
  214. package/dist/atlas/witness-dominance.d.ts +4 -3
  215. package/dist/atlas/witness-dominance.d.ts.map +1 -1
  216. package/dist/atlas/witness-dominance.js +15 -5
  217. package/dist/atlas/witness-dominance.js.map +1 -1
  218. package/dist/atlas/witness-numeric.d.ts +38 -4
  219. package/dist/atlas/witness-numeric.d.ts.map +1 -1
  220. package/dist/atlas/witness-numeric.js +80 -2
  221. package/dist/atlas/witness-numeric.js.map +1 -1
  222. package/dist/atlas/witness-result.d.ts +7 -1
  223. package/dist/atlas/witness-result.d.ts.map +1 -1
  224. package/dist/atlas/witness-result.js.map +1 -1
  225. package/dist/atlas/witness-specs.d.ts.map +1 -1
  226. package/dist/atlas/witness-specs.js +19 -0
  227. package/dist/atlas/witness-specs.js.map +1 -1
  228. package/dist/atlas/witness-symbolic.d.ts +75 -3
  229. package/dist/atlas/witness-symbolic.d.ts.map +1 -1
  230. package/dist/atlas/witness-symbolic.js +116 -10
  231. package/dist/atlas/witness-symbolic.js.map +1 -1
  232. package/dist/atlas/witnesses/quantum-support.js.map +1 -1
  233. package/dist/bridges/caller-table.d.ts +1 -1
  234. package/dist/bridges/caller-table.d.ts.map +1 -1
  235. package/dist/bridges/caller-table.js.map +1 -1
  236. package/dist/bridges/carrier-sign.d.ts.map +1 -1
  237. package/dist/bridges/carrier-sign.js +8 -3
  238. package/dist/bridges/carrier-sign.js.map +1 -1
  239. package/dist/bridges/catalog-adapter.d.ts +12 -3
  240. package/dist/bridges/catalog-adapter.d.ts.map +1 -1
  241. package/dist/bridges/catalog-adapter.js +17 -9
  242. package/dist/bridges/catalog-adapter.js.map +1 -1
  243. package/dist/bridges/catalog-load.d.ts +12 -2
  244. package/dist/bridges/catalog-load.d.ts.map +1 -1
  245. package/dist/bridges/catalog-load.js +181 -13
  246. package/dist/bridges/catalog-load.js.map +1 -1
  247. package/dist/bridges/catalog-types.d.ts +74 -26
  248. package/dist/bridges/catalog-types.d.ts.map +1 -1
  249. package/dist/bridges/catalog-types.js +11 -1
  250. package/dist/bridges/catalog-types.js.map +1 -1
  251. package/dist/bridges/coefficient-statement.js +1 -5
  252. package/dist/bridges/coefficient-statement.js.map +1 -1
  253. package/dist/bridges/confrontation-coverage.js.map +1 -1
  254. package/dist/bridges/confrontations.d.ts +1 -1
  255. package/dist/bridges/confrontations.d.ts.map +1 -1
  256. package/dist/bridges/confrontations.js +1 -1
  257. package/dist/bridges/confrontations.js.map +1 -1
  258. package/dist/bridges/evaluation-errors.d.ts +46 -3
  259. package/dist/bridges/evaluation-errors.d.ts.map +1 -1
  260. package/dist/bridges/evaluation-errors.js +40 -4
  261. package/dist/bridges/evaluation-errors.js.map +1 -1
  262. package/dist/bridges/evaluator-inputs.d.ts.map +1 -1
  263. package/dist/bridges/evaluator-inputs.js +7 -5
  264. package/dist/bridges/evaluator-inputs.js.map +1 -1
  265. package/dist/bridges/evaluators.d.ts +17 -2
  266. package/dist/bridges/evaluators.d.ts.map +1 -1
  267. package/dist/bridges/evaluators.js +76 -28
  268. package/dist/bridges/evaluators.js.map +1 -1
  269. package/dist/bridges/expr-parse.d.ts +38 -4
  270. package/dist/bridges/expr-parse.d.ts.map +1 -1
  271. package/dist/bridges/expr-parse.js +101 -12
  272. package/dist/bridges/expr-parse.js.map +1 -1
  273. package/dist/bridges/holds.d.ts +40 -4
  274. package/dist/bridges/holds.d.ts.map +1 -1
  275. package/dist/bridges/holds.js +128 -19
  276. package/dist/bridges/holds.js.map +1 -1
  277. package/dist/bridges/index.d.ts +15 -14
  278. package/dist/bridges/index.d.ts.map +1 -1
  279. package/dist/bridges/index.js +14 -15
  280. package/dist/bridges/index.js.map +1 -1
  281. package/dist/bridges/input-contract.js.map +1 -1
  282. package/dist/bridges/membership.d.ts +5 -3
  283. package/dist/bridges/membership.d.ts.map +1 -1
  284. package/dist/bridges/membership.js +5 -6
  285. package/dist/bridges/membership.js.map +1 -1
  286. package/dist/bridges/notices.d.ts.map +1 -1
  287. package/dist/bridges/notices.js +5 -5
  288. package/dist/bridges/notices.js.map +1 -1
  289. package/dist/bridges/observations/types.js.map +1 -1
  290. package/dist/bridges/rejected.d.ts +11 -17
  291. package/dist/bridges/rejected.d.ts.map +1 -1
  292. package/dist/bridges/rejected.js +13 -68
  293. package/dist/bridges/rejected.js.map +1 -1
  294. package/dist/bridges/relation-eval.d.ts +6 -7
  295. package/dist/bridges/relation-eval.d.ts.map +1 -1
  296. package/dist/bridges/relation-eval.js +20 -50
  297. package/dist/bridges/relation-eval.js.map +1 -1
  298. package/dist/bridges/rhs-registry.js.map +1 -1
  299. package/dist/bridges/sensitivity.d.ts +11 -3
  300. package/dist/bridges/sensitivity.d.ts.map +1 -1
  301. package/dist/bridges/sensitivity.js +27 -13
  302. package/dist/bridges/sensitivity.js.map +1 -1
  303. package/dist/bridges/tensor-index.js.map +1 -1
  304. package/dist/bridges/types.d.ts +1 -7
  305. package/dist/bridges/types.d.ts.map +1 -1
  306. package/dist/bridges/types.js +1 -4
  307. package/dist/bridges/types.js.map +1 -1
  308. package/dist/bridges/validity.d.ts +33 -0
  309. package/dist/bridges/validity.d.ts.map +1 -0
  310. package/dist/bridges/validity.js +67 -0
  311. package/dist/bridges/validity.js.map +1 -0
  312. package/dist/canonical/canonical-equation.js.map +1 -1
  313. package/dist/canonical/dimensional-fields.js.map +1 -1
  314. package/dist/canonical/entries/_l1-build.js.map +1 -1
  315. package/dist/canonical/entries/atomic.js +1 -3
  316. package/dist/canonical/entries/atomic.js.map +1 -1
  317. package/dist/canonical/entries/condensed-matter.d.ts.map +1 -1
  318. package/dist/canonical/entries/condensed-matter.js +8 -9
  319. package/dist/canonical/entries/condensed-matter.js.map +1 -1
  320. package/dist/canonical/entries/dimensional-classics.d.ts.map +1 -1
  321. package/dist/canonical/entries/dimensional-classics.js +5 -6
  322. package/dist/canonical/entries/dimensional-classics.js.map +1 -1
  323. package/dist/canonical/entries/electromagnetism.d.ts.map +1 -1
  324. package/dist/canonical/entries/electromagnetism.js +6 -12
  325. package/dist/canonical/entries/electromagnetism.js.map +1 -1
  326. package/dist/canonical/entries/fluids-waves.d.ts.map +1 -1
  327. package/dist/canonical/entries/fluids-waves.js +3 -7
  328. package/dist/canonical/entries/fluids-waves.js.map +1 -1
  329. package/dist/canonical/entries/mechanics.d.ts.map +1 -1
  330. package/dist/canonical/entries/mechanics.js +4 -6
  331. package/dist/canonical/entries/mechanics.js.map +1 -1
  332. package/dist/canonical/entries/nonmonomial.d.ts.map +1 -1
  333. package/dist/canonical/entries/nonmonomial.js +38 -39
  334. package/dist/canonical/entries/nonmonomial.js.map +1 -1
  335. package/dist/canonical/entries/relativity.d.ts.map +1 -1
  336. package/dist/canonical/entries/relativity.js +6 -6
  337. package/dist/canonical/entries/relativity.js.map +1 -1
  338. package/dist/canonical/entries/statistical-mechanics.js +5 -5
  339. package/dist/canonical/entries/statistical-mechanics.js.map +1 -1
  340. package/dist/canonical/entries/thermo-nuclear-cosmo.d.ts.map +1 -1
  341. package/dist/canonical/entries/thermo-nuclear-cosmo.js +6 -10
  342. package/dist/canonical/entries/thermo-nuclear-cosmo.js.map +1 -1
  343. package/dist/canonical/fixed-points.d.ts +94 -0
  344. package/dist/canonical/fixed-points.d.ts.map +1 -0
  345. package/dist/canonical/fixed-points.js +81 -0
  346. package/dist/canonical/fixed-points.js.map +1 -0
  347. package/dist/canonical/linkage.d.ts +29 -4
  348. package/dist/canonical/linkage.d.ts.map +1 -1
  349. package/dist/canonical/linkage.js +47 -64
  350. package/dist/canonical/linkage.js.map +1 -1
  351. package/dist/canonical/normal-form.d.ts +0 -8
  352. package/dist/canonical/normal-form.d.ts.map +1 -1
  353. package/dist/canonical/normal-form.js +22 -23
  354. package/dist/canonical/normal-form.js.map +1 -1
  355. package/dist/canonical/registry.js.map +1 -1
  356. package/dist/canonical/residual.js.map +1 -1
  357. package/dist/canonical/seed-l-layer.d.ts +7 -1
  358. package/dist/canonical/seed-l-layer.d.ts.map +1 -1
  359. package/dist/canonical/seed-l-layer.js +7 -1
  360. package/dist/canonical/seed-l-layer.js.map +1 -1
  361. package/dist/canonical/structural.d.ts +42 -21
  362. package/dist/canonical/structural.d.ts.map +1 -1
  363. package/dist/canonical/structural.js +64 -23
  364. package/dist/canonical/structural.js.map +1 -1
  365. package/dist/cases/brownian-sphere.d.ts +3 -3
  366. package/dist/cases/brownian-sphere.d.ts.map +1 -1
  367. package/dist/cases/brownian-sphere.js +10 -9
  368. package/dist/cases/brownian-sphere.js.map +1 -1
  369. package/dist/cases/damped-resonator.d.ts.map +1 -1
  370. package/dist/cases/damped-resonator.js +8 -11
  371. package/dist/cases/damped-resonator.js.map +1 -1
  372. package/dist/cases/index.js.map +1 -1
  373. package/dist/cases/kepler-rv.d.ts +1 -1
  374. package/dist/cases/kepler-rv.d.ts.map +1 -1
  375. package/dist/cases/kepler-rv.js +3 -2
  376. package/dist/cases/kepler-rv.js.map +1 -1
  377. package/dist/cases/lumped-cooling.d.ts +8 -3
  378. package/dist/cases/lumped-cooling.d.ts.map +1 -1
  379. package/dist/cases/lumped-cooling.js +22 -24
  380. package/dist/cases/lumped-cooling.js.map +1 -1
  381. package/dist/cases/quadrature.d.ts +7 -9
  382. package/dist/cases/quadrature.d.ts.map +1 -1
  383. package/dist/cases/quadrature.js +28 -32
  384. package/dist/cases/quadrature.js.map +1 -1
  385. package/dist/cases/resistor-noise.js +7 -7
  386. package/dist/cases/resistor-noise.js.map +1 -1
  387. package/dist/cases/skin-depth.d.ts +0 -4
  388. package/dist/cases/skin-depth.d.ts.map +1 -1
  389. package/dist/cases/skin-depth.js +3 -7
  390. package/dist/cases/skin-depth.js.map +1 -1
  391. package/dist/cases/types.js.map +1 -1
  392. package/dist/cli/args.d.ts +30 -3
  393. package/dist/cli/args.d.ts.map +1 -1
  394. package/dist/cli/args.js +47 -9
  395. package/dist/cli/args.js.map +1 -1
  396. package/dist/cli/bindings.d.ts +13 -0
  397. package/dist/cli/bindings.d.ts.map +1 -0
  398. package/dist/cli/bindings.js +33 -0
  399. package/dist/cli/bindings.js.map +1 -0
  400. package/dist/cli/closed-form-range.js.map +1 -1
  401. package/dist/cli/command.d.ts +8 -1
  402. package/dist/cli/command.d.ts.map +1 -1
  403. package/dist/cli/command.js.map +1 -1
  404. package/dist/cli/commands/_atlas-map.d.ts +2 -11
  405. package/dist/cli/commands/_atlas-map.d.ts.map +1 -1
  406. package/dist/cli/commands/_atlas-map.js +50 -35
  407. package/dist/cli/commands/_atlas-map.js.map +1 -1
  408. package/dist/cli/commands/_atlas-route.d.ts.map +1 -1
  409. package/dist/cli/commands/_atlas-route.js +6 -2
  410. package/dist/cli/commands/_atlas-route.js.map +1 -1
  411. package/dist/cli/commands/_discovery-opts.d.ts.map +1 -1
  412. package/dist/cli/commands/_discovery-opts.js +48 -14
  413. package/dist/cli/commands/_discovery-opts.js.map +1 -1
  414. package/dist/cli/commands/atlas.d.ts.map +1 -1
  415. package/dist/cli/commands/atlas.js +9 -8
  416. package/dist/cli/commands/atlas.js.map +1 -1
  417. package/dist/cli/commands/audit.d.ts.map +1 -1
  418. package/dist/cli/commands/audit.js +20 -20
  419. package/dist/cli/commands/audit.js.map +1 -1
  420. package/dist/cli/commands/axes.d.ts.map +1 -1
  421. package/dist/cli/commands/axes.js +20 -1
  422. package/dist/cli/commands/axes.js.map +1 -1
  423. package/dist/cli/commands/candidates.d.ts.map +1 -1
  424. package/dist/cli/commands/candidates.js +16 -8
  425. package/dist/cli/commands/candidates.js.map +1 -1
  426. package/dist/cli/commands/canonical.js.map +1 -1
  427. package/dist/cli/commands/chain.js +1 -1
  428. package/dist/cli/commands/chain.js.map +1 -1
  429. package/dist/cli/commands/confront.d.ts.map +1 -1
  430. package/dist/cli/commands/confront.js +22 -20
  431. package/dist/cli/commands/confront.js.map +1 -1
  432. package/dist/cli/commands/connectors.js.map +1 -1
  433. package/dist/cli/commands/coverage.js.map +1 -1
  434. package/dist/cli/commands/derive.d.ts.map +1 -1
  435. package/dist/cli/commands/derive.js +60 -35
  436. package/dist/cli/commands/derive.js.map +1 -1
  437. package/dist/cli/commands/discover.d.ts.map +1 -1
  438. package/dist/cli/commands/discover.js +20 -10
  439. package/dist/cli/commands/discover.js.map +1 -1
  440. package/dist/cli/commands/eval.d.ts.map +1 -1
  441. package/dist/cli/commands/eval.js +14 -10
  442. package/dist/cli/commands/eval.js.map +1 -1
  443. package/dist/cli/commands/evaluate.d.ts.map +1 -1
  444. package/dist/cli/commands/evaluate.js +108 -58
  445. package/dist/cli/commands/evaluate.js.map +1 -1
  446. package/dist/cli/commands/explain.d.ts.map +1 -1
  447. package/dist/cli/commands/explain.js +16 -8
  448. package/dist/cli/commands/explain.js.map +1 -1
  449. package/dist/cli/commands/frontier.js.map +1 -1
  450. package/dist/cli/commands/ground.d.ts.map +1 -1
  451. package/dist/cli/commands/ground.js +41 -10
  452. package/dist/cli/commands/ground.js.map +1 -1
  453. package/dist/cli/commands/index.js.map +1 -1
  454. package/dist/cli/commands/map.d.ts.map +1 -1
  455. package/dist/cli/commands/map.js +155 -92
  456. package/dist/cli/commands/map.js.map +1 -1
  457. package/dist/cli/commands/metric.d.ts.map +1 -1
  458. package/dist/cli/commands/metric.js +58 -20
  459. package/dist/cli/commands/metric.js.map +1 -1
  460. package/dist/cli/commands/path.d.ts +10 -0
  461. package/dist/cli/commands/path.d.ts.map +1 -1
  462. package/dist/cli/commands/path.js +29 -7
  463. package/dist/cli/commands/path.js.map +1 -1
  464. package/dist/cli/commands/predict.js.map +1 -1
  465. package/dist/cli/commands/priority.js.map +1 -1
  466. package/dist/cli/commands/probe.d.ts.map +1 -1
  467. package/dist/cli/commands/probe.js +105 -38
  468. package/dist/cli/commands/probe.js.map +1 -1
  469. package/dist/cli/commands/recover.js +1 -1
  470. package/dist/cli/commands/recover.js.map +1 -1
  471. package/dist/cli/commands/regime.d.ts +5 -4
  472. package/dist/cli/commands/regime.d.ts.map +1 -1
  473. package/dist/cli/commands/regime.js +25 -26
  474. package/dist/cli/commands/regime.js.map +1 -1
  475. package/dist/cli/commands/retrieve.d.ts.map +1 -1
  476. package/dist/cli/commands/retrieve.js +23 -14
  477. package/dist/cli/commands/retrieve.js.map +1 -1
  478. package/dist/cli/commands/search.d.ts.map +1 -1
  479. package/dist/cli/commands/search.js +9 -4
  480. package/dist/cli/commands/search.js.map +1 -1
  481. package/dist/cli/commands/symbolic.js +31 -36
  482. package/dist/cli/commands/symbolic.js.map +1 -1
  483. package/dist/cli/commands/testplan.d.ts.map +1 -1
  484. package/dist/cli/commands/testplan.js +5 -3
  485. package/dist/cli/commands/testplan.js.map +1 -1
  486. package/dist/cli/conventions.js.map +1 -1
  487. package/dist/cli/determination.js.map +1 -1
  488. package/dist/cli/errors.js.map +1 -1
  489. package/dist/cli/euler-guard.js.map +1 -1
  490. package/dist/cli/eval-numbers.js.map +1 -1
  491. package/dist/cli/expr-print.d.ts +28 -3
  492. package/dist/cli/expr-print.d.ts.map +1 -1
  493. package/dist/cli/expr-print.js +42 -22
  494. package/dist/cli/expr-print.js.map +1 -1
  495. package/dist/cli/flag-help.js.map +1 -1
  496. package/dist/cli/graphs.js.map +1 -1
  497. package/dist/cli/library-defaults.d.ts +19 -0
  498. package/dist/cli/library-defaults.d.ts.map +1 -0
  499. package/dist/cli/library-defaults.js +22 -0
  500. package/dist/cli/library-defaults.js.map +1 -0
  501. package/dist/cli/main.d.ts +7 -0
  502. package/dist/cli/main.d.ts.map +1 -1
  503. package/dist/cli/main.js +25 -6
  504. package/dist/cli/main.js.map +1 -1
  505. package/dist/cli/map-evidence.js.map +1 -1
  506. package/dist/cli/numeric-flag.d.ts +12 -0
  507. package/dist/cli/numeric-flag.d.ts.map +1 -0
  508. package/dist/cli/numeric-flag.js +44 -0
  509. package/dist/cli/numeric-flag.js.map +1 -0
  510. package/dist/cli/output.d.ts +23 -6
  511. package/dist/cli/output.d.ts.map +1 -1
  512. package/dist/cli/output.js +15 -0
  513. package/dist/cli/output.js.map +1 -1
  514. package/dist/cli/published-url.js.map +1 -1
  515. package/dist/cli/record-reach.d.ts +6 -0
  516. package/dist/cli/record-reach.d.ts.map +1 -1
  517. package/dist/cli/record-reach.js +17 -11
  518. package/dist/cli/record-reach.js.map +1 -1
  519. package/dist/cli/record-tables.d.ts.map +1 -1
  520. package/dist/cli/record-tables.js +7 -6
  521. package/dist/cli/record-tables.js.map +1 -1
  522. package/dist/cli/record.d.ts +1 -5
  523. package/dist/cli/record.d.ts.map +1 -1
  524. package/dist/cli/record.js +40 -20
  525. package/dist/cli/record.js.map +1 -1
  526. package/dist/cli/search-index.d.ts +5 -0
  527. package/dist/cli/search-index.d.ts.map +1 -1
  528. package/dist/cli/search-index.js +19 -7
  529. package/dist/cli/search-index.js.map +1 -1
  530. package/dist/cli/statuses.d.ts +0 -2
  531. package/dist/cli/statuses.d.ts.map +1 -1
  532. package/dist/cli/statuses.js +0 -7
  533. package/dist/cli/statuses.js.map +1 -1
  534. package/dist/cli/stored-results.d.ts +7 -0
  535. package/dist/cli/stored-results.d.ts.map +1 -0
  536. package/dist/cli/stored-results.js +23 -0
  537. package/dist/cli/stored-results.js.map +1 -0
  538. package/dist/cli/top-level-help.js.map +1 -1
  539. package/dist/cli/version.d.ts.map +1 -1
  540. package/dist/cli/version.js +7 -5
  541. package/dist/cli/version.js.map +1 -1
  542. package/dist/cli-api.d.ts +49 -14
  543. package/dist/cli-api.d.ts.map +1 -1
  544. package/dist/cli-api.js +42 -17
  545. package/dist/cli-api.js.map +1 -1
  546. package/dist/composition/adjudication.js.map +1 -1
  547. package/dist/composition/algebraic-equivalence.d.ts +43 -0
  548. package/dist/composition/algebraic-equivalence.d.ts.map +1 -0
  549. package/dist/composition/algebraic-equivalence.js +115 -0
  550. package/dist/composition/algebraic-equivalence.js.map +1 -0
  551. package/dist/composition/aliases.js.map +1 -1
  552. package/dist/composition/audit-coverage.d.ts +2 -0
  553. package/dist/composition/audit-coverage.d.ts.map +1 -1
  554. package/dist/composition/audit-coverage.js.map +1 -1
  555. package/dist/composition/axes.d.ts +6 -0
  556. package/dist/composition/axes.d.ts.map +1 -1
  557. package/dist/composition/axes.js +18 -6
  558. package/dist/composition/axes.js.map +1 -1
  559. package/dist/composition/axis-audit.d.ts +47 -20
  560. package/dist/composition/axis-audit.d.ts.map +1 -1
  561. package/dist/composition/axis-audit.js +82 -9
  562. package/dist/composition/axis-audit.js.map +1 -1
  563. package/dist/composition/bridge-analysis.d.ts +14 -15
  564. package/dist/composition/bridge-analysis.d.ts.map +1 -1
  565. package/dist/composition/bridge-analysis.js +148 -91
  566. package/dist/composition/bridge-analysis.js.map +1 -1
  567. package/dist/composition/bridge-prediction.d.ts +5 -1
  568. package/dist/composition/bridge-prediction.d.ts.map +1 -1
  569. package/dist/composition/bridge-prediction.js +12 -16
  570. package/dist/composition/bridge-prediction.js.map +1 -1
  571. package/dist/composition/buckingham-filter.js.map +1 -1
  572. package/dist/composition/canonical-compare.d.ts +40 -0
  573. package/dist/composition/canonical-compare.d.ts.map +1 -1
  574. package/dist/composition/canonical-compare.js +134 -26
  575. package/dist/composition/canonical-compare.js.map +1 -1
  576. package/dist/composition/canonical-graph.d.ts +9 -10
  577. package/dist/composition/canonical-graph.d.ts.map +1 -1
  578. package/dist/composition/canonical-graph.js +33 -102
  579. package/dist/composition/canonical-graph.js.map +1 -1
  580. package/dist/composition/canonical-json.js +2 -2
  581. package/dist/composition/canonical-json.js.map +1 -1
  582. package/dist/composition/canonical-prefactors.js.map +1 -1
  583. package/dist/composition/catalog-graph.d.ts.map +1 -1
  584. package/dist/composition/catalog-graph.js +8 -25
  585. package/dist/composition/catalog-graph.js.map +1 -1
  586. package/dist/composition/chain-candidate.d.ts +10 -0
  587. package/dist/composition/chain-candidate.d.ts.map +1 -1
  588. package/dist/composition/chain-candidate.js +11 -2
  589. package/dist/composition/chain-candidate.js.map +1 -1
  590. package/dist/composition/chain-match.d.ts +6 -3
  591. package/dist/composition/chain-match.d.ts.map +1 -1
  592. package/dist/composition/chain-match.js +4 -1
  593. package/dist/composition/chain-match.js.map +1 -1
  594. package/dist/composition/chain-regime.js.map +1 -1
  595. package/dist/composition/chain-result.d.ts.map +1 -1
  596. package/dist/composition/chain-result.js +2 -14
  597. package/dist/composition/chain-result.js.map +1 -1
  598. package/dist/composition/compose-surface.js.map +1 -1
  599. package/dist/composition/compose-symbolic.d.ts.map +1 -1
  600. package/dist/composition/compose-symbolic.js +3 -2
  601. package/dist/composition/compose-symbolic.js.map +1 -1
  602. package/dist/composition/compose.d.ts.map +1 -1
  603. package/dist/composition/compose.js +166 -41
  604. package/dist/composition/compose.js.map +1 -1
  605. package/dist/composition/composition-recovery.d.ts.map +1 -1
  606. package/dist/composition/composition-recovery.js +4 -7
  607. package/dist/composition/composition-recovery.js.map +1 -1
  608. package/dist/composition/consequence.d.ts.map +1 -1
  609. package/dist/composition/consequence.js +15 -6
  610. package/dist/composition/consequence.js.map +1 -1
  611. package/dist/composition/consistency.js.map +1 -1
  612. package/dist/composition/descriptor.d.ts +1 -1
  613. package/dist/composition/descriptor.d.ts.map +1 -1
  614. package/dist/composition/descriptor.js.map +1 -1
  615. package/dist/composition/dimension-adjacency.js.map +1 -1
  616. package/dist/composition/discovery.d.ts +77 -11
  617. package/dist/composition/discovery.d.ts.map +1 -1
  618. package/dist/composition/discovery.js +194 -80
  619. package/dist/composition/discovery.js.map +1 -1
  620. package/dist/composition/edge.d.ts +40 -10
  621. package/dist/composition/edge.d.ts.map +1 -1
  622. package/dist/composition/edge.js +47 -12
  623. package/dist/composition/edge.js.map +1 -1
  624. package/dist/composition/enumerate.d.ts +2 -2
  625. package/dist/composition/enumerate.d.ts.map +1 -1
  626. package/dist/composition/enumerate.js +18 -3
  627. package/dist/composition/enumerate.js.map +1 -1
  628. package/dist/composition/evaluate-relation.d.ts +35 -11
  629. package/dist/composition/evaluate-relation.d.ts.map +1 -1
  630. package/dist/composition/evaluate-relation.js +60 -39
  631. package/dist/composition/evaluate-relation.js.map +1 -1
  632. package/dist/composition/explain.d.ts +5 -9
  633. package/dist/composition/explain.d.ts.map +1 -1
  634. package/dist/composition/explain.js +38 -18
  635. package/dist/composition/explain.js.map +1 -1
  636. package/dist/composition/expr-eval.d.ts.map +1 -1
  637. package/dist/composition/expr-eval.js +2 -11
  638. package/dist/composition/expr-eval.js.map +1 -1
  639. package/dist/composition/expr-simplify.d.ts +16 -0
  640. package/dist/composition/expr-simplify.d.ts.map +1 -1
  641. package/dist/composition/expr-simplify.js +24 -59
  642. package/dist/composition/expr-simplify.js.map +1 -1
  643. package/dist/composition/expr-subst.js.map +1 -1
  644. package/dist/composition/formula-shape.d.ts +28 -0
  645. package/dist/composition/formula-shape.d.ts.map +1 -1
  646. package/dist/composition/formula-shape.js +96 -2
  647. package/dist/composition/formula-shape.js.map +1 -1
  648. package/dist/composition/frontier-account.d.ts +3 -2
  649. package/dist/composition/frontier-account.d.ts.map +1 -1
  650. package/dist/composition/frontier-account.js +7 -3
  651. package/dist/composition/frontier-account.js.map +1 -1
  652. package/dist/composition/graph-structure.d.ts +98 -0
  653. package/dist/composition/graph-structure.d.ts.map +1 -0
  654. package/dist/composition/graph-structure.js +167 -0
  655. package/dist/composition/graph-structure.js.map +1 -0
  656. package/dist/composition/graph-viz-svg.d.ts.map +1 -1
  657. package/dist/composition/graph-viz-svg.js +1 -1
  658. package/dist/composition/graph-viz-svg.js.map +1 -1
  659. package/dist/composition/graph-viz.d.ts.map +1 -1
  660. package/dist/composition/graph-viz.js +8 -37
  661. package/dist/composition/graph-viz.js.map +1 -1
  662. package/dist/composition/grounding.js.map +1 -1
  663. package/dist/composition/identifiability.d.ts +91 -4
  664. package/dist/composition/identifiability.d.ts.map +1 -1
  665. package/dist/composition/identifiability.js +363 -6
  666. package/dist/composition/identifiability.js.map +1 -1
  667. package/dist/composition/index.d.ts +14 -8
  668. package/dist/composition/index.d.ts.map +1 -1
  669. package/dist/composition/index.js +7 -5
  670. package/dist/composition/index.js.map +1 -1
  671. package/dist/composition/mathts-quiet.d.ts +29 -0
  672. package/dist/composition/mathts-quiet.d.ts.map +1 -0
  673. package/dist/composition/mathts-quiet.js +57 -0
  674. package/dist/composition/mathts-quiet.js.map +1 -0
  675. package/dist/composition/mathts-scalar-symbols.d.ts.map +1 -1
  676. package/dist/composition/mathts-scalar-symbols.js +20 -35
  677. package/dist/composition/mathts-scalar-symbols.js.map +1 -1
  678. package/dist/composition/not-composable-seeds.d.ts +3 -1
  679. package/dist/composition/not-composable-seeds.d.ts.map +1 -1
  680. package/dist/composition/not-composable-seeds.js +2 -0
  681. package/dist/composition/not-composable-seeds.js.map +1 -1
  682. package/dist/composition/probe/backend-protocol.js.map +1 -1
  683. package/dist/composition/probe/candidate-store.js.map +1 -1
  684. package/dist/composition/probe/corpus.d.ts +4 -2
  685. package/dist/composition/probe/corpus.d.ts.map +1 -1
  686. package/dist/composition/probe/corpus.js +20 -9
  687. package/dist/composition/probe/corpus.js.map +1 -1
  688. package/dist/composition/probe/dataset.d.ts +17 -0
  689. package/dist/composition/probe/dataset.d.ts.map +1 -1
  690. package/dist/composition/probe/dataset.js +95 -50
  691. package/dist/composition/probe/dataset.js.map +1 -1
  692. package/dist/composition/probe/experiment-design.d.ts +5 -1
  693. package/dist/composition/probe/experiment-design.d.ts.map +1 -1
  694. package/dist/composition/probe/experiment-design.js +44 -24
  695. package/dist/composition/probe/experiment-design.js.map +1 -1
  696. package/dist/composition/probe/expression-gaps.js.map +1 -1
  697. package/dist/composition/probe/falsify.d.ts +14 -3
  698. package/dist/composition/probe/falsify.d.ts.map +1 -1
  699. package/dist/composition/probe/falsify.js +16 -27
  700. package/dist/composition/probe/falsify.js.map +1 -1
  701. package/dist/composition/probe/fingerprint.js.map +1 -1
  702. package/dist/composition/probe/fit.d.ts +7 -1
  703. package/dist/composition/probe/fit.d.ts.map +1 -1
  704. package/dist/composition/probe/fit.js +48 -23
  705. package/dist/composition/probe/fit.js.map +1 -1
  706. package/dist/composition/probe/frontier.d.ts.map +1 -1
  707. package/dist/composition/probe/frontier.js +33 -15
  708. package/dist/composition/probe/frontier.js.map +1 -1
  709. package/dist/composition/probe/generator.d.ts +27 -1
  710. package/dist/composition/probe/generator.d.ts.map +1 -1
  711. package/dist/composition/probe/generator.js +53 -30
  712. package/dist/composition/probe/generator.js.map +1 -1
  713. package/dist/composition/probe/index.d.ts +18 -2
  714. package/dist/composition/probe/index.d.ts.map +1 -1
  715. package/dist/composition/probe/index.js +10 -2
  716. package/dist/composition/probe/index.js.map +1 -1
  717. package/dist/composition/probe/limits.d.ts +24 -1
  718. package/dist/composition/probe/limits.d.ts.map +1 -1
  719. package/dist/composition/probe/limits.js +53 -11
  720. package/dist/composition/probe/limits.js.map +1 -1
  721. package/dist/composition/probe/metadata.js.map +1 -1
  722. package/dist/composition/probe/pipeline.d.ts +5 -0
  723. package/dist/composition/probe/pipeline.d.ts.map +1 -1
  724. package/dist/composition/probe/pipeline.js +22 -9
  725. package/dist/composition/probe/pipeline.js.map +1 -1
  726. package/dist/composition/probe/power-law.d.ts +121 -0
  727. package/dist/composition/probe/power-law.d.ts.map +1 -0
  728. package/dist/composition/probe/power-law.js +255 -0
  729. package/dist/composition/probe/power-law.js.map +1 -0
  730. package/dist/composition/probe/problem.d.ts +12 -1
  731. package/dist/composition/probe/problem.d.ts.map +1 -1
  732. package/dist/composition/probe/problem.js +242 -48
  733. package/dist/composition/probe/problem.js.map +1 -1
  734. package/dist/composition/probe/report.js +1 -1
  735. package/dist/composition/probe/report.js.map +1 -1
  736. package/dist/composition/probe/residual.d.ts +6 -1
  737. package/dist/composition/probe/residual.d.ts.map +1 -1
  738. package/dist/composition/probe/residual.js +9 -7
  739. package/dist/composition/probe/residual.js.map +1 -1
  740. package/dist/composition/probe/run-manifest.js +2 -2
  741. package/dist/composition/probe/run-manifest.js.map +1 -1
  742. package/dist/composition/probe/scoring.d.ts +2 -1
  743. package/dist/composition/probe/scoring.d.ts.map +1 -1
  744. package/dist/composition/probe/scoring.js +21 -7
  745. package/dist/composition/probe/scoring.js.map +1 -1
  746. package/dist/composition/probe/search-budget.js.map +1 -1
  747. package/dist/composition/probe/serialize.js.map +1 -1
  748. package/dist/composition/probe/structure.d.ts +82 -17
  749. package/dist/composition/probe/structure.d.ts.map +1 -1
  750. package/dist/composition/probe/structure.js +129 -55
  751. package/dist/composition/probe/structure.js.map +1 -1
  752. package/dist/composition/probe/study.d.ts +35 -12
  753. package/dist/composition/probe/study.d.ts.map +1 -1
  754. package/dist/composition/probe/study.js +241 -184
  755. package/dist/composition/probe/study.js.map +1 -1
  756. package/dist/composition/probe/t-tail.d.ts +17 -0
  757. package/dist/composition/probe/t-tail.d.ts.map +1 -0
  758. package/dist/composition/probe/t-tail.js +32 -0
  759. package/dist/composition/probe/t-tail.js.map +1 -0
  760. package/dist/composition/probe/types.d.ts +6 -1
  761. package/dist/composition/probe/types.d.ts.map +1 -1
  762. package/dist/composition/probe/types.js +2 -0
  763. package/dist/composition/probe/types.js.map +1 -1
  764. package/dist/composition/proposed-bridges.d.ts +51 -13
  765. package/dist/composition/proposed-bridges.d.ts.map +1 -1
  766. package/dist/composition/proposed-bridges.js +110 -58
  767. package/dist/composition/proposed-bridges.js.map +1 -1
  768. package/dist/composition/quantities.d.ts +0 -4
  769. package/dist/composition/quantities.d.ts.map +1 -1
  770. package/dist/composition/quantities.js +5 -5
  771. package/dist/composition/quantities.js.map +1 -1
  772. package/dist/composition/quantity-clusters.d.ts +48 -0
  773. package/dist/composition/quantity-clusters.d.ts.map +1 -0
  774. package/dist/composition/quantity-clusters.js +98 -0
  775. package/dist/composition/quantity-clusters.js.map +1 -0
  776. package/dist/composition/quantity.d.ts +18 -2
  777. package/dist/composition/quantity.d.ts.map +1 -1
  778. package/dist/composition/quantity.js +35 -6
  779. package/dist/composition/quantity.js.map +1 -1
  780. package/dist/composition/rational-exponent.d.ts +40 -0
  781. package/dist/composition/rational-exponent.d.ts.map +1 -0
  782. package/dist/composition/rational-exponent.js +65 -0
  783. package/dist/composition/rational-exponent.js.map +1 -0
  784. package/dist/composition/representative-values.d.ts +22 -0
  785. package/dist/composition/representative-values.d.ts.map +1 -1
  786. package/dist/composition/representative-values.js +23 -0
  787. package/dist/composition/representative-values.js.map +1 -1
  788. package/dist/composition/retrodiction.d.ts +16 -6
  789. package/dist/composition/retrodiction.d.ts.map +1 -1
  790. package/dist/composition/retrodiction.js +36 -10
  791. package/dist/composition/retrodiction.js.map +1 -1
  792. package/dist/composition/uncertainty.js.map +1 -1
  793. package/dist/composition/user-equation.d.ts.map +1 -1
  794. package/dist/composition/user-equation.js +2 -2
  795. package/dist/composition/user-equation.js.map +1 -1
  796. package/dist/core/assignment.d.ts +19 -0
  797. package/dist/core/assignment.d.ts.map +1 -0
  798. package/dist/core/assignment.js +19 -0
  799. package/dist/core/assignment.js.map +1 -0
  800. package/dist/core/axes-registry.d.ts +8 -5
  801. package/dist/core/axes-registry.d.ts.map +1 -1
  802. package/dist/core/axes-registry.js.map +1 -1
  803. package/dist/core/cell.js.map +1 -1
  804. package/dist/core/compare.d.ts +32 -0
  805. package/dist/core/compare.d.ts.map +1 -0
  806. package/dist/core/compare.js +46 -0
  807. package/dist/core/compare.js.map +1 -0
  808. package/dist/core/constants.d.ts +35 -35
  809. package/dist/core/constants.d.ts.map +1 -1
  810. package/dist/core/constants.js +52 -37
  811. package/dist/core/constants.js.map +1 -1
  812. package/dist/core/data-file.d.ts +7 -0
  813. package/dist/core/data-file.d.ts.map +1 -1
  814. package/dist/core/data-file.js +17 -0
  815. package/dist/core/data-file.js.map +1 -1
  816. package/dist/core/flux-rules.js +1 -1
  817. package/dist/core/flux-rules.js.map +1 -1
  818. package/dist/core/format.d.ts +36 -0
  819. package/dist/core/format.d.ts.map +1 -0
  820. package/dist/core/format.js +39 -0
  821. package/dist/core/format.js.map +1 -0
  822. package/dist/core/hash.d.ts +14 -0
  823. package/dist/core/hash.d.ts.map +1 -0
  824. package/dist/core/hash.js +17 -0
  825. package/dist/core/hash.js.map +1 -0
  826. package/dist/core/json-schema.d.ts +3 -1
  827. package/dist/core/json-schema.d.ts.map +1 -1
  828. package/dist/core/json-schema.js +41 -16
  829. package/dist/core/json-schema.js.map +1 -1
  830. package/dist/core/labeled-tensor.d.ts +6 -1
  831. package/dist/core/labeled-tensor.d.ts.map +1 -1
  832. package/dist/core/labeled-tensor.js +18 -16
  833. package/dist/core/labeled-tensor.js.map +1 -1
  834. package/dist/core/mathts-read.d.ts +25 -0
  835. package/dist/core/mathts-read.d.ts.map +1 -0
  836. package/dist/core/mathts-read.js +51 -0
  837. package/dist/core/mathts-read.js.map +1 -0
  838. package/dist/core/regime-registry.d.ts +6 -2
  839. package/dist/core/regime-registry.d.ts.map +1 -1
  840. package/dist/core/regime-registry.js.map +1 -1
  841. package/dist/core/regime-rule-install.js.map +1 -1
  842. package/dist/core/regimes-builtins.js.map +1 -1
  843. package/dist/core/tensor.d.ts +7 -4
  844. package/dist/core/tensor.d.ts.map +1 -1
  845. package/dist/core/tensor.js +64 -8
  846. package/dist/core/tensor.js.map +1 -1
  847. package/dist/core/types.d.ts +5 -5
  848. package/dist/core/types.js.map +1 -1
  849. package/dist/core/universal-index.js.map +1 -1
  850. package/dist/diff/bridge-ast-gradient.d.ts +4 -5
  851. package/dist/diff/bridge-ast-gradient.d.ts.map +1 -1
  852. package/dist/diff/bridge-ast-gradient.js +10 -6
  853. package/dist/diff/bridge-ast-gradient.js.map +1 -1
  854. package/dist/diff/bridge-gradient.d.ts +43 -86
  855. package/dist/diff/bridge-gradient.d.ts.map +1 -1
  856. package/dist/diff/bridge-gradient.js +40 -109
  857. package/dist/diff/bridge-gradient.js.map +1 -1
  858. package/dist/diff/bridge-specs.d.ts +16 -5
  859. package/dist/diff/bridge-specs.d.ts.map +1 -1
  860. package/dist/diff/bridge-specs.js +19 -4
  861. package/dist/diff/bridge-specs.js.map +1 -1
  862. package/dist/dimensional/algebra.d.ts +18 -0
  863. package/dist/dimensional/algebra.d.ts.map +1 -1
  864. package/dist/dimensional/algebra.js +41 -1
  865. package/dist/dimensional/algebra.js.map +1 -1
  866. package/dist/dimensional/ast-builders.d.ts +12 -4
  867. package/dist/dimensional/ast-builders.d.ts.map +1 -1
  868. package/dist/dimensional/ast-builders.js +17 -5
  869. package/dist/dimensional/ast-builders.js.map +1 -1
  870. package/dist/dimensional/ast-leaves.d.ts +81 -0
  871. package/dist/dimensional/ast-leaves.d.ts.map +1 -0
  872. package/dist/dimensional/ast-leaves.js +146 -0
  873. package/dist/dimensional/ast-leaves.js.map +1 -0
  874. package/dist/dimensional/ast-types.js.map +1 -1
  875. package/dist/dimensional/bridge-check.js.map +1 -1
  876. package/dist/dimensional/buckingham.d.ts.map +1 -1
  877. package/dist/dimensional/buckingham.js +15 -27
  878. package/dist/dimensional/buckingham.js.map +1 -1
  879. package/dist/dimensional/connection-validators.d.ts +2 -1
  880. package/dist/dimensional/connection-validators.d.ts.map +1 -1
  881. package/dist/dimensional/connection-validators.js.map +1 -1
  882. package/dist/dimensional/connection.js.map +1 -1
  883. package/dist/dimensional/constant-rows.d.ts.map +1 -1
  884. package/dist/dimensional/constant-rows.js +17 -13
  885. package/dist/dimensional/constant-rows.js.map +1 -1
  886. package/dist/dimensional/constants.d.ts +5 -6
  887. package/dist/dimensional/constants.d.ts.map +1 -1
  888. package/dist/dimensional/constants.js +5 -6
  889. package/dist/dimensional/constants.js.map +1 -1
  890. package/dist/dimensional/curvature-composite.js.map +1 -1
  891. package/dist/dimensional/curvature-invariants.js.map +1 -1
  892. package/dist/dimensional/curvature.js.map +1 -1
  893. package/dist/dimensional/dimension-inference.d.ts.map +1 -1
  894. package/dist/dimensional/dimension-inference.js +1 -2
  895. package/dist/dimensional/dimension-inference.js.map +1 -1
  896. package/dist/dimensional/dimension-spec.d.ts +13 -7
  897. package/dist/dimensional/dimension-spec.d.ts.map +1 -1
  898. package/dist/dimensional/dimension-spec.js +49 -23
  899. package/dist/dimensional/dimension-spec.js.map +1 -1
  900. package/dist/dimensional/einstein-equation.js.map +1 -1
  901. package/dist/dimensional/errors.d.ts +4 -2
  902. package/dist/dimensional/errors.d.ts.map +1 -1
  903. package/dist/dimensional/errors.js +3 -17
  904. package/dist/dimensional/errors.js.map +1 -1
  905. package/dist/dimensional/exact-scale.d.ts +0 -17
  906. package/dist/dimensional/exact-scale.d.ts.map +1 -1
  907. package/dist/dimensional/exact-scale.js +8 -8
  908. package/dist/dimensional/exact-scale.js.map +1 -1
  909. package/dist/dimensional/field-equation-helpers.js.map +1 -1
  910. package/dist/dimensional/formula-names.js.map +1 -1
  911. package/dist/dimensional/fresh-label.js.map +1 -1
  912. package/dist/dimensional/friedmann-equation.d.ts +3 -3
  913. package/dist/dimensional/friedmann-equation.js +3 -3
  914. package/dist/dimensional/friedmann-equation.js.map +1 -1
  915. package/dist/dimensional/gauge-field.d.ts +2 -3
  916. package/dist/dimensional/gauge-field.d.ts.map +1 -1
  917. package/dist/dimensional/gauge-field.js +2 -3
  918. package/dist/dimensional/gauge-field.js.map +1 -1
  919. package/dist/dimensional/hyphen-names.d.ts +12 -2
  920. package/dist/dimensional/hyphen-names.d.ts.map +1 -1
  921. package/dist/dimensional/hyphen-names.js +45 -12
  922. package/dist/dimensional/hyphen-names.js.map +1 -1
  923. package/dist/dimensional/killing-validators.js.map +1 -1
  924. package/dist/dimensional/klein-gordon-equation.js.map +1 -1
  925. package/dist/dimensional/metric-validators.d.ts +2 -1
  926. package/dist/dimensional/metric-validators.d.ts.map +1 -1
  927. package/dist/dimensional/metric-validators.js.map +1 -1
  928. package/dist/dimensional/metric.d.ts.map +1 -1
  929. package/dist/dimensional/metric.js +0 -1
  930. package/dist/dimensional/metric.js.map +1 -1
  931. package/dist/dimensional/natural-units.js.map +1 -1
  932. package/dist/dimensional/quantity-registry.d.ts +13 -0
  933. package/dist/dimensional/quantity-registry.d.ts.map +1 -1
  934. package/dist/dimensional/quantity-registry.js +14 -6
  935. package/dist/dimensional/quantity-registry.js.map +1 -1
  936. package/dist/dimensional/rg-flow.js.map +1 -1
  937. package/dist/dimensional/stress-energy-validators.js.map +1 -1
  938. package/dist/dimensional/symbolic-constants.d.ts +9 -0
  939. package/dist/dimensional/symbolic-constants.d.ts.map +1 -1
  940. package/dist/dimensional/symbolic-constants.js +20 -3
  941. package/dist/dimensional/symbolic-constants.js.map +1 -1
  942. package/dist/dimensional/tensor-trace.js.map +1 -1
  943. package/dist/dimensional/tensor.js.map +1 -1
  944. package/dist/dimensional/types.d.ts +36 -0
  945. package/dist/dimensional/types.d.ts.map +1 -1
  946. package/dist/dimensional/types.js +45 -7
  947. package/dist/dimensional/types.js.map +1 -1
  948. package/dist/dimensional/unit-convention.d.ts +0 -2
  949. package/dist/dimensional/unit-convention.d.ts.map +1 -1
  950. package/dist/dimensional/unit-convention.js +2 -2
  951. package/dist/dimensional/unit-convention.js.map +1 -1
  952. package/dist/dimensional/unit-data.d.ts.map +1 -1
  953. package/dist/dimensional/unit-data.js +11 -7
  954. package/dist/dimensional/unit-data.js.map +1 -1
  955. package/dist/dimensional/units.d.ts.map +1 -1
  956. package/dist/dimensional/units.js +38 -20
  957. package/dist/dimensional/units.js.map +1 -1
  958. package/dist/dimensional/validator-registry.js.map +1 -1
  959. package/dist/dimensional/validator.d.ts +0 -16
  960. package/dist/dimensional/validator.d.ts.map +1 -1
  961. package/dist/dimensional/validator.js +65 -29
  962. package/dist/dimensional/validator.js.map +1 -1
  963. package/dist/dimensional/weyl-validators.js.map +1 -1
  964. package/dist/index.d.ts +59 -8
  965. package/dist/index.d.ts.map +1 -1
  966. package/dist/index.js +22 -24
  967. package/dist/index.js.map +1 -1
  968. package/dist/numerical/bianchi-residual.js.map +1 -1
  969. package/dist/numerical/binding-value.d.ts +11 -6
  970. package/dist/numerical/binding-value.d.ts.map +1 -1
  971. package/dist/numerical/binding-value.js +126 -122
  972. package/dist/numerical/binding-value.js.map +1 -1
  973. package/dist/numerical/christoffel-flat.d.ts.map +1 -1
  974. package/dist/numerical/christoffel-flat.js +3 -2
  975. package/dist/numerical/christoffel-flat.js.map +1 -1
  976. package/dist/numerical/connection-lowering-helpers.js.map +1 -1
  977. package/dist/numerical/covariant-eikonal.d.ts.map +1 -1
  978. package/dist/numerical/covariant-eikonal.js +36 -13
  979. package/dist/numerical/covariant-eikonal.js.map +1 -1
  980. package/dist/numerical/curvature-lowering-helpers.d.ts +20 -0
  981. package/dist/numerical/curvature-lowering-helpers.d.ts.map +1 -1
  982. package/dist/numerical/curvature-lowering-helpers.js +9 -5
  983. package/dist/numerical/curvature-lowering-helpers.js.map +1 -1
  984. package/dist/numerical/derivative-lowering.js.map +1 -1
  985. package/dist/numerical/einstein-equation.js.map +1 -1
  986. package/dist/numerical/engine-registry.js.map +1 -1
  987. package/dist/numerical/errors.d.ts +7 -3
  988. package/dist/numerical/errors.d.ts.map +1 -1
  989. package/dist/numerical/errors.js +5 -8
  990. package/dist/numerical/errors.js.map +1 -1
  991. package/dist/numerical/evaluator-uncertainty.d.ts.map +1 -1
  992. package/dist/numerical/evaluator-uncertainty.js +19 -2
  993. package/dist/numerical/evaluator-uncertainty.js.map +1 -1
  994. package/dist/numerical/finite-difference.d.ts +22 -0
  995. package/dist/numerical/finite-difference.d.ts.map +1 -0
  996. package/dist/numerical/finite-difference.js +27 -0
  997. package/dist/numerical/finite-difference.js.map +1 -0
  998. package/dist/numerical/formula-contract.d.ts +63 -7
  999. package/dist/numerical/formula-contract.d.ts.map +1 -1
  1000. package/dist/numerical/formula-contract.js +61 -42
  1001. package/dist/numerical/formula-contract.js.map +1 -1
  1002. package/dist/numerical/formula-dimension.d.ts +8 -7
  1003. package/dist/numerical/formula-dimension.d.ts.map +1 -1
  1004. package/dist/numerical/formula-dimension.js +58 -36
  1005. package/dist/numerical/formula-dimension.js.map +1 -1
  1006. package/dist/numerical/formula-mathts.d.ts.map +1 -1
  1007. package/dist/numerical/formula-mathts.js +5 -2
  1008. package/dist/numerical/formula-mathts.js.map +1 -1
  1009. package/dist/numerical/formula-registry.d.ts +13 -3
  1010. package/dist/numerical/formula-registry.d.ts.map +1 -1
  1011. package/dist/numerical/formula-registry.js +7 -2
  1012. package/dist/numerical/formula-registry.js.map +1 -1
  1013. package/dist/numerical/geodesic-integrator.d.ts.map +1 -1
  1014. package/dist/numerical/geodesic-integrator.js +22 -14
  1015. package/dist/numerical/geodesic-integrator.js.map +1 -1
  1016. package/dist/numerical/geometrized.d.ts.map +1 -1
  1017. package/dist/numerical/geometrized.js +0 -1
  1018. package/dist/numerical/geometrized.js.map +1 -1
  1019. package/dist/numerical/gl4-integrator.d.ts +28 -27
  1020. package/dist/numerical/gl4-integrator.d.ts.map +1 -1
  1021. package/dist/numerical/gl4-integrator.js +41 -42
  1022. package/dist/numerical/gl4-integrator.js.map +1 -1
  1023. package/dist/numerical/grid-field.js.map +1 -1
  1024. package/dist/numerical/index.js.map +1 -1
  1025. package/dist/numerical/input-validation.d.ts +3 -6
  1026. package/dist/numerical/input-validation.d.ts.map +1 -1
  1027. package/dist/numerical/input-validation.js +4 -8
  1028. package/dist/numerical/input-validation.js.map +1 -1
  1029. package/dist/numerical/killing.d.ts +8 -5
  1030. package/dist/numerical/killing.d.ts.map +1 -1
  1031. package/dist/numerical/killing.js.map +1 -1
  1032. package/dist/numerical/klein-gordon.js.map +1 -1
  1033. package/dist/numerical/kretschmann.js.map +1 -1
  1034. package/dist/numerical/lowering-utils.js.map +1 -1
  1035. package/dist/numerical/lowering.d.ts.map +1 -1
  1036. package/dist/numerical/lowering.js +7 -17
  1037. package/dist/numerical/lowering.js.map +1 -1
  1038. package/dist/numerical/mathts-engine.d.ts.map +1 -1
  1039. package/dist/numerical/mathts-engine.js +16 -25
  1040. package/dist/numerical/mathts-engine.js.map +1 -1
  1041. package/dist/numerical/metric-inverse.d.ts.map +1 -1
  1042. package/dist/numerical/metric-inverse.js +83 -46
  1043. package/dist/numerical/metric-inverse.js.map +1 -1
  1044. package/dist/numerical/null-ic.js.map +1 -1
  1045. package/dist/numerical/null-ray-integrator.d.ts +2 -1
  1046. package/dist/numerical/null-ray-integrator.d.ts.map +1 -1
  1047. package/dist/numerical/null-ray-integrator.js +12 -12
  1048. package/dist/numerical/null-ray-integrator.js.map +1 -1
  1049. package/dist/numerical/painleve-gullstrand-metric.js +2 -2
  1050. package/dist/numerical/painleve-gullstrand-metric.js.map +1 -1
  1051. package/dist/numerical/pderiv.d.ts.map +1 -1
  1052. package/dist/numerical/pderiv.js +9 -2
  1053. package/dist/numerical/pderiv.js.map +1 -1
  1054. package/dist/numerical/perihelion-finder.d.ts +0 -36
  1055. package/dist/numerical/perihelion-finder.d.ts.map +1 -1
  1056. package/dist/numerical/perihelion-finder.js +41 -87
  1057. package/dist/numerical/perihelion-finder.js.map +1 -1
  1058. package/dist/numerical/quadrature.d.ts +5 -2
  1059. package/dist/numerical/quadrature.d.ts.map +1 -1
  1060. package/dist/numerical/quadrature.js +19 -4
  1061. package/dist/numerical/quadrature.js.map +1 -1
  1062. package/dist/numerical/rk4-trajectory.d.ts +10 -0
  1063. package/dist/numerical/rk4-trajectory.d.ts.map +1 -0
  1064. package/dist/numerical/rk4-trajectory.js +37 -0
  1065. package/dist/numerical/rk4-trajectory.js.map +1 -0
  1066. package/dist/numerical/schwarzschild.d.ts +14 -0
  1067. package/dist/numerical/schwarzschild.d.ts.map +1 -0
  1068. package/dist/numerical/schwarzschild.js +17 -0
  1069. package/dist/numerical/schwarzschild.js.map +1 -0
  1070. package/dist/numerical/spacetime-metrics.d.ts +25 -19
  1071. package/dist/numerical/spacetime-metrics.d.ts.map +1 -1
  1072. package/dist/numerical/spacetime-metrics.js +180 -286
  1073. package/dist/numerical/spacetime-metrics.js.map +1 -1
  1074. package/dist/numerical/statistics.d.ts +24 -0
  1075. package/dist/numerical/statistics.d.ts.map +1 -0
  1076. package/dist/numerical/statistics.js +52 -0
  1077. package/dist/numerical/statistics.js.map +1 -0
  1078. package/dist/numerical/strides.js.map +1 -1
  1079. package/dist/numerical/tensor-engine.d.ts +30 -5
  1080. package/dist/numerical/tensor-engine.d.ts.map +1 -1
  1081. package/dist/numerical/tensor-engine.js +12 -0
  1082. package/dist/numerical/tensor-engine.js.map +1 -1
  1083. package/dist/numerical/types.js.map +1 -1
  1084. package/dist/numerical/weyl-lowering.js.map +1 -1
  1085. package/dist/relations/category.js.map +1 -1
  1086. package/dist/relations/composition-table.d.ts +4 -4
  1087. package/dist/relations/composition-table.js +4 -4
  1088. package/dist/relations/composition-table.js.map +1 -1
  1089. package/dist/relations/conventions.js.map +1 -1
  1090. package/dist/relations/domain-regimes.js.map +1 -1
  1091. package/dist/relations/regime-registration.js.map +1 -1
  1092. package/dist/relations/regime-vocabularies.js.map +1 -1
  1093. package/dist/relations/regime.d.ts +28 -8
  1094. package/dist/relations/regime.d.ts.map +1 -1
  1095. package/dist/relations/regime.js +44 -15
  1096. package/dist/relations/regime.js.map +1 -1
  1097. package/dist/relations/types.d.ts +18 -5
  1098. package/dist/relations/types.d.ts.map +1 -1
  1099. package/dist/relations/types.js +5 -3
  1100. package/dist/relations/types.js.map +1 -1
  1101. package/package.json +16 -20
  1102. package/dist/bridges/registry.d.ts +0 -60
  1103. package/dist/bridges/registry.d.ts.map +0 -1
  1104. package/dist/bridges/registry.js +0 -87
  1105. package/dist/bridges/registry.js.map +0 -1
  1106. package/dist/cli/poster-source.d.ts +0 -154
  1107. package/dist/cli/poster-source.d.ts.map +0 -1
  1108. package/dist/cli/poster-source.js +0 -184
  1109. package/dist/cli/poster-source.js.map +0 -1
@@ -23,9 +23,16 @@
23
23
  *
24
24
  * bounds the error at every t; the clamp at π keeps B non-decreasing in t and
25
25
  * is still a bound, since |cos a − cos b| ≤ 2. It is rigorous GIVEN the
26
- * Fourier series, which is quoted, not derived here. Witness W7xs checks the
27
- * series against RK4 over one period at each θ0 of a grid across the domain;
28
- * that is a check at those points, not a derivation.
26
+ * Fourier series, which is quoted, not derived here. The exact check
27
+ * (`fourierSeriesExactDeviation`, run by `tests/atlas/pendulum-exact.test.ts`;
28
+ * not a registered witness, because it has no resolution for a runner to
29
+ * refine) compares the series with the EXACT solution θ = 2 asin(k sn(K − ω0t, k²))
30
+ * (`exactPendulumAngle`) over a dense grid of amplitudes and phases at
31
+ * 1e-12 rad (1e-13 above θ0 = 0.002; the floor below that is the nome's, see
32
+ * `FOURIER_SERIES_EXACT_TOLERANCE`), and W7xs against RK4 over one period at
33
+ * six amplitudes at 1e-9;
34
+ * both are checks at grid points, not a derivation. The coefficients also
35
+ * have a second route, the FFT of one exact period (`fourierCoefficientsByFft`).
29
36
  *
30
37
  * B is an upper bound, not the error: past its horizon the BOUND exceeds the
31
38
  * tolerance, and the error may not. It is near-sharp where Δφ → π (the
@@ -36,9 +43,9 @@
36
43
  * @module atlas/oscillators/position-translation
37
44
  * @internal
38
45
  */
46
+ import { rfft } from '@danielsimonjr/mathts-functions';
39
47
  import { pendulumPeriodErrorAt } from './bridges-limits.js';
40
- import { linearAccel, pendulumAccel, pendulumNome, rk4Step, theta0OfPeriodError } from './pendulum-motion.js';
41
- const TWO_PI = 2 * Math.PI;
48
+ import { exactPendulumAngle, linearAccel, pendulumAccel, pendulumNome, rk4Step, theta0OfPeriodError, TWO_PI, } from './pendulum-motion.js';
42
49
  /** W̄ = (16/3) q^{3/2}/(1 − q): the bound on the waveform distortion |F(φ) − θ0 cos φ|. @internal */
43
50
  export function waveformBound(theta0) {
44
51
  const q = pendulumNome(theta0);
@@ -71,12 +78,14 @@ function positionHorizon(eps, tolerance, T0) {
71
78
  return (2 * Math.asin(r) * T0 * (1 + eps)) / (TWO_PI * eps);
72
79
  }
73
80
  /** The point witness integrates at most this many periods of T0. */
74
- export const POSITION_POINT_MAX_PERIODS = 512;
81
+ const POSITION_POINT_MAX_PERIODS = 512;
75
82
  /** Samples per T0 both resolutions report at. */
76
83
  const SAMPLES_PER_PERIOD = 200;
77
84
  /**
78
85
  * |θ(t) − θ_lin(t)| from RK4 of both motions, and B(t) at the same samples,
79
- * over `periods` of T0; `stepsPerPeriod` must be a multiple of 200.
86
+ * over `periods` of T0; `stepsPerPeriod` must be a multiple of 200. The
87
+ * exact route is {@link exactDominanceSpec}; this one is what W7x registers,
88
+ * so the integrator stays part of what the witness exercises.
80
89
  */
81
90
  function dominanceSamples(theta0, periods, stepsPerPeriod, bound) {
82
91
  const stride = stepsPerPeriod / SAMPLES_PER_PERIOD;
@@ -102,6 +111,38 @@ function dominanceSamples(theta0, periods, stepsPerPeriod, bound) {
102
111
  function dominanceWindow(eps) {
103
112
  return Math.min(POSITION_POINT_MAX_PERIODS, (1 + eps) / (2 * eps));
104
113
  }
114
+ /**
115
+ * The exact route to W7x's measured value: |θ_exact(t) − θ0 cos(2πt)| from the
116
+ * closed forms, at the same 200 samples per T0 as {@link dominanceSamples},
117
+ * against B(t) at θ0 recovered from `eps`. The resolution is ignored, so the
118
+ * runner's coarse-to-fine uncertainty u is exactly 0 here and its rule
119
+ * `bound − measured > u` is `bound > measured`: u is a property of the RK4
120
+ * route, not of the claim. The registered W7x keeps the RK4 route.
121
+ *
122
+ * @internal
123
+ */
124
+ export function exactDominanceSpec(id, eps) {
125
+ const theta0 = theta0OfPeriodError(eps);
126
+ const periods = dominanceWindow(eps);
127
+ const bound = positionBound(eps);
128
+ const samples = Math.floor(periods * SAMPLES_PER_PERIOD);
129
+ return {
130
+ id,
131
+ kind: 'dominance',
132
+ evaluate: () => {
133
+ const measured = [];
134
+ const b = [];
135
+ for (let i = 1; i <= samples; i++) {
136
+ const t = i / SAMPLES_PER_PERIOD;
137
+ measured.push(Math.abs(exactPendulumAngle(theta0, t) - theta0 * Math.cos(TWO_PI * t)));
138
+ b.push(bound(t));
139
+ }
140
+ return { measured, bound: b };
141
+ },
142
+ coarseResolution: 200,
143
+ fineResolution: 800,
144
+ };
145
+ }
105
146
  function dominanceSpec(id, eps, drift, waveform) {
106
147
  const theta0 = theta0OfPeriodError(eps);
107
148
  const periods = dominanceWindow(eps);
@@ -114,7 +155,7 @@ function dominanceSpec(id, eps, drift, waveform) {
114
155
  };
115
156
  }
116
157
  /** a₀ measured by projecting one RK4 pendulum period onto cos φ (trapezoid, exact for a periodic integrand). */
117
- export function measureFundamental(theta0, stepsPerPeriod) {
158
+ function measureFundamental(theta0, stepsPerPeriod) {
118
159
  const T = 1 + pendulumPeriodErrorAt({ theta0 });
119
160
  const h = T / stepsPerPeriod;
120
161
  let x = theta0;
@@ -130,6 +171,15 @@ export function measureFundamental(theta0, stepsPerPeriod) {
130
171
  export const FOURIER_SERIES_THETA0S = [0.01, 0.1, 0.2, 0.3, 0.4, 0.5];
131
172
  const FOURIER_SERIES_TERMS = 20;
132
173
  const FOURIER_SERIES_TOLERANCE = 1e-9;
174
+ /** aₙ = 8 q^{n+½}/((2n+1)(1 + q^{2n+1})) from the nome; `'minus'` is the (1 − q^{2n+1}) transcription error the controls use. */
175
+ function coefficientFromNome(q, n, variant) {
176
+ const odd = 2 * n + 1;
177
+ return (8 * q ** (n + 0.5)) / (odd * (variant === 'plus' ? 1 + q ** odd : 1 - q ** odd));
178
+ }
179
+ /** The pendulum's Fourier coefficient aₙ at amplitude θ0 (the closed form, from the nome). @internal */
180
+ export function fourierCoefficient(theta0, n, variant = 'plus') {
181
+ return coefficientFromNome(pendulumNome(theta0), n, variant);
182
+ }
133
183
  /**
134
184
  * F(φ) = Σ_{n<20} (−1)ⁿ aₙ cos((2n+1)φ). `'minus'` puts (1 − q^{2n+1}) in the
135
185
  * denominator of aₙ, a transcription error the control uses.
@@ -138,12 +188,71 @@ function fourierSeries(theta0, phi, variant) {
138
188
  const q = pendulumNome(theta0);
139
189
  let s = 0;
140
190
  for (let n = 0; n < FOURIER_SERIES_TERMS; n++) {
141
- const odd = 2 * n + 1;
142
- const a = (8 * q ** (n + 0.5)) / (odd * (variant === 'plus' ? 1 + q ** odd : 1 - q ** odd));
143
- s += (n % 2 === 0 ? a : -a) * Math.cos(odd * phi);
191
+ const a = coefficientFromNome(q, n, variant);
192
+ s += (n % 2 === 0 ? a : -a) * Math.cos((2 * n + 1) * phi);
144
193
  }
145
194
  return s;
146
195
  }
196
+ /** The grid the exact check runs on: amplitudes θ0 = 0.5 j/500, j = 1..500, and phases φ = 2π i/256. @internal */
197
+ export const FOURIER_SERIES_EXACT_GRID = { amplitudes: 500, phases: 256 };
198
+ /**
199
+ * The exact check's tolerance over the whole grid, in rad. The measured deviation is
200
+ * 2.3e-13, all of it at the smallest amplitude θ0 = 0.001 and on the SERIES
201
+ * side: the nome's K′ = K(cos²(θ0/2)) is read from a complementary parameter
202
+ * that rounds at 1e-16 absolute, 4e-10 relative at m = 2.5e-7, so a₀ is low
203
+ * by 2.3e-10 of θ0 there. The exact solution agrees with an independent AGM
204
+ * sn to the bit at that point.
205
+ * @internal
206
+ */
207
+ export const FOURIER_SERIES_EXACT_TOLERANCE = 1e-12;
208
+ /** Above θ0 = 0.002 the same check holds at 1e-13 rad (measured 3.8e-14 at θ0 = 0.002, below 1.5e-14 from θ0 = 0.01). @internal */
209
+ export const FOURIER_SERIES_EXACT_TIGHT = { theta0Min: 0.002, tolerance: 1e-13 };
210
+ /**
211
+ * The exact check, or its control: max over the grid of |θ_exact(t) − F(φ)|, t = φT/2π,
212
+ * with θ_exact the elliptic solution (`exactPendulumAngle`) and F the 20-term
213
+ * series, over the amplitudes at or above `theta0Min`. A closed form against
214
+ * a closed form, so no resolution and no convergence ratio: the number is the
215
+ * deviation itself, held to {@link FOURIER_SERIES_EXACT_TOLERANCE} over the
216
+ * whole grid and to {@link FOURIER_SERIES_EXACT_TIGHT} above its floor by the
217
+ * test.
218
+ *
219
+ * @internal
220
+ */
221
+ export function fourierSeriesExactDeviation(variant = 'plus', grid = FOURIER_SERIES_EXACT_GRID, theta0Min = 0) {
222
+ let worst = 0;
223
+ for (let j = 1; j <= grid.amplitudes; j++) {
224
+ const theta0 = (0.5 * j) / grid.amplitudes;
225
+ if (theta0 < theta0Min)
226
+ continue;
227
+ const T = 1 + pendulumPeriodErrorAt({ theta0 });
228
+ const q = pendulumNome(theta0);
229
+ const a = Array.from({ length: FOURIER_SERIES_TERMS }, (_, n) => coefficientFromNome(q, n, variant));
230
+ for (let i = 0; i < grid.phases; i++) {
231
+ const phi = (TWO_PI * i) / grid.phases;
232
+ let s = 0;
233
+ for (let n = 0; n < FOURIER_SERIES_TERMS; n++)
234
+ s += (n % 2 === 0 ? a[n] : -a[n]) * Math.cos((2 * n + 1) * phi);
235
+ worst = Math.max(worst, Math.abs(exactPendulumAngle(theta0, (i * T) / grid.phases) - s));
236
+ }
237
+ }
238
+ return worst;
239
+ }
240
+ /**
241
+ * The first `count` coefficients aₙ from the FFT of one exact period sampled
242
+ * at `samples` points, MathTS `rfft`: aₙ = (−1)ⁿ 2 re[2n+1]/N. A second
243
+ * route to the series, independent of the nome. `samples` must exceed
244
+ * 2·count + 1.
245
+ *
246
+ * @internal
247
+ */
248
+ export function fourierCoefficientsByFft(theta0, samples, count) {
249
+ if (!Number.isInteger(samples) || samples <= 2 * count + 1) {
250
+ throw new RangeError(`fourierCoefficientsByFft: ${samples} samples cannot resolve ${count} odd harmonics`);
251
+ }
252
+ const T = 1 + pendulumPeriodErrorAt({ theta0 });
253
+ const { re } = rfft(Array.from({ length: samples }, (_, i) => exactPendulumAngle(theta0, (i * T) / samples)));
254
+ return Array.from({ length: count }, (_, n) => ((n % 2 === 0 ? 2 : -2) * re[2 * n + 1]) / samples);
255
+ }
147
256
  /** max over the grid, and over one period T = T0(1+ε) sampled at every RK4 step, of |θ_RK4(t) − F(2πt/T)|. */
148
257
  function fourierSeriesDeviation(stepsPerPeriod, variant) {
149
258
  let worst = 0;
@@ -214,7 +323,9 @@ export const PENDULUM_POSITION_TRANSLATION = {
214
323
  'both motions are released from rest at the same θ0 at t = 0',
215
324
  'T0 = 2π √(ℓ/g) is the linear period, in the unit t is given in',
216
325
  'the classical Fourier series of the pendulum (all aₙ > 0, Σ (−1)ⁿ aₙ = θ0) — quoted, not derived here; ' +
217
- `machine-checked against RK4 at θ0 ∈ {${FOURIER_SERIES_THETA0S.join(', ')}} (W7xs), not between those points`,
326
+ `machine-checked against the elliptic solution θ = 2 asin(k sn(K − ω0t, k²)) over ${FOURIER_SERIES_EXACT_GRID.amplitudes} amplitudes in (0, 0.5] ` +
327
+ `and ${FOURIER_SERIES_EXACT_GRID.phases} phases within ${FOURIER_SERIES_EXACT_TOLERANCE} rad, and within ${FOURIER_SERIES_EXACT_TIGHT.tolerance} rad ` +
328
+ `above θ0 = ${FOURIER_SERIES_EXACT_TIGHT.theta0Min} (tests/atlas/pendulum-exact.test.ts), and against RK4 at θ0 ∈ {${FOURIER_SERIES_THETA0S.join(', ')}} (W7xs)`,
218
329
  ],
219
330
  parameters: ['T0'],
220
331
  timeUnit: 'the unit of T0',
@@ -1 +1 @@
1
- {"version":3,"file":"position-translation.js","sourceRoot":"","sources":["../../../src/atlas/oscillators/position-translation.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"position-translation.js","sourceRoot":"","sources":["../../../src/atlas/oscillators/position-translation.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * `ab-pendulum-linear`'s declared translation from its bound's quantity, the\n * relative period error ε, into an UPPER BOUND on the pointwise position error\n * |θ(t) − θ_lin(t)|, in rad.\n *\n * Both motions start from rest at θ0. The pendulum is θ(t) = F(φ), φ = 2πt/T,\n * with the classical Fourier series of the elliptic solution\n *\n * F(φ) = Σ_{n≥0} (−1)ⁿ aₙ cos((2n+1)φ), aₙ = 8 q^{n+½} / ((2n+1)(1 + q^{2n+1})),\n *\n * q the nome of k = sin(θ0/2); F(0) = θ0 = Σ (−1)ⁿ aₙ. The linear motion is\n * θ0 cos φ_lin, φ_lin = 2πt/T0. Splitting at θ0 cos φ,\n *\n * |θ − θ_lin| ≤ |F(φ) − θ0 cos φ| + θ0 |cos φ − cos φ_lin|\n * ≤ 2 Σ_{n≥1} aₙ + 2θ0 |sin(Δφ/2)|,\n *\n * because F(φ) − θ0 cos φ = Σ_{n≥1} (−1)ⁿ aₙ (cos((2n+1)φ) − cos φ). With\n * aₙ ≤ (8/3) q^{n+½} for n ≥ 1 the first term is at most\n * W̄ = (16/3) q^{3/2}/(1 − q) ≈ θ0³/96, and Δφ = 2π(t/T0) ε/(1+ε) is the\n * exact phase lead of `phase-translation.ts`. So\n *\n * B(t) = W̄ + 2θ0 sin(min(Δφ(t), π)/2)\n *\n * bounds the error at every t; the clamp at π keeps B non-decreasing in t and\n * is still a bound, since |cos a − cos b| ≤ 2. It is rigorous GIVEN the\n * Fourier series, which is quoted, not derived here. The exact check\n * (`fourierSeriesExactDeviation`, run by `tests/atlas/pendulum-exact.test.ts`;\n * not a registered witness, because it has no resolution for a runner to\n * refine) compares the series with the EXACT solution θ = 2 asin(k sn(K − ω0t, k²))\n * (`exactPendulumAngle`) over a dense grid of amplitudes and phases at\n * 1e-12 rad (1e-13 above θ0 = 0.002; the floor below that is the nome's, see\n * `FOURIER_SERIES_EXACT_TOLERANCE`), and W7xs against RK4 over one period at\n * six amplitudes at 1e-9;\n * both are checks at grid points, not a derivation. The coefficients also\n * have a second route, the FFT of one exact period (`fourierCoefficientsByFft`).\n *\n * B is an upper bound, not the error: past its horizon the BOUND exceeds the\n * tolerance, and the error may not. It is near-sharp where Δφ → π (the\n * motions are in antiphase and the error reaches 2θ0), and the waveform term\n * cannot be dropped: without W̄, RK4 finds the error above 2θ0 sin(Δφ/2) by\n * about 3% (witness control).\n *\n * @module atlas/oscillators/position-translation\n * @internal\n */\n\nimport { rfft } from '@danielsimonjr/mathts-functions';\nimport type { ObservableTranslation } from '../translation.js';\nimport type { DominanceWitnessSpec } from '../witness-dominance.js';\nimport type { NumericWitnessSpec } from '../witness-numeric.js';\nimport { pendulumPeriodErrorAt } from './bridges-limits.js';\nimport {\n exactPendulumAngle,\n linearAccel,\n pendulumAccel,\n pendulumNome,\n rk4Step,\n theta0OfPeriodError,\n TWO_PI,\n} from './pendulum-motion.js';\n\n/** W̄ = (16/3) q^{3/2}/(1 − q): the bound on the waveform distortion |F(φ) − θ0 cos φ|. @internal */\nexport function waveformBound(theta0: number): number {\n const q = pendulumNome(theta0);\n return ((16 / 3) * q ** 1.5) / (1 - q);\n}\n\n/** The pendulum's fundamental Fourier coefficient a₀ = 8√q/(1 + q). @internal */\nexport function fundamentalCoefficient(theta0: number): number {\n const q = pendulumNome(theta0);\n return (8 * Math.sqrt(q)) / (1 + q);\n}\n\nconst lead = (eps: number, tOverT0: number): number => (TWO_PI * tOverT0 * eps) / (1 + eps);\n\n/** B(t/T0) at θ0 recovered from ε; `drift` and `waveform` scale its two terms (1, 1 is B itself). */\nfunction positionBound(eps: number, drift = 1, waveform = 1): (tOverT0: number) => number {\n const theta0 = theta0OfPeriodError(eps);\n const floor = waveform * waveformBound(theta0);\n return (tOverT0) => floor + drift * 2 * theta0 * Math.sin(Math.min(lead(eps, tOverT0), Math.PI) / 2);\n}\n\nfunction positionHorizon(eps: number, tolerance: number, T0: number | undefined): number {\n if (T0 === undefined || !Number.isFinite(T0) || T0 <= 0 || !Number.isFinite(eps) || eps < 0) return Number.NaN;\n if (eps === 0) return Infinity;\n const theta0 = theta0OfPeriodError(eps);\n const floor = waveformBound(theta0);\n if (tolerance < floor) return Number.NaN;\n const r = (tolerance - floor) / (2 * theta0);\n if (r >= 1) return Infinity;\n return (2 * Math.asin(r) * T0 * (1 + eps)) / (TWO_PI * eps);\n}\n\n/** The point witness integrates at most this many periods of T0. */\nconst POSITION_POINT_MAX_PERIODS = 512;\n/** Samples per T0 both resolutions report at. */\nconst SAMPLES_PER_PERIOD = 200;\n\n/**\n * |θ(t) − θ_lin(t)| from RK4 of both motions, and B(t) at the same samples,\n * over `periods` of T0; `stepsPerPeriod` must be a multiple of 200. The\n * exact route is {@link exactDominanceSpec}; this one is what W7x registers,\n * so the integrator stays part of what the witness exercises.\n */\nfunction dominanceSamples(theta0: number, periods: number, stepsPerPeriod: number, bound: (t: number) => number) {\n const stride = stepsPerPeriod / SAMPLES_PER_PERIOD;\n const h = 1 / stepsPerPeriod;\n const measured: number[] = [];\n const b: number[] = [];\n let x = theta0;\n let v = 0;\n let y = theta0;\n let u = 0;\n const steps = Math.floor(periods * SAMPLES_PER_PERIOD) * stride;\n for (let i = 1; i <= steps; i++) {\n [x, v] = rk4Step(x, v, h, pendulumAccel);\n [y, u] = rk4Step(y, u, h, linearAccel);\n if (i % stride === 0) {\n measured.push(Math.abs(x - y));\n b.push(bound(i * h));\n }\n }\n return { measured, bound: b };\n}\n\n/** The window a dominance witness covers: up to antiphase (Δφ = π), past which B ≥ 2θ0 holds trivially, capped. */\nfunction dominanceWindow(eps: number): number {\n return Math.min(POSITION_POINT_MAX_PERIODS, (1 + eps) / (2 * eps));\n}\n\n/**\n * The exact route to W7x's measured value: |θ_exact(t) − θ0 cos(2πt)| from the\n * closed forms, at the same 200 samples per T0 as {@link dominanceSamples},\n * against B(t) at θ0 recovered from `eps`. The resolution is ignored, so the\n * runner's coarse-to-fine uncertainty u is exactly 0 here and its rule\n * `bound − measured > u` is `bound > measured`: u is a property of the RK4\n * route, not of the claim. The registered W7x keeps the RK4 route.\n *\n * @internal\n */\nexport function exactDominanceSpec(id: string, eps: number): DominanceWitnessSpec {\n const theta0 = theta0OfPeriodError(eps);\n const periods = dominanceWindow(eps);\n const bound = positionBound(eps);\n const samples = Math.floor(periods * SAMPLES_PER_PERIOD);\n return {\n id,\n kind: 'dominance',\n evaluate: () => {\n const measured: number[] = [];\n const b: number[] = [];\n for (let i = 1; i <= samples; i++) {\n const t = i / SAMPLES_PER_PERIOD;\n measured.push(Math.abs(exactPendulumAngle(theta0, t) - theta0 * Math.cos(TWO_PI * t)));\n b.push(bound(t));\n }\n return { measured, bound: b };\n },\n coarseResolution: 200,\n fineResolution: 800,\n };\n}\n\nfunction dominanceSpec(id: string, eps: number, drift: number, waveform: number): DominanceWitnessSpec {\n const theta0 = theta0OfPeriodError(eps);\n const periods = dominanceWindow(eps);\n return {\n id,\n kind: 'dominance',\n evaluate: (stepsPerPeriod) => dominanceSamples(theta0, periods, stepsPerPeriod, positionBound(eps, drift, waveform)),\n coarseResolution: 200,\n fineResolution: 800,\n };\n}\n\n/** a₀ measured by projecting one RK4 pendulum period onto cos φ (trapezoid, exact for a periodic integrand). */\nfunction measureFundamental(theta0: number, stepsPerPeriod: number): number {\n const T = 1 + pendulumPeriodErrorAt({ theta0 });\n const h = T / stepsPerPeriod;\n let x = theta0;\n let v = 0;\n let sum = theta0;\n for (let i = 1; i < stepsPerPeriod; i++) {\n [x, v] = rk4Step(x, v, h, pendulumAccel);\n sum += x * Math.cos((TWO_PI * i) / stepsPerPeriod);\n }\n return (2 * sum) / stepsPerPeriod;\n}\n\n/** The θ0 at which W7xs checks the Fourier series: a grid across the bridge's domain θ0 ≤ 0.5. @internal */\nexport const FOURIER_SERIES_THETA0S: readonly number[] = [0.01, 0.1, 0.2, 0.3, 0.4, 0.5];\nconst FOURIER_SERIES_TERMS = 20;\nconst FOURIER_SERIES_TOLERANCE = 1e-9;\n\n/** aₙ = 8 q^{n+½}/((2n+1)(1 + q^{2n+1})) from the nome; `'minus'` is the (1 − q^{2n+1}) transcription error the controls use. */\nfunction coefficientFromNome(q: number, n: number, variant: 'plus' | 'minus'): number {\n const odd = 2 * n + 1;\n return (8 * q ** (n + 0.5)) / (odd * (variant === 'plus' ? 1 + q ** odd : 1 - q ** odd));\n}\n\n/** The pendulum's Fourier coefficient aₙ at amplitude θ0 (the closed form, from the nome). @internal */\nexport function fourierCoefficient(theta0: number, n: number, variant: 'plus' | 'minus' = 'plus'): number {\n return coefficientFromNome(pendulumNome(theta0), n, variant);\n}\n\n/**\n * F(φ) = Σ_{n<20} (−1)ⁿ aₙ cos((2n+1)φ). `'minus'` puts (1 − q^{2n+1}) in the\n * denominator of aₙ, a transcription error the control uses.\n */\nfunction fourierSeries(theta0: number, phi: number, variant: 'plus' | 'minus'): number {\n const q = pendulumNome(theta0);\n let s = 0;\n for (let n = 0; n < FOURIER_SERIES_TERMS; n++) {\n const a = coefficientFromNome(q, n, variant);\n s += (n % 2 === 0 ? a : -a) * Math.cos((2 * n + 1) * phi);\n }\n return s;\n}\n\n/** The grid the exact check runs on: amplitudes θ0 = 0.5 j/500, j = 1..500, and phases φ = 2π i/256. @internal */\nexport const FOURIER_SERIES_EXACT_GRID = { amplitudes: 500, phases: 256 } as const;\n/**\n * The exact check's tolerance over the whole grid, in rad. The measured deviation is\n * 2.3e-13, all of it at the smallest amplitude θ0 = 0.001 and on the SERIES\n * side: the nome's K′ = K(cos²(θ0/2)) is read from a complementary parameter\n * that rounds at 1e-16 absolute, 4e-10 relative at m = 2.5e-7, so a₀ is low\n * by 2.3e-10 of θ0 there. The exact solution agrees with an independent AGM\n * sn to the bit at that point.\n * @internal\n */\nexport const FOURIER_SERIES_EXACT_TOLERANCE = 1e-12;\n/** Above θ0 = 0.002 the same check holds at 1e-13 rad (measured 3.8e-14 at θ0 = 0.002, below 1.5e-14 from θ0 = 0.01). @internal */\nexport const FOURIER_SERIES_EXACT_TIGHT = { theta0Min: 0.002, tolerance: 1e-13 } as const;\n\n/**\n * The exact check, or its control: max over the grid of |θ_exact(t) − F(φ)|, t = φT/2π,\n * with θ_exact the elliptic solution (`exactPendulumAngle`) and F the 20-term\n * series, over the amplitudes at or above `theta0Min`. A closed form against\n * a closed form, so no resolution and no convergence ratio: the number is the\n * deviation itself, held to {@link FOURIER_SERIES_EXACT_TOLERANCE} over the\n * whole grid and to {@link FOURIER_SERIES_EXACT_TIGHT} above its floor by the\n * test.\n *\n * @internal\n */\nexport function fourierSeriesExactDeviation(\n variant: 'plus' | 'minus' = 'plus',\n grid: { readonly amplitudes: number; readonly phases: number } = FOURIER_SERIES_EXACT_GRID,\n theta0Min = 0,\n): number {\n let worst = 0;\n for (let j = 1; j <= grid.amplitudes; j++) {\n const theta0 = (0.5 * j) / grid.amplitudes;\n if (theta0 < theta0Min) continue;\n const T = 1 + pendulumPeriodErrorAt({ theta0 });\n const q = pendulumNome(theta0);\n const a = Array.from({ length: FOURIER_SERIES_TERMS }, (_, n) => coefficientFromNome(q, n, variant));\n for (let i = 0; i < grid.phases; i++) {\n const phi = (TWO_PI * i) / grid.phases;\n let s = 0;\n for (let n = 0; n < FOURIER_SERIES_TERMS; n++) s += (n % 2 === 0 ? a[n]! : -a[n]!) * Math.cos((2 * n + 1) * phi);\n worst = Math.max(worst, Math.abs(exactPendulumAngle(theta0, (i * T) / grid.phases) - s));\n }\n }\n return worst;\n}\n\n/**\n * The first `count` coefficients aₙ from the FFT of one exact period sampled\n * at `samples` points, MathTS `rfft`: aₙ = (−1)ⁿ 2 re[2n+1]/N. A second\n * route to the series, independent of the nome. `samples` must exceed\n * 2·count + 1.\n *\n * @internal\n */\nexport function fourierCoefficientsByFft(theta0: number, samples: number, count: number): number[] {\n if (!Number.isInteger(samples) || samples <= 2 * count + 1) {\n throw new RangeError(`fourierCoefficientsByFft: ${samples} samples cannot resolve ${count} odd harmonics`);\n }\n const T = 1 + pendulumPeriodErrorAt({ theta0 });\n const { re } = rfft(Array.from({ length: samples }, (_, i) => exactPendulumAngle(theta0, (i * T) / samples)));\n return Array.from({ length: count }, (_, n) => ((n % 2 === 0 ? 2 : -2) * re[2 * n + 1]!) / samples);\n}\n\n/** max over the grid, and over one period T = T0(1+ε) sampled at every RK4 step, of |θ_RK4(t) − F(2πt/T)|. */\nfunction fourierSeriesDeviation(stepsPerPeriod: number, variant: 'plus' | 'minus'): number {\n let worst = 0;\n for (const theta0 of FOURIER_SERIES_THETA0S) {\n const h = (1 + pendulumPeriodErrorAt({ theta0 })) / stepsPerPeriod;\n let x = theta0;\n let v = 0;\n worst = Math.max(worst, Math.abs(x - fourierSeries(theta0, 0, variant)));\n for (let i = 1; i <= stepsPerPeriod; i++) {\n [x, v] = rk4Step(x, v, h, pendulumAccel);\n worst = Math.max(worst, Math.abs(x - fourierSeries(theta0, (TWO_PI * i) / stepsPerPeriod, variant)));\n }\n }\n return worst;\n}\n\n/**\n * W7xs, or its control: the Fourier series against RK4 of the pendulum, at 200\n * and 800 steps per period, within 1e-9 rad at every step and every grid θ0.\n * @internal\n */\nexport function fourierSeriesCheck(id: string, variant: 'plus' | 'minus' = 'plus'): NumericWitnessSpec {\n return {\n id,\n evaluate: (stepsPerPeriod) => fourierSeriesDeviation(stepsPerPeriod, variant),\n target: 0,\n coarseResolution: 200,\n fineResolution: 800,\n tolerance: FOURIER_SERIES_TOLERANCE,\n };\n}\n\nconst W7X_THETA0 = 0.3;\nconst W7X_EPS = pendulumPeriodErrorAt({ theta0: W7X_THETA0 });\n\nconst W7XA: NumericWitnessSpec = {\n id: 'W7xa',\n evaluate: (stepsPerPeriod) => measureFundamental(W7X_THETA0, stepsPerPeriod),\n target: fundamentalCoefficient(W7X_THETA0),\n coarseResolution: 200,\n fineResolution: 800,\n tolerance: 1e-10,\n};\n\nfunction positionPointCheck(eps: number): ReturnType<ObservableTranslation['pointCheck']> {\n if (!Number.isFinite(eps) || eps <= 0) return { unavailable: `θ0 = 0 at ε = ${eps}: both motions are at rest and the error is 0` };\n const theta0 = theta0OfPeriodError(eps);\n const periods = dominanceWindow(eps);\n const capped = periods === POSITION_POINT_MAX_PERIODS ? `, capped at ${POSITION_POINT_MAX_PERIODS} T0 (antiphase is at ${(1 + eps) / (2 * eps)} T0)` : ' (to antiphase, Δφ = π)';\n return {\n claim:\n `RK4 |θ − θ_lin| ≤ B(t) at every sample, θ0 = ${Number(theta0.toPrecision(8))} (recovered from ε), over t ≤ ${periods} T0${capped}; ` +\n `200 and 800 steps per T0, sampled 200 per T0; the coarse-to-fine difference is the uncertainty`,\n check: dominanceSpec('W7x@point', eps, 1, 1),\n control: dominanceSpec('W7x@point-control', eps, 1, 0),\n controlClaim: 'the same bound without its waveform term W̄, 2θ0 sin(Δφ/2) alone',\n };\n}\n\n/** @internal */\nexport const PENDULUM_POSITION_TRANSLATION: ObservableTranslation = {\n bridgeId: 'ab-pendulum-linear',\n observable: 'position',\n unit: 'rad',\n fromNorm: 'relative period error, normalized by the value of the reduced model',\n errorKind: 'upper-bound',\n definition: 'the pointwise angle error |θ(t) − θ_lin(t)| of the two motions released from rest at θ0',\n derivation:\n 'an UPPER BOUND B(t) = W̄ + 2θ0 sin(min(Δφ(t), π)/2), Δφ = 2π (t/T0) ε/(1+ε) the exact phase lead and ' +\n 'W̄ = (16/3) q^{3/2}/(1−q) ≈ θ0³/96 the waveform term (q the nome of sin(θ0/2); θ0 is recovered from ε). ' +\n 'From the Fourier series θ = Σ (−1)ⁿ aₙ cos((2n+1)φ): |θ − θ0 cos φ| ≤ 2 Σ_{n≥1} aₙ ≤ W̄, and θ0|cos φ − cos φ_lin| ≤ 2θ0|sin(Δφ/2)|. ' +\n 'B increases with ε, so the domain supremum of ε gives the shortest horizon over the domain',\n premises: [\n 'both motions are released from rest at the same θ0 at t = 0',\n 'T0 = 2π √(ℓ/g) is the linear period, in the unit t is given in',\n 'the classical Fourier series of the pendulum (all aₙ > 0, Σ (−1)ⁿ aₙ = θ0) — quoted, not derived here; ' +\n `machine-checked against the elliptic solution θ = 2 asin(k sn(K − ω0t, k²)) over ${FOURIER_SERIES_EXACT_GRID.amplitudes} amplitudes in (0, 0.5] ` +\n `and ${FOURIER_SERIES_EXACT_GRID.phases} phases within ${FOURIER_SERIES_EXACT_TOLERANCE} rad, and within ${FOURIER_SERIES_EXACT_TIGHT.tolerance} rad ` +\n `above θ0 = ${FOURIER_SERIES_EXACT_TIGHT.theta0Min} (tests/atlas/pendulum-exact.test.ts), and against RK4 at θ0 ∈ {${FOURIER_SERIES_THETA0S.join(', ')}} (W7xs)`,\n ],\n parameters: ['T0'],\n timeUnit: 'the unit of T0',\n errorAt: (eps, t, { T0 }) => {\n if (T0 === undefined || !Number.isFinite(T0) || T0 <= 0 || !Number.isFinite(eps) || eps < 0 || !Number.isFinite(t)) return Number.NaN;\n return positionBound(eps)(t / T0);\n },\n horizonFor: (eps, tolerance, { T0 }) => positionHorizon(eps, tolerance, T0),\n floor: (eps) => waveformBound(theta0OfPeriodError(eps)),\n boundary:\n 'inclusive: certified iff t ≤ t*, i.e. B(t) ≤ the tolerance; past t* the BOUND exceeds it and the error may not (undetermined, not inadequate)',\n notCovered: ['the phase (declared separately: --tolerance=phase:EPS)', 'the angular velocity', 'the amplitude'],\n witnesses: [\n {\n id: 'W7x',\n kind: 'numeric',\n test: 'tests/atlas/pendulum-position-translation.test.ts',\n tolerance: `RK4 |θ − θ_lin| ≤ B(t) at every sample to antiphase, θ0 = ${W7X_THETA0}, by more than the coarse-to-fine difference`,\n },\n {\n id: 'W7xa',\n kind: 'numeric',\n test: 'tests/atlas/pendulum-position-translation.test.ts',\n tolerance: `RK4-projected fundamental coefficient at θ0 = ${W7X_THETA0} within 1e-10 of 8√q/(1+q)`,\n },\n {\n id: 'W7xs',\n kind: 'numeric',\n test: 'tests/atlas/pendulum-position-translation.test.ts',\n tolerance:\n `the Fourier series (${FOURIER_SERIES_TERMS} terms) within ${FOURIER_SERIES_TOLERANCE} rad of RK4 at every step of one period, ` +\n `at θ0 ∈ {${FOURIER_SERIES_THETA0S.join(', ')}}`,\n },\n ],\n checks: [dominanceSpec('W7x', W7X_EPS, 1, 1), W7XA, fourierSeriesCheck('W7xs')],\n pointCheck: positionPointCheck,\n};\n"]}
@@ -16,6 +16,4 @@
16
16
  import type { AtlasRejection } from '../types.js';
17
17
  /** The rejected bridges of the oscillator pilot. @internal */
18
18
  export declare const ATLAS_REJECTIONS: readonly AtlasRejection[];
19
- /** Look up a rejection by id, throwing on an unknown one. @internal */
20
- export declare function getAtlasRejection(id: string): AtlasRejection;
21
19
  //# sourceMappingURL=rejections.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"rejections.d.ts","sourceRoot":"","sources":["../../../src/atlas/oscillators/rejections.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAElD,8DAA8D;AAC9D,eAAO,MAAM,gBAAgB,EAAE,SAAS,cAAc,EA8BrD,CAAC;AAEF,uEAAuE;AACvE,wBAAgB,iBAAiB,CAAC,EAAE,EAAE,MAAM,GAAG,cAAc,CAI5D"}
1
+ {"version":3,"file":"rejections.d.ts","sourceRoot":"","sources":["../../../src/atlas/oscillators/rejections.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAElD,8DAA8D;AAC9D,eAAO,MAAM,gBAAgB,EAAE,SAAS,cAAc,EA8BrD,CAAC"}
@@ -44,11 +44,4 @@ export const ATLAS_REJECTIONS = [
44
44
  ],
45
45
  },
46
46
  ];
47
- /** Look up a rejection by id, throwing on an unknown one. @internal */
48
- export function getAtlasRejection(id) {
49
- const found = ATLAS_REJECTIONS.find((r) => r.id === id);
50
- if (found === undefined)
51
- throw new Error(`unknown atlas rejection id: ${id}`);
52
- return found;
53
- }
54
47
  //# sourceMappingURL=rejections.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"rejections.js","sourceRoot":"","sources":["../../../src/atlas/oscillators/rejections.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAIH,8DAA8D;AAC9D,MAAM,CAAC,MAAM,gBAAgB,GAA8B;IACzD;QACE,EAAE,EAAE,oBAAoB;QACxB,OAAO,EAAE,mBAAmB;QAC5B,QAAQ,EAAE,CAAC,oBAAoB,CAAC;QAChC,UAAU,EAAE,UAAU;QACtB,MAAM,EACJ,6EAA6E;YAC7E,6EAA6E;YAC7E,6EAA6E;YAC7E,2EAA2E;YAC3E,+EAA+E;YAC/E,gFAAgF;YAChF,4BAA4B;QAC9B,cAAc,EAAE,WAAW;QAC3B,SAAS,EAAE;YACT;gBACE,EAAE,EAAE,IAAI;gBACR,IAAI,EAAE,UAAU;gBAChB,IAAI,EAAE,wCAAwC;gBAC9C,SAAS,EAAE,uEAAuE;aACnF;YACD;gBACE,EAAE,EAAE,KAAK;gBACT,IAAI,EAAE,SAAS;gBACf,IAAI,EAAE,wCAAwC;gBAC9C,SAAS,EAAE,8GAA8G;aAC1H;SACF;KACF;CACF,CAAC;AAEF,uEAAuE;AACvE,MAAM,UAAU,iBAAiB,CAAC,EAAU;IAC1C,MAAM,KAAK,GAAG,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;IACxD,IAAI,KAAK,KAAK,SAAS;QAAE,MAAM,IAAI,KAAK,CAAC,+BAA+B,EAAE,EAAE,CAAC,CAAC;IAC9E,OAAO,KAAK,CAAC;AACf,CAAC"}
1
+ {"version":3,"file":"rejections.js","sourceRoot":"","sources":["../../../src/atlas/oscillators/rejections.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAIH,8DAA8D;AAC9D,MAAM,CAAC,MAAM,gBAAgB,GAA8B;IACzD;QACE,EAAE,EAAE,oBAAoB;QACxB,OAAO,EAAE,mBAAmB;QAC5B,QAAQ,EAAE,CAAC,oBAAoB,CAAC;QAChC,UAAU,EAAE,UAAU;QACtB,MAAM,EACJ,6EAA6E;YAC7E,6EAA6E;YAC7E,6EAA6E;YAC7E,2EAA2E;YAC3E,+EAA+E;YAC/E,gFAAgF;YAChF,4BAA4B;QAC9B,cAAc,EAAE,WAAW;QAC3B,SAAS,EAAE;YACT;gBACE,EAAE,EAAE,IAAI;gBACR,IAAI,EAAE,UAAU;gBAChB,IAAI,EAAE,wCAAwC;gBAC9C,SAAS,EAAE,uEAAuE;aACnF;YACD;gBACE,EAAE,EAAE,KAAK;gBACT,IAAI,EAAE,SAAS;gBACf,IAAI,EAAE,wCAAwC;gBAC9C,SAAS,EAAE,8GAA8G;aAC1H;SACF;KACF;CACF,CAAC","sourcesContent":["/**\n * The Phase 0 REJECTION record: a claimed bridge the atlas records as refuted,\n * together with the witness that refutes it.\n *\n * `ax-cubic-spring-lc` claims the cubic (Duffing-type) spring\n * `m x″ + k x + β x³ = 0` is exactly equivalent to the LC circuit\n * `L q″ + q/C = 0`. It is not. The cubic spring's variable set\n * {m, k, β, x0} carries exactly ONE dimensionless group, `β x0² / k`, which\n * measures the nonlinearity and has no counterpart on the LC side: the LC\n * variable set is dimensionally independent and admits no group at all. A\n * surviving group with no image cannot be matched by any change of variables,\n * so no exact equivalence exists.\n *\n * @module atlas/oscillators/rejections\n */\n\nimport type { AtlasRejection } from '../types.js';\n\n/** The rejected bridges of the oscillator pilot. @internal */\nexport const ATLAS_REJECTIONS: readonly AtlasRejection[] = [\n {\n id: 'ax-cubic-spring-lc',\n claimed: 'exact-equivalence',\n premises: ['model-cubic-spring'],\n conclusion: 'model-lc',\n reason:\n 'The cubic spring retains one dimensionless group, β x0² / k, that measures ' +\n 'its nonlinearity, and the LC variable set has none (W3). A surviving group ' +\n 'is necessary evidence, not sufficient. The decisive fact is isochrony: the ' +\n 'LC period is the same at every amplitude, the cubic spring period is not ' +\n '(W3b), and a change of variables that rescales time by a constant multiplies ' +\n 'every period by the same factor. So no such change of variables makes the two ' +\n 'models exactly equivalent.',\n survivingGroup: 'β x0² / k',\n witnesses: [\n {\n id: 'W3',\n kind: 'symbolic',\n test: 'tests/atlas/oscillators-coarse.test.ts',\n tolerance: 'exact integer π-group exponents; LC verdict dimensionally-independent',\n },\n {\n id: 'W3b',\n kind: 'numeric',\n test: 'tests/atlas/oscillators-coarse.test.ts',\n tolerance: 'linear period 2π within 1e-6 at A = 0.5, 1, 2; cubic-spring periods spread by more than 10% at β x0²/k = 0.1',\n },\n ],\n },\n];\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"path-bound.js","sourceRoot":"","sources":["../../src/atlas/path-bound.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"path-bound.js","sourceRoot":"","sources":["../../src/atlas/path-bound.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Routes through an atlas family, and the error bound a route carries.\n *\n * Two functions, and the second is the one that can do damage:\n *\n * - {@link findPath} is pure graph search. It answers \"is there a chain of\n * bridges from A to B\", and nothing more. A path existing says NOTHING about\n * whether that path supports a claim.\n * - {@link boundPath} answers \"what error bound does this chain carry\", and its\n * default answer is NO BOUND. `docs/planning/Atlas-Phase-2-Design.md` §3:\n *\n * > A path containing any edge whose relation composes to\n * > `'no-composite-claim'` has NO bound. It must return an explicit no-claim,\n * > never a number. A composed number over an undefined composite would be\n * > the most dangerous output this library could produce: precise-looking and\n * > unfounded.\n *\n * So {@link boundPath} returns a DISCRIMINATED UNION, not a number. A caller\n * cannot read `.bound` off a no-claim, because a no-claim has no `.bound` — the\n * refusal is enforced by the type rather than by a documented convention.\n *\n * ## Norms — why an exact edge does not compose for free\n *\n * `./error-algebra.ts` states the rule this module obeys, and it is narrower\n * than it first reads:\n *\n * > An exact equivalence contributes `IDENTITY_BOUND` **in the norms these\n * > Phase 0 bridges state** — not in every norm.\n *\n * An `exact-equivalence` bridge carries no `bound`, hence states no `norm`. It\n * therefore contributes `IDENTITY_BOUND` in NO norm, and a path that mixes it\n * with a normed bound cannot claim the composite holds in that norm. That is a\n * `'norm-not-stated'` no-claim. The composed NUMBER would be unchanged —\n * composing with the identity is arithmetically a no-op — which is exactly what\n * makes the error invisible without this gate: the danger is not a wrong\n * magnitude, it is a right magnitude attached to the wrong norm.\n *\n * The one way through is a DECLARATION on the exact bridge\n * (`AtlasBridge.normTransports`, `docs/planning/ADR-transported-norm-composition.md`):\n * a norm, a direction, a factor `K` and a time map, each with a witness. A route\n * that crosses the bridge in that direction, carrying a bound in that norm,\n * composes with `(K, 0)`; every other norm and direction is still refused, and\n * the refusal names the declaration that is missing.\n *\n * ⚠ **Correction to the S2.2 brief.** The brief states that no field records a\n * norm and that Phase 2 must add `norm?` to `ApproximationBound`. That is\n * out of date: `ApproximationBound.norm` already exists as a MANDATORY\n * `string` (Phase 0, `./types.ts`). No type change was needed, and this module\n * reads the field that is already there.\n *\n * **Uniformity is gated here, at use.** `ApproximationBound.uniformity` may\n * be `null` (or empty — the same state) so a real bound can be recorded\n * before anyone has analysed what the error is uniform in. Composing such a\n * bound would attach a number to an unanalysed claim, so {@link boundPath}\n * returns `'uniformity-unanalysed'` and does not compute one.\n * `propagateUncertainty` does not read the field and does not fold `delta`\n * into `sigma`: it stays a statistical-sigma function.\n *\n * Pure: no I/O, no registry reads.\n *\n * @module atlas/path-bound\n */\n\nimport { composeBoundPath, IDENTITY_BOUND } from './error-algebra.js';\nimport type { BoundPair } from './error-algebra.js';\nimport { composeRelation, NO_COMPOSITE_CLAIM } from './composition-table.js';\nimport type { CompositionResult } from './composition-table.js';\nimport type { AtlasBridge, NormTransport, RelationType } from './types.js';\nimport { ATLAS_FAMILIES } from './families.js';\nimport type { AtlasFamily } from './family.js';\n\n/**\n * Families {@link findPath} can search: every registered family. This was the\n * oscillator family alone, which made the diffusion and wave families\n * unsearchable once they existed. A route stays INSIDE one family: a bridge\n * that ends in another family's model is not followed across (stated, not\n * hidden — cross-family routes are {@link findAtlasPath}'s scope).\n *\n * @internal\n */\nconst FAMILIES: Readonly<Record<string, AtlasFamily>> = Object.fromEntries(\n ATLAS_FAMILIES.map((f) => [f.family, f]),\n);\n\n/**\n * One traversable direction of one bridge.\n *\n * An `exact-equivalence` is invertible — `AtlasBridge` requires its `inverse`\n * — so it yields two directed edges. Every other relation yields one:\n * an approximation, a restriction and a coarse-graining all LOSE information,\n * and traversing one backwards would assert a recovery nothing supports.\n */\ninterface DirectedEdge {\n readonly from: string;\n readonly to: string;\n readonly bridge: AtlasBridge;\n}\n\n/** Expand bridges into directed edges. Single-premise chains only. */\nfunction directedEdges(bridges: readonly AtlasBridge[]): readonly DirectedEdge[] {\n const edges: DirectedEdge[] = [];\n for (const bridge of bridges) {\n // Sprint 2 scope: a multi-premise bridge is a JOIN, not a link in a chain,\n // and is skipped rather than silently reduced to its first premise.\n if (bridge.premises.length !== 1) continue;\n const from = bridge.premises[0]!;\n edges.push({ from, to: bridge.conclusion, bridge });\n if (bridge.relation === 'exact-equivalence') {\n edges.push({ from: bridge.conclusion, to: from, bridge });\n }\n }\n return edges;\n}\n\n/**\n * Shortest chain of bridges from `from` to `to`, or `null` if none exists.\n *\n * Breadth-first, so the result is a shortest path by edge count. Ties are\n * broken by `family.bridges` order, which is the design note's order and is\n * therefore stable across runs.\n *\n * A returned path is a ROUTE, not a warrant: ask {@link boundPath} what the\n * route supports.\n *\n * @throws RangeError if `family` is not a known family, or an endpoint is not\n * one of its models. An unknown endpoint returning `null` would be\n * indistinguishable from a genuinely disconnected pair.\n * @internal\n */\nexport function findPath(\n family: string,\n from: string,\n to: string,\n): readonly AtlasBridge[] | null {\n const fam = FAMILIES[family];\n if (fam === undefined) {\n throw new RangeError(`findPath: unknown family '${family}'`);\n }\n const models = new Set(fam.models.map((m) => m.id));\n for (const endpoint of [from, to]) {\n if (!models.has(endpoint)) {\n throw new RangeError(`findPath: '${endpoint}' is not a model of family '${family}'`);\n }\n }\n return shortestChain(fam.bridges, from, to);\n}\n\n/**\n * Shortest chain of bridges from `from` to `to` across EVERY registered\n * family, or `null` if none exists.\n *\n * A family is a filing label, not a physical boundary: `ab-kg-schrodinger` is\n * filed under waves and ends in the diffusion family's free Schrödinger model.\n * The search runs over the union of all families' bridges under the same\n * rules as {@link findPath} — an exact equivalence both ways, every lossy\n * relation forward only — and the route it returns is composed by\n * {@link boundPath} exactly as a single-family route is. Crossing a family\n * adds no composition rule.\n *\n * Ties are broken by {@link ATLAS_FAMILIES} order, then each family's bridge\n * order, so the result is stable across runs.\n *\n * @throws RangeError if an endpoint is not a model of any family.\n * @internal\n */\nexport function findAtlasPath(from: string, to: string): readonly AtlasBridge[] | null {\n const models = new Set(ATLAS_FAMILIES.flatMap((f) => f.models.map((m) => m.id)));\n for (const endpoint of [from, to]) {\n if (!models.has(endpoint)) {\n throw new RangeError(`findAtlasPath: '${endpoint}' is not a model of any atlas family`);\n }\n }\n return shortestChain(\n ATLAS_FAMILIES.flatMap((f) => f.bridges),\n from,\n to,\n );\n}\n\n/**\n * The simple routes from `from` to `to` across every registered family, as\n * far as a bounded search reaches. Each route is a list of bridges, and no route\n * visits a model twice. Traversal follows the same rules as\n * {@link findAtlasPath}: an exact equivalence both ways, every lossy relation\n * forward only, multi-premise bridges skipped.\n *\n * The search runs by bridge count (every route of k bridges before any of\n * k + 1), with ties in {@link ATLAS_FAMILIES} order and then bridge order. It stops\n * once it has found `limit + 1` routes, or after expanding `budget` partial\n * routes. Stopping early is REPORTED, not hidden: `exhausted` is false,\n * `stoppedBy` says which bound stopped it, and `completeThrough` is the largest\n * bridge count up to which every route has been found. When `exhausted` is\n * true, `routes` holds all of them.\n *\n * @throws RangeError if an endpoint is not a model of any family, or `limit`\n * is not a positive integer (via {@link enumerateRoutes}).\n * @internal\n */\nexport function enumerateAtlasRoutes(\n from: string,\n to: string,\n limit: number,\n budget = 100_000,\n): RouteEnumeration {\n const models = new Set(ATLAS_FAMILIES.flatMap((f) => f.models.map((m) => m.id)));\n for (const endpoint of [from, to]) {\n if (!models.has(endpoint)) {\n throw new RangeError(`enumerateAtlasRoutes: '${endpoint}' is not a model of any atlas family`);\n }\n }\n return enumerateRoutes(ATLAS_FAMILIES.flatMap((f) => f.bridges), from, to, limit, budget);\n}\n\n/** What {@link enumerateAtlasRoutes} found, and whether the search was cut short. @internal */\nexport interface RouteEnumeration {\n readonly routes: (readonly AtlasBridge[])[];\n readonly exhausted: boolean;\n readonly completeThrough: number | null;\n readonly stoppedBy: 'limit' | 'budget' | null;\n}\n\n/**\n * {@link enumerateAtlasRoutes} over an explicit bridge list; endpoints are not\n * validated against any family.\n * @throws RangeError if `limit` is not a positive integer.\n * @internal\n */\nexport function enumerateRoutes(\n bridges: readonly AtlasBridge[],\n from: string,\n to: string,\n limit: number,\n budget = 100_000,\n): RouteEnumeration {\n if (!Number.isInteger(limit) || limit < 1) {\n throw new RangeError(`enumerateRoutes: limit must be a positive integer, got ${limit}`);\n }\n if (from === to) return { routes: [[]], exhausted: true, completeThrough: null, stoppedBy: null };\n\n const outgoing = new Map<string, DirectedEdge[]>();\n for (const edge of directedEdges(bridges)) {\n const bucket = outgoing.get(edge.from);\n if (bucket === undefined) outgoing.set(edge.from, [edge]);\n else bucket.push(edge);\n }\n\n interface Partial {\n readonly at: string;\n readonly visited: ReadonlySet<string>;\n readonly bridges: readonly AtlasBridge[];\n }\n const routes: (readonly AtlasBridge[])[] = [];\n let layer: Partial[] = [{ at: from, visited: new Set([from]), bridges: [] }];\n let expanded = 0;\n for (let length = 1; layer.length > 0; length++) {\n const next: Partial[] = [];\n for (const p of layer) {\n if (++expanded > budget) {\n return { routes: routes.slice(0, limit), exhausted: false, completeThrough: length - 1, stoppedBy: 'budget' };\n }\n for (const edge of outgoing.get(p.at) ?? []) {\n if (p.visited.has(edge.to)) continue;\n const route = [...p.bridges, edge.bridge];\n if (edge.to === to) {\n routes.push(route);\n if (routes.length > limit) {\n return { routes: routes.slice(0, limit), exhausted: false, completeThrough: length - 1, stoppedBy: 'limit' };\n }\n } else {\n next.push({ at: edge.to, visited: new Set([...p.visited, edge.to]), bridges: route });\n }\n }\n }\n layer = next;\n }\n return { routes, exhausted: true, completeThrough: null, stoppedBy: null };\n}\n\n/** Breadth-first shortest chain over `bridges`; endpoints already validated. */\nfunction shortestChain(\n bridges: readonly AtlasBridge[],\n from: string,\n to: string,\n): readonly AtlasBridge[] | null {\n if (from === to) return [];\n\n const outgoing = new Map<string, DirectedEdge[]>();\n for (const edge of directedEdges(bridges)) {\n const bucket = outgoing.get(edge.from);\n if (bucket === undefined) outgoing.set(edge.from, [edge]);\n else bucket.push(edge);\n }\n\n const cameBy = new Map<string, DirectedEdge>();\n const seen = new Set<string>([from]);\n const queue: string[] = [from];\n\n while (queue.length > 0) {\n const node = queue.shift()!;\n for (const edge of outgoing.get(node) ?? []) {\n if (seen.has(edge.to)) continue;\n seen.add(edge.to);\n cameBy.set(edge.to, edge);\n if (edge.to === to) {\n const path: AtlasBridge[] = [];\n for (let at = to; at !== from; ) {\n const step = cameBy.get(at)!;\n path.unshift(step.bridge);\n at = step.from;\n }\n return path;\n }\n queue.push(edge.to);\n }\n }\n return null;\n}\n\n/** Why a path supports no bound. @internal */\nexport type NoClaimReason =\n /** The relations along the path do not compose to a relation at all. */\n | 'no-composite-claim'\n /** An edge on the path states no norm, so the composite holds in none. */\n | 'norm-not-stated'\n /** Two edges state DIFFERENT norms; composing across norms is unsound. */\n | 'norm-mismatch'\n /**\n * A norm stated in one model family was carried into another with no\n * witnessed transport across that boundary. String equality is not a match\n * there. A one-step route does not reach this gate.\n */\n | 'cross-family-unmapped'\n /**\n * A bound on the path has `uniformity === null` or an empty list: what the\n * error is uniform in has not been analysed, so no number is stated.\n */\n | 'uniformity-unanalysed';\n\n/** A path that DOES carry a bound. @internal */\nexport interface PathBoundClaim {\n readonly kind: 'bound';\n readonly bound: BoundPair;\n /** True when the path ended on a step with no Lipschitz constant. */\n readonly terminal: boolean;\n /** The relation the chain asserts, from {@link composeRelation}. */\n readonly relation: RelationType;\n /**\n * The norm the composite holds in: the single norm every bound on the path\n * states, or the `to` norm of the last transport applied after them. `null`\n * when the path carries no bound at all and the claim is the vacuous\n * `terminal` identity over an empty prefix.\n */\n readonly norm: string | null;\n /** The declared norm transports that carried the bound across exact maps; absent when none did. */\n readonly transports?: readonly AppliedTransport[];\n}\n\n/** A declared norm transport {@link boundPath} applied, and where on the path. @internal */\nexport interface AppliedTransport {\n /** Index of the exact bridge in the path. */\n readonly index: number;\n readonly bridgeId: string;\n readonly transport: NormTransport;\n}\n\n/** A path that carries NO bound, and the reason. @internal */\nexport interface PathNoClaim {\n readonly kind: 'no-claim';\n readonly reason: NoClaimReason;\n /** Human-readable specifics: which edge, which norms. */\n readonly detail: string;\n}\n\n/** The result of {@link boundPath}: a bound, or an explicit refusal. @internal */\nexport type PathBoundResult = PathBoundClaim | PathNoClaim;\n\nfunction modelFamilyOf(id: string | null): string | undefined {\n if (id === null) return undefined;\n return ATLAS_FAMILIES.find((f) => f.models.some((m) => m.id === id))?.family;\n}\n\nfunction familiesDiffer(a: string | undefined, b: string | undefined): boolean {\n return a !== undefined && b !== undefined && a !== b;\n}\n\n/**\n * A cross-family transport with a witness. An empty witness id or test is not\n * one, and `kind: 'formal'` is not one: `formally-proved` is only a reviewed\n * `formalRef`, which a transport does not carry.\n */\nfunction vocabularyTransport(\n bridge: AtlasBridge,\n norm: string,\n fromModel: string | null,\n toModel: string | null,\n): NormTransport | undefined {\n if (fromModel === null || toModel === null) return undefined;\n return (bridge.normTransports ?? []).find(\n (nt) =>\n nt.from === norm &&\n nt.fromModel === fromModel &&\n nt.toModel === toModel &&\n nt.timeMap.uniform &&\n familiesDiffer(modelFamilyOf(nt.fromModel), modelFamilyOf(nt.toModel)) &&\n nt.witness.id !== '' &&\n nt.witness.test !== '' &&\n nt.witness.kind !== 'formal',\n );\n}\n\n/**\n * The error bound a chain of bridges carries — or an explicit no-claim.\n *\n * Five gates, in this order. Each one is a reason to refuse, and the FIRST\n * reason found is the one reported; none of them is skippable by a caller.\n *\n * 1. **Relation.** `composeRelation` is folded along the path. The moment the\n * running composite is `'no-composite-claim'`, the path has no bound. This\n * is design note §3 constraint 1 and it is checked before any arithmetic,\n * so no number is ever computed for a path that cannot carry one.\n * 2. **Uniformity.** Any bound whose `uniformity` is `null` or empty is not\n * yet analysed. The path returns `'uniformity-unanalysed'` and no Lipschitz\n * arithmetic runs. An edge with no `bound` — an exact equivalence, or an\n * unbounded coarse-graining — does not fail this gate.\n * 3. **Lipschitz.** `composeBoundPath` folds the per-edge pairs. A `null` — an\n * edge that is neither bounded nor exact — is tolerated only as the LAST\n * entry, where it terminates the claim (`terminal: true`); anywhere else it\n * throws `MissingLipschitzError` rather than inventing a constant.\n * 4. **Norm.** Every stated norm on the path must be the SAME norm as the bound\n * reaching it, and no unnormed exact map may carry a normed claim. An\n * `exact-equivalence` states no norm (it has no `bound`), so a path mixing\n * one with a normed bound is `'norm-not-stated'` — see the module note —\n * UNLESS the exact bridge declares a `NormTransport` from the running norm,\n * for the direction the route crosses it, with a uniform time map. Then it\n * contributes `(K, 0)` and the running norm becomes the transport's `to`.\n * A mismatch is reported before a missing norm.\n * 5. **Vocabulary.** When the models a norm is carried between sit in different\n * families, string equality is not a match. The carry needs a\n * `NormTransport` whose `fromModel` / `toModel` are the models the route\n * crosses, whose `from` is the running norm, whose time map is uniform, and\n * whose witness is present. Otherwise the refusal is\n * `'cross-family-unmapped'`. A one-step route has nothing to carry, so this\n * gate does not fire. A missing Lipschitz constant is reported first.\n *\n * @throws RangeError on an empty path. Returning `IDENTITY_BOUND` for \"no\n * edges\" would be a bound asserted about nothing.\n * @throws MissingLipschitzError via {@link composeBoundPath}; see gate 3.\n * @internal\n */\nexport function boundPath(bridges: readonly AtlasBridge[]): PathBoundResult {\n if (bridges.length === 0) {\n throw new RangeError('boundPath: an empty path composes nothing; there is no bound to state');\n }\n\n // ── Gate 1: the relation must compose all the way along ───────────────────\n let relation: CompositionResult = bridges[0]!.relation;\n for (let i = 1; i < bridges.length; i++) {\n const next = bridges[i]!;\n // The loop RETURNS on the first silent cell, so `relation` is always a\n // real `RelationType` here — no re-check is needed, and TypeScript proves\n // it (a guard here is flagged as having no overlap).\n relation = composeRelation(relation, next.relation);\n if (relation === NO_COMPOSITE_CLAIM) {\n return {\n kind: 'no-claim',\n reason: NO_COMPOSITE_CLAIM,\n detail:\n `'${bridges[i - 1]!.id}' (${bridges[i - 1]!.relation}) then '${next.id}' ` +\n `(${next.relation}) composes to no relation, so the path carries no bound`,\n };\n }\n }\n\n // ── Gate 2: an unanalysed uniformity yields no number ─────────────────────\n // Before any Lipschitz arithmetic. `null` and `[]` are the same state: an\n // empty list is a universal over nothing, and counting it as analysed is\n // the convention-checked empty-object defect. An edge with no bound states\n // no error, so it does not fail this gate.\n for (const bridge of bridges) {\n if (bridge.bound === undefined) continue;\n const uniformity = bridge.bound.uniformity;\n if (uniformity === null || uniformity.length === 0) {\n const how = uniformity === null ? 'null' : 'empty';\n return {\n kind: 'no-claim',\n reason: 'uniformity-unanalysed',\n detail:\n `'${bridge.id}' has uniformity ${how} (not yet analysed), so the path carries no numeric bound`,\n };\n }\n }\n\n // ── Collect the per-edge pairs the remaining gates read ───────────────────\n // What each edge contributes. The split that matters: an `exact-equivalence`\n // with no `bound` is EXACT — it contributes `IDENTITY_BOUND`, not an unknown\n // constant. Any OTHER relation with no bound has an unknown Lipschitz\n // constant, and `null` is what says so. Conflating the two would either\n // invent a constant for a lossy map or throw on an exact one.\n //\n // An exact edge AFTER a bound contributes `(K, 0)` in its declared transport's\n // `to` norm, but only when it declares a transport from the norm the bound so\n // far is in, for the direction the route crosses it\n // (docs/planning/ADR-transported-norm-composition.md). Without one it stays the\n // identity in no norm, and gate 4 refuses.\n const entries = entryModels(bridges);\n const pairs: (BoundPair | null)[] = [];\n const stated: string[] = [];\n const transports: AppliedTransport[] = [];\n const unnormed: string[] = [];\n let running: string | null = null;\n let mismatch: string | null = null;\n let normFamily: string | undefined;\n let normModel: string | null = null;\n let vocabulary: {\n bridgeId: string;\n fromFamily: string;\n toFamily: string;\n norm: string;\n fromModel: string;\n toModel: string;\n } | null = null;\n for (let index = 0; index < bridges.length; index++) {\n const bridge = bridges[index]!;\n const entry = entries[index] ?? null;\n const exit =\n entry === null ? null : bridge.relation === 'exact-equivalence' ? otherEnd(bridge, entry) : bridge.conclusion;\n const entryFam = modelFamilyOf(entry);\n const exitFam = modelFamilyOf(exit);\n if (\n running !== null &&\n normFamily !== undefined &&\n entryFam !== undefined &&\n normFamily !== entryFam &&\n vocabulary === null\n ) {\n const carried = vocabularyTransport(bridge, running, normModel, entry);\n if (carried === undefined) {\n vocabulary = {\n bridgeId: bridge.id,\n fromFamily: normFamily,\n toFamily: entryFam,\n norm: running,\n fromModel: normModel ?? '?',\n toModel: entry ?? '?',\n };\n } else {\n pairs.push({ K: carried.K, delta: 0 });\n transports.push({ index, bridgeId: bridge.id, transport: carried });\n running = carried.to;\n normFamily = modelFamilyOf(carried.toModel);\n normModel = carried.toModel;\n }\n }\n if (bridge.bound !== undefined) {\n pairs.push({ K: bridge.bound.K, delta: bridge.bound.delta });\n stated.push(bridge.bound.norm);\n const statedFamily = familiesDiffer(entryFam, exitFam) ? entryFam : (exitFam ?? entryFam);\n if (vocabulary === null && running !== null && bridge.bound.norm !== running) {\n if (normFamily !== undefined && statedFamily !== undefined && normFamily !== statedFamily) {\n vocabulary = {\n bridgeId: bridge.id,\n fromFamily: normFamily,\n toFamily: statedFamily,\n norm: running,\n fromModel: normModel ?? '?',\n toModel: exit ?? '?',\n };\n } else if (mismatch === null) {\n mismatch =\n `'${bridge.id}' states '${bridge.bound.norm}', but the bound reaching it is in '${running}'` +\n (transports.length > 0 ? ` after ${transports.map((a) => `'${a.transport.id}'`).join(', ')}` : '');\n }\n }\n running = bridge.bound.norm;\n if (familiesDiffer(entryFam, exitFam)) {\n const into = vocabularyTransport(bridge, running, entry, exit);\n if (into !== undefined) {\n pairs.push({ K: into.K, delta: 0 });\n transports.push({ index, bridgeId: bridge.id, transport: into });\n running = into.to;\n normFamily = exitFam;\n normModel = exit;\n } else {\n normFamily = entryFam;\n normModel = entry;\n }\n } else {\n normFamily = statedFamily;\n normModel = exit ?? entry;\n }\n } else if (bridge.relation === 'exact-equivalence') {\n const declared = bridge.normTransports ?? [];\n const normNow: string | null = running;\n const applies = (nt: NormTransport): boolean =>\n nt.from === normNow && nt.fromModel === entry && nt.toModel === exit;\n const transport: NormTransport | undefined =\n normNow === null ? undefined : declared.find((nt) => applies(nt) && nt.timeMap.uniform);\n if (transport !== undefined) {\n pairs.push({ K: transport.K, delta: 0 });\n transports.push({ index, bridgeId: bridge.id, transport });\n running = transport.to;\n normModel = exit;\n const carriedFamily = modelFamilyOf(exit);\n if (carriedFamily !== undefined) normFamily = carriedFamily;\n continue;\n }\n pairs.push(IDENTITY_BOUND);\n if (running === null) {\n unnormed.push(`'${bridge.id}' comes before any bound, and no transport is defined for an exact map there`);\n continue;\n }\n const nonUniform = declared.find((nt) => applies(nt) && !nt.timeMap.uniform);\n const others = declared.filter((nt) => !applies(nt));\n unnormed.push(\n `'${bridge.id}' declares no norm transport from '${running}' for ${entry ?? '?'} → ${exit ?? '?'}` +\n (nonUniform !== undefined\n ? ` (its transport '${nonUniform.id}' has a non-uniform time map and is not applied)`\n : '') +\n (others.length > 0\n ? `; it declares only ${others.map((nt) => `'${nt.from}' → '${nt.to}' for ${nt.fromModel} → ${nt.toModel}`).join(', ')}`\n : ''),\n );\n } else {\n pairs.push(null);\n }\n }\n\n // ── Gate 3: an unknown Lipschitz constant, anywhere but last, is fatal ────\n // Delegated to `composeBoundPath`, which throws `MissingLipschitzError`\n // rather than inventing a constant. Run BEFORE the norm gate: an unbounded\n // composite is a harder failure than an unstatable norm, and reporting the\n // softer one would mask it.\n const composed = composeBoundPath(pairs);\n\n // ── Gate 5: a family boundary is not string equality ──────────────────────\n // After the Lipschitz gate, so a missing constant is still the harder failure.\n // Before the string mismatch: across families the strings were never the same\n // norm, and a mismatch would claim they were compared.\n if (vocabulary !== null) {\n return {\n kind: 'no-claim',\n reason: 'cross-family-unmapped',\n detail:\n `'${vocabulary.bridgeId}' has no norm transport of '${vocabulary.norm}' from family '${vocabulary.fromFamily}' ` +\n `(${vocabulary.fromModel}) into family '${vocabulary.toFamily}' (${vocabulary.toModel}), so the path carries no bound`,\n };\n }\n\n // ── Gate 4: one norm, and no unnormed map carrying a normed claim ─────────\n const distinct = [...new Set(stated)];\n if (mismatch !== null) {\n return {\n kind: 'no-claim',\n reason: 'norm-mismatch',\n detail:\n distinct.length > 1\n ? `the path states ${distinct.length} different norms (${distinct.map((n) => `'${n}'`).join(', ')}); ` +\n 'bounds in different norms do not compose'\n : `${mismatch}; bounds in different norms do not compose`,\n };\n }\n if (unnormed.length > 0 && stated.length > 0) {\n return {\n kind: 'no-claim',\n reason: 'norm-not-stated',\n detail:\n `${unnormed.join('; ')}. An exact map with no transport for the norm contributes IDENTITY_BOUND in no ` +\n `norm, so the composite cannot be claimed in '${stated[0]}'`,\n };\n }\n return {\n kind: 'bound',\n bound: composed.bound,\n terminal: composed.terminal,\n relation,\n norm: running,\n ...(transports.length > 0 ? { transports } : {}),\n };\n}\n\n/**\n * The model each step of a route is entered from, or `null` where the list is\n * not a chain. An exact equivalence may be crossed either way; the first one is\n * read as reversed when the next step leaves from its premise and not from its\n * conclusion. Every other relation is crossed forward.\n *\n * @internal\n */\nexport function routeEntryModels(bridges: readonly AtlasBridge[]): (string | null)[] {\n if (bridges.length === 0) return [];\n return entryModels(bridges);\n}\n\nfunction entryModels(bridges: readonly AtlasBridge[]): (string | null)[] {\n const first = bridges[0]!;\n let at: string | null = first.premises.length === 1 ? first.premises[0]! : null;\n if (first.relation === 'exact-equivalence' && at !== null && bridges.length > 1) {\n const next = bridges[1]!;\n const ends = [...next.premises, next.conclusion];\n if (!ends.includes(first.conclusion) && ends.includes(at)) at = first.conclusion;\n }\n const entries: (string | null)[] = [];\n for (const b of bridges) {\n entries.push(at);\n at = b.relation === 'exact-equivalence' ? (at === null ? null : otherEnd(b, at)) : b.conclusion;\n }\n return entries;\n}\n\n/**\n * True when step `index` sits in a different model family from the previous\n * step and no applied transport restates a clock onto it. The step's own\n * horizon is then unevaluated: a family change does not copy one.\n *\n * @internal\n */\nexport function familyChangeBlocksHorizon(\n bridges: readonly AtlasBridge[],\n transports: readonly AppliedTransport[],\n index: number,\n): boolean {\n if (index <= 0 || index >= bridges.length) return false;\n const entries = entryModels(bridges);\n const exitAt = (i: number): string | null => {\n const entry = entries[i] ?? null;\n const bridge = bridges[i]!;\n if (entry === null) return null;\n return bridge.relation === 'exact-equivalence' ? otherEnd(bridge, entry) : bridge.conclusion;\n };\n const previous = modelFamilyOf(exitAt(index - 1));\n const here = modelFamilyOf(exitAt(index)) ?? modelFamilyOf(entries[index] ?? null);\n if (!familiesDiffer(previous, here)) return false;\n return !transports.some((a) => a.index === index && a.transport.timeMap.uniform);\n}\n\n/** The end of an exact bridge a route leaves by, entering at `entry`; `null` when `entry` is neither end. */\nfunction otherEnd(bridge: AtlasBridge, entry: string): string | null {\n if (bridge.premises.length !== 1) return null;\n if (entry === bridge.premises[0]) return bridge.conclusion;\n if (entry === bridge.conclusion) return bridge.premises[0]!;\n return null;\n}\n\n/**\n * The horizon of the bound on `bridges[index]` as it reads at the END of the\n * route: restated through every transport applied after it (a\n * {@link PathBoundClaim}'s `transports`; none for a no-claim). `null` when that\n * step carries no bound.\n *\n * @internal\n */\nexport function horizonOnRoute(\n bridges: readonly AtlasBridge[],\n transports: readonly AppliedTransport[],\n index: number,\n): {\n readonly horizon: string;\n readonly restatedBy: readonly AppliedTransport[];\n readonly holds: (t: number, params: Readonly<Record<string, number>>) => boolean;\n} | null {\n const bound = bridges[index]?.bound;\n if (bound === undefined) return null;\n const later = transports.filter((a) => a.index > index);\n const holds = later.reduce((h, a) => a.transport.timeMap.restateHorizon(h), bound.horizonHolds);\n return { horizon: bound.horizon, restatedBy: later, holds };\n}\n\n/**\n * Re-exported so a caller need not reach into the algebra module.\n *\n * @internal\n */\nexport { IDENTITY_BOUND } from './error-algebra.js';\n"]}