universal-physics-tensor 8.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 (916) hide show
  1. package/README.md +26 -21
  2. package/data/atlas/atlas.json +75 -64
  3. package/data/atlas/atlas.jsonld +1 -1
  4. package/data/atlas/diffusion.json +23 -22
  5. package/data/atlas/oscillators.json +21 -16
  6. package/data/atlas/waves.json +33 -28
  7. package/data/bridge-catalog.json +1356 -1791
  8. package/data/bridge-catalog.schema.json +789 -46
  9. package/data/quantities.json +280 -234
  10. package/data/quantities.schema.json +52 -0
  11. package/data/schemas/atlas-record.v0.json +184 -46
  12. package/data/units.json +1178 -0
  13. package/data/units.schema.json +124 -0
  14. package/dist/atlas/applicability.d.ts.map +1 -1
  15. package/dist/atlas/applicability.js +14 -3
  16. package/dist/atlas/applicability.js.map +1 -1
  17. package/dist/atlas/association.d.ts +1 -1
  18. package/dist/atlas/association.js.map +1 -1
  19. package/dist/atlas/benchmark/backend-shapes.d.ts.map +1 -1
  20. package/dist/atlas/benchmark/backend-shapes.js +5 -1
  21. package/dist/atlas/benchmark/backend-shapes.js.map +1 -1
  22. package/dist/atlas/benchmark/baselines.d.ts.map +1 -1
  23. package/dist/atlas/benchmark/baselines.js +8 -0
  24. package/dist/atlas/benchmark/baselines.js.map +1 -1
  25. package/dist/atlas/benchmark/hybrid-retrieval.d.ts +3 -2
  26. package/dist/atlas/benchmark/hybrid-retrieval.d.ts.map +1 -1
  27. package/dist/atlas/benchmark/hybrid-retrieval.js +16 -12
  28. package/dist/atlas/benchmark/hybrid-retrieval.js.map +1 -1
  29. package/dist/atlas/benchmark/leakage.js.map +1 -1
  30. package/dist/atlas/benchmark/loader.js.map +1 -1
  31. package/dist/atlas/benchmark/run-atlas.d.ts.map +1 -1
  32. package/dist/atlas/benchmark/run-atlas.js +14 -2
  33. package/dist/atlas/benchmark/run-atlas.js.map +1 -1
  34. package/dist/atlas/benchmark/stats.d.ts +1 -1
  35. package/dist/atlas/benchmark/stats.d.ts.map +1 -1
  36. package/dist/atlas/benchmark/stats.js +1 -1
  37. package/dist/atlas/benchmark/stats.js.map +1 -1
  38. package/dist/atlas/benchmark/study.js.map +1 -1
  39. package/dist/atlas/benchmark/types.js.map +1 -1
  40. package/dist/atlas/bridge-record.d.ts +4 -4
  41. package/dist/atlas/bridge-record.d.ts.map +1 -1
  42. package/dist/atlas/bridge-record.js +6 -6
  43. package/dist/atlas/bridge-record.js.map +1 -1
  44. package/dist/atlas/catalog-formal-ref.js.map +1 -1
  45. package/dist/atlas/chain-pipeline.d.ts +0 -11
  46. package/dist/atlas/chain-pipeline.d.ts.map +1 -1
  47. package/dist/atlas/chain-pipeline.js +5 -16
  48. package/dist/atlas/chain-pipeline.js.map +1 -1
  49. package/dist/atlas/composition-table.js.map +1 -1
  50. package/dist/atlas/conventions.js.map +1 -1
  51. package/dist/atlas/coverage.d.ts +2 -2
  52. package/dist/atlas/coverage.js.map +1 -1
  53. package/dist/atlas/derivation.js.map +1 -1
  54. package/dist/atlas/derive-evidence.d.ts +6 -4
  55. package/dist/atlas/derive-evidence.d.ts.map +1 -1
  56. package/dist/atlas/derive-evidence.js +7 -2
  57. package/dist/atlas/derive-evidence.js.map +1 -1
  58. package/dist/atlas/diffusion/bridges-closure.d.ts.map +1 -1
  59. package/dist/atlas/diffusion/bridges-closure.js +0 -5
  60. package/dist/atlas/diffusion/bridges-closure.js.map +1 -1
  61. package/dist/atlas/diffusion/bridges.d.ts.map +1 -1
  62. package/dist/atlas/diffusion/bridges.js +0 -3
  63. package/dist/atlas/diffusion/bridges.js.map +1 -1
  64. package/dist/atlas/diffusion/dimensions.js.map +1 -1
  65. package/dist/atlas/diffusion/index.d.ts +1 -1
  66. package/dist/atlas/diffusion/index.d.ts.map +1 -1
  67. package/dist/atlas/diffusion/index.js.map +1 -1
  68. package/dist/atlas/diffusion/models.js.map +1 -1
  69. package/dist/atlas/diffusion/numerics.js.map +1 -1
  70. package/dist/atlas/error-algebra.d.ts +6 -0
  71. package/dist/atlas/error-algebra.d.ts.map +1 -1
  72. package/dist/atlas/error-algebra.js +26 -0
  73. package/dist/atlas/error-algebra.js.map +1 -1
  74. package/dist/atlas/export.d.ts +18 -2
  75. package/dist/atlas/export.d.ts.map +1 -1
  76. package/dist/atlas/export.js +9 -3
  77. package/dist/atlas/export.js.map +1 -1
  78. package/dist/atlas/families.d.ts +19 -2
  79. package/dist/atlas/families.d.ts.map +1 -1
  80. package/dist/atlas/families.js +26 -3
  81. package/dist/atlas/families.js.map +1 -1
  82. package/dist/atlas/family.d.ts +27 -0
  83. package/dist/atlas/family.d.ts.map +1 -0
  84. package/dist/atlas/family.js +12 -0
  85. package/dist/atlas/family.js.map +1 -0
  86. package/dist/atlas/index.d.ts +3 -2
  87. package/dist/atlas/index.d.ts.map +1 -1
  88. package/dist/atlas/index.js +2 -1
  89. package/dist/atlas/index.js.map +1 -1
  90. package/dist/atlas/link-prediction.d.ts +1 -1
  91. package/dist/atlas/link-prediction.d.ts.map +1 -1
  92. package/dist/atlas/link-prediction.js.map +1 -1
  93. package/dist/atlas/model.js.map +1 -1
  94. package/dist/atlas/oscillators/bridges-coarse.d.ts.map +1 -1
  95. package/dist/atlas/oscillators/bridges-coarse.js +0 -1
  96. package/dist/atlas/oscillators/bridges-coarse.js.map +1 -1
  97. package/dist/atlas/oscillators/bridges-exact.d.ts.map +1 -1
  98. package/dist/atlas/oscillators/bridges-exact.js +0 -3
  99. package/dist/atlas/oscillators/bridges-exact.js.map +1 -1
  100. package/dist/atlas/oscillators/bridges-limits.d.ts.map +1 -1
  101. package/dist/atlas/oscillators/bridges-limits.js +0 -2
  102. package/dist/atlas/oscillators/bridges-limits.js.map +1 -1
  103. package/dist/atlas/oscillators/dimensions.js.map +1 -1
  104. package/dist/atlas/oscillators/index.d.ts +1 -16
  105. package/dist/atlas/oscillators/index.d.ts.map +1 -1
  106. package/dist/atlas/oscillators/index.js.map +1 -1
  107. package/dist/atlas/oscillators/limit-witnesses.js.map +1 -1
  108. package/dist/atlas/oscillators/models.js.map +1 -1
  109. package/dist/atlas/oscillators/norm-transport-witness.js.map +1 -1
  110. package/dist/atlas/oscillators/norm-transport.js.map +1 -1
  111. package/dist/atlas/oscillators/norms.js.map +1 -1
  112. package/dist/atlas/oscillators/pendulum-motion.js.map +1 -1
  113. package/dist/atlas/oscillators/phase-carriage.js.map +1 -1
  114. package/dist/atlas/oscillators/phase-translation.js.map +1 -1
  115. package/dist/atlas/oscillators/position-translation.js.map +1 -1
  116. package/dist/atlas/oscillators/rejections.js.map +1 -1
  117. package/dist/atlas/path-bound.js.map +1 -1
  118. package/dist/atlas/physjs-entries.generated.d.ts +1601 -220
  119. package/dist/atlas/physjs-entries.generated.d.ts.map +1 -1
  120. package/dist/atlas/physjs-entries.generated.js +1854 -345
  121. package/dist/atlas/physjs-entries.generated.js.map +1 -1
  122. package/dist/atlas/physjs-ref.d.ts +151 -117
  123. package/dist/atlas/physjs-ref.d.ts.map +1 -1
  124. package/dist/atlas/physjs-ref.js +244 -211
  125. package/dist/atlas/physjs-ref.js.map +1 -1
  126. package/dist/atlas/physjs-reviewed.d.ts +31 -0
  127. package/dist/atlas/physjs-reviewed.d.ts.map +1 -0
  128. package/dist/atlas/physjs-reviewed.js +194 -0
  129. package/dist/atlas/physjs-reviewed.js.map +1 -0
  130. package/dist/atlas/poster/associations.js.map +1 -1
  131. package/dist/atlas/poster/derivations.js.map +1 -1
  132. package/dist/atlas/poster/statements.js.map +1 -1
  133. package/dist/atlas/proof-target.d.ts +16 -8
  134. package/dist/atlas/proof-target.d.ts.map +1 -1
  135. package/dist/atlas/proof-target.js +34 -31
  136. package/dist/atlas/proof-target.js.map +1 -1
  137. package/dist/atlas/public.d.ts +2 -1
  138. package/dist/atlas/public.d.ts.map +1 -1
  139. package/dist/atlas/public.js +2 -1
  140. package/dist/atlas/public.js.map +1 -1
  141. package/dist/atlas/regime.js.map +1 -1
  142. package/dist/atlas/serialize.d.ts +18 -12
  143. package/dist/atlas/serialize.d.ts.map +1 -1
  144. package/dist/atlas/serialize.js +28 -18
  145. package/dist/atlas/serialize.js.map +1 -1
  146. package/dist/atlas/statement.js.map +1 -1
  147. package/dist/atlas/translation-registry.js.map +1 -1
  148. package/dist/atlas/translation.js.map +1 -1
  149. package/dist/atlas/types.d.ts +9 -2
  150. package/dist/atlas/types.d.ts.map +1 -1
  151. package/dist/atlas/types.js +1 -1
  152. package/dist/atlas/types.js.map +1 -1
  153. package/dist/atlas/waves/bridges-closure.d.ts.map +1 -1
  154. package/dist/atlas/waves/bridges-closure.js +0 -3
  155. package/dist/atlas/waves/bridges-closure.js.map +1 -1
  156. package/dist/atlas/waves/bridges.d.ts.map +1 -1
  157. package/dist/atlas/waves/bridges.js +0 -4
  158. package/dist/atlas/waves/bridges.js.map +1 -1
  159. package/dist/atlas/waves/index.d.ts +1 -1
  160. package/dist/atlas/waves/index.d.ts.map +1 -1
  161. package/dist/atlas/waves/index.js.map +1 -1
  162. package/dist/atlas/waves/models.js.map +1 -1
  163. package/dist/atlas/waves/numerics.js.map +1 -1
  164. package/dist/atlas/witness-artifact.js.map +1 -1
  165. package/dist/atlas/witness-dominance.d.ts +4 -3
  166. package/dist/atlas/witness-dominance.d.ts.map +1 -1
  167. package/dist/atlas/witness-dominance.js +15 -5
  168. package/dist/atlas/witness-dominance.js.map +1 -1
  169. package/dist/atlas/witness-numeric.d.ts +8 -4
  170. package/dist/atlas/witness-numeric.d.ts.map +1 -1
  171. package/dist/atlas/witness-numeric.js +27 -2
  172. package/dist/atlas/witness-numeric.js.map +1 -1
  173. package/dist/atlas/witness-result.d.ts +7 -1
  174. package/dist/atlas/witness-result.d.ts.map +1 -1
  175. package/dist/atlas/witness-result.js.map +1 -1
  176. package/dist/atlas/witness-specs.js.map +1 -1
  177. package/dist/atlas/witness-symbolic.js.map +1 -1
  178. package/dist/atlas/witnesses/quantum-support.js.map +1 -1
  179. package/dist/bridges/caller-table.d.ts +1 -1
  180. package/dist/bridges/caller-table.d.ts.map +1 -1
  181. package/dist/bridges/caller-table.js.map +1 -1
  182. package/dist/bridges/carrier-sign.d.ts.map +1 -1
  183. package/dist/bridges/carrier-sign.js +8 -3
  184. package/dist/bridges/carrier-sign.js.map +1 -1
  185. package/dist/bridges/catalog-adapter.d.ts +12 -3
  186. package/dist/bridges/catalog-adapter.d.ts.map +1 -1
  187. package/dist/bridges/catalog-adapter.js +22 -14
  188. package/dist/bridges/catalog-adapter.js.map +1 -1
  189. package/dist/bridges/catalog-load.d.ts +19 -2
  190. package/dist/bridges/catalog-load.d.ts.map +1 -1
  191. package/dist/bridges/catalog-load.js +233 -14
  192. package/dist/bridges/catalog-load.js.map +1 -1
  193. package/dist/bridges/catalog-types.d.ts +96 -27
  194. package/dist/bridges/catalog-types.d.ts.map +1 -1
  195. package/dist/bridges/catalog-types.js.map +1 -1
  196. package/dist/bridges/coefficient-statement.js +1 -5
  197. package/dist/bridges/coefficient-statement.js.map +1 -1
  198. package/dist/bridges/confrontation-coverage.js.map +1 -1
  199. package/dist/bridges/confrontations.d.ts +1 -1
  200. package/dist/bridges/confrontations.d.ts.map +1 -1
  201. package/dist/bridges/confrontations.js +1 -1
  202. package/dist/bridges/confrontations.js.map +1 -1
  203. package/dist/bridges/evaluation-errors.d.ts +89 -0
  204. package/dist/bridges/evaluation-errors.d.ts.map +1 -0
  205. package/dist/bridges/evaluation-errors.js +136 -0
  206. package/dist/bridges/evaluation-errors.js.map +1 -0
  207. package/dist/bridges/evaluator-inputs.d.ts +5 -3
  208. package/dist/bridges/evaluator-inputs.d.ts.map +1 -1
  209. package/dist/bridges/evaluator-inputs.js +24 -24
  210. package/dist/bridges/evaluator-inputs.js.map +1 -1
  211. package/dist/bridges/evaluators.d.ts +48 -8
  212. package/dist/bridges/evaluators.d.ts.map +1 -1
  213. package/dist/bridges/evaluators.js +173 -38
  214. package/dist/bridges/evaluators.js.map +1 -1
  215. package/dist/bridges/expr-parse.d.ts +38 -7
  216. package/dist/bridges/expr-parse.d.ts.map +1 -1
  217. package/dist/bridges/expr-parse.js +129 -156
  218. package/dist/bridges/expr-parse.js.map +1 -1
  219. package/dist/bridges/holds.d.ts +16 -8
  220. package/dist/bridges/holds.d.ts.map +1 -1
  221. package/dist/bridges/holds.js +130 -236
  222. package/dist/bridges/holds.js.map +1 -1
  223. package/dist/bridges/index.d.ts +15 -14
  224. package/dist/bridges/index.d.ts.map +1 -1
  225. package/dist/bridges/index.js +14 -15
  226. package/dist/bridges/index.js.map +1 -1
  227. package/dist/bridges/input-contract.d.ts +65 -0
  228. package/dist/bridges/input-contract.d.ts.map +1 -0
  229. package/dist/bridges/input-contract.js +97 -0
  230. package/dist/bridges/input-contract.js.map +1 -0
  231. package/dist/bridges/membership.d.ts +5 -3
  232. package/dist/bridges/membership.d.ts.map +1 -1
  233. package/dist/bridges/membership.js +5 -6
  234. package/dist/bridges/membership.js.map +1 -1
  235. package/dist/bridges/notices.d.ts +11 -0
  236. package/dist/bridges/notices.d.ts.map +1 -0
  237. package/dist/bridges/notices.js +22 -0
  238. package/dist/bridges/notices.js.map +1 -0
  239. package/dist/bridges/observations/types.js.map +1 -1
  240. package/dist/bridges/rejected.d.ts +11 -17
  241. package/dist/bridges/rejected.d.ts.map +1 -1
  242. package/dist/bridges/rejected.js +13 -68
  243. package/dist/bridges/rejected.js.map +1 -1
  244. package/dist/bridges/relation-eval.d.ts +5 -6
  245. package/dist/bridges/relation-eval.d.ts.map +1 -1
  246. package/dist/bridges/relation-eval.js +9 -38
  247. package/dist/bridges/relation-eval.js.map +1 -1
  248. package/dist/bridges/rhs-registry.js.map +1 -1
  249. package/dist/bridges/sensitivity.d.ts +11 -3
  250. package/dist/bridges/sensitivity.d.ts.map +1 -1
  251. package/dist/bridges/sensitivity.js +24 -10
  252. package/dist/bridges/sensitivity.js.map +1 -1
  253. package/dist/bridges/tensor-index.js.map +1 -1
  254. package/dist/bridges/types.d.ts +1 -7
  255. package/dist/bridges/types.d.ts.map +1 -1
  256. package/dist/bridges/types.js +1 -4
  257. package/dist/bridges/types.js.map +1 -1
  258. package/dist/canonical/canonical-equation.d.ts +31 -0
  259. package/dist/canonical/canonical-equation.d.ts.map +1 -1
  260. package/dist/canonical/canonical-equation.js.map +1 -1
  261. package/dist/canonical/dimensional-fields.js.map +1 -1
  262. package/dist/canonical/entries/_l1-build.js.map +1 -1
  263. package/dist/canonical/entries/atomic.d.ts.map +1 -1
  264. package/dist/canonical/entries/atomic.js +11 -1
  265. package/dist/canonical/entries/atomic.js.map +1 -1
  266. package/dist/canonical/entries/condensed-matter.d.ts.map +1 -1
  267. package/dist/canonical/entries/condensed-matter.js +7 -4
  268. package/dist/canonical/entries/condensed-matter.js.map +1 -1
  269. package/dist/canonical/entries/dimensional-classics.d.ts.map +1 -1
  270. package/dist/canonical/entries/dimensional-classics.js +50 -2
  271. package/dist/canonical/entries/dimensional-classics.js.map +1 -1
  272. package/dist/canonical/entries/electromagnetism.d.ts.map +1 -1
  273. package/dist/canonical/entries/electromagnetism.js +32 -2
  274. package/dist/canonical/entries/electromagnetism.js.map +1 -1
  275. package/dist/canonical/entries/fluids-waves.d.ts.map +1 -1
  276. package/dist/canonical/entries/fluids-waves.js +34 -0
  277. package/dist/canonical/entries/fluids-waves.js.map +1 -1
  278. package/dist/canonical/entries/mechanics.d.ts.map +1 -1
  279. package/dist/canonical/entries/mechanics.js +24 -0
  280. package/dist/canonical/entries/mechanics.js.map +1 -1
  281. package/dist/canonical/entries/nonmonomial.d.ts.map +1 -1
  282. package/dist/canonical/entries/nonmonomial.js +42 -24
  283. package/dist/canonical/entries/nonmonomial.js.map +1 -1
  284. package/dist/canonical/entries/relativity.d.ts.map +1 -1
  285. package/dist/canonical/entries/relativity.js +6 -0
  286. package/dist/canonical/entries/relativity.js.map +1 -1
  287. package/dist/canonical/entries/statistical-mechanics.d.ts.map +1 -1
  288. package/dist/canonical/entries/statistical-mechanics.js +24 -5
  289. package/dist/canonical/entries/statistical-mechanics.js.map +1 -1
  290. package/dist/canonical/entries/thermo-nuclear-cosmo.d.ts.map +1 -1
  291. package/dist/canonical/entries/thermo-nuclear-cosmo.js +15 -0
  292. package/dist/canonical/entries/thermo-nuclear-cosmo.js.map +1 -1
  293. package/dist/canonical/linkage.d.ts +29 -4
  294. package/dist/canonical/linkage.d.ts.map +1 -1
  295. package/dist/canonical/linkage.js +31 -29
  296. package/dist/canonical/linkage.js.map +1 -1
  297. package/dist/canonical/normal-form.d.ts +0 -8
  298. package/dist/canonical/normal-form.d.ts.map +1 -1
  299. package/dist/canonical/normal-form.js +17 -12
  300. package/dist/canonical/normal-form.js.map +1 -1
  301. package/dist/canonical/registry.js.map +1 -1
  302. package/dist/canonical/residual.js.map +1 -1
  303. package/dist/canonical/seed-l-layer.d.ts +7 -1
  304. package/dist/canonical/seed-l-layer.d.ts.map +1 -1
  305. package/dist/canonical/seed-l-layer.js +7 -1
  306. package/dist/canonical/seed-l-layer.js.map +1 -1
  307. package/dist/canonical/structural.d.ts +21 -0
  308. package/dist/canonical/structural.d.ts.map +1 -1
  309. package/dist/canonical/structural.js +24 -4
  310. package/dist/canonical/structural.js.map +1 -1
  311. package/dist/cases/brownian-sphere.js +4 -4
  312. package/dist/cases/brownian-sphere.js.map +1 -1
  313. package/dist/cases/damped-resonator.js +2 -2
  314. package/dist/cases/damped-resonator.js.map +1 -1
  315. package/dist/cases/index.d.ts +9 -2
  316. package/dist/cases/index.d.ts.map +1 -1
  317. package/dist/cases/index.js +26 -7
  318. package/dist/cases/index.js.map +1 -1
  319. package/dist/cases/kepler-rv.js +6 -6
  320. package/dist/cases/kepler-rv.js.map +1 -1
  321. package/dist/cases/lumped-cooling.js +1 -1
  322. package/dist/cases/lumped-cooling.js.map +1 -1
  323. package/dist/cases/quadrature.js.map +1 -1
  324. package/dist/cases/resistor-noise.js +3 -3
  325. package/dist/cases/resistor-noise.js.map +1 -1
  326. package/dist/cases/skin-depth.js.map +1 -1
  327. package/dist/cases/types.js.map +1 -1
  328. package/dist/cli/args.d.ts +7 -2
  329. package/dist/cli/args.d.ts.map +1 -1
  330. package/dist/cli/args.js +18 -2
  331. package/dist/cli/args.js.map +1 -1
  332. package/dist/cli/bindings.d.ts +13 -0
  333. package/dist/cli/bindings.d.ts.map +1 -0
  334. package/dist/cli/bindings.js +32 -0
  335. package/dist/cli/bindings.js.map +1 -0
  336. package/dist/cli/closed-form-range.js.map +1 -1
  337. package/dist/cli/command.js.map +1 -1
  338. package/dist/cli/commands/_atlas-map.d.ts +3 -3
  339. package/dist/cli/commands/_atlas-map.d.ts.map +1 -1
  340. package/dist/cli/commands/_atlas-map.js +43 -18
  341. package/dist/cli/commands/_atlas-map.js.map +1 -1
  342. package/dist/cli/commands/_atlas-route.js.map +1 -1
  343. package/dist/cli/commands/_discovery-opts.d.ts +2 -1
  344. package/dist/cli/commands/_discovery-opts.d.ts.map +1 -1
  345. package/dist/cli/commands/_discovery-opts.js +48 -18
  346. package/dist/cli/commands/_discovery-opts.js.map +1 -1
  347. package/dist/cli/commands/atlas.d.ts.map +1 -1
  348. package/dist/cli/commands/atlas.js +7 -12
  349. package/dist/cli/commands/atlas.js.map +1 -1
  350. package/dist/cli/commands/audit.d.ts.map +1 -1
  351. package/dist/cli/commands/audit.js +13 -21
  352. package/dist/cli/commands/audit.js.map +1 -1
  353. package/dist/cli/commands/axes.js.map +1 -1
  354. package/dist/cli/commands/candidates.d.ts.map +1 -1
  355. package/dist/cli/commands/candidates.js +16 -8
  356. package/dist/cli/commands/candidates.js.map +1 -1
  357. package/dist/cli/commands/canonical.js.map +1 -1
  358. package/dist/cli/commands/chain.js +1 -1
  359. package/dist/cli/commands/chain.js.map +1 -1
  360. package/dist/cli/commands/confront.d.ts.map +1 -1
  361. package/dist/cli/commands/confront.js +22 -14
  362. package/dist/cli/commands/confront.js.map +1 -1
  363. package/dist/cli/commands/connectors.d.ts.map +1 -1
  364. package/dist/cli/commands/connectors.js +8 -9
  365. package/dist/cli/commands/connectors.js.map +1 -1
  366. package/dist/cli/commands/coverage.js.map +1 -1
  367. package/dist/cli/commands/derive.d.ts.map +1 -1
  368. package/dist/cli/commands/derive.js +50 -26
  369. package/dist/cli/commands/derive.js.map +1 -1
  370. package/dist/cli/commands/discover.d.ts.map +1 -1
  371. package/dist/cli/commands/discover.js +18 -13
  372. package/dist/cli/commands/discover.js.map +1 -1
  373. package/dist/cli/commands/eval.d.ts.map +1 -1
  374. package/dist/cli/commands/eval.js +29 -26
  375. package/dist/cli/commands/eval.js.map +1 -1
  376. package/dist/cli/commands/evaluate.d.ts +1 -35
  377. package/dist/cli/commands/evaluate.d.ts.map +1 -1
  378. package/dist/cli/commands/evaluate.js +99 -208
  379. package/dist/cli/commands/evaluate.js.map +1 -1
  380. package/dist/cli/commands/explain.d.ts.map +1 -1
  381. package/dist/cli/commands/explain.js +57 -45
  382. package/dist/cli/commands/explain.js.map +1 -1
  383. package/dist/cli/commands/frontier.js.map +1 -1
  384. package/dist/cli/commands/ground.d.ts.map +1 -1
  385. package/dist/cli/commands/ground.js +41 -11
  386. package/dist/cli/commands/ground.js.map +1 -1
  387. package/dist/cli/commands/index.js.map +1 -1
  388. package/dist/cli/commands/map.d.ts.map +1 -1
  389. package/dist/cli/commands/map.js +84 -92
  390. package/dist/cli/commands/map.js.map +1 -1
  391. package/dist/cli/commands/metric.d.ts.map +1 -1
  392. package/dist/cli/commands/metric.js +53 -15
  393. package/dist/cli/commands/metric.js.map +1 -1
  394. package/dist/cli/commands/path.js +4 -4
  395. package/dist/cli/commands/path.js.map +1 -1
  396. package/dist/cli/commands/predict.js.map +1 -1
  397. package/dist/cli/commands/priority.js.map +1 -1
  398. package/dist/cli/commands/probe.d.ts.map +1 -1
  399. package/dist/cli/commands/probe.js +50 -26
  400. package/dist/cli/commands/probe.js.map +1 -1
  401. package/dist/cli/commands/recover.js +1 -1
  402. package/dist/cli/commands/recover.js.map +1 -1
  403. package/dist/cli/commands/regime.d.ts +5 -4
  404. package/dist/cli/commands/regime.d.ts.map +1 -1
  405. package/dist/cli/commands/regime.js +25 -27
  406. package/dist/cli/commands/regime.js.map +1 -1
  407. package/dist/cli/commands/retrieve.d.ts.map +1 -1
  408. package/dist/cli/commands/retrieve.js +22 -14
  409. package/dist/cli/commands/retrieve.js.map +1 -1
  410. package/dist/cli/commands/search.d.ts.map +1 -1
  411. package/dist/cli/commands/search.js +8 -4
  412. package/dist/cli/commands/search.js.map +1 -1
  413. package/dist/cli/commands/symbolic.d.ts.map +1 -1
  414. package/dist/cli/commands/symbolic.js +14 -7
  415. package/dist/cli/commands/symbolic.js.map +1 -1
  416. package/dist/cli/commands/testplan.js +4 -4
  417. package/dist/cli/commands/testplan.js.map +1 -1
  418. package/dist/cli/conventions.d.ts +6 -7
  419. package/dist/cli/conventions.d.ts.map +1 -1
  420. package/dist/cli/conventions.js +19 -28
  421. package/dist/cli/conventions.js.map +1 -1
  422. package/dist/cli/determination.js.map +1 -1
  423. package/dist/cli/errors.js.map +1 -1
  424. package/dist/cli/euler-guard.d.ts +13 -2
  425. package/dist/cli/euler-guard.d.ts.map +1 -1
  426. package/dist/cli/euler-guard.js +17 -3
  427. package/dist/cli/euler-guard.js.map +1 -1
  428. package/dist/cli/eval-numbers.d.ts +4 -9
  429. package/dist/cli/eval-numbers.d.ts.map +1 -1
  430. package/dist/cli/eval-numbers.js +11 -41
  431. package/dist/cli/eval-numbers.js.map +1 -1
  432. package/dist/cli/expr-print.d.ts +29 -2
  433. package/dist/cli/expr-print.d.ts.map +1 -1
  434. package/dist/cli/expr-print.js +46 -2
  435. package/dist/cli/expr-print.js.map +1 -1
  436. package/dist/cli/flag-help.js.map +1 -1
  437. package/dist/cli/graphs.js.map +1 -1
  438. package/dist/cli/library-defaults.d.ts +19 -0
  439. package/dist/cli/library-defaults.d.ts.map +1 -0
  440. package/dist/cli/library-defaults.js +22 -0
  441. package/dist/cli/library-defaults.js.map +1 -0
  442. package/dist/cli/main.js +7 -3
  443. package/dist/cli/main.js.map +1 -1
  444. package/dist/cli/map-evidence.js.map +1 -1
  445. package/dist/cli/output.d.ts +3 -6
  446. package/dist/cli/output.d.ts.map +1 -1
  447. package/dist/cli/output.js.map +1 -1
  448. package/dist/cli/published-url.d.ts +2 -0
  449. package/dist/cli/published-url.d.ts.map +1 -1
  450. package/dist/cli/published-url.js +5 -0
  451. package/dist/cli/published-url.js.map +1 -1
  452. package/dist/cli/record-reach.d.ts +6 -0
  453. package/dist/cli/record-reach.d.ts.map +1 -1
  454. package/dist/cli/record-reach.js +16 -10
  455. package/dist/cli/record-reach.js.map +1 -1
  456. package/dist/cli/record-tables.d.ts +2 -1
  457. package/dist/cli/record-tables.d.ts.map +1 -1
  458. package/dist/cli/record-tables.js +8 -3
  459. package/dist/cli/record-tables.js.map +1 -1
  460. package/dist/cli/record.d.ts.map +1 -1
  461. package/dist/cli/record.js +31 -12
  462. package/dist/cli/record.js.map +1 -1
  463. package/dist/cli/search-index.d.ts +5 -0
  464. package/dist/cli/search-index.d.ts.map +1 -1
  465. package/dist/cli/search-index.js +12 -1
  466. package/dist/cli/search-index.js.map +1 -1
  467. package/dist/cli/statuses.js.map +1 -1
  468. package/dist/cli/top-level-help.js.map +1 -1
  469. package/dist/cli/version.js.map +1 -1
  470. package/dist/cli-api.d.ts +57 -18
  471. package/dist/cli-api.d.ts.map +1 -1
  472. package/dist/cli-api.js +49 -21
  473. package/dist/cli-api.js.map +1 -1
  474. package/dist/composition/adjudication.d.ts +8 -30
  475. package/dist/composition/adjudication.d.ts.map +1 -1
  476. package/dist/composition/adjudication.js +15 -67
  477. package/dist/composition/adjudication.js.map +1 -1
  478. package/dist/composition/aliases.d.ts +1 -1
  479. package/dist/composition/aliases.d.ts.map +1 -1
  480. package/dist/composition/aliases.js +10 -20
  481. package/dist/composition/aliases.js.map +1 -1
  482. package/dist/composition/audit-coverage.d.ts +2 -0
  483. package/dist/composition/audit-coverage.d.ts.map +1 -1
  484. package/dist/composition/audit-coverage.js.map +1 -1
  485. package/dist/composition/axes.d.ts +12 -0
  486. package/dist/composition/axes.d.ts.map +1 -1
  487. package/dist/composition/axes.js +18 -6
  488. package/dist/composition/axes.js.map +1 -1
  489. package/dist/composition/axis-audit.js.map +1 -1
  490. package/dist/composition/bridge-analysis.d.ts +0 -14
  491. package/dist/composition/bridge-analysis.d.ts.map +1 -1
  492. package/dist/composition/bridge-analysis.js +66 -57
  493. package/dist/composition/bridge-analysis.js.map +1 -1
  494. package/dist/composition/bridge-prediction.d.ts +5 -1
  495. package/dist/composition/bridge-prediction.d.ts.map +1 -1
  496. package/dist/composition/bridge-prediction.js +12 -16
  497. package/dist/composition/bridge-prediction.js.map +1 -1
  498. package/dist/composition/buckingham-filter.js.map +1 -1
  499. package/dist/composition/canonical-compare.d.ts.map +1 -1
  500. package/dist/composition/canonical-compare.js +12 -2
  501. package/dist/composition/canonical-compare.js.map +1 -1
  502. package/dist/composition/canonical-graph.d.ts +15 -18
  503. package/dist/composition/canonical-graph.d.ts.map +1 -1
  504. package/dist/composition/canonical-graph.js +59 -85
  505. package/dist/composition/canonical-graph.js.map +1 -1
  506. package/dist/composition/canonical-json.js.map +1 -1
  507. package/dist/composition/canonical-prefactors.d.ts +10 -29
  508. package/dist/composition/canonical-prefactors.d.ts.map +1 -1
  509. package/dist/composition/canonical-prefactors.js +15 -202
  510. package/dist/composition/canonical-prefactors.js.map +1 -1
  511. package/dist/composition/catalog-graph.d.ts.map +1 -1
  512. package/dist/composition/catalog-graph.js +6 -20
  513. package/dist/composition/catalog-graph.js.map +1 -1
  514. package/dist/composition/chain-candidate.d.ts +2 -0
  515. package/dist/composition/chain-candidate.d.ts.map +1 -1
  516. package/dist/composition/chain-candidate.js +2 -0
  517. package/dist/composition/chain-candidate.js.map +1 -1
  518. package/dist/composition/chain-match.js.map +1 -1
  519. package/dist/composition/chain-regime.js.map +1 -1
  520. package/dist/composition/chain-result.js.map +1 -1
  521. package/dist/composition/compose-surface.js.map +1 -1
  522. package/dist/composition/compose-symbolic.js.map +1 -1
  523. package/dist/composition/compose.d.ts.map +1 -1
  524. package/dist/composition/compose.js +154 -36
  525. package/dist/composition/compose.js.map +1 -1
  526. package/dist/composition/composition-recovery.js.map +1 -1
  527. package/dist/composition/consequence.d.ts.map +1 -1
  528. package/dist/composition/consequence.js +15 -6
  529. package/dist/composition/consequence.js.map +1 -1
  530. package/dist/composition/consistency.js.map +1 -1
  531. package/dist/composition/descriptor.d.ts +1 -1
  532. package/dist/composition/descriptor.d.ts.map +1 -1
  533. package/dist/composition/descriptor.js.map +1 -1
  534. package/dist/composition/dimension-adjacency.js.map +1 -1
  535. package/dist/composition/discovery.d.ts +67 -7
  536. package/dist/composition/discovery.d.ts.map +1 -1
  537. package/dist/composition/discovery.js +83 -23
  538. package/dist/composition/discovery.js.map +1 -1
  539. package/dist/composition/edge.d.ts +19 -22
  540. package/dist/composition/edge.d.ts.map +1 -1
  541. package/dist/composition/edge.js +25 -28
  542. package/dist/composition/edge.js.map +1 -1
  543. package/dist/composition/enumerate.d.ts +2 -2
  544. package/dist/composition/enumerate.d.ts.map +1 -1
  545. package/dist/composition/enumerate.js.map +1 -1
  546. package/dist/composition/evaluate-relation.d.ts +29 -5
  547. package/dist/composition/evaluate-relation.d.ts.map +1 -1
  548. package/dist/composition/evaluate-relation.js +100 -72
  549. package/dist/composition/evaluate-relation.js.map +1 -1
  550. package/dist/composition/explain.d.ts +14 -4
  551. package/dist/composition/explain.d.ts.map +1 -1
  552. package/dist/composition/explain.js +53 -19
  553. package/dist/composition/explain.js.map +1 -1
  554. package/dist/composition/expr-eval.d.ts.map +1 -1
  555. package/dist/composition/expr-eval.js +2 -1
  556. package/dist/composition/expr-eval.js.map +1 -1
  557. package/dist/composition/expr-simplify.d.ts.map +1 -1
  558. package/dist/composition/expr-simplify.js +9 -39
  559. package/dist/composition/expr-simplify.js.map +1 -1
  560. package/dist/composition/expr-subst.js.map +1 -1
  561. package/dist/composition/formula-shape.d.ts +9 -0
  562. package/dist/composition/formula-shape.d.ts.map +1 -1
  563. package/dist/composition/formula-shape.js +54 -0
  564. package/dist/composition/formula-shape.js.map +1 -1
  565. package/dist/composition/frontier-account.d.ts +3 -2
  566. package/dist/composition/frontier-account.d.ts.map +1 -1
  567. package/dist/composition/frontier-account.js +7 -3
  568. package/dist/composition/frontier-account.js.map +1 -1
  569. package/dist/composition/graph-viz-svg.js.map +1 -1
  570. package/dist/composition/graph-viz.js.map +1 -1
  571. package/dist/composition/grounding.js.map +1 -1
  572. package/dist/composition/identifiability.js.map +1 -1
  573. package/dist/composition/index.d.ts +9 -5
  574. package/dist/composition/index.d.ts.map +1 -1
  575. package/dist/composition/index.js +7 -4
  576. package/dist/composition/index.js.map +1 -1
  577. package/dist/composition/mathts-quiet.d.ts +28 -0
  578. package/dist/composition/mathts-quiet.d.ts.map +1 -0
  579. package/dist/composition/mathts-quiet.js +56 -0
  580. package/dist/composition/mathts-quiet.js.map +1 -0
  581. package/dist/composition/mathts-scalar-symbols.d.ts.map +1 -1
  582. package/dist/composition/mathts-scalar-symbols.js +18 -34
  583. package/dist/composition/mathts-scalar-symbols.js.map +1 -1
  584. package/dist/composition/not-composable-seeds.d.ts +3 -1
  585. package/dist/composition/not-composable-seeds.d.ts.map +1 -1
  586. package/dist/composition/not-composable-seeds.js +2 -0
  587. package/dist/composition/not-composable-seeds.js.map +1 -1
  588. package/dist/composition/probe/backend-protocol.js.map +1 -1
  589. package/dist/composition/probe/candidate-store.js.map +1 -1
  590. package/dist/composition/probe/corpus.js.map +1 -1
  591. package/dist/composition/probe/dataset.js.map +1 -1
  592. package/dist/composition/probe/experiment-design.js.map +1 -1
  593. package/dist/composition/probe/expression-gaps.js.map +1 -1
  594. package/dist/composition/probe/falsify.d.ts +14 -3
  595. package/dist/composition/probe/falsify.d.ts.map +1 -1
  596. package/dist/composition/probe/falsify.js +14 -27
  597. package/dist/composition/probe/falsify.js.map +1 -1
  598. package/dist/composition/probe/fingerprint.js.map +1 -1
  599. package/dist/composition/probe/fit.d.ts +1 -1
  600. package/dist/composition/probe/fit.d.ts.map +1 -1
  601. package/dist/composition/probe/fit.js +2 -1
  602. package/dist/composition/probe/fit.js.map +1 -1
  603. package/dist/composition/probe/frontier.js.map +1 -1
  604. package/dist/composition/probe/generator.js.map +1 -1
  605. package/dist/composition/probe/index.d.ts +4 -2
  606. package/dist/composition/probe/index.d.ts.map +1 -1
  607. package/dist/composition/probe/index.js +4 -2
  608. package/dist/composition/probe/index.js.map +1 -1
  609. package/dist/composition/probe/limits.js.map +1 -1
  610. package/dist/composition/probe/metadata.js.map +1 -1
  611. package/dist/composition/probe/pipeline.d.ts +5 -0
  612. package/dist/composition/probe/pipeline.d.ts.map +1 -1
  613. package/dist/composition/probe/pipeline.js +13 -6
  614. package/dist/composition/probe/pipeline.js.map +1 -1
  615. package/dist/composition/probe/problem.d.ts +8 -0
  616. package/dist/composition/probe/problem.d.ts.map +1 -1
  617. package/dist/composition/probe/problem.js +78 -12
  618. package/dist/composition/probe/problem.js.map +1 -1
  619. package/dist/composition/probe/report.js.map +1 -1
  620. package/dist/composition/probe/residual.js.map +1 -1
  621. package/dist/composition/probe/run-manifest.js +2 -2
  622. package/dist/composition/probe/run-manifest.js.map +1 -1
  623. package/dist/composition/probe/scoring.d.ts +2 -1
  624. package/dist/composition/probe/scoring.d.ts.map +1 -1
  625. package/dist/composition/probe/scoring.js +21 -7
  626. package/dist/composition/probe/scoring.js.map +1 -1
  627. package/dist/composition/probe/search-budget.js.map +1 -1
  628. package/dist/composition/probe/serialize.js.map +1 -1
  629. package/dist/composition/probe/structure.js.map +1 -1
  630. package/dist/composition/probe/study.d.ts +4 -3
  631. package/dist/composition/probe/study.d.ts.map +1 -1
  632. package/dist/composition/probe/study.js +5 -3
  633. package/dist/composition/probe/study.js.map +1 -1
  634. package/dist/composition/probe/types.d.ts +3 -1
  635. package/dist/composition/probe/types.d.ts.map +1 -1
  636. package/dist/composition/probe/types.js +2 -0
  637. package/dist/composition/probe/types.js.map +1 -1
  638. package/dist/composition/proposed-bridges.d.ts +11 -4
  639. package/dist/composition/proposed-bridges.d.ts.map +1 -1
  640. package/dist/composition/proposed-bridges.js +14 -6
  641. package/dist/composition/proposed-bridges.js.map +1 -1
  642. package/dist/composition/quantities.d.ts +0 -4
  643. package/dist/composition/quantities.d.ts.map +1 -1
  644. package/dist/composition/quantities.js +5 -5
  645. package/dist/composition/quantities.js.map +1 -1
  646. package/dist/composition/quantity.d.ts +18 -2
  647. package/dist/composition/quantity.d.ts.map +1 -1
  648. package/dist/composition/quantity.js +35 -6
  649. package/dist/composition/quantity.js.map +1 -1
  650. package/dist/composition/representative-values.js.map +1 -1
  651. package/dist/composition/retrodiction.d.ts +18 -0
  652. package/dist/composition/retrodiction.d.ts.map +1 -1
  653. package/dist/composition/retrodiction.js +37 -7
  654. package/dist/composition/retrodiction.js.map +1 -1
  655. package/dist/composition/uncertainty.js.map +1 -1
  656. package/dist/composition/user-equation.d.ts +11 -7
  657. package/dist/composition/user-equation.d.ts.map +1 -1
  658. package/dist/composition/user-equation.js +24 -26
  659. package/dist/composition/user-equation.js.map +1 -1
  660. package/dist/core/axes-registry.d.ts +8 -5
  661. package/dist/core/axes-registry.d.ts.map +1 -1
  662. package/dist/core/axes-registry.js.map +1 -1
  663. package/dist/core/cell.js.map +1 -1
  664. package/dist/core/constants.d.ts +35 -12
  665. package/dist/core/constants.d.ts.map +1 -1
  666. package/dist/core/constants.js +46 -15
  667. package/dist/core/constants.js.map +1 -1
  668. package/dist/core/data-file.d.ts +27 -0
  669. package/dist/core/data-file.d.ts.map +1 -0
  670. package/dist/core/data-file.js +48 -0
  671. package/dist/core/data-file.js.map +1 -0
  672. package/dist/core/flux-rules.js +1 -1
  673. package/dist/core/flux-rules.js.map +1 -1
  674. package/dist/core/json-schema.d.ts +27 -0
  675. package/dist/core/json-schema.d.ts.map +1 -0
  676. package/dist/core/json-schema.js +177 -0
  677. package/dist/core/json-schema.js.map +1 -0
  678. package/dist/core/labeled-tensor.d.ts +6 -1
  679. package/dist/core/labeled-tensor.d.ts.map +1 -1
  680. package/dist/core/labeled-tensor.js +18 -8
  681. package/dist/core/labeled-tensor.js.map +1 -1
  682. package/dist/core/regime-registry.d.ts +6 -2
  683. package/dist/core/regime-registry.d.ts.map +1 -1
  684. package/dist/core/regime-registry.js.map +1 -1
  685. package/dist/core/regime-rule-install.js.map +1 -1
  686. package/dist/core/regimes-builtins.js.map +1 -1
  687. package/dist/core/tensor.d.ts +7 -4
  688. package/dist/core/tensor.d.ts.map +1 -1
  689. package/dist/core/tensor.js +40 -8
  690. package/dist/core/tensor.js.map +1 -1
  691. package/dist/core/types.d.ts +3 -2
  692. package/dist/core/types.d.ts.map +1 -1
  693. package/dist/core/types.js +16 -14
  694. package/dist/core/types.js.map +1 -1
  695. package/dist/core/universal-index.js.map +1 -1
  696. package/dist/diff/bridge-ast-gradient.d.ts +4 -5
  697. package/dist/diff/bridge-ast-gradient.d.ts.map +1 -1
  698. package/dist/diff/bridge-ast-gradient.js +16 -23
  699. package/dist/diff/bridge-ast-gradient.js.map +1 -1
  700. package/dist/diff/bridge-gradient.d.ts +24 -80
  701. package/dist/diff/bridge-gradient.d.ts.map +1 -1
  702. package/dist/diff/bridge-gradient.js +21 -98
  703. package/dist/diff/bridge-gradient.js.map +1 -1
  704. package/dist/diff/bridge-specs.d.ts +18 -6
  705. package/dist/diff/bridge-specs.d.ts.map +1 -1
  706. package/dist/diff/bridge-specs.js +17 -5
  707. package/dist/diff/bridge-specs.js.map +1 -1
  708. package/dist/dimensional/algebra.js.map +1 -1
  709. package/dist/dimensional/ast-builders.d.ts +5 -4
  710. package/dist/dimensional/ast-builders.d.ts.map +1 -1
  711. package/dist/dimensional/ast-builders.js +6 -5
  712. package/dist/dimensional/ast-builders.js.map +1 -1
  713. package/dist/dimensional/ast-types.js.map +1 -1
  714. package/dist/dimensional/bridge-check.d.ts.map +1 -1
  715. package/dist/dimensional/bridge-check.js +3 -5
  716. package/dist/dimensional/bridge-check.js.map +1 -1
  717. package/dist/dimensional/buckingham.js.map +1 -1
  718. package/dist/dimensional/connection-validators.d.ts +2 -1
  719. package/dist/dimensional/connection-validators.d.ts.map +1 -1
  720. package/dist/dimensional/connection-validators.js.map +1 -1
  721. package/dist/dimensional/connection.js.map +1 -1
  722. package/dist/dimensional/constant-rows.d.ts +54 -0
  723. package/dist/dimensional/constant-rows.d.ts.map +1 -0
  724. package/dist/dimensional/constant-rows.js +115 -0
  725. package/dist/dimensional/constant-rows.js.map +1 -0
  726. package/dist/dimensional/constants.d.ts +7 -17
  727. package/dist/dimensional/constants.d.ts.map +1 -1
  728. package/dist/dimensional/constants.js +12 -21
  729. package/dist/dimensional/constants.js.map +1 -1
  730. package/dist/dimensional/curvature-composite.js.map +1 -1
  731. package/dist/dimensional/curvature-invariants.js.map +1 -1
  732. package/dist/dimensional/curvature.js.map +1 -1
  733. package/dist/dimensional/dimension-inference.js.map +1 -1
  734. package/dist/dimensional/dimension-spec.d.ts +21 -6
  735. package/dist/dimensional/dimension-spec.d.ts.map +1 -1
  736. package/dist/dimensional/dimension-spec.js +150 -160
  737. package/dist/dimensional/dimension-spec.js.map +1 -1
  738. package/dist/dimensional/einstein-equation.js.map +1 -1
  739. package/dist/dimensional/errors.d.ts +3 -1
  740. package/dist/dimensional/errors.d.ts.map +1 -1
  741. package/dist/dimensional/errors.js +2 -2
  742. package/dist/dimensional/errors.js.map +1 -1
  743. package/dist/dimensional/exact-scale.d.ts +79 -0
  744. package/dist/dimensional/exact-scale.d.ts.map +1 -0
  745. package/dist/dimensional/exact-scale.js +222 -0
  746. package/dist/dimensional/exact-scale.js.map +1 -0
  747. package/dist/dimensional/field-equation-helpers.js.map +1 -1
  748. package/dist/dimensional/formula-names.d.ts +13 -12
  749. package/dist/dimensional/formula-names.d.ts.map +1 -1
  750. package/dist/dimensional/formula-names.js +28 -51
  751. package/dist/dimensional/formula-names.js.map +1 -1
  752. package/dist/dimensional/fresh-label.js.map +1 -1
  753. package/dist/dimensional/friedmann-equation.d.ts +3 -3
  754. package/dist/dimensional/friedmann-equation.js +3 -3
  755. package/dist/dimensional/friedmann-equation.js.map +1 -1
  756. package/dist/dimensional/gauge-field.d.ts +2 -3
  757. package/dist/dimensional/gauge-field.d.ts.map +1 -1
  758. package/dist/dimensional/gauge-field.js +0 -1
  759. package/dist/dimensional/gauge-field.js.map +1 -1
  760. package/dist/dimensional/hyphen-names.d.ts.map +1 -1
  761. package/dist/dimensional/hyphen-names.js +8 -0
  762. package/dist/dimensional/hyphen-names.js.map +1 -1
  763. package/dist/dimensional/killing-validators.js.map +1 -1
  764. package/dist/dimensional/klein-gordon-equation.js.map +1 -1
  765. package/dist/dimensional/metric-validators.d.ts +2 -1
  766. package/dist/dimensional/metric-validators.d.ts.map +1 -1
  767. package/dist/dimensional/metric-validators.js.map +1 -1
  768. package/dist/dimensional/metric.js.map +1 -1
  769. package/dist/dimensional/natural-units.js.map +1 -1
  770. package/dist/dimensional/quantity-registry.d.ts +23 -1
  771. package/dist/dimensional/quantity-registry.d.ts.map +1 -1
  772. package/dist/dimensional/quantity-registry.js +55 -18
  773. package/dist/dimensional/quantity-registry.js.map +1 -1
  774. package/dist/dimensional/rg-flow.js.map +1 -1
  775. package/dist/dimensional/stress-energy-validators.js.map +1 -1
  776. package/dist/dimensional/symbolic-constants.d.ts +63 -19
  777. package/dist/dimensional/symbolic-constants.d.ts.map +1 -1
  778. package/dist/dimensional/symbolic-constants.js +114 -92
  779. package/dist/dimensional/symbolic-constants.js.map +1 -1
  780. package/dist/dimensional/tensor-trace.js.map +1 -1
  781. package/dist/dimensional/tensor.js.map +1 -1
  782. package/dist/dimensional/types.js.map +1 -1
  783. package/dist/dimensional/unit-convention.d.ts +0 -2
  784. package/dist/dimensional/unit-convention.d.ts.map +1 -1
  785. package/dist/dimensional/unit-convention.js +2 -2
  786. package/dist/dimensional/unit-convention.js.map +1 -1
  787. package/dist/dimensional/unit-data.d.ts +70 -0
  788. package/dist/dimensional/unit-data.d.ts.map +1 -0
  789. package/dist/dimensional/unit-data.js +139 -0
  790. package/dist/dimensional/unit-data.js.map +1 -0
  791. package/dist/dimensional/units.d.ts +87 -24
  792. package/dist/dimensional/units.d.ts.map +1 -1
  793. package/dist/dimensional/units.js +290 -295
  794. package/dist/dimensional/units.js.map +1 -1
  795. package/dist/dimensional/validator-registry.js.map +1 -1
  796. package/dist/dimensional/validator.d.ts +0 -16
  797. package/dist/dimensional/validator.d.ts.map +1 -1
  798. package/dist/dimensional/validator.js +65 -29
  799. package/dist/dimensional/validator.js.map +1 -1
  800. package/dist/dimensional/weyl-validators.js.map +1 -1
  801. package/dist/index.d.ts +65 -18
  802. package/dist/index.d.ts.map +1 -1
  803. package/dist/index.js +19 -24
  804. package/dist/index.js.map +1 -1
  805. package/dist/numerical/bianchi-residual.js.map +1 -1
  806. package/dist/numerical/binding-value.d.ts +32 -7
  807. package/dist/numerical/binding-value.d.ts.map +1 -1
  808. package/dist/numerical/binding-value.js +218 -209
  809. package/dist/numerical/binding-value.js.map +1 -1
  810. package/dist/numerical/christoffel-flat.js.map +1 -1
  811. package/dist/numerical/connection-lowering-helpers.js.map +1 -1
  812. package/dist/numerical/covariant-eikonal.d.ts.map +1 -1
  813. package/dist/numerical/covariant-eikonal.js +2 -2
  814. package/dist/numerical/covariant-eikonal.js.map +1 -1
  815. package/dist/numerical/curvature-lowering-helpers.d.ts +20 -0
  816. package/dist/numerical/curvature-lowering-helpers.d.ts.map +1 -1
  817. package/dist/numerical/curvature-lowering-helpers.js +6 -3
  818. package/dist/numerical/curvature-lowering-helpers.js.map +1 -1
  819. package/dist/numerical/derivative-lowering.js.map +1 -1
  820. package/dist/numerical/einstein-equation.js.map +1 -1
  821. package/dist/numerical/engine-registry.js.map +1 -1
  822. package/dist/numerical/errors.d.ts +7 -3
  823. package/dist/numerical/errors.d.ts.map +1 -1
  824. package/dist/numerical/errors.js +5 -5
  825. package/dist/numerical/errors.js.map +1 -1
  826. package/dist/numerical/evaluator-uncertainty.d.ts +34 -0
  827. package/dist/numerical/evaluator-uncertainty.d.ts.map +1 -0
  828. package/dist/numerical/evaluator-uncertainty.js +134 -0
  829. package/dist/numerical/evaluator-uncertainty.js.map +1 -0
  830. package/dist/numerical/formula-contract.d.ts +67 -7
  831. package/dist/numerical/formula-contract.d.ts.map +1 -1
  832. package/dist/numerical/formula-contract.js +68 -42
  833. package/dist/numerical/formula-contract.js.map +1 -1
  834. package/dist/numerical/formula-dimension.d.ts +17 -7
  835. package/dist/numerical/formula-dimension.d.ts.map +1 -1
  836. package/dist/numerical/formula-dimension.js +120 -44
  837. package/dist/numerical/formula-dimension.js.map +1 -1
  838. package/dist/numerical/formula-mathts.d.ts.map +1 -1
  839. package/dist/numerical/formula-mathts.js +10 -3
  840. package/dist/numerical/formula-mathts.js.map +1 -1
  841. package/dist/numerical/formula-registry.d.ts +13 -3
  842. package/dist/numerical/formula-registry.d.ts.map +1 -1
  843. package/dist/numerical/formula-registry.js +7 -2
  844. package/dist/numerical/formula-registry.js.map +1 -1
  845. package/dist/numerical/geodesic-integrator.js.map +1 -1
  846. package/dist/numerical/geometrized.js.map +1 -1
  847. package/dist/numerical/gl4-integrator.d.ts +28 -27
  848. package/dist/numerical/gl4-integrator.d.ts.map +1 -1
  849. package/dist/numerical/gl4-integrator.js +44 -45
  850. package/dist/numerical/gl4-integrator.js.map +1 -1
  851. package/dist/numerical/grid-field.js.map +1 -1
  852. package/dist/numerical/index.js.map +1 -1
  853. package/dist/numerical/input-validation.d.ts +3 -6
  854. package/dist/numerical/input-validation.d.ts.map +1 -1
  855. package/dist/numerical/input-validation.js +4 -8
  856. package/dist/numerical/input-validation.js.map +1 -1
  857. package/dist/numerical/killing.d.ts +8 -5
  858. package/dist/numerical/killing.d.ts.map +1 -1
  859. package/dist/numerical/killing.js.map +1 -1
  860. package/dist/numerical/klein-gordon.js.map +1 -1
  861. package/dist/numerical/kretschmann.js.map +1 -1
  862. package/dist/numerical/lowering-utils.js.map +1 -1
  863. package/dist/numerical/lowering.d.ts.map +1 -1
  864. package/dist/numerical/lowering.js +7 -17
  865. package/dist/numerical/lowering.js.map +1 -1
  866. package/dist/numerical/mathts-engine.d.ts.map +1 -1
  867. package/dist/numerical/mathts-engine.js +11 -6
  868. package/dist/numerical/mathts-engine.js.map +1 -1
  869. package/dist/numerical/metric-inverse.js.map +1 -1
  870. package/dist/numerical/null-ic.js.map +1 -1
  871. package/dist/numerical/null-ray-integrator.js +4 -4
  872. package/dist/numerical/null-ray-integrator.js.map +1 -1
  873. package/dist/numerical/painleve-gullstrand-metric.js.map +1 -1
  874. package/dist/numerical/pderiv.d.ts.map +1 -1
  875. package/dist/numerical/pderiv.js +9 -2
  876. package/dist/numerical/pderiv.js.map +1 -1
  877. package/dist/numerical/perihelion-finder.js.map +1 -1
  878. package/dist/numerical/quadrature.d.ts +5 -2
  879. package/dist/numerical/quadrature.d.ts.map +1 -1
  880. package/dist/numerical/quadrature.js +20 -3
  881. package/dist/numerical/quadrature.js.map +1 -1
  882. package/dist/numerical/spacetime-metrics.d.ts +17 -19
  883. package/dist/numerical/spacetime-metrics.d.ts.map +1 -1
  884. package/dist/numerical/spacetime-metrics.js +158 -250
  885. package/dist/numerical/spacetime-metrics.js.map +1 -1
  886. package/dist/numerical/strides.js.map +1 -1
  887. package/dist/numerical/tensor-engine.d.ts +9 -5
  888. package/dist/numerical/tensor-engine.d.ts.map +1 -1
  889. package/dist/numerical/tensor-engine.js.map +1 -1
  890. package/dist/numerical/types.js.map +1 -1
  891. package/dist/numerical/weyl-lowering.js.map +1 -1
  892. package/dist/relations/category.js.map +1 -1
  893. package/dist/relations/composition-table.d.ts +4 -4
  894. package/dist/relations/composition-table.js +4 -4
  895. package/dist/relations/composition-table.js.map +1 -1
  896. package/dist/relations/conventions.js.map +1 -1
  897. package/dist/relations/domain-regimes.js.map +1 -1
  898. package/dist/relations/regime-registration.js.map +1 -1
  899. package/dist/relations/regime-vocabularies.js.map +1 -1
  900. package/dist/relations/regime.d.ts +18 -8
  901. package/dist/relations/regime.d.ts.map +1 -1
  902. package/dist/relations/regime.js +26 -14
  903. package/dist/relations/regime.js.map +1 -1
  904. package/dist/relations/types.d.ts +26 -6
  905. package/dist/relations/types.d.ts.map +1 -1
  906. package/dist/relations/types.js +15 -3
  907. package/dist/relations/types.js.map +1 -1
  908. package/package.json +10 -14
  909. package/dist/bridges/registry.d.ts +0 -60
  910. package/dist/bridges/registry.d.ts.map +0 -1
  911. package/dist/bridges/registry.js +0 -87
  912. package/dist/bridges/registry.js.map +0 -1
  913. package/dist/cli/poster-source.d.ts +0 -154
  914. package/dist/cli/poster-source.d.ts.map +0 -1
  915. package/dist/cli/poster-source.js +0 -184
  916. package/dist/cli/poster-source.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"normal-form.js","sourceRoot":"","sources":["../../src/canonical/normal-form.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"normal-form.js","sourceRoot":"","sources":["../../src/canonical/normal-form.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Normalized structural form of a scalar `ExprNode`, **up to dimensionless\n * multiplicative factors** — the hash the F4 circularity guard uses to decide\n * whether a bridge's RHS and a canonical equation encode the same relation.\n *\n * Two expressions hash equal when they differ only by:\n * - dimensionless multiplicative CONSTANTS (numeric literals + registered\n * named constants: ln2, 4π, …),\n * - product nesting (`(a·b)·c` vs `a·b·c`),\n * - commutative reordering of `*` / `+` operands.\n *\n * They hash DIFFERENT when an exponent differs (T⁴ ≠ T), the non-dimensionless\n * factor set differs, OR a dimensionless **stub** differs. A dimensionless\n * symbol that is NOT a recognized constant is a STUB for an unknown\n * dimensionless quantity (e.g. `ln⟨exp(−βW)⟩` in BE-29) — it is kept as a\n * distinct structural token, so Jarzynski's `ln⟨e^−βW⟩` and Landauer's `ln2`\n * no longer collapse to the same form (\"up to a *constant*\" must not absorb a\n * differing functional). Sums keep every term; `^` keeps its exponent; `/`\n * keeps the numerator/denominator split.\n *\n * @module canonical/normal-form\n */\nimport type { ExprNode } from '../dimensional/validator.js';\nimport type { Dimension } from '../dimensional/types.js';\nimport { equals } from '../dimensional/algebra.js';\nimport { DIMENSION_RENAMES, quantityIdForSpelling } from '../dimensional/formula-names.js';\nimport { CONSTANTS, piMultipleValue } from '../dimensional/symbolic-constants.js';\n\nconst isDimensionless = (d: Dimension): boolean =>\n d.L === 0 &&\n d.M === 0 &&\n d.T === 0 &&\n d.I === 0 &&\n d.Theta === 0 &&\n d.N === 0 &&\n d.J === 0;\n\n/** Token for a node that carries no structural content (a dimensionless factor). */\nconst UNIT = '1';\n\n/**\n * Spelled-out dimensionless numeric constants some encoders write as a named\n * symbol rather than a literal — genuine constants the eval `CONSTANTS`\n * registry does not list under that spelling (its own keys are the canonical\n * rows of the constant registry; `piMultipleValue` reads `pi`/`2pi`/`6pi`/…).\n * `ln_2_constant` is BE-16's spelling of `ln 2`. These stay droppable;\n * everything else dimensionless-and-named is a PARAMETER stub (`alpha`,\n * `lambda`, `g_dark`, `ln⟨e^−βW⟩`, …) and is kept.\n */\nconst NAMED_DIMENSIONLESS_CONSTANTS = new Set(['ln_2_constant']);\n\n/**\n * Bridge ASTs still spell a governing quantity with the short symbol (`T`, `M`,\n * `m_1`, `m_2`). The registry uses one name. The structural hash treats the\n * short spelling as that name when the dimension is the quantity's dimension,\n * so a time coordinate named `T` stays a different symbol.\n *\n * @internal\n */\nexport function canonicalQuantityName(name: string, dim: Dimension): string {\n for (const row of DIMENSION_RENAMES) {\n if (row.symbol === name && equals(dim, row.dimension)) return row.name;\n }\n return quantityIdForSpelling(name) ?? name;\n}\n\n/**\n * A dimensionless symbol is a droppable \"up to a constant\" factor only when it\n * is a numeric literal (`2`, `-1`, `0.5`), a registered named constant\n * (`ln2`, `4pi`, …), or a spelled-out numeric constant (`6pi`, `ln_2_constant`).\n * Any OTHER dimensionless symbol is a stub for an unknown dimensionless quantity\n * (a parameter or a functional like `ln⟨exp(−βW)⟩`) and is structural —\n * dropping it would conflate distinct interiors.\n */\nfunction isDroppableConstant(name: string): boolean {\n return (\n name in CONSTANTS ||\n Number.isFinite(Number(name)) ||\n NAMED_DIMENSIONLESS_CONSTANTS.has(name) ||\n piMultipleValue(name) !== undefined\n );\n}\n\n/**\n * Full structural serialization that NEVER drops dimensionless factors — used\n * for `^` exponents, which are structural (T⁴ ≠ T) and must not be treated\n * \"up to dimensionless factors\". Commutative operands are still sorted so the\n * exponent comparison is robust to reordering.\n */\nfunction rawForm(node: ExprNode): string {\n switch (node.kind) {\n case 'symbol':\n return `s:${node.name}`;\n case 'op': {\n const parts = node.args.map(rawForm);\n if (node.op === '*' || node.op === '+') parts.sort();\n return `${node.op}(${parts.join(',')})`;\n }\n case 'transcendental':\n return `${node.fn}[${rawForm(node.arg)}]`;\n case 'abs':\n return `abs[${rawForm(node.arg)}]`;\n default:\n return `${node.kind}:${JSON.stringify(node)}`;\n }\n}\n\n/** Collect the factors of a (possibly nested) `*` product. */\nfunction flattenProduct(node: ExprNode, out: ExprNode[]): void {\n if (node.kind === 'op' && node.op === '*') {\n for (const a of node.args) flattenProduct(a, out);\n } else {\n out.push(node);\n }\n}\n\n/**\n * The normalized structural form of `node`. Equal strings ⇒ same relation up to\n * dimensionless multiplicative factors.\n */\nexport function normalForm(node: ExprNode): string {\n switch (node.kind) {\n case 'symbol':\n // A non-dimensionless symbol is structural. A dimensionless symbol is a\n // droppable factor ONLY when it is a recognized constant; otherwise it is\n // a stub for an unknown dimensionless quantity and is kept (tagged) so two\n // different stubs do not collapse to the same form.\n if (!isDimensionless(node.dim)) return `sym:${canonicalQuantityName(node.name, node.dim)}`;\n return isDroppableConstant(node.name) ? UNIT : `stub:${node.name}`;\n\n case 'op': {\n switch (node.op) {\n case '*': {\n const factors: ExprNode[] = [];\n flattenProduct(node, factors);\n const kept = factors\n .map(normalForm)\n .filter((f) => f !== UNIT) // drop dimensionless factors\n .sort();\n if (kept.length === 0) return UNIT;\n if (kept.length === 1) return kept[0];\n return `*(${kept.join(',')})`;\n }\n case '/': {\n const num = normalForm(node.args[0]);\n const den = normalForm(node.args[1]);\n if (den === UNIT) return num; // ÷ dimensionless ⇒ the numerator\n return `/(${num},${den})`;\n }\n case '^': {\n // The exponent is structural (T⁴ ≠ T) and must NOT be reduced\n // \"up to dimensionless factors\" — serialize it with rawForm so a\n // dimensionless exponent is never dropped (symmetric for direct\n // symbols and op sub-expressions alike).\n const base = normalForm(node.args[0]);\n // A dimensionless constant to any power is still a dimensionless constant (π², √(2π)),\n // dropped as the constant is; the exponent is structural only on a dimensionful base.\n if (base === UNIT) return UNIT;\n return `^(${base},${rawForm(node.args[1])})`;\n }\n case '+':\n case '-': {\n const parts = node.args.map(normalForm);\n if (node.op === '+') parts.sort();\n return `${node.op}(${parts.join(',')})`;\n }\n default:\n return `op:${JSON.stringify(node)}`;\n }\n }\n\n case 'transcendental': {\n // ln(2) is the same dimensionless constant as the symbol `ln2`.\n const arg = normalForm(node.arg);\n if (arg === UNIT) return UNIT;\n return `${node.fn}(${arg})`;\n }\n\n case 'abs':\n return `abs(${normalForm(node.arg)})`;\n\n default:\n // integral / derivative / tensor arms: compare structurally by kind+shape.\n return `${node.kind}:${JSON.stringify(node)}`;\n }\n}\n\n/** Whether two scalar ASTs are the same relation up to dimensionless factors. */\nexport function structurallyEqual(a: ExprNode, b: ExprNode): boolean {\n return normalForm(a) === normalForm(b);\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/canonical/registry.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,EAAE,oBAAoB,EAAE,MAAM,mCAAmC,CAAC;AACzE,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AACrD,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACnD,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AACjE,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,EAAE,oBAAoB,EAAE,MAAM,mCAAmC,CAAC;AACzE,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAC7C,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AACjE,OAAO,EAAE,qBAAqB,EAAE,MAAM,oCAAoC,CAAC;AAC3E,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAEvD;;;;;GAKG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAiC;IAC/D,GAAG,oBAAoB;IACvB,GAAG,UAAU;IACb,GAAG,SAAS;IACZ,GAAG,gBAAgB;IACnB,GAAG,YAAY;IACf,GAAG,oBAAoB;IACvB,GAAG,MAAM;IACT,GAAG,gBAAgB;IACnB,GAAG,qBAAqB;IACxB,GAAG,WAAW;CACf,CAAC;AAEF,kBAAkB;AAClB,MAAM,CAAC,MAAM,eAAe,GAC1B,MAAM,CAAC,WAAW,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;AAEhE,8CAA8C;AAC9C,MAAM,UAAU,aAAa,CAAC,EAAU;IACtC,OAAO,eAAe,CAAC,EAAE,CAAC,CAAC;AAC7B,CAAC;AAED,+BAA+B;AAC/B,MAAM,UAAU,iBAAiB,CAC/B,MAAuB;IAEvB,OAAO,mBAAmB,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,CAAC;AAChE,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,iBAAiB,CAC/B,IAAY;IAEZ,OAAO,mBAAmB,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,MAAM,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;AAC/E,CAAC;AAED;4DAC4D;AAC5D,MAAM,UAAU,kBAAkB;IAChC,MAAM,GAAG,GAAG,IAAI,GAAG,EAAU,CAAC;IAC9B,KAAK,MAAM,CAAC,IAAI,mBAAmB,EAAE,CAAC;QACpC,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC,cAAc;YAAE,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QAC7C,IAAI,CAAC,CAAC,cAAc;YAAE,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC;IAClD,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,8BAA8B;IAC5C,MAAM,SAAS,GAAG,kBAAkB,EAAE,CAAC;IACvC,OAAO,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;SAC7C,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;SAClC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;AAC3C,CAAC"}
1
+ {"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/canonical/registry.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,EAAE,oBAAoB,EAAE,MAAM,mCAAmC,CAAC;AACzE,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AACrD,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACnD,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AACjE,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,EAAE,oBAAoB,EAAE,MAAM,mCAAmC,CAAC;AACzE,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAC7C,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AACjE,OAAO,EAAE,qBAAqB,EAAE,MAAM,oCAAoC,CAAC;AAC3E,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAEvD;;;;;GAKG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAiC;IAC/D,GAAG,oBAAoB;IACvB,GAAG,UAAU;IACb,GAAG,SAAS;IACZ,GAAG,gBAAgB;IACnB,GAAG,YAAY;IACf,GAAG,oBAAoB;IACvB,GAAG,MAAM;IACT,GAAG,gBAAgB;IACnB,GAAG,qBAAqB;IACxB,GAAG,WAAW;CACf,CAAC;AAEF,kBAAkB;AAClB,MAAM,CAAC,MAAM,eAAe,GAC1B,MAAM,CAAC,WAAW,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;AAEhE,8CAA8C;AAC9C,MAAM,UAAU,aAAa,CAAC,EAAU;IACtC,OAAO,eAAe,CAAC,EAAE,CAAC,CAAC;AAC7B,CAAC;AAED,+BAA+B;AAC/B,MAAM,UAAU,iBAAiB,CAC/B,MAAuB;IAEvB,OAAO,mBAAmB,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,CAAC;AAChE,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,iBAAiB,CAC/B,IAAY;IAEZ,OAAO,mBAAmB,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,MAAM,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;AAC/E,CAAC;AAED;4DAC4D;AAC5D,MAAM,UAAU,kBAAkB;IAChC,MAAM,GAAG,GAAG,IAAI,GAAG,EAAU,CAAC;IAC9B,KAAK,MAAM,CAAC,IAAI,mBAAmB,EAAE,CAAC;QACpC,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC,cAAc;YAAE,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QAC7C,IAAI,CAAC,CAAC,cAAc;YAAE,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC;IAClD,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,8BAA8B;IAC5C,MAAM,SAAS,GAAG,kBAAkB,EAAE,CAAC;IACvC,OAAO,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;SAC7C,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;SAClC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;AAC3C,CAAC","sourcesContent":["/**\n * The canonical-equation registry — the queryable index of the L-layer.\n * Seeded incrementally by `entries/*` modules (Tasks 2,4,5,9); this file owns\n * the assembled array, the id map, and the accessors.\n *\n * @module canonical/registry\n */\nimport type { CanonicalEquation, CanonicalDomain } from './canonical-equation.js';\nimport { BRIDGE_EQUATIONS } from '../bridges/index.js';\nimport { DIMENSIONAL_CLASSICS } from './entries/dimensional-classics.js';\nimport { RELATIVITY } from './entries/relativity.js';\nimport { MECHANICS } from './entries/mechanics.js';\nimport { ELECTROMAGNETISM } from './entries/electromagnetism.js';\nimport { FLUIDS_WAVES } from './entries/fluids-waves.js';\nimport { THERMO_NUCLEAR_COSMO } from './entries/thermo-nuclear-cosmo.js';\nimport { ATOMIC } from './entries/atomic.js';\nimport { CONDENSED_MATTER } from './entries/condensed-matter.js';\nimport { STATISTICAL_MECHANICS } from './entries/statistical-mechanics.js';\nimport { NONMONOMIAL } from './entries/nonmonomial.js';\n\n/**\n * Every canonical equation in the registry. The L1 entries are grouped by\n * physics domain (relativity / EM / thermo / atomic / …); the former\n * `l1-gravity-thermo` and `l1-quantum-em` batch files were folded into these\n * domain-named modules in the 2026-06-22 god-file split.\n */\nexport const CANONICAL_EQUATIONS: readonly CanonicalEquation[] = [\n ...DIMENSIONAL_CLASSICS,\n ...RELATIVITY,\n ...MECHANICS,\n ...ELECTROMAGNETISM,\n ...FLUIDS_WAVES,\n ...THERMO_NUCLEAR_COSMO,\n ...ATOMIC,\n ...CONDENSED_MATTER,\n ...STATISTICAL_MECHANICS,\n ...NONMONOMIAL,\n];\n\n/** Id → entry. */\nexport const CANONICAL_BY_ID: Readonly<Record<string, CanonicalEquation>> =\n Object.fromEntries(CANONICAL_EQUATIONS.map((e) => [e.id, e]));\n\n/** The entry with id `id`, or `undefined`. */\nexport function canonicalById(id: string): CanonicalEquation | undefined {\n return CANONICAL_BY_ID[id];\n}\n\n/** Every entry in `domain`. */\nexport function canonicalByDomain(\n domain: CanonicalDomain,\n): readonly CanonicalEquation[] {\n return CANONICAL_EQUATIONS.filter((e) => e.domain === domain);\n}\n\n/**\n * Canonical equations whose `dimensional.target.name` is `name`. Usually 0 or 1;\n * a length > 1 means the target quantity is shared (the caller must treat that as\n * ambiguous). Used by the identity-consequence surfacer to recover the source\n * equation behind a discovery candidate's endpoint.\n */\nexport function canonicalByTarget(\n name: string,\n): readonly CanonicalEquation[] {\n return CANONICAL_EQUATIONS.filter((e) => e.dimensional.target.name === name);\n}\n\n/** Catalog bridge ids (string form) that at least one canonical entry names as\n * a `partnerBridges` / `restatesBridge` correspondence. */\nexport function partneredBridgeIds(): Set<string> {\n const ids = new Set<string>();\n for (const e of CANONICAL_EQUATIONS) {\n for (const b of e.partnerBridges) ids.add(b);\n if (e.restatesBridge) ids.add(e.restatesBridge);\n }\n return ids;\n}\n\n/**\n * Catalog bridges with NO canonical correspondence partner yet — the explicit,\n * logged coverage gap (review finding F2). Sorted by numeric id. The count is\n * pinned by a test so shrinking it (adding a partner) is a deliberate act.\n */\nexport function bridgesWithoutCanonicalPartner(): string[] {\n const partnered = partneredBridgeIds();\n return BRIDGE_EQUATIONS.map((b) => String(b.id))\n .filter((id) => !partnered.has(id))\n .sort((a, b) => Number(a) - Number(b));\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"residual.js","sourceRoot":"","sources":["../../src/canonical/residual.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAKH;;;;;;GAMG;AACH,MAAM,UAAU,iBAAiB,CAAC,CAAoB;IACpD,IAAI,CAAC,CAAC,SAAS,KAAK,SAAS;QAAE,OAAO,SAAS,CAAC;IAChD,MAAM,MAAM,GAAa,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,WAAW,CAAC,MAAM,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC,WAAW,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC;IAC5G,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,MAAM,EAAE,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC;AAC9D,CAAC"}
1
+ {"version":3,"file":"residual.js","sourceRoot":"","sources":["../../src/canonical/residual.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAKH;;;;;;GAMG;AACH,MAAM,UAAU,iBAAiB,CAAC,CAAoB;IACpD,IAAI,CAAC,CAAC,SAAS,KAAK,SAAS;QAAE,OAAO,SAAS,CAAC;IAChD,MAAM,MAAM,GAAa,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,WAAW,CAAC,MAAM,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC,WAAW,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC;IAC5G,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,MAAM,EAAE,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC;AAC9D,CAAC","sourcesContent":["/**\n * Residual form of a canonical equation: `target − scalarAst`.\n *\n * A canonical entry stores the RIGHT-HAND SIDE of one target (`scalarAst`), for example `m·a` for\n * the target force. A claim, as a user or the benchmark writes it, is a RELATION: `F − m·a`. The\n * structural key of a residual and of a right-hand side can never be equal, so a structural search\n * that compares a claim with `scalarAst` never matches. The criterion 3 study measured this: 0 of\n * 11,125 query × record pairs (pre-registration Amendment 8). Putting the canonical entry in residual\n * form makes both sides the same kind of object.\n *\n * Symbol names are not unified here. The structural key renames every dimensioned symbol to its\n * dimension, so `F` and `force` compare equal there. Symbol overlap still sees the two naming\n * conventions (`k_B` against `boltzmann-constant`), and no alias map bridges them.\n *\n * @module canonical/residual\n * @internal\n */\n\nimport type { ExprNode } from '../dimensional/ast-types.js';\nimport type { CanonicalEquation } from './canonical-equation.js';\n\n/**\n * The residual `target − scalarAst` of a canonical entry, or `undefined` when the entry has no\n * `scalarAst`. The target becomes a symbol with its name and dimension; the right-hand side is the\n * entry's own `scalarAst`, not a copy.\n *\n * @internal\n */\nexport function canonicalResidual(e: CanonicalEquation): ExprNode | undefined {\n if (e.scalarAst === undefined) return undefined;\n const target: ExprNode = { kind: 'symbol', name: e.dimensional.target.name, dim: e.dimensional.target.dim };\n return { kind: 'op', op: '-', args: [target, e.scalarAst] };\n}\n"]}
@@ -9,7 +9,13 @@ import type { CanonicalEquation } from './canonical-equation.js';
9
9
  import type { PhysicalLaw, TensorConfig } from '../core/types.js';
10
10
  import { UniversalTensor } from '../core/tensor.js';
11
11
  /** A `TensorConfig` whose axes cover every regime the canonical registry uses,
12
- * so `seedCanonicalLaws` never trips axis-membership validation. */
12
+ * so `seedCanonicalLaws` never trips axis-membership validation. The scale,
13
+ * force and symmetry lists are the tensor's own unions (`PhysicalScale`,
14
+ * `Force`, `Symmetry`), written here because the canonical layer may not
15
+ * import the composition layer's axis registry (`layer:check`);
16
+ * `tests/composition/axes.test.ts` compares them to that registry so the two
17
+ * cannot drift apart. The information measures are the tensor's camelCase
18
+ * vocabulary (`InformationMeasure`). */
13
19
  export declare const CANONICAL_TENSOR_CONFIG: TensorConfig;
14
20
  /** Map a canonical entry onto the `PhysicalLaw` shape the L-layer consumes.
15
21
  * Canonical laws are ground truth → `confidence: 1`. Regime axes map to the
@@ -1 +1 @@
1
- {"version":3,"file":"seed-l-layer.d.ts","sourceRoot":"","sources":["../../src/canonical/seed-l-layer.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AACjE,OAAO,KAAK,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAClE,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAGpD;qEACqE;AACrE,eAAO,MAAM,uBAAuB,EAAE,YAMrC,CAAC;AAEF;;mFAEmF;AACnF,wBAAgB,cAAc,CAAC,EAAE,EAAE,iBAAiB,GAAG,WAAW,CAejE;AAED,iFAAiF;AACjF,wBAAgB,iBAAiB,CAAC,CAAC,EAAE,eAAe,GAAG,MAAM,CAM5D"}
1
+ {"version":3,"file":"seed-l-layer.d.ts","sourceRoot":"","sources":["../../src/canonical/seed-l-layer.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AACjE,OAAO,KAAK,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAClE,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAGpD;;;;;;;yCAOyC;AACzC,eAAO,MAAM,uBAAuB,EAAE,YAMrC,CAAC;AAEF;;mFAEmF;AACnF,wBAAgB,cAAc,CAAC,EAAE,EAAE,iBAAiB,GAAG,WAAW,CAejE;AAED,iFAAiF;AACjF,wBAAgB,iBAAiB,CAAC,CAAC,EAAE,eAAe,GAAG,MAAM,CAM5D"}
@@ -1,6 +1,12 @@
1
1
  import { CANONICAL_EQUATIONS } from './registry.js';
2
2
  /** A `TensorConfig` whose axes cover every regime the canonical registry uses,
3
- * so `seedCanonicalLaws` never trips axis-membership validation. */
3
+ * so `seedCanonicalLaws` never trips axis-membership validation. The scale,
4
+ * force and symmetry lists are the tensor's own unions (`PhysicalScale`,
5
+ * `Force`, `Symmetry`), written here because the canonical layer may not
6
+ * import the composition layer's axis registry (`layer:check`);
7
+ * `tests/composition/axes.test.ts` compares them to that registry so the two
8
+ * cannot drift apart. The information measures are the tensor's camelCase
9
+ * vocabulary (`InformationMeasure`). */
4
10
  export const CANONICAL_TENSOR_CONFIG = {
5
11
  rank: 6,
6
12
  scales: ['quantum', 'mesoscopic', 'classical', 'cosmological'],
@@ -1 +1 @@
1
- {"version":3,"file":"seed-l-layer.js","sourceRoot":"","sources":["../../src/canonical/seed-l-layer.ts"],"names":[],"mappings":"AAUA,OAAO,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AAEpD;qEACqE;AACrE,MAAM,CAAC,MAAM,uBAAuB,GAAiB;IACnD,IAAI,EAAE,CAAC;IACP,MAAM,EAAE,CAAC,SAAS,EAAE,YAAY,EAAE,WAAW,EAAE,cAAc,CAAC;IAC9D,MAAM,EAAE,CAAC,eAAe,EAAE,iBAAiB,EAAE,MAAM,EAAE,QAAQ,EAAE,UAAU,CAAC;IAC1E,UAAU,EAAE,CAAC,UAAU,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,UAAU,CAAC;IAClE,mBAAmB,EAAE,CAAC,YAAY,EAAE,SAAS,EAAE,YAAY,EAAE,gBAAgB,CAAC;CAC/E,CAAC;AAEF;;mFAEmF;AACnF,MAAM,UAAU,cAAc,CAAC,EAAqB;IAClD,MAAM,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC;IACpB,OAAO;QACL,EAAE,EAAE,EAAE,CAAC,EAAE;QACT,IAAI,EAAE,EAAE,CAAC,IAAI;QACb,QAAQ,EAAE,EAAE,CAAC,aAAa;QAC1B,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE;QAChC,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE;QAChC,UAAU,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE;QAC1C,UAAU,EAAE,CAAC;QACb,mBAAmB,EAAE,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,SAAS;QAChE,UAAU,EAAE,CAAC,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS;QACjE,UAAU,EAAE,CAAC,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,SAAS;QAC/D,UAAU,EAAE,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC;KAC/B,CAAC;AACJ,CAAC;AAED,iFAAiF;AACjF,MAAM,UAAU,iBAAiB,CAAC,CAAkB;IAClD,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,KAAK,MAAM,EAAE,IAAI,mBAAmB,EAAE,CAAC;QACrC,IAAI,CAAC,CAAC,MAAM,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC;YAAE,KAAK,EAAE,CAAC;IAC5C,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC"}
1
+ {"version":3,"file":"seed-l-layer.js","sourceRoot":"","sources":["../../src/canonical/seed-l-layer.ts"],"names":[],"mappings":"AAUA,OAAO,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AAEpD;;;;;;;yCAOyC;AACzC,MAAM,CAAC,MAAM,uBAAuB,GAAiB;IACnD,IAAI,EAAE,CAAC;IACP,MAAM,EAAE,CAAC,SAAS,EAAE,YAAY,EAAE,WAAW,EAAE,cAAc,CAAC;IAC9D,MAAM,EAAE,CAAC,eAAe,EAAE,iBAAiB,EAAE,MAAM,EAAE,QAAQ,EAAE,UAAU,CAAC;IAC1E,UAAU,EAAE,CAAC,UAAU,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,UAAU,CAAC;IAClE,mBAAmB,EAAE,CAAC,YAAY,EAAE,SAAS,EAAE,YAAY,EAAE,gBAAgB,CAAC;CAC/E,CAAC;AAEF;;mFAEmF;AACnF,MAAM,UAAU,cAAc,CAAC,EAAqB;IAClD,MAAM,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC;IACpB,OAAO;QACL,EAAE,EAAE,EAAE,CAAC,EAAE;QACT,IAAI,EAAE,EAAE,CAAC,IAAI;QACb,QAAQ,EAAE,EAAE,CAAC,aAAa;QAC1B,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE;QAChC,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE;QAChC,UAAU,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE;QAC1C,UAAU,EAAE,CAAC;QACb,mBAAmB,EAAE,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,SAAS;QAChE,UAAU,EAAE,CAAC,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS;QACjE,UAAU,EAAE,CAAC,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,SAAS;QAC/D,UAAU,EAAE,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC;KAC/B,CAAC;AACJ,CAAC;AAED,iFAAiF;AACjF,MAAM,UAAU,iBAAiB,CAAC,CAAkB;IAClD,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,KAAK,MAAM,EAAE,IAAI,mBAAmB,EAAE,CAAC;QACrC,IAAI,CAAC,CAAC,MAAM,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC;YAAE,KAAK,EAAE,CAAC;IAC5C,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC","sourcesContent":["/**\n * Seed the canonical-equation registry into the tensor's L-layer (Π = L + B + E)\n * via the existing `addLaw` path. `canonicalToLaw` maps a registry entry onto the\n * `PhysicalLaw` shape; `seedCanonicalLaws` adds them all and returns the count.\n *\n * @module canonical/seed-l-layer\n */\nimport type { CanonicalEquation } from './canonical-equation.js';\nimport type { PhysicalLaw, TensorConfig } from '../core/types.js';\nimport { UniversalTensor } from '../core/tensor.js';\nimport { CANONICAL_EQUATIONS } from './registry.js';\n\n/** A `TensorConfig` whose axes cover every regime the canonical registry uses,\n * so `seedCanonicalLaws` never trips axis-membership validation. The scale,\n * force and symmetry lists are the tensor's own unions (`PhysicalScale`,\n * `Force`, `Symmetry`), written here because the canonical layer may not\n * import the composition layer's axis registry (`layer:check`);\n * `tests/composition/axes.test.ts` compares them to that registry so the two\n * cannot drift apart. The information measures are the tensor's camelCase\n * vocabulary (`InformationMeasure`). */\nexport const CANONICAL_TENSOR_CONFIG: TensorConfig = {\n rank: 6,\n scales: ['quantum', 'mesoscopic', 'classical', 'cosmological'],\n forces: ['gravitational', 'electromagnetic', 'weak', 'strong', 'emergent'],\n symmetries: ['poincare', 'gauge', 'conformal', 'susy', 'emergent'],\n informationMeasures: ['vonNeumann', 'shannon', 'kolmogorov', 'quantumDiscord'],\n};\n\n/** Map a canonical entry onto the `PhysicalLaw` shape the L-layer consumes.\n * Canonical laws are ground truth → `confidence: 1`. Regime axes map to the\n * law's single-valued axis arrays (empty when the regime leaves an axis open). */\nexport function canonicalToLaw(ce: CanonicalEquation): PhysicalLaw {\n const r = ce.regime;\n return {\n id: ce.id,\n name: ce.name,\n equation: ce.formula_latex,\n scales: r.scale ? [r.scale] : [],\n forces: r.force ? [r.force] : [],\n symmetries: r.symmetry ? [r.symmetry] : [],\n confidence: 1,\n informationMeasures: r.information ? [r.information] : undefined,\n dimensions: r.dimension !== undefined ? [r.dimension] : undefined,\n topologies: r.topology !== undefined ? [r.topology] : undefined,\n references: [...ce.references],\n };\n}\n\n/** Seed every canonical equation into `t`'s L-layer. Returns the count added. */\nexport function seedCanonicalLaws(t: UniversalTensor): number {\n let added = 0;\n for (const ce of CANONICAL_EQUATIONS) {\n if (t.addLaw(canonicalToLaw(ce))) added++;\n }\n return added;\n}\n"]}
@@ -70,6 +70,27 @@ export interface ChainProvisional {
70
70
  }
71
71
  /** Decision (a) for one chain. @internal */
72
72
  export type ChainClassification = ChainConfirmation | ChainRestatement | ChainProvisional;
73
+ /**
74
+ * A bridge RHS reduced to its comparison-ready, canonical-invariant form: its
75
+ * validated dimension (`null` when validation failed) and its normal-form
76
+ * hash. Both depend only on the bridge.
77
+ *
78
+ * @internal
79
+ */
80
+ export interface BridgeShape {
81
+ readonly rhs: ExprNode;
82
+ readonly dim: Dimension | null;
83
+ readonly normal: string;
84
+ }
85
+ /**
86
+ * Every bridge RHS, validated and normal-formed ONCE for the process.
87
+ * `BRIDGE_RHS_BY_ID` is static, so the table is computed on first use and
88
+ * kept; a chain classification and a linkage scan both read it instead of
89
+ * re-validating every entry per call (9.0.0 audit §4 Low).
90
+ *
91
+ * @internal
92
+ */
93
+ export declare function bridgeShapes(): ReadonlyMap<number, BridgeShape>;
73
94
  /**
74
95
  * The structural classifier.
75
96
  *
@@ -1 +1 @@
1
- {"version":3,"file":"structural.d.ts","sourceRoot":"","sources":["../../src/canonical/structural.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AACH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAC;AAC5D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AAMzD,yEAAyE;AACzE,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;IACxB,QAAQ,CAAC,OAAO,EAAE,SAAS,CAAC;IAC5B,kEAAkE;IAClE,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC;IACzB,qEAAqE;IACrE,QAAQ,CAAC,QAAQ,EAAE,SAAS,GAAG,IAAI,CAAC;IACpC,mEAAmE;IACnE,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,+DAA+D;IAC/D,QAAQ,CAAC,cAAc,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5C,+EAA+E;IAC/E,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;CAC3B;AAED,iFAAiF;AACjF,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,eAAe,EAAE,OAAO,CAAC;IAClC;;;;OAIG;IACH,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;CAC5B;AAED,mFAAmF;AACnF,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,IAAI,EAAE,cAAc,CAAC;IAC9B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;CACrC;AAED,gFAAgF;AAChF,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,IAAI,EAAE,aAAa,CAAC;IAC7B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;CACrC;AAED;;;;GAIG;AACH,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,IAAI,EAAE,aAAa,CAAC;IAC7B,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;CACrC;AAED,4CAA4C;AAC5C,MAAM,MAAM,mBAAmB,GAAG,iBAAiB,GAAG,gBAAgB,GAAG,gBAAgB,CAAC;AAwG1F;;;;;;;;GAQG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,cAAc,GAAG,kBAAkB,CAAC;AAC5E,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,MAAM,EAAE,GAAG,mBAAmB,CAAC"}
1
+ {"version":3,"file":"structural.d.ts","sourceRoot":"","sources":["../../src/canonical/structural.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AACH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAC;AAC5D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AAMzD,yEAAyE;AACzE,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;IACxB,QAAQ,CAAC,OAAO,EAAE,SAAS,CAAC;IAC5B,kEAAkE;IAClE,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC;IACzB,qEAAqE;IACrE,QAAQ,CAAC,QAAQ,EAAE,SAAS,GAAG,IAAI,CAAC;IACpC,mEAAmE;IACnE,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,+DAA+D;IAC/D,QAAQ,CAAC,cAAc,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5C,+EAA+E;IAC/E,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;CAC3B;AAED,iFAAiF;AACjF,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,eAAe,EAAE,OAAO,CAAC;IAClC;;;;OAIG;IACH,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;CAC5B;AAED,mFAAmF;AACnF,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,IAAI,EAAE,cAAc,CAAC;IAC9B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;CACrC;AAED,gFAAgF;AAChF,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,IAAI,EAAE,aAAa,CAAC;IAC7B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;CACrC;AAED;;;;GAIG;AACH,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,IAAI,EAAE,aAAa,CAAC;IAC7B,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;CACrC;AAED,4CAA4C;AAC5C,MAAM,MAAM,mBAAmB,GAAG,iBAAiB,GAAG,gBAAgB,GAAG,gBAAgB,CAAC;AAiC1F;;;;;;GAMG;AACH,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,GAAG,EAAE,QAAQ,CAAC;IACvB,QAAQ,CAAC,GAAG,EAAE,SAAS,GAAG,IAAI,CAAC;IAC/B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB;AAID;;;;;;;GAOG;AACH,wBAAgB,YAAY,IAAI,WAAW,CAAC,MAAM,EAAE,WAAW,CAAC,CAU/D;AAyED;;;;;;;;GAQG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,cAAc,GAAG,kBAAkB,CAAC;AAC5E,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,MAAM,EAAE,GAAG,mBAAmB,CAAC"}
@@ -27,6 +27,26 @@ function comparePair(pair) {
27
27
  function bridgeRank(id) {
28
28
  return /^\d+$/.test(id) ? Number(id) : Number.POSITIVE_INFINITY;
29
29
  }
30
+ let bridgeShapeTable;
31
+ /**
32
+ * Every bridge RHS, validated and normal-formed ONCE for the process.
33
+ * `BRIDGE_RHS_BY_ID` is static, so the table is computed on first use and
34
+ * kept; a chain classification and a linkage scan both read it instead of
35
+ * re-validating every entry per call (9.0.0 audit §4 Low).
36
+ *
37
+ * @internal
38
+ */
39
+ export function bridgeShapes() {
40
+ if (bridgeShapeTable === undefined) {
41
+ const table = new Map();
42
+ for (const [id, rhs] of BRIDGE_RHS_BY_ID) {
43
+ const v = validate(rhs);
44
+ table.set(id, { rhs, dim: v.ok ? v.inferredDimension : null, normal: normalForm(rhs) });
45
+ }
46
+ bridgeShapeTable = table;
47
+ }
48
+ return bridgeShapeTable;
49
+ }
30
50
  /**
31
51
  * Provisional id for a chain. The edge ids stay in the order the caller
32
52
  * passed, which is the chain order. They are not sorted.
@@ -75,14 +95,14 @@ function classifyChain(expr, edgeIds) {
75
95
  };
76
96
  }
77
97
  const confirmations = [];
78
- for (const [id, rhs] of BRIDGE_RHS_BY_ID) {
79
- const bridge = validate(rhs);
98
+ for (const [id, bridge] of bridgeShapes()) {
80
99
  const relation = comparePair({
81
100
  left: expr,
82
101
  leftDim,
83
102
  leftNormal,
84
- right: rhs,
85
- rightDim: bridge.ok ? bridge.inferredDimension : null,
103
+ right: bridge.rhs,
104
+ rightDim: bridge.dim,
105
+ rightNormal: bridge.normal,
86
106
  restatesBridge: undefined,
87
107
  bridgeId: String(id),
88
108
  });
@@ -1 +1 @@
1
- {"version":3,"file":"structural.js","sourceRoot":"","sources":["../../src/canonical/structural.ts"],"names":[],"mappings":"AAoBA,OAAO,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAC;AACvD,OAAO,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAC9D,OAAO,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AACpD,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AA4D9C,MAAM,QAAQ,GAAG,CAAC,CAAY,EAAE,CAAY,EAAW,EAAE,CACvD,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;IACX,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;IACX,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;IACX,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;IACX,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,KAAK;IACnB,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;IACX,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAEd,SAAS,gBAAgB,CAAC,KAAgC;IACxD,OAAO,CAAC,CAAC,MAAM,IAAI,KAAK,CAAC,IAAI,UAAU,IAAI,KAAK,CAAC;AACnD,CAAC;AAED,SAAS,WAAW,CAAC,IAAoB;IACvC,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,IAAI,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC5D,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,IAAI,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC/D,MAAM,eAAe,GAAG,UAAU,KAAK,WAAW,CAAC;IACnD,OAAO;QACL,QAAQ,EAAE,IAAI,CAAC,QAAQ,IAAI,IAAI,IAAI,QAAQ,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,OAAO,CAAC;QACxE,eAAe;QACf,QAAQ,EACN,eAAe;YACf,IAAI,CAAC,cAAc,KAAK,SAAS;YACjC,IAAI,CAAC,cAAc,KAAK,IAAI,CAAC,QAAQ;KACxC,CAAC;AACJ,CAAC;AAED,SAAS,UAAU,CAAC,EAAU;IAC5B,OAAO,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,iBAAiB,CAAC;AAClE,CAAC;AAED;;;GAGG;AACH,SAAS,kBAAkB,CAAC,OAA0B;IACpD,OAAO,SAAS,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;AACtC,CAAC;AAED,SAAS,aAAa,CAAC,IAAc,EAAE,OAA0B;IAC/D,MAAM,OAAO,GAAG,CAAC,GAAG,OAAO,CAAC,CAAC;IAC7B,MAAM,SAAS,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;IACjC,MAAM,OAAO,GAAG,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,iBAAiB,CAAC,CAAC,CAAC,IAAI,CAAC;IAClE,IAAI,OAAO,IAAI,IAAI,EAAE,CAAC;QACpB,OAAO,EAAE,IAAI,EAAE,aAAa,EAAE,EAAE,EAAE,kBAAkB,CAAC,OAAO,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC;IACpF,CAAC;IACD,MAAM,UAAU,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC;IAEpC,MAAM,YAAY,GAAsD,EAAE,CAAC;IAC3E,KAAK,MAAM,EAAE,IAAI,mBAAmB,EAAE,CAAC;QACrC,IAAI,EAAE,CAAC,SAAS,KAAK,SAAS,IAAI,EAAE,CAAC,cAAc,KAAK,SAAS;YAAE,SAAS;QAC5E,MAAM,QAAQ,GAAG,WAAW,CAAC;YAC3B,IAAI,EAAE,IAAI;YACV,OAAO;YACP,UAAU;YACV,KAAK,EAAE,EAAE,CAAC,SAAS;YACnB,QAAQ,EAAE,EAAE,CAAC,WAAW,CAAC,MAAM,CAAC,GAAG;YACnC,cAAc,EAAE,EAAE,CAAC,cAAc;YACjC,QAAQ,EAAE,EAAE,CAAC,cAAc;SAC5B,CAAC,CAAC;QACH,IAAI,QAAQ,CAAC,QAAQ,IAAI,QAAQ,CAAC,QAAQ,EAAE,CAAC;YAC3C,YAAY,CAAC,IAAI,CAAC,EAAE,WAAW,EAAE,EAAE,CAAC,EAAE,EAAE,cAAc,EAAE,EAAE,CAAC,cAAc,EAAE,CAAC,CAAC;QAC/E,CAAC;IACH,CAAC;IACD,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;QACzB,MAAM,QAAQ,GAAG,UAAU,CAAC,CAAC,CAAC,cAAc,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC;QAC7E,IAAI,QAAQ,KAAK,CAAC;YAAE,OAAO,QAAQ,CAAC;QACpC,OAAO,CAAC,CAAC,WAAW,GAAG,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,GAAG,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACpF,CAAC,CAAC,CAAC;IACH,MAAM,WAAW,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC;IACpC,IAAI,WAAW,KAAK,SAAS,EAAE,CAAC;QAC9B,OAAO;YACL,IAAI,EAAE,aAAa;YACnB,WAAW,EAAE,WAAW,CAAC,WAAW;YACpC,cAAc,EAAE,WAAW,CAAC,cAAc;YAC1C,OAAO,EAAE,OAAO;SACjB,CAAC;IACJ,CAAC;IAED,MAAM,aAAa,GAAa,EAAE,CAAC;IACnC,KAAK,MAAM,CAAC,EAAE,EAAE,GAAG,CAAC,IAAI,gBAAgB,EAAE,CAAC;QACzC,MAAM,MAAM,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC;QAC7B,MAAM,QAAQ,GAAG,WAAW,CAAC;YAC3B,IAAI,EAAE,IAAI;YACV,OAAO;YACP,UAAU;YACV,KAAK,EAAE,GAAG;YACV,QAAQ,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC,CAAC,IAAI;YACrD,cAAc,EAAE,SAAS;YACzB,QAAQ,EAAE,MAAM,CAAC,EAAE,CAAC;SACrB,CAAC,CAAC;QACH,IAAI,QAAQ,CAAC,eAAe,IAAI,QAAQ,CAAC,QAAQ;YAAE,aAAa,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC5E,CAAC;IACD,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IACpC,MAAM,SAAS,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC;IACnC,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;QAC5B,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,SAAS,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC;IAC/D,CAAC;IAED,OAAO,EAAE,IAAI,EAAE,aAAa,EAAE,EAAE,EAAE,kBAAkB,CAAC,OAAO,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC;AACpF,CAAC;AAaD,MAAM,UAAU,iBAAiB,CAC/B,UAAqC,EACrC,OAA2B;IAE3B,IAAI,gBAAgB,CAAC,UAAU,CAAC;QAAE,OAAO,WAAW,CAAC,UAAU,CAAC,CAAC;IACjE,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;QAC1B,MAAM,IAAI,SAAS,CAAC,uDAAuD,CAAC,CAAC;IAC/E,CAAC;IACD,OAAO,aAAa,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;AAC5C,CAAC"}
1
+ {"version":3,"file":"structural.js","sourceRoot":"","sources":["../../src/canonical/structural.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Structural half of a bridge↔canonical comparison, shared with the chain\n * pipeline. Same dimension, `normalForm`, and the F4 `restatesBridge` guard.\n *\n * This module does not import `composition/expr-eval.ts`. Numerical agreement\n * is not a result here and is not a confirmation. `linkage.ts` calls\n * {@link classifyStructure} and then runs its own numerical recovery.\n *\n * A chain whose normal form matches a catalog right-hand side the registry\n * did not pre-declare confirms that catalog id. The call writes nothing.\n * A chain that matches a canonical equation the registry pre-declared with\n * `restatesBridge` is a restatement. Any other chain receives a provisional\n * id, `chain-` followed by the ordered edge ids. That id is not a catalog\n * id. It enters `BRIDGE_EQUATIONS` only after a vendored PhysJS proof, which\n * this function does not record.\n *\n * @module canonical/structural\n */\nimport type { ExprNode } from '../dimensional/validator.js';\nimport type { Dimension } from '../dimensional/types.js';\nimport { validate } from '../dimensional/validator.js';\nimport { BRIDGE_RHS_BY_ID } from '../bridges/rhs-registry.js';\nimport { CANONICAL_EQUATIONS } from './registry.js';\nimport { normalForm } from './normal-form.js';\n\n/** One side of a structural comparison, plus the F4 inputs. @internal */\nexport interface StructuralPair {\n readonly left: ExprNode;\n readonly leftDim: Dimension;\n /** Precomputed `normalForm(left)`. Computed here when omitted. */\n readonly leftNormal?: string;\n readonly right: ExprNode;\n /** Inferred dimension of `right`, or null when validation failed. */\n readonly rightDim: Dimension | null;\n /** Precomputed `normalForm(right)`. Computed here when omitted. */\n readonly rightNormal?: string;\n /** The canonical entry's `restatesBridge`, when it has one. */\n readonly restatesBridge: string | undefined;\n /** The bridge id this comparison is against, as `restatesBridge` spells it. */\n readonly bridgeId: string;\n}\n\n/** Dimension, normal form, and the F4 guard. No numerical recovery. @internal */\nexport interface StructuralRelation {\n readonly dimMatch: boolean;\n readonly structuralMatch: boolean;\n /**\n * True only when the normal forms match and `restatesBridge` names\n * `bridgeId`. A structural match the registry did not pre-declare is\n * not a restatement.\n */\n readonly restates: boolean;\n}\n\n/** A chain matched an existing catalog equation. Nothing was written. @internal */\nexport interface ChainConfirmation {\n readonly kind: 'confirmation';\n readonly catalogId: number;\n readonly edgeIds: readonly string[];\n}\n\n/** A chain matches a canonical equation the registry pre-declared. @internal */\nexport interface ChainRestatement {\n readonly kind: 'restatement';\n readonly canonicalId: string;\n readonly restatesBridge: string;\n readonly edgeIds: readonly string[];\n}\n\n/**\n * A chain that is neither a catalog confirmation nor a pre-declared\n * restatement. `id` is `chain-` plus the edge ids in chain order.\n * @internal\n */\nexport interface ChainProvisional {\n readonly kind: 'provisional';\n readonly id: string;\n readonly edgeIds: readonly string[];\n}\n\n/** Decision (a) for one chain. @internal */\nexport type ChainClassification = ChainConfirmation | ChainRestatement | ChainProvisional;\n\nconst dimEqual = (a: Dimension, b: Dimension): boolean =>\n a.L === b.L &&\n a.M === b.M &&\n a.T === b.T &&\n a.I === b.I &&\n a.Theta === b.Theta &&\n a.N === b.N &&\n a.J === b.J;\n\nfunction isStructuralPair(value: ExprNode | StructuralPair): value is StructuralPair {\n return !('kind' in value) && 'bridgeId' in value;\n}\n\nfunction comparePair(pair: StructuralPair): StructuralRelation {\n const leftNormal = pair.leftNormal ?? normalForm(pair.left);\n const rightNormal = pair.rightNormal ?? normalForm(pair.right);\n const structuralMatch = leftNormal === rightNormal;\n return {\n dimMatch: pair.rightDim != null && dimEqual(pair.rightDim, pair.leftDim),\n structuralMatch,\n restates:\n structuralMatch &&\n pair.restatesBridge !== undefined &&\n pair.restatesBridge === pair.bridgeId,\n };\n}\n\nfunction bridgeRank(id: string): number {\n return /^\\d+$/.test(id) ? Number(id) : Number.POSITIVE_INFINITY;\n}\n\n/**\n * A bridge RHS reduced to its comparison-ready, canonical-invariant form: its\n * validated dimension (`null` when validation failed) and its normal-form\n * hash. Both depend only on the bridge.\n *\n * @internal\n */\nexport interface BridgeShape {\n readonly rhs: ExprNode;\n readonly dim: Dimension | null;\n readonly normal: string;\n}\n\nlet bridgeShapeTable: ReadonlyMap<number, BridgeShape> | undefined;\n\n/**\n * Every bridge RHS, validated and normal-formed ONCE for the process.\n * `BRIDGE_RHS_BY_ID` is static, so the table is computed on first use and\n * kept; a chain classification and a linkage scan both read it instead of\n * re-validating every entry per call (9.0.0 audit §4 Low).\n *\n * @internal\n */\nexport function bridgeShapes(): ReadonlyMap<number, BridgeShape> {\n if (bridgeShapeTable === undefined) {\n const table = new Map<number, BridgeShape>();\n for (const [id, rhs] of BRIDGE_RHS_BY_ID) {\n const v = validate(rhs);\n table.set(id, { rhs, dim: v.ok ? v.inferredDimension : null, normal: normalForm(rhs) });\n }\n bridgeShapeTable = table;\n }\n return bridgeShapeTable;\n}\n\n/**\n * Provisional id for a chain. The edge ids stay in the order the caller\n * passed, which is the chain order. They are not sorted.\n */\nfunction provisionalChainId(edgeIds: readonly string[]): string {\n return `chain-${edgeIds.join('-')}`;\n}\n\nfunction classifyChain(expr: ExprNode, edgeIds: readonly string[]): ChainClassification {\n const ordered = [...edgeIds];\n const validated = validate(expr);\n const leftDim = validated.ok ? validated.inferredDimension : null;\n if (leftDim == null) {\n return { kind: 'provisional', id: provisionalChainId(ordered), edgeIds: ordered };\n }\n const leftNormal = normalForm(expr);\n\n const restatements: { canonicalId: string; restatesBridge: string }[] = [];\n for (const ce of CANONICAL_EQUATIONS) {\n if (ce.scalarAst === undefined || ce.restatesBridge === undefined) continue;\n const relation = comparePair({\n left: expr,\n leftDim,\n leftNormal,\n right: ce.scalarAst,\n rightDim: ce.dimensional.target.dim,\n restatesBridge: ce.restatesBridge,\n bridgeId: ce.restatesBridge,\n });\n if (relation.restates && relation.dimMatch) {\n restatements.push({ canonicalId: ce.id, restatesBridge: ce.restatesBridge });\n }\n }\n restatements.sort((a, b) => {\n const byBridge = bridgeRank(a.restatesBridge) - bridgeRank(b.restatesBridge);\n if (byBridge !== 0) return byBridge;\n return a.canonicalId < b.canonicalId ? -1 : a.canonicalId > b.canonicalId ? 1 : 0;\n });\n const restatement = restatements[0];\n if (restatement !== undefined) {\n return {\n kind: 'restatement',\n canonicalId: restatement.canonicalId,\n restatesBridge: restatement.restatesBridge,\n edgeIds: ordered,\n };\n }\n\n const confirmations: number[] = [];\n for (const [id, bridge] of bridgeShapes()) {\n const relation = comparePair({\n left: expr,\n leftDim,\n leftNormal,\n right: bridge.rhs,\n rightDim: bridge.dim,\n rightNormal: bridge.normal,\n restatesBridge: undefined,\n bridgeId: String(id),\n });\n if (relation.structuralMatch && relation.dimMatch) confirmations.push(id);\n }\n confirmations.sort((a, b) => a - b);\n const catalogId = confirmations[0];\n if (catalogId !== undefined) {\n return { kind: 'confirmation', catalogId, edgeIds: ordered };\n }\n\n return { kind: 'provisional', id: provisionalChainId(ordered), edgeIds: ordered };\n}\n\n/**\n * The structural classifier.\n *\n * A {@link StructuralPair} returns the dimension, normal-form, and F4\n * result `classifyLinkage` uses. An expression plus the chain's ordered\n * edge ids returns the chain classification. Both calls are this function.\n *\n * @internal\n */\nexport function classifyStructure(pair: StructuralPair): StructuralRelation;\nexport function classifyStructure(expr: ExprNode, edgeIds: readonly string[]): ChainClassification;\nexport function classifyStructure(\n exprOrPair: ExprNode | StructuralPair,\n edgeIds?: readonly string[],\n): StructuralRelation | ChainClassification {\n if (isStructuralPair(exprOrPair)) return comparePair(exprOrPair);\n if (edgeIds === undefined) {\n throw new TypeError('classifyStructure: a chain needs its ordered edge ids');\n }\n return classifyChain(exprOrPair, edgeIds);\n}\n"]}
@@ -201,10 +201,10 @@ export const BROWNIAN_SPHERE_CASE = {
201
201
  unit: '',
202
202
  meaning: "the memory force's own share: MSD_H against the Ornstein–Uhlenbeck MSD with the same τ_p (added mass, no memory)",
203
203
  },
204
- { key: 'D_parallel_m2_per_s', symbol: 'D_∥', unit: 'm^2/s', meaning: 'D beside the wall, parallel to it: D·(Faxén series in a/h); null without h_m' },
205
- { key: 'D_perp_m2_per_s', symbol: 'D_⊥', unit: 'm^2/s', meaning: 'D normal to the wall: D/λ, λ from Brenner\'s exact series; null without h_m' },
206
- { key: 'MSD_wall_m2', symbol: '⟨|Δr|²⟩_w', unit: 'm^2', meaning: '2t(d_∥ D_∥ + d_⊥ D_⊥): the tracked horizontal axes parallel to the wall, a third one normal to it; null without h_m' },
207
- { key: 'wall_deviation', symbol: 'MSD/MSD_w − 1', unit: '', meaning: signedRelativeDifference('unbounded-fluid MSD', 'wall-corrected one', 'null without h_m') },
204
+ { key: 'D_parallel_m2_per_s', symbol: 'D_∥', unit: 'm^2/s', meaning: 'D beside the wall, parallel to it: D·(Faxén series in a/h); not defined without h_m' },
205
+ { key: 'D_perp_m2_per_s', symbol: 'D_⊥', unit: 'm^2/s', meaning: 'D normal to the wall: D/λ, λ from Brenner\'s exact series; not defined without h_m' },
206
+ { key: 'MSD_wall_m2', symbol: '⟨|Δr|²⟩_w', unit: 'm^2', meaning: '2t(d_∥ D_∥ + d_⊥ D_⊥): the tracked horizontal axes parallel to the wall, a third one normal to it; not defined without h_m' },
207
+ { key: 'wall_deviation', symbol: 'MSD/MSD_w − 1', unit: '', meaning: signedRelativeDifference('unbounded-fluid MSD', 'wall-corrected one', 'not defined without h_m') },
208
208
  ],
209
209
  comparison: {
210
210
  reference: 'the parent Langevin model (bare mass, white noise; it has neither added mass nor hydrodynamic memory)',
@@ -1 +1 @@
1
- {"version":3,"file":"brownian-sphere.js","sourceRoot":"","sources":["../../src/cases/brownian-sphere.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"brownian-sphere.js","sourceRoot":"","sources":["../../src/cases/brownian-sphere.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Applied case: a Brownian sphere tracked in a fluid — the diffusion\n * coefficient and mean-square displacement from the particle's radius and the\n * fluid's viscosity and temperature, with the regime checks that make the\n * Stokes–Einstein scalar applicable.\n *\n * The atlas bridge `ab-stokes-einstein` derives D = k_BT/(6πηa) from the\n * Langevin model and Stokes drag, with Re ≤ 0.1 and m/(γt) ≤ 0.01. This case\n * evaluates it for a named geometry (radius, or diameter through an exact\n * alternate) and fluid, computes Re from the particle's own velocity scales,\n * includes the displaced-fluid added mass in the momentum relaxation time, and\n * evaluates the hydrodynamic memory (the Basset force) that the bridge does not\n * check: the full MSD with fluid inertia, and the correction it makes at t.\n * Given a distance to a plane wall, it applies the wall's drag corrections to D.\n *\n * `CE-stokes-einstein` is encoded only up to its 6π (scalar-up-to-constant);\n * the 6π here comes from Stokes drag, not from that entry.\n *\n * @module cases/brownian-sphere\n */\nimport { K_B_SI } from '../core/constants.js';\nimport { adaptiveSimpson } from './quadrature.js';\nimport { check, requirePositive, signedRelativeDifference, type AppliedCase } from './types.js';\n\nconst ID = 'case-brownian-sphere';\n\n/** Standard gravity (CGPM 1901), for the sedimentation speed. @internal */\nexport const G_STANDARD = 9.80665;\n\n/** The thresholds `ab-stokes-einstein` states: Re ≤ 0.1 and τ_p/t ≤ 0.01. @internal */\nexport const MAX_RE = 0.1;\nexport const MAX_TAU_P_RATIO = 0.01;\n\n/** Ceiling on the memory term's own share of the MSD, |MSD_H/MSD_OU − 1|. @internal */\nexport const MAX_MEMORY_CORRECTION = 0.01;\n\n/** (v_s t)²/(2Dt) ceiling along gravity when the vertical axis is tracked. @internal */\nexport const MAX_DRIFT_RATIO = 0.01;\n\n/** Ceiling on |MSD/MSD_wall − 1|: the wall's correction to the tracked MSD is negligible. @internal */\nexport const MAX_WALL_CORRECTION = 0.01;\n\n/** Ceiling on the last retained Faxén term (a/h)⁵/16 over the series' value. @internal */\nexport const MAX_FAXEN_LAST_TERM = 0.01;\n\n/** Ceiling on √(2 D_⊥ t)/(h − a): the height, and so D_∥ and D_⊥, barely change over t. @internal */\nexport const MAX_WALL_EXCURSION = 0.1;\n\n/** t − τ(1 − e^{−t/τ}) in units of τ, i.e. x − (1 − e^{−x}), without its cancellation at small x. @internal */\nexport function ballisticDeficit(x: number): number {\n return x < 1e-3 ? x * x * (1 / 2 - x / 6 + (x * x) / 24 - (x * x * x) / 120) : x + Math.expm1(-x);\n}\n\n/**\n * MSD/(2Dt) per axis for a sphere with fluid inertia: added mass and the Basset\n * memory force, in an unbounded incompressible fluid, velocities in equilibrium.\n *\n * The velocity autocorrelation has the Laplace transform\n * Ĉ(s) = k_BT/(M s + γ(1 + √(s τ_f))), M = m + m_f/2, from the frequency-dependent\n * Stokes drag γ(1 + √(sτ_f)) + s m_f/2 (Stokes 1851; the Basset 1888 term is its\n * √s part; Hinch 1975, J. Fluid Mech. 72, 499; Clercx & Schram 1992, Phys. Rev.\n * A 46, 1942). Its poles in √s both have negative real part, so Ĉ has none on the\n * principal sheet and C(t) is the branch-cut integral\n * C(t) = (k_BT/πγ) ∫₀^∞ e^{−ut} √(τ_f u)/((1 − τ_p u)² + τ_f u) du, τ_p = M/γ.\n * Then ⟨Δx²⟩ = 2∫₀ᵗ (t − s) C(s) ds, and with v = ut,\n * MSD/(2Dt) = (1/π) ∫₀^∞ √(βv) (v − 1 + e^{−v}) / (v² ((1 − αv)² + βv)) dv, α = τ_p/t, β = τ_f/t,\n * integrated here over ln v by adaptive Simpson, split at v = 1, 1/β and around\n * the near-resonance at v = 1/α (width √(β/α) in ln v; β/α ≤ 9 for any densities).\n *\n * Limits: → 1 − 2√(τ_f/(πt)) + (τ_f − τ_p)/t for t ≫ τ_p, τ_f (expanding Ĉ in √s),\n * whose second derivative is the VACF tail k_BT/(12 ρ_f (πνt)^{3/2}); → t/(2τ_p)\n * for t ≪ τ_p, i.e. ⟨Δx²⟩ → (k_BT/M) t². Requires β > 0: without memory the\n * poles reach the principal sheet and this integral no longer holds them.\n * @internal\n */\nexport function hydrodynamicMsdRatio(alpha: number, beta: number): number {\n const f = (y: number) => {\n const v = Math.exp(y);\n const lag = 1 - alpha * v;\n return (Math.sqrt(beta * v) * (ballisticDeficit(v) / v)) / (lag * lag + beta * v);\n };\n const peak = -Math.log(alpha);\n const w = Math.min(1, Math.sqrt(beta / alpha));\n const points = [0, -Math.log(beta), peak, ...[1, 2, 4].flatMap((k) => [peak - k * w, peak + k * w])].sort((x, y) => x - y);\n // The integrand falls as v^{3/2} below and v^{−3/2} above the breakpoints: e^{−75} at ±50 in ln v.\n const edges = [points[0]! - 50, ...points, points[points.length - 1]! + 50];\n let sum = 0;\n for (let k = 1; k < edges.length; k++) if (edges[k]! > edges[k - 1]!) sum += adaptiveSimpson(f, edges[k - 1]!, edges[k]!, 1e-12);\n return sum / Math.PI;\n}\n\n/**\n * D_∥/D₀ for a sphere translating parallel to a plane wall, centre at h:\n * 1 − (9/16)ξ + (1/8)ξ³ − (45/256)ξ⁴ − (1/16)ξ⁵, ξ = a/h (Faxén 1923, method of\n * reflections, as quoted in Happel & Brenner 1965, Low Reynolds Number\n * Hydrodynamics, ch. 7). A series in a/h, truncated:\n * its error is not bounded here, and near contact it misses the logarithmic\n * lubrication divergence of the drag.\n * @internal\n */\nexport function faxenParallel(aOverH: number): number {\n const x = aOverH;\n return 1 - (9 / 16) * x + (1 / 8) * x ** 3 - (45 / 256) * x ** 4 - (1 / 16) * x ** 5;\n}\n\n/**\n * λ = F/(6πηaU) for a sphere approaching a plane wall head-on, centre at h > a,\n * exact in Stokes flow (Brenner 1961, Chem. Eng. Sci. 16, 242, bispherical coordinates):\n * λ = (4/3) sinh α Σₙ n(n+1)/((2n−1)(2n+3)) · [(2 sinh(2n+1)α + (2n+1) sinh 2α) /\n * (4 sinh²(n+½)α − (2n+1)² sinh²α) − 1], cosh α = h/a. D_⊥ = D₀/λ.\n *\n * The bracket is rewritten over 4 sinh²(n+½)α so that no sinh overflows; its\n * terms fall as e^{−(2n+1)α}, so near contact (α → 0) the sum needs ~40/α terms,\n * and the low-n denominators lose ~α⁻² of relative precision to cancellation.\n * Limits: λ → 1 + (9/8)(a/h) far away (Lorentz 1907); λ → a/δ + (1/5) ln(a/δ) +\n * 0.971 as the gap δ = h − a → 0 (Cox & Brenner 1967, Chem. Eng. Sci. 22, 1753).\n * @throws Error if h/a ≤ 1.\n * @internal\n */\nexport function brennerPerpendicular(hOverA: number): number {\n if (!(hOverA > 1)) throw new Error(`brennerPerpendicular: need h/a > 1 (got ${hOverA})`);\n const al = Math.acosh(hOverA);\n const s = Math.sinh(al);\n const s2a = Math.sinh(2 * al);\n let sum = 0;\n for (let n = 1; ; n++) {\n const x = (n + 0.5) * al;\n const k = 2 * n + 1;\n const inv4Sinh2 = Math.exp(-2 * x) / Math.expm1(-2 * x) ** 2;\n const cothMinus1 = 2 / Math.expm1(2 * x);\n const bracket = (cothMinus1 + k * s2a * inv4Sinh2 + k * k * s * s * inv4Sinh2) / (1 - k * k * s * s * inv4Sinh2);\n const term = ((n * (n + 1)) / ((2 * n - 1) * (2 * n + 3))) * bracket;\n sum += term;\n if (term < 1e-17 * sum) break;\n if (n > 1e7) throw new Error(`brennerPerpendicular: no convergence at h/a = ${hOverA}`);\n }\n return (4 / 3) * s * sum;\n}\n\nexport const BROWNIAN_SPHERE_CASE: AppliedCase = {\n id: ID,\n title: 'Brownian sphere in a fluid (particle geometry, fluid conditions)',\n parameters: [\n { key: 'T_K', quantity: 'temperature', symbol: 'T', unit: 'K', meaning: 'absolute temperature of the fluid, > 0 K', temperature: 'absolute' },\n { key: 'eta_Pa_s', quantity: 'dynamic viscosity', symbol: 'η', unit: 'Pa*s', meaning: 'viscosity of the fluid at T (water at 20 °C ≈ 1.0e-3 Pa·s), > 0' },\n {\n key: 'a_m',\n quantity: 'particle radius',\n symbol: 'a',\n unit: 'm',\n meaning: 'hydrodynamic radius of the sphere, > 0',\n geometry: 'radius',\n alternates: [{ key: 'diameter_m', meaning: 'the diameter 2a of the sphere', toKey: 0.5 }],\n },\n { key: 'rho_p_kg_per_m3', quantity: 'particle density', symbol: 'ρ_p', unit: 'kg/m^3', meaning: 'mass density of the sphere (silica ≈ 2000), > 0' },\n { key: 'rho_f_kg_per_m3', quantity: 'fluid density', symbol: 'ρ_f', unit: 'kg/m^3', meaning: 'mass density of the fluid (water ≈ 998), > 0' },\n { key: 't_s', quantity: 'lag time', symbol: 't', unit: 's', meaning: 'the time over which the displacement is measured, > 0' },\n { key: 'd', quantity: 'tracked dimensions', symbol: 'd', unit: '', meaning: 'number of Cartesian axes tracked: 1, 2 (a microscope image plane, horizontal) or 3' },\n {\n key: 'h_m',\n quantity: 'distance to a wall',\n symbol: 'h',\n unit: 'm',\n meaning: \"distance from the sphere's centre to one plane horizontal wall (a coverslip), > a; leave out when no wall is within many radii\",\n geometry: 'separation',\n optional: true,\n },\n ],\n governing: {\n parent: [\n 'm dv/dt = −γ v + ξ(t), ⟨ξ_i(t) ξ_j(t′)⟩ = 2γ k_BT δ_ij δ(t − t′) (Langevin, a 3-vector equation; model-langevin)',\n 'η ∇²u = ∇p, ∇·u = 0, u = v on the sphere (no slip), u → 0 far away (Stokes creeping flow, a field; model-stokes-drag) ⇒ γ = 6πηa',\n 'm dv/dt = −γ v − (m_f/2) dv/dt − 6a²√(πηρ_f) ∫_{−∞}^t v′(s)/√(t − s) ds + ξ(t), ξ coloured by the same kernel ' +\n '(unsteady Stokes flow: added mass and the Basset memory force; Hinch 1975)',\n ],\n scalar: [\n 'D = k_BT/(6πηa) (Stokes–Einstein; ab-stokes-einstein)',\n '⟨|Δr|²⟩ = 2 d D t over the d tracked axes',\n ],\n distinction:\n 'The parents are a vector stochastic equation for the velocity and a field equation for the flow around the sphere; ' +\n 'the scalar keeps one isotropic number D and a mean-square displacement linear in t. Dropped: the velocity as a ' +\n 'state (the ballistic regime t ≲ τ_p), the flow field (and with it the hydrodynamic memory for t ≲ τ_f), the shape ' +\n 'beyond the radius, and every anisotropy.',\n },\n observable: 'MSD_m2',\n outputs: [\n { key: 'gamma_kg_per_s', symbol: 'γ', unit: 'kg/s', meaning: 'Stokes drag coefficient 6πηa' },\n { key: 'D_m2_per_s', symbol: 'D', unit: 'm^2/s', meaning: 'diffusion coefficient k_BT/(6πηa)' },\n { key: 'MSD_m2', symbol: '⟨|Δr|²⟩', unit: 'm^2', meaning: 'mean-square displacement 2dDt over the tracked axes' },\n { key: 'rms_displacement_m', symbol: '√⟨|Δr|²⟩', unit: 'm', meaning: 'root-mean-square displacement over the tracked axes' },\n { key: 'm_kg', symbol: 'm', unit: 'kg', meaning: 'particle mass (4/3)πa³ρ_p' },\n { key: 'tau_p_s', symbol: 'τ_p', unit: 's', meaning: 'momentum relaxation time (m + m_f/2)/γ, with the displaced-fluid added mass m_f/2' },\n { key: 'tau_f_s', symbol: 'τ_f', unit: 's', meaning: 'vorticity diffusion time ρ_f a²/η over one radius (hydrodynamic memory)' },\n { key: 'v_sed_m_per_s', symbol: 'v_s', unit: 'm/s', meaning: 'Stokes sedimentation speed (2/9)(ρ_p − ρ_f) g a²/η; negative means the sphere rises' },\n { key: 'Re', symbol: 'Re', unit: '', meaning: 'ρ_f a max(√(k_BT/m), |v_s|)/η — radius-based; a diameter-based Re is twice this' },\n { key: 'MSD_langevin_m2', symbol: '⟨|Δr|²⟩_L', unit: 'm^2', meaning: 'the Langevin parent: 2dD[t − τ(1 − e^{−t/τ})], τ = m/γ (bare mass)' },\n { key: 'langevin_deviation', symbol: 'MSD/MSD_L − 1', unit: '', meaning: signedRelativeDifference('diffusive MSD', 'Langevin one') },\n {\n key: 'MSD_hydro_m2',\n symbol: '⟨|Δr|²⟩_H',\n unit: 'm^2',\n meaning: 'the Langevin–Basset parent: added mass and hydrodynamic memory, unbounded incompressible fluid (branch-cut integral of its Laplace-domain VACF)',\n },\n { key: 'hydro_correction_m2', symbol: '⟨|Δr|²⟩_H − ⟨|Δr|²⟩', unit: 'm^2', meaning: 'what inertia and memory change in the MSD at t; ≈ −4dD√(τ_f t/π) at t ≫ τ_f' },\n { key: 'hydro_deviation', symbol: 'MSD/MSD_H − 1', unit: '', meaning: signedRelativeDifference('diffusive MSD', 'Langevin–Basset one') },\n {\n key: 'memory_correction',\n symbol: 'MSD_H/MSD_OU − 1',\n unit: '',\n meaning: \"the memory force's own share: MSD_H against the Ornstein–Uhlenbeck MSD with the same τ_p (added mass, no memory)\",\n },\n { key: 'D_parallel_m2_per_s', symbol: 'D_∥', unit: 'm^2/s', meaning: 'D beside the wall, parallel to it: D·(Faxén series in a/h); not defined without h_m' },\n { key: 'D_perp_m2_per_s', symbol: 'D_⊥', unit: 'm^2/s', meaning: 'D normal to the wall: D/λ, λ from Brenner\\'s exact series; not defined without h_m' },\n { key: 'MSD_wall_m2', symbol: '⟨|Δr|²⟩_w', unit: 'm^2', meaning: '2t(d_∥ D_∥ + d_⊥ D_⊥): the tracked horizontal axes parallel to the wall, a third one normal to it; not defined without h_m' },\n { key: 'wall_deviation', symbol: 'MSD/MSD_w − 1', unit: '', meaning: signedRelativeDifference('unbounded-fluid MSD', 'wall-corrected one', 'not defined without h_m') },\n ],\n comparison: {\n reference: 'the parent Langevin model (bare mass, white noise; it has neither added mass nor hydrodynamic memory)',\n valueKey: 'MSD_m2',\n referenceKey: 'MSD_langevin_m2',\n deviationKey: 'langevin_deviation',\n method: 'closed form of the Ornstein–Uhlenbeck MSD, velocities starting in equilibrium',\n },\n conditions: [\n 'a rigid sphere released at r = 0; its displacement density starts as δ(r) and spreads as a Gaussian of variance 2Dt per axis',\n 'no-slip boundary on the sphere; the fluid is at rest far from it (no imposed flow; no wall within many radii, or with h_m one plane no-slip wall)',\n 'fluid in thermal equilibrium at T; one isolated particle (dilute: no hydrodynamic interaction with others)',\n ],\n notIncluded: [\n 'walls other than one plane: a second wall, a channel or a curved surface; and, with h_m, the spread of heights the sphere samples (D_∥, D_⊥ are taken at h)',\n 'localization error and camera motion blur of the tracking, which offset and bias the measured MSD',\n 'fluid compressibility: the incompressible memory kernel gives ⟨v²⟩ = k_BT/(m + m_f/2) at t = 0; sound restores k_BT/m over a/c_s (Zwanzig & Bixon 1970)',\n 'the memory force near a wall: MSD_hydro is the unbounded-fluid result, and a wall within √(νt) changes the memory tail',\n 'the rotational diffusion of the sphere, and any non-spherical shape',\n ],\n measurement: [\n 'single-particle tracking: fit ⟨|Δr|²⟩(t) over the d tracked axes, slope 2dD; compare D and MSD_m2 at the chosen lag ' +\n '(with N independent displacements the relative scatter of the MSD is ≈ √(2/(dN)))',\n 'subtract the static localization offset 2dσ_loc² (measured on an immobilized particle) before comparing',\n 'dynamic light scattering: the field autocorrelation decays at Γ = D q², an independent route to the same D',\n ],\n links: [\n { id: 'ab-stokes-einstein', role: 'the derivation D = k_BT/(6πηa) with its regime Re ≤ 0.1, m/(γt) ≤ 0.01 (`upt atlas ab-stokes-einstein`)' },\n { id: 'ab-langevin-diffusion', role: 'the overdamped coarse-graining D = k_BT/γ and its ballistic counterexample' },\n { id: 'model-stokes-drag', role: 'the creeping-flow drag γ = 6πηa' },\n { id: 'CE-stokes-einstein', role: 'encoded only up to its dimensionless 6π (scalar-up-to-constant); the 6π here is from Stokes drag' },\n ],\n examples: {\n valid: {\n args: ['T_K=293.15', 'eta_Pa_s=1e-3', 'a_m=1um', 'rho_p_kg_per_m3=2000', 'rho_f_kg_per_m3=998', 't_s=1', 'd=2', 'h_m=100um'],\n note: 'a 1 µm-radius silica sphere in water at 20 °C, 100 µm above the coverslip, tracked in the image plane over 1 s',\n fails: [],\n },\n failures: [\n {\n args: ['T_K=293.15', 'eta_Pa_s=1e-3', 'a_m=1um', 'rho_p_kg_per_m3=2000', 'rho_f_kg_per_m3=998', 't_s=1us', 'd=2'],\n note: 'the same sphere over 1 µs: still ballistic (t ≈ 2τ_p) and inside the hydrodynamic memory time',\n fails: ['overdamped', 'memory'],\n },\n {\n args: ['T_K=293.15', 'eta_Pa_s=1e-3', 'a_m=50um', 'rho_p_kg_per_m3=7800', 'rho_f_kg_per_m3=998', 't_s=100', 'd=3'],\n note: 'a 50 µm-radius steel sphere tracked in 3-D: it sinks at ≈ 3.7 cm/s, Re ≈ 1.9, and the drift swamps diffusion',\n fails: ['creeping-flow', 'drift'],\n },\n {\n args: ['T_K=293.15', 'eta_Pa_s=1e-3', 'a_m=1um', 'rho_p_kg_per_m3=1050', 'rho_f_kg_per_m3=998', 't_s=50ms', 'd=2', 'h_m=3um'],\n note: 'a 1 µm-radius polystyrene sphere 3 µm (centre) above the coverslip: the wall slows D_∥ by ≈ 19%',\n fails: ['wall'],\n },\n {\n args: ['T_K=293.15', 'eta_Pa_s=1e-3', 'a_m=1um', 'rho_p_kg_per_m3=1050', 'rho_f_kg_per_m3=998', 't_s=50ms', 'd=2', 'h_m=1.2um'],\n note: 'the same sphere with a 0.2 µm gap: past the range of the Faxén series, and its height changes by more than the gap allows over t',\n fails: ['faxen-range', 'wall', 'wall-static'],\n },\n ],\n },\n /** Evaluate the Stokes-Einstein MSD and regime checks for the supplied Brownian-sphere inputs. */\n regimeAt(inputs, outputs) {\n const re = outputs.Re;\n const m = outputs.m_kg;\n const gamma = outputs.gamma_kg_per_s;\n const t = inputs.t_s;\n if (re == null || m == null || gamma == null || t == null) return '';\n return `upt regime diffusion --at Re=${re} m=${m} gamma=${gamma} t=${t}`;\n },\n /** Compute the Stokes-Einstein diffusion, MSD and regime checks for one set of Brownian-sphere inputs. */\n run(i) {\n requirePositive(ID, i, ['T_K', 'eta_Pa_s', 'a_m', 'rho_p_kg_per_m3', 'rho_f_kg_per_m3', 't_s']);\n const { T_K: T, eta_Pa_s: eta, a_m: a, rho_p_kg_per_m3: rhoP, rho_f_kg_per_m3: rhoF, t_s: t, d } = i as Record<string, number>;\n if (d !== 1 && d !== 2 && d !== 3) throw new Error(`${ID}: d must be 1, 2 or 3 (got ${d})`);\n const kT = K_B_SI * T;\n const gamma = 6 * Math.PI * eta * a;\n const D = kT / gamma;\n const msd = 2 * d * D * t;\n const volume = (4 / 3) * Math.PI * a ** 3;\n const m = volume * rhoP;\n const tauP = (m + 0.5 * volume * rhoF) / gamma;\n const tauF = (rhoF * a * a) / eta;\n const vSed = ((2 / 9) * (rhoP - rhoF) * G_STANDARD * a * a) / eta;\n const re = (rhoF * a * Math.max(Math.sqrt(kT / m), Math.abs(vSed))) / eta;\n const tauBare = m / gamma;\n const msdLangevin = 2 * d * D * tauBare * ballisticDeficit(t / tauBare);\n const msdHydro = msd * hydrodynamicMsdRatio(tauP / t, tauF / t);\n const msdAddedMass = 2 * d * D * tauP * ballisticDeficit(t / tauP);\n const memory = msdHydro / msdAddedMass - 1;\n const checks = [\n check('creeping-flow', 'creeping flow around the sphere, Re ≪ 1', 'ρ_f a max(√(k_BT/m), |v_s|)/η', re, '<=', MAX_RE,\n \"the threshold ab-stokes-einstein states: a chosen machine form of Re ≪ 1\"),\n check('overdamped', 'overdamped times t ≫ τ_p', '(m + m_f/2)/(γ t)', tauP / t, '<=', MAX_TAU_P_RATIO,\n \"ab-stokes-einstein's m/(γt) ≤ 0.01, with the added mass m_f/2 included (stricter)\"),\n check('memory', 'past the hydrodynamic memory, t ≫ τ_f = ρ_f a²/η', '|MSD_H/MSD_OU − 1|', Math.abs(memory), '<=', MAX_MEMORY_CORRECTION,\n 'chosen threshold: the Basset memory changes the MSD by ≤ 1% at t (computed, not estimated; ≈ 2√(τ_f/(πt)) at t ≫ τ_f)'),\n ];\n const unchecked = ['the particle is a rigid sphere and a is its hydrodynamic radius (a coating or a shell changes it)'];\n let wall: { dPar: number; dPerp: number; msdWall: number } | null = null;\n if (i.h_m !== undefined) {\n const h = i.h_m;\n if (!Number.isFinite(h) || !(h > a)) throw new Error(`${ID}: h_m must be a finite distance > a_m, centre to wall (got ${h})`);\n const faxen = faxenParallel(a / h);\n const lambda = brennerPerpendicular(h / a);\n const dPar = D * faxen;\n const dPerp = D / lambda;\n const msdWall = 2 * t * (Math.min(d, 2) * dPar + (d === 3 ? dPerp : 0));\n wall = { dPar, dPerp, msdWall };\n const excursion = Math.sqrt(2 * dPerp * t) + (Math.abs(vSed) * t) / lambda;\n checks.push(\n check('faxen-range', 'the Faxén series in a/h holds for D_∥', '(a/h)⁵/16 ÷ (D_∥/D)', (a / h) ** 5 / 16 / faxen, '<=', MAX_FAXEN_LAST_TERM,\n 'chosen threshold: the last retained term is ≤ 1% of the series — a size estimate of the truncation, not a bound; D_⊥ (Brenner) is exact at any h > a'),\n check('wall', 'the wall correction to the tracked MSD is negligible', '|MSD/MSD_w − 1|', Math.abs(msd / msdWall - 1), '<=', MAX_WALL_CORRECTION,\n 'chosen threshold: the unbounded-fluid D is then within 1% for the tracked axes; otherwise read MSD_wall_m2'),\n check('wall-static', 'the height barely changes over t', '(√(2 D_⊥ t) + |v_s| t/λ)/(h − a)', excursion / (h - a), '<=', MAX_WALL_EXCURSION,\n 'chosen threshold: diffusion plus wall-slowed sedimentation normal to the wall move the sphere by ≤ 10% of the gap, so D_∥, D_⊥ taken at h hold over t'),\n );\n unchecked.push(\n 'the wall is plane, rigid, no-slip and horizontal, and the gap h − a is many molecular sizes and roughness heights (no surface forces, no lubrication-scale slip)',\n );\n }\n if (d === 3) {\n checks.push(\n check('drift', 'sedimentation drift negligible along gravity over t', '(v_s t)²/(2 D t)', (vSed * t) ** 2 / (2 * D * t), '<=',\n MAX_DRIFT_RATIO, 'chosen threshold: the vertical MSD then carries ≤ 1% from the deterministic drift'),\n );\n } else {\n unchecked.push(\n `the ${d === 1 ? 'tracked axis is' : 'tracked axes are'} horizontal, so sedimentation (${Number(Math.abs(vSed * t).toPrecision(3))} m over t) moves the sphere out of the plane but not along ${d === 1 ? 'it' : 'them'}`,\n );\n }\n return {\n outputs: {\n gamma_kg_per_s: gamma,\n D_m2_per_s: D,\n MSD_m2: msd,\n rms_displacement_m: Math.sqrt(msd),\n m_kg: m,\n tau_p_s: tauP,\n tau_f_s: tauF,\n v_sed_m_per_s: vSed,\n Re: re,\n MSD_langevin_m2: msdLangevin,\n langevin_deviation: msd / msdLangevin - 1,\n MSD_hydro_m2: msdHydro,\n hydro_correction_m2: msdHydro - msd,\n hydro_deviation: msd / msdHydro - 1,\n memory_correction: memory,\n D_parallel_m2_per_s: wall?.dPar ?? null,\n D_perp_m2_per_s: wall?.dPerp ?? null,\n MSD_wall_m2: wall?.msdWall ?? null,\n wall_deviation: wall === null ? null : msd / wall.msdWall - 1,\n },\n checks,\n unchecked,\n };\n },\n};\n"]}
@@ -104,12 +104,12 @@ export const DAMPED_RESONATOR_CASE = {
104
104
  { key: 'resolution_Hz', symbol: '1/t_obs', unit: 'Hz', meaning: 'frequency resolution of the record' },
105
105
  { key: 'linewidth_windowed_Hz', symbol: 'Δf_T', unit: 'Hz', meaning: 'FWHM of the power spectrum of the truncated ring-down (rectangular window, near resonance)' },
106
106
  { key: 'windowed_excess', symbol: 'Δf_T/Δf − 1', unit: '', meaning: 'how much the finite record broadens the measured line' },
107
- { key: 'x_th_rms_m', symbol: '√⟨x²⟩_th', unit: 'm', meaning: 'thermal RMS displacement √(k_BT/k) of the mode (equipartition); null without T_K and k_N_per_m' },
107
+ { key: 'x_th_rms_m', symbol: '√⟨x²⟩_th', unit: 'm', meaning: 'thermal RMS displacement √(k_BT/k) of the mode (equipartition); not defined without T_K and k_N_per_m' },
108
108
  {
109
109
  key: 'envelope_rms_m',
110
110
  symbol: '√⟨A²⟩',
111
111
  unit: 'm',
112
- meaning: 'RMS envelope with the thermal motion added: √(A² + 2k_BT/k), the Rice second moment; null without T_K and k_N_per_m',
112
+ meaning: 'RMS envelope with the thermal motion added: √(A² + 2k_BT/k), the Rice second moment; not defined without T_K and k_N_per_m',
113
113
  },
114
114
  ],
115
115
  conditions: [
@@ -1 +1 @@
1
- {"version":3,"file":"damped-resonator.js","sourceRoot":"","sources":["../../src/cases/damped-resonator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"damped-resonator.js","sourceRoot":"","sources":["../../src/cases/damped-resonator.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Applied case: the free ring-down of a damped resonator, read out over a\n * finite record — the envelope and displacement at a chosen time, the\n * linewidth, and what a record of length t_obs can resolve of it.\n *\n * The atlas holds the damped spring (`model-damped-spring`), its exact RLC\n * equivalent (`ab-damped-rlc`) and its overdamped reduction\n * (`ab-damped-massless`). This case evaluates the underdamped solution for a\n * given f0 and Q, refuses it when the resonator is not underdamped, and checks\n * the record length against the linewidth it is meant to resolve. The\n * rectangular-window spectrum of the truncated ring-down is computed in\n * closed form, near resonance, for comparison. Given the temperature and the\n * mode's stiffness, it checks the envelope against the thermal motion.\n *\n * @module cases/damped-resonator\n */\nimport { K_B_SI } from '../core/constants.js';\nimport { check, requirePositive, type AppliedCase } from './types.js';\n\nconst ID = 'case-damped-resonator';\n\n/** Q floor for the single-Lorentzian (near-resonance) form of the spectrum. @internal */\nexport const MIN_Q_LORENTZIAN = 10;\n\n/** (1/t_obs)/linewidth ceiling: the record resolves the line. @internal */\nexport const MAX_RESOLUTION_RATIO = 0.1;\n\n/**\n * √(k_BT/k)/A ceiling. Thermal motion of one mode is x = X cos ω_d t + Y sin ω_d t\n * with ⟨X²⟩ = ⟨Y²⟩ = k_BT/k (equipartition), so the envelope of the ring-down\n * plus it is Rician with ⟨A_obs²⟩ = A² + 2k_BT/k (Rice 1944); at the ceiling\n * √(1 + 2·0.01) − 1 ≈ 0.0100.\n * @internal\n */\nexport const MAX_THERMAL_RATIO = 0.1;\n\n/**\n * FWHM in Hz of |∫₀ᵀ e^{−(α + iΔω)t} dt|², the near-resonance power spectrum of\n * a ring-down x0 e^{−αt} cos(ω_d t) recorded for T. The negative-frequency\n * pole is dropped, which is the Q ≫ 1 approximation. The peak is at Δω = 0:\n * the integrand is positive, so |X(Δω)| ≤ X(0).\n * @internal\n */\nexport function windowedLinewidthHz(alpha: number, T: number): number {\n const oneMinusE = -Math.expm1(-alpha * T);\n const E = 1 - oneMinusE;\n // (1 − E)² + 4E sin²(ΔωT/2) is 1 − 2E cos(ΔωT) + E² without its cancellation near Δω = 0.\n const power = (dw: number) => (oneMinusE ** 2 + 4 * E * Math.sin((dw * T) / 2) ** 2) / (alpha * alpha + dw * dw);\n const half = power(0) / 2;\n const h = (alpha + 1 / T) / 200;\n let lo = 0;\n let hi = h;\n for (let k = 1; power(hi) > half; k++) {\n if (k > 1e6) throw new Error(`${ID}: no half-power point found (α = ${alpha}, T = ${T})`);\n lo = hi;\n hi += h;\n }\n for (let k = 0; k < 80; k++) {\n const mid = (lo + hi) / 2;\n if (power(mid) > half) lo = mid;\n else hi = mid;\n }\n return (lo + hi) / 2 / Math.PI;\n}\n\nexport const DAMPED_RESONATOR_CASE: AppliedCase = {\n id: ID,\n title: 'Damped resonator ring-down (damping, finite observation time)',\n parameters: [\n { key: 'f0_Hz', quantity: 'natural frequency', symbol: 'f0', unit: 'Hz', meaning: 'undamped natural frequency ω0/2π = √(k/m)/2π, > 0' },\n { key: 'Q', quantity: 'quality factor', symbol: 'Q', unit: '', meaning: 'Q = ω0 m/b (for an RLC: √(L/C)/R), > 0' },\n { key: 'x0_m', quantity: 'initial displacement', symbol: 'x0', unit: 'm', meaning: 'displacement at release, from rest' },\n { key: 't_s', quantity: 'read-out time', symbol: 't', unit: 's', meaning: 'time after release at which x and the envelope are read, ≥ 0' },\n { key: 't_obs_s', quantity: 'record length', symbol: 't_obs', unit: 's', meaning: 'length of the recorded ring-down, starting at release, > 0' },\n { key: 'T_K', quantity: 'temperature', symbol: 'T', unit: 'K', meaning: 'temperature of the damping bath, > 0 K; give with k_N_per_m for the thermal floor', temperature: 'absolute', optional: true },\n {\n key: 'k_N_per_m',\n quantity: 'mode stiffness',\n symbol: 'k',\n unit: 'N/m',\n meaning: 'effective stiffness of the mode at the read-out point, > 0 (for an RLC read as charge: 1/C in 1/F, not N/m); give with T_K',\n optional: true,\n },\n ],\n governing: {\n parent: [\n 'ρA ∂²w/∂t² + c ∂w/∂t + EI ∂⁴w/∂z⁴ = 0 with the structure\\'s boundary conditions (e.g. a cantilever: a field w(z, t) with many modes)',\n 'one mode, w = φ(z) x(t), read at one point: m x″ + b x′ + k x = 0 (model-damped-spring; for a circuit L q″ + R q′ + q/C = 0, ab-damped-rlc)',\n ],\n scalar: [\n 'x(t) = x0 e^{−αt} [cos ω_d t + (α/ω_d) sin ω_d t], α = ω0/(2Q), ω_d = ω0 √(1 − 1/(4Q²)) (Q > 1/2)',\n 'envelope x0 e^{−αt}/√(1 − 1/(4Q²)); linewidth Δf = f0/Q; resolution of a record 1/t_obs',\n ],\n distinction:\n 'The parent is a field w(z, t) with infinitely many modes and a mode shape; the scalar keeps one mode\\'s amplitude ' +\n 'x(t) at the read-out point, with all loss lumped into a viscous (velocity-proportional) Q. Dropped: the other modes ' +\n 'and their coupling, the mode shape, and any frequency or amplitude dependence of the damping (structural damping ' +\n 'gives a different Q(f)).',\n },\n observable: 'envelope_m',\n outputs: [\n { key: 'alpha_per_s', symbol: 'α', unit: 's^-1', meaning: 'amplitude decay rate ω0/(2Q) = b/(2m)' },\n { key: 'tau_s', symbol: 'τ', unit: 's', meaning: 'amplitude ring-down time 1/α = Q/(πf0)' },\n { key: 'linewidth_Hz', symbol: 'Δf', unit: 'Hz', meaning: 'f0/Q: FWHM of the velocity (absorbed-power) response, exact at any Q; the displacement response approaches it for Q ≫ 1' },\n { key: 'f_d_Hz', symbol: 'f_d', unit: 'Hz', meaning: 'damped oscillation frequency f0 √(1 − 1/(4Q²))' },\n { key: 'x_m', symbol: 'x(t)', unit: 'm', meaning: 'displacement at t, released from rest at x0' },\n { key: 'envelope_m', symbol: 'A(t)', unit: 'm', meaning: 'ring-down envelope at t: the amplitude a peak-detecting read-out sees' },\n { key: 'resolution_Hz', symbol: '1/t_obs', unit: 'Hz', meaning: 'frequency resolution of the record' },\n { key: 'linewidth_windowed_Hz', symbol: 'Δf_T', unit: 'Hz', meaning: 'FWHM of the power spectrum of the truncated ring-down (rectangular window, near resonance)' },\n { key: 'windowed_excess', symbol: 'Δf_T/Δf − 1', unit: '', meaning: 'how much the finite record broadens the measured line' },\n { key: 'x_th_rms_m', symbol: '√⟨x²⟩_th', unit: 'm', meaning: 'thermal RMS displacement √(k_BT/k) of the mode (equipartition); not defined without T_K and k_N_per_m' },\n {\n key: 'envelope_rms_m',\n symbol: '√⟨A²⟩',\n unit: 'm',\n meaning: 'RMS envelope with the thermal motion added: √(A² + 2k_BT/k), the Rice second moment; not defined without T_K and k_N_per_m',\n },\n ],\n conditions: [\n 'released from rest: x(0) = x0, x′(0) = 0; free ring-down, no drive after release',\n 'linear restoring force: the amplitude is small enough that f0 does not depend on it (ax-cubic-spring-lc records why a hardening spring is not this model)',\n 'the record starts at release and lasts t_obs; its spectrum is that of a rectangular window',\n ],\n comparison: {\n reference: 'the linewidth an infinitely long record would show, f0/Q',\n valueKey: 'linewidth_windowed_Hz',\n referenceKey: 'linewidth_Hz',\n deviationKey: 'windowed_excess',\n method: 'closed-form transform of the truncated ring-down, half-power point by bisection',\n },\n notIncluded: [\n 'the detector noise floor; and the thermal drive of the resonator unless T_K and k_N_per_m are given (its equilibrium amplitude √(k_BT/k) is the fluctuation–dissipation partner of its damping; compare case-resistor-noise)',\n 'frequency drift of f0 over the record',\n 'window shapes other than rectangular, and the negative-frequency image of the line (the Q ≫ 1 approximation)',\n 'the other modes of the structure',\n ],\n measurement: [\n 'ring-down: fit ln A(t) against t; the slope −α gives Q = πf0/α; compare the measured envelope at t with envelope_m',\n 'spectrum: the FWHM of the recorded line is linewidth_windowed_Hz, which approaches linewidth_Hz only when the record resolves it',\n 'for an RLC circuit read the capacitor voltage: f0 = 1/(2π√(LC)), Q = √(L/C)/R (ab-damped-rlc)',\n ],\n links: [\n { id: 'model-damped-spring', role: 'm x″ + b x′ + k x = 0, the single-mode equation evaluated here' },\n { id: 'ab-damped-rlc', role: 'the same equation for an RLC circuit, an exact equivalence' },\n { id: 'ab-damped-massless', role: 'the overdamped reduction, for the regime where this case refuses (Q ≤ 1/2)' },\n { id: 'ax-cubic-spring-lc', role: 'the refuted claim that a nonlinear (cubic) spring maps onto the linear circuit' },\n ],\n examples: {\n valid: {\n args: ['f0_Hz=1kHz', 'Q=1000', 'x0_m=1um', 't_s=0.1', 't_obs_s=20', 'T_K=300', 'k_N_per_m=1'],\n note: 'a 1 kHz, Q = 1000 resonator (1 Hz line), 1 N/m at 300 K, read 0.1 s after release, recorded for 20 s',\n fails: [],\n },\n failures: [\n {\n args: ['f0_Hz=1kHz', 'Q=1000', 'x0_m=1um', 't_s=0.1', 't_obs_s=1'],\n note: 'the same resonator recorded for 1 s: the 1 Hz resolution cannot resolve the 1 Hz line',\n fails: ['resolved'],\n },\n {\n args: ['f0_Hz=1kHz', 'Q=0.3', 'x0_m=1um', 't_s=0.1', 't_obs_s=20'],\n note: 'Q = 0.3 is overdamped: there is no ring-down, and the underdamped formulas are refused',\n fails: ['underdamped', 'single-lorentzian'],\n },\n {\n args: ['f0_Hz=1kHz', 'Q=1000', 'x0_m=100pm', 't_s=1', 't_obs_s=20', 'T_K=300', 'k_N_per_m=1'],\n note: 'released from 100 pm and read after 1 s (≈ 3 ring-down times): the envelope, ≈ 4 pm, sits below the 64 pm thermal motion',\n fails: ['above-thermal'],\n },\n ],\n },\n /** Evaluate the underdamped ring-down outputs and checks for the supplied resonator inputs. */\n run(i) {\n requirePositive(ID, i, ['f0_Hz', 'Q', 't_obs_s']);\n const { f0_Hz: f0, Q, x0_m: x0, t_s: t, t_obs_s: tObs } = i as Record<string, number>;\n if (!Number.isFinite(x0)) throw new Error(`${ID}: x0_m must be finite (got ${x0})`);\n if (!Number.isFinite(t) || t < 0) throw new Error(`${ID}: t_s must be a finite number ≥ 0 (got ${t})`);\n const w0 = 2 * Math.PI * f0;\n const alpha = w0 / (2 * Q);\n const linewidth = f0 / Q;\n const underdamped = Q > 0.5;\n const root = underdamped ? Math.sqrt(1 - 1 / (4 * Q * Q)) : NaN;\n const wd = w0 * root;\n const decay = Math.exp(-alpha * t);\n const windowed = underdamped ? windowedLinewidthHz(alpha, tObs) : null;\n const envelope = underdamped ? (Math.abs(x0) * decay) / root : null;\n const checks = [\n check('underdamped', 'underdamped: the solution rings (Q > 1/2)', 'Q', Q, '>', 0.5,\n 'exact: at Q ≤ 1/2 the solution is a sum of real exponentials, with no ring-down, f_d or envelope'),\n check('single-lorentzian', 'high Q: the line near f0 is one Lorentzian', 'Q', Q, '>=', MIN_Q_LORENTZIAN,\n 'chosen threshold for Q ≫ 1: the windowed spectrum drops the negative-frequency pole'),\n check('resolved', 'the record resolves the line: 1/t_obs ≪ f0/Q', '(1/t_obs)/(f0/Q)', 1 / tObs / linewidth, '<=', MAX_RESOLUTION_RATIO,\n 'chosen threshold for ≪ 1; see windowed_excess for the broadening it allows'),\n check('in-record', 'the read-out time lies inside the record', 't/t_obs', t / tObs, '<=', 1,\n 'exact: an envelope read after the record ends was not measured'),\n ];\n const unchecked = underdamped\n ? ['the damping is viscous (velocity-proportional) and the same over the whole ring-down']\n : ['for Q ≤ 1/2 the displacement is x0 (r₂e^{r₁t} − r₁e^{r₂t})/(r₂ − r₁) with real r₁, r₂; this case does not evaluate it'];\n if ((i.T_K === undefined) !== (i.k_N_per_m === undefined)) throw new Error(`${ID}: give T_K and k_N_per_m together, or neither`);\n let xTh: number | null = null;\n if (i.T_K !== undefined) {\n requirePositive(ID, i, ['T_K', 'k_N_per_m']);\n xTh = Math.sqrt((K_B_SI * i.T_K) / i.k_N_per_m!);\n if (envelope !== null) {\n checks.push(\n check('above-thermal', 'the ring-down stands above the thermal motion at t', '√(k_BT/k)/A(t)', xTh / envelope, '<=', MAX_THERMAL_RATIO,\n 'chosen threshold: the RMS envelope √(A² + 2k_BT/k) then exceeds A by ≤ 1%'),\n );\n }\n unchecked.push('the thermal motion is in equilibrium with the damping bath at T and uncorrelated with the release; the read-out adds no noise of its own');\n }\n return {\n outputs: {\n alpha_per_s: alpha,\n tau_s: 1 / alpha,\n linewidth_Hz: linewidth,\n f_d_Hz: underdamped ? f0 * root : null,\n x_m: underdamped ? x0 * decay * (Math.cos(wd * t) + (alpha / wd) * Math.sin(wd * t)) : null,\n envelope_m: envelope,\n resolution_Hz: 1 / tObs,\n linewidth_windowed_Hz: windowed,\n windowed_excess: windowed === null ? null : windowed / linewidth - 1,\n x_th_rms_m: xTh,\n envelope_rms_m: xTh === null || envelope === null ? null : Math.sqrt(envelope * envelope + 2 * xTh * xTh),\n },\n checks,\n unchecked,\n };\n },\n};\n"]}
@@ -1,10 +1,17 @@
1
1
  import type { AppliedCase, CaseResult } from './types.js';
2
+ import { type InputContract } from '../bridges/input-contract.js';
2
3
  export type { AppliedCase, CaseCheck, CaseComparison, CaseExample, CaseOutput, CaseResult } from './types.js';
3
4
  /** Case id → case. @internal */
4
5
  export declare const APPLIED_CASES: ReadonlyMap<string, AppliedCase>;
6
+ /** Case id → its input contract, built once at load (a contract that spells one key twice fails here). @internal */
7
+ export declare const CASE_CONTRACTS: ReadonlyMap<string, InputContract>;
5
8
  /**
6
- * Run a case with a numeric input record.
7
- * @throws Error on an unknown id, a missing input, or an input outside the model's domain.
9
+ * Run a case with a numeric input record. The inputs go through the same
10
+ * {@link checkInputs} contract as a catalog evaluator before the case's model runs.
11
+ * @throws Error on an unknown id.
12
+ * @throws UnknownInputError, InputTypeError, NonFiniteInputError, DuplicateInputError or
13
+ * MissingInputError on an input the contract refuses.
14
+ * @throws Error from the case's model on an input outside its domain.
8
15
  * @internal
9
16
  */
10
17
  export declare function runAppliedCase(id: string, inputs: Readonly<Record<string, number>>): CaseResult;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/cases/index.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAE1D,YAAY,EAAE,WAAW,EAAE,SAAS,EAAE,cAAc,EAAE,WAAW,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAE9G,gCAAgC;AAChC,eAAO,MAAM,aAAa,EAAE,WAAW,CAAC,MAAM,EAAE,WAAW,CAE1D,CAAC;AAEF;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,GAAG,UAAU,CAQ/F"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/cases/index.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAC1D,OAAO,EAA8B,KAAK,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAE9F,YAAY,EAAE,WAAW,EAAE,SAAS,EAAE,cAAc,EAAE,WAAW,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAE9G,gCAAgC;AAChC,eAAO,MAAM,aAAa,EAAE,WAAW,CAAC,MAAM,EAAE,WAAW,CAE1D,CAAC;AAoBF,oHAAoH;AACpH,eAAO,MAAM,cAAc,EAAE,WAAW,CAAC,MAAM,EAAE,aAAa,CAAuE,CAAC;AAEtI;;;;;;;;GAQG;AACH,wBAAgB,cAAc,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,GAAG,UAAU,CAO/F"}
@@ -9,21 +9,40 @@ import { KEPLER_RV_CASE } from './kepler-rv.js';
9
9
  import { LUMPED_COOLING_CASE } from './lumped-cooling.js';
10
10
  import { RESISTOR_NOISE_CASE } from './resistor-noise.js';
11
11
  import { SKIN_DEPTH_CASE } from './skin-depth.js';
12
+ import { checkInputs, inputContract } from '../bridges/input-contract.js';
12
13
  /** Case id → case. @internal */
13
14
  export const APPLIED_CASES = new Map([RESISTOR_NOISE_CASE, BROWNIAN_SPHERE_CASE, DAMPED_RESONATOR_CASE, SKIN_DEPTH_CASE, LUMPED_COOLING_CASE, KEPLER_RV_CASE].map((c) => [c.id, c]));
14
15
  /**
15
- * Run a case with a numeric input record.
16
- * @throws Error on an unknown id, a missing input, or an input outside the model's domain.
16
+ * The declared inputs of a case: one listed slot per parameter, spelled by its
17
+ * key and converted from its alternates, required unless the parameter is optional.
18
+ */
19
+ function caseContract(c) {
20
+ return inputContract(c.id, c.parameters.map((p) => ({
21
+ key: p.key,
22
+ spellings: [p.key],
23
+ alternates: (p.alternates ?? []).map((alt) => ({ key: alt.key, toKey: alt.toKey })),
24
+ optional: p.optional === true,
25
+ readBy: 'value',
26
+ listed: true,
27
+ })));
28
+ }
29
+ /** Case id → its input contract, built once at load (a contract that spells one key twice fails here). @internal */
30
+ export const CASE_CONTRACTS = new Map([...APPLIED_CASES].map(([id, c]) => [id, caseContract(c)]));
31
+ /**
32
+ * Run a case with a numeric input record. The inputs go through the same
33
+ * {@link checkInputs} contract as a catalog evaluator before the case's model runs.
34
+ * @throws Error on an unknown id.
35
+ * @throws UnknownInputError, InputTypeError, NonFiniteInputError, DuplicateInputError or
36
+ * MissingInputError on an input the contract refuses.
37
+ * @throws Error from the case's model on an input outside its domain.
17
38
  * @internal
18
39
  */
19
40
  export function runAppliedCase(id, inputs) {
20
41
  const c = APPLIED_CASES.get(id);
21
- if (c === undefined)
42
+ const contract = CASE_CONTRACTS.get(id);
43
+ if (c === undefined || contract === undefined) {
22
44
  throw new Error(`runAppliedCase: no case '${id}' (cases: ${[...APPLIED_CASES.keys()].join(', ')})`);
23
- const missing = c.parameters.filter((p) => p.optional !== true || p.key in inputs).map((p) => p.key).filter((k) => !(k in inputs) || !Number.isFinite(inputs[k]));
24
- if (missing.length > 0) {
25
- throw new Error(`${id} needs {${c.parameters.map((p) => p.key).join(', ')}}; missing/non-finite: ${missing.join(', ')}`);
26
45
  }
27
- return c.run(inputs);
46
+ return c.run(checkInputs(contract, inputs));
28
47
  }
29
48
  //# sourceMappingURL=index.js.map