universal-physics-tensor 9.0.0 → 11.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1109) hide show
  1. package/README.md +21 -17
  2. package/bin/upt.mjs +13 -1
  3. package/data/atlas/atlas.json +79 -68
  4. package/data/atlas/atlas.jsonld +1 -1
  5. package/data/atlas/diffusion.json +24 -23
  6. package/data/atlas/oscillators.json +21 -16
  7. package/data/atlas/waves.json +36 -31
  8. package/data/atlas/witness-results.json +11 -11
  9. package/data/bridge-catalog.json +1192 -1636
  10. package/data/bridge-catalog.schema.json +390 -135
  11. package/data/quantities.json +53 -19
  12. package/data/schemas/atlas-record.v0.json +184 -46
  13. package/data/units.json +33 -4
  14. package/dist/atlas/applicability.d.ts.map +1 -1
  15. package/dist/atlas/applicability.js +35 -18
  16. package/dist/atlas/applicability.js.map +1 -1
  17. package/dist/atlas/association.js.map +1 -1
  18. package/dist/atlas/benchmark/backend-shapes.d.ts.map +1 -1
  19. package/dist/atlas/benchmark/backend-shapes.js +5 -1
  20. package/dist/atlas/benchmark/backend-shapes.js.map +1 -1
  21. package/dist/atlas/benchmark/baselines.d.ts.map +1 -1
  22. package/dist/atlas/benchmark/baselines.js +8 -0
  23. package/dist/atlas/benchmark/baselines.js.map +1 -1
  24. package/dist/atlas/benchmark/hybrid-retrieval.d.ts +12 -3
  25. package/dist/atlas/benchmark/hybrid-retrieval.d.ts.map +1 -1
  26. package/dist/atlas/benchmark/hybrid-retrieval.js +30 -21
  27. package/dist/atlas/benchmark/hybrid-retrieval.js.map +1 -1
  28. package/dist/atlas/benchmark/leakage.js.map +1 -1
  29. package/dist/atlas/benchmark/loader.js +2 -2
  30. package/dist/atlas/benchmark/loader.js.map +1 -1
  31. package/dist/atlas/benchmark/run-atlas.d.ts.map +1 -1
  32. package/dist/atlas/benchmark/run-atlas.js +14 -2
  33. package/dist/atlas/benchmark/run-atlas.js.map +1 -1
  34. package/dist/atlas/benchmark/stats.d.ts +3 -3
  35. package/dist/atlas/benchmark/stats.d.ts.map +1 -1
  36. package/dist/atlas/benchmark/stats.js +16 -8
  37. package/dist/atlas/benchmark/stats.js.map +1 -1
  38. package/dist/atlas/benchmark/study.js.map +1 -1
  39. package/dist/atlas/benchmark/types.js.map +1 -1
  40. package/dist/atlas/bridge-record.d.ts +4 -4
  41. package/dist/atlas/bridge-record.d.ts.map +1 -1
  42. package/dist/atlas/bridge-record.js +6 -6
  43. package/dist/atlas/bridge-record.js.map +1 -1
  44. package/dist/atlas/catalog-formal-ref.d.ts +26 -3
  45. package/dist/atlas/catalog-formal-ref.d.ts.map +1 -1
  46. package/dist/atlas/catalog-formal-ref.js +52 -5
  47. package/dist/atlas/catalog-formal-ref.js.map +1 -1
  48. package/dist/atlas/chain-pipeline.d.ts +0 -11
  49. package/dist/atlas/chain-pipeline.d.ts.map +1 -1
  50. package/dist/atlas/chain-pipeline.js +12 -24
  51. package/dist/atlas/chain-pipeline.js.map +1 -1
  52. package/dist/atlas/composition-table.js.map +1 -1
  53. package/dist/atlas/conventions.js.map +1 -1
  54. package/dist/atlas/coverage.d.ts +2 -2
  55. package/dist/atlas/coverage.js.map +1 -1
  56. package/dist/atlas/derivation.js.map +1 -1
  57. package/dist/atlas/derive-evidence.d.ts +6 -4
  58. package/dist/atlas/derive-evidence.d.ts.map +1 -1
  59. package/dist/atlas/derive-evidence.js +7 -2
  60. package/dist/atlas/derive-evidence.js.map +1 -1
  61. package/dist/atlas/diffusion/bridges-closure.d.ts +0 -4
  62. package/dist/atlas/diffusion/bridges-closure.d.ts.map +1 -1
  63. package/dist/atlas/diffusion/bridges-closure.js +8 -17
  64. package/dist/atlas/diffusion/bridges-closure.js.map +1 -1
  65. package/dist/atlas/diffusion/bridges.d.ts.map +1 -1
  66. package/dist/atlas/diffusion/bridges.js +27 -42
  67. package/dist/atlas/diffusion/bridges.js.map +1 -1
  68. package/dist/atlas/diffusion/dimensions.d.ts +6 -14
  69. package/dist/atlas/diffusion/dimensions.d.ts.map +1 -1
  70. package/dist/atlas/diffusion/dimensions.js +8 -16
  71. package/dist/atlas/diffusion/dimensions.js.map +1 -1
  72. package/dist/atlas/diffusion/index.d.ts +1 -1
  73. package/dist/atlas/diffusion/index.d.ts.map +1 -1
  74. package/dist/atlas/diffusion/index.js.map +1 -1
  75. package/dist/atlas/diffusion/models.d.ts +3 -3
  76. package/dist/atlas/diffusion/models.d.ts.map +1 -1
  77. package/dist/atlas/diffusion/models.js +5 -10
  78. package/dist/atlas/diffusion/models.js.map +1 -1
  79. package/dist/atlas/diffusion/numerics.d.ts +16 -4
  80. package/dist/atlas/diffusion/numerics.d.ts.map +1 -1
  81. package/dist/atlas/diffusion/numerics.js +38 -24
  82. package/dist/atlas/diffusion/numerics.js.map +1 -1
  83. package/dist/atlas/error-algebra.d.ts +6 -0
  84. package/dist/atlas/error-algebra.d.ts.map +1 -1
  85. package/dist/atlas/error-algebra.js +26 -0
  86. package/dist/atlas/error-algebra.js.map +1 -1
  87. package/dist/atlas/export.d.ts +18 -2
  88. package/dist/atlas/export.d.ts.map +1 -1
  89. package/dist/atlas/export.js +9 -3
  90. package/dist/atlas/export.js.map +1 -1
  91. package/dist/atlas/families.d.ts +19 -2
  92. package/dist/atlas/families.d.ts.map +1 -1
  93. package/dist/atlas/families.js +26 -3
  94. package/dist/atlas/families.js.map +1 -1
  95. package/dist/atlas/family.d.ts +27 -0
  96. package/dist/atlas/family.d.ts.map +1 -0
  97. package/dist/atlas/family.js +12 -0
  98. package/dist/atlas/family.js.map +1 -0
  99. package/dist/atlas/index.d.ts +3 -2
  100. package/dist/atlas/index.d.ts.map +1 -1
  101. package/dist/atlas/index.js +2 -1
  102. package/dist/atlas/index.js.map +1 -1
  103. package/dist/atlas/link-prediction.d.ts +107 -4
  104. package/dist/atlas/link-prediction.d.ts.map +1 -1
  105. package/dist/atlas/link-prediction.js +212 -66
  106. package/dist/atlas/link-prediction.js.map +1 -1
  107. package/dist/atlas/model.js.map +1 -1
  108. package/dist/atlas/oscillators/bridges-coarse.d.ts.map +1 -1
  109. package/dist/atlas/oscillators/bridges-coarse.js +7 -12
  110. package/dist/atlas/oscillators/bridges-coarse.js.map +1 -1
  111. package/dist/atlas/oscillators/bridges-exact.d.ts.map +1 -1
  112. package/dist/atlas/oscillators/bridges-exact.js +6 -10
  113. package/dist/atlas/oscillators/bridges-exact.js.map +1 -1
  114. package/dist/atlas/oscillators/bridges-limits.d.ts +3 -16
  115. package/dist/atlas/oscillators/bridges-limits.d.ts.map +1 -1
  116. package/dist/atlas/oscillators/bridges-limits.js +23 -36
  117. package/dist/atlas/oscillators/bridges-limits.js.map +1 -1
  118. package/dist/atlas/oscillators/dimensions.d.ts +9 -21
  119. package/dist/atlas/oscillators/dimensions.d.ts.map +1 -1
  120. package/dist/atlas/oscillators/dimensions.js +9 -21
  121. package/dist/atlas/oscillators/dimensions.js.map +1 -1
  122. package/dist/atlas/oscillators/index.d.ts +1 -16
  123. package/dist/atlas/oscillators/index.d.ts.map +1 -1
  124. package/dist/atlas/oscillators/index.js.map +1 -1
  125. package/dist/atlas/oscillators/limit-witnesses.d.ts +2 -2
  126. package/dist/atlas/oscillators/limit-witnesses.d.ts.map +1 -1
  127. package/dist/atlas/oscillators/limit-witnesses.js +17 -15
  128. package/dist/atlas/oscillators/limit-witnesses.js.map +1 -1
  129. package/dist/atlas/oscillators/models.d.ts.map +1 -1
  130. package/dist/atlas/oscillators/models.js +2 -6
  131. package/dist/atlas/oscillators/models.js.map +1 -1
  132. package/dist/atlas/oscillators/norm-transport-witness.js.map +1 -1
  133. package/dist/atlas/oscillators/norm-transport.js.map +1 -1
  134. package/dist/atlas/oscillators/norms.js.map +1 -1
  135. package/dist/atlas/oscillators/pendulum-motion.d.ts +29 -6
  136. package/dist/atlas/oscillators/pendulum-motion.d.ts.map +1 -1
  137. package/dist/atlas/oscillators/pendulum-motion.js +60 -40
  138. package/dist/atlas/oscillators/pendulum-motion.js.map +1 -1
  139. package/dist/atlas/oscillators/phase-carriage.js.map +1 -1
  140. package/dist/atlas/oscillators/phase-translation.d.ts +0 -11
  141. package/dist/atlas/oscillators/phase-translation.d.ts.map +1 -1
  142. package/dist/atlas/oscillators/phase-translation.js +3 -4
  143. package/dist/atlas/oscillators/phase-translation.js.map +1 -1
  144. package/dist/atlas/oscillators/position-translation.d.ts +68 -7
  145. package/dist/atlas/oscillators/position-translation.d.ts.map +1 -1
  146. package/dist/atlas/oscillators/position-translation.js +123 -12
  147. package/dist/atlas/oscillators/position-translation.js.map +1 -1
  148. package/dist/atlas/oscillators/rejections.d.ts +0 -2
  149. package/dist/atlas/oscillators/rejections.d.ts.map +1 -1
  150. package/dist/atlas/oscillators/rejections.js +0 -7
  151. package/dist/atlas/oscillators/rejections.js.map +1 -1
  152. package/dist/atlas/path-bound.js.map +1 -1
  153. package/dist/atlas/physjs-entries.generated.d.ts +25 -24
  154. package/dist/atlas/physjs-entries.generated.d.ts.map +1 -1
  155. package/dist/atlas/physjs-entries.generated.js +25 -24
  156. package/dist/atlas/physjs-entries.generated.js.map +1 -1
  157. package/dist/atlas/physjs-ref.d.ts +107 -70
  158. package/dist/atlas/physjs-ref.d.ts.map +1 -1
  159. package/dist/atlas/physjs-ref.js +184 -101
  160. package/dist/atlas/physjs-ref.js.map +1 -1
  161. package/dist/atlas/physjs-reviewed.d.ts +31 -0
  162. package/dist/atlas/physjs-reviewed.d.ts.map +1 -0
  163. package/dist/atlas/physjs-reviewed.js +194 -0
  164. package/dist/atlas/physjs-reviewed.js.map +1 -0
  165. package/dist/atlas/poster/associations.js.map +1 -1
  166. package/dist/atlas/poster/derivations.js.map +1 -1
  167. package/dist/atlas/poster/statements.d.ts +0 -19
  168. package/dist/atlas/poster/statements.d.ts.map +1 -1
  169. package/dist/atlas/poster/statements.js +1 -1
  170. package/dist/atlas/poster/statements.js.map +1 -1
  171. package/dist/atlas/proof-target.d.ts +1 -1
  172. package/dist/atlas/proof-target.js +1 -1
  173. package/dist/atlas/proof-target.js.map +1 -1
  174. package/dist/atlas/public.d.ts +2 -1
  175. package/dist/atlas/public.d.ts.map +1 -1
  176. package/dist/atlas/public.js +2 -1
  177. package/dist/atlas/public.js.map +1 -1
  178. package/dist/atlas/regime.d.ts +1 -1
  179. package/dist/atlas/regime.d.ts.map +1 -1
  180. package/dist/atlas/regime.js +1 -1
  181. package/dist/atlas/regime.js.map +1 -1
  182. package/dist/atlas/serialize.d.ts +18 -12
  183. package/dist/atlas/serialize.d.ts.map +1 -1
  184. package/dist/atlas/serialize.js +28 -18
  185. package/dist/atlas/serialize.js.map +1 -1
  186. package/dist/atlas/statement.js.map +1 -1
  187. package/dist/atlas/text-overlap.d.ts +23 -0
  188. package/dist/atlas/text-overlap.d.ts.map +1 -0
  189. package/dist/atlas/text-overlap.js +41 -0
  190. package/dist/atlas/text-overlap.js.map +1 -0
  191. package/dist/atlas/translation-registry.js.map +1 -1
  192. package/dist/atlas/translation.js.map +1 -1
  193. package/dist/atlas/types.d.ts +9 -2
  194. package/dist/atlas/types.d.ts.map +1 -1
  195. package/dist/atlas/types.js +1 -1
  196. package/dist/atlas/types.js.map +1 -1
  197. package/dist/atlas/waves/bridges-closure.d.ts.map +1 -1
  198. package/dist/atlas/waves/bridges-closure.js +2 -9
  199. package/dist/atlas/waves/bridges-closure.js.map +1 -1
  200. package/dist/atlas/waves/bridges.d.ts.map +1 -1
  201. package/dist/atlas/waves/bridges.js +32 -52
  202. package/dist/atlas/waves/bridges.js.map +1 -1
  203. package/dist/atlas/waves/index.d.ts +1 -1
  204. package/dist/atlas/waves/index.d.ts.map +1 -1
  205. package/dist/atlas/waves/index.js.map +1 -1
  206. package/dist/atlas/waves/models.d.ts +5 -6
  207. package/dist/atlas/waves/models.d.ts.map +1 -1
  208. package/dist/atlas/waves/models.js +7 -13
  209. package/dist/atlas/waves/models.js.map +1 -1
  210. package/dist/atlas/waves/numerics.d.ts.map +1 -1
  211. package/dist/atlas/waves/numerics.js +10 -3
  212. package/dist/atlas/waves/numerics.js.map +1 -1
  213. package/dist/atlas/witness-artifact.js.map +1 -1
  214. package/dist/atlas/witness-dominance.d.ts +4 -3
  215. package/dist/atlas/witness-dominance.d.ts.map +1 -1
  216. package/dist/atlas/witness-dominance.js +15 -5
  217. package/dist/atlas/witness-dominance.js.map +1 -1
  218. package/dist/atlas/witness-numeric.d.ts +38 -4
  219. package/dist/atlas/witness-numeric.d.ts.map +1 -1
  220. package/dist/atlas/witness-numeric.js +80 -2
  221. package/dist/atlas/witness-numeric.js.map +1 -1
  222. package/dist/atlas/witness-result.d.ts +7 -1
  223. package/dist/atlas/witness-result.d.ts.map +1 -1
  224. package/dist/atlas/witness-result.js.map +1 -1
  225. package/dist/atlas/witness-specs.d.ts.map +1 -1
  226. package/dist/atlas/witness-specs.js +19 -0
  227. package/dist/atlas/witness-specs.js.map +1 -1
  228. package/dist/atlas/witness-symbolic.d.ts +75 -3
  229. package/dist/atlas/witness-symbolic.d.ts.map +1 -1
  230. package/dist/atlas/witness-symbolic.js +116 -10
  231. package/dist/atlas/witness-symbolic.js.map +1 -1
  232. package/dist/atlas/witnesses/quantum-support.js.map +1 -1
  233. package/dist/bridges/caller-table.d.ts +1 -1
  234. package/dist/bridges/caller-table.d.ts.map +1 -1
  235. package/dist/bridges/caller-table.js.map +1 -1
  236. package/dist/bridges/carrier-sign.d.ts.map +1 -1
  237. package/dist/bridges/carrier-sign.js +8 -3
  238. package/dist/bridges/carrier-sign.js.map +1 -1
  239. package/dist/bridges/catalog-adapter.d.ts +12 -3
  240. package/dist/bridges/catalog-adapter.d.ts.map +1 -1
  241. package/dist/bridges/catalog-adapter.js +17 -9
  242. package/dist/bridges/catalog-adapter.js.map +1 -1
  243. package/dist/bridges/catalog-load.d.ts +12 -2
  244. package/dist/bridges/catalog-load.d.ts.map +1 -1
  245. package/dist/bridges/catalog-load.js +181 -13
  246. package/dist/bridges/catalog-load.js.map +1 -1
  247. package/dist/bridges/catalog-types.d.ts +74 -26
  248. package/dist/bridges/catalog-types.d.ts.map +1 -1
  249. package/dist/bridges/catalog-types.js +11 -1
  250. package/dist/bridges/catalog-types.js.map +1 -1
  251. package/dist/bridges/coefficient-statement.js +1 -5
  252. package/dist/bridges/coefficient-statement.js.map +1 -1
  253. package/dist/bridges/confrontation-coverage.js.map +1 -1
  254. package/dist/bridges/confrontations.d.ts +1 -1
  255. package/dist/bridges/confrontations.d.ts.map +1 -1
  256. package/dist/bridges/confrontations.js +1 -1
  257. package/dist/bridges/confrontations.js.map +1 -1
  258. package/dist/bridges/evaluation-errors.d.ts +46 -3
  259. package/dist/bridges/evaluation-errors.d.ts.map +1 -1
  260. package/dist/bridges/evaluation-errors.js +40 -4
  261. package/dist/bridges/evaluation-errors.js.map +1 -1
  262. package/dist/bridges/evaluator-inputs.d.ts.map +1 -1
  263. package/dist/bridges/evaluator-inputs.js +7 -5
  264. package/dist/bridges/evaluator-inputs.js.map +1 -1
  265. package/dist/bridges/evaluators.d.ts +17 -2
  266. package/dist/bridges/evaluators.d.ts.map +1 -1
  267. package/dist/bridges/evaluators.js +76 -28
  268. package/dist/bridges/evaluators.js.map +1 -1
  269. package/dist/bridges/expr-parse.d.ts +38 -4
  270. package/dist/bridges/expr-parse.d.ts.map +1 -1
  271. package/dist/bridges/expr-parse.js +101 -12
  272. package/dist/bridges/expr-parse.js.map +1 -1
  273. package/dist/bridges/holds.d.ts +40 -4
  274. package/dist/bridges/holds.d.ts.map +1 -1
  275. package/dist/bridges/holds.js +128 -19
  276. package/dist/bridges/holds.js.map +1 -1
  277. package/dist/bridges/index.d.ts +15 -14
  278. package/dist/bridges/index.d.ts.map +1 -1
  279. package/dist/bridges/index.js +14 -15
  280. package/dist/bridges/index.js.map +1 -1
  281. package/dist/bridges/input-contract.js.map +1 -1
  282. package/dist/bridges/membership.d.ts +5 -3
  283. package/dist/bridges/membership.d.ts.map +1 -1
  284. package/dist/bridges/membership.js +5 -6
  285. package/dist/bridges/membership.js.map +1 -1
  286. package/dist/bridges/notices.d.ts.map +1 -1
  287. package/dist/bridges/notices.js +5 -5
  288. package/dist/bridges/notices.js.map +1 -1
  289. package/dist/bridges/observations/types.js.map +1 -1
  290. package/dist/bridges/rejected.d.ts +11 -17
  291. package/dist/bridges/rejected.d.ts.map +1 -1
  292. package/dist/bridges/rejected.js +13 -68
  293. package/dist/bridges/rejected.js.map +1 -1
  294. package/dist/bridges/relation-eval.d.ts +6 -7
  295. package/dist/bridges/relation-eval.d.ts.map +1 -1
  296. package/dist/bridges/relation-eval.js +20 -50
  297. package/dist/bridges/relation-eval.js.map +1 -1
  298. package/dist/bridges/rhs-registry.js.map +1 -1
  299. package/dist/bridges/sensitivity.d.ts +11 -3
  300. package/dist/bridges/sensitivity.d.ts.map +1 -1
  301. package/dist/bridges/sensitivity.js +27 -13
  302. package/dist/bridges/sensitivity.js.map +1 -1
  303. package/dist/bridges/tensor-index.js.map +1 -1
  304. package/dist/bridges/types.d.ts +1 -7
  305. package/dist/bridges/types.d.ts.map +1 -1
  306. package/dist/bridges/types.js +1 -4
  307. package/dist/bridges/types.js.map +1 -1
  308. package/dist/bridges/validity.d.ts +33 -0
  309. package/dist/bridges/validity.d.ts.map +1 -0
  310. package/dist/bridges/validity.js +67 -0
  311. package/dist/bridges/validity.js.map +1 -0
  312. package/dist/canonical/canonical-equation.js.map +1 -1
  313. package/dist/canonical/dimensional-fields.js.map +1 -1
  314. package/dist/canonical/entries/_l1-build.js.map +1 -1
  315. package/dist/canonical/entries/atomic.js +1 -3
  316. package/dist/canonical/entries/atomic.js.map +1 -1
  317. package/dist/canonical/entries/condensed-matter.d.ts.map +1 -1
  318. package/dist/canonical/entries/condensed-matter.js +8 -9
  319. package/dist/canonical/entries/condensed-matter.js.map +1 -1
  320. package/dist/canonical/entries/dimensional-classics.d.ts.map +1 -1
  321. package/dist/canonical/entries/dimensional-classics.js +5 -6
  322. package/dist/canonical/entries/dimensional-classics.js.map +1 -1
  323. package/dist/canonical/entries/electromagnetism.d.ts.map +1 -1
  324. package/dist/canonical/entries/electromagnetism.js +6 -12
  325. package/dist/canonical/entries/electromagnetism.js.map +1 -1
  326. package/dist/canonical/entries/fluids-waves.d.ts.map +1 -1
  327. package/dist/canonical/entries/fluids-waves.js +3 -7
  328. package/dist/canonical/entries/fluids-waves.js.map +1 -1
  329. package/dist/canonical/entries/mechanics.d.ts.map +1 -1
  330. package/dist/canonical/entries/mechanics.js +4 -6
  331. package/dist/canonical/entries/mechanics.js.map +1 -1
  332. package/dist/canonical/entries/nonmonomial.d.ts.map +1 -1
  333. package/dist/canonical/entries/nonmonomial.js +38 -39
  334. package/dist/canonical/entries/nonmonomial.js.map +1 -1
  335. package/dist/canonical/entries/relativity.d.ts.map +1 -1
  336. package/dist/canonical/entries/relativity.js +6 -6
  337. package/dist/canonical/entries/relativity.js.map +1 -1
  338. package/dist/canonical/entries/statistical-mechanics.js +5 -5
  339. package/dist/canonical/entries/statistical-mechanics.js.map +1 -1
  340. package/dist/canonical/entries/thermo-nuclear-cosmo.d.ts.map +1 -1
  341. package/dist/canonical/entries/thermo-nuclear-cosmo.js +6 -10
  342. package/dist/canonical/entries/thermo-nuclear-cosmo.js.map +1 -1
  343. package/dist/canonical/fixed-points.d.ts +94 -0
  344. package/dist/canonical/fixed-points.d.ts.map +1 -0
  345. package/dist/canonical/fixed-points.js +81 -0
  346. package/dist/canonical/fixed-points.js.map +1 -0
  347. package/dist/canonical/linkage.d.ts +29 -4
  348. package/dist/canonical/linkage.d.ts.map +1 -1
  349. package/dist/canonical/linkage.js +47 -64
  350. package/dist/canonical/linkage.js.map +1 -1
  351. package/dist/canonical/normal-form.d.ts +0 -8
  352. package/dist/canonical/normal-form.d.ts.map +1 -1
  353. package/dist/canonical/normal-form.js +22 -23
  354. package/dist/canonical/normal-form.js.map +1 -1
  355. package/dist/canonical/registry.js.map +1 -1
  356. package/dist/canonical/residual.js.map +1 -1
  357. package/dist/canonical/seed-l-layer.d.ts +7 -1
  358. package/dist/canonical/seed-l-layer.d.ts.map +1 -1
  359. package/dist/canonical/seed-l-layer.js +7 -1
  360. package/dist/canonical/seed-l-layer.js.map +1 -1
  361. package/dist/canonical/structural.d.ts +42 -21
  362. package/dist/canonical/structural.d.ts.map +1 -1
  363. package/dist/canonical/structural.js +64 -23
  364. package/dist/canonical/structural.js.map +1 -1
  365. package/dist/cases/brownian-sphere.d.ts +3 -3
  366. package/dist/cases/brownian-sphere.d.ts.map +1 -1
  367. package/dist/cases/brownian-sphere.js +10 -9
  368. package/dist/cases/brownian-sphere.js.map +1 -1
  369. package/dist/cases/damped-resonator.d.ts.map +1 -1
  370. package/dist/cases/damped-resonator.js +8 -11
  371. package/dist/cases/damped-resonator.js.map +1 -1
  372. package/dist/cases/index.js.map +1 -1
  373. package/dist/cases/kepler-rv.d.ts +1 -1
  374. package/dist/cases/kepler-rv.d.ts.map +1 -1
  375. package/dist/cases/kepler-rv.js +3 -2
  376. package/dist/cases/kepler-rv.js.map +1 -1
  377. package/dist/cases/lumped-cooling.d.ts +8 -3
  378. package/dist/cases/lumped-cooling.d.ts.map +1 -1
  379. package/dist/cases/lumped-cooling.js +22 -24
  380. package/dist/cases/lumped-cooling.js.map +1 -1
  381. package/dist/cases/quadrature.d.ts +7 -9
  382. package/dist/cases/quadrature.d.ts.map +1 -1
  383. package/dist/cases/quadrature.js +28 -32
  384. package/dist/cases/quadrature.js.map +1 -1
  385. package/dist/cases/resistor-noise.js +7 -7
  386. package/dist/cases/resistor-noise.js.map +1 -1
  387. package/dist/cases/skin-depth.d.ts +0 -4
  388. package/dist/cases/skin-depth.d.ts.map +1 -1
  389. package/dist/cases/skin-depth.js +3 -7
  390. package/dist/cases/skin-depth.js.map +1 -1
  391. package/dist/cases/types.js.map +1 -1
  392. package/dist/cli/args.d.ts +30 -3
  393. package/dist/cli/args.d.ts.map +1 -1
  394. package/dist/cli/args.js +47 -9
  395. package/dist/cli/args.js.map +1 -1
  396. package/dist/cli/bindings.d.ts +13 -0
  397. package/dist/cli/bindings.d.ts.map +1 -0
  398. package/dist/cli/bindings.js +33 -0
  399. package/dist/cli/bindings.js.map +1 -0
  400. package/dist/cli/closed-form-range.js.map +1 -1
  401. package/dist/cli/command.d.ts +8 -1
  402. package/dist/cli/command.d.ts.map +1 -1
  403. package/dist/cli/command.js.map +1 -1
  404. package/dist/cli/commands/_atlas-map.d.ts +2 -11
  405. package/dist/cli/commands/_atlas-map.d.ts.map +1 -1
  406. package/dist/cli/commands/_atlas-map.js +50 -35
  407. package/dist/cli/commands/_atlas-map.js.map +1 -1
  408. package/dist/cli/commands/_atlas-route.d.ts.map +1 -1
  409. package/dist/cli/commands/_atlas-route.js +6 -2
  410. package/dist/cli/commands/_atlas-route.js.map +1 -1
  411. package/dist/cli/commands/_discovery-opts.d.ts.map +1 -1
  412. package/dist/cli/commands/_discovery-opts.js +48 -14
  413. package/dist/cli/commands/_discovery-opts.js.map +1 -1
  414. package/dist/cli/commands/atlas.d.ts.map +1 -1
  415. package/dist/cli/commands/atlas.js +9 -8
  416. package/dist/cli/commands/atlas.js.map +1 -1
  417. package/dist/cli/commands/audit.d.ts.map +1 -1
  418. package/dist/cli/commands/audit.js +20 -20
  419. package/dist/cli/commands/audit.js.map +1 -1
  420. package/dist/cli/commands/axes.d.ts.map +1 -1
  421. package/dist/cli/commands/axes.js +20 -1
  422. package/dist/cli/commands/axes.js.map +1 -1
  423. package/dist/cli/commands/candidates.d.ts.map +1 -1
  424. package/dist/cli/commands/candidates.js +16 -8
  425. package/dist/cli/commands/candidates.js.map +1 -1
  426. package/dist/cli/commands/canonical.js.map +1 -1
  427. package/dist/cli/commands/chain.js +1 -1
  428. package/dist/cli/commands/chain.js.map +1 -1
  429. package/dist/cli/commands/confront.d.ts.map +1 -1
  430. package/dist/cli/commands/confront.js +22 -20
  431. package/dist/cli/commands/confront.js.map +1 -1
  432. package/dist/cli/commands/connectors.js.map +1 -1
  433. package/dist/cli/commands/coverage.js.map +1 -1
  434. package/dist/cli/commands/derive.d.ts.map +1 -1
  435. package/dist/cli/commands/derive.js +60 -35
  436. package/dist/cli/commands/derive.js.map +1 -1
  437. package/dist/cli/commands/discover.d.ts.map +1 -1
  438. package/dist/cli/commands/discover.js +20 -10
  439. package/dist/cli/commands/discover.js.map +1 -1
  440. package/dist/cli/commands/eval.d.ts.map +1 -1
  441. package/dist/cli/commands/eval.js +14 -10
  442. package/dist/cli/commands/eval.js.map +1 -1
  443. package/dist/cli/commands/evaluate.d.ts.map +1 -1
  444. package/dist/cli/commands/evaluate.js +108 -58
  445. package/dist/cli/commands/evaluate.js.map +1 -1
  446. package/dist/cli/commands/explain.d.ts.map +1 -1
  447. package/dist/cli/commands/explain.js +16 -8
  448. package/dist/cli/commands/explain.js.map +1 -1
  449. package/dist/cli/commands/frontier.js.map +1 -1
  450. package/dist/cli/commands/ground.d.ts.map +1 -1
  451. package/dist/cli/commands/ground.js +41 -10
  452. package/dist/cli/commands/ground.js.map +1 -1
  453. package/dist/cli/commands/index.js.map +1 -1
  454. package/dist/cli/commands/map.d.ts.map +1 -1
  455. package/dist/cli/commands/map.js +155 -92
  456. package/dist/cli/commands/map.js.map +1 -1
  457. package/dist/cli/commands/metric.d.ts.map +1 -1
  458. package/dist/cli/commands/metric.js +58 -20
  459. package/dist/cli/commands/metric.js.map +1 -1
  460. package/dist/cli/commands/path.d.ts +10 -0
  461. package/dist/cli/commands/path.d.ts.map +1 -1
  462. package/dist/cli/commands/path.js +29 -7
  463. package/dist/cli/commands/path.js.map +1 -1
  464. package/dist/cli/commands/predict.js.map +1 -1
  465. package/dist/cli/commands/priority.js.map +1 -1
  466. package/dist/cli/commands/probe.d.ts.map +1 -1
  467. package/dist/cli/commands/probe.js +105 -38
  468. package/dist/cli/commands/probe.js.map +1 -1
  469. package/dist/cli/commands/recover.js +1 -1
  470. package/dist/cli/commands/recover.js.map +1 -1
  471. package/dist/cli/commands/regime.d.ts +5 -4
  472. package/dist/cli/commands/regime.d.ts.map +1 -1
  473. package/dist/cli/commands/regime.js +25 -26
  474. package/dist/cli/commands/regime.js.map +1 -1
  475. package/dist/cli/commands/retrieve.d.ts.map +1 -1
  476. package/dist/cli/commands/retrieve.js +23 -14
  477. package/dist/cli/commands/retrieve.js.map +1 -1
  478. package/dist/cli/commands/search.d.ts.map +1 -1
  479. package/dist/cli/commands/search.js +9 -4
  480. package/dist/cli/commands/search.js.map +1 -1
  481. package/dist/cli/commands/symbolic.js +31 -36
  482. package/dist/cli/commands/symbolic.js.map +1 -1
  483. package/dist/cli/commands/testplan.d.ts.map +1 -1
  484. package/dist/cli/commands/testplan.js +5 -3
  485. package/dist/cli/commands/testplan.js.map +1 -1
  486. package/dist/cli/conventions.js.map +1 -1
  487. package/dist/cli/determination.js.map +1 -1
  488. package/dist/cli/errors.js.map +1 -1
  489. package/dist/cli/euler-guard.js.map +1 -1
  490. package/dist/cli/eval-numbers.js.map +1 -1
  491. package/dist/cli/expr-print.d.ts +28 -3
  492. package/dist/cli/expr-print.d.ts.map +1 -1
  493. package/dist/cli/expr-print.js +42 -22
  494. package/dist/cli/expr-print.js.map +1 -1
  495. package/dist/cli/flag-help.js.map +1 -1
  496. package/dist/cli/graphs.js.map +1 -1
  497. package/dist/cli/library-defaults.d.ts +19 -0
  498. package/dist/cli/library-defaults.d.ts.map +1 -0
  499. package/dist/cli/library-defaults.js +22 -0
  500. package/dist/cli/library-defaults.js.map +1 -0
  501. package/dist/cli/main.d.ts +7 -0
  502. package/dist/cli/main.d.ts.map +1 -1
  503. package/dist/cli/main.js +25 -6
  504. package/dist/cli/main.js.map +1 -1
  505. package/dist/cli/map-evidence.js.map +1 -1
  506. package/dist/cli/numeric-flag.d.ts +12 -0
  507. package/dist/cli/numeric-flag.d.ts.map +1 -0
  508. package/dist/cli/numeric-flag.js +44 -0
  509. package/dist/cli/numeric-flag.js.map +1 -0
  510. package/dist/cli/output.d.ts +23 -6
  511. package/dist/cli/output.d.ts.map +1 -1
  512. package/dist/cli/output.js +15 -0
  513. package/dist/cli/output.js.map +1 -1
  514. package/dist/cli/published-url.js.map +1 -1
  515. package/dist/cli/record-reach.d.ts +6 -0
  516. package/dist/cli/record-reach.d.ts.map +1 -1
  517. package/dist/cli/record-reach.js +17 -11
  518. package/dist/cli/record-reach.js.map +1 -1
  519. package/dist/cli/record-tables.d.ts.map +1 -1
  520. package/dist/cli/record-tables.js +7 -6
  521. package/dist/cli/record-tables.js.map +1 -1
  522. package/dist/cli/record.d.ts +1 -5
  523. package/dist/cli/record.d.ts.map +1 -1
  524. package/dist/cli/record.js +40 -20
  525. package/dist/cli/record.js.map +1 -1
  526. package/dist/cli/search-index.d.ts +5 -0
  527. package/dist/cli/search-index.d.ts.map +1 -1
  528. package/dist/cli/search-index.js +19 -7
  529. package/dist/cli/search-index.js.map +1 -1
  530. package/dist/cli/statuses.d.ts +0 -2
  531. package/dist/cli/statuses.d.ts.map +1 -1
  532. package/dist/cli/statuses.js +0 -7
  533. package/dist/cli/statuses.js.map +1 -1
  534. package/dist/cli/stored-results.d.ts +7 -0
  535. package/dist/cli/stored-results.d.ts.map +1 -0
  536. package/dist/cli/stored-results.js +23 -0
  537. package/dist/cli/stored-results.js.map +1 -0
  538. package/dist/cli/top-level-help.js.map +1 -1
  539. package/dist/cli/version.d.ts.map +1 -1
  540. package/dist/cli/version.js +7 -5
  541. package/dist/cli/version.js.map +1 -1
  542. package/dist/cli-api.d.ts +49 -14
  543. package/dist/cli-api.d.ts.map +1 -1
  544. package/dist/cli-api.js +42 -17
  545. package/dist/cli-api.js.map +1 -1
  546. package/dist/composition/adjudication.js.map +1 -1
  547. package/dist/composition/algebraic-equivalence.d.ts +43 -0
  548. package/dist/composition/algebraic-equivalence.d.ts.map +1 -0
  549. package/dist/composition/algebraic-equivalence.js +115 -0
  550. package/dist/composition/algebraic-equivalence.js.map +1 -0
  551. package/dist/composition/aliases.js.map +1 -1
  552. package/dist/composition/audit-coverage.d.ts +2 -0
  553. package/dist/composition/audit-coverage.d.ts.map +1 -1
  554. package/dist/composition/audit-coverage.js.map +1 -1
  555. package/dist/composition/axes.d.ts +6 -0
  556. package/dist/composition/axes.d.ts.map +1 -1
  557. package/dist/composition/axes.js +18 -6
  558. package/dist/composition/axes.js.map +1 -1
  559. package/dist/composition/axis-audit.d.ts +47 -20
  560. package/dist/composition/axis-audit.d.ts.map +1 -1
  561. package/dist/composition/axis-audit.js +82 -9
  562. package/dist/composition/axis-audit.js.map +1 -1
  563. package/dist/composition/bridge-analysis.d.ts +14 -15
  564. package/dist/composition/bridge-analysis.d.ts.map +1 -1
  565. package/dist/composition/bridge-analysis.js +148 -91
  566. package/dist/composition/bridge-analysis.js.map +1 -1
  567. package/dist/composition/bridge-prediction.d.ts +5 -1
  568. package/dist/composition/bridge-prediction.d.ts.map +1 -1
  569. package/dist/composition/bridge-prediction.js +12 -16
  570. package/dist/composition/bridge-prediction.js.map +1 -1
  571. package/dist/composition/buckingham-filter.js.map +1 -1
  572. package/dist/composition/canonical-compare.d.ts +40 -0
  573. package/dist/composition/canonical-compare.d.ts.map +1 -1
  574. package/dist/composition/canonical-compare.js +134 -26
  575. package/dist/composition/canonical-compare.js.map +1 -1
  576. package/dist/composition/canonical-graph.d.ts +9 -10
  577. package/dist/composition/canonical-graph.d.ts.map +1 -1
  578. package/dist/composition/canonical-graph.js +33 -102
  579. package/dist/composition/canonical-graph.js.map +1 -1
  580. package/dist/composition/canonical-json.js +2 -2
  581. package/dist/composition/canonical-json.js.map +1 -1
  582. package/dist/composition/canonical-prefactors.js.map +1 -1
  583. package/dist/composition/catalog-graph.d.ts.map +1 -1
  584. package/dist/composition/catalog-graph.js +8 -25
  585. package/dist/composition/catalog-graph.js.map +1 -1
  586. package/dist/composition/chain-candidate.d.ts +10 -0
  587. package/dist/composition/chain-candidate.d.ts.map +1 -1
  588. package/dist/composition/chain-candidate.js +11 -2
  589. package/dist/composition/chain-candidate.js.map +1 -1
  590. package/dist/composition/chain-match.d.ts +6 -3
  591. package/dist/composition/chain-match.d.ts.map +1 -1
  592. package/dist/composition/chain-match.js +4 -1
  593. package/dist/composition/chain-match.js.map +1 -1
  594. package/dist/composition/chain-regime.js.map +1 -1
  595. package/dist/composition/chain-result.d.ts.map +1 -1
  596. package/dist/composition/chain-result.js +2 -14
  597. package/dist/composition/chain-result.js.map +1 -1
  598. package/dist/composition/compose-surface.js.map +1 -1
  599. package/dist/composition/compose-symbolic.d.ts.map +1 -1
  600. package/dist/composition/compose-symbolic.js +3 -2
  601. package/dist/composition/compose-symbolic.js.map +1 -1
  602. package/dist/composition/compose.d.ts.map +1 -1
  603. package/dist/composition/compose.js +166 -41
  604. package/dist/composition/compose.js.map +1 -1
  605. package/dist/composition/composition-recovery.d.ts.map +1 -1
  606. package/dist/composition/composition-recovery.js +4 -7
  607. package/dist/composition/composition-recovery.js.map +1 -1
  608. package/dist/composition/consequence.d.ts.map +1 -1
  609. package/dist/composition/consequence.js +15 -6
  610. package/dist/composition/consequence.js.map +1 -1
  611. package/dist/composition/consistency.js.map +1 -1
  612. package/dist/composition/descriptor.d.ts +1 -1
  613. package/dist/composition/descriptor.d.ts.map +1 -1
  614. package/dist/composition/descriptor.js.map +1 -1
  615. package/dist/composition/dimension-adjacency.js.map +1 -1
  616. package/dist/composition/discovery.d.ts +77 -11
  617. package/dist/composition/discovery.d.ts.map +1 -1
  618. package/dist/composition/discovery.js +194 -80
  619. package/dist/composition/discovery.js.map +1 -1
  620. package/dist/composition/edge.d.ts +40 -10
  621. package/dist/composition/edge.d.ts.map +1 -1
  622. package/dist/composition/edge.js +47 -12
  623. package/dist/composition/edge.js.map +1 -1
  624. package/dist/composition/enumerate.d.ts +2 -2
  625. package/dist/composition/enumerate.d.ts.map +1 -1
  626. package/dist/composition/enumerate.js +18 -3
  627. package/dist/composition/enumerate.js.map +1 -1
  628. package/dist/composition/evaluate-relation.d.ts +35 -11
  629. package/dist/composition/evaluate-relation.d.ts.map +1 -1
  630. package/dist/composition/evaluate-relation.js +60 -39
  631. package/dist/composition/evaluate-relation.js.map +1 -1
  632. package/dist/composition/explain.d.ts +5 -9
  633. package/dist/composition/explain.d.ts.map +1 -1
  634. package/dist/composition/explain.js +38 -18
  635. package/dist/composition/explain.js.map +1 -1
  636. package/dist/composition/expr-eval.d.ts.map +1 -1
  637. package/dist/composition/expr-eval.js +2 -11
  638. package/dist/composition/expr-eval.js.map +1 -1
  639. package/dist/composition/expr-simplify.d.ts +16 -0
  640. package/dist/composition/expr-simplify.d.ts.map +1 -1
  641. package/dist/composition/expr-simplify.js +24 -59
  642. package/dist/composition/expr-simplify.js.map +1 -1
  643. package/dist/composition/expr-subst.js.map +1 -1
  644. package/dist/composition/formula-shape.d.ts +28 -0
  645. package/dist/composition/formula-shape.d.ts.map +1 -1
  646. package/dist/composition/formula-shape.js +96 -2
  647. package/dist/composition/formula-shape.js.map +1 -1
  648. package/dist/composition/frontier-account.d.ts +3 -2
  649. package/dist/composition/frontier-account.d.ts.map +1 -1
  650. package/dist/composition/frontier-account.js +7 -3
  651. package/dist/composition/frontier-account.js.map +1 -1
  652. package/dist/composition/graph-structure.d.ts +98 -0
  653. package/dist/composition/graph-structure.d.ts.map +1 -0
  654. package/dist/composition/graph-structure.js +167 -0
  655. package/dist/composition/graph-structure.js.map +1 -0
  656. package/dist/composition/graph-viz-svg.d.ts.map +1 -1
  657. package/dist/composition/graph-viz-svg.js +1 -1
  658. package/dist/composition/graph-viz-svg.js.map +1 -1
  659. package/dist/composition/graph-viz.d.ts.map +1 -1
  660. package/dist/composition/graph-viz.js +8 -37
  661. package/dist/composition/graph-viz.js.map +1 -1
  662. package/dist/composition/grounding.js.map +1 -1
  663. package/dist/composition/identifiability.d.ts +91 -4
  664. package/dist/composition/identifiability.d.ts.map +1 -1
  665. package/dist/composition/identifiability.js +363 -6
  666. package/dist/composition/identifiability.js.map +1 -1
  667. package/dist/composition/index.d.ts +14 -8
  668. package/dist/composition/index.d.ts.map +1 -1
  669. package/dist/composition/index.js +7 -5
  670. package/dist/composition/index.js.map +1 -1
  671. package/dist/composition/mathts-quiet.d.ts +29 -0
  672. package/dist/composition/mathts-quiet.d.ts.map +1 -0
  673. package/dist/composition/mathts-quiet.js +57 -0
  674. package/dist/composition/mathts-quiet.js.map +1 -0
  675. package/dist/composition/mathts-scalar-symbols.d.ts.map +1 -1
  676. package/dist/composition/mathts-scalar-symbols.js +20 -35
  677. package/dist/composition/mathts-scalar-symbols.js.map +1 -1
  678. package/dist/composition/not-composable-seeds.d.ts +3 -1
  679. package/dist/composition/not-composable-seeds.d.ts.map +1 -1
  680. package/dist/composition/not-composable-seeds.js +2 -0
  681. package/dist/composition/not-composable-seeds.js.map +1 -1
  682. package/dist/composition/probe/backend-protocol.js.map +1 -1
  683. package/dist/composition/probe/candidate-store.js.map +1 -1
  684. package/dist/composition/probe/corpus.d.ts +4 -2
  685. package/dist/composition/probe/corpus.d.ts.map +1 -1
  686. package/dist/composition/probe/corpus.js +20 -9
  687. package/dist/composition/probe/corpus.js.map +1 -1
  688. package/dist/composition/probe/dataset.d.ts +17 -0
  689. package/dist/composition/probe/dataset.d.ts.map +1 -1
  690. package/dist/composition/probe/dataset.js +95 -50
  691. package/dist/composition/probe/dataset.js.map +1 -1
  692. package/dist/composition/probe/experiment-design.d.ts +5 -1
  693. package/dist/composition/probe/experiment-design.d.ts.map +1 -1
  694. package/dist/composition/probe/experiment-design.js +44 -24
  695. package/dist/composition/probe/experiment-design.js.map +1 -1
  696. package/dist/composition/probe/expression-gaps.js.map +1 -1
  697. package/dist/composition/probe/falsify.d.ts +14 -3
  698. package/dist/composition/probe/falsify.d.ts.map +1 -1
  699. package/dist/composition/probe/falsify.js +16 -27
  700. package/dist/composition/probe/falsify.js.map +1 -1
  701. package/dist/composition/probe/fingerprint.js.map +1 -1
  702. package/dist/composition/probe/fit.d.ts +7 -1
  703. package/dist/composition/probe/fit.d.ts.map +1 -1
  704. package/dist/composition/probe/fit.js +48 -23
  705. package/dist/composition/probe/fit.js.map +1 -1
  706. package/dist/composition/probe/frontier.d.ts.map +1 -1
  707. package/dist/composition/probe/frontier.js +33 -15
  708. package/dist/composition/probe/frontier.js.map +1 -1
  709. package/dist/composition/probe/generator.d.ts +27 -1
  710. package/dist/composition/probe/generator.d.ts.map +1 -1
  711. package/dist/composition/probe/generator.js +53 -30
  712. package/dist/composition/probe/generator.js.map +1 -1
  713. package/dist/composition/probe/index.d.ts +18 -2
  714. package/dist/composition/probe/index.d.ts.map +1 -1
  715. package/dist/composition/probe/index.js +10 -2
  716. package/dist/composition/probe/index.js.map +1 -1
  717. package/dist/composition/probe/limits.d.ts +24 -1
  718. package/dist/composition/probe/limits.d.ts.map +1 -1
  719. package/dist/composition/probe/limits.js +53 -11
  720. package/dist/composition/probe/limits.js.map +1 -1
  721. package/dist/composition/probe/metadata.js.map +1 -1
  722. package/dist/composition/probe/pipeline.d.ts +5 -0
  723. package/dist/composition/probe/pipeline.d.ts.map +1 -1
  724. package/dist/composition/probe/pipeline.js +22 -9
  725. package/dist/composition/probe/pipeline.js.map +1 -1
  726. package/dist/composition/probe/power-law.d.ts +121 -0
  727. package/dist/composition/probe/power-law.d.ts.map +1 -0
  728. package/dist/composition/probe/power-law.js +255 -0
  729. package/dist/composition/probe/power-law.js.map +1 -0
  730. package/dist/composition/probe/problem.d.ts +12 -1
  731. package/dist/composition/probe/problem.d.ts.map +1 -1
  732. package/dist/composition/probe/problem.js +242 -48
  733. package/dist/composition/probe/problem.js.map +1 -1
  734. package/dist/composition/probe/report.js +1 -1
  735. package/dist/composition/probe/report.js.map +1 -1
  736. package/dist/composition/probe/residual.d.ts +6 -1
  737. package/dist/composition/probe/residual.d.ts.map +1 -1
  738. package/dist/composition/probe/residual.js +9 -7
  739. package/dist/composition/probe/residual.js.map +1 -1
  740. package/dist/composition/probe/run-manifest.js +2 -2
  741. package/dist/composition/probe/run-manifest.js.map +1 -1
  742. package/dist/composition/probe/scoring.d.ts +2 -1
  743. package/dist/composition/probe/scoring.d.ts.map +1 -1
  744. package/dist/composition/probe/scoring.js +21 -7
  745. package/dist/composition/probe/scoring.js.map +1 -1
  746. package/dist/composition/probe/search-budget.js.map +1 -1
  747. package/dist/composition/probe/serialize.js.map +1 -1
  748. package/dist/composition/probe/structure.d.ts +82 -17
  749. package/dist/composition/probe/structure.d.ts.map +1 -1
  750. package/dist/composition/probe/structure.js +129 -55
  751. package/dist/composition/probe/structure.js.map +1 -1
  752. package/dist/composition/probe/study.d.ts +35 -12
  753. package/dist/composition/probe/study.d.ts.map +1 -1
  754. package/dist/composition/probe/study.js +241 -184
  755. package/dist/composition/probe/study.js.map +1 -1
  756. package/dist/composition/probe/t-tail.d.ts +17 -0
  757. package/dist/composition/probe/t-tail.d.ts.map +1 -0
  758. package/dist/composition/probe/t-tail.js +32 -0
  759. package/dist/composition/probe/t-tail.js.map +1 -0
  760. package/dist/composition/probe/types.d.ts +6 -1
  761. package/dist/composition/probe/types.d.ts.map +1 -1
  762. package/dist/composition/probe/types.js +2 -0
  763. package/dist/composition/probe/types.js.map +1 -1
  764. package/dist/composition/proposed-bridges.d.ts +51 -13
  765. package/dist/composition/proposed-bridges.d.ts.map +1 -1
  766. package/dist/composition/proposed-bridges.js +110 -58
  767. package/dist/composition/proposed-bridges.js.map +1 -1
  768. package/dist/composition/quantities.d.ts +0 -4
  769. package/dist/composition/quantities.d.ts.map +1 -1
  770. package/dist/composition/quantities.js +5 -5
  771. package/dist/composition/quantities.js.map +1 -1
  772. package/dist/composition/quantity-clusters.d.ts +48 -0
  773. package/dist/composition/quantity-clusters.d.ts.map +1 -0
  774. package/dist/composition/quantity-clusters.js +98 -0
  775. package/dist/composition/quantity-clusters.js.map +1 -0
  776. package/dist/composition/quantity.d.ts +18 -2
  777. package/dist/composition/quantity.d.ts.map +1 -1
  778. package/dist/composition/quantity.js +35 -6
  779. package/dist/composition/quantity.js.map +1 -1
  780. package/dist/composition/rational-exponent.d.ts +40 -0
  781. package/dist/composition/rational-exponent.d.ts.map +1 -0
  782. package/dist/composition/rational-exponent.js +65 -0
  783. package/dist/composition/rational-exponent.js.map +1 -0
  784. package/dist/composition/representative-values.d.ts +22 -0
  785. package/dist/composition/representative-values.d.ts.map +1 -1
  786. package/dist/composition/representative-values.js +23 -0
  787. package/dist/composition/representative-values.js.map +1 -1
  788. package/dist/composition/retrodiction.d.ts +16 -6
  789. package/dist/composition/retrodiction.d.ts.map +1 -1
  790. package/dist/composition/retrodiction.js +36 -10
  791. package/dist/composition/retrodiction.js.map +1 -1
  792. package/dist/composition/uncertainty.js.map +1 -1
  793. package/dist/composition/user-equation.d.ts.map +1 -1
  794. package/dist/composition/user-equation.js +2 -2
  795. package/dist/composition/user-equation.js.map +1 -1
  796. package/dist/core/assignment.d.ts +19 -0
  797. package/dist/core/assignment.d.ts.map +1 -0
  798. package/dist/core/assignment.js +19 -0
  799. package/dist/core/assignment.js.map +1 -0
  800. package/dist/core/axes-registry.d.ts +8 -5
  801. package/dist/core/axes-registry.d.ts.map +1 -1
  802. package/dist/core/axes-registry.js.map +1 -1
  803. package/dist/core/cell.js.map +1 -1
  804. package/dist/core/compare.d.ts +32 -0
  805. package/dist/core/compare.d.ts.map +1 -0
  806. package/dist/core/compare.js +46 -0
  807. package/dist/core/compare.js.map +1 -0
  808. package/dist/core/constants.d.ts +35 -35
  809. package/dist/core/constants.d.ts.map +1 -1
  810. package/dist/core/constants.js +52 -37
  811. package/dist/core/constants.js.map +1 -1
  812. package/dist/core/data-file.d.ts +7 -0
  813. package/dist/core/data-file.d.ts.map +1 -1
  814. package/dist/core/data-file.js +17 -0
  815. package/dist/core/data-file.js.map +1 -1
  816. package/dist/core/flux-rules.js +1 -1
  817. package/dist/core/flux-rules.js.map +1 -1
  818. package/dist/core/format.d.ts +36 -0
  819. package/dist/core/format.d.ts.map +1 -0
  820. package/dist/core/format.js +39 -0
  821. package/dist/core/format.js.map +1 -0
  822. package/dist/core/hash.d.ts +14 -0
  823. package/dist/core/hash.d.ts.map +1 -0
  824. package/dist/core/hash.js +17 -0
  825. package/dist/core/hash.js.map +1 -0
  826. package/dist/core/json-schema.d.ts +3 -1
  827. package/dist/core/json-schema.d.ts.map +1 -1
  828. package/dist/core/json-schema.js +41 -16
  829. package/dist/core/json-schema.js.map +1 -1
  830. package/dist/core/labeled-tensor.d.ts +6 -1
  831. package/dist/core/labeled-tensor.d.ts.map +1 -1
  832. package/dist/core/labeled-tensor.js +18 -16
  833. package/dist/core/labeled-tensor.js.map +1 -1
  834. package/dist/core/mathts-read.d.ts +25 -0
  835. package/dist/core/mathts-read.d.ts.map +1 -0
  836. package/dist/core/mathts-read.js +51 -0
  837. package/dist/core/mathts-read.js.map +1 -0
  838. package/dist/core/regime-registry.d.ts +6 -2
  839. package/dist/core/regime-registry.d.ts.map +1 -1
  840. package/dist/core/regime-registry.js.map +1 -1
  841. package/dist/core/regime-rule-install.js.map +1 -1
  842. package/dist/core/regimes-builtins.js.map +1 -1
  843. package/dist/core/tensor.d.ts +7 -4
  844. package/dist/core/tensor.d.ts.map +1 -1
  845. package/dist/core/tensor.js +64 -8
  846. package/dist/core/tensor.js.map +1 -1
  847. package/dist/core/types.d.ts +5 -5
  848. package/dist/core/types.js.map +1 -1
  849. package/dist/core/universal-index.js.map +1 -1
  850. package/dist/diff/bridge-ast-gradient.d.ts +4 -5
  851. package/dist/diff/bridge-ast-gradient.d.ts.map +1 -1
  852. package/dist/diff/bridge-ast-gradient.js +10 -6
  853. package/dist/diff/bridge-ast-gradient.js.map +1 -1
  854. package/dist/diff/bridge-gradient.d.ts +43 -86
  855. package/dist/diff/bridge-gradient.d.ts.map +1 -1
  856. package/dist/diff/bridge-gradient.js +40 -109
  857. package/dist/diff/bridge-gradient.js.map +1 -1
  858. package/dist/diff/bridge-specs.d.ts +16 -5
  859. package/dist/diff/bridge-specs.d.ts.map +1 -1
  860. package/dist/diff/bridge-specs.js +19 -4
  861. package/dist/diff/bridge-specs.js.map +1 -1
  862. package/dist/dimensional/algebra.d.ts +18 -0
  863. package/dist/dimensional/algebra.d.ts.map +1 -1
  864. package/dist/dimensional/algebra.js +41 -1
  865. package/dist/dimensional/algebra.js.map +1 -1
  866. package/dist/dimensional/ast-builders.d.ts +12 -4
  867. package/dist/dimensional/ast-builders.d.ts.map +1 -1
  868. package/dist/dimensional/ast-builders.js +17 -5
  869. package/dist/dimensional/ast-builders.js.map +1 -1
  870. package/dist/dimensional/ast-leaves.d.ts +81 -0
  871. package/dist/dimensional/ast-leaves.d.ts.map +1 -0
  872. package/dist/dimensional/ast-leaves.js +146 -0
  873. package/dist/dimensional/ast-leaves.js.map +1 -0
  874. package/dist/dimensional/ast-types.js.map +1 -1
  875. package/dist/dimensional/bridge-check.js.map +1 -1
  876. package/dist/dimensional/buckingham.d.ts.map +1 -1
  877. package/dist/dimensional/buckingham.js +15 -27
  878. package/dist/dimensional/buckingham.js.map +1 -1
  879. package/dist/dimensional/connection-validators.d.ts +2 -1
  880. package/dist/dimensional/connection-validators.d.ts.map +1 -1
  881. package/dist/dimensional/connection-validators.js.map +1 -1
  882. package/dist/dimensional/connection.js.map +1 -1
  883. package/dist/dimensional/constant-rows.d.ts.map +1 -1
  884. package/dist/dimensional/constant-rows.js +17 -13
  885. package/dist/dimensional/constant-rows.js.map +1 -1
  886. package/dist/dimensional/constants.d.ts +5 -6
  887. package/dist/dimensional/constants.d.ts.map +1 -1
  888. package/dist/dimensional/constants.js +5 -6
  889. package/dist/dimensional/constants.js.map +1 -1
  890. package/dist/dimensional/curvature-composite.js.map +1 -1
  891. package/dist/dimensional/curvature-invariants.js.map +1 -1
  892. package/dist/dimensional/curvature.js.map +1 -1
  893. package/dist/dimensional/dimension-inference.d.ts.map +1 -1
  894. package/dist/dimensional/dimension-inference.js +1 -2
  895. package/dist/dimensional/dimension-inference.js.map +1 -1
  896. package/dist/dimensional/dimension-spec.d.ts +13 -7
  897. package/dist/dimensional/dimension-spec.d.ts.map +1 -1
  898. package/dist/dimensional/dimension-spec.js +49 -23
  899. package/dist/dimensional/dimension-spec.js.map +1 -1
  900. package/dist/dimensional/einstein-equation.js.map +1 -1
  901. package/dist/dimensional/errors.d.ts +4 -2
  902. package/dist/dimensional/errors.d.ts.map +1 -1
  903. package/dist/dimensional/errors.js +3 -17
  904. package/dist/dimensional/errors.js.map +1 -1
  905. package/dist/dimensional/exact-scale.d.ts +0 -17
  906. package/dist/dimensional/exact-scale.d.ts.map +1 -1
  907. package/dist/dimensional/exact-scale.js +8 -8
  908. package/dist/dimensional/exact-scale.js.map +1 -1
  909. package/dist/dimensional/field-equation-helpers.js.map +1 -1
  910. package/dist/dimensional/formula-names.js.map +1 -1
  911. package/dist/dimensional/fresh-label.js.map +1 -1
  912. package/dist/dimensional/friedmann-equation.d.ts +3 -3
  913. package/dist/dimensional/friedmann-equation.js +3 -3
  914. package/dist/dimensional/friedmann-equation.js.map +1 -1
  915. package/dist/dimensional/gauge-field.d.ts +2 -3
  916. package/dist/dimensional/gauge-field.d.ts.map +1 -1
  917. package/dist/dimensional/gauge-field.js +2 -3
  918. package/dist/dimensional/gauge-field.js.map +1 -1
  919. package/dist/dimensional/hyphen-names.d.ts +12 -2
  920. package/dist/dimensional/hyphen-names.d.ts.map +1 -1
  921. package/dist/dimensional/hyphen-names.js +45 -12
  922. package/dist/dimensional/hyphen-names.js.map +1 -1
  923. package/dist/dimensional/killing-validators.js.map +1 -1
  924. package/dist/dimensional/klein-gordon-equation.js.map +1 -1
  925. package/dist/dimensional/metric-validators.d.ts +2 -1
  926. package/dist/dimensional/metric-validators.d.ts.map +1 -1
  927. package/dist/dimensional/metric-validators.js.map +1 -1
  928. package/dist/dimensional/metric.d.ts.map +1 -1
  929. package/dist/dimensional/metric.js +0 -1
  930. package/dist/dimensional/metric.js.map +1 -1
  931. package/dist/dimensional/natural-units.js.map +1 -1
  932. package/dist/dimensional/quantity-registry.d.ts +13 -0
  933. package/dist/dimensional/quantity-registry.d.ts.map +1 -1
  934. package/dist/dimensional/quantity-registry.js +14 -6
  935. package/dist/dimensional/quantity-registry.js.map +1 -1
  936. package/dist/dimensional/rg-flow.js.map +1 -1
  937. package/dist/dimensional/stress-energy-validators.js.map +1 -1
  938. package/dist/dimensional/symbolic-constants.d.ts +9 -0
  939. package/dist/dimensional/symbolic-constants.d.ts.map +1 -1
  940. package/dist/dimensional/symbolic-constants.js +20 -3
  941. package/dist/dimensional/symbolic-constants.js.map +1 -1
  942. package/dist/dimensional/tensor-trace.js.map +1 -1
  943. package/dist/dimensional/tensor.js.map +1 -1
  944. package/dist/dimensional/types.d.ts +36 -0
  945. package/dist/dimensional/types.d.ts.map +1 -1
  946. package/dist/dimensional/types.js +45 -7
  947. package/dist/dimensional/types.js.map +1 -1
  948. package/dist/dimensional/unit-convention.d.ts +0 -2
  949. package/dist/dimensional/unit-convention.d.ts.map +1 -1
  950. package/dist/dimensional/unit-convention.js +2 -2
  951. package/dist/dimensional/unit-convention.js.map +1 -1
  952. package/dist/dimensional/unit-data.d.ts.map +1 -1
  953. package/dist/dimensional/unit-data.js +11 -7
  954. package/dist/dimensional/unit-data.js.map +1 -1
  955. package/dist/dimensional/units.d.ts.map +1 -1
  956. package/dist/dimensional/units.js +38 -20
  957. package/dist/dimensional/units.js.map +1 -1
  958. package/dist/dimensional/validator-registry.js.map +1 -1
  959. package/dist/dimensional/validator.d.ts +0 -16
  960. package/dist/dimensional/validator.d.ts.map +1 -1
  961. package/dist/dimensional/validator.js +65 -29
  962. package/dist/dimensional/validator.js.map +1 -1
  963. package/dist/dimensional/weyl-validators.js.map +1 -1
  964. package/dist/index.d.ts +59 -8
  965. package/dist/index.d.ts.map +1 -1
  966. package/dist/index.js +22 -24
  967. package/dist/index.js.map +1 -1
  968. package/dist/numerical/bianchi-residual.js.map +1 -1
  969. package/dist/numerical/binding-value.d.ts +11 -6
  970. package/dist/numerical/binding-value.d.ts.map +1 -1
  971. package/dist/numerical/binding-value.js +126 -122
  972. package/dist/numerical/binding-value.js.map +1 -1
  973. package/dist/numerical/christoffel-flat.d.ts.map +1 -1
  974. package/dist/numerical/christoffel-flat.js +3 -2
  975. package/dist/numerical/christoffel-flat.js.map +1 -1
  976. package/dist/numerical/connection-lowering-helpers.js.map +1 -1
  977. package/dist/numerical/covariant-eikonal.d.ts.map +1 -1
  978. package/dist/numerical/covariant-eikonal.js +36 -13
  979. package/dist/numerical/covariant-eikonal.js.map +1 -1
  980. package/dist/numerical/curvature-lowering-helpers.d.ts +20 -0
  981. package/dist/numerical/curvature-lowering-helpers.d.ts.map +1 -1
  982. package/dist/numerical/curvature-lowering-helpers.js +9 -5
  983. package/dist/numerical/curvature-lowering-helpers.js.map +1 -1
  984. package/dist/numerical/derivative-lowering.js.map +1 -1
  985. package/dist/numerical/einstein-equation.js.map +1 -1
  986. package/dist/numerical/engine-registry.js.map +1 -1
  987. package/dist/numerical/errors.d.ts +7 -3
  988. package/dist/numerical/errors.d.ts.map +1 -1
  989. package/dist/numerical/errors.js +5 -8
  990. package/dist/numerical/errors.js.map +1 -1
  991. package/dist/numerical/evaluator-uncertainty.d.ts.map +1 -1
  992. package/dist/numerical/evaluator-uncertainty.js +19 -2
  993. package/dist/numerical/evaluator-uncertainty.js.map +1 -1
  994. package/dist/numerical/finite-difference.d.ts +22 -0
  995. package/dist/numerical/finite-difference.d.ts.map +1 -0
  996. package/dist/numerical/finite-difference.js +27 -0
  997. package/dist/numerical/finite-difference.js.map +1 -0
  998. package/dist/numerical/formula-contract.d.ts +63 -7
  999. package/dist/numerical/formula-contract.d.ts.map +1 -1
  1000. package/dist/numerical/formula-contract.js +61 -42
  1001. package/dist/numerical/formula-contract.js.map +1 -1
  1002. package/dist/numerical/formula-dimension.d.ts +8 -7
  1003. package/dist/numerical/formula-dimension.d.ts.map +1 -1
  1004. package/dist/numerical/formula-dimension.js +58 -36
  1005. package/dist/numerical/formula-dimension.js.map +1 -1
  1006. package/dist/numerical/formula-mathts.d.ts.map +1 -1
  1007. package/dist/numerical/formula-mathts.js +5 -2
  1008. package/dist/numerical/formula-mathts.js.map +1 -1
  1009. package/dist/numerical/formula-registry.d.ts +13 -3
  1010. package/dist/numerical/formula-registry.d.ts.map +1 -1
  1011. package/dist/numerical/formula-registry.js +7 -2
  1012. package/dist/numerical/formula-registry.js.map +1 -1
  1013. package/dist/numerical/geodesic-integrator.d.ts.map +1 -1
  1014. package/dist/numerical/geodesic-integrator.js +22 -14
  1015. package/dist/numerical/geodesic-integrator.js.map +1 -1
  1016. package/dist/numerical/geometrized.d.ts.map +1 -1
  1017. package/dist/numerical/geometrized.js +0 -1
  1018. package/dist/numerical/geometrized.js.map +1 -1
  1019. package/dist/numerical/gl4-integrator.d.ts +28 -27
  1020. package/dist/numerical/gl4-integrator.d.ts.map +1 -1
  1021. package/dist/numerical/gl4-integrator.js +41 -42
  1022. package/dist/numerical/gl4-integrator.js.map +1 -1
  1023. package/dist/numerical/grid-field.js.map +1 -1
  1024. package/dist/numerical/index.js.map +1 -1
  1025. package/dist/numerical/input-validation.d.ts +3 -6
  1026. package/dist/numerical/input-validation.d.ts.map +1 -1
  1027. package/dist/numerical/input-validation.js +4 -8
  1028. package/dist/numerical/input-validation.js.map +1 -1
  1029. package/dist/numerical/killing.d.ts +8 -5
  1030. package/dist/numerical/killing.d.ts.map +1 -1
  1031. package/dist/numerical/killing.js.map +1 -1
  1032. package/dist/numerical/klein-gordon.js.map +1 -1
  1033. package/dist/numerical/kretschmann.js.map +1 -1
  1034. package/dist/numerical/lowering-utils.js.map +1 -1
  1035. package/dist/numerical/lowering.d.ts.map +1 -1
  1036. package/dist/numerical/lowering.js +7 -17
  1037. package/dist/numerical/lowering.js.map +1 -1
  1038. package/dist/numerical/mathts-engine.d.ts.map +1 -1
  1039. package/dist/numerical/mathts-engine.js +16 -25
  1040. package/dist/numerical/mathts-engine.js.map +1 -1
  1041. package/dist/numerical/metric-inverse.d.ts.map +1 -1
  1042. package/dist/numerical/metric-inverse.js +83 -46
  1043. package/dist/numerical/metric-inverse.js.map +1 -1
  1044. package/dist/numerical/null-ic.js.map +1 -1
  1045. package/dist/numerical/null-ray-integrator.d.ts +2 -1
  1046. package/dist/numerical/null-ray-integrator.d.ts.map +1 -1
  1047. package/dist/numerical/null-ray-integrator.js +12 -12
  1048. package/dist/numerical/null-ray-integrator.js.map +1 -1
  1049. package/dist/numerical/painleve-gullstrand-metric.js +2 -2
  1050. package/dist/numerical/painleve-gullstrand-metric.js.map +1 -1
  1051. package/dist/numerical/pderiv.d.ts.map +1 -1
  1052. package/dist/numerical/pderiv.js +9 -2
  1053. package/dist/numerical/pderiv.js.map +1 -1
  1054. package/dist/numerical/perihelion-finder.d.ts +0 -36
  1055. package/dist/numerical/perihelion-finder.d.ts.map +1 -1
  1056. package/dist/numerical/perihelion-finder.js +41 -87
  1057. package/dist/numerical/perihelion-finder.js.map +1 -1
  1058. package/dist/numerical/quadrature.d.ts +5 -2
  1059. package/dist/numerical/quadrature.d.ts.map +1 -1
  1060. package/dist/numerical/quadrature.js +19 -4
  1061. package/dist/numerical/quadrature.js.map +1 -1
  1062. package/dist/numerical/rk4-trajectory.d.ts +10 -0
  1063. package/dist/numerical/rk4-trajectory.d.ts.map +1 -0
  1064. package/dist/numerical/rk4-trajectory.js +37 -0
  1065. package/dist/numerical/rk4-trajectory.js.map +1 -0
  1066. package/dist/numerical/schwarzschild.d.ts +14 -0
  1067. package/dist/numerical/schwarzschild.d.ts.map +1 -0
  1068. package/dist/numerical/schwarzschild.js +17 -0
  1069. package/dist/numerical/schwarzschild.js.map +1 -0
  1070. package/dist/numerical/spacetime-metrics.d.ts +25 -19
  1071. package/dist/numerical/spacetime-metrics.d.ts.map +1 -1
  1072. package/dist/numerical/spacetime-metrics.js +180 -286
  1073. package/dist/numerical/spacetime-metrics.js.map +1 -1
  1074. package/dist/numerical/statistics.d.ts +24 -0
  1075. package/dist/numerical/statistics.d.ts.map +1 -0
  1076. package/dist/numerical/statistics.js +52 -0
  1077. package/dist/numerical/statistics.js.map +1 -0
  1078. package/dist/numerical/strides.js.map +1 -1
  1079. package/dist/numerical/tensor-engine.d.ts +30 -5
  1080. package/dist/numerical/tensor-engine.d.ts.map +1 -1
  1081. package/dist/numerical/tensor-engine.js +12 -0
  1082. package/dist/numerical/tensor-engine.js.map +1 -1
  1083. package/dist/numerical/types.js.map +1 -1
  1084. package/dist/numerical/weyl-lowering.js.map +1 -1
  1085. package/dist/relations/category.js.map +1 -1
  1086. package/dist/relations/composition-table.d.ts +4 -4
  1087. package/dist/relations/composition-table.js +4 -4
  1088. package/dist/relations/composition-table.js.map +1 -1
  1089. package/dist/relations/conventions.js.map +1 -1
  1090. package/dist/relations/domain-regimes.js.map +1 -1
  1091. package/dist/relations/regime-registration.js.map +1 -1
  1092. package/dist/relations/regime-vocabularies.js.map +1 -1
  1093. package/dist/relations/regime.d.ts +28 -8
  1094. package/dist/relations/regime.d.ts.map +1 -1
  1095. package/dist/relations/regime.js +44 -15
  1096. package/dist/relations/regime.js.map +1 -1
  1097. package/dist/relations/types.d.ts +18 -5
  1098. package/dist/relations/types.d.ts.map +1 -1
  1099. package/dist/relations/types.js +5 -3
  1100. package/dist/relations/types.js.map +1 -1
  1101. package/package.json +16 -20
  1102. package/dist/bridges/registry.d.ts +0 -60
  1103. package/dist/bridges/registry.d.ts.map +0 -1
  1104. package/dist/bridges/registry.js +0 -87
  1105. package/dist/bridges/registry.js.map +0 -1
  1106. package/dist/cli/poster-source.d.ts +0 -154
  1107. package/dist/cli/poster-source.d.ts.map +0 -1
  1108. package/dist/cli/poster-source.js +0 -184
  1109. package/dist/cli/poster-source.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"thermo-nuclear-cosmo.js","sourceRoot":"","sources":["../../../src/canonical/entries/thermo-nuclear-cosmo.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"thermo-nuclear-cosmo.js","sourceRoot":"","sources":["../../../src/canonical/entries/thermo-nuclear-cosmo.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * L1 (scalar-AST) canonical entries — thermodynamic, statistical, nuclear, and\n * cosmological monomial laws: sensible heat capacity, radioactive half-life,\n * the Hubble distance, plus the Landauer bound, the Jarzynski equality, the\n * Stefan–Boltzmann law, the ideal-gas law, and Wien's displacement (the\n * latter five folded in from the former l1-gravity-thermo / l1-quantum-em\n * batch files in the 2026-06-22 god-file split), plus a batch-4 (2026-07-03)\n * trio of thermodynamics monomials: latent heat, the Clausius entropy change,\n * and thermal diffusivity. L0 fields are engine-derived (see `_l1-build`).\n *\n * Scope: generic dimensional MONOMIAL laws (Adam+Eve adversarial audit,\n * 2026-06-20). `domain` is the nearest `CanonicalDomain` arm (the enum has no\n * `nuclear`; radioactive decay → `quantum`). Skipped as degenerate:\n * radioactive-activity `A=λN` (N dimensionless ⇒ activity ≡ decay-constant) and\n * the Chandrasekhar mass (the (ℏc/G)/m_p² group is dimensionless ⇒\n * underdetermined). See docs/research/bridges-vs-canonical-map.md.\n *\n * @module canonical/entries/thermo-nuclear-cosmo\n */\nimport type { CanonicalEquation } from '../canonical-equation.js';\nimport { sym } from '../../dimensional/ast-builders.js';\nimport {\n MASS,\n VELOCITY,\n ENERGY,\n LENGTH,\n TIME,\n FREQUENCY,\n TEMPERATURE,\n ENTROPY,\n DIMENSIONLESS,\n SPECIFIC_HEAT,\n ENERGY_FLUX,\n PRESSURE,\n VOLUME,\n THERMAL_CONDUCTIVITY,\n MASS_DENSITY,\n DIFFUSIVITY,\n} from '../../dimensional/types.js';\nimport { dim, op, pow, l1 } from './_l1-build.js';\n\nconst SB_FLUX = ENERGY_FLUX; // radiative flux W/m² = [M T⁻³]\nconst SIGMA_SB = dim(0, 1, -3, 0, -4); // Stefan–Boltzmann σ [M T⁻³ Θ⁻⁴] (Θ is 5th arg)\nconst WIEN_B = dim(1, 0, 0, 0, 1); // Wien constant [L Θ]\nconst SPECIFIC_LATENT_HEAT = dim(2, 0, -2, 0, 0); // [L² T⁻²] (J·kg⁻¹, no Θ dependence)\nconst DENSITY = MASS_DENSITY; // [M L⁻³] (kg/m³)\nconst THERMAL_DIFFUSIVITY = DIFFUSIVITY; // [L² T⁻¹] (m²/s)\n\nexport const THERMO_NUCLEAR_COSMO: readonly CanonicalEquation[] = [\n l1({ name: 'heat-energy', dim: ENERGY }, [\n { name: 'mass', dim: MASS },\n { name: 'specific-heat', dim: SPECIFIC_HEAT },\n { name: 'temperature-change', dim: TEMPERATURE },\n ], {\n id: 'CE-heat-capacity',\n holds: 'mass > 0',\n name: 'Sensible heat (heat capacity)',\n domain: 'thermodynamics',\n formula_latex: 'Q = m c \\\\Delta T',\n epistemicStatus: 'fully-quantitative',\n scalarAst: op('*', [\n sym('mass', MASS),\n sym('specific-heat', SPECIFIC_HEAT),\n sym('temperature-change', TEMPERATURE),\n ]),\n regime: { scale: 'classical' },\n assumptions: ['no phase change', 'constant specific heat'],\n references: ['Standard thermodynamics'],\n partnerBridges: [],\n }),\n l1({ name: 'half-life', dim: TIME }, [\n { name: 'decay-constant', dim: FREQUENCY },\n ], {\n id: 'CE-half-life',\n prefactor: {\n value: Math.log(2),\n quote: String.raw`t_{1/2} = \\frac{\\ln (2)}{\\lambda} = \\tau \\ln(2)`,\n locator: \"Wikipedia, 'Half-life', revision 1373221894, wikitext line 64\",\n },\n name: 'Radioactive half-life',\n domain: 'quantum',\n formula_latex: 't_{1/2} = \\\\ln 2 / \\\\lambda',\n epistemicStatus: 'scalar-up-to-constant',\n scalarAst: pow(sym('decay-constant', FREQUENCY), '-1'),\n regime: { scale: 'quantum' },\n assumptions: ['first-order (exponential) decay'],\n references: ['Rutherford–Soddy 1902'],\n partnerBridges: [],\n }),\n l1({ name: 'hubble-distance', dim: LENGTH }, [\n { name: 'c', dim: VELOCITY },\n { name: 'hubble-rate', dim: FREQUENCY },\n ], {\n id: 'CE-hubble-distance',\n holds: 'hubble-rate > 0',\n name: 'Hubble distance',\n domain: 'cosmology',\n formula_latex: 'D_H = c / H_0',\n epistemicStatus: 'fully-quantitative',\n scalarAst: op('/', [sym('c', VELOCITY), sym('hubble-rate', FREQUENCY)]),\n regime: { scale: 'cosmological' },\n assumptions: ['present-epoch Hubble parameter'],\n references: ['Hubble 1929'],\n partnerBridges: [],\n }),\n // ── Folded in from the former l1-gravity-thermo / l1-quantum-em batch files\n // (2026-06-22 god-file split): the thermodynamic / statistical monomials. ──\n // Landauer minimum erasure energy E = k_B T ln2 (natural log)\n l1({ name: 'erasure-energy', dim: ENERGY }, [\n { name: 'k_B', dim: ENTROPY },\n { name: 'temperature', dim: TEMPERATURE },\n ], {\n id: 'CE-landauer',\n holds: 'temperature >= 0',\n name: 'Landauer erasure bound',\n domain: 'information',\n formula_latex: 'E = k_B T \\\\ln 2',\n epistemicStatus: 'fully-quantitative',\n scalarAst: op('*', [\n sym('k_B', ENTROPY),\n sym('temperature', TEMPERATURE),\n sym('ln2', DIMENSIONLESS),\n ]),\n forms: { logBase: 'e' },\n regime: { scale: 'mesoscopic', information: 'shannon' },\n assumptions: ['isothermal', 'quasi-static erasure'],\n references: ['Landauer 1961'],\n // 16 = \"Information-Thermodynamics Bridge (Landauer's principle)\" — a\n // genuine restatement (the canonical Landauer bound IS bridge 16).\n partnerBridges: ['16'],\n restatesBridge: '16',\n }),\n // Jarzynski equality ΔF = −k_B T ln⟨exp(−W/k_B T)⟩ (dimensionless log factor)\n l1({ name: 'free-energy-difference', dim: ENERGY }, [\n { name: 'k_B', dim: ENTROPY },\n { name: 'temperature', dim: TEMPERATURE },\n ], {\n id: 'CE-jarzynski',\n holds: 'temperature > 0',\n name: 'Jarzynski free-energy equality',\n domain: 'statistical',\n formula_latex: '\\\\Delta F = -k_B T \\\\ln \\\\langle \\\\exp(-W/(k_B T)) \\\\rangle',\n // The leading dimensionless factor is the ensemble functional\n // ln⟨exp(−βW)⟩, not a universal constant, so the strongest honest claim\n // is the algebraic form up to that factor.\n epistemicStatus: 'scalar-up-to-constant',\n // Mirrors the Jarzynski right-hand side: −1 · k_B · T · ln⟨exp(−βW)⟩, the log encoded\n // as a dimensionless stub (the AST has no ln primitive). Structurally this\n // is the k_B·T·(dimensionless) thermodynamic form — the same one Landauer\n // shares, which is exactly why BE-29 \"recovers\" CE-landauer.\n scalarAst: op('*', [\n sym('-1', DIMENSIONLESS),\n sym('k_B', ENTROPY),\n sym('temperature', TEMPERATURE),\n sym('ln_avg_exp_minus_betaW', DIMENSIONLESS),\n ]),\n regime: { scale: 'mesoscopic' },\n assumptions: ['isothermal', 'arbitrary work protocol between two equilibria'],\n references: ['Jarzynski 1997 PRL 78:2690'],\n // 29 = BE-29 (Jarzynski equality) — this canonical entry IS that bridge's\n // own relation, so it is a declared restatement (NOT a discovery). Its\n // structural match to CE-landauer stays a `recovers` form-coincidence.\n partnerBridges: ['29'],\n restatesBridge: '29',\n }),\n // Stefan–Boltzmann law j = σ T⁴ (radiative FLUX)\n l1({ name: 'radiative-flux', dim: SB_FLUX }, [\n { name: 'sigma_sb', dim: SIGMA_SB },\n { name: 'temperature', dim: TEMPERATURE },\n ], {\n id: 'CE-stefan-boltzmann',\n holds: 'temperature >= 0',\n name: 'Stefan–Boltzmann law',\n domain: 'thermodynamics',\n formula_latex: 'j = \\\\sigma T^4',\n epistemicStatus: 'fully-quantitative',\n scalarAst: op('*', [sym('sigma_sb', SIGMA_SB), pow(sym('temperature', TEMPERATURE), '4')]),\n forms: { quantityKind: 'flux' },\n regime: { scale: 'classical', force: 'electromagnetic' },\n assumptions: ['blackbody', 'thermal equilibrium'],\n references: ['Stefan 1879; Boltzmann 1884'],\n partnerBridges: [],\n }),\n // Ideal gas law P = N k_B T / V (N is a dimensionless count)\n l1({ name: 'pressure', dim: PRESSURE }, [\n { name: 'k_B', dim: ENTROPY },\n { name: 'temperature', dim: TEMPERATURE },\n { name: 'V', dim: VOLUME },\n ], {\n id: 'CE-ideal-gas',\n holds: 'temperature > 0 and V > 0 and N >= 0',\n name: 'Ideal gas law',\n domain: 'thermodynamics',\n formula_latex: 'P = N k_B T/V',\n epistemicStatus: 'fully-quantitative',\n scalarAst: op('/', [\n op('*', [sym('N', DIMENSIONLESS), sym('k_B', ENTROPY), sym('temperature', TEMPERATURE)]),\n sym('V', VOLUME),\n ]),\n regime: { scale: 'classical', force: 'electromagnetic' },\n assumptions: ['ideal gas', 'thermal equilibrium'],\n references: ['Clapeyron 1834'],\n partnerBridges: [],\n }),\n // Wien's displacement λ_max = b / T (blackbody peak wavelength)\n l1({ name: 'peak-wavelength', dim: LENGTH }, [\n { name: 'b', dim: WIEN_B },\n { name: 'temperature', dim: TEMPERATURE },\n ], {\n id: 'CE-wien',\n holds: 'temperature > 0',\n name: \"Wien's displacement law\",\n domain: 'thermodynamics',\n formula_latex: '\\\\lambda_{max} = b/T',\n epistemicStatus: 'fully-quantitative',\n scalarAst: op('/', [sym('b', WIEN_B), sym('temperature', TEMPERATURE)]),\n regime: { scale: 'classical', force: 'electromagnetic' },\n assumptions: ['blackbody', 'thermal equilibrium'],\n references: ['Wien 1893'],\n partnerBridges: [],\n }),\n // ── Batch 4 (2026-07-03): 3 more thermodynamics monomials. ─────────────────\n // Latent heat of phase transition Q = m L (specific latent heat L)\n l1({ name: 'latent-heat', dim: ENERGY }, [\n { name: 'mass', dim: MASS },\n { name: 'specific-latent-heat', dim: SPECIFIC_LATENT_HEAT },\n ], {\n id: 'CE-latent-heat',\n holds: 'mass > 0',\n name: 'Latent heat of phase transition',\n domain: 'thermodynamics',\n formula_latex: 'Q = m L',\n epistemicStatus: 'fully-quantitative',\n scalarAst: op('*', [\n sym('mass', MASS),\n sym('specific-latent-heat', SPECIFIC_LATENT_HEAT),\n ]),\n regime: { scale: 'classical' },\n assumptions: ['isothermal phase transition'],\n references: ['Callen, Thermodynamics'],\n partnerBridges: [],\n }),\n // Clausius entropy change ΔS = Q/T (reversible, constant-temperature)\n l1({ name: 'entropy-change', dim: ENTROPY }, [\n { name: 'heat', dim: ENERGY },\n { name: 'temperature', dim: TEMPERATURE },\n ], {\n id: 'CE-clausius-entropy',\n holds: 'temperature > 0',\n name: 'Clausius entropy change',\n domain: 'thermodynamics',\n formula_latex: '\\\\Delta S = Q/T',\n epistemicStatus: 'fully-quantitative',\n scalarAst: op('/', [sym('heat', ENERGY), sym('temperature', TEMPERATURE)]),\n regime: { scale: 'classical' },\n assumptions: ['reversible process', 'constant temperature'],\n references: ['Clausius 1865', 'Callen, Thermodynamics'],\n partnerBridges: [],\n }),\n // Thermal diffusivity α = k/(ρ c_p)\n l1({ name: 'thermal-diffusivity', dim: THERMAL_DIFFUSIVITY }, [\n { name: 'thermal-conductivity', dim: THERMAL_CONDUCTIVITY },\n { name: 'density', dim: DENSITY },\n { name: 'specific-heat-capacity', dim: SPECIFIC_HEAT },\n ], {\n id: 'CE-thermal-diffusivity',\n holds: 'thermal-conductivity > 0 and density > 0 and specific-heat-capacity > 0',\n name: 'Thermal diffusivity',\n domain: 'thermodynamics',\n formula_latex: '\\\\alpha = k/(\\\\rho c_p)',\n epistemicStatus: 'fully-quantitative',\n scalarAst: op('/', [\n sym('thermal-conductivity', THERMAL_CONDUCTIVITY),\n op('*', [sym('density', DENSITY), sym('specific-heat-capacity', SPECIFIC_HEAT)]),\n ]),\n regime: { scale: 'classical' },\n assumptions: ['homogeneous isotropic medium'],\n references: ['Carslaw & Jaeger, Conduction of Heat in Solids'],\n partnerBridges: [],\n }),\n];\n"]}
