universal-physics-tensor 9.0.0 → 10.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 (824) hide show
  1. package/README.md +19 -16
  2. package/data/atlas/atlas.json +55 -44
  3. package/data/atlas/atlas.jsonld +1 -1
  4. package/data/atlas/diffusion.json +19 -18
  5. package/data/atlas/oscillators.json +15 -10
  6. package/data/atlas/waves.json +23 -18
  7. package/data/bridge-catalog.json +886 -1473
  8. package/data/bridge-catalog.schema.json +349 -132
  9. package/data/quantities.json +53 -19
  10. package/data/schemas/atlas-record.v0.json +184 -46
  11. package/data/units.json +33 -4
  12. package/dist/atlas/applicability.d.ts.map +1 -1
  13. package/dist/atlas/applicability.js +14 -3
  14. package/dist/atlas/applicability.js.map +1 -1
  15. package/dist/atlas/association.js.map +1 -1
  16. package/dist/atlas/benchmark/backend-shapes.d.ts.map +1 -1
  17. package/dist/atlas/benchmark/backend-shapes.js +5 -1
  18. package/dist/atlas/benchmark/backend-shapes.js.map +1 -1
  19. package/dist/atlas/benchmark/baselines.d.ts.map +1 -1
  20. package/dist/atlas/benchmark/baselines.js +8 -0
  21. package/dist/atlas/benchmark/baselines.js.map +1 -1
  22. package/dist/atlas/benchmark/hybrid-retrieval.d.ts +3 -2
  23. package/dist/atlas/benchmark/hybrid-retrieval.d.ts.map +1 -1
  24. package/dist/atlas/benchmark/hybrid-retrieval.js +15 -8
  25. package/dist/atlas/benchmark/hybrid-retrieval.js.map +1 -1
  26. package/dist/atlas/benchmark/leakage.js.map +1 -1
  27. package/dist/atlas/benchmark/loader.js.map +1 -1
  28. package/dist/atlas/benchmark/run-atlas.d.ts.map +1 -1
  29. package/dist/atlas/benchmark/run-atlas.js +14 -2
  30. package/dist/atlas/benchmark/run-atlas.js.map +1 -1
  31. package/dist/atlas/benchmark/stats.d.ts +1 -1
  32. package/dist/atlas/benchmark/stats.d.ts.map +1 -1
  33. package/dist/atlas/benchmark/stats.js +1 -1
  34. package/dist/atlas/benchmark/stats.js.map +1 -1
  35. package/dist/atlas/benchmark/study.js.map +1 -1
  36. package/dist/atlas/benchmark/types.js.map +1 -1
  37. package/dist/atlas/bridge-record.d.ts +4 -4
  38. package/dist/atlas/bridge-record.d.ts.map +1 -1
  39. package/dist/atlas/bridge-record.js +6 -6
  40. package/dist/atlas/bridge-record.js.map +1 -1
  41. package/dist/atlas/catalog-formal-ref.js.map +1 -1
  42. package/dist/atlas/chain-pipeline.d.ts +0 -11
  43. package/dist/atlas/chain-pipeline.d.ts.map +1 -1
  44. package/dist/atlas/chain-pipeline.js +5 -16
  45. package/dist/atlas/chain-pipeline.js.map +1 -1
  46. package/dist/atlas/composition-table.js.map +1 -1
  47. package/dist/atlas/conventions.js.map +1 -1
  48. package/dist/atlas/coverage.d.ts +2 -2
  49. package/dist/atlas/coverage.js.map +1 -1
  50. package/dist/atlas/derivation.js.map +1 -1
  51. package/dist/atlas/derive-evidence.d.ts +6 -4
  52. package/dist/atlas/derive-evidence.d.ts.map +1 -1
  53. package/dist/atlas/derive-evidence.js +7 -2
  54. package/dist/atlas/derive-evidence.js.map +1 -1
  55. package/dist/atlas/diffusion/bridges-closure.d.ts.map +1 -1
  56. package/dist/atlas/diffusion/bridges-closure.js +0 -5
  57. package/dist/atlas/diffusion/bridges-closure.js.map +1 -1
  58. package/dist/atlas/diffusion/bridges.d.ts.map +1 -1
  59. package/dist/atlas/diffusion/bridges.js +0 -3
  60. package/dist/atlas/diffusion/bridges.js.map +1 -1
  61. package/dist/atlas/diffusion/dimensions.js.map +1 -1
  62. package/dist/atlas/diffusion/index.d.ts +1 -1
  63. package/dist/atlas/diffusion/index.d.ts.map +1 -1
  64. package/dist/atlas/diffusion/index.js.map +1 -1
  65. package/dist/atlas/diffusion/models.js.map +1 -1
  66. package/dist/atlas/diffusion/numerics.js.map +1 -1
  67. package/dist/atlas/error-algebra.d.ts +6 -0
  68. package/dist/atlas/error-algebra.d.ts.map +1 -1
  69. package/dist/atlas/error-algebra.js +26 -0
  70. package/dist/atlas/error-algebra.js.map +1 -1
  71. package/dist/atlas/export.d.ts +18 -2
  72. package/dist/atlas/export.d.ts.map +1 -1
  73. package/dist/atlas/export.js +9 -3
  74. package/dist/atlas/export.js.map +1 -1
  75. package/dist/atlas/families.d.ts +19 -2
  76. package/dist/atlas/families.d.ts.map +1 -1
  77. package/dist/atlas/families.js +26 -3
  78. package/dist/atlas/families.js.map +1 -1
  79. package/dist/atlas/family.d.ts +27 -0
  80. package/dist/atlas/family.d.ts.map +1 -0
  81. package/dist/atlas/family.js +12 -0
  82. package/dist/atlas/family.js.map +1 -0
  83. package/dist/atlas/index.d.ts +3 -2
  84. package/dist/atlas/index.d.ts.map +1 -1
  85. package/dist/atlas/index.js +2 -1
  86. package/dist/atlas/index.js.map +1 -1
  87. package/dist/atlas/link-prediction.d.ts +1 -1
  88. package/dist/atlas/link-prediction.d.ts.map +1 -1
  89. package/dist/atlas/link-prediction.js.map +1 -1
  90. package/dist/atlas/model.js.map +1 -1
  91. package/dist/atlas/oscillators/bridges-coarse.d.ts.map +1 -1
  92. package/dist/atlas/oscillators/bridges-coarse.js +0 -1
  93. package/dist/atlas/oscillators/bridges-coarse.js.map +1 -1
  94. package/dist/atlas/oscillators/bridges-exact.d.ts.map +1 -1
  95. package/dist/atlas/oscillators/bridges-exact.js +0 -3
  96. package/dist/atlas/oscillators/bridges-exact.js.map +1 -1
  97. package/dist/atlas/oscillators/bridges-limits.d.ts.map +1 -1
  98. package/dist/atlas/oscillators/bridges-limits.js +0 -2
  99. package/dist/atlas/oscillators/bridges-limits.js.map +1 -1
  100. package/dist/atlas/oscillators/dimensions.js.map +1 -1
  101. package/dist/atlas/oscillators/index.d.ts +1 -16
  102. package/dist/atlas/oscillators/index.d.ts.map +1 -1
  103. package/dist/atlas/oscillators/index.js.map +1 -1
  104. package/dist/atlas/oscillators/limit-witnesses.js.map +1 -1
  105. package/dist/atlas/oscillators/models.js.map +1 -1
  106. package/dist/atlas/oscillators/norm-transport-witness.js.map +1 -1
  107. package/dist/atlas/oscillators/norm-transport.js.map +1 -1
  108. package/dist/atlas/oscillators/norms.js.map +1 -1
  109. package/dist/atlas/oscillators/pendulum-motion.js.map +1 -1
  110. package/dist/atlas/oscillators/phase-carriage.js.map +1 -1
  111. package/dist/atlas/oscillators/phase-translation.js.map +1 -1
  112. package/dist/atlas/oscillators/position-translation.js.map +1 -1
  113. package/dist/atlas/oscillators/rejections.js.map +1 -1
  114. package/dist/atlas/path-bound.js.map +1 -1
  115. package/dist/atlas/physjs-entries.generated.js.map +1 -1
  116. package/dist/atlas/physjs-ref.d.ts +79 -45
  117. package/dist/atlas/physjs-ref.d.ts.map +1 -1
  118. package/dist/atlas/physjs-ref.js +143 -62
  119. package/dist/atlas/physjs-ref.js.map +1 -1
  120. package/dist/atlas/physjs-reviewed.d.ts +31 -0
  121. package/dist/atlas/physjs-reviewed.d.ts.map +1 -0
  122. package/dist/atlas/physjs-reviewed.js +194 -0
  123. package/dist/atlas/physjs-reviewed.js.map +1 -0
  124. package/dist/atlas/poster/associations.js.map +1 -1
  125. package/dist/atlas/poster/derivations.js.map +1 -1
  126. package/dist/atlas/poster/statements.js.map +1 -1
  127. package/dist/atlas/proof-target.js.map +1 -1
  128. package/dist/atlas/public.d.ts +2 -1
  129. package/dist/atlas/public.d.ts.map +1 -1
  130. package/dist/atlas/public.js +2 -1
  131. package/dist/atlas/public.js.map +1 -1
  132. package/dist/atlas/regime.js.map +1 -1
  133. package/dist/atlas/serialize.d.ts +18 -12
  134. package/dist/atlas/serialize.d.ts.map +1 -1
  135. package/dist/atlas/serialize.js +28 -18
  136. package/dist/atlas/serialize.js.map +1 -1
  137. package/dist/atlas/statement.js.map +1 -1
  138. package/dist/atlas/translation-registry.js.map +1 -1
  139. package/dist/atlas/translation.js.map +1 -1
  140. package/dist/atlas/types.d.ts +9 -2
  141. package/dist/atlas/types.d.ts.map +1 -1
  142. package/dist/atlas/types.js +1 -1
  143. package/dist/atlas/types.js.map +1 -1
  144. package/dist/atlas/waves/bridges-closure.d.ts.map +1 -1
  145. package/dist/atlas/waves/bridges-closure.js +0 -3
  146. package/dist/atlas/waves/bridges-closure.js.map +1 -1
  147. package/dist/atlas/waves/bridges.d.ts.map +1 -1
  148. package/dist/atlas/waves/bridges.js +0 -4
  149. package/dist/atlas/waves/bridges.js.map +1 -1
  150. package/dist/atlas/waves/index.d.ts +1 -1
  151. package/dist/atlas/waves/index.d.ts.map +1 -1
  152. package/dist/atlas/waves/index.js.map +1 -1
  153. package/dist/atlas/waves/models.js.map +1 -1
  154. package/dist/atlas/waves/numerics.js.map +1 -1
  155. package/dist/atlas/witness-artifact.js.map +1 -1
  156. package/dist/atlas/witness-dominance.d.ts +4 -3
  157. package/dist/atlas/witness-dominance.d.ts.map +1 -1
  158. package/dist/atlas/witness-dominance.js +15 -5
  159. package/dist/atlas/witness-dominance.js.map +1 -1
  160. package/dist/atlas/witness-numeric.d.ts +8 -4
  161. package/dist/atlas/witness-numeric.d.ts.map +1 -1
  162. package/dist/atlas/witness-numeric.js +27 -2
  163. package/dist/atlas/witness-numeric.js.map +1 -1
  164. package/dist/atlas/witness-result.d.ts +7 -1
  165. package/dist/atlas/witness-result.d.ts.map +1 -1
  166. package/dist/atlas/witness-result.js.map +1 -1
  167. package/dist/atlas/witness-specs.js.map +1 -1
  168. package/dist/atlas/witness-symbolic.js.map +1 -1
  169. package/dist/atlas/witnesses/quantum-support.js.map +1 -1
  170. package/dist/bridges/caller-table.d.ts +1 -1
  171. package/dist/bridges/caller-table.d.ts.map +1 -1
  172. package/dist/bridges/caller-table.js.map +1 -1
  173. package/dist/bridges/carrier-sign.d.ts.map +1 -1
  174. package/dist/bridges/carrier-sign.js +8 -3
  175. package/dist/bridges/carrier-sign.js.map +1 -1
  176. package/dist/bridges/catalog-adapter.d.ts +12 -3
  177. package/dist/bridges/catalog-adapter.d.ts.map +1 -1
  178. package/dist/bridges/catalog-adapter.js +17 -9
  179. package/dist/bridges/catalog-adapter.js.map +1 -1
  180. package/dist/bridges/catalog-load.d.ts +12 -2
  181. package/dist/bridges/catalog-load.d.ts.map +1 -1
  182. package/dist/bridges/catalog-load.js +171 -8
  183. package/dist/bridges/catalog-load.js.map +1 -1
  184. package/dist/bridges/catalog-types.d.ts +48 -24
  185. package/dist/bridges/catalog-types.d.ts.map +1 -1
  186. package/dist/bridges/catalog-types.js.map +1 -1
  187. package/dist/bridges/coefficient-statement.js +1 -5
  188. package/dist/bridges/coefficient-statement.js.map +1 -1
  189. package/dist/bridges/confrontation-coverage.js.map +1 -1
  190. package/dist/bridges/confrontations.d.ts +1 -1
  191. package/dist/bridges/confrontations.d.ts.map +1 -1
  192. package/dist/bridges/confrontations.js +1 -1
  193. package/dist/bridges/confrontations.js.map +1 -1
  194. package/dist/bridges/evaluation-errors.d.ts +15 -2
  195. package/dist/bridges/evaluation-errors.d.ts.map +1 -1
  196. package/dist/bridges/evaluation-errors.js +20 -2
  197. package/dist/bridges/evaluation-errors.js.map +1 -1
  198. package/dist/bridges/evaluator-inputs.js.map +1 -1
  199. package/dist/bridges/evaluators.d.ts +17 -2
  200. package/dist/bridges/evaluators.d.ts.map +1 -1
  201. package/dist/bridges/evaluators.js +49 -16
  202. package/dist/bridges/evaluators.js.map +1 -1
  203. package/dist/bridges/expr-parse.d.ts +27 -4
  204. package/dist/bridges/expr-parse.d.ts.map +1 -1
  205. package/dist/bridges/expr-parse.js +90 -10
  206. package/dist/bridges/expr-parse.js.map +1 -1
  207. package/dist/bridges/holds.d.ts +5 -1
  208. package/dist/bridges/holds.d.ts.map +1 -1
  209. package/dist/bridges/holds.js +18 -3
  210. package/dist/bridges/holds.js.map +1 -1
  211. package/dist/bridges/index.d.ts +15 -14
  212. package/dist/bridges/index.d.ts.map +1 -1
  213. package/dist/bridges/index.js +14 -15
  214. package/dist/bridges/index.js.map +1 -1
  215. package/dist/bridges/input-contract.js.map +1 -1
  216. package/dist/bridges/membership.d.ts +5 -3
  217. package/dist/bridges/membership.d.ts.map +1 -1
  218. package/dist/bridges/membership.js +5 -6
  219. package/dist/bridges/membership.js.map +1 -1
  220. package/dist/bridges/notices.js.map +1 -1
  221. package/dist/bridges/observations/types.js.map +1 -1
  222. package/dist/bridges/rejected.d.ts +11 -17
  223. package/dist/bridges/rejected.d.ts.map +1 -1
  224. package/dist/bridges/rejected.js +13 -68
  225. package/dist/bridges/rejected.js.map +1 -1
  226. package/dist/bridges/relation-eval.d.ts +5 -6
  227. package/dist/bridges/relation-eval.d.ts.map +1 -1
  228. package/dist/bridges/relation-eval.js +9 -38
  229. package/dist/bridges/relation-eval.js.map +1 -1
  230. package/dist/bridges/rhs-registry.js.map +1 -1
  231. package/dist/bridges/sensitivity.d.ts +11 -3
  232. package/dist/bridges/sensitivity.d.ts.map +1 -1
  233. package/dist/bridges/sensitivity.js +24 -10
  234. package/dist/bridges/sensitivity.js.map +1 -1
  235. package/dist/bridges/tensor-index.js.map +1 -1
  236. package/dist/bridges/types.d.ts +1 -7
  237. package/dist/bridges/types.d.ts.map +1 -1
  238. package/dist/bridges/types.js +1 -4
  239. package/dist/bridges/types.js.map +1 -1
  240. package/dist/canonical/canonical-equation.js.map +1 -1
  241. package/dist/canonical/dimensional-fields.js.map +1 -1
  242. package/dist/canonical/entries/_l1-build.js.map +1 -1
  243. package/dist/canonical/entries/atomic.js.map +1 -1
  244. package/dist/canonical/entries/condensed-matter.js +4 -4
  245. package/dist/canonical/entries/condensed-matter.js.map +1 -1
  246. package/dist/canonical/entries/dimensional-classics.js +2 -2
  247. package/dist/canonical/entries/dimensional-classics.js.map +1 -1
  248. package/dist/canonical/entries/electromagnetism.js +2 -2
  249. package/dist/canonical/entries/electromagnetism.js.map +1 -1
  250. package/dist/canonical/entries/fluids-waves.js.map +1 -1
  251. package/dist/canonical/entries/mechanics.js.map +1 -1
  252. package/dist/canonical/entries/nonmonomial.d.ts.map +1 -1
  253. package/dist/canonical/entries/nonmonomial.js +29 -22
  254. package/dist/canonical/entries/nonmonomial.js.map +1 -1
  255. package/dist/canonical/entries/relativity.js.map +1 -1
  256. package/dist/canonical/entries/statistical-mechanics.js +5 -5
  257. package/dist/canonical/entries/statistical-mechanics.js.map +1 -1
  258. package/dist/canonical/entries/thermo-nuclear-cosmo.js.map +1 -1
  259. package/dist/canonical/linkage.d.ts +29 -4
  260. package/dist/canonical/linkage.d.ts.map +1 -1
  261. package/dist/canonical/linkage.js +31 -29
  262. package/dist/canonical/linkage.js.map +1 -1
  263. package/dist/canonical/normal-form.d.ts +0 -8
  264. package/dist/canonical/normal-form.d.ts.map +1 -1
  265. package/dist/canonical/normal-form.js +17 -12
  266. package/dist/canonical/normal-form.js.map +1 -1
  267. package/dist/canonical/registry.js.map +1 -1
  268. package/dist/canonical/residual.js.map +1 -1
  269. package/dist/canonical/seed-l-layer.d.ts +7 -1
  270. package/dist/canonical/seed-l-layer.d.ts.map +1 -1
  271. package/dist/canonical/seed-l-layer.js +7 -1
  272. package/dist/canonical/seed-l-layer.js.map +1 -1
  273. package/dist/canonical/structural.d.ts +21 -0
  274. package/dist/canonical/structural.d.ts.map +1 -1
  275. package/dist/canonical/structural.js +24 -4
  276. package/dist/canonical/structural.js.map +1 -1
  277. package/dist/cases/brownian-sphere.js +4 -4
  278. package/dist/cases/brownian-sphere.js.map +1 -1
  279. package/dist/cases/damped-resonator.js +2 -2
  280. package/dist/cases/damped-resonator.js.map +1 -1
  281. package/dist/cases/index.js.map +1 -1
  282. package/dist/cases/kepler-rv.js.map +1 -1
  283. package/dist/cases/lumped-cooling.js +1 -1
  284. package/dist/cases/lumped-cooling.js.map +1 -1
  285. package/dist/cases/quadrature.js.map +1 -1
  286. package/dist/cases/resistor-noise.js +3 -3
  287. package/dist/cases/resistor-noise.js.map +1 -1
  288. package/dist/cases/skin-depth.js.map +1 -1
  289. package/dist/cases/types.js.map +1 -1
  290. package/dist/cli/args.d.ts +7 -2
  291. package/dist/cli/args.d.ts.map +1 -1
  292. package/dist/cli/args.js +18 -2
  293. package/dist/cli/args.js.map +1 -1
  294. package/dist/cli/bindings.d.ts +13 -0
  295. package/dist/cli/bindings.d.ts.map +1 -0
  296. package/dist/cli/bindings.js +32 -0
  297. package/dist/cli/bindings.js.map +1 -0
  298. package/dist/cli/closed-form-range.js.map +1 -1
  299. package/dist/cli/command.js.map +1 -1
  300. package/dist/cli/commands/_atlas-map.d.ts +3 -3
  301. package/dist/cli/commands/_atlas-map.d.ts.map +1 -1
  302. package/dist/cli/commands/_atlas-map.js +43 -18
  303. package/dist/cli/commands/_atlas-map.js.map +1 -1
  304. package/dist/cli/commands/_atlas-route.js.map +1 -1
  305. package/dist/cli/commands/_discovery-opts.d.ts.map +1 -1
  306. package/dist/cli/commands/_discovery-opts.js +42 -7
  307. package/dist/cli/commands/_discovery-opts.js.map +1 -1
  308. package/dist/cli/commands/atlas.d.ts.map +1 -1
  309. package/dist/cli/commands/atlas.js +1 -3
  310. package/dist/cli/commands/atlas.js.map +1 -1
  311. package/dist/cli/commands/audit.d.ts.map +1 -1
  312. package/dist/cli/commands/audit.js +13 -20
  313. package/dist/cli/commands/audit.js.map +1 -1
  314. package/dist/cli/commands/axes.js.map +1 -1
  315. package/dist/cli/commands/candidates.d.ts.map +1 -1
  316. package/dist/cli/commands/candidates.js +16 -8
  317. package/dist/cli/commands/candidates.js.map +1 -1
  318. package/dist/cli/commands/canonical.js.map +1 -1
  319. package/dist/cli/commands/chain.js +1 -1
  320. package/dist/cli/commands/chain.js.map +1 -1
  321. package/dist/cli/commands/confront.d.ts.map +1 -1
  322. package/dist/cli/commands/confront.js +22 -14
  323. package/dist/cli/commands/confront.js.map +1 -1
  324. package/dist/cli/commands/connectors.js.map +1 -1
  325. package/dist/cli/commands/coverage.js.map +1 -1
  326. package/dist/cli/commands/derive.d.ts.map +1 -1
  327. package/dist/cli/commands/derive.js +42 -17
  328. package/dist/cli/commands/derive.js.map +1 -1
  329. package/dist/cli/commands/discover.d.ts.map +1 -1
  330. package/dist/cli/commands/discover.js +15 -9
  331. package/dist/cli/commands/discover.js.map +1 -1
  332. package/dist/cli/commands/eval.d.ts.map +1 -1
  333. package/dist/cli/commands/eval.js +13 -10
  334. package/dist/cli/commands/eval.js.map +1 -1
  335. package/dist/cli/commands/evaluate.d.ts.map +1 -1
  336. package/dist/cli/commands/evaluate.js +53 -31
  337. package/dist/cli/commands/evaluate.js.map +1 -1
  338. package/dist/cli/commands/explain.d.ts.map +1 -1
  339. package/dist/cli/commands/explain.js +14 -7
  340. package/dist/cli/commands/explain.js.map +1 -1
  341. package/dist/cli/commands/frontier.js.map +1 -1
  342. package/dist/cli/commands/ground.d.ts.map +1 -1
  343. package/dist/cli/commands/ground.js +40 -10
  344. package/dist/cli/commands/ground.js.map +1 -1
  345. package/dist/cli/commands/index.js.map +1 -1
  346. package/dist/cli/commands/map.d.ts.map +1 -1
  347. package/dist/cli/commands/map.js +82 -89
  348. package/dist/cli/commands/map.js.map +1 -1
  349. package/dist/cli/commands/metric.d.ts.map +1 -1
  350. package/dist/cli/commands/metric.js +53 -18
  351. package/dist/cli/commands/metric.js.map +1 -1
  352. package/dist/cli/commands/path.js +4 -4
  353. package/dist/cli/commands/path.js.map +1 -1
  354. package/dist/cli/commands/predict.js.map +1 -1
  355. package/dist/cli/commands/priority.js.map +1 -1
  356. package/dist/cli/commands/probe.d.ts.map +1 -1
  357. package/dist/cli/commands/probe.js +50 -26
  358. package/dist/cli/commands/probe.js.map +1 -1
  359. package/dist/cli/commands/recover.js +1 -1
  360. package/dist/cli/commands/recover.js.map +1 -1
  361. package/dist/cli/commands/regime.d.ts +5 -4
  362. package/dist/cli/commands/regime.d.ts.map +1 -1
  363. package/dist/cli/commands/regime.js +24 -26
  364. package/dist/cli/commands/regime.js.map +1 -1
  365. package/dist/cli/commands/retrieve.d.ts.map +1 -1
  366. package/dist/cli/commands/retrieve.js +22 -14
  367. package/dist/cli/commands/retrieve.js.map +1 -1
  368. package/dist/cli/commands/search.d.ts.map +1 -1
  369. package/dist/cli/commands/search.js +8 -4
  370. package/dist/cli/commands/search.js.map +1 -1
  371. package/dist/cli/commands/symbolic.d.ts.map +1 -1
  372. package/dist/cli/commands/symbolic.js +13 -9
  373. package/dist/cli/commands/symbolic.js.map +1 -1
  374. package/dist/cli/commands/testplan.js +1 -1
  375. package/dist/cli/commands/testplan.js.map +1 -1
  376. package/dist/cli/conventions.js.map +1 -1
  377. package/dist/cli/determination.js.map +1 -1
  378. package/dist/cli/errors.js.map +1 -1
  379. package/dist/cli/euler-guard.js.map +1 -1
  380. package/dist/cli/eval-numbers.js.map +1 -1
  381. package/dist/cli/expr-print.d.ts +29 -2
  382. package/dist/cli/expr-print.d.ts.map +1 -1
  383. package/dist/cli/expr-print.js +46 -2
  384. package/dist/cli/expr-print.js.map +1 -1
  385. package/dist/cli/flag-help.js.map +1 -1
  386. package/dist/cli/graphs.js.map +1 -1
  387. package/dist/cli/library-defaults.d.ts +19 -0
  388. package/dist/cli/library-defaults.d.ts.map +1 -0
  389. package/dist/cli/library-defaults.js +22 -0
  390. package/dist/cli/library-defaults.js.map +1 -0
  391. package/dist/cli/main.js +7 -3
  392. package/dist/cli/main.js.map +1 -1
  393. package/dist/cli/map-evidence.js.map +1 -1
  394. package/dist/cli/output.d.ts +3 -6
  395. package/dist/cli/output.d.ts.map +1 -1
  396. package/dist/cli/output.js.map +1 -1
  397. package/dist/cli/published-url.js.map +1 -1
  398. package/dist/cli/record-reach.d.ts +6 -0
  399. package/dist/cli/record-reach.d.ts.map +1 -1
  400. package/dist/cli/record-reach.js +16 -10
  401. package/dist/cli/record-reach.js.map +1 -1
  402. package/dist/cli/record-tables.js +1 -1
  403. package/dist/cli/record-tables.js.map +1 -1
  404. package/dist/cli/record.d.ts.map +1 -1
  405. package/dist/cli/record.js +31 -12
  406. package/dist/cli/record.js.map +1 -1
  407. package/dist/cli/search-index.d.ts +5 -0
  408. package/dist/cli/search-index.d.ts.map +1 -1
  409. package/dist/cli/search-index.js +12 -1
  410. package/dist/cli/search-index.js.map +1 -1
  411. package/dist/cli/statuses.js.map +1 -1
  412. package/dist/cli/top-level-help.js.map +1 -1
  413. package/dist/cli/version.js.map +1 -1
  414. package/dist/cli-api.d.ts +15 -9
  415. package/dist/cli-api.d.ts.map +1 -1
  416. package/dist/cli-api.js +14 -13
  417. package/dist/cli-api.js.map +1 -1
  418. package/dist/composition/adjudication.js.map +1 -1
  419. package/dist/composition/aliases.js.map +1 -1
  420. package/dist/composition/audit-coverage.d.ts +2 -0
  421. package/dist/composition/audit-coverage.d.ts.map +1 -1
  422. package/dist/composition/audit-coverage.js.map +1 -1
  423. package/dist/composition/axes.d.ts +12 -0
  424. package/dist/composition/axes.d.ts.map +1 -1
  425. package/dist/composition/axes.js +18 -6
  426. package/dist/composition/axes.js.map +1 -1
  427. package/dist/composition/axis-audit.js.map +1 -1
  428. package/dist/composition/bridge-analysis.d.ts +0 -18
  429. package/dist/composition/bridge-analysis.d.ts.map +1 -1
  430. package/dist/composition/bridge-analysis.js +57 -47
  431. package/dist/composition/bridge-analysis.js.map +1 -1
  432. package/dist/composition/bridge-prediction.d.ts +5 -1
  433. package/dist/composition/bridge-prediction.d.ts.map +1 -1
  434. package/dist/composition/bridge-prediction.js +12 -16
  435. package/dist/composition/bridge-prediction.js.map +1 -1
  436. package/dist/composition/buckingham-filter.js.map +1 -1
  437. package/dist/composition/canonical-compare.d.ts.map +1 -1
  438. package/dist/composition/canonical-compare.js +12 -2
  439. package/dist/composition/canonical-compare.js.map +1 -1
  440. package/dist/composition/canonical-graph.d.ts +8 -9
  441. package/dist/composition/canonical-graph.d.ts.map +1 -1
  442. package/dist/composition/canonical-graph.js +25 -67
  443. package/dist/composition/canonical-graph.js.map +1 -1
  444. package/dist/composition/canonical-json.js.map +1 -1
  445. package/dist/composition/canonical-prefactors.js.map +1 -1
  446. package/dist/composition/catalog-graph.d.ts.map +1 -1
  447. package/dist/composition/catalog-graph.js +6 -20
  448. package/dist/composition/catalog-graph.js.map +1 -1
  449. package/dist/composition/chain-candidate.d.ts +2 -0
  450. package/dist/composition/chain-candidate.d.ts.map +1 -1
  451. package/dist/composition/chain-candidate.js +2 -0
  452. package/dist/composition/chain-candidate.js.map +1 -1
  453. package/dist/composition/chain-match.js.map +1 -1
  454. package/dist/composition/chain-regime.js.map +1 -1
  455. package/dist/composition/chain-result.js.map +1 -1
  456. package/dist/composition/compose-surface.js.map +1 -1
  457. package/dist/composition/compose-symbolic.js.map +1 -1
  458. package/dist/composition/compose.d.ts.map +1 -1
  459. package/dist/composition/compose.js +153 -36
  460. package/dist/composition/compose.js.map +1 -1
  461. package/dist/composition/composition-recovery.js.map +1 -1
  462. package/dist/composition/consequence.d.ts.map +1 -1
  463. package/dist/composition/consequence.js +15 -6
  464. package/dist/composition/consequence.js.map +1 -1
  465. package/dist/composition/consistency.js.map +1 -1
  466. package/dist/composition/descriptor.d.ts +1 -1
  467. package/dist/composition/descriptor.d.ts.map +1 -1
  468. package/dist/composition/descriptor.js.map +1 -1
  469. package/dist/composition/dimension-adjacency.js.map +1 -1
  470. package/dist/composition/discovery.d.ts +21 -11
  471. package/dist/composition/discovery.d.ts.map +1 -1
  472. package/dist/composition/discovery.js +81 -21
  473. package/dist/composition/discovery.js.map +1 -1
  474. package/dist/composition/edge.d.ts +19 -8
  475. package/dist/composition/edge.d.ts.map +1 -1
  476. package/dist/composition/edge.js +24 -11
  477. package/dist/composition/edge.js.map +1 -1
  478. package/dist/composition/enumerate.d.ts +2 -2
  479. package/dist/composition/enumerate.d.ts.map +1 -1
  480. package/dist/composition/enumerate.js.map +1 -1
  481. package/dist/composition/evaluate-relation.js.map +1 -1
  482. package/dist/composition/explain.d.ts +14 -9
  483. package/dist/composition/explain.d.ts.map +1 -1
  484. package/dist/composition/explain.js +46 -13
  485. package/dist/composition/explain.js.map +1 -1
  486. package/dist/composition/expr-eval.js.map +1 -1
  487. package/dist/composition/expr-simplify.d.ts.map +1 -1
  488. package/dist/composition/expr-simplify.js +9 -39
  489. package/dist/composition/expr-simplify.js.map +1 -1
  490. package/dist/composition/expr-subst.js.map +1 -1
  491. package/dist/composition/formula-shape.d.ts +9 -0
  492. package/dist/composition/formula-shape.d.ts.map +1 -1
  493. package/dist/composition/formula-shape.js +54 -0
  494. package/dist/composition/formula-shape.js.map +1 -1
  495. package/dist/composition/frontier-account.d.ts +3 -2
  496. package/dist/composition/frontier-account.d.ts.map +1 -1
  497. package/dist/composition/frontier-account.js +7 -3
  498. package/dist/composition/frontier-account.js.map +1 -1
  499. package/dist/composition/graph-viz-svg.js.map +1 -1
  500. package/dist/composition/graph-viz.js.map +1 -1
  501. package/dist/composition/grounding.js.map +1 -1
  502. package/dist/composition/identifiability.js.map +1 -1
  503. package/dist/composition/index.d.ts +6 -4
  504. package/dist/composition/index.d.ts.map +1 -1
  505. package/dist/composition/index.js +4 -3
  506. package/dist/composition/index.js.map +1 -1
  507. package/dist/composition/mathts-quiet.d.ts +28 -0
  508. package/dist/composition/mathts-quiet.d.ts.map +1 -0
  509. package/dist/composition/mathts-quiet.js +56 -0
  510. package/dist/composition/mathts-quiet.js.map +1 -0
  511. package/dist/composition/mathts-scalar-symbols.d.ts.map +1 -1
  512. package/dist/composition/mathts-scalar-symbols.js +18 -34
  513. package/dist/composition/mathts-scalar-symbols.js.map +1 -1
  514. package/dist/composition/not-composable-seeds.d.ts +3 -1
  515. package/dist/composition/not-composable-seeds.d.ts.map +1 -1
  516. package/dist/composition/not-composable-seeds.js +2 -0
  517. package/dist/composition/not-composable-seeds.js.map +1 -1
  518. package/dist/composition/probe/backend-protocol.js.map +1 -1
  519. package/dist/composition/probe/candidate-store.js.map +1 -1
  520. package/dist/composition/probe/corpus.js.map +1 -1
  521. package/dist/composition/probe/dataset.js.map +1 -1
  522. package/dist/composition/probe/experiment-design.js.map +1 -1
  523. package/dist/composition/probe/expression-gaps.js.map +1 -1
  524. package/dist/composition/probe/falsify.d.ts +14 -3
  525. package/dist/composition/probe/falsify.d.ts.map +1 -1
  526. package/dist/composition/probe/falsify.js +14 -27
  527. package/dist/composition/probe/falsify.js.map +1 -1
  528. package/dist/composition/probe/fingerprint.js.map +1 -1
  529. package/dist/composition/probe/fit.d.ts +1 -1
  530. package/dist/composition/probe/fit.d.ts.map +1 -1
  531. package/dist/composition/probe/fit.js +2 -1
  532. package/dist/composition/probe/fit.js.map +1 -1
  533. package/dist/composition/probe/frontier.js.map +1 -1
  534. package/dist/composition/probe/generator.js.map +1 -1
  535. package/dist/composition/probe/index.d.ts +4 -2
  536. package/dist/composition/probe/index.d.ts.map +1 -1
  537. package/dist/composition/probe/index.js +4 -2
  538. package/dist/composition/probe/index.js.map +1 -1
  539. package/dist/composition/probe/limits.js.map +1 -1
  540. package/dist/composition/probe/metadata.js.map +1 -1
  541. package/dist/composition/probe/pipeline.d.ts +5 -0
  542. package/dist/composition/probe/pipeline.d.ts.map +1 -1
  543. package/dist/composition/probe/pipeline.js +13 -6
  544. package/dist/composition/probe/pipeline.js.map +1 -1
  545. package/dist/composition/probe/problem.d.ts +8 -0
  546. package/dist/composition/probe/problem.d.ts.map +1 -1
  547. package/dist/composition/probe/problem.js +78 -12
  548. package/dist/composition/probe/problem.js.map +1 -1
  549. package/dist/composition/probe/report.js.map +1 -1
  550. package/dist/composition/probe/residual.js.map +1 -1
  551. package/dist/composition/probe/run-manifest.js +2 -2
  552. package/dist/composition/probe/run-manifest.js.map +1 -1
  553. package/dist/composition/probe/scoring.d.ts +2 -1
  554. package/dist/composition/probe/scoring.d.ts.map +1 -1
  555. package/dist/composition/probe/scoring.js +21 -7
  556. package/dist/composition/probe/scoring.js.map +1 -1
  557. package/dist/composition/probe/search-budget.js.map +1 -1
  558. package/dist/composition/probe/serialize.js.map +1 -1
  559. package/dist/composition/probe/structure.js.map +1 -1
  560. package/dist/composition/probe/study.d.ts +4 -3
  561. package/dist/composition/probe/study.d.ts.map +1 -1
  562. package/dist/composition/probe/study.js +5 -3
  563. package/dist/composition/probe/study.js.map +1 -1
  564. package/dist/composition/probe/types.d.ts +3 -1
  565. package/dist/composition/probe/types.d.ts.map +1 -1
  566. package/dist/composition/probe/types.js +2 -0
  567. package/dist/composition/probe/types.js.map +1 -1
  568. package/dist/composition/proposed-bridges.d.ts +11 -4
  569. package/dist/composition/proposed-bridges.d.ts.map +1 -1
  570. package/dist/composition/proposed-bridges.js +11 -4
  571. package/dist/composition/proposed-bridges.js.map +1 -1
  572. package/dist/composition/quantities.d.ts +0 -4
  573. package/dist/composition/quantities.d.ts.map +1 -1
  574. package/dist/composition/quantities.js +5 -5
  575. package/dist/composition/quantities.js.map +1 -1
  576. package/dist/composition/quantity.d.ts +18 -2
  577. package/dist/composition/quantity.d.ts.map +1 -1
  578. package/dist/composition/quantity.js +35 -6
  579. package/dist/composition/quantity.js.map +1 -1
  580. package/dist/composition/representative-values.js.map +1 -1
  581. package/dist/composition/retrodiction.d.ts +16 -6
  582. package/dist/composition/retrodiction.d.ts.map +1 -1
  583. package/dist/composition/retrodiction.js +34 -9
  584. package/dist/composition/retrodiction.js.map +1 -1
  585. package/dist/composition/uncertainty.js.map +1 -1
  586. package/dist/composition/user-equation.js.map +1 -1
  587. package/dist/core/axes-registry.d.ts +8 -5
  588. package/dist/core/axes-registry.d.ts.map +1 -1
  589. package/dist/core/axes-registry.js.map +1 -1
  590. package/dist/core/cell.js.map +1 -1
  591. package/dist/core/constants.d.ts +8 -8
  592. package/dist/core/constants.d.ts.map +1 -1
  593. package/dist/core/constants.js +8 -10
  594. package/dist/core/constants.js.map +1 -1
  595. package/dist/core/data-file.js.map +1 -1
  596. package/dist/core/flux-rules.js +1 -1
  597. package/dist/core/flux-rules.js.map +1 -1
  598. package/dist/core/json-schema.d.ts +1 -1
  599. package/dist/core/json-schema.d.ts.map +1 -1
  600. package/dist/core/json-schema.js +31 -7
  601. package/dist/core/json-schema.js.map +1 -1
  602. package/dist/core/labeled-tensor.d.ts +6 -1
  603. package/dist/core/labeled-tensor.d.ts.map +1 -1
  604. package/dist/core/labeled-tensor.js +18 -8
  605. package/dist/core/labeled-tensor.js.map +1 -1
  606. package/dist/core/regime-registry.d.ts +6 -2
  607. package/dist/core/regime-registry.d.ts.map +1 -1
  608. package/dist/core/regime-registry.js.map +1 -1
  609. package/dist/core/regime-rule-install.js.map +1 -1
  610. package/dist/core/regimes-builtins.js.map +1 -1
  611. package/dist/core/tensor.d.ts +7 -4
  612. package/dist/core/tensor.d.ts.map +1 -1
  613. package/dist/core/tensor.js +40 -8
  614. package/dist/core/tensor.js.map +1 -1
  615. package/dist/core/types.js.map +1 -1
  616. package/dist/core/universal-index.js.map +1 -1
  617. package/dist/diff/bridge-ast-gradient.d.ts +4 -5
  618. package/dist/diff/bridge-ast-gradient.d.ts.map +1 -1
  619. package/dist/diff/bridge-ast-gradient.js +10 -6
  620. package/dist/diff/bridge-ast-gradient.js.map +1 -1
  621. package/dist/diff/bridge-gradient.d.ts +24 -80
  622. package/dist/diff/bridge-gradient.d.ts.map +1 -1
  623. package/dist/diff/bridge-gradient.js +21 -98
  624. package/dist/diff/bridge-gradient.js.map +1 -1
  625. package/dist/diff/bridge-specs.d.ts +16 -5
  626. package/dist/diff/bridge-specs.d.ts.map +1 -1
  627. package/dist/diff/bridge-specs.js +16 -4
  628. package/dist/diff/bridge-specs.js.map +1 -1
  629. package/dist/dimensional/algebra.js.map +1 -1
  630. package/dist/dimensional/ast-builders.d.ts +5 -4
  631. package/dist/dimensional/ast-builders.d.ts.map +1 -1
  632. package/dist/dimensional/ast-builders.js +6 -5
  633. package/dist/dimensional/ast-builders.js.map +1 -1
  634. package/dist/dimensional/ast-types.js.map +1 -1
  635. package/dist/dimensional/bridge-check.js.map +1 -1
  636. package/dist/dimensional/buckingham.js.map +1 -1
  637. package/dist/dimensional/connection-validators.d.ts +2 -1
  638. package/dist/dimensional/connection-validators.d.ts.map +1 -1
  639. package/dist/dimensional/connection-validators.js.map +1 -1
  640. package/dist/dimensional/connection.js.map +1 -1
  641. package/dist/dimensional/constant-rows.d.ts.map +1 -1
  642. package/dist/dimensional/constant-rows.js +9 -5
  643. package/dist/dimensional/constant-rows.js.map +1 -1
  644. package/dist/dimensional/constants.d.ts +5 -6
  645. package/dist/dimensional/constants.d.ts.map +1 -1
  646. package/dist/dimensional/constants.js +5 -6
  647. package/dist/dimensional/constants.js.map +1 -1
  648. package/dist/dimensional/curvature-composite.js.map +1 -1
  649. package/dist/dimensional/curvature-invariants.js.map +1 -1
  650. package/dist/dimensional/curvature.js.map +1 -1
  651. package/dist/dimensional/dimension-inference.js.map +1 -1
  652. package/dist/dimensional/dimension-spec.d.ts +13 -7
  653. package/dist/dimensional/dimension-spec.d.ts.map +1 -1
  654. package/dist/dimensional/dimension-spec.js +49 -23
  655. package/dist/dimensional/dimension-spec.js.map +1 -1
  656. package/dist/dimensional/einstein-equation.js.map +1 -1
  657. package/dist/dimensional/errors.d.ts +3 -1
  658. package/dist/dimensional/errors.d.ts.map +1 -1
  659. package/dist/dimensional/errors.js +2 -2
  660. package/dist/dimensional/errors.js.map +1 -1
  661. package/dist/dimensional/exact-scale.js.map +1 -1
  662. package/dist/dimensional/field-equation-helpers.js.map +1 -1
  663. package/dist/dimensional/formula-names.js.map +1 -1
  664. package/dist/dimensional/fresh-label.js.map +1 -1
  665. package/dist/dimensional/friedmann-equation.d.ts +3 -3
  666. package/dist/dimensional/friedmann-equation.js +3 -3
  667. package/dist/dimensional/friedmann-equation.js.map +1 -1
  668. package/dist/dimensional/gauge-field.d.ts +2 -3
  669. package/dist/dimensional/gauge-field.d.ts.map +1 -1
  670. package/dist/dimensional/gauge-field.js +0 -1
  671. package/dist/dimensional/gauge-field.js.map +1 -1
  672. package/dist/dimensional/hyphen-names.d.ts.map +1 -1
  673. package/dist/dimensional/hyphen-names.js +8 -0
  674. package/dist/dimensional/hyphen-names.js.map +1 -1
  675. package/dist/dimensional/killing-validators.js.map +1 -1
  676. package/dist/dimensional/klein-gordon-equation.js.map +1 -1
  677. package/dist/dimensional/metric-validators.d.ts +2 -1
  678. package/dist/dimensional/metric-validators.d.ts.map +1 -1
  679. package/dist/dimensional/metric-validators.js.map +1 -1
  680. package/dist/dimensional/metric.js.map +1 -1
  681. package/dist/dimensional/natural-units.js.map +1 -1
  682. package/dist/dimensional/quantity-registry.d.ts +13 -0
  683. package/dist/dimensional/quantity-registry.d.ts.map +1 -1
  684. package/dist/dimensional/quantity-registry.js +14 -6
  685. package/dist/dimensional/quantity-registry.js.map +1 -1
  686. package/dist/dimensional/rg-flow.js.map +1 -1
  687. package/dist/dimensional/stress-energy-validators.js.map +1 -1
  688. package/dist/dimensional/symbolic-constants.d.ts.map +1 -1
  689. package/dist/dimensional/symbolic-constants.js +7 -2
  690. package/dist/dimensional/symbolic-constants.js.map +1 -1
  691. package/dist/dimensional/tensor-trace.js.map +1 -1
  692. package/dist/dimensional/tensor.js.map +1 -1
  693. package/dist/dimensional/types.js.map +1 -1
  694. package/dist/dimensional/unit-convention.d.ts +0 -2
  695. package/dist/dimensional/unit-convention.d.ts.map +1 -1
  696. package/dist/dimensional/unit-convention.js +2 -2
  697. package/dist/dimensional/unit-convention.js.map +1 -1
  698. package/dist/dimensional/unit-data.d.ts.map +1 -1
  699. package/dist/dimensional/unit-data.js +9 -5
  700. package/dist/dimensional/unit-data.js.map +1 -1
  701. package/dist/dimensional/units.d.ts.map +1 -1
  702. package/dist/dimensional/units.js +38 -20
  703. package/dist/dimensional/units.js.map +1 -1
  704. package/dist/dimensional/validator-registry.js.map +1 -1
  705. package/dist/dimensional/validator.d.ts +0 -16
  706. package/dist/dimensional/validator.d.ts.map +1 -1
  707. package/dist/dimensional/validator.js +65 -29
  708. package/dist/dimensional/validator.js.map +1 -1
  709. package/dist/dimensional/weyl-validators.js.map +1 -1
  710. package/dist/index.d.ts +50 -5
  711. package/dist/index.d.ts.map +1 -1
  712. package/dist/index.js +12 -20
  713. package/dist/index.js.map +1 -1
  714. package/dist/numerical/bianchi-residual.js.map +1 -1
  715. package/dist/numerical/binding-value.d.ts +11 -6
  716. package/dist/numerical/binding-value.d.ts.map +1 -1
  717. package/dist/numerical/binding-value.js +126 -122
  718. package/dist/numerical/binding-value.js.map +1 -1
  719. package/dist/numerical/christoffel-flat.js.map +1 -1
  720. package/dist/numerical/connection-lowering-helpers.js.map +1 -1
  721. package/dist/numerical/covariant-eikonal.d.ts.map +1 -1
  722. package/dist/numerical/covariant-eikonal.js +2 -2
  723. package/dist/numerical/covariant-eikonal.js.map +1 -1
  724. package/dist/numerical/curvature-lowering-helpers.d.ts +20 -0
  725. package/dist/numerical/curvature-lowering-helpers.d.ts.map +1 -1
  726. package/dist/numerical/curvature-lowering-helpers.js +6 -3
  727. package/dist/numerical/curvature-lowering-helpers.js.map +1 -1
  728. package/dist/numerical/derivative-lowering.js.map +1 -1
  729. package/dist/numerical/einstein-equation.js.map +1 -1
  730. package/dist/numerical/engine-registry.js.map +1 -1
  731. package/dist/numerical/errors.d.ts +7 -3
  732. package/dist/numerical/errors.d.ts.map +1 -1
  733. package/dist/numerical/errors.js +5 -5
  734. package/dist/numerical/errors.js.map +1 -1
  735. package/dist/numerical/evaluator-uncertainty.d.ts.map +1 -1
  736. package/dist/numerical/evaluator-uncertainty.js +19 -2
  737. package/dist/numerical/evaluator-uncertainty.js.map +1 -1
  738. package/dist/numerical/formula-contract.d.ts +63 -7
  739. package/dist/numerical/formula-contract.d.ts.map +1 -1
  740. package/dist/numerical/formula-contract.js +61 -42
  741. package/dist/numerical/formula-contract.js.map +1 -1
  742. package/dist/numerical/formula-dimension.d.ts +8 -7
  743. package/dist/numerical/formula-dimension.d.ts.map +1 -1
  744. package/dist/numerical/formula-dimension.js +58 -36
  745. package/dist/numerical/formula-dimension.js.map +1 -1
  746. package/dist/numerical/formula-mathts.d.ts.map +1 -1
  747. package/dist/numerical/formula-mathts.js +5 -2
  748. package/dist/numerical/formula-mathts.js.map +1 -1
  749. package/dist/numerical/formula-registry.d.ts +13 -3
  750. package/dist/numerical/formula-registry.d.ts.map +1 -1
  751. package/dist/numerical/formula-registry.js +7 -2
  752. package/dist/numerical/formula-registry.js.map +1 -1
  753. package/dist/numerical/geodesic-integrator.js.map +1 -1
  754. package/dist/numerical/geometrized.js.map +1 -1
  755. package/dist/numerical/gl4-integrator.d.ts +28 -27
  756. package/dist/numerical/gl4-integrator.d.ts.map +1 -1
  757. package/dist/numerical/gl4-integrator.js +41 -42
  758. package/dist/numerical/gl4-integrator.js.map +1 -1
  759. package/dist/numerical/grid-field.js.map +1 -1
  760. package/dist/numerical/index.js.map +1 -1
  761. package/dist/numerical/input-validation.d.ts +3 -6
  762. package/dist/numerical/input-validation.d.ts.map +1 -1
  763. package/dist/numerical/input-validation.js +4 -8
  764. package/dist/numerical/input-validation.js.map +1 -1
  765. package/dist/numerical/killing.d.ts +8 -5
  766. package/dist/numerical/killing.d.ts.map +1 -1
  767. package/dist/numerical/killing.js.map +1 -1
  768. package/dist/numerical/klein-gordon.js.map +1 -1
  769. package/dist/numerical/kretschmann.js.map +1 -1
  770. package/dist/numerical/lowering-utils.js.map +1 -1
  771. package/dist/numerical/lowering.d.ts.map +1 -1
  772. package/dist/numerical/lowering.js +7 -17
  773. package/dist/numerical/lowering.js.map +1 -1
  774. package/dist/numerical/mathts-engine.d.ts.map +1 -1
  775. package/dist/numerical/mathts-engine.js +11 -6
  776. package/dist/numerical/mathts-engine.js.map +1 -1
  777. package/dist/numerical/metric-inverse.js.map +1 -1
  778. package/dist/numerical/null-ic.js.map +1 -1
  779. package/dist/numerical/null-ray-integrator.js +4 -4
  780. package/dist/numerical/null-ray-integrator.js.map +1 -1
  781. package/dist/numerical/painleve-gullstrand-metric.js.map +1 -1
  782. package/dist/numerical/pderiv.d.ts.map +1 -1
  783. package/dist/numerical/pderiv.js +9 -2
  784. package/dist/numerical/pderiv.js.map +1 -1
  785. package/dist/numerical/perihelion-finder.js.map +1 -1
  786. package/dist/numerical/quadrature.d.ts +5 -2
  787. package/dist/numerical/quadrature.d.ts.map +1 -1
  788. package/dist/numerical/quadrature.js +20 -3
  789. package/dist/numerical/quadrature.js.map +1 -1
  790. package/dist/numerical/spacetime-metrics.d.ts +13 -19
  791. package/dist/numerical/spacetime-metrics.d.ts.map +1 -1
  792. package/dist/numerical/spacetime-metrics.js +126 -248
  793. package/dist/numerical/spacetime-metrics.js.map +1 -1
  794. package/dist/numerical/strides.js.map +1 -1
  795. package/dist/numerical/tensor-engine.d.ts +9 -5
  796. package/dist/numerical/tensor-engine.d.ts.map +1 -1
  797. package/dist/numerical/tensor-engine.js.map +1 -1
  798. package/dist/numerical/types.js.map +1 -1
  799. package/dist/numerical/weyl-lowering.js.map +1 -1
  800. package/dist/relations/category.js.map +1 -1
  801. package/dist/relations/composition-table.d.ts +4 -4
  802. package/dist/relations/composition-table.js +4 -4
  803. package/dist/relations/composition-table.js.map +1 -1
  804. package/dist/relations/conventions.js.map +1 -1
  805. package/dist/relations/domain-regimes.js.map +1 -1
  806. package/dist/relations/regime-registration.js.map +1 -1
  807. package/dist/relations/regime-vocabularies.js.map +1 -1
  808. package/dist/relations/regime.d.ts +18 -8
  809. package/dist/relations/regime.d.ts.map +1 -1
  810. package/dist/relations/regime.js +26 -14
  811. package/dist/relations/regime.js.map +1 -1
  812. package/dist/relations/types.d.ts +18 -5
  813. package/dist/relations/types.d.ts.map +1 -1
  814. package/dist/relations/types.js +5 -3
  815. package/dist/relations/types.js.map +1 -1
  816. package/package.json +10 -14
  817. package/dist/bridges/registry.d.ts +0 -60
  818. package/dist/bridges/registry.d.ts.map +0 -1
  819. package/dist/bridges/registry.js +0 -87
  820. package/dist/bridges/registry.js.map +0 -1
  821. package/dist/cli/poster-source.d.ts +0 -154
  822. package/dist/cli/poster-source.d.ts.map +0 -1
  823. package/dist/cli/poster-source.js +0 -184
  824. package/dist/cli/poster-source.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"norm-transport-witness.js","sourceRoot":"","sources":["../../../src/atlas/oscillators/norm-transport-witness.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"norm-transport-witness.js","sourceRoot":"","sources":["../../../src/atlas/oscillators/norm-transport-witness.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * The measurement behind W1τ, `ab-spring-lc`'s relative-period norm transport\n * (`./norm-transport.ts`).\n *\n * The pendulum is pushed through the bridge's map q(t_LC) = (q0/θ0)·θ(t),\n * t_LC = t·ω_s/ω_LC, and integrated as its OWN equation in circuit time,\n * q'' = −ω_LC² (q0/θ0) sin(θ0 q/q0). Its period is measured by RK4 and compared\n * with the LC circuit's period 2π√(LC). Nothing here multiplies a pendulum\n * period by a factor: the image is solved where the circuit lives.\n *\n * @module atlas/oscillators/norm-transport-witness\n * @internal\n */\n\nimport { rk4Step } from './pendulum-motion.js';\nimport { W1TAU_FIXTURE } from './norm-transport.js';\n\n/** The circuit and release a measurement uses. @internal */\nexport interface TransportCircuit {\n readonly L: number;\n readonly C: number;\n /** Release charge, > 0. */\n readonly q0: number;\n}\n\n/**\n * First downward zero crossing of the release from rest at `q0 > 0`, by cubic\n * Hermite interpolation of the bracketing RK4 step (values and derivatives at\n * both ends), refined by Newton. Released from rest, it is a quarter period.\n *\n * @internal\n */\nexport function quarterPeriod(accel: (q: number) => number, q0: number, h: number, maxSteps: number): number {\n let x = q0;\n let v = 0;\n for (let i = 0; i < maxSteps; i++) {\n const [nx, nv] = rk4Step(x, v, h, accel);\n if (x > 0 && nx <= 0) {\n const [p0, m0, p1, m1] = [x, v * h, nx, nv * h];\n const p = (s: number): number =>\n (2 * s ** 3 - 3 * s ** 2 + 1) * p0 + (s ** 3 - 2 * s ** 2 + s) * m0 + (-2 * s ** 3 + 3 * s ** 2) * p1 + (s ** 3 - s ** 2) * m1;\n const dp = (s: number): number =>\n (6 * s ** 2 - 6 * s) * p0 + (3 * s ** 2 - 4 * s + 1) * m0 + (-6 * s ** 2 + 6 * s) * p1 + (3 * s ** 2 - 2 * s) * m1;\n let s = p0 / (p0 - p1);\n for (let k = 0; k < 8; k++) s -= p(s) / dp(s);\n return (i + s) * h;\n }\n x = nx;\n v = nv;\n }\n return Number.NaN;\n}\n\n/**\n * T_image / T_LC − 1: the relative period error of the pendulum's image against\n * the circuit, with `stepsPerPeriod` RK4 steps per LC period.\n *\n * @returns NaN when `theta0` is not in (0, π) or no crossing is found.\n * @internal\n */\nexport function measureTransportedPeriodError(\n theta0: number,\n stepsPerPeriod: number,\n circuit: TransportCircuit = W1TAU_FIXTURE,\n): number {\n if (!(theta0 > 0 && theta0 < Math.PI) || !(circuit.q0 > 0)) return Number.NaN;\n const omegaLC = 1 / Math.sqrt(circuit.L * circuit.C);\n const tLC = (2 * Math.PI) / omegaLC;\n const accel = (q: number): number => -(omegaLC ** 2) * (circuit.q0 / theta0) * Math.sin((theta0 * q) / circuit.q0);\n const quarter = quarterPeriod(accel, circuit.q0, tLC / stepsPerPeriod, 2 * stepsPerPeriod);\n return (4 * quarter) / tLC - 1;\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"norm-transport.js","sourceRoot":"","sources":["../../../src/atlas/oscillators/norm-transport.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAGH,OAAO,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAElD,gBAAgB;AAChB,MAAM,CAAC,MAAM,wBAAwB,GAAG,8CAA8C,CAAC;AAEvF;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,CAAC,EAAW,CAAC;AAE5F,gBAAgB;AAChB,MAAM,CAAC,MAAM,mCAAmC,GAAkB;IAChE,EAAE,EAAE,8BAA8B;IAClC,SAAS,EAAE,cAAc;IACzB,OAAO,EAAE,UAAU;IACnB,IAAI,EAAE,oBAAoB;IAC1B,EAAE,EAAE,oBAAoB;IACxB,CAAC,EAAE,CAAC;IACJ,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC;IACZ,MAAM,EAAE,uGAAuG;IAC/G,UAAU,EACR,4GAA4G;QAC5G,yEAAyE;IAC3E,OAAO,EAAE;QACP,GAAG,EAAE,oDAAoD;QACzD,OAAO,EAAE,IAAI;QACb,OAAO,EACL,mGAAmG;YACnG,0DAA0D;QAC5D,cAAc,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK;KACjC;IACD,UAAU,EAAE,wGAAwG;IACpH,OAAO,EAAE;QACP,EAAE,EAAE,KAAK;QACT,IAAI,EAAE,SAAS;QACf,IAAI,EAAE,wBAAwB;QAC9B,SAAS,EACP,4GAA4G;YAC5G,yGAAyG;YACzG,sFAAsF;KACzF;IACD,KAAK,EAAE,uBAAuB;CAC/B,CAAC"}
1
+ {"version":3,"file":"norm-transport.js","sourceRoot":"","sources":["../../../src/atlas/oscillators/norm-transport.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAGH,OAAO,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAElD,gBAAgB;AAChB,MAAM,CAAC,MAAM,wBAAwB,GAAG,8CAA8C,CAAC;AAEvF;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,CAAC,EAAW,CAAC;AAE5F,gBAAgB;AAChB,MAAM,CAAC,MAAM,mCAAmC,GAAkB;IAChE,EAAE,EAAE,8BAA8B;IAClC,SAAS,EAAE,cAAc;IACzB,OAAO,EAAE,UAAU;IACnB,IAAI,EAAE,oBAAoB;IAC1B,EAAE,EAAE,oBAAoB;IACxB,CAAC,EAAE,CAAC;IACJ,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC;IACZ,MAAM,EAAE,uGAAuG;IAC/G,UAAU,EACR,4GAA4G;QAC5G,yEAAyE;IAC3E,OAAO,EAAE;QACP,GAAG,EAAE,oDAAoD;QACzD,OAAO,EAAE,IAAI;QACb,OAAO,EACL,mGAAmG;YACnG,0DAA0D;QAC5D,cAAc,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK;KACjC;IACD,UAAU,EAAE,wGAAwG;IACpH,OAAO,EAAE;QACP,EAAE,EAAE,KAAK;QACT,IAAI,EAAE,SAAS;QACf,IAAI,EAAE,wBAAwB;QAC9B,SAAS,EACP,4GAA4G;YAC5G,yGAAyG;YACzG,sFAAsF;KACzF;IACD,KAAK,EAAE,uBAAuB;CAC/B,CAAC","sourcesContent":["/**\n * `ab-spring-lc`'s declared norm transport: the spring → LC map carries a bound\n * in RELATIVE PERIOD ERROR unchanged. Design:\n * `docs/planning/ADR-transported-norm-composition.md`.\n *\n * The bridge's composed map is q(t_LC) = (q0/x0)·x(t) with t_LC = t·ω_s/ω_LC:\n * an amplitude scale and a uniform time scale. A period is a time, so every\n * period on the spring side is multiplied by the same ω_s/ω_LC on the circuit\n * side, and the ratio T_full/T_reduced − 1 is unchanged. K = 1, with no\n * additive term.\n *\n * Declared in ONE direction and ONE norm:\n *\n * - LC → spring is not declared. The same algebra gives K = 1 there too, but no\n * witness checks it and no route in the atlas uses it, and a declaration\n * without its own witness is what the ADR forbids.\n * - The absolute period error (factor ω_s/ω_LC) and the trajectory error\n * (factor q0/x0, metres to coulombs) are not declared: the map is not an\n * isometry of either, and a route in those norms stays refused.\n *\n * @module atlas/oscillators/norm-transport\n * @internal\n */\n\nimport type { NormTransport } from '../types.js';\nimport { RELATIVE_PERIOD_NORM } from './norms.js';\n\n/** @internal */\nexport const SPRING_LC_TRANSPORT_TEST = 'tests/atlas/spring-lc-norm-transport.test.ts';\n\n/**\n * The circuit W1τ integrates in: L = 0.5, C = 0.25 (W1a's circuit), so\n * ω_LC = 2√2 while the spring side's ω_s = 2 — the time map is not the identity.\n * q0 > 0 is the release charge, and θ0 = 0.5 is the edge of ab-pendulum-linear's\n * domain, where its error is largest.\n *\n * @internal\n */\nexport const W1TAU_FIXTURE = { L: 0.5, C: 0.25, q0: 1e-3, theta0: 0.5, omegaS: 2 } as const;\n\n/** @internal */\nexport const SPRING_LC_RELATIVE_PERIOD_TRANSPORT: NormTransport = {\n id: 'nt-spring-lc-relative-period',\n fromModel: 'model-spring',\n toModel: 'model-lc',\n from: RELATIVE_PERIOD_NORM,\n to: RELATIVE_PERIOD_NORM,\n K: 1,\n KAt: () => 1,\n domain: \"every m, k, L, C > 0 and x0, q0 ≠ 0 (the bridge's side conditions); K is the same constant throughout\",\n derivation:\n 'q(t_LC) = (q0/x0)·x(t) with t_LC = t·ω_s/ω_LC scales every period by the same ω_s/ω_LC, so a ratio of two ' +\n 'periods, T_full/T_reduced − 1, is unchanged: K = 1 and nothing is added',\n timeMap: {\n map: 't_LC = t·ω_s/ω_LC, one constant factor for every t',\n uniform: true,\n horizon:\n 'a horizon that reads time only through t/T0 holds unchanged with t read on the circuit clock and ' +\n 'T0 = 2π√(LC): a uniform time scale leaves t/T0 invariant',\n restateHorizon: (holds) => holds,\n },\n uniformity: \"preserved: K is one constant over the whole domain, so the incoming bound's uniformity holds unchanged\",\n witness: {\n id: 'W1τ',\n kind: 'numeric',\n test: SPRING_LC_TRANSPORT_TEST,\n tolerance:\n \"RK4 relative period error of the pendulum's image q'' = −ω_LC²(q0/θ0) sin(θ0 q/q0) against the LC period, \" +\n 'in circuit time (L = 0.5, C = 0.25, ω_LC = 2√2 ≠ ω_s = 2), at 640 steps per LC period within 1e-9 of K ' +\n 'times the closed-form elliptic error at θ0 = 0.5; 160 steps is the coarse resolution',\n },\n basis: 'numerically-supported',\n};\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"norms.js","sourceRoot":"","sources":["../../../src/atlas/oscillators/norms.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,mEAAmE;AACnE,MAAM,CAAC,MAAM,oBAAoB,GAAG,qEAAqE,CAAC"}
1
+ {"version":3,"file":"norms.js","sourceRoot":"","sources":["../../../src/atlas/oscillators/norms.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,mEAAmE;AACnE,MAAM,CAAC,MAAM,oBAAoB,GAAG,qEAAqE,CAAC","sourcesContent":["/**\n * Norm names the oscillator records share, so a bound and the transport that\n * carries it name the same norm by the same string. `boundPath` compares norms\n * verbatim, and a norm spelled twice is a norm that can drift.\n *\n * @module atlas/oscillators/norms\n * @internal\n */\n\n/** The norm `ab-pendulum-linear` states its bound in. @internal */\nexport const RELATIVE_PERIOD_NORM = 'relative period error, normalized by the value of the reduced model';\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"pendulum-motion.js","sourceRoot":"","sources":["../../../src/atlas/oscillators/pendulum-motion.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"pendulum-motion.js","sourceRoot":"","sources":["../../../src/atlas/oscillators/pendulum-motion.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * The pendulum and its linear oscillator, integrated and read off, for the\n * witnesses of `ab-pendulum-linear`'s declared translations. Time is in units\n * of T0 (ω0 = 2π); both motions are released from rest at θ0.\n *\n * Also the closed forms those translations are built from: θ0 recovered from\n * the bound's ε, and the nome q of the pendulum's elliptic modulus.\n *\n * @module atlas/oscillators/pendulum-motion\n * @internal\n */\n\nimport { solveODESystem } from '@danielsimonjr/mathts-functions';\nimport { agm, pendulumPeriodErrorAt } from './bridges-limits.js';\n\n/** ω0² at T0 = 1. @internal */\nexport const W2 = (2 * Math.PI) ** 2;\n/** @internal */\nexport const pendulumAccel = (x: number): number => -W2 * Math.sin(x);\n/** @internal */\nexport const linearAccel = (x: number): number => -W2 * x;\n\n/**\n * One fixed step of x″ = accel(x). MathTS `solveODESystem` with `dt` is the\n * classical RK4 step.\n *\n * @internal\n */\nexport function rk4Step(x: number, v: number, h: number, accel: (x: number) => number): [number, number] {\n const sol = solveODESystem((_t, y) => [y[1]!, accel(y[0]!)], [x, v], [0, h], { dt: h });\n const end = sol.y[sol.y.length - 1] ?? [x, v];\n return [end[0]!, end[1]!];\n}\n\n/**\n * The root in (0, h] of x(τ), the position one partial RK4 step of length τ\n * from (x, v), by the secant method from the bracket (0, x) and (h, nx).\n *\n * The crossing is then located to the integrator's own truncation error,\n * rather than to the O(h³) error of a straight line between the two steps.\n * That truncation error is nearly the same for the pendulum and the linear\n * oscillator at small θ0, so it cancels in their phase difference; the\n * interpolation error does not.\n */\nfunction refineCrossing(x: number, v: number, nx: number, h: number, accel: (x: number) => number): number {\n let a = 0;\n let fa = x;\n let b = h;\n let fb = nx;\n for (let k = 0; k < 50 && fb !== 0 && fb !== fa; k++) {\n const c = b - (fb * (b - a)) / (fb - fa);\n if (!(c >= -h && c <= 2 * h) || c === b) break;\n a = b;\n fa = fb;\n b = c;\n fb = rk4Step(x, v, c, accel)[0];\n }\n return b;\n}\n\n/** Zero-crossing times of a release from rest at `theta0`, over `periods` of T0 = 1. @internal */\nexport function crossingTimes(accel: (x: number) => number, theta0: number, stepsPerPeriod: number, periods: number): number[] {\n const h = 1 / stepsPerPeriod;\n const out: number[] = [];\n let x = theta0;\n let v = 0;\n for (let i = 0; i < stepsPerPeriod * periods; i++) {\n const [nx, nv] = rk4Step(x, v, h, accel);\n if (nx === 0 || x > 0 !== nx > 0) out.push(i * h + refineCrossing(x, v, nx, h, accel));\n x = nx;\n v = nv;\n }\n return out;\n}\n\n/** The phase at `t`, interpolated through the anchors (0, 0) and (c_k, π/2 + kπ). @internal */\nexport function phaseAt(crossings: readonly number[], t: number): number {\n let prevT = 0;\n let prevPhase = 0;\n for (let k = 0; k < crossings.length; k++) {\n const c = crossings[k]!;\n const phase = Math.PI / 2 + k * Math.PI;\n if (t <= c) return prevPhase + ((phase - prevPhase) * (t - prevT)) / (c - prevT);\n prevT = c;\n prevPhase = phase;\n }\n return Number.NaN;\n}\n\n/**\n * θ0 in [0, π) whose exact relative period error is `eps`, by bisection on the\n * strictly increasing `pendulumPeriodErrorAt`.\n *\n * @returns NaN for a negative or non-finite `eps`.\n * @internal\n */\nexport function theta0OfPeriodError(eps: number): number {\n if (!Number.isFinite(eps) || eps < 0) return Number.NaN;\n if (eps === 0) return 0;\n let lo = 0;\n let hi = Math.PI;\n for (let i = 0; i < 200 && hi - lo > 0; i++) {\n const mid = (lo + hi) / 2;\n if (mid === lo || mid === hi) break;\n if (pendulumPeriodErrorAt({ theta0: mid }) < eps) lo = mid;\n else hi = mid;\n }\n return (lo + hi) / 2;\n}\n\n/**\n * The nome q = exp(−π K′/K) of the modulus k = sin(θ0/2), with\n * K′/K = AGM(1, cos(θ0/2)) / AGM(1, sin(θ0/2)).\n * @internal\n */\nexport function pendulumNome(theta0: number): number {\n const k = Math.sin(Math.abs(theta0) / 2);\n if (k === 0) return 0;\n return Math.exp((-Math.PI * agm(1, Math.cos(theta0 / 2))) / agm(1, k));\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"phase-carriage.js","sourceRoot":"","sources":["../../../src/atlas/oscillators/phase-carriage.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"phase-carriage.js","sourceRoot":"","sources":["../../../src/atlas/oscillators/phase-carriage.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAIH,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAExD,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC;AAC3D,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AACjC,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AACxC,MAAM,cAAc,GAAG,EAAE,CAAC;AAE1B,gGAAgG;AAChG,SAAS,SAAS,CAAC,KAAa,EAAE,EAAU,EAAE,CAAS,EAAE,IAAY;IACnE,MAAM,GAAG,GAAa,EAAE,CAAC;IACzB,IAAI,CAAC,GAAG,EAAE,CAAC;IACX,IAAI,CAAC,GAAG,CAAC,CAAC;IACV,MAAM,EAAE,GAAG,KAAK,GAAG,KAAK,CAAC;IACzB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC;QAClC,MAAM,CAAC,EAAE,EAAE,EAAE,CAAC,GAAG,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;QAClD,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC;YAAE,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;QACvE,CAAC,GAAG,EAAE,CAAC;QACP,CAAC,GAAG,EAAE,CAAC;IACT,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,wBAAwB,CAAC,oBAA4B,EAAE,SAAiB;IACtF,MAAM,OAAO,GAAG,cAAc,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,CAAC;IAC3D,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,GAAG,OAAO,GAAG,oBAAoB,CAAC;IACzD,MAAM,MAAM,GAAG,SAAS,CAAC,OAAO,EAAE,EAAE,EAAE,CAAC,EAAE,OAAO,CAAC,CAAC;IAClD,MAAM,EAAE,GAAG,SAAS,CAAC,QAAQ,EAAE,EAAE,EAAE,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC;IAC5E,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACvC,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,EAAE,SAAS,GAAG,MAAM,CAAC,CAAC,CAAE,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IACvG,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,KAAK,GAAuB;IAChC,EAAE,EAAE,KAAK;IACT,QAAQ,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,wBAAwB,CAAC,KAAK,EAAE,OAAO,GAAG,QAAQ,CAAC;IACxE,MAAM,EAAE,CAAC;IACT,gBAAgB,EAAE,GAAG;IACrB,cAAc,EAAE,GAAG;IACnB,SAAS,EAAE,IAAI;CAChB,CAAC;AAEF,gBAAgB;AAChB,MAAM,CAAC,MAAM,wBAAwB,GAAuB;IAC1D,QAAQ,EAAE,cAAc;IACxB,UAAU,EAAE,OAAO;IACnB,GAAG,EAAE,0GAA0G;IAC/G,UAAU,EACR,uHAAuH;QACvH,4GAA4G;QAC5G,4CAA4C;IAC9C,QAAQ,EAAE;QACR,4HAA4H;QAC5H,2DAA2D;KAC5D;IACD,OAAO,EAAE,gHAAgH;IACzH,SAAS,EAAE;QACT;YACE,EAAE,EAAE,KAAK;YACT,IAAI,EAAE,SAAS;YACf,IAAI,EAAE,8CAA8C;YACpD,SAAS,EAAE,+FAA+F,cAAc,+EAA+E;SACxM;KACF;IACD,MAAM,EAAE,CAAC,KAAK,CAAC;CAChB,CAAC","sourcesContent":["/**\n * `ab-spring-lc`'s declaration that its map carries the PHASE unchanged, so\n * `ab-pendulum-linear`'s phase translation holds on the path\n * pendulum → spring → LC.\n *\n * The bridge's composed map is q(t_LC) = (q0/x0)·x(t) with t_LC = t·ω_s/ω_LC.\n * The charge is a fixed nonzero multiple of the displacement at the mapped\n * time, so the two share every zero crossing and turning point, and the angle\n * variable (0 at release from rest, 2π per period, uniform in time) of the\n * circuit at t_LC equals the spring's at t. A phase error against the spring\n * at t is therefore the same phase error against the circuit at t_LC: nothing\n * is added and nothing truncated.\n *\n * This is a claim about the phase only. It says nothing about the position\n * error — x and q are different quantities in different units, and a bound in\n * rad on the angle does not become one on the charge — so `ab-spring-lc`\n * declares no carriage for `position`.\n *\n * The witness W1φ integrates the two oscillators of W1a (m = 2, k = 8,\n * x0 = 0.37 and L = 0.5, C = 0.25, q0 = −1.9: ω_s = 2, ω_LC = 2√2, and a\n * NEGATIVE ratio q0/x0) by RK4 at the same step in physical time, and\n * compares the circuit's phase at the mapped time with the spring's at every\n * spring zero crossing. The angle variable of each motion is measured from its\n * own release, so the sign of q0/x0 does not enter.\n *\n * @module atlas/oscillators/phase-carriage\n * @internal\n */\n\nimport type { ObservableCarriage } from '../translation.js';\nimport type { NumericWitnessSpec } from '../witness-numeric.js';\nimport { phaseAt, rk4Step } from './pendulum-motion.js';\n\nconst [M, K, L, C, X0, Q0] = [2, 8, 0.5, 0.25, 0.37, -1.9];\nconst OMEGA_S = Math.sqrt(K / M);\nconst OMEGA_LC = Math.sqrt(1 / (L * C));\nconst SPRING_PERIODS = 20;\n\n/** Zero crossings of u″ = −ω²u from rest at `u0`, stepping `h` in the oscillator's own time. */\nfunction crossings(omega: number, u0: number, h: number, tEnd: number): number[] {\n const out: number[] = [];\n let x = u0;\n let v = 0;\n const w2 = omega * omega;\n for (let i = 0; i * h < tEnd; i++) {\n const [nx, nv] = rk4Step(x, v, h, (s) => -w2 * s);\n if (nx === 0 || x > 0 !== nx > 0) out.push(i * h + (h * x) / (x - nx));\n x = nx;\n v = nv;\n }\n return out;\n}\n\n/**\n * max over the spring's zero crossings c_k of |φ_LC(timeScale · c_k) − (π/2 + kπ)|,\n * both integrated at `stepsPerSpringPeriod` steps of the spring's period.\n * @internal\n */\nexport function measureCarriedPhaseError(stepsPerSpringPeriod: number, timeScale: number): number {\n const tSpring = SPRING_PERIODS * ((2 * Math.PI) / OMEGA_S);\n const h = (2 * Math.PI) / OMEGA_S / stepsPerSpringPeriod;\n const spring = crossings(OMEGA_S, X0, h, tSpring);\n const lc = crossings(OMEGA_LC, Q0, h, tSpring * Math.max(1, timeScale) + 1);\n let worst = 0;\n for (let k = 0; k < spring.length; k++) {\n worst = Math.max(worst, Math.abs(phaseAt(lc, timeScale * spring[k]!) - (Math.PI / 2 + k * Math.PI)));\n }\n return worst;\n}\n\nconst W1PHI: NumericWitnessSpec = {\n id: 'W1φ',\n evaluate: (steps) => measureCarriedPhaseError(steps, OMEGA_S / OMEGA_LC),\n target: 0,\n coarseResolution: 100,\n fineResolution: 400,\n tolerance: 1e-6,\n};\n\n/** @internal */\nexport const SPRING_LC_PHASE_CARRIAGE: ObservableCarriage = {\n bridgeId: 'ab-spring-lc',\n observable: 'phase',\n map: 'the circuit\\'s angle variable at t_LC = t·ω_s/ω_LC is the spring\\'s at t, because q(t_LC) = (q0/x0)·x(t)',\n derivation:\n 'a fixed nonzero multiple of the displacement at the mapped time shares its zero crossings and turning points, so the ' +\n 'angle variable is the same function of the mapped time; a phase error against the spring at t is the same ' +\n 'error against the circuit at t_LC, exactly',\n premises: [\n 'the circuit is released from rest: q(0) = q0, i(0) = 0 (either sign of q0/x0: each phase is measured from its own release)',\n 'lossless and unforced (the bridge\\'s own side conditions)',\n ],\n timeMap: 't is read on the spring\\'s clock (the unit of T0); the circuit is read at t·ω_s/ω_LC, the same t when LC = m/k',\n witnesses: [\n {\n id: 'W1φ',\n kind: 'numeric',\n test: 'tests/atlas/spring-lc-phase-carriage.test.ts',\n tolerance: `RK4 circuit phase at the mapped time within 1e-6 rad of the spring's at every crossing over ${SPRING_PERIODS} spring periods (W1a's m = 2, k = 8, x0 = 0.37; L = 0.5, C = 0.25, q0 = −1.9)`,\n },\n ],\n checks: [W1PHI],\n};\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"phase-translation.js","sourceRoot":"","sources":["../../../src/atlas/oscillators/phase-translation.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"phase-translation.js","sourceRoot":"","sources":["../../../src/atlas/oscillators/phase-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 the accumulated PHASE error.\n *\n * Both motions start from rest at θ0 at t = 0. The phase is the angle\n * variable: 0 at release and advancing by 2π per period, uniformly in time,\n * so the pendulum's is 2π t/T and the linear oscillator's 2π t/T0. With the\n * bound's `ε = T/T0 − 1` (normalised by the reduced model's period),\n *\n * Δφ(t) = 2π t/T0 − 2π t/T = 2π (t/T0) · ε/(1 + ε),\n *\n * which reaches a tolerance Δ at `t* = Δ · T0 · (1 + ε)/(2π ε)`. Nothing is\n * truncated: the map is exact in ε, and ε itself is the bound's closed form.\n *\n * It is NOT a bound on the pointwise position error |θ(t) − θ_lin(t)|: the\n * pendulum's waveform carries a third harmonic of amplitude ≈ θ0³/192, which\n * is not a phase, and the position error at a given phase error depends on\n * where in the cycle the observation falls.\n *\n * The witness W7p integrates BOTH equations of motion and reads each phase off\n * its zero crossings — crossing k is at phase π/2 + kπ by the symmetry of a\n * release from rest, and the angle variable is linear in time between them —\n * so it measures the drift without using ε or the elliptic integral. It runs\n * at the fixture θ0 = 0.2 as the regression anchor, and again at the caller's\n * point, bounded to 512 T0 of integration (`phasePointCheck`).\n *\n * @module atlas/oscillators/phase-translation\n * @internal\n */\n\nimport type { ObservableTranslation } from '../translation.js';\nimport { pendulumPeriodErrorAt } from './bridges-limits.js';\nimport { crossingTimes, linearAccel, pendulumAccel, phaseAt, theta0OfPeriodError } from './pendulum-motion.js';\n\nconst TWO_PI = 2 * Math.PI;\n\n/**\n * The time, in units of T0, at which the MEASURED phase lead of the linear\n * oscillator over the pendulum first reaches `tolerance` rad, both integrated\n * by RK4 at `stepsPerPeriod` steps of T0.\n *\n * @returns NaN if the drift does not reach `tolerance` within 2^16 periods.\n * @internal\n */\nexport function measurePhaseHorizon(theta0: number, tolerance: number, stepsPerPeriod: number): number {\n for (let periods = 16; periods <= 2 ** 16; periods *= 2) {\n const t = measurePhaseHorizonWithin(theta0, tolerance, stepsPerPeriod, periods);\n if (!Number.isNaN(t)) return t;\n }\n return Number.NaN;\n}\n\n/** As `measurePhaseHorizon`, over exactly `periods` of T0; NaN if the drift does not reach `tolerance` in them. @internal */\nexport function measurePhaseHorizonWithin(theta0: number, tolerance: number, stepsPerPeriod: number, periods: number): number {\n const pend = crossingTimes(pendulumAccel, theta0, stepsPerPeriod, periods);\n const lin = crossingTimes(linearAccel, theta0, stepsPerPeriod, periods);\n let prevT = 0;\n let prevDrift = 0;\n for (let k = 0; k < pend.length; k++) {\n const c = pend[k]!;\n const drift = phaseAt(lin, c) - (Math.PI / 2 + k * Math.PI);\n if (!Number.isFinite(drift)) break;\n if (drift >= tolerance) return prevT + ((tolerance - prevDrift) * (c - prevT)) / (drift - prevDrift);\n prevT = c;\n prevDrift = drift;\n }\n return Number.NaN;\n}\n\n/** `t* = Δ T0 (1+ε)/(2π ε)`; `Infinity` at ε = 0, where no phase accumulates. */\nfunction phaseHorizon(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 return eps === 0 ? Infinity : (tolerance * T0 * (1 + eps)) / (TWO_PI * eps);\n}\n\nconst W7P_THETA0 = 0.2;\nconst W7P_TOLERANCE = 1;\n\n/** The point witness integrates at most this many periods of T0, so its cost is bounded. */\nexport const PHASE_POINT_MAX_PERIODS = 512;\n/**\n * The point witness measures the time to this much drift, or to the drift\n * reached at the cap if less: the map is linear in t, so its slope is what is\n * checked, whatever tolerance the caller asked about.\n */\nconst PHASE_POINT_DRIFT = 1;\n/**\n * Below this measured drift the rounding noise of the two motions' crossing\n * times comes within a factor of ten of the witness tolerance. With the\n * crossings located by `crossingTimes`' secant refinement, the fine error was\n * measured at 800 steps per T0 as 1.5e-8 relative at 1.1e-5 rad of drift,\n * 7.4e-9 at 7.2e-5 rad, 2.5e-9 at 2.0e-4 rad and 2.4e-10 to 9.2e-10 from\n * 2e-2 rad up. With the straight-line crossings it replaced, the same error\n * was 9.5e-6 relative at 2e-4 rad and 1.2e-7 at 2e-2 rad.\n */\nconst PHASE_POINT_MIN_DRIFT = 1e-4;\n/**\n * The (1+ε) control differs from the target by ε/(1+ε) relative, so it can be\n * refuted only where ε exceeds this tolerance (θ0 above about 9e-4).\n */\nconst PHASE_POINT_RELATIVE_TOLERANCE = 5e-8;\n\n/**\n * W7p at the caller's θ0 (recovered from ε) instead of the fixture: the time\n * the measured drift reaches min(1 rad, the drift at the cap), within\n * PHASE_POINT_RELATIVE_TOLERANCE of the closed form. Its control is the same measurement against\n * the horizon without the (1+ε) factor, which differs from the target by\n * ε/(1+ε) relative — so the control can fail only where that exceeds the\n * witness tolerance, and the caller is told when it does not.\n */\nfunction phasePointCheck(eps: number): ReturnType<ObservableTranslation['pointCheck']> {\n if (!Number.isFinite(eps) || eps <= 0) return { unavailable: `no phase drift accumulates at ε = ${eps}` };\n const theta0 = theta0OfPeriodError(eps);\n const measured = Math.min(PHASE_POINT_DRIFT, (TWO_PI * PHASE_POINT_MAX_PERIODS * eps) / (1 + eps));\n if (measured < PHASE_POINT_MIN_DRIFT) {\n return {\n unavailable:\n `the drift within ${PHASE_POINT_MAX_PERIODS} T0 at θ0 = ${Number(theta0.toPrecision(8))} is ${measured} rad, below the ` +\n `${PHASE_POINT_MIN_DRIFT} rad this witness resolves; not run`,\n };\n }\n const target = phaseHorizon(eps, measured, 1);\n const periods = Math.ceil(target) + 2;\n const evaluate = (stepsPerPeriod: number): number => measurePhaseHorizonWithin(theta0, measured, stepsPerPeriod, periods);\n const spec = { evaluate, coarseResolution: 200, fineResolution: 800, tolerance: PHASE_POINT_RELATIVE_TOLERANCE * target };\n const capped = measured < PHASE_POINT_DRIFT ? ` (the drift reached in ${PHASE_POINT_MAX_PERIODS} T0)` : '';\n return {\n claim:\n `RK4-measured time to ${measured} rad${capped} of phase drift at θ0 = ${Number(theta0.toPrecision(8))} (recovered from ε) ` +\n `within ${PHASE_POINT_RELATIVE_TOLERANCE} relative of t* = ${target} T0; 200 and 800 steps per T0, ${periods} T0 integrated`,\n check: { id: 'W7p@point', ...spec, target },\n control: { id: 'W7p@point-control', ...spec, target: measured / (TWO_PI * eps) },\n controlClaim: 'the same measurement against the horizon without the (1+ε) factor, Δ T0/(2π ε)',\n };\n}\n\n/** @internal */\nexport const PENDULUM_PHASE_TRANSLATION: ObservableTranslation = {\n bridgeId: 'ab-pendulum-linear',\n observable: 'phase',\n unit: 'rad',\n fromNorm: 'relative period error, normalized by the value of the reduced model',\n errorKind: 'exact',\n definition:\n 'the angle variable of each motion (0 at release from rest at θ0, 2π per period); the error is the ' +\n \"linear oscillator's lead over the pendulum, Δφ(t) = 2πt/T0 − 2πt/T\",\n derivation:\n 'with ε = T/T0 − 1, Δφ(t) = 2π (t/T0) ε/(1+ε), exact in ε; it reaches Δ at t* = Δ T0 (1+ε)/(2π ε). ' +\n 'ε/(1+ε) 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 ],\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) || !Number.isFinite(t)) return Number.NaN;\n return (TWO_PI * (t / T0) * eps) / (1 + eps);\n },\n horizonFor: (eps, tolerance, { T0 }) => phaseHorizon(eps, tolerance, T0),\n boundary: 'inclusive: adequate iff t ≤ t*, i.e. Δφ(t) ≤ the tolerance',\n notCovered: [\n 'the pointwise position error |θ(t) − θ_lin(t)| (the waveform carries a third harmonic ≈ θ0³/192 that is not a phase)',\n 'the amplitude',\n ],\n witnesses: [\n {\n id: 'W7p',\n kind: 'numeric',\n test: 'tests/atlas/pendulum-phase-translation.test.ts',\n tolerance: `RK4-measured time to ${W7P_TOLERANCE} rad of phase drift at θ0 = ${W7P_THETA0} within 1e-4 T0 of t*`,\n },\n ],\n checks: [\n {\n id: 'W7p',\n evaluate: (stepsPerPeriod) => measurePhaseHorizon(W7P_THETA0, W7P_TOLERANCE, stepsPerPeriod),\n target: phaseHorizon(pendulumPeriodErrorAt({ theta0: W7P_THETA0 }), W7P_TOLERANCE, 1),\n coarseResolution: 50,\n fineResolution: 200,\n tolerance: 1e-4,\n },\n ],\n pointCheck: phasePointCheck,\n};\n"]}
@@ -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. Witness W7xs checks the\n * series against RK4 over one period at each θ0 of a grid across the domain;\n * that is a check at those points, not a derivation.\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 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 { linearAccel, pendulumAccel, pendulumNome, rk4Step, theta0OfPeriodError } from './pendulum-motion.js';\n\nconst TWO_PI = 2 * Math.PI;\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. */\nexport const 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.\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\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). */\nexport function 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/**\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 odd = 2 * n + 1;\n const a = (8 * q ** (n + 0.5)) / (odd * (variant === 'plus' ? 1 + q ** odd : 1 - q ** odd));\n s += (n % 2 === 0 ? a : -a) * Math.cos(odd * phi);\n }\n return s;\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 RK4 at θ0 ∈ {${FOURIER_SERIES_THETA0S.join(', ')}} (W7xs), not between those points`,\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"]}
@@ -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;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","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\n/** Look up a rejection by id, throwing on an unknown one. @internal */\nexport function getAtlasRejection(id: string): AtlasRejection {\n const found = ATLAS_REJECTIONS.find((r) => r.id === id);\n if (found === undefined) throw new Error(`unknown atlas rejection id: ${id}`);\n return found;\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":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6DG;AAEH,OAAO,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAEtE,OAAO,EAAE,eAAe,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAG7E,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAG/C;;;;;;;;GAQG;AACH,MAAM,QAAQ,GAA0C,MAAM,CAAC,WAAW,CACxE,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CACzC,CAAC;AAgBF,sEAAsE;AACtE,SAAS,aAAa,CAAC,OAA+B;IACpD,MAAM,KAAK,GAAmB,EAAE,CAAC;IACjC,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC7B,2EAA2E;QAC3E,oEAAoE;QACpE,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC;YAAE,SAAS;QAC3C,MAAM,IAAI,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAE,CAAC;QACjC,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,CAAC,UAAU,EAAE,MAAM,EAAE,CAAC,CAAC;QACpD,IAAI,MAAM,CAAC,QAAQ,KAAK,mBAAmB,EAAE,CAAC;YAC5C,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,UAAU,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;QAC5D,CAAC;IACH,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,QAAQ,CACtB,MAAc,EACd,IAAY,EACZ,EAAU;IAEV,MAAM,GAAG,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC;IAC7B,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;QACtB,MAAM,IAAI,UAAU,CAAC,6BAA6B,MAAM,GAAG,CAAC,CAAC;IAC/D,CAAC;IACD,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACpD,KAAK,MAAM,QAAQ,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC,EAAE,CAAC;QAClC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC1B,MAAM,IAAI,UAAU,CAAC,cAAc,QAAQ,+BAA+B,MAAM,GAAG,CAAC,CAAC;QACvF,CAAC;IACH,CAAC;IACD,OAAO,aAAa,CAAC,GAAG,CAAC,OAAO,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC;AAC9C,CAAC;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,UAAU,aAAa,CAAC,IAAY,EAAE,EAAU;IACpD,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IACjF,KAAK,MAAM,QAAQ,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC,EAAE,CAAC;QAClC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC1B,MAAM,IAAI,UAAU,CAAC,mBAAmB,QAAQ,sCAAsC,CAAC,CAAC;QAC1F,CAAC;IACH,CAAC;IACD,OAAO,aAAa,CAClB,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,EACxC,IAAI,EACJ,EAAE,CACH,CAAC;AACJ,CAAC;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,UAAU,oBAAoB,CAClC,IAAY,EACZ,EAAU,EACV,KAAa,EACb,MAAM,GAAG,OAAO;IAEhB,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IACjF,KAAK,MAAM,QAAQ,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC,EAAE,CAAC;QAClC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC1B,MAAM,IAAI,UAAU,CAAC,0BAA0B,QAAQ,sCAAsC,CAAC,CAAC;QACjG,CAAC;IACH,CAAC;IACD,OAAO,eAAe,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;AAC5F,CAAC;AAUD;;;;;GAKG;AACH,MAAM,UAAU,eAAe,CAC7B,OAA+B,EAC/B,IAAY,EACZ,EAAU,EACV,KAAa,EACb,MAAM,GAAG,OAAO;IAEhB,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;QAC1C,MAAM,IAAI,UAAU,CAAC,0DAA0D,KAAK,EAAE,CAAC,CAAC;IAC1F,CAAC;IACD,IAAI,IAAI,KAAK,EAAE;QAAE,OAAO,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,eAAe,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;IAElG,MAAM,QAAQ,GAAG,IAAI,GAAG,EAA0B,CAAC;IACnD,KAAK,MAAM,IAAI,IAAI,aAAa,CAAC,OAAO,CAAC,EAAE,CAAC;QAC1C,MAAM,MAAM,GAAG,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACvC,IAAI,MAAM,KAAK,SAAS;YAAE,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;;YACrD,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACzB,CAAC;IAOD,MAAM,MAAM,GAA+B,EAAE,CAAC;IAC9C,IAAI,KAAK,GAAc,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,CAAC;IAC7E,IAAI,QAAQ,GAAG,CAAC,CAAC;IACjB,KAAK,IAAI,MAAM,GAAG,CAAC,EAAE,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,MAAM,EAAE,EAAE,CAAC;QAChD,MAAM,IAAI,GAAc,EAAE,CAAC;QAC3B,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC;YACtB,IAAI,EAAE,QAAQ,GAAG,MAAM,EAAE,CAAC;gBACxB,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,eAAe,EAAE,MAAM,GAAG,CAAC,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC;YAChH,CAAC;YACD,KAAK,MAAM,IAAI,IAAI,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC;gBAC5C,IAAI,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;oBAAE,SAAS;gBACrC,MAAM,KAAK,GAAG,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;gBAC1C,IAAI,IAAI,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC;oBACnB,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;oBACnB,IAAI,MAAM,CAAC,MAAM,GAAG,KAAK,EAAE,CAAC;wBAC1B,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,eAAe,EAAE,MAAM,GAAG,CAAC,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC;oBAC/G,CAAC;gBACH,CAAC;qBAAM,CAAC;oBACN,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,OAAO,EAAE,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;gBACxF,CAAC;YACH,CAAC;QACH,CAAC;QACD,KAAK,GAAG,IAAI,CAAC;IACf,CAAC;IACD,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,eAAe,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;AAC7E,CAAC;AAED,gFAAgF;AAChF,SAAS,aAAa,CACpB,OAA+B,EAC/B,IAAY,EACZ,EAAU;IAEV,IAAI,IAAI,KAAK,EAAE;QAAE,OAAO,EAAE,CAAC;IAE3B,MAAM,QAAQ,GAAG,IAAI,GAAG,EAA0B,CAAC;IACnD,KAAK,MAAM,IAAI,IAAI,aAAa,CAAC,OAAO,CAAC,EAAE,CAAC;QAC1C,MAAM,MAAM,GAAG,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACvC,IAAI,MAAM,KAAK,SAAS;YAAE,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;;YACrD,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACzB,CAAC;IAED,MAAM,MAAM,GAAG,IAAI,GAAG,EAAwB,CAAC;IAC/C,MAAM,IAAI,GAAG,IAAI,GAAG,CAAS,CAAC,IAAI,CAAC,CAAC,CAAC;IACrC,MAAM,KAAK,GAAa,CAAC,IAAI,CAAC,CAAC;IAE/B,OAAO,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACxB,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,EAAG,CAAC;QAC5B,KAAK,MAAM,IAAI,IAAI,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC;YAC5C,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;gBAAE,SAAS;YAChC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAClB,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;YAC1B,IAAI,IAAI,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC;gBACnB,MAAM,IAAI,GAAkB,EAAE,CAAC;gBAC/B,KAAK,IAAI,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,IAAI,GAAI,CAAC;oBAChC,MAAM,IAAI,GAAG,MAAM,CAAC,GAAG,CAAC,EAAE,CAAE,CAAC;oBAC7B,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;oBAC1B,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC;gBACjB,CAAC;gBACD,OAAO,IAAI,CAAC;YACd,CAAC;YACD,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACtB,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AA4DD,SAAS,aAAa,CAAC,EAAiB;IACtC,IAAI,EAAE,KAAK,IAAI;QAAE,OAAO,SAAS,CAAC;IAClC,OAAO,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,EAAE,MAAM,CAAC;AAC/E,CAAC;AAED,SAAS,cAAc,CAAC,CAAqB,EAAE,CAAqB;IAClE,OAAO,CAAC,KAAK,SAAS,IAAI,CAAC,KAAK,SAAS,IAAI,CAAC,KAAK,CAAC,CAAC;AACvD,CAAC;AAED;;;;GAIG;AACH,SAAS,mBAAmB,CAC1B,MAAmB,EACnB,IAAY,EACZ,SAAwB,EACxB,OAAsB;IAEtB,IAAI,SAAS,KAAK,IAAI,IAAI,OAAO,KAAK,IAAI;QAAE,OAAO,SAAS,CAAC;IAC7D,OAAO,CAAC,MAAM,CAAC,cAAc,IAAI,EAAE,CAAC,CAAC,IAAI,CACvC,CAAC,EAAE,EAAE,EAAE,CACL,EAAE,CAAC,IAAI,KAAK,IAAI;QAChB,EAAE,CAAC,SAAS,KAAK,SAAS;QAC1B,EAAE,CAAC,OAAO,KAAK,OAAO;QACtB,EAAE,CAAC,OAAO,CAAC,OAAO;QAClB,cAAc,CAAC,aAAa,CAAC,EAAE,CAAC,SAAS,CAAC,EAAE,aAAa,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC;QACtE,EAAE,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE;QACpB,EAAE,CAAC,OAAO,CAAC,IAAI,KAAK,EAAE;QACtB,EAAE,CAAC,OAAO,CAAC,IAAI,KAAK,QAAQ,CAC/B,CAAC;AACJ,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsCG;AACH,MAAM,UAAU,SAAS,CAAC,OAA+B;IACvD,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzB,MAAM,IAAI,UAAU,CAAC,uEAAuE,CAAC,CAAC;IAChG,CAAC;IAED,6EAA6E;IAC7E,IAAI,QAAQ,GAAsB,OAAO,CAAC,CAAC,CAAE,CAAC,QAAQ,CAAC;IACvD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACxC,MAAM,IAAI,GAAG,OAAO,CAAC,CAAC,CAAE,CAAC;QACzB,uEAAuE;QACvE,0EAA0E;QAC1E,qDAAqD;QACrD,QAAQ,GAAG,eAAe,CAAC,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;QACpD,IAAI,QAAQ,KAAK,kBAAkB,EAAE,CAAC;YACpC,OAAO;gBACL,IAAI,EAAE,UAAU;gBAChB,MAAM,EAAE,kBAAkB;gBAC1B,MAAM,EACJ,IAAI,OAAO,CAAC,CAAC,GAAG,CAAC,CAAE,CAAC,EAAE,MAAM,OAAO,CAAC,CAAC,GAAG,CAAC,CAAE,CAAC,QAAQ,WAAW,IAAI,CAAC,EAAE,IAAI;oBAC1E,IAAI,IAAI,CAAC,QAAQ,yDAAyD;aAC7E,CAAC;QACJ,CAAC;IACH,CAAC;IAED,6EAA6E;IAC7E,0EAA0E;IAC1E,yEAAyE;IACzE,2EAA2E;IAC3E,2CAA2C;IAC3C,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC7B,IAAI,MAAM,CAAC,KAAK,KAAK,SAAS;YAAE,SAAS;QACzC,MAAM,UAAU,GAAG,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC;QAC3C,IAAI,UAAU,KAAK,IAAI,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACnD,MAAM,GAAG,GAAG,UAAU,KAAK,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC;YACnD,OAAO;gBACL,IAAI,EAAE,UAAU;gBAChB,MAAM,EAAE,uBAAuB;gBAC/B,MAAM,EACJ,IAAI,MAAM,CAAC,EAAE,oBAAoB,GAAG,2DAA2D;aAClG,CAAC;QACJ,CAAC;IACH,CAAC;IAED,6EAA6E;IAC7E,6EAA6E;IAC7E,6EAA6E;IAC7E,sEAAsE;IACtE,wEAAwE;IACxE,8DAA8D;IAC9D,EAAE;IACF,+EAA+E;IAC/E,8EAA8E;IAC9E,oDAAoD;IACpD,gFAAgF;IAChF,2CAA2C;IAC3C,MAAM,OAAO,GAAG,WAAW,CAAC,OAAO,CAAC,CAAC;IACrC,MAAM,KAAK,GAAyB,EAAE,CAAC;IACvC,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,MAAM,UAAU,GAAuB,EAAE,CAAC;IAC1C,MAAM,QAAQ,GAAa,EAAE,CAAC;IAC9B,IAAI,OAAO,GAAkB,IAAI,CAAC;IAClC,IAAI,QAAQ,GAAkB,IAAI,CAAC;IACnC,IAAI,UAA8B,CAAC;IACnC,IAAI,SAAS,GAAkB,IAAI,CAAC;IACpC,IAAI,UAAU,GAOH,IAAI,CAAC;IAChB,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,OAAO,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC;QACpD,MAAM,MAAM,GAAG,OAAO,CAAC,KAAK,CAAE,CAAC;QAC/B,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC;QACrC,MAAM,IAAI,GACR,KAAK,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,KAAK,mBAAmB,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC;QAChH,MAAM,QAAQ,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC;QACtC,MAAM,OAAO,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC;QACpC,IACE,OAAO,KAAK,IAAI;YAChB,UAAU,KAAK,SAAS;YACxB,QAAQ,KAAK,SAAS;YACtB,UAAU,KAAK,QAAQ;YACvB,UAAU,KAAK,IAAI,EACnB,CAAC;YACD,MAAM,OAAO,GAAG,mBAAmB,CAAC,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC;YACvE,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;gBAC1B,UAAU,GAAG;oBACX,QAAQ,EAAE,MAAM,CAAC,EAAE;oBACnB,UAAU,EAAE,UAAU;oBACtB,QAAQ,EAAE,QAAQ;oBAClB,IAAI,EAAE,OAAO;oBACb,SAAS,EAAE,SAAS,IAAI,GAAG;oBAC3B,OAAO,EAAE,KAAK,IAAI,GAAG;iBACtB,CAAC;YACJ,CAAC;iBAAM,CAAC;gBACN,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,OAAO,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;gBACvC,UAAU,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,CAAC,EAAE,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,CAAC;gBACpE,OAAO,GAAG,OAAO,CAAC,EAAE,CAAC;gBACrB,UAAU,GAAG,aAAa,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;gBAC5C,SAAS,GAAG,OAAO,CAAC,OAAO,CAAC;YAC9B,CAAC;QACH,CAAC;QACD,IAAI,MAAM,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;YAC/B,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC;YAC7D,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAC/B,MAAM,YAAY,GAAG,cAAc,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,OAAO,IAAI,QAAQ,CAAC,CAAC;YAC1F,IAAI,UAAU,KAAK,IAAI,IAAI,OAAO,KAAK,IAAI,IAAI,MAAM,CAAC,KAAK,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;gBAC7E,IAAI,UAAU,KAAK,SAAS,IAAI,YAAY,KAAK,SAAS,IAAI,UAAU,KAAK,YAAY,EAAE,CAAC;oBAC1F,UAAU,GAAG;wBACX,QAAQ,EAAE,MAAM,CAAC,EAAE;wBACnB,UAAU,EAAE,UAAU;wBACtB,QAAQ,EAAE,YAAY;wBACtB,IAAI,EAAE,OAAO;wBACb,SAAS,EAAE,SAAS,IAAI,GAAG;wBAC3B,OAAO,EAAE,IAAI,IAAI,GAAG;qBACrB,CAAC;gBACJ,CAAC;qBAAM,IAAI,QAAQ,KAAK,IAAI,EAAE,CAAC;oBAC7B,QAAQ;wBACN,IAAI,MAAM,CAAC,EAAE,aAAa,MAAM,CAAC,KAAK,CAAC,IAAI,uCAAuC,OAAO,GAAG;4BAC5F,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,UAAU,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;gBACvG,CAAC;YACH,CAAC;YACD,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC;YAC5B,IAAI,cAAc,CAAC,QAAQ,EAAE,OAAO,CAAC,EAAE,CAAC;gBACtC,MAAM,IAAI,GAAG,mBAAmB,CAAC,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;gBAC/D,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;oBACvB,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;oBACpC,UAAU,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;oBACjE,OAAO,GAAG,IAAI,CAAC,EAAE,CAAC;oBAClB,UAAU,GAAG,OAAO,CAAC;oBACrB,SAAS,GAAG,IAAI,CAAC;gBACnB,CAAC;qBAAM,CAAC;oBACN,UAAU,GAAG,QAAQ,CAAC;oBACtB,SAAS,GAAG,KAAK,CAAC;gBACpB,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,UAAU,GAAG,YAAY,CAAC;gBAC1B,SAAS,GAAG,IAAI,IAAI,KAAK,CAAC;YAC5B,CAAC;QACH,CAAC;aAAM,IAAI,MAAM,CAAC,QAAQ,KAAK,mBAAmB,EAAE,CAAC;YACnD,MAAM,QAAQ,GAAG,MAAM,CAAC,cAAc,IAAI,EAAE,CAAC;YAC7C,MAAM,OAAO,GAAkB,OAAO,CAAC;YACvC,MAAM,OAAO,GAAG,CAAC,EAAiB,EAAW,EAAE,CAC7C,EAAE,CAAC,IAAI,KAAK,OAAO,IAAI,EAAE,CAAC,SAAS,KAAK,KAAK,IAAI,EAAE,CAAC,OAAO,KAAK,IAAI,CAAC;YACvE,MAAM,SAAS,GACb,OAAO,KAAK,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;YAC1F,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;gBAC5B,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,SAAS,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;gBACzC,UAAU,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,CAAC,EAAE,EAAE,SAAS,EAAE,CAAC,CAAC;gBAC3D,OAAO,GAAG,SAAS,CAAC,EAAE,CAAC;gBACvB,SAAS,GAAG,IAAI,CAAC;gBACjB,MAAM,aAAa,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC;gBAC1C,IAAI,aAAa,KAAK,SAAS;oBAAE,UAAU,GAAG,aAAa,CAAC;gBAC5D,SAAS;YACX,CAAC;YACD,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;YAC3B,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;gBACrB,QAAQ,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC,EAAE,8EAA8E,CAAC,CAAC;gBAC3G,SAAS;YACX,CAAC;YACD,MAAM,UAAU,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;YAC7E,MAAM,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC;YACrD,QAAQ,CAAC,IAAI,CACX,IAAI,MAAM,CAAC,EAAE,sCAAsC,OAAO,SAAS,KAAK,IAAI,GAAG,MAAM,IAAI,IAAI,GAAG,EAAE;gBAChG,CAAC,UAAU,KAAK,SAAS;oBACvB,CAAC,CAAC,oBAAoB,UAAU,CAAC,EAAE,kDAAkD;oBACrF,CAAC,CAAC,EAAE,CAAC;gBACP,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC;oBAChB,CAAC,CAAC,sBAAsB,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,IAAI,EAAE,CAAC,IAAI,QAAQ,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,SAAS,MAAM,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;oBACxH,CAAC,CAAC,EAAE,CAAC,CACV,CAAC;QACJ,CAAC;aAAM,CAAC;YACN,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACnB,CAAC;IACH,CAAC;IAED,6EAA6E;IAC7E,wEAAwE;IACxE,2EAA2E;IAC3E,2EAA2E;IAC3E,4BAA4B;IAC5B,MAAM,QAAQ,GAAG,gBAAgB,CAAC,KAAK,CAAC,CAAC;IAEzC,6EAA6E;IAC7E,+EAA+E;IAC/E,8EAA8E;IAC9E,uDAAuD;IACvD,IAAI,UAAU,KAAK,IAAI,EAAE,CAAC;QACxB,OAAO;YACL,IAAI,EAAE,UAAU;YAChB,MAAM,EAAE,uBAAuB;YAC/B,MAAM,EACJ,IAAI,UAAU,CAAC,QAAQ,+BAA+B,UAAU,CAAC,IAAI,kBAAkB,UAAU,CAAC,UAAU,IAAI;gBAChH,IAAI,UAAU,CAAC,SAAS,kBAAkB,UAAU,CAAC,QAAQ,MAAM,UAAU,CAAC,OAAO,iCAAiC;SACzH,CAAC;IACJ,CAAC;IAED,6EAA6E;IAC7E,MAAM,QAAQ,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;IACtC,IAAI,QAAQ,KAAK,IAAI,EAAE,CAAC;QACtB,OAAO;YACL,IAAI,EAAE,UAAU;YAChB,MAAM,EAAE,eAAe;YACvB,MAAM,EACJ,QAAQ,CAAC,MAAM,GAAG,CAAC;gBACjB,CAAC,CAAC,mBAAmB,QAAQ,CAAC,MAAM,qBAAqB,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK;oBACpG,0CAA0C;gBAC5C,CAAC,CAAC,GAAG,QAAQ,4CAA4C;SAC9D,CAAC;IACJ,CAAC;IACD,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC7C,OAAO;YACL,IAAI,EAAE,UAAU;YAChB,MAAM,EAAE,iBAAiB;YACzB,MAAM,EACJ,GAAG,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,iFAAiF;gBACvG,gDAAgD,MAAM,CAAC,CAAC,CAAC,GAAG;SAC/D,CAAC;IACJ,CAAC;IACD,OAAO;QACL,IAAI,EAAE,OAAO;QACb,KAAK,EAAE,QAAQ,CAAC,KAAK;QACrB,QAAQ,EAAE,QAAQ,CAAC,QAAQ;QAC3B,QAAQ;QACR,IAAI,EAAE,OAAO;QACb,GAAG,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KACjD,CAAC;AACJ,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,gBAAgB,CAAC,OAA+B;IAC9D,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IACpC,OAAO,WAAW,CAAC,OAAO,CAAC,CAAC;AAC9B,CAAC;AAED,SAAS,WAAW,CAAC,OAA+B;IAClD,MAAM,KAAK,GAAG,OAAO,CAAC,CAAC,CAAE,CAAC;IAC1B,IAAI,EAAE,GAAkB,KAAK,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAE,CAAC,CAAC,CAAC,IAAI,CAAC;IAChF,IAAI,KAAK,CAAC,QAAQ,KAAK,mBAAmB,IAAI,EAAE,KAAK,IAAI,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAChF,MAAM,IAAI,GAAG,OAAO,CAAC,CAAC,CAAE,CAAC;QACzB,MAAM,IAAI,GAAG,CAAC,GAAG,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;QACjD,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;YAAE,EAAE,GAAG,KAAK,CAAC,UAAU,CAAC;IACnF,CAAC;IACD,MAAM,OAAO,GAAsB,EAAE,CAAC;IACtC,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;QACxB,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACjB,EAAE,GAAG,CAAC,CAAC,QAAQ,KAAK,mBAAmB,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC;IAClG,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,yBAAyB,CACvC,OAA+B,EAC/B,UAAuC,EACvC,KAAa;IAEb,IAAI,KAAK,IAAI,CAAC,IAAI,KAAK,IAAI,OAAO,CAAC,MAAM;QAAE,OAAO,KAAK,CAAC;IACxD,MAAM,OAAO,GAAG,WAAW,CAAC,OAAO,CAAC,CAAC;IACrC,MAAM,MAAM,GAAG,CAAC,CAAS,EAAiB,EAAE;QAC1C,MAAM,KAAK,GAAG,OAAO,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC;QACjC,MAAM,MAAM,GAAG,OAAO,CAAC,CAAC,CAAE,CAAC;QAC3B,IAAI,KAAK,KAAK,IAAI;YAAE,OAAO,IAAI,CAAC;QAChC,OAAO,MAAM,CAAC,QAAQ,KAAK,mBAAmB,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC;IAC/F,CAAC,CAAC;IACF,MAAM,QAAQ,GAAG,aAAa,CAAC,MAAM,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC;IAClD,MAAM,IAAI,GAAG,aAAa,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,aAAa,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,CAAC;IACnF,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE,IAAI,CAAC;QAAE,OAAO,KAAK,CAAC;IAClD,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,KAAK,IAAI,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;AACnF,CAAC;AAED,6GAA6G;AAC7G,SAAS,QAAQ,CAAC,MAAmB,EAAE,KAAa;IAClD,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IAC9C,IAAI,KAAK,KAAK,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC;QAAE,OAAO,MAAM,CAAC,UAAU,CAAC;IAC3D,IAAI,KAAK,KAAK,MAAM,CAAC,UAAU;QAAE,OAAO,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAE,CAAC;IAC5D,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,cAAc,CAC5B,OAA+B,EAC/B,UAAuC,EACvC,KAAa;IAMb,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC;IACpC,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,IAAI,CAAC;IACrC,MAAM,KAAK,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,GAAG,KAAK,CAAC,CAAC;IACxD,MAAM,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,YAAY,CAAC,CAAC;IAChG,OAAO,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;AAC9D,CAAC;AAED;;;;GAIG;AACH,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC","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"]}