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
@@ -17,7 +17,7 @@ import { CHARGE, DIMENSIONLESS, ENERGY } from '../dimensional/types.js';
17
17
  import { equals, format, multiply } from '../dimensional/algebra.js';
18
18
  import { validate } from '../dimensional/validator.js';
19
19
  import { sym } from '../dimensional/ast-builders.js';
20
- import { EULER_NUMBER_ERROR, FormulaError } from './formula-contract.js';
20
+ import { EULER_NUMBER_ERROR, EulerNumberError, FormulaError, SCALAR_FUNCTIONS, unknownFunctionMessage } from './formula-contract.js';
21
21
  /** A formula cannot be dimensionally analyzed (undeclared symbol, variable
22
22
  * exponent, transcendental of a dimensional argument, unsupported node).
23
23
  * @public */
@@ -27,7 +27,38 @@ export class FormulaDimensionError extends Error {
27
27
  this.name = 'FormulaDimensionError';
28
28
  }
29
29
  }
30
- /** Dimensionless math constants both parsers recognize. Bare `e` is not here:
30
+ /** The parse tree holds a node the normalized form has no shape for (`a.b`, `[1, 2]`, `x > 2`). @internal */
31
+ export class UnsupportedSyntaxError extends FormulaDimensionError {
32
+ nodeType;
33
+ constructor(nodeType, detail) {
34
+ super(detail);
35
+ this.nodeType = nodeType;
36
+ this.name = 'UnsupportedSyntaxError';
37
+ }
38
+ }
39
+ /**
40
+ * A formula names a symbol with no declared dimension and no known one. A
41
+ * caller reads it through the check result's `undeclaredSymbol`. @internal
42
+ */
43
+ class UndeclaredSymbolError extends FormulaDimensionError {
44
+ symbol;
45
+ constructor(symbol) {
46
+ super(`undeclared symbol '${symbol}' — declare its dimension (a separate name:dimension argument, for example x:length)`);
47
+ this.symbol = symbol;
48
+ this.name = 'UndeclaredSymbolError';
49
+ }
50
+ }
51
+ /**
52
+ * A sum is not homogeneous because a bare `e`, read as the elementary charge,
53
+ * meets a dimensionless term (`1 - e^2`). @internal
54
+ */
55
+ class ElementaryChargeMixError extends FormulaDimensionError {
56
+ constructor(note) {
57
+ super(`${ELEMENTARY_CHARGE_MIX_MESSAGE} ${note}`);
58
+ this.name = 'ElementaryChargeMixError';
59
+ }
60
+ }
61
+ /** Dimensionless math constants the parser recognizes. Bare `e` is not here:
31
62
  * ISO 80000 names that symbol the elementary charge. Euler's number is `exp(x)`. */
32
63
  const MATH_CONSTANTS = new Set(['pi', 'tau', 'phi', 'Infinity', 'NaN']);
33
64
  /**
@@ -47,29 +78,10 @@ export function formulaSymbolDimension(name) {
47
78
  return DIMENSIONLESS;
48
79
  return undefined;
49
80
  }
50
- /** Parser function names → the dimensional grammar's `transcendental` node fn
51
- * (dimensionless → dimensionless). `log` is natural log (mathjs convention). */
52
- const TRANSCENDENTAL_FN = {
53
- exp: 'exp', ln: 'ln', log: 'ln', log10: 'log10', log2: 'log2',
54
- sin: 'sin', cos: 'cos', tan: 'tan', sinh: 'sinh', cosh: 'cosh', tanh: 'tanh',
55
- };
56
- /** Transcendentals WITHOUT a grammar node — kept as dimensionless stubs (still
57
- * dimensionless→dimensionless, just not a faithful node). */
58
- const TRANSCENDENTAL_STUB = new Set(['asin', 'acos', 'atan', 'sec', 'csc', 'cot']);
59
81
  const op = (o, args) => ({ kind: 'op', op: o, args });
60
82
  const powExpr = (base, exp) => op('^', [base, sym(String(exp), DIMENSIONLESS)]);
61
83
  const transcendental = (fn, arg) => ({ kind: 'transcendental', fn, arg });
62
84
  const absNode = (arg) => ({ kind: 'abs', arg });
63
- /** Dispatch a parsed function name to its `ExprNode`. Shared by both transpilers. */
64
- function transpileFunction(fn, argExpr) {
65
- if (fn === 'abs')
66
- return absNode(argExpr);
67
- if (fn in TRANSCENDENTAL_FN)
68
- return transcendental(TRANSCENDENTAL_FN[fn], argExpr);
69
- if (TRANSCENDENTAL_STUB.has(fn))
70
- return transcendentalStub(fn, argExpr);
71
- return null;
72
- }
73
85
  /** Resolve a symbol to a dimensioned `ExprNode` (declared dim, or a
74
86
  * dimensionless math constant, else an error). */