@@ -0,0 +1,94 @@
1
+ /**
2
+ * One owner for "a constant times that one".
3
+ *
4
+ * Several callers decide whether two formulas agree up to a constant: the
5
+ * derivation audit, the canonical comparison, the linkage recovery, explain's
6
+ * monomial check and `upt derive`. Each once carried its own sample points,
7
+ * its own ratio statistic and its own tolerance, so the same question could be
8
+ * answered differently in different commands. The three pieces live here, and
9
+ * every caller passes the base, step, exponent schedule, statistic and
10
+ * tolerance it used before, so no verdict moved
11
+ * (`tests/canonical/fixed-point-verdicts.test.ts` is the pin).
12
+ *
13
+ * A sample point gives variable `i` (in the caller's name order) the value
14
+ * `(base + step·i)^p`. Each variable has its own base, so the RATIOS between
15
+ * variables change from point to point too: a common scale factor would leave
16
+ * every ratio such as ℓ/g fixed, and `T ∝ ℓ/g` would then pass as the form of
17
+ * `T ∝ √(ℓ/g)`.
18
+ *
19
+ * @module canonical/fixed-points
20
+ */
21
+ /**
22
+ * The exponent schedule the canonical comparison and the linkage recovery
23
+ * share: three points, so a constant ratio is checked at three places.
24
+ *
25
+ * @internal
26
+ */
27
+ export declare const FIXED_POINT_EXPONENTS: readonly number[];
28
+ /** The per-variable base and step of a sample scheme. @internal */
29
+ export interface FixedPointScheme {
30
+ /** The base of the first variable. */
31
+ readonly base: number;
32
+ /** Added to the base once per later variable. */
33
+ readonly step: number;
34
+ }
35
+ /**
36
+ * The sample point at exponent `p`: `names[i]` takes `(base + step·i)^p`.
37
+ *
38
+ * @internal
39
+ */
40
+ export declare function fixedPoint(names: readonly string[], p: number, scheme: FixedPointScheme): Record<string, number>;
41
+ /** The statistic a constancy decision rests on. @internal */
42
+ export type RatioStatistic = 'max-rel-err' | 'cv';
43
+ /** Options of {@link constantRatio}. @internal */
44
+ export interface ConstantRatioOptions {
45
+ /**
46
+ * `max-rel-err` (the default): the largest `|r/r0 − 1|` over the ratios,
47
+ * `r0` the first; the value is `r0`. `cv`: the population standard
48
+ * deviation over the absolute mean (`ratioSpread`); the value is the mean.
49
+ */
50
+ readonly statistic?: RatioStatistic;
51
+ }
52
+ /** Whether a list of ratios is one constant, and what it is. @internal */
53
+ export interface ConstantRatio {
54
+ /** True when the statistic is within `tolerance`. */
55
+ readonly constant: boolean;
56
+ /** The constant: the first ratio, or the mean under `cv`. */
57
+ readonly value: number;
58
+ /** The statistic: the largest relative departure, or the coefficient of variation. */
59
+ readonly maxRelErr: number;
60
+ }
61
+ /**
62
+ * Decide whether `ratios` are one constant to within `tolerance`. An empty
63
+ * list, a zero, or a non-finite ratio is never constant.
64
+ *
65
+ * @internal
66
+ */
67
+ export declare function constantRatio(ratios: readonly number[], tolerance: number, options?: ConstantRatioOptions): ConstantRatio;
68
+ /** The scheme `upt derive` recovers a prefactor with. @internal */
69
+ export interface PrefactorRecoveryScheme extends FixedPointScheme {
70
+ /** The exponents sampled, one point each. */
71
+ readonly exponents: readonly number[];
72
+ readonly tolerance: number;
73
+ readonly statistic: RatioStatistic;
74
+ }
75
+ /** The outcome of {@link recoverMonomialPrefactor}. @internal */
76
+ export interface PrefactorRecovery {
77
+ /** True when `evaluate / monomial` is one constant over the points. */
78
+ readonly matches: boolean;
79
+ /** That constant, present only when `matches`. */
80
+ readonly prefactor?: number;
81
+ /** The ratio statistic over the points. */
82
+ readonly spread: number;
83
+ }
84
+ /**
85
+ * Recover the constant in front of a monomial: evaluate the caller's formula
86
+ * at each point of the scheme, divide by the monomial there, and ask
87
+ * {@link constantRatio}. The formula is called with the point keyed by
88
+ * `names`; a caller whose formula spells a name differently maps it inside
89
+ * `evaluate`. An exponent the monomial does not state is 0.
90
+ *
91
+ * @internal
92
+ */
93
+ export declare function recoverMonomialPrefactor(evaluate: (point: Readonly<Record<string, number>>) => number, monomial: Readonly<Record<string, number>>, names: readonly string[], scheme: PrefactorRecoveryScheme): PrefactorRecovery;
94
+ //# sourceMappingURL=fixed-points.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fixed-points.d.ts","sourceRoot":"","sources":["../../src/canonical/fixed-points.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAIH;;;;;GAKG;AACH,eAAO,MAAM,qBAAqB,EAAE,SAAS,MAAM,EAAkB,CAAC;AAEtE,mEAAmE;AACnE,MAAM,WAAW,gBAAgB;IAC/B,sCAAsC;IACtC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,iDAAiD;IACjD,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACvB;AAED;;;;GAIG;AACH,wBAAgB,UAAU,CACxB,KAAK,EAAE,SAAS,MAAM,EAAE,EACxB,CAAC,EAAE,MAAM,EACT,MAAM,EAAE,gBAAgB,GACvB,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAMxB;AAED,6DAA6D;AAC7D,MAAM,MAAM,cAAc,GAAG,aAAa,GAAG,IAAI,CAAC;AAElD,kDAAkD;AAClD,MAAM,WAAW,oBAAoB;IACnC;;;;OAIG;IACH,QAAQ,CAAC,SAAS,CAAC,EAAE,cAAc,CAAC;CACrC;AAED,0EAA0E;AAC1E,MAAM,WAAW,aAAa;IAC5B,qDAAqD;IACrD,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;IAC3B,6DAA6D;IAC7D,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,sFAAsF;IACtF,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;CAC5B;AAED;;;;;GAKG;AACH,wBAAgB,aAAa,CAC3B,MAAM,EAAE,SAAS,MAAM,EAAE,EACzB,SAAS,EAAE,MAAM,EACjB,OAAO,GAAE,oBAAyB,GACjC,aAAa,CAWf;AAED,mEAAmE;AACnE,MAAM,WAAW,uBAAwB,SAAQ,gBAAgB;IAC/D,6CAA6C;IAC7C,QAAQ,CAAC,SAAS,EAAE,SAAS,MAAM,EAAE,CAAC;IACtC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,SAAS,EAAE,cAAc,CAAC;CACpC;AAED,iEAAiE;AACjE,MAAM,WAAW,iBAAiB;IAChC,uEAAuE;IACvE,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,kDAAkD;IAClD,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,2CAA2C;IAC3C,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB;AAED;;;;;;;;GAQG;AACH,wBAAgB,wBAAwB,CACtC,QAAQ,EAAE,CAAC,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,KAAK,MAAM,EAC7D,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,EAC1C,KAAK,EAAE,SAAS,MAAM,EAAE,EACxB,MAAM,EAAE,uBAAuB,GAC9B,iBAAiB,CAWnB"}
@@ -0,0 +1,81 @@
1
+ /**
2
+ * One owner for "a constant times that one".
3
+ *
4
+ * Several callers decide whether two formulas agree up to a constant: the
5
+ * derivation audit, the canonical comparison, the linkage recovery, explain's
6
+ * monomial check and `upt derive`. Each once carried its own sample points,
7
+ * its own ratio statistic and its own tolerance, so the same question could be
8
+ * answered differently in different commands. The three pieces live here, and
9
+ * every caller passes the base, step, exponent schedule, statistic and
10
+ * tolerance it used before, so no verdict moved
11
+ * (`tests/canonical/fixed-point-verdicts.test.ts` is the pin).
12
+ *
13
+ * A sample point gives variable `i` (in the caller's name order) the value
14
+ * `(base + step·i)^p`. Each variable has its own base, so the RATIOS between
15
+ * variables change from point to point too: a common scale factor would leave
16
+ * every ratio such as ℓ/g fixed, and `T ∝ ℓ/g` would then pass as the form of
17
+ * `T ∝ √(ℓ/g)`.
18
+ *
19
+ * @module canonical/fixed-points
20
+ */
21
+ import { ratioSpread } from '../numerical/statistics.js';
22
+ /**
23
+ * The exponent schedule the canonical comparison and the linkage recovery
24
+ * share: three points, so a constant ratio is checked at three places.
25
+ *
26
+ * @internal
27
+ */
28
+ export const FIXED_POINT_EXPONENTS = [1, 1.3, 1.6];
29
+ /**
30
+ * The sample point at exponent `p`: `names[i]` takes `(base + step·i)^p`.
31
+ *
32
+ * @internal
33
+ */
34
+ export function fixedPoint(names, p, scheme) {
35
+ const point = {};
36
+ names.forEach((name, i) => {
37
+ point[name] = Math.pow(scheme.base + scheme.step * i, p);
38
+ });
39
+ return point;
40
+ }
41
+ /**
42
+ * Decide whether `ratios` are one constant to within `tolerance`. An empty
43
+ * list, a zero, or a non-finite ratio is never constant.
44
+ *
45
+ * @internal
46
+ */
47
+ export function constantRatio(ratios, tolerance, options = {}) {
48
+ const r0 = ratios[0];
49
+ if (r0 === undefined || ratios.some((r) => !Number.isFinite(r) || r === 0)) {
50
+ return { constant: false, value: r0 ?? Number.NaN, maxRelErr: Number.NaN };
51
+ }
52
+ if ((options.statistic ?? 'max-rel-err') === 'cv') {
53
+ const { mean, cv } = ratioSpread(ratios);
54
+ return { constant: cv < tolerance, value: mean, maxRelErr: cv };
55
+ }
56
+ const maxRelErr = Math.max(...ratios.map((r) => Math.abs((r - r0) / r0)));
57
+ return { constant: maxRelErr <= tolerance, value: r0, maxRelErr };
58
+ }
59
+ /**
60
+ * Recover the constant in front of a monomial: evaluate the caller's formula
61
+ * at each point of the scheme, divide by the monomial there, and ask
62
+ * {@link constantRatio}. The formula is called with the point keyed by
63
+ * `names`; a caller whose formula spells a name differently maps it inside
64
+ * `evaluate`. An exponent the monomial does not state is 0.
65
+ *
66
+ * @internal
67
+ */
68
+ export function recoverMonomialPrefactor(evaluate, monomial, names, scheme) {
69
+ const ratios = scheme.exponents.map((p) => {
70
+ const point = fixedPoint(names, p, scheme);
71
+ let candidate = 1;
72
+ for (const name of names)
73
+ candidate *= Math.pow(point[name], monomial[name] ?? 0);
74
+ return evaluate(point) / candidate;
75
+ });
76
+ const decided = constantRatio(ratios, scheme.tolerance, { statistic: scheme.statistic });
77
+ return decided.constant
78
+ ? { matches: true, prefactor: decided.value, spread: decided.maxRelErr }
79
+ : { matches: false, spread: decided.maxRelErr };
80
+ }
81
+ //# sourceMappingURL=fixed-points.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fixed-points.js","sourceRoot":"","sources":["../../src/canonical/fixed-points.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAEzD;;;;;GAKG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAsB,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;AAUtE;;;;GAIG;AACH,MAAM,UAAU,UAAU,CACxB,KAAwB,EACxB,CAAS,EACT,MAAwB;IAExB,MAAM,KAAK,GAA2B,EAAE,CAAC;IACzC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE;QACxB,KAAK,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;IAC3D,CAAC,CAAC,CAAC;IACH,OAAO,KAAK,CAAC;AACf,CAAC;AAyBD;;;;;GAKG;AACH,MAAM,UAAU,aAAa,CAC3B,MAAyB,EACzB,SAAiB,EACjB,OAAO,GAAyB,EAAE;IAElC,MAAM,EAAE,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;IACrB,IAAI,EAAE,KAAK,SAAS,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;QAC3E,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,IAAI,MAAM,CAAC,GAAG,EAAE,SAAS,EAAE,MAAM,CAAC,GAAG,EAAE,CAAC;IAC7E,CAAC;IACD,IAAI,CAAC,OAAO,CAAC,SAAS,IAAI,aAAa,CAAC,KAAK,IAAI,EAAE,CAAC;QAClD,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC;QACzC,OAAO,EAAE,QAAQ,EAAE,EAAE,GAAG,SAAS,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC;IAClE,CAAC;IACD,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;IAC1E,OAAO,EAAE,QAAQ,EAAE,SAAS,IAAI,SAAS,EAAE,KAAK,EAAE,EAAE,EAAE,SAAS,EAAE,CAAC;AACpE,CAAC;AAoBD;;;;;;;;GAQG;AACH,MAAM,UAAU,wBAAwB,CACtC,QAA6D,EAC7D,QAA0C,EAC1C,KAAwB,EACxB,MAA+B;IAE/B,MAAM,MAAM,GAAG,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;QACxC,MAAM,KAAK,GAAG,UAAU,CAAC,KAAK,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC;QAC3C,IAAI,SAAS,GAAG,CAAC,CAAC;QAClB,KAAK,MAAM,IAAI,IAAI,KAAK;YAAE,SAAS,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAE,EAAE,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QACnF,OAAO,QAAQ,CAAC,KAAK,CAAC,GAAG,SAAS,CAAC;IACrC,CAAC,CAAC,CAAC;IACH,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,EAAE,MAAM,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC;IACzF,OAAO,OAAO,CAAC,QAAQ;QACrB,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,SAAS,EAAE;QACxE,CAAC,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,SAAS,EAAE,CAAC;AACpD,CAAC","sourcesContent":["/**\n * One owner for \"a constant times that one\".\n *\n * Several callers decide whether two formulas agree up to a constant: the\n * derivation audit, the canonical comparison, the linkage recovery, explain's\n * monomial check and `upt derive`. Each once carried its own sample points,\n * its own ratio statistic and its own tolerance, so the same question could be\n * answered differently in different commands. The three pieces live here, and\n * every caller passes the base, step, exponent schedule, statistic and\n * tolerance it used before, so no verdict moved\n * (`tests/canonical/fixed-point-verdicts.test.ts` is the pin).\n *\n * A sample point gives variable `i` (in the caller's name order) the value\n * `(base + step·i)^p`. Each variable has its own base, so the RATIOS between\n * variables change from point to point too: a common scale factor would leave\n * every ratio such as ℓ/g fixed, and `T ∝ ℓ/g` would then pass as the form of\n * `T ∝ √(ℓ/g)`.\n *\n * @module canonical/fixed-points\n */\n\nimport { ratioSpread } from '../numerical/statistics.js';\n\n/**\n * The exponent schedule the canonical comparison and the linkage recovery\n * share: three points, so a constant ratio is checked at three places.\n *\n * @internal\n */\nexport const FIXED_POINT_EXPONENTS: readonly number[] = [1, 1.3, 1.6];\n\n/** The per-variable base and step of a sample scheme. @internal */\nexport interface FixedPointScheme {\n /** The base of the first variable. */\n readonly base: number;\n /** Added to the base once per later variable. */\n readonly step: number;\n}\n\n/**\n * The sample point at exponent `p`: `names[i]` takes `(base + step·i)^p`.\n *\n * @internal\n */\nexport function fixedPoint(\n names: readonly string[],\n p: number,\n scheme: FixedPointScheme,\n): Record<string, number> {\n const point: Record<string, number> = {};\n names.forEach((name, i) => {\n point[name] = Math.pow(scheme.base + scheme.step * i, p);\n });\n return point;\n}\n\n/** The statistic a constancy decision rests on. @internal */\nexport type RatioStatistic = 'max-rel-err' | 'cv';\n\n/** Options of {@link constantRatio}. @internal */\nexport interface ConstantRatioOptions {\n /**\n * `max-rel-err` (the default): the largest `|r/r0 − 1|` over the ratios,\n * `r0` the first; the value is `r0`. `cv`: the population standard\n * deviation over the absolute mean (`ratioSpread`); the value is the mean.\n */\n readonly statistic?: RatioStatistic;\n}\n\n/** Whether a list of ratios is one constant, and what it is. @internal */\nexport interface ConstantRatio {\n /** True when the statistic is within `tolerance`. */\n readonly constant: boolean;\n /** The constant: the first ratio, or the mean under `cv`. */\n readonly value: number;\n /** The statistic: the largest relative departure, or the coefficient of variation. */\n readonly maxRelErr: number;\n}\n\n/**\n * Decide whether `ratios` are one constant to within `tolerance`. An empty\n * list, a zero, or a non-finite ratio is never constant.\n *\n * @internal\n */\nexport function constantRatio(\n ratios: readonly number[],\n tolerance: number,\n options: ConstantRatioOptions = {},\n): ConstantRatio {\n const r0 = ratios[0];\n if (r0 === undefined || ratios.some((r) => !Number.isFinite(r) || r === 0)) {\n return { constant: false, value: r0 ?? Number.NaN, maxRelErr: Number.NaN };\n }\n if ((options.statistic ?? 'max-rel-err') === 'cv') {\n const { mean, cv } = ratioSpread(ratios);\n return { constant: cv < tolerance, value: mean, maxRelErr: cv };\n }\n const maxRelErr = Math.max(...ratios.map((r) => Math.abs((r - r0) / r0)));\n return { constant: maxRelErr <= tolerance, value: r0, maxRelErr };\n}\n\n/** The scheme `upt derive` recovers a prefactor with. @internal */\nexport interface PrefactorRecoveryScheme extends FixedPointScheme {\n /** The exponents sampled, one point each. */\n readonly exponents: readonly number[];\n readonly tolerance: number;\n readonly statistic: RatioStatistic;\n}\n\n/** The outcome of {@link recoverMonomialPrefactor}. @internal */\nexport interface PrefactorRecovery {\n /** True when `evaluate / monomial` is one constant over the points. */\n readonly matches: boolean;\n /** That constant, present only when `matches`. */\n readonly prefactor?: number;\n /** The ratio statistic over the points. */\n readonly spread: number;\n}\n\n/**\n * Recover the constant in front of a monomial: evaluate the caller's formula\n * at each point of the scheme, divide by the monomial there, and ask\n * {@link constantRatio}. The formula is called with the point keyed by\n * `names`; a caller whose formula spells a name differently maps it inside\n * `evaluate`. An exponent the monomial does not state is 0.\n *\n * @internal\n */\nexport function recoverMonomialPrefactor(\n evaluate: (point: Readonly<Record<string, number>>) => number,\n monomial: Readonly<Record<string, number>>,\n names: readonly string[],\n scheme: PrefactorRecoveryScheme,\n): PrefactorRecovery {\n const ratios = scheme.exponents.map((p) => {\n const point = fixedPoint(names, p, scheme);\n let candidate = 1;\n for (const name of names) candidate *= Math.pow(point[name]!, monomial[name] ?? 0);\n return evaluate(point) / candidate;\n });\n const decided = constantRatio(ratios, scheme.tolerance, { statistic: scheme.statistic });\n return decided.constant\n ? { matches: true, prefactor: decided.value, spread: decided.maxRelErr }\n : { matches: false, spread: decided.maxRelErr };\n}\n"]}
@@ -1,3 +1,22 @@
1
+ /**
2
+ * Bridge↔canonical linkage (Sub-project B) — the "validate against standard
3
+ * physics" engine. For a canonical equation with a scalar-AST and a bridge with
4
+ * an RHS AST, it asks:
5
+ * 1. do they share the same dimension? (necessary)
6
+ * 2. are they the same relation up to dimensionless factors? (`normalForm`)
7
+ * 3. (best-effort) do they agree numerically up to a constant ratio?
8
+ *
9
+ * The structural half — same dimension, `normalForm`, and the F4
10
+ * `restatesBridge` guard — is `classifyStructure` in `structural.ts`. This
11
+ * module calls that function and then runs numerical recovery. A structural
12
+ * match is `restates-canonical` (a trivial X≡X, NOT a discovery) only when
13
+ * the canonical entry's `restatesBridge` actually names that bridge. A
14
+ * structural match the registry did NOT pre-declare is a genuine `recovers`
15
+ * correspondence. Numerical agreement is not a confirmation.
16
+ *
17
+ * @module canonical/linkage
18
+ */
19
+ import type { ExprNode } from '../dimensional/validator.js';
1
20
  /** Best-effort numerical-recovery outcome. */
2
21
  export interface RecoveryOutcome {
3
22
  /** Both ASTs evaluated at every sample (no unresolved leaf). */
@@ -17,16 +36,22 @@ export interface LinkageResult {
17
36
  readonly recovery: RecoveryOutcome | null;
18
37
  readonly classification: 'restates-canonical' | 'recovers' | 'dimensional-only' | 'unrelated';
19
38
  }
39
+ /**
40
+ * Best-effort check that two ASTs agree up to a constant ratio.
41
+ *
42
+ * @internal
43
+ */
44
+ export declare function numericalRecovery(canon: ExprNode, bridge: ExprNode): RecoveryOutcome;
20
45
  /** Compare one canonical entry against one bridge. */
21
46
  export declare function classifyLinkage(canonicalId: string, bridgeId: number): LinkageResult;
22
47
  /**
23
48
  * Scan every canonical entry (with a scalar-AST) against every bridge RHS, and
24
49
  * return the non-`unrelated` results — the physicist's linkage worklist.
25
50
  *
26
- * Each bridge is validated and normal-formed ONCE (canonical-invariant), and
27
- * each canonical's normal-form is computed once per outer iteration
28
- * (bridge-invariant); the inner loop then only compares pre-computed strings
29
- * and dimensions. Reduces the per-pair AST walks (~3·C·B) to ~2·B + C.
51
+ * Each bridge's shape comes from the process-wide `bridgeShapes` table
52
+ * (validated and normal-formed once), and each canonical's normal-form is
53
+ * computed once per outer iteration (bridge-invariant); the inner loop then
54
+ * only compares pre-computed strings and dimensions.
30
55
  */
31
56
  export declare function scanLinkages(): LinkageResult[];
32
57
  //# sourceMappingURL=linkage.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"linkage.d.ts","sourceRoot":"","sources":["../../src/canonical/linkage.ts"],"names":[],"mappings":"AA6BA,8CAA8C;AAC9C,MAAM,WAAW,eAAe;IAC9B,gEAAgE;IAChE,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IACzB;kEAC8D;IAC9D,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;CAC5B;AAED,uCAAuC;AACvC,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,iCAAiC;IACjC,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;IAC3B,gEAAgE;IAChE,QAAQ,CAAC,eAAe,EAAE,OAAO,CAAC;IAClC,QAAQ,CAAC,QAAQ,EAAE,eAAe,GAAG,IAAI,CAAC;IAC1C,QAAQ,CAAC,cAAc,EACnB,oBAAoB,GACpB,UAAU,GACV,kBAAkB,GAClB,WAAW,CAAC;CACjB;AAsJD,sDAAsD;AACtD,wBAAgB,eAAe,CAC7B,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,MAAM,GACf,aAAa,CAsBf;AAED;;;;;;;;GAQG;AACH,wBAAgB,YAAY,IAAI,aAAa,EAAE,CAqB9C"}
1
+ {"version":3,"file":"linkage.d.ts","sourceRoot":"","sources":["../../src/canonical/linkage.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AACH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAC;AAY5D,8CAA8C;AAC9C,MAAM,WAAW,eAAe;IAC9B,gEAAgE;IAChE,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IACzB;kEAC8D;IAC9D,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;CAC5B;AAED,uCAAuC;AACvC,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,iCAAiC;IACjC,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;IAC3B,gEAAgE;IAChE,QAAQ,CAAC,eAAe,EAAE,OAAO,CAAC;IAClC,QAAQ,CAAC,QAAQ,EAAE,eAAe,GAAG,IAAI,CAAC;IAC1C,QAAQ,CAAC,cAAc,EACnB,oBAAoB,GACpB,UAAU,GACV,kBAAkB,GAClB,WAAW,CAAC;CACjB;AAoCD;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,GAAG,eAAe,CAgCpF;AA+CD,sDAAsD;AACtD,wBAAgB,eAAe,CAC7B,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,MAAM,GACf,aAAa,CAsBf;AAED;;;;;;;;GAQG;AACH,wBAAgB,YAAY,IAAI,aAAa,EAAE,CAmB9C"}
@@ -1,17 +1,11 @@
1
- import { validate } from '../dimensional/validator.js';
1
+ import { isDimensionless } from '../dimensional/algebra.js';
2
2
  import { evalExpr } from '../composition/expr-eval.js';
3
- import { CONSTANTS } from '../dimensional/symbolic-constants.js';
4
- import { BRIDGE_RHS_BY_ID } from '../bridges/rhs-registry.js';
3
+ import { forEachScalarLeaf, isDecimalLiteral } from '../dimensional/ast-leaves.js';
4
+ import { isRegisteredConstant } from '../dimensional/symbolic-constants.js';
5
5
  import { CANONICAL_EQUATIONS, canonicalById } from './registry.js';
6
6
  import { canonicalQuantityName, normalForm } from './normal-form.js';
7
- import { classifyStructure } from './structural.js';
8
- const isDimensionless = (d) => d.L === 0 &&
9
- d.M === 0 &&
10
- d.T === 0 &&
11
- d.I === 0 &&
12
- d.Theta === 0 &&
13
- d.N === 0 &&
14
- d.J === 0;
7
+ import { bridgeShapes, classifyStructure } from './structural.js';
8
+ import { FIXED_POINT_EXPONENTS, constantRatio, fixedPoint } from './fixed-points.js';
15
9
  /**
16
10
  * Collect leaves `evalExpr` can't resolve (not a registered constant, not a
17
11
  * numeric literal), split into physical `vars` (non-dimensionless — varied
@@ -19,32 +13,32 @@ const isDimensionless = (d) => d.L === 0 &&
19
13
  * constant factor "up to" which recovery is measured).
20
14
  */
21
15
  function collectLeaves(node, vars, dimless) {
22
- switch (node.kind) {
23
- case 'symbol':
24
- if (!(node.name in CONSTANTS) && Number.isNaN(Number(node.name))) {
25
- if (isDimensionless(node.dim))
26
- dimless.add(node.name);
27
- else
28
- vars.set(node.name, canonicalQuantityName(node.name, node.dim));
29
- }
16
+ forEachScalarLeaf(node, (leaf) => {
17
+ if (isRegisteredConstant(leaf.name) || isDecimalLiteral(leaf.name))
30
18
  return;
31
- case 'op':
32
- for (const a of node.args)
33
- collectLeaves(a, vars, dimless);
34
- return;
35
- case 'transcendental':
36
- collectLeaves(node.arg, vars, dimless);
37
- return;
38
- case 'abs':
39
- collectLeaves(node.arg, vars, dimless);
40
- return;
41
- default:
42
- return;
43
- }
19
+ if (isDimensionless(leaf.dim))
20
+ dimless.add(leaf.name);
21
+ else
22
+ vars.set(leaf.name, canonicalQuantityName(leaf.name, leaf.dim));
23
+ }, { transcendental: true, abs: true });
44
24
  }
45
- const SAMPLE_FACTORS = [1, 2, 3];
46
- /** Best-effort check that two ASTs agree up to a constant ratio. */
47
- function numericalRecovery(canon, bridge) {
25
+ /**
26
+ * The sample points: variable `i` (in sorted canonical-name order) takes the
27
+ * value `(1.3 + 0.7·i)^p` at each exponent of `FIXED_POINT_EXPONENTS`. Each
28
+ * variable has its own base, so the RATIOS between variables change from
29
+ * point to point too. One common scale factor would leave every ratio such
30
+ * as y/x fixed, and two homogeneous expressions of the same degree
31
+ * (`x + 2y` and `x + y`) would then pass as a constant ratio at every point:
32
+ * a recovery that could not fail (9.0.0 audit §4 C3). `canonical-compare.ts`
33
+ * uses the same exponents on its own base.
34
+ */
35
+ const RECOVERY_SCHEME = { base: 1.3, step: 0.7 };
36
+ /**
37
+ * Best-effort check that two ASTs agree up to a constant ratio.
38
+ *
39
+ * @internal
40
+ */
41
+ export function numericalRecovery(canon, bridge) {
48
42
  const vars = new Map();
49
43
  const dimless = new Set();
50
44
  collectLeaves(canon, vars, dimless);
@@ -52,13 +46,12 @@ function numericalRecovery(canon, bridge) {
52
46
  // `M` and `mass` are one quantity. They share a sample, or the ratio is a
53
47
  // float artifact of two independent draws of the same mass.
54
48
  const canonicals = [...new Set(vars.values())].sort();
55
- const index = new Map(canonicals.map((n, i) => [n, i]));
56
49
  const ratios = [];
57
- for (const s of SAMPLE_FACTORS) {
50
+ for (const p of FIXED_POINT_EXPONENTS) {
51
+ const point = fixedPoint(canonicals, p, RECOVERY_SCHEME);
58
52
  const values = {};
59
- for (const [raw, canonName] of vars) {
60
- values[raw] = (1.3 + 0.7 * index.get(canonName)) * s;
61
- }
53
+ for (const [raw, canonName] of vars)
54
+ values[raw] = point[canonName];
62
55
  // Hold unresolved dimensionless leaves fixed — recovery is "up to" them.
63
56
  for (const n of dimless)
64
57
  values[n] = 1;
@@ -78,23 +71,15 @@ function numericalRecovery(canon, bridge) {
78
71
  }
79
72
  ratios.push(cv / bv);
80
73
  }
81
- const r0 = ratios[0];
82
- const maxRelErr = Math.max(...ratios.map((r) => Math.abs((r - r0) / r0)));
83
- return { tested: true, maxRelErr };
84
- }
85
- /** Validate + normal-form a bridge RHS once. */
86
- function precomputeBridge(rhs) {
87
- const v = validate(rhs);
88
- return {
89
- rhs,
90
- dim: v.ok ? v.inferredDimension : null,
91
- normal: normalForm(rhs),
92
- };
74
+ // The recovery records the spread; the reader decides. Every ratio is finite and nonzero here.
75
+ return { tested: true, maxRelErr: constantRatio(ratios, 0).maxRelErr };
93
76
  }
94
77
  /**
95
78
  * The comparison core, given a canonical entry (with its pre-computed
96
- * normal-form) and a pre-computed bridge. Pure: no AST re-walks except the
97
- * rare `numericalRecovery` that only fires on a structural match.
79
+ * normal-form) and a bridge's shape from the process-wide `bridgeShapes`
80
+ * table (validated dimension and normal-form hash, computed once). Pure: no
81
+ * AST re-walks except the rare `numericalRecovery` that only fires on a
82
+ * structural match.
98
83
  */
99
84
  function classifyAgainst(canon, canonAst, canonNormal, bridgeId, bridge) {
100
85
  const relation = classifyStructure({
@@ -130,8 +115,8 @@ function classifyAgainst(canon, canonAst, canonNormal, bridgeId, bridge) {
130
115
  /** Compare one canonical entry against one bridge. */
131
116
  export function classifyLinkage(canonicalId, bridgeId) {
132
117
  const canon = canonicalById(canonicalId);
133
- const bridgeRhs = BRIDGE_RHS_BY_ID.get(bridgeId);
134
- if (!canon || !bridgeRhs || !canon.scalarAst) {
118
+ const bridge = bridgeShapes().get(bridgeId);
119
+ if (!canon || !bridge || !canon.scalarAst) {
135
120
  return {
136
121
  canonicalId,
137
122
  bridgeId,
@@ -141,22 +126,20 @@ export function classifyLinkage(canonicalId, bridgeId) {
141
126
  classification: 'unrelated',
142
127
  };
143
128
  }
144
- return classifyAgainst(canon, canon.scalarAst, normalForm(canon.scalarAst), bridgeId, precomputeBridge(bridgeRhs));
129
+ return classifyAgainst(canon, canon.scalarAst, normalForm(canon.scalarAst), bridgeId, bridge);
145
130
  }
146
131
  /**
147
132
  * Scan every canonical entry (with a scalar-AST) against every bridge RHS, and
148
133
  * return the non-`unrelated` results — the physicist's linkage worklist.
149
134
  *
150
- * Each bridge is validated and normal-formed ONCE (canonical-invariant), and
151
- * each canonical's normal-form is computed once per outer iteration
152
- * (bridge-invariant); the inner loop then only compares pre-computed strings
153
- * and dimensions. Reduces the per-pair AST walks (~3·C·B) to ~2·B + C.
135
+ * Each bridge's shape comes from the process-wide `bridgeShapes` table
136
+ * (validated and normal-formed once), and each canonical's normal-form is
137
+ * computed once per outer iteration (bridge-invariant); the inner loop then
138
+ * only compares pre-computed strings and dimensions.
154
139
  */
155
140
  export function scanLinkages() {
156
141
  const results = [];
157
- const bridges = [
158
- ...BRIDGE_RHS_BY_ID,
159
- ].map(([id, rhs]) => [id, precomputeBridge(rhs)]);
142
+ const bridges = bridgeShapes();
160
143
  for (const ce of CANONICAL_EQUATIONS) {
161
144
  if (!ce.scalarAst)
162
145
  continue;
@@ -1 +1 @@
1
- {"version":3,"file":"linkage.js","sourceRoot":"","sources":["../../src/canonical/linkage.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"linkage.js","sourceRoot":"","sources":["../../src/canonical/linkage.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Bridge↔canonical linkage (Sub-project B) — the \"validate against standard\n * physics\" engine. For a canonical equation with a scalar-AST and a bridge with\n * an RHS AST, it asks:\n * 1. do they share the same dimension? (necessary)\n * 2. are they the same relation up to dimensionless factors? (`normalForm`)\n * 3. (best-effort) do they agree numerically up to a constant ratio?\n *\n * The structural half — same dimension, `normalForm`, and the F4\n * `restatesBridge` guard — is `classifyStructure` in `structural.ts`. This\n * module calls that function and then runs numerical recovery. A structural\n * match is `restates-canonical` (a trivial X≡X, NOT a discovery) only when\n * the canonical entry's `restatesBridge` actually names that bridge. A\n * structural match the registry did NOT pre-declare is a genuine `recovers`\n * correspondence. Numerical agreement is not a confirmation.\n *\n * @module canonical/linkage\n */\nimport type { ExprNode } from '../dimensional/validator.js';\nimport { isDimensionless } from '../dimensional/algebra.js';\nimport { evalExpr } from '../composition/expr-eval.js';\nimport { forEachScalarLeaf, isDecimalLiteral } from '../dimensional/ast-leaves.js';\nimport { isRegisteredConstant } from '../dimensional/symbolic-constants.js';\nimport type { CanonicalEquation } from './canonical-equation.js';\nimport { CANONICAL_EQUATIONS, canonicalById } from './registry.js';\nimport { canonicalQuantityName, normalForm } from './normal-form.js';\nimport { bridgeShapes, classifyStructure } from './structural.js';\nimport type { BridgeShape } from './structural.js';\nimport { FIXED_POINT_EXPONENTS, constantRatio, fixedPoint } from './fixed-points.js';\n\n/** Best-effort numerical-recovery outcome. */\nexport interface RecoveryOutcome {\n /** Both ASTs evaluated at every sample (no unresolved leaf). */\n readonly tested: boolean;\n /** Spread of the canonical/bridge value ratio across samples (0 ⇒ they agree\n * up to a single constant factor). `NaN` when not tested. */\n readonly maxRelErr: number;\n}\n\n/** One bridge↔canonical comparison. */\nexport interface LinkageResult {\n readonly canonicalId: string;\n readonly bridgeId: number;\n /** Inferred dimensions agree. */\n readonly dimMatch: boolean;\n /** Same relation up to dimensionless factors (`normalForm`). */\n readonly structuralMatch: boolean;\n readonly recovery: RecoveryOutcome | null;\n readonly classification:\n | 'restates-canonical'\n | 'recovers'\n | 'dimensional-only'\n | 'unrelated';\n}\n\n/**\n * Collect leaves `evalExpr` can't resolve (not a registered constant, not a\n * numeric literal), split into physical `vars` (non-dimensionless — varied\n * across samples) and `dimless` (dimensionless — held fixed: they ARE the\n * constant factor \"up to\" which recovery is measured).\n */\nfunction collectLeaves(\n node: ExprNode,\n vars: Map<string, string>,\n dimless: Set<string>,\n): void {\n forEachScalarLeaf(\n node,\n (leaf) => {\n if (isRegisteredConstant(leaf.name) || isDecimalLiteral(leaf.name)) return;\n if (isDimensionless(leaf.dim)) dimless.add(leaf.name);\n else vars.set(leaf.name, canonicalQuantityName(leaf.name, leaf.dim));\n },\n { transcendental: true, abs: true },\n );\n}\n\n/**\n * The sample points: variable `i` (in sorted canonical-name order) takes the\n * value `(1.3 + 0.7·i)^p` at each exponent of `FIXED_POINT_EXPONENTS`. Each\n * variable has its own base, so the RATIOS between variables change from\n * point to point too. One common scale factor would leave every ratio such\n * as y/x fixed, and two homogeneous expressions of the same degree\n * (`x + 2y` and `x + y`) would then pass as a constant ratio at every point:\n * a recovery that could not fail (9.0.0 audit §4 C3). `canonical-compare.ts`\n * uses the same exponents on its own base.\n */\nconst RECOVERY_SCHEME = { base: 1.3, step: 0.7 } as const;\n\n/**\n * Best-effort check that two ASTs agree up to a constant ratio.\n *\n * @internal\n */\nexport function numericalRecovery(canon: ExprNode, bridge: ExprNode): RecoveryOutcome {\n const vars = new Map<string, string>();\n const dimless = new Set<string>();\n collectLeaves(canon, vars, dimless);\n collectLeaves(bridge, vars, dimless);\n // `M` and `mass` are one quantity. They share a sample, or the ratio is a\n // float artifact of two independent draws of the same mass.\n const canonicals = [...new Set(vars.values())].sort();\n const ratios: number[] = [];\n for (const p of FIXED_POINT_EXPONENTS) {\n const point = fixedPoint(canonicals, p, RECOVERY_SCHEME);\n const values: Record<string, number> = {};\n for (const [raw, canonName] of vars) values[raw] = point[canonName]!;\n // Hold unresolved dimensionless leaves fixed — recovery is \"up to\" them.\n for (const n of dimless) values[n] = 1;\n let cv: number;\n let bv: number;\n try {\n cv = evalExpr(canon, values);\n bv = evalExpr(bridge, values);\n } catch {\n return { tested: false, maxRelErr: NaN };\n }\n // Guard cv===0 too: with cv===0 the ratio is 0 at every sample, so the\n // relative-spread denominator r0===0 ⇒ NaN — a false \"tested\" result.\n if (!Number.isFinite(cv) || !Number.isFinite(bv) || bv === 0 || cv === 0) {\n return { tested: false, maxRelErr: NaN };\n }\n ratios.push(cv / bv);\n }\n // The recovery records the spread; the reader decides. Every ratio is finite and nonzero here.\n return { tested: true, maxRelErr: constantRatio(ratios, 0).maxRelErr };\n}\n\n/**\n * The comparison core, given a canonical entry (with its pre-computed\n * normal-form) and a bridge's shape from the process-wide `bridgeShapes`\n * table (validated dimension and normal-form hash, computed once). Pure: no\n * AST re-walks except the rare `numericalRecovery` that only fires on a\n * structural match.\n */\nfunction classifyAgainst(\n canon: CanonicalEquation,\n canonAst: ExprNode,\n canonNormal: string,\n bridgeId: number,\n bridge: BridgeShape,\n): LinkageResult {\n const relation = classifyStructure({\n left: canonAst,\n leftDim: canon.dimensional.target.dim,\n leftNormal: canonNormal,\n right: bridge.rhs,\n rightDim: bridge.dim,\n rightNormal: bridge.normal,\n restatesBridge: canon.restatesBridge,\n bridgeId: String(bridgeId),\n });\n const recovery = relation.structuralMatch ? numericalRecovery(canonAst, bridge.rhs) : null;\n\n let classification: LinkageResult['classification'];\n if (relation.structuralMatch) {\n classification = relation.restates ? 'restates-canonical' : 'recovers';\n } else if (relation.dimMatch) {\n classification = 'dimensional-only';\n } else {\n classification = 'unrelated';\n }\n\n return {\n canonicalId: canon.id,\n bridgeId,\n dimMatch: relation.dimMatch,\n structuralMatch: relation.structuralMatch,\n recovery,\n classification,\n };\n}\n\n/** Compare one canonical entry against one bridge. */\nexport function classifyLinkage(\n canonicalId: string,\n bridgeId: number,\n): LinkageResult {\n const canon = canonicalById(canonicalId);\n const bridge = bridgeShapes().get(bridgeId);\n\n if (!canon || !bridge || !canon.scalarAst) {\n return {\n canonicalId,\n bridgeId,\n dimMatch: false,\n structuralMatch: false,\n recovery: null,\n classification: 'unrelated',\n };\n }\n\n return classifyAgainst(\n canon,\n canon.scalarAst,\n normalForm(canon.scalarAst),\n bridgeId,\n bridge,\n );\n}\n\n/**\n * Scan every canonical entry (with a scalar-AST) against every bridge RHS, and\n * return the non-`unrelated` results — the physicist's linkage worklist.\n *\n * Each bridge's shape comes from the process-wide `bridgeShapes` table\n * (validated and normal-formed once), and each canonical's normal-form is\n * computed once per outer iteration (bridge-invariant); the inner loop then\n * only compares pre-computed strings and dimensions.\n */\nexport function scanLinkages(): LinkageResult[] {\n const results: LinkageResult[] = [];\n const bridges = bridgeShapes();\n\n for (const ce of CANONICAL_EQUATIONS) {\n if (!ce.scalarAst) continue;\n const canonNormal = normalForm(ce.scalarAst);\n for (const [bridgeId, bridge] of bridges) {\n const r = classifyAgainst(\n ce,\n ce.scalarAst,\n canonNormal,\n bridgeId,\n bridge,\n );\n if (r.classification !== 'unrelated') results.push(r);\n }\n }\n return results;\n}\n"]}
@@ -22,14 +22,6 @@
22
22
  */
23
23
  import type { ExprNode } from '../dimensional/validator.js';
24
24
  import type { Dimension } from '../dimensional/types.js';
25
- /**
26
- * A dimensionless symbol is a droppable "up to a constant" factor only when it
27
- * is a numeric literal (`2`, `-1`, `0.5`), a registered named constant
28
- * (`ln2`, `4pi`, …), or a spelled-out numeric constant (`6pi`, `ln_2_constant`).
29
- * Any OTHER dimensionless symbol is a stub for an unknown dimensionless quantity
30
- * (a parameter or a functional like `ln⟨exp(−βW)⟩`) and is structural —
31
- * dropping it would conflate distinct interiors.
32
- */
33
25
  /**
34
26
  * Bridge ASTs still spell a governing quantity with the short symbol (`T`, `M`,
35
27
  * `m_1`, `m_2`). The registry uses one name. The structural hash treats the
@@ -1 +1 @@
1
- {"version":3,"file":"normal-form.d.ts","sourceRoot":"","sources":["../../src/canonical/normal-form.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAC;AAC5D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AA2BzD;;;;;;;GAOG;AACH;;;;;;;GAOG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,SAAS,GAAG,MAAM,CAK1E;AA4CD;;;GAGG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,QAAQ,GAAG,MAAM,CA8DjD;AAED,iFAAiF;AACjF,wBAAgB,iBAAiB,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,QAAQ,GAAG,OAAO,CAEnE"}
1
+ {"version":3,"file":"normal-form.d.ts","sourceRoot":"","sources":["../../src/canonical/normal-form.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAC;AAC5D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AAoBzD;;;;;;;GAOG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,SAAS,GAAG,MAAM,CAK1E;AAoDD;;;GAGG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,QAAQ,GAAG,MAAM,CAiEjD;AAED,iFAAiF;AACjF,wBAAgB,iBAAiB,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,QAAQ,GAAG,OAAO,CAEnE"}