75
87
  function resolveSymbol(name, dims) {
@@ -80,7 +92,7 @@ function resolveSymbol(name, dims) {
80
92
  const known = formulaSymbolDimension(name);
81
93
  if (known !== undefined)
82
94
  return sym(name, known);
83
- throw new FormulaDimensionError(`undeclared symbol '${name}' — declare its dimension (a separate name:dimension argument, for example x:length)`);
95
+ throw new UndeclaredSymbolError(name);
84
96
  }
85
97
  const CHARGE_SQUARED = multiply(CHARGE, CHARGE);
86
98
  /** A bare `e`, not `exp`, `e_charge`, `eps0`, or the exponent in `1e-19`. */
@@ -101,9 +113,8 @@ function dimensionIsCharge(dim) {
101
113
  * What to say when a bare `e` was the elementary charge inside a sum that is
102
114
  * not homogeneous. Declaring or binding `e` keeps a different quantity.
103
115
  * Euler's number is `exp(x)`.
104
- * @internal
105
116
  */
106
- export const ELEMENTARY_CHARGE_MIX_MESSAGE = 'e is the elementary charge and is not dimensionless here. Declare it or bind a value (e=<number>) if you mean a different quantity, or write Euler\'s number as exp(x). The catalog writes the eccentricity factor as one_minus_e_sq.';
117
+ const ELEMENTARY_CHARGE_MIX_MESSAGE = 'e is the elementary charge and is not dimensionless here. Declare it or bind a value (e=<number>) if you mean a different quantity, or write Euler\'s number as exp(x). The catalog writes the eccentricity factor as one_minus_e_sq.';
107
118
  /** Inferred dimension of an `ExprNode`, or throw if not homogeneous. */
108
119
  function dimensionOf(node) {
109
120
  const r = validate(node);
@@ -121,6 +132,39 @@ function transcendentalStub(fn, argExprNode) {
121
132
  }
122
133
  return sym(`${fn}(...)`, DIMENSIONLESS);
123
134
  }
135
+ /**
136
+ * A call, dispatched by the one function table's dimension rule. The arity is
137
+ * the table's: a call with another number of arguments is a dimension error,
138
+ * not a crash on a missing argument or a silently dropped extra one.
139
+ */
140
+ function callToExpr(fn, args, dims) {
141
+ const spec = SCALAR_FUNCTIONS[fn];
142
+ if (spec === undefined)
143
+ throw new FormulaDimensionError(unknownFunctionMessage(fn));
144
+ if (args.length !== spec.arity) {
145
+ throw new FormulaDimensionError(`${fn}() expects ${spec.arity} argument${spec.arity === 1 ? '' : 's'}, got ${args.length}`);
146
+ }
147
+ const rule = spec.dimension;
148
+ switch (rule.kind) {
149
+ case 'root':
150
+ return powExpr(normToExpr(args[0], dims), rule.power);
151
+ case 'power':
152
+ return powOf(normToExpr(args[0], dims), args[1], dims);
153
+ case 'same':
154
+ return absNode(normToExpr(args[0], dims));
155
+ case 'transcendental': {
156
+ const arg = normToExpr(args[0], dims);
157
+ return rule.node === undefined ? transcendentalStub(fn, arg) : transcendental(rule.node, arg);
158
+ }
159
+ case 'ratio': {
160
+ const [y, x] = [dimensionOf(normToExpr(args[0], dims)), dimensionOf(normToExpr(args[1], dims))];
161
+ if (!equals(y, x)) {
162
+ throw new FormulaDimensionError(`${fn}() arguments must have the same dimension, got ${format(y)} and ${format(x)}`);
163
+ }
164
+ return sym(`${fn}(...)`, DIMENSIONLESS);
165
+ }
166
+ }
167
+ }
124
168
  /** Adapt a MathTS AST node to a `PNode` (pure shape map; no dimensions). */
125
169
  function mathtsToPNode(node) {
126
170
  switch (node.type) {
@@ -139,12 +183,12 @@ function mathtsToPNode(node) {
139
183
  if (node.op === '+' || node.op === '-' || node.op === '*' || node.op === '/') {
140
184
  return { kind: 'op', op: node.op, args };
141
185
  }
142
- throw new FormulaDimensionError(`unsupported operator '${node.op}'`);
186
+ throw new UnsupportedSyntaxError(node.type, `unsupported operator '${node.op}'`);
143
187
  }
144
188
  case 'FunctionNode':
145
189
  return { kind: 'call', fn: node.fn?.name ?? node.name ?? '', args: (node.args ?? []).map(mathtsToPNode) };
146
190
  default:
147
- throw new FormulaDimensionError(`unsupported node '${node.type}'`);
191
+ throw new UnsupportedSyntaxError(node.type, `unsupported node '${node.type}'`);
148
192
  }
149
193
  }
150
194
  /** Fold a (presumed constant) `PNode` to a finite number, else throw. */
@@ -154,6 +198,23 @@ function pnodeConstant(node) {
154
198
  throw new FormulaDimensionError('exponent must be a finite numeric constant');
155
199
  return v;
156
200
  }
201
+ /**
202
+ * The number a numeric-constant exponent folds to (`2`, `-1`, `1/2`,
203
+ * `(2+1)/3`), or undefined when the node names a symbol or a call. The
204
+ * binding reader uses the same folding for its exponents, so the two
205
+ * readers agree on what an exponent may be.
206
+ * @internal
207
+ */
208
+ export function constantExponent(node) {
209
+ try {
210
+ return pnodeConstant(node);
211
+ }
212
+ catch (error) {
213
+ if (error instanceof FormulaDimensionError)
214
+ return undefined;
215
+ throw error;
216
+ }
217
+ }
157
218
  function evalConstPNode(node) {
158
219
  switch (node.kind) {
159
220
  case 'num':
@@ -176,6 +237,24 @@ function evalConstPNode(node) {
176
237
  throw new FormulaDimensionError('exponent must be a numeric constant');
177
238
  }
178
239
  }
240
+ /**
241
+ * `base ^ exponent`. A numeric-constant exponent is the dimensional power. An
242
+ * input-dependent exponent is built as a `^` node and the validator decides:
243
+ * it is legal only on a dimensionless base, with a dimensionless exponent.
244
+ */
245
+ function powOf(base, exponent, dims) {
246
+ let constant;
247
+ try {
248
+ constant = pnodeConstant(exponent);
249
+ }
250
+ catch (error) {
251
+ if (!(error instanceof FormulaDimensionError))
252
+ throw error;
253
+ }
254
+ if (constant !== undefined)
255
+ return powExpr(base, constant);
256
+ return op('^', [base, normToExpr(exponent, dims)]);
257
+ }
179
258
  /** The ONE transpiler: normalized parse node → dimensional `ExprNode`. */
180
259
  function normToExpr(node, dims) {
181
260
  switch (node.kind) {
@@ -188,20 +267,9 @@ function normToExpr(node, dims) {
188
267
  case 'op':
189
268
  return op(node.op, node.args.map((a) => normToExpr(a, dims)));
190
269
  case 'pow':
191
- return powExpr(normToExpr(node.base, dims), pnodeConstant(node.exp));
192
- case 'call': {
193
- const fn = node.fn;
194
- if (fn === 'sqrt')
195
- return powExpr(normToExpr(node.args[0], dims), 0.5);
196
- if (fn === 'cbrt')
197
- return powExpr(normToExpr(node.args[0], dims), 1 / 3);
198
- if (fn === 'pow')
199
- return powExpr(normToExpr(node.args[0], dims), pnodeConstant(node.args[1]));
200
- const fnNode = transpileFunction(fn, normToExpr(node.args[0], dims));
201
- if (fnNode)
202
- return fnNode;
203
- throw new FormulaDimensionError(`unsupported function '${fn}'`);
204
- }
270
+ return powOf(normToExpr(node.base, dims), node.exp, dims);
271
+ case 'call':
272
+ return callToExpr(node.fn, node.args, dims);
205
273
  }
206
274
  }
207
275
  /** Build a checker from an `(expr, dims) → ExprNode` transpile (parse +
@@ -223,7 +291,7 @@ function createFormulaDimensionChecker(toExprNode) {
223
291
  const chargeMixed = formulaHasBareE(expr) &&
224
292
  eIsElementaryCharge(dims) &&
225
293
  r.violations.some((v) => dimensionIsCharge(v.expected) || dimensionIsCharge(v.actual));
226
- throw new FormulaDimensionError(chargeMixed ? `${ELEMENTARY_CHARGE_MIX_MESSAGE} ${note}` : note);
294
+ throw chargeMixed ? new ElementaryChargeMixError(note) : new FormulaDimensionError(note);
227
295
  }
228
296
  return { expr: exprNode, dimension: r.inferredDimension };
229
297
  };
@@ -234,13 +302,21 @@ function createFormulaDimensionChecker(toExprNode) {
234
302
  return { ok: true, dim: parse(expr, dims).dimension };
235
303
  }
236
304
  catch (e) {
237
- return { ok: false, error: e instanceof Error ? e.message : String(e) };
305
+ return {
306
+ ok: false,
307
+ error: e instanceof Error ? e.message : String(e),
308
+ ...(e instanceof ElementaryChargeMixError ? { elementaryChargeMixed: true } : {}),
309
+ ...(e instanceof UndeclaredSymbolError ? { undeclaredSymbol: e.symbol } : {}),
310
+ };
238
311
  }
239
312
  },
240
313
  };
241
314
  }
242
315
  function parsedMathNode(expr) {
243
316
  try {
317
+ // MathTS's Node type is not imported; `MathNode` is the structural subset
318
+ // this adapter reads (`type`, `value`, `name`, `op`, `args`, `content`,
319
+ // `fn`), every field of which exists on a MathTS node of that `type`.
244
320
  return parseMathTs(expr);
245
321
  }
246
322
  catch (e) {
@@ -261,7 +337,7 @@ function refuseEuler(node) {
261
337
  switch (node.kind) {
262
338
  case 'sym':
263
339
  if (node.name === 'euler')
264
- throw new FormulaError(EULER_NUMBER_ERROR);
340
+ throw new EulerNumberError();
265
341
  return;
266
342
  case 'neg':
267
343
  refuseEuler(node.arg);
@@ -276,7 +352,7 @@ function refuseEuler(node) {
276
352
  return;
277
353
  case 'call':
278
354
  if (node.fn === 'euler')
279
- throw new FormulaError(EULER_NUMBER_ERROR);
355
+ throw new EulerNumberError();
280
356
  for (const a of node.args)
281
357
  refuseEuler(a);
282
358
  return;
@@ -1 +1 @@
1
- {"version":3,"file":"formula-dimension.js","sourceRoot":"","sources":["../../src/numerical/formula-dimension.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"formula-dimension.js","sourceRoot":"","sources":["../../src/numerical/formula-dimension.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Formula dimensional check (MathTS Phase 2 — see\n * docs/planning/Formula-Dimensional-Check-Design-Note.md).\n *\n * Transpiles a parsed formula AST into UPT's own dimensional `ExprNode` and\n * runs `validate()`, so the CLI can report whether a user's formula is\n * dimensionally HOMOGENEOUS and what dimension it has — unifying string→AST\n * with AST→dimension.\n *\n * The MathTS AST is the only front-end. It adapts to a normalized `PNode`,\n * and the dimensional transpilation lives on that node.\n *\n * @module numerical/formula-dimension\n */\n\nimport { parse as parseMathTs } from '@danielsimonjr/mathts-functions';\nimport type { Dimension } from '../dimensional/types.js';\nimport { CHARGE, DIMENSIONLESS, ENERGY } from '../dimensional/types.js';\nimport { equals, format, multiply } from '../dimensional/algebra.js';\nimport type { ExprNode, TranscendentalFn } from '../dimensional/validator.js';\nimport { validate } from '../dimensional/validator.js';\nimport { sym } from '../dimensional/ast-builders.js';\nimport { EULER_NUMBER_ERROR, EulerNumberError, FormulaError, SCALAR_FUNCTIONS, unknownFunctionMessage } from './formula-contract.js';\n\n/** A formula cannot be dimensionally analyzed (undeclared symbol, variable\n * exponent, transcendental of a dimensional argument, unsupported node).\n * @public */\nexport class FormulaDimensionError extends Error {\n constructor(message: string) {\n super(message);\n this.name = 'FormulaDimensionError';\n }\n}\n\n/** The parse tree holds a node the normalized form has no shape for (`a.b`, `[1, 2]`, `x > 2`). @internal */\nexport class UnsupportedSyntaxError extends FormulaDimensionError {\n constructor(readonly nodeType: string, detail: string) {\n super(detail);\n this.name = 'UnsupportedSyntaxError';\n }\n}\n\n/**\n * A formula names a symbol with no declared dimension and no known one. A\n * caller reads it through the check result's `undeclaredSymbol`. @internal\n */\nclass UndeclaredSymbolError extends FormulaDimensionError {\n constructor(readonly symbol: string) {\n super(`undeclared symbol '${symbol}' — declare its dimension (a separate name:dimension argument, for example x:length)`);\n this.name = 'UndeclaredSymbolError';\n }\n}\n\n/**\n * A sum is not homogeneous because a bare `e`, read as the elementary charge,\n * meets a dimensionless term (`1 - e^2`). @internal\n */\nclass ElementaryChargeMixError extends FormulaDimensionError {\n constructor(note: string) {\n super(`${ELEMENTARY_CHARGE_MIX_MESSAGE} ${note}`);\n this.name = 'ElementaryChargeMixError';\n }\n}\n\n/** Dimensionless math constants the parser recognizes. Bare `e` is not here:\n * ISO 80000 names that symbol the elementary charge. Euler's number is `exp(x)`. */\nconst MATH_CONSTANTS = new Set(['pi', 'tau', 'phi', 'Infinity', 'NaN']);\n\n/**\n * Dimension of a symbol the physics parser knows when the caller did not\n * declare one. A caller-supplied dimension still wins. `e` is the elementary\n * charge. `E` is energy. The name `euler` is not a constant.\n * @internal\n */\nexport function formulaSymbolDimension(name: string): Dimension | undefined {\n if (name === 'e') return CHARGE;\n if (name === 'E') return ENERGY;\n if (name === 'euler') return undefined;\n if (MATH_CONSTANTS.has(name)) return DIMENSIONLESS;\n return undefined;\n}\n\nconst op = (o: '+' | '-' | '*' | '/' | '^', args: ExprNode[]): ExprNode => ({ kind: 'op', op: o, args });\nconst powExpr = (base: ExprNode, exp: number): ExprNode => op('^', [base, sym(String(exp), DIMENSIONLESS)]);\nconst transcendental = (fn: TranscendentalFn, arg: ExprNode): ExprNode => ({ kind: 'transcendental', fn, arg });\nconst absNode = (arg: ExprNode): ExprNode => ({ kind: 'abs', arg });\n\n/** Resolve a symbol to a dimensioned `ExprNode` (declared dim, or a\n * dimensionless math constant, else an error). */\nfunction resolveSymbol(name: string, dims: Readonly<Record<string, Dimension>>): ExprNode {\n if (name === 'euler' && !(name in dims)) throw new FormulaDimensionError(EULER_NUMBER_ERROR);\n if (name in dims) return sym(name, dims[name]);\n const known = formulaSymbolDimension(name);\n if (known !== undefined) return sym(name, known);\n throw new UndeclaredSymbolError(name);\n}\n\nconst CHARGE_SQUARED = multiply(CHARGE, CHARGE);\n\n/** A bare `e`, not `exp`, `e_charge`, `eps0`, or the exponent in `1e-19`. */\nfunction formulaHasBareE(expr: string): boolean {\n return /(?<![A-Za-z0-9_])e(?![A-Za-z0-9_])/.test(expr);\n}\n\n/**\n * `e` is the elementary charge when the caller did not give it another\n * dimension. A declared dimensionless `e` is not this case.\n */\nfunction eIsElementaryCharge(dims: Readonly<Record<string, Dimension>>): boolean {\n return !('e' in dims) || equals(dims.e, CHARGE);\n}\n\nfunction dimensionIsCharge(dim: Dimension): boolean {\n return equals(dim, CHARGE) || equals(dim, CHARGE_SQUARED);\n}\n\n/**\n * What to say when a bare `e` was the elementary charge inside a sum that is\n * not homogeneous. Declaring or binding `e` keeps a different quantity.\n * Euler's number is `exp(x)`.\n */\nconst ELEMENTARY_CHARGE_MIX_MESSAGE =\n 'e is the elementary charge and is not dimensionless here. Declare it or bind a value (e=<number>) if you mean a different quantity, or write Euler\\'s number as exp(x). The catalog writes the eccentricity factor as one_minus_e_sq.';\n\n/** Inferred dimension of an `ExprNode`, or throw if not homogeneous. */\nfunction dimensionOf(node: ExprNode): Dimension {\n const r = validate(node);\n if (!r.ok || r.inferredDimension === null) {\n throw new FormulaDimensionError(\n r.violations[0]?.note ?? 'expression is not dimensionally consistent',\n );\n }\n return r.inferredDimension;\n}\n\n/** Transcendental typed-stub: assert the argument is dimensionless, collapse\n * to a dimensionless symbol (keeps the `ExprNode` grammar unchanged). */\nfunction transcendentalStub(fn: string, argExprNode: ExprNode): ExprNode {\n const argDim = dimensionOf(argExprNode);\n if (!equals(argDim, DIMENSIONLESS)) {\n throw new FormulaDimensionError(\n `${fn}() requires a dimensionless argument, got ${format(argDim)}`,\n );\n }\n return sym(`${fn}(...)`, DIMENSIONLESS);\n}\n\n/**\n * A call, dispatched by the one function table's dimension rule. The arity is\n * the table's: a call with another number of arguments is a dimension error,\n * not a crash on a missing argument or a silently dropped extra one.\n */\nfunction callToExpr(fn: string, args: readonly PNode[], dims: Readonly<Record<string, Dimension>>): ExprNode {\n const spec = SCALAR_FUNCTIONS[fn];\n if (spec === undefined) throw new FormulaDimensionError(unknownFunctionMessage(fn));\n if (args.length !== spec.arity) {\n throw new FormulaDimensionError(\n `${fn}() expects ${spec.arity} argument${spec.arity === 1 ? '' : 's'}, got ${args.length}`,\n );\n }\n const rule = spec.dimension;\n switch (rule.kind) {\n case 'root':\n return powExpr(normToExpr(args[0]!, dims), rule.power);\n case 'power':\n return powOf(normToExpr(args[0]!, dims), args[1]!, dims);\n case 'same':\n return absNode(normToExpr(args[0]!, dims));\n case 'transcendental': {\n const arg = normToExpr(args[0]!, dims);\n return rule.node === undefined ? transcendentalStub(fn, arg) : transcendental(rule.node, arg);\n }\n case 'ratio': {\n const [y, x] = [dimensionOf(normToExpr(args[0]!, dims)), dimensionOf(normToExpr(args[1]!, dims))];\n if (!equals(y, x)) {\n throw new FormulaDimensionError(`${fn}() arguments must have the same dimension, got ${format(y)} and ${format(x)}`);\n }\n return sym(`${fn}(...)`, DIMENSIONLESS);\n }\n }\n}\n\n// --- one transpiler over a normalized parse node (Phase 2) ----------------\n//\n// The MathTS AST, the one front-end, is adapted to a tiny normalized `PNode`;\n// the dimensional transpilation (`normToExpr`) and the constant-exponent\n// folding (`pnodeConstant`) live in ONE place. `ExprNode` is the single\n// semantic IR; the parse-tree is transient.\n\n/** Structural shape of a MathTS AST node (the bits the adapter reads). */\ninterface MathNode {\n readonly type: string;\n readonly value?: number;\n readonly name?: string;\n readonly op?: string;\n readonly args?: MathNode[];\n readonly content?: MathNode;\n readonly fn?: { readonly name?: string };\n}\n\n/** Normalized parse node — the shape the MathTS AST adapts to. @internal */\ntype PNode =\n | { kind: 'num'; value: number }\n | { kind: 'sym'; name: string }\n | { kind: 'neg'; arg: PNode } // unary minus (dimension-neutral)\n | { kind: 'op'; op: '+' | '-' | '*' | '/'; args: PNode[] }\n | { kind: 'pow'; base: PNode; exp: PNode } // exp must fold to a constant\n | { kind: 'call'; fn: string; args: PNode[] };\n\n/** The normalized node {@link parseFormulaPNode} returns. @internal */\nexport type FormulaPNode = PNode;\n\n/** Adapt a MathTS AST node to a `PNode` (pure shape map; no dimensions). */\nfunction mathtsToPNode(node: MathNode): PNode {\n switch (node.type) {\n case 'ConstantNode':\n return { kind: 'num', value: Number(node.value) };\n case 'SymbolNode':\n return { kind: 'sym', name: node.name! };\n case 'ParenthesisNode':\n return mathtsToPNode(node.content!);\n case 'OperatorNode': {\n const args = (node.args ?? []).map(mathtsToPNode);\n if (node.op === '-' && args.length === 1) return { kind: 'neg', arg: args[0] };\n if (node.op === '^') return { kind: 'pow', base: args[0], exp: args[1] };\n if (node.op === '+' || node.op === '-' || node.op === '*' || node.op === '/') {\n return { kind: 'op', op: node.op, args };\n }\n throw new UnsupportedSyntaxError(node.type, `unsupported operator '${node.op}'`);\n }\n case 'FunctionNode':\n return { kind: 'call', fn: node.fn?.name ?? node.name ?? '', args: (node.args ?? []).map(mathtsToPNode) };\n default:\n throw new UnsupportedSyntaxError(node.type, `unsupported node '${node.type}'`);\n }\n}\n\n/** Fold a (presumed constant) `PNode` to a finite number, else throw. */\nfunction pnodeConstant(node: PNode): number {\n const v = evalConstPNode(node);\n if (!Number.isFinite(v)) throw new FormulaDimensionError('exponent must be a finite numeric constant');\n return v;\n}\n\n/**\n * The number a numeric-constant exponent folds to (`2`, `-1`, `1/2`,\n * `(2+1)/3`), or undefined when the node names a symbol or a call. The\n * binding reader uses the same folding for its exponents, so the two\n * readers agree on what an exponent may be.\n * @internal\n */\nexport function constantExponent(node: PNode): number | undefined {\n try {\n return pnodeConstant(node);\n } catch (error) {\n if (error instanceof FormulaDimensionError) return undefined;\n throw error;\n }\n}\n\nfunction evalConstPNode(node: PNode): number {\n switch (node.kind) {\n case 'num':\n return node.value;\n case 'neg':\n return -evalConstPNode(node.arg);\n case 'pow':\n return Math.pow(evalConstPNode(node.base), evalConstPNode(node.exp));\n case 'op': {\n const v = node.args.map(evalConstPNode);\n switch (node.op) {\n case '+': return v.reduce((a, b) => a + b, 0);\n case '-': return v.length === 1 ? -v[0] : v.reduce((a, b) => a - b);\n case '*': return v.reduce((a, b) => a * b, 1);\n case '/': return v.reduce((a, b) => a / b);\n }\n }\n // falls through: a 'sym' or 'call' is not a numeric constant\n default:\n throw new FormulaDimensionError('exponent must be a numeric constant');\n }\n}\n\n/**\n * `base ^ exponent`. A numeric-constant exponent is the dimensional power. An\n * input-dependent exponent is built as a `^` node and the validator decides:\n * it is legal only on a dimensionless base, with a dimensionless exponent.\n */\nfunction powOf(base: ExprNode, exponent: PNode, dims: Readonly<Record<string, Dimension>>): ExprNode {\n let constant: number | undefined;\n try {\n constant = pnodeConstant(exponent);\n } catch (error) {\n if (!(error instanceof FormulaDimensionError)) throw error;\n }\n if (constant !== undefined) return powExpr(base, constant);\n return op('^', [base, normToExpr(exponent, dims)]);\n}\n\n/** The ONE transpiler: normalized parse node → dimensional `ExprNode`. */\nfunction normToExpr(node: PNode, dims: Readonly<Record<string, Dimension>>): ExprNode {\n switch (node.kind) {\n case 'num':\n return sym(String(node.value), DIMENSIONLESS);\n case 'sym':\n return resolveSymbol(node.name, dims);\n case 'neg':\n return normToExpr(node.arg, dims); // sign is dimension-neutral\n case 'op':\n return op(node.op, node.args.map((a) => normToExpr(a, dims)));\n case 'pow':\n return powOf(normToExpr(node.base, dims), node.exp, dims);\n case 'call':\n return callToExpr(node.fn, node.args, dims);\n }\n}\n\n// --- the shared checker ---------------------------------------------------\n\n/** The result of a formula dimensional check. */\ninterface FormulaDimensionResult {\n /** True iff the formula is dimensionally homogeneous and well-formed. */\n readonly ok: boolean;\n /** The inferred dimension when `ok`. */\n readonly dim?: Dimension;\n /** Human-readable reason when `!ok`. */\n readonly error?: string;\n /** Set when `!ok` because a bare `e` (the elementary charge) met a dimensionless term. */\n readonly elementaryChargeMixed?: true;\n /** Set when `!ok` because the formula names this symbol with no dimension declared or known. */\n readonly undeclaredSymbol?: string;\n}\n\n/** A parsed physics expression: its dimensional `ExprNode` + inferred dimension. */\nexport interface ParsedPhysics {\n readonly expr: ExprNode;\n readonly dimension: Dimension;\n}\n\n/** A bound checker: non-throwing `check`, and throwing `parse` (the ExprNode). */\nexport interface FormulaDimensionChecker {\n check(expr: string, dims: Readonly<Record<string, Dimension>>): FormulaDimensionResult;\n /** Parse + transpile + validate → `{ expr, dimension }`.\n * @throws {FormulaDimensionError} on a parse error or non-homogeneity. */\n parse(expr: string, dims: Readonly<Record<string, Dimension>>): ParsedPhysics;\n}\n\n/** Build a checker from an `(expr, dims) → ExprNode` transpile (parse +\n * transpile, which may throw a parse error or `FormulaDimensionError`). */\nfunction createFormulaDimensionChecker(\n toExprNode: (expr: string, dims: Readonly<Record<string, Dimension>>) => ExprNode,\n): FormulaDimensionChecker {\n const parse = (expr: string, dims: Readonly<Record<string, Dimension>>): ParsedPhysics => {\n let exprNode: ExprNode;\n try {\n exprNode = toExprNode(expr, dims);\n } catch (e) {\n if (e instanceof FormulaDimensionError) throw e;\n throw new FormulaDimensionError(`parse error: ${e instanceof Error ? e.message : String(e)}`);\n }\n const r = validate(exprNode);\n if (!r.ok || r.inferredDimension === null) {\n const note = r.violations[0]?.note ?? 'not dimensionally homogeneous';\n const chargeMixed =\n formulaHasBareE(expr) &&\n eIsElementaryCharge(dims) &&\n r.violations.some((v) => dimensionIsCharge(v.expected) || dimensionIsCharge(v.actual));\n throw chargeMixed ? new ElementaryChargeMixError(note) : new FormulaDimensionError(note);\n }\n return { expr: exprNode, dimension: r.inferredDimension };\n };\n return {\n parse,\n check(expr, dims) {\n try {\n return { ok: true, dim: parse(expr, dims).dimension };\n } catch (e) {\n return {\n ok: false,\n error: e instanceof Error ? e.message : String(e),\n ...(e instanceof ElementaryChargeMixError ? { elementaryChargeMixed: true as const } : {}),\n ...(e instanceof UndeclaredSymbolError ? { undeclaredSymbol: e.symbol } : {}),\n };\n }\n },\n };\n}\n\nfunction parsedMathNode(expr: string): MathNode {\n try {\n // MathTS's Node type is not imported; `MathNode` is the structural subset\n // this adapter reads (`type`, `value`, `name`, `op`, `args`, `content`,\n // `fn`), every field of which exists on a MathTS node of that `type`.\n return parseMathTs(expr) as unknown as MathNode;\n } catch (e) {\n throw new FormulaError(`parse error: ${e instanceof Error ? e.message : String(e)}`);\n }\n}\n\n/**\n * Parse a formula to the normalized node the binding reader evaluates.\n * `euler` is refused here so a binding never becomes Math.E.\n * @internal\n */\nexport function parseFormulaPNode(expr: string): PNode {\n const node = mathtsToPNode(parsedMathNode(expr));\n refuseEuler(node);\n return node;\n}\n\nfunction refuseEuler(node: PNode): void {\n switch (node.kind) {\n case 'sym':\n if (node.name === 'euler') throw new EulerNumberError();\n return;\n case 'neg':\n refuseEuler(node.arg);\n return;\n case 'op':\n for (const a of node.args) refuseEuler(a);\n return;\n case 'pow':\n refuseEuler(node.base);\n refuseEuler(node.exp);\n return;\n case 'call':\n if (node.fn === 'euler') throw new EulerNumberError();\n for (const a of node.args) refuseEuler(a);\n return;\n case 'num':\n return;\n }\n}\n\n/** The dimensional checker over the MathTS AST. The historical name stays. */\nexport function builtinFormulaDimensionChecker(): FormulaDimensionChecker {\n return createFormulaDimensionChecker((expr, dims) => normToExpr(mathtsToPNode(parsedMathNode(expr)), dims));\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"formula-mathts.d.ts","sourceRoot":"","sources":["../../src/numerical/formula-mathts.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAGH,OAAO,KAAK,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAmK5E,2CAA2C;AAC3C,eAAO,MAAM,mBAAmB,EAAE,aAAuD,CAAC;AAE1F,wCAAwC;AACxC,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,eAAe,CAE1D"}
1
+ {"version":3,"file":"formula-mathts.d.ts","sourceRoot":"","sources":["../../src/numerical/formula-mathts.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAGH,OAAO,KAAK,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AA0K5E,2CAA2C;AAC3C,eAAO,MAAM,mBAAmB,EAAE,aAAuD,CAAC;AAE1F,wCAAwC;AACxC,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,eAAe,CAE1D"}
@@ -18,7 +18,7 @@
18
18
  * @module numerical/formula-mathts
19
19
  */
20
20
  import { compileExpr, parse as parseMathTs } from '@danielsimonjr/mathts-functions';
21
- import { BUILTIN_FUNCTION_NAMES, callBuiltinFunction, EULER_NUMBER_ERROR, FormulaError, unknownFunctionMessage } from './formula-contract.js';
21
+ import { BUILTIN_FUNCTION_NAMES, callBuiltinFunction, EulerNumberError, FormulaError, unknownFunctionMessage, FormulaValueError } from './formula-contract.js';
22
22
  /** Bare `e` is the SI magnitude, not the coulomb Unit. */
23
23
  const PHYSICS_SCALAR = { physics: true, charge: 'scalar' };
24
24
  /**
@@ -100,7 +100,7 @@ function createMathtsFormulaParser(mod) {
100
100
  .map((n) => n.name)
101
101
  .filter((n) => typeof n === 'string');
102
102
  if (symbolNames.includes('euler') || callees.has('euler')) {
103
- throw new FormulaError(EULER_NUMBER_ERROR);
103
+ throw new EulerNumberError();
104
104
  }
105
105
  const unknownCallee = [...callees].find((n) => !(n in shims) && !isBuiltin(n));
106
106
  const variables = [
@@ -126,13 +126,17 @@ function createMathtsFormulaParser(mod) {
126
126
  catch (err) {
127
127
  // `compileExpr` quotes the name (`Undefined symbol "process"`).
128
128
  // The interpreter path reports `Undefined symbol process`.
129
+ // The one place src/ reads MathTS message text: MathTS throws a plain `Error` with no
130
+ // symbol field, and a pre-check against the scope cannot stand in because MathTS resolves
131
+ // some names itself (`hbar` reads as a unit). It only normalizes the text; nothing branches on it.
132
+ // Tracked in ACTIVE.md as a MathTS follow-up (a typed undefined-symbol error).
129
133
  const message = err instanceof Error ? err.message : String(err);
130
134
  throw new FormulaError(message.replace(/^Undefined symbol "([^"]+)"$/, 'Undefined symbol $1'));
131
135
  }
132
136
  if (typeof result !== 'number' || !Number.isFinite(result)) {
133
137
  // typeof Infinity and NaN is "number", which reads as a type error.
134
138
  // A Complex is an object; "got object" hides that sqrt(-1) left the reals.
135
- throw new FormulaError(`formula did not evaluate to a finite number (got ${describeNonFinite(result)})`);
139
+ throw new FormulaValueError(`formula did not evaluate to a finite number (got ${describeNonFinite(result)})`);
136
140
  }
137
141
  return result;
138
142
  },
@@ -154,6 +158,9 @@ function describeNonFinite(result) {
154
158
  return typeof result;
155
159
  }
156
160
  const mathTsModule = {
161
+ // MathTS's Node type is not imported; `MathNode` is the structural subset
162
+ // this parser reads (`evaluate`, `filter`, `isSymbolNode`, `isFunctionNode`,
163
+ // `name`, `fn`), every member of which exists on a MathTS node.
157
164
  parse: (expr) => parseMathTs(expr),
158
165
  };
159
166
  /** The MathTS formula parser. @internal */
@@ -1 +1 @@
1
- {"version":3,"file":"formula-mathts.js","sourceRoot":"","sources":["../../src/numerical/formula-mathts.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"formula-mathts.js","sourceRoot":"","sources":["../../src/numerical/formula-mathts.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * MathTS-backed scalar-formula parser.\n *\n * Backed by `@danielsimonjr/mathts-functions` (`parse(expr) → Node`,\n * `node.evaluate(scope)`). The package is a required dependency.\n *\n * SCALAR-ONLY guard: the CLI/inference contract returns a `number`. If a\n * formula evaluates to a non-number (matrix, complex, unit, function), this\n * throws a {@link FormulaError} rather than leaking MathTS types through the\n * seam.\n *\n * Bare `e` is the elementary charge. MathTS `{ physics: true, charge: 'scalar' }`\n * binds that symbol to the SI magnitude `1.602176634e-19`, so `1-e^2` is\n * ordinary arithmetic. `{ physics: true }` without `charge: 'scalar'` is a\n * Unit, and subtract does not accept it. Euler's number is `exp(x)`. The name\n * `euler` is refused. `E` stays unbound.\n *\n * @module numerical/formula-mathts\n */\n\nimport { compileExpr, parse as parseMathTs } from '@danielsimonjr/mathts-functions';\nimport type { CompiledFormula, FormulaParser } from './formula-contract.js';\nimport { BUILTIN_FUNCTION_NAMES, callBuiltinFunction, EulerNumberError, FormulaError, unknownFunctionMessage, FormulaValueError } from './formula-contract.js';\n\n/** Bare `e` is the SI magnitude, not the coulomb Unit. */\nconst PHYSICS_SCALAR = { physics: true, charge: 'scalar' } as const;\n\n/** Minimal structural shape of a MathTS AST node (the bits we use). */\ninterface MathNode {\n evaluate(scope: Record<string, number>): unknown;\n filter(predicate: (node: MathNode) => boolean): MathNode[];\n toString(): string;\n readonly isSymbolNode?: boolean;\n readonly isFunctionNode?: boolean;\n readonly name?: string;\n readonly fn?: { readonly name?: string };\n}\n\n/** Minimal structural shape of the @danielsimonjr/mathts-functions module. */\ninterface MathtsFunctionsModule {\n parse(expr: string): MathNode;\n}\n\n/**\n * Build a {@link FormulaParser} bound to an already-loaded mathts-functions\n * module. Pure (no I/O) — the dynamic import lives in the registry.\n */\nfunction createMathtsFormulaParser(\n mod: MathtsFunctionsModule,\n): FormulaParser {\n const builtinCache = new Map<string, boolean>();\n const isBuiltin = (name: string): boolean => {\n const cached = builtinCache.get(name);\n if (cached !== undefined) return cached;\n let builtin: boolean;\n try {\n mod.parse(name).evaluate({});\n builtin = true; // pi / e / sin / … resolve with an empty scope\n } catch {\n builtin = false; // a free variable does not\n }\n builtinCache.set(name, builtin);\n return builtin;\n };\n\n // A MathTS *function* (`gamma`, `distance`, `zeta`, `sin`, …) also resolves\n // with an empty scope: it returns the function. That is not a value. A bare\n // symbol with that name is a quantity (the adiabatic index, a length), and\n // treating it as a built-in dropped it from the free-variable list, so\n // `sqrt(gamma*pressure/density)` died as \"undeclared symbol 'gamma'\".\n // Only a name that evaluates to a number is a MathTS constant (`pi`, `tau`).\n // Bare `e` is one of those under MathTS's default (Euler's number). Evaluation\n // below reads it as the elementary charge through `{ physics: true, charge: 'scalar' }`.\n // An explicit scope `e` still wins. The name `euler` is refused below.\n // A call such as `gamma(5)` is still a callee, decided separately.\n const valueConstantCache = new Map<string, boolean>();\n const isValueConstant = (name: string): boolean => {\n const cached = valueConstantCache.get(name);\n if (cached !== undefined) return cached;\n let constant = false;\n try {\n constant = typeof mod.parse(name).evaluate({}) === 'number';\n } catch {\n constant = false;\n }\n valueConstantCache.set(name, constant);\n return constant;\n };\n\n // Functions the built-in parser documents but MathTS does not define (`ln`),\n // supplied through the scope so a formula means the same under either\n // parser. Anything outside the documented list still fails.\n const shims: Record<string, (...args: number[]) => number> = {};\n for (const name of BUILTIN_FUNCTION_NAMES) {\n if (!isBuiltin(name)) shims[name] = (...args) => callBuiltinFunction(name, args);\n }\n\n return {\n parse(expr: string): CompiledFormula {\n if (!expr || !expr.trim()) throw new FormulaError('empty formula');\n let node: MathNode;\n try {\n node = mod.parse(expr);\n } catch (err) {\n throw new FormulaError(\n `parse error: ${err instanceof Error ? err.message : String(err)}`,\n );\n }\n\n // Free variables = symbol names − function callees − numeric constants.\n // A function name is excluded only where it is called (`gamma(5)`), not\n // where it is a quantity (`gamma` the adiabatic index).\n const callees = new Set(\n node\n .filter((n) => n.isFunctionNode === true)\n .map((n) => n.fn?.name)\n .filter((n): n is string => typeof n === 'string'),\n );\n // A callee MathTS does not resolve and no shim supplies: evaluation would fail with MathTS's\n // own \"Undefined function\", so it fails with the shared diagnostic instead (audit I4).\n const symbolNames = node\n .filter((n) => n.isSymbolNode === true)\n .map((n) => n.name)\n .filter((n): n is string => typeof n === 'string');\n if (symbolNames.includes('euler') || callees.has('euler')) {\n throw new EulerNumberError();\n }\n const unknownCallee = [...callees].find((n) => !(n in shims) && !isBuiltin(n));\n const variables = [\n ...new Set(\n node\n .filter((n) => n.isSymbolNode === true)\n .map((n) => n.name)\n .filter((n): n is string => typeof n === 'string')\n .filter((n) => !callees.has(n) && !isValueConstant(n)),\n ),\n ].sort();\n\n // `compileExpr` applies `{ physics: true, charge: 'scalar' }` on each\n // evaluation, so bare `e` is the SI magnitude and a scope entry for `e` wins.\n const compiled = compileExpr(expr, PHYSICS_SCALAR);\n return {\n source: expr,\n variables,\n evaluate(scope: Record<string, number>): number {\n if (unknownCallee !== undefined) throw new FormulaError(unknownFunctionMessage(unknownCallee));\n let result: unknown;\n try {\n result = compiled.evaluate({ ...shims, ...scope });\n } catch (err) {\n // `compileExpr` quotes the name (`Undefined symbol \"process\"`).\n // The interpreter path reports `Undefined symbol process`.\n // The one place src/ reads MathTS message text: MathTS throws a plain `Error` with no\n // symbol field, and a pre-check against the scope cannot stand in because MathTS resolves\n // some names itself (`hbar` reads as a unit). It only normalizes the text; nothing branches on it.\n // Tracked in ACTIVE.md as a MathTS follow-up (a typed undefined-symbol error).\n const message = err instanceof Error ? err.message : String(err);\n throw new FormulaError(message.replace(/^Undefined symbol \"([^\"]+)\"$/, 'Undefined symbol $1'));\n }\n if (typeof result !== 'number' || !Number.isFinite(result)) {\n // typeof Infinity and NaN is \"number\", which reads as a type error.\n // A Complex is an object; \"got object\" hides that sqrt(-1) left the reals.\n throw new FormulaValueError(`formula did not evaluate to a finite number (got ${describeNonFinite(result)})`);\n }\n return result;\n },\n };\n },\n };\n}\n\n/** What a non-finite or non-number result was, for the error text. */\nfunction describeNonFinite(result: unknown): string {\n if (typeof result === 'number') return String(result);\n if (result !== null && typeof result === 'object') {\n const c = result as { re?: unknown; im?: unknown; toString?: () => string };\n if (typeof c.re === 'number' && typeof c.im === 'number') {\n const text = typeof c.toString === 'function' ? c.toString() : `${c.re}+${c.im}i`;\n return `a complex number (${text})`;\n }\n }\n return typeof result;\n}\n\nconst mathTsModule: MathtsFunctionsModule = {\n // MathTS's Node type is not imported; `MathNode` is the structural subset\n // this parser reads (`evaluate`, `filter`, `isSymbolNode`, `isFunctionNode`,\n // `name`, `fn`), every member of which exists on a MathTS node.\n parse: (expr) => parseMathTs(expr) as unknown as MathNode,\n};\n\n/** The MathTS formula parser. @internal */\nexport const mathtsFormulaParser: FormulaParser = createMathtsFormulaParser(mathTsModule);\n\n/** Parse a scalar formula. @internal */\nexport function parseFormula(expr: string): CompiledFormula {\n return mathtsFormulaParser.parse(expr);\n}\n"]}
@@ -10,10 +10,20 @@
10
10
  import type { FormulaParser } from './formula-contract.js';
11
11
  import type { Dimension } from '../dimensional/types.js';
12
12
  import type { FormulaDimensionChecker, ParsedPhysics } from './formula-dimension.js';
13
- type FormulaParserKind = 'mathts' | 'builtin';
14
- /** Resolve the active formula parser. It is the MathTS parser. @internal */
13
+ /**
14
+ * The one formula parser kind. The `builtin` recursive-descent parser was
15
+ * removed with Path B, so the type has no second member; the CLI records
16
+ * this value in an experiment record's environment.
17
+ */
18
+ type FormulaParserKind = 'mathts';
19
+ /**
20
+ * Resolve the active formula parser. It is the MathTS parser. The function
21
+ * stays async because the CLI awaits it on a code path that once loaded an
22
+ * optional peer; the value is constant.
23
+ * @internal
24
+ */
15
25
  export declare function getFormulaParser(): Promise<FormulaParser>;
16
- /** Which parser is active. Always `mathts`. @internal */
26
+ /** Which parser is active: `mathts`, the one value of {@link FormulaParserKind}. @internal */
17
27
  export declare function getFormulaParserKind(): Promise<FormulaParserKind>;
18
28
  /**
19
29
  * The dimensional checker for user formulas. It transpiles the MathTS AST.
@@ -1 +1 @@
1
- {"version":3,"file":"formula-registry.d.ts","sourceRoot":"","sources":["../../src/numerical/formula-registry.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAE3D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AACzD,OAAO,KAAK,EAAE,uBAAuB,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAGrF,KAAK,iBAAiB,GAAG,QAAQ,GAAG,SAAS,CAAC;AAE9C,4EAA4E;AAC5E,wBAAsB,gBAAgB,IAAI,OAAO,CAAC,aAAa,CAAC,CAE/D;AAED,yDAAyD;AACzD,wBAAsB,oBAAoB,IAAI,OAAO,CAAC,iBAAiB,CAAC,CAEvE;AAED;;;GAGG;AACH,wBAAsB,0BAA0B,IAAI,OAAO,CAAC,uBAAuB,CAAC,CAEnF;AAED;;;;;;GAMG;AACH,wBAAsB,YAAY,CAChC,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC,GACxC,OAAO,CAAC,aAAa,CAAC,CAExB"}
1
+ {"version":3,"file":"formula-registry.d.ts","sourceRoot":"","sources":["../../src/numerical/formula-registry.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAE3D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AACzD,OAAO,KAAK,EAAE,uBAAuB,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAGrF;;;;GAIG;AACH,KAAK,iBAAiB,GAAG,QAAQ,CAAC;AAElC;;;;;GAKG;AACH,wBAAsB,gBAAgB,IAAI,OAAO,CAAC,aAAa,CAAC,CAE/D;AAED,8FAA8F;AAC9F,wBAAsB,oBAAoB,IAAI,OAAO,CAAC,iBAAiB,CAAC,CAEvE;AAED;;;GAGG;AACH,wBAAsB,0BAA0B,IAAI,OAAO,CAAC,uBAAuB,CAAC,CAEnF;AAED;;;;;;GAMG;AACH,wBAAsB,YAAY,CAChC,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC,GACxC,OAAO,CAAC,aAAa,CAAC,CAExB"}
@@ -9,11 +9,16 @@
9
9
  */
10
10
  import { mathtsFormulaParser } from './formula-mathts.js';
11
11
  import { builtinFormulaDimensionChecker } from './formula-dimension.js';
12
- /** Resolve the active formula parser. It is the MathTS parser. @internal */
12
+ /**
13
+ * Resolve the active formula parser. It is the MathTS parser. The function
14
+ * stays async because the CLI awaits it on a code path that once loaded an
15
+ * optional peer; the value is constant.
16
+ * @internal
17
+ */
13
18
  export async function getFormulaParser() {
14
19
  return mathtsFormulaParser;
15
20
  }
16
- /** Which parser is active. Always `mathts`. @internal */
21
+ /** Which parser is active: `mathts`, the one value of {@link FormulaParserKind}. @internal */
17
22
  export async function getFormulaParserKind() {
18
23
  return 'mathts';
19
24
  }
@@ -1 +1 @@
1
- {"version":3,"file":"formula-registry.js","sourceRoot":"","sources":["../../src/numerical/formula-registry.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAG1D,OAAO,EAAE,8BAA8B,EAAE,MAAM,wBAAwB,CAAC;AAIxE,4EAA4E;AAC5E,MAAM,CAAC,KAAK,UAAU,gBAAgB;IACpC,OAAO,mBAAmB,CAAC;AAC7B,CAAC;AAED,yDAAyD;AACzD,MAAM,CAAC,KAAK,UAAU,oBAAoB;IACxC,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,0BAA0B;IAC9C,OAAO,8BAA8B,EAAE,CAAC;AAC1C,CAAC;AAED;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CAChC,IAAY,EACZ,IAAyC;IAEzC,OAAO,8BAA8B,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;AAC5D,CAAC"}
1
+ {"version":3,"file":"formula-registry.js","sourceRoot":"","sources":["../../src/numerical/formula-registry.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAG1D,OAAO,EAAE,8BAA8B,EAAE,MAAM,wBAAwB,CAAC;AASxE;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB;IACpC,OAAO,mBAAmB,CAAC;AAC7B,CAAC;AAED,8FAA8F;AAC9F,MAAM,CAAC,KAAK,UAAU,oBAAoB;IACxC,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,0BAA0B;IAC9C,OAAO,8BAA8B,EAAE,CAAC;AAC1C,CAAC;AAED;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CAChC,IAAY,EACZ,IAAyC;IAEzC,OAAO,8BAA8B,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;AAC5D,CAAC","sourcesContent":["/**\n * Formula-parser registry.\n *\n * `getFormulaParser()` returns the MathTS-backed parser. The MathTS packages\n * are required dependencies, so there is no absent-peer branch and no Path B\n * parser.\n *\n * @module numerical/formula-registry\n */\n\nimport type { FormulaParser } from './formula-contract.js';\nimport { mathtsFormulaParser } from './formula-mathts.js';\nimport type { Dimension } from '../dimensional/types.js';\nimport type { FormulaDimensionChecker, ParsedPhysics } from './formula-dimension.js';\nimport { builtinFormulaDimensionChecker } from './formula-dimension.js';\n\n/**\n * The one formula parser kind. The `builtin` recursive-descent parser was\n * removed with Path B, so the type has no second member; the CLI records\n * this value in an experiment record's environment.\n */\ntype FormulaParserKind = 'mathts';\n\n/**\n * Resolve the active formula parser. It is the MathTS parser. The function\n * stays async because the CLI awaits it on a code path that once loaded an\n * optional peer; the value is constant.\n * @internal\n */\nexport async function getFormulaParser(): Promise<FormulaParser> {\n return mathtsFormulaParser;\n}\n\n/** Which parser is active: `mathts`, the one value of {@link FormulaParserKind}. @internal */\nexport async function getFormulaParserKind(): Promise<FormulaParserKind> {\n return 'mathts';\n}\n\n/**\n * The dimensional checker for user formulas. It transpiles the MathTS AST.\n * @internal\n */\nexport async function getFormulaDimensionChecker(): Promise<FormulaDimensionChecker> {\n return builtinFormulaDimensionChecker();\n}\n\n/**\n * Parse physics text to a dimensional `ExprNode` + its inferred dimension.\n * The single public string→`ExprNode` entry point.\n *\n * @throws {FormulaDimensionError} on a parse error or non-homogeneity.\n * @public\n */\nexport async function parsePhysics(\n text: string,\n dims: Readonly<Record<string, Dimension>>,\n): Promise<ParsedPhysics> {\n return builtinFormulaDimensionChecker().parse(text, dims);\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"geodesic-integrator.js","sourceRoot":"","sources":["../../src/numerical/geodesic-integrator.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,OAAO,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AACjE,OAAO,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AA+EpD;;;;;;GAMG;AACH,SAAS,WAAW,CAClB,aAA6E,EAC7E,CAAO,EACP,CAAO;AACP,yEAAyE;AACzE,4EAA4E;AAC5E,8DAA8D;AAC9D,OAAsB;IAEtB,MAAM,CAAC,GAAG,aAAa,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;IACpC,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IACjD,IAAI,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC;IAEvC,KAAK,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC;QAC9B,6EAA6E;QAC7E,MAAM,IAAI,GAAG,EAAE,GAAG,EAAE,CAAC;QACrB,IAAI,GAAG,GAAG,CAAC,CAAC;QACZ,IAAI,OAAO,GAAG,CAAC,CAAC;QAChB,IAAI,CAAC,GAAG,CAAC,CAAC;QAEV,6EAA6E;QAC7E,sFAAsF;QAEtF,SAAS;QACT,IAAI,MAAM,GAAG,IAAI,CAAC;QAClB,OAAO,GAAG,CAAC,CAAC;QACZ,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC;QAAC,IAAI,CAAC,KAAK,CAAC;YAAE,OAAO,IAAI,CAAC,GAAG,EAAE,CAAC;QAC9C,CAAC,GAAG,CAAC,CAAC,MAAM,GAAC,CAAC,CAAC,CAAC;QAAC,IAAI,CAAC,KAAK,CAAC;YAAE,OAAO,IAAI,CAAC,GAAG,EAAE,CAAC;QAChD,CAAC,GAAG,CAAC,CAAC,MAAM,GAAC,CAAC,CAAC,CAAC;QAAC,IAAI,CAAC,KAAK,CAAC;YAAE,OAAO,IAAI,CAAC,GAAG,EAAE,CAAC;QAChD,CAAC,GAAG,CAAC,CAAC,MAAM,GAAC,CAAC,CAAC,CAAC;QAAC,IAAI,CAAC,KAAK,CAAC;YAAE,OAAO,IAAI,CAAC,GAAG,EAAE,CAAC;QAChD,IAAI,OAAO,KAAK,CAAC;YAAE,GAAG,IAAI,OAAO,GAAG,EAAE,CAAC;QAEvC,SAAS;QACT,MAAM,IAAI,CAAC,CAAC;QACZ,OAAO,GAAG,CAAC,CAAC;QACZ,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC;QAAC,IAAI,CAAC,KAAK,CAAC;YAAE,OAAO,IAAI,CAAC,GAAG,EAAE,CAAC;QAC9C,CAAC,GAAG,CAAC,CAAC,MAAM,GAAC,CAAC,CAAC,CAAC;QAAC,IAAI,CAAC,KAAK,CAAC;YAAE,OAAO,IAAI,CAAC,GAAG,EAAE,CAAC;QAChD,CAAC,GAAG,CAAC,CAAC,MAAM,GAAC,CAAC,CAAC,CAAC;QAAC,IAAI,CAAC,KAAK,CAAC;YAAE,OAAO,IAAI,CAAC,GAAG,EAAE,CAAC;QAChD,CAAC,GAAG,CAAC,CAAC,MAAM,GAAC,CAAC,CAAC,CAAC;QAAC,IAAI,CAAC,KAAK,CAAC;YAAE,OAAO,IAAI,CAAC,GAAG,EAAE,CAAC;QAChD,IAAI,OAAO,KAAK,CAAC;YAAE,GAAG,IAAI,OAAO,GAAG,EAAE,CAAC;QAEvC,SAAS;QACT,MAAM,IAAI,CAAC,CAAC;QACZ,OAAO,GAAG,CAAC,CAAC;QACZ,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC;QAAC,IAAI,CAAC,KAAK,CAAC;YAAE,OAAO,IAAI,CAAC,GAAG,EAAE,CAAC;QAC9C,CAAC,GAAG,CAAC,CAAC,MAAM,GAAC,CAAC,CAAC,CAAC;QAAC,IAAI,CAAC,KAAK,CAAC;YAAE,OAAO,IAAI,CAAC,GAAG,EAAE,CAAC;QAChD,CAAC,GAAG,CAAC,CAAC,MAAM,GAAC,CAAC,CAAC,CAAC;QAAC,IAAI,CAAC,KAAK,CAAC;YAAE,OAAO,IAAI,CAAC,GAAG,EAAE,CAAC;QAChD,CAAC,GAAG,CAAC,CAAC,MAAM,GAAC,CAAC,CAAC,CAAC;QAAC,IAAI,CAAC,KAAK,CAAC;YAAE,OAAO,IAAI,CAAC,GAAG,EAAE,CAAC;QAChD,IAAI,OAAO,KAAK,CAAC;YAAE,GAAG,IAAI,OAAO,GAAG,EAAE,CAAC;QAEvC,SAAS;QACT,MAAM,IAAI,CAAC,CAAC;QACZ,OAAO,GAAG,CAAC,CAAC;QACZ,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC;QAAC,IAAI,CAAC,KAAK,CAAC;YAAE,OAAO,IAAI,CAAC,GAAG,EAAE,CAAC;QAC9C,CAAC,GAAG,CAAC,CAAC,MAAM,GAAC,CAAC,CAAC,CAAC;QAAC,IAAI,CAAC,KAAK,CAAC;YAAE,OAAO,IAAI,CAAC,GAAG,EAAE,CAAC;QAChD,CAAC,GAAG,CAAC,CAAC,MAAM,GAAC,CAAC,CAAC,CAAC;QAAC,IAAI,CAAC,KAAK,CAAC;YAAE,OAAO,IAAI,CAAC,GAAG,EAAE,CAAC;QAChD,CAAC,GAAG,CAAC,CAAC,MAAM,GAAC,CAAC,CAAC,CAAC;QAAC,IAAI,CAAC,KAAK,CAAC;YAAE,OAAO,IAAI,CAAC,GAAG,EAAE,CAAC;QAChD,IAAI,OAAO,KAAK,CAAC;YAAE,GAAG,IAAI,OAAO,GAAG,EAAE,CAAC;QAEvC,IAAI,EAAE,KAAK,CAAC;YAAE,GAAG,GAAG,CAAC,GAAG,CAAC;aACpB,IAAI,EAAE,KAAK,CAAC;YAAE,GAAG,GAAG,CAAC,GAAG,CAAC;aACzB,IAAI,EAAE,KAAK,CAAC;YAAE,GAAG,GAAG,CAAC,GAAG,CAAC;;YACzB,GAAG,GAAG,CAAC,GAAG,CAAC;IAClB,CAAC;IAED,OAAO,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC;AAC5D,CAAC;AAED,8EAA8E;AAC9E,aAAa;AACb,8EAA8E;AAE9E;;;;;;GAMG;AACH,MAAM,UAAU,iBAAiB,CAC/B,MAAgC;IAEhC,MAAM,EAAE,aAAa,EAAE,EAAE,EAAE,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,eAAe,EAAE,GAAG,MAAM,CAAC;IACnF,mFAAmF;IAEnF,2EAA2E;IAC3E,yEAAyE;IACzE,IAAI,OAAO,eAAe,KAAK,QAAQ,IAAI,EAAE,CAAC,CAAC,CAAC,GAAG,eAAe,EAAE,CAAC;QACnE,MAAM,IAAI,qBAAqB,CAC7B,wCAAwC,EAAE,CAAC,CAAC,CAAC,sBAAsB,eAAe,IAAI;YACtF,oDAAoD;YACpD,2EAA2E,CAC5E,CAAC;IACJ,CAAC;IAED,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,KAAK,IAAI,CAAC,EAAE,CAAC;QAC3C,MAAM,IAAI,qBAAqB,CAC7B,4DAA4D,KAAK,EAAE,CACpE,CAAC;IACJ,CAAC;IAED,MAAM,CAAC,GAAG,CAAC,MAAM,GAAG,QAAQ,CAAC,GAAG,KAAK,CAAC;IACtC,MAAM,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IAEpE,6EAA6E;IAC7E,6EAA6E;IAC7E,gEAAgE;IAChE,MAAM,OAAO,GAAG,IAAI,YAAY,CAAC,EAAE,CAAC,CAAC;IACrC,MAAM,GAAG,GAAG,cAAc,CACxB,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE;QACV,MAAM,CAAC,GAAS,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACzC,MAAM,CAAC,GAAS,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACzC,MAAM,CAAC,GAAG,WAAW,CAAC,aAAa,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,CAAC,CAAC;QACpD,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IAClF,CAAC,EACD,EAAE,EACF,CAAC,QAAQ,EAAE,MAAM,CAAC,EAClB,EAAE,EAAE,EAAE,CAAC,EAAE,CACV,CAAC;IAEF,MAAM,MAAM,GAAG,CAAC,GAAsB,EAAQ,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IAClF,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,GAAG,CAAC,CAAC,CAAC;IACzD,MAAM,UAAU,GAAW,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;IACpD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC;QAC/B,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,WAAW,KAAK,CAAC,EAAE,CAAC;YAChC,MAAM,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;YAC1D,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;QAC/B,CAAC;IACH,CAAC;IACD,MAAM,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;IAE3C,OAAO;QACL,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC;QACpB,MAAM,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;QAC5C,UAAU;KACX,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"geodesic-integrator.js","sourceRoot":"","sources":["../../src/numerical/geodesic-integrator.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Fixed-step RK4 integrator for the geodesic equation in an arbitrary\n * Lorentzian manifold (v0.4.0, Task 14 [U]).\n *\n * Solves the second-order ODE system\n *\n * d²x^μ/dτ² + Γ^μ_{νρ}(x) (dx^ν/dτ)(dx^ρ/dτ) = 0\n *\n * by casting it as a first-order system on the (x, v) phase space:\n *\n * dx^μ/dτ = v^μ\n * dv^μ/dτ = −Γ^μ_{νρ}(x) v^ν v^ρ (Einstein summation over ν, ρ)\n *\n * The Christoffel symbol Γ^μ_{νρ} is supplied as a plain-JS closure that\n * maps a 4-coordinate array to a [4][4][4] tensor. No TensorEngine\n * dependency — the integrator is self-contained. The fixed steps are\n * MathTS `solveODESystem` with `dt` set, which is that library's classical\n * RK4. Adaptive `solveODE` is not this step.\n *\n * Validated against the cycloid parametric form for radial Schwarzschild\n * infall to ±1e-6 (Task 14 test, η = 0.5).\n *\n * @module numerical/geodesic-integrator\n */\nimport { solveODESystem } from '@danielsimonjr/mathts-functions';\nimport { NumericalBackendError } from './errors.js';\n\n/**\n * Input bundle for `integrateGeodesic`.\n * @public\n */\nexport interface GeodesicIntegratorInputs {\n /**\n * Christoffel-symbol closure. Maps a 4-coordinate array x^μ to a\n * Float64Array(64) containing Γ^μ_{νρ}(x) in λ-major layout:\n * index (λ, μ, ν) → 16·λ + 4·μ + ν.\n *\n * BR-2 (v0.6.0 Task 2.9): migrated from nested number[][][] to flat\n * Float64Array(64). Consumers call `arr[16*mu + 4*nu + rho]`.\n *\n * The optional `out` buffer lets the integrator pass a reused scratch\n * Float64Array(64) so the hot loop avoids per-call allocation. A function\n * that ignores `out` (e.g. allocates fresh each call) still satisfies this\n * type — the optimization is opt-in.\n */\n christoffelFn: (x: ReadonlyArray<number>, out?: Float64Array) => Float64Array;\n\n /** Initial 4-position x^μ(τ₀) = [t, r, θ, φ]. */\n x0: readonly [number, number, number, number];\n\n /**\n * Initial 4-velocity dx^μ/dτ at τ₀.\n *\n * I2 fix: for a Schwarzschild radial timelike geodesic starting at\n * coordinate radius r₀, use\n * v0 = [1/√(1 − r_s/r₀), 0, 0, 0]\n * so that g_{μν} u^μ u^ν = −c² holds. At r₀ = 100·r_s this gives\n * dt/dτ ≈ 1.005, not 1.\n */\n v0: readonly [number, number, number, number];\n\n /** Proper-time parameter at the start of integration. */\n tauStart: number;\n\n /** Proper-time parameter at the end of integration. */\n tauEnd: number;\n\n /** Number of fixed RK4 steps. Must be a positive integer. */\n steps: number;\n\n /**\n * E11 fix: explicit domain-validity option in place of the\n * `(christoffelFn as any).r_s` monkey-patch. If supplied, the\n * integrator throws `NumericalBackendError` when `x0[1] < domainMinRadius`\n * (e.g. for Schwarzschild: caller passes `3 * r_s` to enforce the\n * v0.4.0 domain restriction r ≥ 3·r_Schwarz).\n */\n domainMinRadius?: number;\n}\n\n/**\n * Result of `integrateGeodesic`.\n * @public\n */\nexport interface GeodesicIntegratorResult {\n /** Final 4-position x^μ(τEnd). */\n readonly xFinal: readonly [number, number, number, number];\n\n /** Final 4-velocity v^μ(τEnd). */\n readonly vFinal: readonly [number, number, number, number];\n\n /**\n * Sampled trajectory positions (approximately 100 evenly-spaced snapshots\n * plus the initial point). Useful for visualisation and diagnostics.\n */\n readonly trajectory: ReadonlyArray<readonly [number, number, number, number]>;\n}\n\n// ---------------------------------------------------------------------------\n// Internal helpers\n// ---------------------------------------------------------------------------\n\ntype Vec4 = [number, number, number, number];\n\n/**\n * Evaluate the Christoffel acceleration −Γ^μ_{νρ} v^ν v^ρ at position x\n * with 4-velocity v. Returns (dx/dτ, dv/dτ) = (v, accel).\n *\n * BR-2 (v0.6.0 Task 2.9): christoffelFn now returns Float64Array(64).\n * Index access: G[16*mu + 4*nu + rho] (λ-major layout).\n */\nfunction geodesicRHS(\n christoffelFn: (x: ReadonlyArray<number>, out?: Float64Array) => Float64Array,\n x: Vec4,\n v: Vec4,\n // Reused scratch buffer for the Christoffel evaluation. Safe: G is fully\n // consumed into `dv` below before geodesicRHS returns, so the next call may\n // overwrite it. `dx`/`dv` are fresh arrays and never alias G.\n scratch?: Float64Array,\n): { dx: Vec4; dv: Vec4 } {\n const G = christoffelFn(x, scratch);\n const v0 = v[0], v1 = v[1], v2 = v[2], v3 = v[3];\n let dv0 = 0, dv1 = 0, dv2 = 0, dv3 = 0;\n\n for (let mu = 0; mu < 4; mu++) {\n // Bolt: Hoist the invariant 16 * mu multiplication outside the nu, rho loops\n const mu16 = mu * 16;\n let acc = 0;\n let accTerm = 0;\n let g = 0;\n\n // Bolt: Fully unroll the inner `nu` and `rho` loops for a fixed 4D spacetime\n // to eliminate loop overhead and index arithmetic, caching `v` into scalar variables.\n\n // nu = 0\n let offset = mu16;\n accTerm = 0;\n g = G[offset]; if (g !== 0) accTerm += g * v0;\n g = G[offset+1]; if (g !== 0) accTerm += g * v1;\n g = G[offset+2]; if (g !== 0) accTerm += g * v2;\n g = G[offset+3]; if (g !== 0) accTerm += g * v3;\n if (accTerm !== 0) acc += accTerm * v0;\n\n // nu = 1\n offset += 4;\n accTerm = 0;\n g = G[offset]; if (g !== 0) accTerm += g * v0;\n g = G[offset+1]; if (g !== 0) accTerm += g * v1;\n g = G[offset+2]; if (g !== 0) accTerm += g * v2;\n g = G[offset+3]; if (g !== 0) accTerm += g * v3;\n if (accTerm !== 0) acc += accTerm * v1;\n\n // nu = 2\n offset += 4;\n accTerm = 0;\n g = G[offset]; if (g !== 0) accTerm += g * v0;\n g = G[offset+1]; if (g !== 0) accTerm += g * v1;\n g = G[offset+2]; if (g !== 0) accTerm += g * v2;\n g = G[offset+3]; if (g !== 0) accTerm += g * v3;\n if (accTerm !== 0) acc += accTerm * v2;\n\n // nu = 3\n offset += 4;\n accTerm = 0;\n g = G[offset]; if (g !== 0) accTerm += g * v0;\n g = G[offset+1]; if (g !== 0) accTerm += g * v1;\n g = G[offset+2]; if (g !== 0) accTerm += g * v2;\n g = G[offset+3]; if (g !== 0) accTerm += g * v3;\n if (accTerm !== 0) acc += accTerm * v3;\n\n if (mu === 0) dv0 = -acc;\n else if (mu === 1) dv1 = -acc;\n else if (mu === 2) dv2 = -acc;\n else dv3 = -acc;\n }\n\n return { dx: [v0, v1, v2, v3], dv: [dv0, dv1, dv2, dv3] };\n}\n\n// ---------------------------------------------------------------------------\n// Public API\n// ---------------------------------------------------------------------------\n\n/**\n * Numerically integrate the geodesic equation for a timelike (or null)\n * worldline in an arbitrary curved spacetime using a fixed-step classical\n * fourth-order Runge-Kutta scheme.\n *\n * @public\n */\nexport function integrateGeodesic(\n inputs: GeodesicIntegratorInputs,\n): GeodesicIntegratorResult {\n const { christoffelFn, x0, v0, tauStart, tauEnd, steps, domainMinRadius } = inputs;\n // BR-2: christoffelFn now returns Float64Array(64); geodesicRHS reads flat layout.\n\n // E11 fix: explicit option in place of monkey-patched .r_s on the closure.\n // Callers (e.g. the Schwarzschild test fixture) pass `3 * r_s` directly.\n if (typeof domainMinRadius === 'number' && x0[1] < domainMinRadius) {\n throw new NumericalBackendError(\n `integrateGeodesic: initial radius r0=${x0[1]} < domainMinRadius=${domainMinRadius}. ` +\n `Position is outside the valid integration domain. ` +\n `For Schwarzschild geodesics this restriction is r ≥ 3·r_Schwarz (v0.4.0).`,\n );\n }\n\n if (!Number.isInteger(steps) || steps <= 0) {\n throw new NumericalBackendError(\n `integrateGeodesic: steps must be a positive integer, got ${steps}`,\n );\n }\n\n const h = (tauEnd - tauStart) / steps;\n const y0 = [x0[0], x0[1], x0[2], x0[3], v0[0], v0[1], v0[2], v0[3]];\n\n // One scratch buffer reused across all Christoffel evaluations (4 per step).\n // Each geodesicRHS consumes its Γ before the next call, so reuse is safe and\n // avoids ~4·steps Float64Array(64) allocations per integration.\n const scratch = new Float64Array(64);\n const sol = solveODESystem(\n (_tau, y) => {\n const x: Vec4 = [y[0], y[1], y[2], y[3]];\n const v: Vec4 = [y[4], y[5], y[6], y[7]];\n const s = geodesicRHS(christoffelFn, x, v, scratch);\n return [s.dx[0], s.dx[1], s.dx[2], s.dx[3], s.dv[0], s.dv[1], s.dv[2], s.dv[3]];\n },\n y0,\n [tauStart, tauEnd],\n { dt: h },\n );\n\n const asVec4 = (row: readonly number[]): Vec4 => [row[0], row[1], row[2], row[3]];\n const sampleEvery = Math.max(1, Math.floor(steps / 100));\n const trajectory: Vec4[] = [asVec4(sol.y[0] ?? y0)];\n for (let i = 0; i < steps; i++) {\n if ((i + 1) % sampleEvery === 0) {\n const row = sol.y[i + 1] ?? sol.y[sol.y.length - 1] ?? y0;\n trajectory.push(asVec4(row));\n }\n }\n const last = sol.y[sol.y.length - 1] ?? y0;\n\n return {\n xFinal: asVec4(last),\n vFinal: [last[4], last[5], last[6], last[7]],\n trajectory,\n };\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"geometrized.js","sourceRoot":"","sources":["../../src/numerical/geometrized.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAGH,OAAO,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AACpD,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,sBAAsB,CAAC;AAElD;;;;;GAKG;AACH,MAAM,OAAO,8BAA+B,SAAQ,QAAQ;IAC1D,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,gCAAgC,CAAC;QAC7C,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,8BAA8B,CAAC,SAAS,CAAC,CAAC;IACxE,CAAC;CACF;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,iBAAiB,CAAC,GAAc;IAC9C,IAAI,GAAG,CAAC,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC,KAAK,KAAK,CAAC,IAAI,GAAG,CAAC,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC;QACjE,MAAM,IAAI,8BAA8B,CACtC,qEAAqE;YACnE,wCAAwC,GAAG,CAAC,CAAC,OAAO,GAAG,CAAC,KAAK,IAAI;YACjE,KAAK,GAAG,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC,iDAAiD,CAC1E,CAAC;IACJ,CAAC;IACD,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;AACnE,CAAC;AAED,4CAA4C;AAC5C,MAAM,UAAU,aAAa,CAAC,OAAe,EAAE,GAAc;IAC3D,OAAO,OAAO,GAAG,iBAAiB,CAAC,GAAG,CAAC,CAAC;AAC1C,CAAC;AAED,4CAA4C;AAC5C,MAAM,UAAU,eAAe,CAAC,SAAiB,EAAE,GAAc;IAC/D,OAAO,SAAS,GAAG,iBAAiB,CAAC,GAAG,CAAC,CAAC;AAC5C,CAAC"}
1
+ {"version":3,"file":"geometrized.js","sourceRoot":"","sources":["../../src/numerical/geometrized.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAGH,OAAO,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AACpD,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,sBAAsB,CAAC;AAElD;;;;;GAKG;AACH,MAAM,OAAO,8BAA+B,SAAQ,QAAQ;IAC1D,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,gCAAgC,CAAC;QAC7C,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,8BAA8B,CAAC,SAAS,CAAC,CAAC;IACxE,CAAC;CACF;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,iBAAiB,CAAC,GAAc;IAC9C,IAAI,GAAG,CAAC,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC,KAAK,KAAK,CAAC,IAAI,GAAG,CAAC,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC;QACjE,MAAM,IAAI,8BAA8B,CACtC,qEAAqE;YACnE,wCAAwC,GAAG,CAAC,CAAC,OAAO,GAAG,CAAC,KAAK,IAAI;YACjE,KAAK,GAAG,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC,iDAAiD,CAC1E,CAAC;IACJ,CAAC;IACD,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;AACnE,CAAC;AAED,4CAA4C;AAC5C,MAAM,UAAU,aAAa,CAAC,OAAe,EAAE,GAAc;IAC3D,OAAO,OAAO,GAAG,iBAAiB,CAAC,GAAG,CAAC,CAAC;AAC1C,CAAC;AAED,4CAA4C;AAC5C,MAAM,UAAU,eAAe,CAAC,SAAiB,EAAE,GAAc;IAC/D,OAAO,SAAS,GAAG,iBAAiB,CAAC,GAAG,CAAC,CAAC;AAC5C,CAAC","sourcesContent":["/**\n * Geometrized-units boundary adapters (G-9 increment 1).\n *\n * Converts a scalar between SI and geometrized (G = c = 1) units, driven\n * MECHANICALLY by the `Dimension` exponent vector — the dimension functor\n * earning its keep. For an SI quantity of dimension L^l M^m T^t the single\n * conversion factor is `G^m · c^(t − 2m)` (each kg → G/c² metres, each second\n * → c metres); the geometrized quantity is a pure length L^(l+m+t).\n *\n * This is the self-contained FOUNDATION of the units-normalization layer\n * (design: docs/planning/v0.10.0-Units-Normalization-Design-Note.md, Adam-\n * vetted r2; plan: docs/planning/v0.13-G9-Adapters-Plan.md, Eve-vetted). Only c\n * and G are in scope: a nonzero electromagnetic / thermal / molar / luminous\n * exponent (I/Θ/N/J) throws.\n *\n * PUBLIC boundary API (G-9 increment 2): a consumer running the GR pipeline in\n * geometrized (G = c = 1) units converts scalars at the boundary with these\n * adapters. The consumer-wide DEFAULT-pipeline migration (increment 3) was\n * DECLINED after adversarial review — it is measured to give no precision win\n * (and far worse far-field; see docs/planning/v0.14-G9-Increment3-Disposition.md).\n * The SI pipeline stays the default; this geometrized layer is the optional\n * boundary API.\n *\n * @module numerical/geometrized\n */\n\nimport type { Dimension } from '../dimensional/types.js';\nimport { UPTError } from '../dimensional/errors.js';\nimport { C_SI, G_SI } from '../core/constants.js';\n\n/**\n * A dimension carries a non-c/G base (I/Θ/N/J ≠ 0) and cannot be geometrized\n * by c and G alone (k_B / ε₀ extensions are out of scope for this increment).\n *\n * @public\n */\nexport class NonGeometrizableDimensionError extends UPTError {\n constructor(message: string) {\n super(message);\n this.name = 'NonGeometrizableDimensionError';\n Object.setPrototypeOf(this, NonGeometrizableDimensionError.prototype);\n }\n}\n\n/**\n * The single SI→geometrized conversion factor for `dim`: `G^M · c^(T − 2M)`\n * (only the mass and time exponents enter). Shared by `toGeometrized` /\n * `fromGeometrized` so the round-trip is a clean inverse. A nonzero I/Θ/N/J\n * exponent throws `NonGeometrizableDimensionError` BEFORE any factor is\n * computed.\n *\n * @public\n */\nexport function geometrizedFactor(dim: Dimension): number {\n if (dim.I !== 0 || dim.Theta !== 0 || dim.N !== 0 || dim.J !== 0) {\n throw new NonGeometrizableDimensionError(\n `geometrizedFactor: only c and G are in scope; this dimension has a ` +\n `nonzero non-mechanizable exponent (I=${dim.I}, Θ=${dim.Theta}, ` +\n `N=${dim.N}, J=${dim.J}). Geometrization handles length / mass / time.`,\n );\n }\n return Math.pow(G_SI, dim.M) * Math.pow(C_SI, dim.T - 2 * dim.M);\n}\n\n/** SI → geometrized (G = c = 1). @public */\nexport function toGeometrized(valueSI: number, dim: Dimension): number {\n return valueSI * geometrizedFactor(dim);\n}\n\n/** Geometrized (G = c = 1) → SI. @public */\nexport function fromGeometrized(valueGeom: number, dim: Dimension): number {\n return valueGeom / geometrizedFactor(dim);\n}\n"]}