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
@@ -5,9 +5,9 @@
5
5
  * established textbook physics ALONE, with the speculative bridge catalog
6
6
  * excluded.
7
7
  *
8
- * WHY this exists: `CATALOG_GRAPH` mixes the 8 established bridges with 36
9
- * speculative ones, so a `promising` discovery there is polluted by
10
- * speculation. Feeding ONLY canonical equations gives (a) a new-candidate
8
+ * WHY this exists: `CATALOG_GRAPH` mixes established bridges with speculative
9
+ * ones (the counts per status are NOTES.md's), so a `promising` discovery
10
+ * there is polluted by speculation. Feeding ONLY canonical equations gives (a) a new-candidate
11
11
  * review surface motivated by textbook physics, and (b) a regression harness —
12
12
  * discovery on canonical-only must introduce no numerical contradiction
13
13
  * (standard physics, fed to the inference suite, stays self-consistent).
@@ -24,9 +24,9 @@
24
24
  * `confidence: 'established'` — the canonical graph IS the anchored core.
25
25
  * - `kind: 'law'` (within-domain ground truth, not a cross-regime bridge);
26
26
  * `beId: null` (not a catalog bridge). **Annotation-correctness note:**
27
- * `toEdge` hardcodes `kind:'law'` and `regimesDiffer` has zero call sites.
28
- * The information-axis mapping is annotation-only; there is no edge-kind
29
- * path and no delta to measure.
27
+ * `toEdge` hardcodes `kind:'law'`; the attributes an edge carries do not
28
+ * decide its kind here. The attribute mapping is annotation-only; there
29
+ * is no edge-kind path and no delta to measure.
30
30
  * - Evaluator: the dimensional MONOMIAL gives the power law over the variable
31
31
  * sources, times the baked constant factor. A fully-quantitative scalar
32
32
  * AST whose extra factors are a closed dimensionless coefficient
@@ -62,15 +62,18 @@
62
62
  *
63
63
  * @module composition/canonical-graph
64
64
  */
65
+ import { validityDomain } from './edge.js';
66
+ import { regimeAttributesOf } from './quantity.js';
67
+ import { AXES } from './axes.js';
65
68
  import { CANONICAL_EQUATIONS } from '../canonical/registry.js';
66
69
  import { applyCarrierSignPolicy } from '../bridges/carrier-sign.js';
67
- import { CONSTANT_REGISTRY, CONSTANTS, piMultipleValue } from '../dimensional/symbolic-constants.js';
70
+ import { CONSTANT_REGISTRY, CONSTANTS, isRegisteredConstant, piMultipleValue } from '../dimensional/symbolic-constants.js';
71
+ import { forEachScalarLeaf } from '../dimensional/ast-leaves.js';
68
72
  import { DIMENSIONLESS } from '../dimensional/types.js';
69
73
  import { equals } from '../dimensional/algebra.js';
70
74
  import { CANONICAL_GROUP_PREFACTORS, canonicalGroupPrefactor, canonicalPrefactor } from './canonical-prefactors.js';
71
75
  import { evalExpr } from './expr-eval.js';
72
- import { HoldsError, holds } from '../bridges/holds.js';
73
- import { formulaNames, formulaScope } from '../bridges/expr-parse.js';
76
+ import { monomialExponents } from './formula-shape.js';
74
77
  /**
75
78
  * The universal constants a canonical `governing` list may name, under every
76
79
  * registered spelling, with SI value AND dimension: the canonical rows of the
@@ -97,23 +100,29 @@ const constantValue = (name, dim) => {
97
100
  return c !== undefined && equals(c.dim, dim) ? c.value : null;
98
101
  };
99
102
  /**
100
- * Carry the scale/force/information regime axes (shared with `RegimeAttributes`).
101
- * The registry's information enum spelling differs from `RegimeAttributes`,
102
- * so it is mapped via `INFO_MAP`.
103
+ * Carry every registry axis the canonical regime states under the same
104
+ * vocabulary (scale, force, symmetry), plus information through `INFO_MAP`,
105
+ * whose spelling differs. `TensorIndices.topology` is a number, not a
106
+ * `TopologyAxis`, and `dimension` is not a registry axis; neither is carried.
107
+ * The result is checked against the registry, so a canonical regime value
108
+ * outside an axis's value list is a load-time error, not an unstated axis.
103
109
  */
104
110
  function attributesOf(eq) {
105
- const attrs = {};
106
- if (eq.regime.scale)
107
- attrs.scale = eq.regime.scale;
108
- if (eq.regime.force)
109
- attrs.force = eq.regime.force;
111
+ const stated = {};
112
+ for (const { name } of AXES) {
113
+ const value = eq.regime[name];
114
+ if (name === 'information' || typeof value !== 'string')
115
+ continue;
116
+ stated[name] = value;
117
+ }
110
118
  if (eq.regime.information)
111
- attrs.information = INFO_MAP[eq.regime.information];
112
- return attrs;
119
+ stated['information'] = INFO_MAP[eq.regime.information];
120
+ return regimeAttributesOf(stated, `canonical ${eq.id} regime`);
113
121
  }
114
122
  const PERMISSIVE_DOMAIN = {
115
123
  description: 'standard-physics regime (canonical L-layer)',
116
124
  predicate: () => true,
125
+ violations: () => [],
117
126
  };
118
127
  /**
119
128
  * The validity domain of `eq`: its stated condition over the source names, or
@@ -123,19 +132,7 @@ function domainOf(eq, sourceNames) {
123
132
  const text = eq.holds;
124
133
  if (text === undefined)
125
134
  return PERMISSIVE_DOMAIN;
126
- return {
127
- description: text,
128
- predicate: (inputs) => {
129
- try {
130
- return holds(text, inputs, formulaScope(), [...formulaNames(), ...sourceNames]);
131
- }
132
- catch (error) {
133
- if (error instanceof HoldsError)
134
- return false;
135
- throw error;
136
- }
137
- },
138
- };
135
+ return validityDomain(text, sourceNames, sourceNames);
139
136
  }
140
137
  /** A registered or literal dimensionless number, or undefined when `name` is not one. */
141
138
  function dimensionlessLeaf(name) {
@@ -203,7 +200,7 @@ function hasUnresolvedStub(node, governing) {
203
200
  return false;
204
201
  if (governing.has(node.name))
205
202
  return false;
206
- if (node.name in CONSTANTS)
203
+ if (isRegisteredConstant(node.name))
207
204
  return false;
208
205
  return true;
209
206
  }
@@ -234,56 +231,6 @@ function recordedDimensionlessCoefficient(eq) {
234
231
  return undefined;
235
232
  return c;
236
233
  }
237
- /**
238
- * Exponents of every symbol in a product, quotient, or integer power.
239
- * Undefined for a sum or any node that is not that monomial.
240
- */
241
- function monomialExponents(node) {
242
- if (node === undefined)
243
- return undefined;
244
- if (node.kind === 'symbol')
245
- return new Map([[node.name, 1]]);
246
- if (node.kind !== 'op')
247
- return undefined;
248
- if (node.op === '*') {
249
- const acc = new Map();
250
- for (const arg of node.args) {
251
- const part = monomialExponents(arg);
252
- if (part === undefined)
253
- return undefined;
254
- for (const [name, exp] of part)
255
- acc.set(name, (acc.get(name) ?? 0) + exp);
256
- }
257
- return acc;
258
- }
259
- if (node.op === '/') {
260
- if (node.args.length !== 2)
261
- return undefined;
262
- const numerator = monomialExponents(node.args[0]);
263
- const denominator = monomialExponents(node.args[1]);
264
- if (numerator === undefined || denominator === undefined)
265
- return undefined;
266
- for (const [name, exp] of denominator)
267
- numerator.set(name, (numerator.get(name) ?? 0) - exp);
268
- return numerator;
269
- }
270
- if (node.op === '^') {
271
- const base = node.args[0];
272
- const expNode = node.args[1];
273
- if (base === undefined || expNode === undefined || expNode.kind !== 'symbol')
274
- return undefined;
275
- const exp = Number(expNode.name);
276
- if (!Number.isFinite(exp))
277
- return undefined;
278
- const inner = monomialExponents(base);
279
- if (inner === undefined)
280
- return undefined;
281
- for (const [name, innerExp] of inner)
282
- inner.set(name, innerExp * exp);
283
- return inner;
284
- }
285
- return undefined;
286
- }
287
234
  /**
288
235
  * Dimensionless counts a fully-quantitative AST multiplies in and Buckingham
289
236
  * cannot see. `scalar-up-to-constant` stays excluded: that stub is the
@@ -297,14 +244,7 @@ function formulaFactorExponents(eq) {
297
244
  return {};
298
245
  const governing = new Set(eq.dimensional.governing.map((g) => g.name));
299
246
  const dims = new Map();
300
- const collectDims = (node) => {
301
- if (node.kind === 'symbol')
302
- dims.set(node.name, node.dim);
303
- else if (node.kind === 'op')
304
- for (const arg of node.args)
305
- collectDims(arg);
306
- };
307
- collectDims(eq.scalarAst);
247
+ forEachScalarLeaf(eq.scalarAst, (leaf) => dims.set(leaf.name, leaf.dim), {});
308
248
  const factors = {};
309
249
  for (const [name, exp] of powers) {
310
250
  if (exp === 0)
@@ -314,7 +254,7 @@ function formulaFactorExponents(eq) {
314
254
  continue;
315
255
  if (dimensionlessLeaf(name) !== undefined)
316
256
  continue;
317
- if (governing.has(name) || name in CONSTANTS)
257
+ if (governing.has(name) || isRegisteredConstant(name))
318
258
  continue;
319
259
  factors[name] = exp;
320
260
  }
@@ -396,16 +336,7 @@ function evenInputNames(node) {
396
336
  if (node === undefined)
397
337
  return new Set();
398
338
  const names = new Set();
399
- const walk = (n) => {
400
- if (n.kind === 'symbol')
401
- names.add(n.name);
402
- else if (n.kind === 'op')
403
- for (const arg of n.args)
404
- walk(arg);
405
- else if (n.kind === 'abs' || n.kind === 'transcendental' || n.kind === 'dirac-delta')
406
- walk(n.arg);
407
- };
408
- walk(node);
339
+ forEachScalarLeaf(node, (leaf) => names.add(leaf.name), { abs: true, transcendental: true, diracDelta: true });
409
340
  const even = new Set();
410
341
  for (const name of names) {
411
342
  if (inputParity(node, name) === 'even')
@@ -1 +1 @@
1
- {"version":3,"file":"canonical-graph.js","sourceRoot":"","sources":["../../src/composition/canonical-graph.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"canonical-graph.js","sourceRoot":"","sources":["../../src/composition/canonical-graph.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Canonical-only graph — project the standard-physics L-layer\n * (`CANONICAL_EQUATIONS`) into the composition-graph edge vocabulary so the\n * discovery/analysis funnel (`upt discover` / `candidates` / `map`) can run on\n * established textbook physics ALONE, with the speculative bridge catalog\n * excluded.\n *\n * WHY this exists: `CATALOG_GRAPH` mixes established bridges with speculative\n * ones (the counts per status are NOTES.md's), so a `promising` discovery\n * there is polluted by speculation. Feeding ONLY canonical equations gives (a) a new-candidate\n * review surface motivated by textbook physics, and (b) a regression harness —\n * discovery on canonical-only must introduce no numerical contradiction\n * (standard physics, fed to the inference suite, stays self-consistent).\n *\n * DESIGN — parity with the bridge graph:\n * - Universal constants (G, c, ℏ, k_B, ε₀, σ_sb, b, e) are BAKED INTO the\n * evaluator, exactly as the catalog edges bake them — they are not graph\n * nodes. This keeps the candidate proposer about physical OBSERVABLES and\n * lets the numeric filter fire from the standard `{ mass }` anchor (an\n * anchor cannot supply G/c/ℏ). A `governing` entry is a constant iff its\n * name is registered in `CANONICAL_CONSTANT_SI`; everything else is a\n * physical variable and becomes a source/target node.\n * - Every canonical equation is `established` physics, so every edge is\n * `confidence: 'established'` — the canonical graph IS the anchored core.\n * - `kind: 'law'` (within-domain ground truth, not a cross-regime bridge);\n * `beId: null` (not a catalog bridge). **Annotation-correctness note:**\n * `toEdge` hardcodes `kind:'law'`; the attributes an edge carries do not\n * decide its kind here. The attribute mapping is annotation-only; there\n * is no edge-kind path and no delta to measure.\n * - Evaluator: the dimensional MONOMIAL gives the power law over the variable\n * sources, times the baked constant factor. A fully-quantitative scalar\n * AST whose extra factors are a closed dimensionless coefficient\n * (4π, ln 2, 8π/3, …) multiplies that coefficient on the Buckingham path,\n * including a minus sign. The sourced prefactor table owns the factor\n * for an AST that is intentionally constant-free, so that path does not\n * multiply the AST coefficient again. A null monomial, or a dimensionless\n * count, is evaluated from the AST, which already folded those leaves.\n * A sourced prefactor from `canonicalPrefactor` multiplies as well. A dimensionless\n * group in `CANONICAL_GROUP_PREFACTORS` multiplies only when that input is\n * present (`√γ` for sound speed). Absent, a dimensional entry with no\n * sourced prefactor returns no number. That table is\n * outside this tree. `scalar-up-to-constant` is not a license to drop ½,\n * 2π, or 6π. A sourced 1 stays a value. A fully-quantitative dimensionless count (`N`,\n * `1-e²`) is a source in `formulaFactors`, not a stub that drops the\n * rest of the coefficient: the evaluator multiplies it, and a missing\n * count does not return the count-free value. A `scalar-up-to-constant`\n * stub (Jarzynski's log average) stays out of that list. A G-closure\n * is not given a second constant here. Where\n * dimensions cannot pin a monomial\n * (`monomial: null`), a fully-quantitative product, quotient, or integer\n * power is evaluated from that AST, so a numeric leaf (4, 6π, 8π) is not\n * dropped and Newton's two same-dim masses still return G m₁ m₂ / r².\n * A fully-quantitative sum or transcendental (Carnot, the first law, the\n * Boltzmann factor) is evaluated from that same AST. A\n * `scalar-up-to-constant` stub still carries a NaN evaluator;\n * `retrodict` accepts only finite derivations, so it abstains on those\n * rather than inventing a monomial or presenting the dropped ½ as the law.\n *\n * The public counterpart to `CATALOG_GRAPH` (the bridge-catalog graph): exported\n * from the package manifest and surfaced via the CLI's `--source=canonical`\n * flag on `discover` / `candidates` / `map`.\n *\n * @module composition/canonical-graph\n */\n\nimport { validityDomain, type BridgeEdge, type ValidityDomain } from './edge.js';\nimport type { Quantity, RegimeAttributes } from './quantity.js';\nimport { regimeAttributesOf } from './quantity.js';\nimport { AXES } from './axes.js';\nimport type { CanonicalEquation } from '../canonical/canonical-equation.js';\nimport { CANONICAL_EQUATIONS } from '../canonical/registry.js';\nimport { applyCarrierSignPolicy } from '../bridges/carrier-sign.js';\nimport { CONSTANT_REGISTRY, CONSTANTS, isRegisteredConstant, piMultipleValue } from '../dimensional/symbolic-constants.js';\nimport { forEachScalarLeaf } from '../dimensional/ast-leaves.js';\nimport type { Dimension } from '../dimensional/types.js';\nimport type { InformationMeasure } from '../core/types.js';\nimport { CHARGE, DIMENSIONLESS, MASS } from '../dimensional/types.js';\nimport { equals } from '../dimensional/algebra.js';\nimport type { ExprNode } from '../dimensional/validator.js';\nimport { CANONICAL_GROUP_PREFACTORS, canonicalGroupPrefactor, canonicalPrefactor } from './canonical-prefactors.js';\nimport { evalExpr } from './expr-eval.js';\nimport { monomialExponents } from './formula-shape.js';\n\n/** A universal constant a canonical `governing` list may name: SI value + dim. Named by the public `CANONICAL_CONSTANTS`. @public */\nexport interface ConstantDef {\n readonly value: number;\n readonly dim: Dimension;\n}\n\n/**\n * The universal constants a canonical `governing` list may name, under every\n * registered spelling, with SI value AND dimension: the canonical rows of the\n * constant registry. A governing entry is BAKED into the evaluator iff its\n * name AND dimension match an entry here; everything else is a physical\n * variable (a graph node). The dimension guard is load-bearing: it stops a\n * future same-named physical variable (e.g. orbital eccentricity `e`,\n * dimensionless) from being silently replaced by a constant of the same name.\n */\nexport const CANONICAL_CONSTANTS: Readonly<Record<string, ConstantDef>> = Object.fromEntries(\n CONSTANT_REGISTRY.filter((row) => row.canonical).flatMap((row) =>\n [row.name, ...row.spellings].map((spelling) => [spelling, { value: row.value, dim: row.dim }]),\n ),\n);\n\n/**\n * Map camelCase `InformationMeasure` (from canonical regime) to kebab-case\n * `RegimeAttributes.information` (for composition graph).\n */\nconst INFO_MAP: Record<InformationMeasure, NonNullable<RegimeAttributes['information']>> = {\n vonNeumann: 'von-neumann',\n shannon: 'shannon',\n kolmogorov: 'kolmogorov',\n quantumDiscord: 'discord',\n};\n\n/** A governing entry is a baked constant iff its name AND dimension match. */\nconst constantValue = (name: string, dim: Dimension): number | null => {\n const c = CANONICAL_CONSTANTS[name];\n return c !== undefined && equals(c.dim, dim) ? c.value : null;\n};\n\n/**\n * Carry every registry axis the canonical regime states under the same\n * vocabulary (scale, force, symmetry), plus information through `INFO_MAP`,\n * whose spelling differs. `TensorIndices.topology` is a number, not a\n * `TopologyAxis`, and `dimension` is not a registry axis; neither is carried.\n * The result is checked against the registry, so a canonical regime value\n * outside an axis's value list is a load-time error, not an unstated axis.\n */\nfunction attributesOf(eq: CanonicalEquation): RegimeAttributes {\n const stated: Record<string, string> = {};\n for (const { name } of AXES) {\n const value = (eq.regime as Readonly<Record<string, unknown>>)[name];\n if (name === 'information' || typeof value !== 'string') continue;\n stated[name] = value;\n }\n if (eq.regime.information) stated['information'] = INFO_MAP[eq.regime.information];\n return regimeAttributesOf(stated, `canonical ${eq.id} regime`);\n}\n\nconst PERMISSIVE_DOMAIN: ValidityDomain = {\n description: 'standard-physics regime (canonical L-layer)',\n predicate: () => true,\n violations: () => [],\n};\n\n/**\n * The validity domain of `eq`: its stated condition over the source names, or\n * the permissive domain when none is stated. An unbound name is a violation.\n */\nfunction domainOf(eq: CanonicalEquation, sourceNames: readonly string[]): ValidityDomain {\n const text = eq.holds;\n if (text === undefined) return PERMISSIVE_DOMAIN;\n return validityDomain(text, sourceNames, sourceNames);\n}\n\n/** A registered or literal dimensionless number, or undefined when `name` is not one. */\nfunction dimensionlessLeaf(name: string): number | undefined {\n const c = CONSTANTS[name];\n if (c !== undefined && equals(c.dim, DIMENSIONLESS)) return c.value;\n const pi = piMultipleValue(name);\n if (pi !== undefined) return pi;\n const n = Number(name);\n return Number.isFinite(n) ? n : undefined;\n}\n\n/**\n * The dimensionless coefficient of a product or quotient. Dimensionful symbols\n * contribute 1 — the monomial evaluator already carries them. A sum, a\n * non-scalar arm, or a non-literal exponent is not a closed coefficient.\n */\nfunction dimensionlessCoefficient(node: ExprNode): number | undefined {\n if (node.kind === 'symbol') {\n const v = dimensionlessLeaf(node.name);\n return v !== undefined ? v : 1;\n }\n if (node.kind !== 'op') return undefined;\n if (node.op === '*') {\n let acc = 1;\n for (const a of node.args) {\n const c = dimensionlessCoefficient(a);\n if (c === undefined) return undefined;\n acc *= c;\n }\n return acc;\n }\n if (node.op === '/') {\n if (node.args.length !== 2) return undefined;\n const n = dimensionlessCoefficient(node.args[0]!);\n const d = dimensionlessCoefficient(node.args[1]!);\n if (n === undefined || d === undefined || d === 0) return undefined;\n return n / d;\n }\n if (node.op === '^') {\n const base = node.args[0];\n const exp = node.args[1];\n if (base === undefined || exp === undefined || exp.kind !== 'symbol') return undefined;\n const e = Number(exp.name);\n if (!Number.isFinite(e)) return undefined;\n if (base.kind === 'symbol') {\n const v = dimensionlessLeaf(base.name);\n return v !== undefined ? Math.pow(v, e) : 1;\n }\n const inner = dimensionlessCoefficient(base);\n return inner === undefined ? undefined : Math.pow(inner, e);\n }\n return undefined;\n}\n\n/** A symbol the coefficient walker would treat as 1 but that is not a constant or a governing name. */\nfunction hasUnresolvedStub(node: ExprNode, governing: ReadonlySet<string>): boolean {\n if (node.kind === 'symbol') {\n if (dimensionlessLeaf(node.name) !== undefined) return false;\n if (governing.has(node.name)) return false;\n if (isRegisteredConstant(node.name)) return false;\n return true;\n }\n if (node.kind === 'op') return node.args.some((a) => hasUnresolvedStub(a, governing));\n return true;\n}\n\n/**\n * The closed dimensionless factor a fully-quantitative AST records in front of\n * its dimensional monomial. `undefined` when there is nothing to multiply\n * (no AST, not fully quantitative, a stub, a sum, a factor of +1, or a factor\n * the sourced prefactor table already owns).\n */\nfunction recordedDimensionlessCoefficient(eq: CanonicalEquation): number | undefined {\n if (eq.epistemicStatus !== 'fully-quantitative' || eq.scalarAst === undefined) return undefined;\n // The table is the sourced multiplier for an AST that stays constant-free.\n // Multiplying the AST as well would count that factor twice.\n if (canonicalPrefactor(eq.id) !== undefined) return undefined;\n const governing = new Set(eq.dimensional.governing.map((g) => g.name));\n if (hasUnresolvedStub(eq.scalarAst, governing)) return undefined;\n const c = dimensionlessCoefficient(eq.scalarAst);\n if (c === undefined || !Number.isFinite(c) || c === 0) return undefined;\n if (Math.abs(c - 1) < 1e-12) return undefined;\n return c;\n}\n\n/**\n * Dimensionless counts a fully-quantitative AST multiplies in and Buckingham\n * cannot see. `scalar-up-to-constant` stays excluded: that stub is the\n * unfixed factor, not a required input.\n */\nfunction formulaFactorExponents(eq: CanonicalEquation): Record<string, number> {\n if (eq.epistemicStatus !== 'fully-quantitative' || eq.scalarAst === undefined) return {};\n const powers = monomialExponents(eq.scalarAst);\n if (powers === undefined) return {};\n const governing = new Set(eq.dimensional.governing.map((g) => g.name));\n const dims = new Map<string, Dimension>();\n forEachScalarLeaf(eq.scalarAst, (leaf) => dims.set(leaf.name, leaf.dim), {});\n const factors: Record<string, number> = {};\n for (const [name, exp] of powers) {\n if (exp === 0) continue;\n const dim = dims.get(name);\n if (dim === undefined || !equals(dim, DIMENSIONLESS)) continue;\n if (dimensionlessLeaf(name) !== undefined) continue;\n if (governing.has(name) || isRegisteredConstant(name)) continue;\n factors[name] = exp;\n }\n return factors;\n}\n\ntype InputParity = 'even' | 'odd' | 'neither' | 'absent';\n\n/**\n * Sign parity of `node` as a function of `name`. A product of two odd\n * factors is even. An absolute value is even. An even integer power is\n * even. A fractional power of an even subexpression stays even\n * (`√(q²)`), and a fractional power of an odd one is not a magnitude.\n */\nfunction inputParity(node: ExprNode, name: string): InputParity {\n if (node.kind === 'symbol') return node.name === name ? 'odd' : 'absent';\n if (node.kind === 'abs') {\n const inner = inputParity(node.arg, name);\n if (inner === 'absent' || inner === 'neither') return inner;\n return 'even';\n }\n if (node.kind === 'transcendental' || node.kind === 'dirac-delta') {\n const inner = inputParity(node.arg, name);\n return inner === 'absent' ? 'absent' : 'neither';\n }\n if (node.kind !== 'op') return 'neither';\n if (node.op === '+' || node.op === '-') {\n const parts = node.args.map((arg) => inputParity(arg, name)).filter((p) => p !== 'absent');\n if (parts.length === 0) return 'absent';\n if (parts.some((p) => p === 'neither')) return 'neither';\n if (parts.every((p) => p === 'even')) return 'even';\n if (parts.every((p) => p === 'odd')) return 'odd';\n return 'neither';\n }\n if (node.op === '*' || node.op === '/') {\n let acc: InputParity = 'absent';\n for (const arg of node.args) {\n const part = inputParity(arg, name);\n if (part === 'neither') return 'neither';\n if (part === 'absent') continue;\n if (acc === 'absent') acc = part;\n else if (acc === 'odd' && part === 'odd') acc = 'even';\n else if (acc === 'odd' || part === 'odd') acc = 'odd';\n else acc = 'even';\n }\n return acc;\n }\n if (node.op === '^') {\n const base = node.args[0];\n const expNode = node.args[1];\n if (base === undefined || expNode === undefined || expNode.kind !== 'symbol') return 'neither';\n const exp = Number(expNode.name);\n const inner = inputParity(base, name);\n if (!Number.isFinite(exp) || inner === 'neither') return inner === 'absent' ? 'absent' : 'neither';\n if (inner === 'absent' || exp === 0) return 'absent';\n if (Number.isInteger(exp) && Math.abs(exp) % 2 === 0) return 'even';\n if (Number.isInteger(exp)) return inner;\n return inner === 'even' ? 'even' : 'neither';\n }\n return 'neither';\n}\n\n/** Names whose scalar AST is an even function. A magnitude uses these absolutely. */\nfunction evenInputNames(node: ExprNode | undefined): ReadonlySet<string> {\n if (node === undefined) return new Set();\n const names = new Set<string>();\n forEachScalarLeaf(node, (leaf) => names.add(leaf.name), { abs: true, transcendental: true, diracDelta: true });\n const even = new Set<string>();\n for (const name of names) {\n if (inputParity(node, name) === 'even') even.add(name);\n }\n return even;\n}\n\n/** Evaluate a fully-quantitative monomial AST, including its dimensionless counts. */\nfunction evaluateAstMonomial(\n eq: CanonicalEquation,\n powers: ReadonlyMap<string, number>,\n): (inputs: Record<string, number>) => number {\n const dimByName = new Map(eq.dimensional.governing.map((g) => [g.name, g.dim]));\n let constFactor = 1;\n const varExps: Array<[string, number]> = [];\n for (const [name, exp] of powers) {\n if (exp === 0) continue;\n const leaf = dimensionlessLeaf(name);\n if (leaf !== undefined) {\n constFactor *= Math.pow(leaf, exp);\n continue;\n }\n const dim = dimByName.get(name) ?? CONSTANTS[name]?.dim;\n const cv = dim !== undefined ? constantValue(name, dim) : null;\n if (cv !== null) constFactor *= Math.pow(cv, exp);\n else varExps.push([name, exp]);\n }\n return (inputs: Record<string, number>): number => {\n let v = constFactor;\n for (const [name, exp] of varExps) {\n const x = inputs[name];\n if (x === undefined || !Number.isFinite(x)) return Number.NaN;\n v *= Math.pow(x, exp);\n }\n return v;\n };\n}\n\n/** Numeric literal symbols (`1`, `-1`) the monomial path already folded. */\nfunction literalInputs(node: ExprNode, inputs: Record<string, number>): Record<string, number> {\n const scope: Record<string, number> = { ...inputs };\n const walk = (current: ExprNode): void => {\n if (current.kind === 'symbol') {\n if (Object.hasOwn(scope, current.name)) return;\n const numeric = Number(current.name);\n if (current.name.trim() !== '' && Number.isFinite(numeric)) scope[current.name] = numeric;\n return;\n }\n if (current.kind === 'op') for (const arg of current.args) walk(arg);\n else if (current.kind === 'abs' || current.kind === 'transcendental' || current.kind === 'dirac-delta') walk(current.arg);\n };\n walk(node);\n return scope;\n}\n\n/**\n * A fully-quantitative sum or transcendental. The monomial exponent walk\n * cannot see it. `scalar-up-to-constant` stays out: that status dropped a\n * factor, and the AST is not the law.\n */\nfunction evaluateClosedScalar(\n eq: CanonicalEquation,\n): ((inputs: Record<string, number>) => number) | undefined {\n if (eq.epistemicStatus !== 'fully-quantitative' || eq.scalarAst === undefined) return undefined;\n if (monomialExponents(eq.scalarAst) !== undefined) return undefined;\n const ast = eq.scalarAst;\n const required = eq.dimensional.governing.filter((governing) => constantValue(governing.name, governing.dim) === null);\n return (inputs) => {\n for (const governing of required) {\n const value = inputs[governing.name];\n if (value === undefined || !Number.isFinite(value)) return Number.NaN;\n }\n try {\n const value = evalExpr(ast, literalInputs(ast, inputs));\n return Number.isFinite(value) ? value : Number.NaN;\n } catch {\n return Number.NaN;\n }\n };\n}\n\n/**\n * Build the evaluator for one canonical equation, keyed by its VARIABLE source\n * names. Variables carry the monomial exponent from `inputs`; constants\n * contribute a fixed baked factor. A fully-quantitative monomial multiplies\n * its recorded dimensionless coefficient when the sourced table does not\n * already own that factor, and multiplies the sourced table prefactor.\n * A fully-quantitative AST that names a dimensionless count, or whose\n * Buckingham monomial is null, is evaluated from that AST so the count and\n * the numeric leaves (6π) are not dropped. A fully-quantitative sum or\n * transcendental is evaluated from that AST too. The edge applies the sign policy\n * once before this function: an input the AST is even in is an absolute\n * value, and a product odd in both charge and mobility rejects opposite\n * signs. This function does not do that again.\n * Returns NaN when the monomial is null and the AST is not a fully-quantitative\n * closed form, and when a dimensional coefficient is unset and its group is unbound.\n * `retrodict` then abstains.\n */\nfunction makeEvaluate(\n eq: CanonicalEquation,\n): (inputs: Record<string, number>) => number {\n const powers = eq.epistemicStatus === 'fully-quantitative' ? monomialExponents(eq.scalarAst) : undefined;\n const factors = formulaFactorExponents(eq);\n if (powers !== undefined && (Object.keys(factors).length > 0 || eq.dimensional.monomial === null)) {\n return evaluateAstMonomial(eq, powers);\n }\n const closed = evaluateClosedScalar(eq);\n if (closed !== undefined) return closed;\n const monomial = eq.dimensional.monomial;\n if (monomial === null) return () => NaN;\n const dimByName = new Map(eq.dimensional.governing.map((g) => [g.name, g.dim]));\n let constFactor = 1;\n const varExps: Array<[string, number]> = [];\n for (const [name, exp] of Object.entries(monomial)) {\n const dim = dimByName.get(name);\n const cv = dim !== undefined ? constantValue(name, dim) : null;\n if (cv !== null) constFactor *= Math.pow(cv, exp);\n else varExps.push([name, exp]);\n }\n const recorded = recordedDimensionlessCoefficient(eq);\n const tabled = canonicalPrefactor(eq.id);\n const group = CANONICAL_GROUP_PREFACTORS.find((p) => p.id === eq.id);\n const unset = eq.epistemicStatus === 'dimensional' && tabled === undefined;\n return (inputs: Record<string, number>): number => {\n if (unset) {\n if (group === undefined) return Number.NaN;\n const bound = inputs[group.group];\n if (bound === undefined || !Number.isFinite(bound)) return Number.NaN;\n }\n let v = constFactor;\n if (recorded !== undefined) v *= recorded;\n if (tabled !== undefined) v *= tabled;\n if (group !== undefined) {\n const g = inputs[group.group];\n if (g !== undefined && Number.isFinite(g)) {\n const factor = canonicalGroupPrefactor(eq.id, g);\n if (factor !== undefined) v *= factor;\n }\n }\n for (const [name, exp] of varExps) {\n const x = inputs[name];\n v *= Math.pow(x === undefined ? Number.NaN : x, exp);\n }\n return v;\n };\n}\n\n/** Project one canonical equation to a composition-graph edge. */\nfunction toEdge(eq: CanonicalEquation): BridgeEdge {\n const attributes = attributesOf(eq);\n const target: Quantity = {\n name: eq.dimensional.target.name,\n symbol: eq.dimensional.target.name,\n dim: eq.dimensional.target.dim,\n attributes,\n };\n const factors = formulaFactorExponents(eq);\n const sources: Quantity[] = eq.dimensional.governing\n .filter((g) => constantValue(g.name, g.dim) === null)\n .map((g) => ({ name: g.name, symbol: g.name, dim: g.dim, attributes }));\n for (const name of Object.keys(factors)) {\n sources.push({ name, symbol: name, dim: DIMENSIONLESS, attributes });\n }\n const evaluateRaw = makeEvaluate(eq);\n const even = evenInputNames(eq.scalarAst);\n const evenInputs = sources.filter((source) => even.has(source.name)).map((source) => source.name);\n const monomial = eq.dimensional.monomial;\n return {\n id: eq.id,\n beId: null,\n kind: 'law',\n label: eq.name,\n sources,\n target,\n confidence: 'established',\n domain: domainOf(eq, sources.map((source) => source.name)),\n evaluate: (inputs) => evaluateRaw(applyCarrierSignPolicy(monomial, inputs, even)),\n citation: eq.references[0] ?? eq.id,\n ...(eq.epistemicStatus === 'dimensional' && canonicalPrefactor(eq.id) === undefined\n ? { coefficientUnset: true as const }\n : {}),\n ...(Object.keys(factors).length > 0 ? { formulaFactors: factors } : {}),\n ...(evenInputs.length > 0 ? { evenInputs } : {}),\n };\n}\n\n/**\n * Project canonical equations into composition-graph edges (defaults to the\n * full registry). See the module docstring for the modelling decisions.\n *\n * @internal\n */\nexport function canonicalToEdges(\n equations: readonly CanonicalEquation[] = CANONICAL_EQUATIONS,\n): BridgeEdge[] {\n return equations.map(toEdge);\n}\n\n/**\n * The standard-physics composition graph: every canonical equation as an\n * `established` `law` edge. The bridge-free counterpart to `CATALOG_GRAPH`.\n *\n * @internal\n */\nexport const CANONICAL_GRAPH: readonly BridgeEdge[] = canonicalToEdges();\n"]}
@@ -12,7 +12,7 @@
12
12
  *
13
13
  * @module composition/canonical-json
14
14
  */
15
- import { createHash } from 'node:crypto';
15
+ import { sha256Hex as coreSha256Hex } from '../core/hash.js';
16
16
  function canonicalJsonRecord(v) {
17
17
  if (Array.isArray(v))
18
18
  return `[${v.map(canonicalJsonRecord).join(',')}]`;
@@ -62,7 +62,7 @@ export function canonicalJson(value, profile = 'probe') {
62
62
  * @internal
63
63
  */
64
64
  export function sha256Hex(text) {
65
- return createHash('sha256').update(text, 'utf8').digest('hex');
65
+ return coreSha256Hex(text);
66
66
  }
67
67
  /**
68
68
  * SHA-256 of the probe profile of `value`.
@@ -1 +1 @@
1
- {"version":3,"file":"canonical-json.js","sourceRoot":"","sources":["../../src/composition/canonical-json.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"canonical-json.js","sourceRoot":"","sources":["../../src/composition/canonical-json.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * One canonical-JSON serializer with two named profiles.\n *\n * `probe` keeps the Date-to-ISO rule and the undefined-hole-to-null rule.\n * `record` keeps the bytes the CLI experiment record hashed before this module\n * existed: a `Date` becomes `{}`, and an array hole stays a hole.\n *\n * `captureEnvironment` is the same split. The probe profile stores the Node\n * version, the platform, and the architecture. The record profile stores the\n * UPT version, the parser, the peers, and the constant-table hashes. The\n * record sources are arguments because this module does not import `cli`.\n *\n * @module composition/canonical-json\n */\n\nimport { sha256Hex as coreSha256Hex } from '../core/hash.js';\nimport type { EnvironmentFingerprint } from './probe/types.js';\n\n/** Which caller’s bytes `canonicalJson` writes. */\nexport type JsonProfile = 'record' | 'probe';\n\n/** Values the record profile reads. The caller supplies them. */\nexport interface RecordEnvironmentSources {\n readonly uptVersion: string;\n readonly node: string;\n readonly formulaParser: () => Promise<string>;\n readonly simplifier: () => Promise<boolean>;\n readonly peers: () => Record<string, string | null>;\n readonly constantTables: () => Promise<\n Record<string, { values: Record<string, number | string | boolean>; sha256: string }>\n >;\n}\n\n/** The record profile’s environment object. */\nexport interface RecordEnvironmentSnapshot {\n uptVersion: string;\n node: string;\n formulaParser: string;\n simplifier: boolean;\n peers: Record<string, string | null>;\n constantTables: Record<string, { values: Record<string, number | string | boolean>; sha256: string }>;\n}\n\nfunction canonicalJsonRecord(v: unknown): string {\n if (Array.isArray(v)) return `[${v.map(canonicalJsonRecord).join(',')}]`;\n if (typeof v === 'object' && v !== null) {\n const o = v as Record<string, unknown>;\n return `{${Object.keys(o)\n .filter((k) => o[k] !== undefined)\n .sort()\n .map((k) => `${JSON.stringify(k)}:${canonicalJsonRecord(o[k])}`)\n .join(',')}}`;\n }\n return JSON.stringify(v) as string;\n}\n\nfunction probeCanonicalize(value: unknown): unknown {\n if (value === null || typeof value !== 'object') return value;\n if (value instanceof Date) return value.toISOString();\n if (Array.isArray(value)) {\n return value.map((item) => (item === undefined ? null : probeCanonicalize(item)));\n }\n const obj = value as Record<string, unknown>;\n const sorted: Record<string, unknown> = {};\n for (const key of Object.keys(obj).sort()) {\n const item = obj[key];\n if (item === undefined) continue;\n sorted[key] = probeCanonicalize(item);\n }\n return sorted;\n}\n\nfunction canonicalJsonProbe(value: unknown): string {\n const json = JSON.stringify(probeCanonicalize(value));\n return json === undefined ? 'null' : json;\n}\n\n/**\n * Deterministic JSON for one profile. The default profile is `probe`.\n *\n * @internal\n */\nexport function canonicalJson(value: unknown, profile: JsonProfile = 'probe'): string {\n return profile === 'record' ? canonicalJsonRecord(value) : canonicalJsonProbe(value);\n}\n\n/**\n * SHA-256 digest of `text` as lowercase hex.\n *\n * @internal\n */\nexport function sha256Hex(text: string): string {\n return coreSha256Hex(text);\n}\n\n/**\n * SHA-256 of the probe profile of `value`.\n *\n * @internal\n */\nexport function hashCanonical(value: unknown): string {\n return sha256Hex(canonicalJson(value, 'probe'));\n}\n\nasync function recordEnvironment(sources: RecordEnvironmentSources): Promise<RecordEnvironmentSnapshot> {\n return {\n uptVersion: sources.uptVersion,\n node: sources.node,\n formulaParser: await sources.formulaParser(),\n simplifier: await sources.simplifier(),\n peers: sources.peers(),\n constantTables: await sources.constantTables(),\n };\n}\n\n/**\n * Host fingerprint for a probe run, or the toolchain fingerprint for a record.\n * The zero-argument call is the probe profile.\n *\n * @internal\n */\nexport function captureEnvironment(): EnvironmentFingerprint;\nexport function captureEnvironment(\n profile: 'record',\n sources: RecordEnvironmentSources,\n): Promise<RecordEnvironmentSnapshot>;\nexport function captureEnvironment(\n profile?: 'record',\n sources?: RecordEnvironmentSources,\n): EnvironmentFingerprint | Promise<RecordEnvironmentSnapshot> {\n if (profile === 'record') {\n if (sources === undefined) {\n throw new TypeError('captureEnvironment record profile requires sources');\n }\n return recordEnvironment(sources);\n }\n return {\n node: process.versions.node,\n platform: process.platform,\n arch: process.arch,\n };\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"canonical-prefactors.js","sourceRoot":"","sources":["../../src/composition/canonical-prefactors.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAE/D,sGAAsG;AACtG,MAAM,eAAe,GAAgC,IAAI,GAAG,CAC1D,mBAAmB,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,SAAS,CAAC,KAAK,CAAU,CAAC,CAAC,CAAC,CAC5G,CAAC;AAEF,4EAA4E;AAC5E,MAAM,UAAU,kBAAkB,CAAC,EAAU;IAC3C,OAAO,eAAe,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AACjC,CAAC;AAgBD,kFAAkF;AAClF,MAAM,CAAC,MAAM,0BAA0B,GAAuC,mBAAmB,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAC9G,CAAC,CAAC,cAAc,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC,cAAc,EAAE,CAAC,CAC1E,CAAC;AAEF,kGAAkG;AAClG,MAAM,UAAU,uBAAuB,CAAC,EAAU,EAAE,UAAkB;IACpE,MAAM,CAAC,GAAG,0BAA0B,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;IAC9D,OAAO,CAAC,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,GAAG,UAAU,IAAI,CAAC,CAAC,QAAQ,CAAC;AAChF,CAAC"}
1
+ {"version":3,"file":"canonical-prefactors.js","sourceRoot":"","sources":["../../src/composition/canonical-prefactors.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAE/D,sGAAsG;AACtG,MAAM,eAAe,GAAgC,IAAI,GAAG,CAC1D,mBAAmB,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,SAAS,CAAC,KAAK,CAAU,CAAC,CAAC,CAAC,CAC5G,CAAC;AAEF,4EAA4E;AAC5E,MAAM,UAAU,kBAAkB,CAAC,EAAU;IAC3C,OAAO,eAAe,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AACjC,CAAC;AAgBD,kFAAkF;AAClF,MAAM,CAAC,MAAM,0BAA0B,GAAuC,mBAAmB,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAC9G,CAAC,CAAC,cAAc,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC,cAAc,EAAE,CAAC,CAC1E,CAAC;AAEF,kGAAkG;AAClG,MAAM,UAAU,uBAAuB,CAAC,EAAU,EAAE,UAAkB;IACpE,MAAM,CAAC,GAAG,0BAA0B,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;IAC9D,OAAO,CAAC,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,GAAG,UAAU,IAAI,CAAC,CAAC,QAAQ,CAAC;AAChF,CAAC","sourcesContent":["/**\n * Sourced prefactors of canonical equations, projected from the entries.\n *\n * CE-pendulum-period is a monomial and CE-kinetic-energy's AST is `m·v²`, so a\n * user formula wrong by 2π or ½ could not be caught (persona findings L2, L7).\n * Each entry that records only dimensionally, or only up to a constant, states\n * its exact prefactor as `prefactor` with a verbatim quote and a revision-pinned\n * locator; a test holds that neither its AST nor its monomial carries a constant\n * of its own. The lookups here read those fields; the entry owns the fact, and\n * a caller that wants the quote or the locator reads the entry.\n *\n * A prefactor that depends on a dimensionless group the entry's dimensional\n * record does not carry (CE-sound-speed's √γ) is not a constant: it is the\n * entry's `groupPrefactor`, and `canonicalPrefactor` does not return it. Only\n * a caller that can bind the group uses `canonicalGroupPrefactor`.\n *\n * @module composition/canonical-prefactors\n */\n\nimport { CANONICAL_EQUATIONS } from '../canonical/registry.js';\n\n/** Entry id → the exact factor in front of its AST or monomial, read from the entry's `prefactor`. */\nconst PREFACTOR_BY_ID: ReadonlyMap<string, number> = new Map(\n CANONICAL_EQUATIONS.flatMap((e) => (e.prefactor === undefined ? [] : [[e.id, e.prefactor.value] as const])),\n);\n\n/** The sourced prefactor of a canonical entry, or `undefined`. @internal */\nexport function canonicalPrefactor(id: string): number | undefined {\n return PREFACTOR_BY_ID.get(id);\n}\n\n/**\n * A sourced prefactor that is a power of a dimensionless group: the factor in\n * front of the entry's AST or monomial is `coefficient · group^exponent`. @internal\n */\nexport interface CanonicalGroupPrefactor {\n readonly id: string;\n /** The group as the entry's formula names it (`'gamma'` for γ). */\n readonly group: string;\n readonly coefficient: number;\n readonly exponent: number;\n readonly quote: string;\n readonly locator: string;\n}\n\n/** The sourced group prefactors, one row per entry that records one. @internal */\nexport const CANONICAL_GROUP_PREFACTORS: readonly CanonicalGroupPrefactor[] = CANONICAL_EQUATIONS.flatMap((e) =>\n e.groupPrefactor === undefined ? [] : [{ id: e.id, ...e.groupPrefactor }],\n);\n\n/** The prefactor of a group-dependent entry at a value of its group, or `undefined`. @internal */\nexport function canonicalGroupPrefactor(id: string, groupValue: number): number | undefined {\n const p = CANONICAL_GROUP_PREFACTORS.find((q) => q.id === id);\n return p === undefined ? undefined : p.coefficient * groupValue ** p.exponent;\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"catalog-graph.d.ts","sourceRoot":"","sources":["../../src/composition/catalog-graph.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAKH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAwD5C,wEAAwE;AACxE,eAAO,MAAM,aAAa,EAAE,SAAS,UAAU,EAAsC,CAAC;AAItF,2CAA2C;AAC3C,wBAAgB,WAAW,CAAC,EAAE,EAAE,MAAM,GAAG,UAAU,CAIlD;AAED,yDAAyD;AACzD,wBAAgB,kBAAkB,IAAI;IACpC,QAAQ,CAAC,OAAO,EAAE,UAAU,CAAC;IAC7B,QAAQ,CAAC,QAAQ,EAAE,UAAU,CAAC;IAC9B,QAAQ,CAAC,aAAa,EAAE,UAAU,CAAC;IACnC,QAAQ,CAAC,gBAAgB,EAAE,UAAU,CAAC;CACvC,CAgBA"}
1
+ {"version":3,"file":"catalog-graph.d.ts","sourceRoot":"","sources":["../../src/composition/catalog-graph.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAKH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAkC5C,wEAAwE;AACxE,eAAO,MAAM,aAAa,EAAE,SAAS,UAAU,EAAsC,CAAC;AAItF,2CAA2C;AAC3C,wBAAgB,WAAW,CAAC,EAAE,EAAE,MAAM,GAAG,UAAU,CAIlD;AAED,yDAAyD;AACzD,wBAAgB,kBAAkB,IAAI;IACpC,QAAQ,CAAC,OAAO,EAAE,UAAU,CAAC;IAC7B,QAAQ,CAAC,QAAQ,EAAE,UAAU,CAAC;IAC9B,QAAQ,CAAC,aAAa,EAAE,UAAU,CAAC;IACnC,QAAQ,CAAC,gBAAgB,EAAE,UAAU,CAAC;CACvC,CAgBA"}
@@ -5,30 +5,16 @@
5
5
  */
6
6
  import { catalogEntry, catalogRelations } from '../bridges/catalog-load.js';
7
7
  import { parseCatalogExpression } from '../bridges/expr-parse.js';
8
- import { evaluateCatalogRelation, relationHolds } from '../bridges/relation-eval.js';
8
+ import { evaluateCatalogRelation, relationDomain } from '../bridges/relation-eval.js';
9
9
  import { withBoundAliases } from './edge.js';
10
10
  import { quantityByName } from './quantities.js';
11
- function regimeFor(relation) {
12
- const fromEntry = relation.catalogId === null ? undefined : catalogEntry(relation.catalogId)?.regime;
13
- if (fromEntry !== undefined && relation.regime !== undefined && JSON.stringify(fromEntry) !== JSON.stringify(relation.regime)) {
14
- throw new Error(`catalog ${relation.catalogId} regime disagrees with relation ${relation.id}`);
15
- }
16
- return fromEntry ?? relation.regime;
17
- }
18
- function inherited(relation, field) {
19
- const fromRelation = relation[field];
20
- const entry = relation.catalogId === null ? undefined : catalogEntry(relation.catalogId);
21
- const fromEntry = entry?.[field];
22
- if (fromRelation !== undefined && fromEntry !== undefined && JSON.stringify(fromRelation) !== JSON.stringify(fromEntry)) {
23
- throw new Error(`catalog ${relation.catalogId} ${field} disagrees with relation ${relation.id}`);
24
- }
25
- return fromRelation ?? fromEntry;
26
- }
11
+ /** The catalog row owns the relation contract, the regime, the conventions and the counterexamples; the edge reads them from it. */
27
12
  function buildEdge(relation) {
28
- const regime = regimeFor(relation);
29
- const contract = inherited(relation, 'relation');
30
- const conventions = inherited(relation, 'conventions');
31
- const counterexamples = inherited(relation, 'counterexamples');
13
+ const row = relation.catalogId === null ? undefined : catalogEntry(relation.catalogId);
14
+ const regime = row?.regime;
15
+ const contract = row?.relation;
16
+ const conventions = row?.conventions;
17
+ const counterexamples = row?.counterexamples;
32
18
  const edge = {
33
19
  id: relation.id,
34
20
  beId: relation.catalogId,
@@ -38,10 +24,7 @@ function buildEdge(relation) {
38
24
  ...(Object.keys(relation.aliases).length > 0 ? { aliases: relation.aliases } : {}),
39
25
  target: quantityByName(relation.target),
40
26
  confidence: relation.confidence,
41
- domain: {
42
- description: relation.domain,
43
- predicate: (inputs) => relationHolds(relation, inputs),
44
- },
27
+ domain: relationDomain(relation),
45
28
  evaluate: (inputs) => evaluateCatalogRelation(relation, inputs),
46
29
  symbolic: parseCatalogExpression(relation.expression),
47
30
  citation: relation.citation,
@@ -1 +1 @@
1
- {"version":3,"file":"catalog-graph.js","sourceRoot":"","sources":["../../src/composition/catalog-graph.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAC5E,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAClE,OAAO,EAAE,uBAAuB,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAErF,OAAO,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAC7C,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAEjD,SAAS,SAAS,CAAC,QAAqD;IACtE,MAAM,SAAS,GAAG,QAAQ,CAAC,SAAS,KAAK,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,YAAY,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IACrG,IAAI,SAAS,KAAK,SAAS,IAAI,QAAQ,CAAC,MAAM,KAAK,SAAS,IAAI,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,KAAK,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;QAC9H,MAAM,IAAI,KAAK,CAAC,WAAW,QAAQ,CAAC,SAAS,mCAAmC,QAAQ,CAAC,EAAE,EAAE,CAAC,CAAC;IACjG,CAAC;IACD,OAAO,SAAS,IAAI,QAAQ,CAAC,MAAM,CAAC;AACtC,CAAC;AAED,SAAS,SAAS,CAChB,QAAqD,EACrD,KAAqD;IAErD,MAAM,YAAY,GAAG,QAAQ,CAAC,KAAK,CAAkB,CAAC;IACtD,MAAM,KAAK,GAAG,QAAQ,CAAC,SAAS,KAAK,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,YAAY,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;IACzF,MAAM,SAAS,GAAG,KAAK,EAAE,CAAC,KAAK,CAAkB,CAAC;IAClD,IAAI,YAAY,KAAK,SAAS,IAAI,SAAS,KAAK,SAAS,IAAI,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,KAAK,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,EAAE,CAAC;QACxH,MAAM,IAAI,KAAK,CAAC,WAAW,QAAQ,CAAC,SAAS,IAAI,KAAK,4BAA4B,QAAQ,CAAC,EAAE,EAAE,CAAC,CAAC;IACnG,CAAC;IACD,OAAO,YAAY,IAAI,SAAS,CAAC;AACnC,CAAC;AAED,SAAS,SAAS,CAAC,QAAqD;IACtE,MAAM,MAAM,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAC;IACnC,MAAM,QAAQ,GAAG,SAAS,CAAsC,QAAQ,EAAE,UAAU,CAAC,CAAC;IACtF,MAAM,WAAW,GAAG,SAAS,CAAyC,QAAQ,EAAE,aAAa,CAAC,CAAC;IAC/F,MAAM,eAAe,GAAG,SAAS,CAA6C,QAAQ,EAAE,iBAAiB,CAAC,CAAC;IAC3G,MAAM,IAAI,GAAe;QACvB,EAAE,EAAE,QAAQ,CAAC,EAAE;QACf,IAAI,EAAE,QAAQ,CAAC,SAAS;QACxB,IAAI,EAAE,QAAQ,CAAC,IAAI;QACnB,KAAK,EAAE,QAAQ,CAAC,KAAK;QACrB,OAAO,EAAE,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;QAC7D,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAClF,MAAM,EAAE,cAAc,CAAC,QAAQ,CAAC,MAAM,CAAC;QACvC,UAAU,EAAE,QAAQ,CAAC,UAAU;QAC/B,MAAM,EAAE;YACN,WAAW,EAAE,QAAQ,CAAC,MAAM;YAC5B,SAAS,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,aAAa,CAAC,QAAQ,EAAE,MAAM,CAAC;SACvD;QACD,QAAQ,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,uBAAuB,CAAC,QAAQ,EAAE,MAAM,CAAC;QAC/D,QAAQ,EAAE,sBAAsB,CAAC,QAAQ,CAAC,UAAU,CAAC;QACrD,QAAQ,EAAE,QAAQ,CAAC,QAAQ;QAC3B,GAAG,CAAC,QAAQ,CAAC,gBAAgB,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,gBAAgB,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACzE,GAAG,CAAC,QAAQ,CAAC,cAAc,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,cAAc,EAAE,QAAQ,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC7F,GAAG,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACzD,GAAG,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC3C,GAAG,CAAC,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACrD,GAAG,CAAC,eAAe,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,eAAe,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAC9D,CAAC;IACF,OAAO,gBAAgB,CAAC,IAAI,CAAC,CAAC;AAChC,CAAC;AAED,wEAAwE;AACxE,MAAM,CAAC,MAAM,aAAa,GAA0B,gBAAgB,EAAE,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;AAEtF,MAAM,KAAK,GAAG,IAAI,GAAG,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;AAEpE,2CAA2C;AAC3C,MAAM,UAAU,WAAW,CAAC,EAAU;IACpC,MAAM,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAC3B,IAAI,IAAI,KAAK,SAAS;QAAE,MAAM,IAAI,KAAK,CAAC,yBAAyB,EAAE,GAAG,CAAC,CAAC;IACxE,OAAO,IAAI,CAAC;AACd,CAAC;AAED,yDAAyD;AACzD,MAAM,UAAU,kBAAkB;IAMhC,MAAM,OAAO,GAAG,gBAAgB,EAAE,CAAC,IAAI,CACrC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,MAAM,KAAK,qBAAqB,IAAI,GAAG,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,MAAM,CACvG,CAAC;IACF,MAAM,QAAQ,GAAG,gBAAgB,EAAE,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,MAAM,KAAK,yBAAyB,CAAC,CAAC;IAC5F,MAAM,GAAG,GAAG,gBAAgB,EAAE,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,MAAM,KAAK,qBAAqB,IAAI,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,sBAAsB,CAAC,CAAC,CAAC;IACnI,MAAM,GAAG,GAAG,gBAAgB,EAAE,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,KAAK,KAAK,IAAI,GAAG,CAAC,MAAM,KAAK,sBAAsB,CAAC,CAAC;IAC1G,IAAI,OAAO,KAAK,SAAS,IAAI,QAAQ,KAAK,SAAS,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;QAC9F,MAAM,IAAI,KAAK,CAAC,yDAAyD,CAAC,CAAC;IAC7E,CAAC;IACD,OAAO;QACL,OAAO,EAAE,WAAW,CAAC,OAAO,CAAC,EAAE,CAAC;QAChC,QAAQ,EAAE,WAAW,CAAC,QAAQ,CAAC,EAAE,CAAC;QAClC,aAAa,EAAE,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC;QAClC,gBAAgB,EAAE,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC;KACtC,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"catalog-graph.js","sourceRoot":"","sources":["../../src/composition/catalog-graph.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * The composition graph is the relation projection of the bridge catalog.\n *\n * @module composition/catalog-graph\n */\n\nimport { catalogEntry, catalogRelations } from '../bridges/catalog-load.js';\nimport { parseCatalogExpression } from '../bridges/expr-parse.js';\nimport { evaluateCatalogRelation, relationDomain } from '../bridges/relation-eval.js';\nimport type { BridgeEdge } from './edge.js';\nimport { withBoundAliases } from './edge.js';\nimport { quantityByName } from './quantities.js';\n\n/** The catalog row owns the relation contract, the regime, the conventions and the counterexamples; the edge reads them from it. */\nfunction buildEdge(relation: ReturnType<typeof catalogRelations>[number]): BridgeEdge {\n const row = relation.catalogId === null ? undefined : catalogEntry(relation.catalogId);\n const regime = row?.regime;\n const contract = row?.relation;\n const conventions = row?.conventions;\n const counterexamples = row?.counterexamples;\n const edge: BridgeEdge = {\n id: relation.id,\n beId: relation.catalogId,\n kind: relation.kind,\n label: relation.label,\n sources: relation.sources.map((name) => quantityByName(name)),\n ...(Object.keys(relation.aliases).length > 0 ? { aliases: relation.aliases } : {}),\n target: quantityByName(relation.target),\n confidence: relation.confidence,\n domain: relationDomain(relation),\n evaluate: (inputs) => evaluateCatalogRelation(relation, inputs),\n symbolic: parseCatalogExpression(relation.expression),\n citation: relation.citation,\n ...(relation.coefficientUnset === true ? { coefficientUnset: true } : {}),\n ...(relation.formulaFactors !== undefined ? { formulaFactors: relation.formulaFactors } : {}),\n ...(contract !== undefined ? { relation: contract } : {}),\n ...(regime !== undefined ? { regime } : {}),\n ...(conventions !== undefined ? { conventions } : {}),\n ...(counterexamples !== undefined ? { counterexamples } : {}),\n };\n return withBoundAliases(edge);\n}\n\n/** Every catalog relation as a graph edge, in catalog order. @public */\nexport const CATALOG_GRAPH: readonly BridgeEdge[] = catalogRelations().map(buildEdge);\n\nconst BY_ID = new Map(CATALOG_GRAPH.map((edge) => [edge.id, edge]));\n\n/** The catalog edge with this graph id. */\nexport function catalogEdge(id: string): BridgeEdge {\n const edge = BY_ID.get(id);\n if (edge === undefined) throw new Error(`catalogEdge: no edge '${id}'`);\n return edge;\n}\n\n/** The two composition demonstrations the CLI prints. */\nexport function demonstrationEdges(): {\n readonly hawking: BridgeEdge;\n readonly landauer: BridgeEdge;\n readonly schwarzschild: BridgeEdge;\n readonly hawkingViaRadius: BridgeEdge;\n} {\n const hawking = catalogRelations().find(\n (row) => row.target === 'hawking-temperature' && row.sources.length === 1 && row.sources[0] === 'mass',\n );\n const landauer = catalogRelations().find((row) => row.target === 'landauer-erasure-energy');\n const via = catalogRelations().find((row) => row.target === 'hawking-temperature' && row.sources.includes('schwarzschild-radius'));\n const law = catalogRelations().find((row) => row.kind === 'law' && row.target === 'schwarzschild-radius');\n if (hawking === undefined || landauer === undefined || via === undefined || law === undefined) {\n throw new Error('demonstrationEdges: a demonstration relation is missing');\n }\n return {\n hawking: catalogEdge(hawking.id),\n landauer: catalogEdge(landauer.id),\n schwarzschild: catalogEdge(law.id),\n hawkingViaRadius: catalogEdge(via.id),\n };\n}\n"]}
@@ -28,6 +28,14 @@ export interface ChainCandidate {
28
28
  readonly theorem?: string;
29
29
  readonly id?: string;
30
30
  }
31
+ /**
32
+ * The rank of a class in the four-class order: confirmation 0, restatement
33
+ * 1, unique monomial 2, unfixed shape 3. `chain-result.ts` orders its
34
+ * records by this same function; there is no second copy.
35
+ *
36
+ * @internal
37
+ */
38
+ export declare function chainClassIndex(kind: ChainCandidateKind): number;
31
39
  /**
32
40
  * Shorter chain first, then lexicographic edge ids.
33
41
  *
@@ -38,6 +46,8 @@ export declare function compareChainEdgeIds(left: readonly string[], right: read
38
46
  /**
39
47
  * Total order of chain candidates. Returns a new array of the same
40
48
  * objects. The input array is left as it was.
49
+ *
50
+ * @internal
41
51
  */
42
52
  export declare function orderChainCandidates(candidates: readonly ChainCandidate[]): ChainCandidate[];
43
53
  //# sourceMappingURL=chain-candidate.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"chain-candidate.d.ts","sourceRoot":"","sources":["../../src/composition/chain-candidate.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,gDAAgD;AAChD,MAAM,MAAM,kBAAkB,GAC1B,cAAc,GACd,aAAa,GACb,iBAAiB,GACjB,eAAe,CAAC;AAEpB;;;;;;GAMG;AACH,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,IAAI,EAAE,kBAAkB,CAAC;IAClC,QAAQ,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;IACpC,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC;CACtB;AAeD;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,EAAE,KAAK,EAAE,SAAS,MAAM,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CASjG;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,UAAU,EAAE,SAAS,cAAc,EAAE,GAAG,cAAc,EAAE,CAM5F"}
1
+ {"version":3,"file":"chain-candidate.d.ts","sourceRoot":"","sources":["../../src/composition/chain-candidate.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,gDAAgD;AAChD,MAAM,MAAM,kBAAkB,GAC1B,cAAc,GACd,aAAa,GACb,iBAAiB,GACjB,eAAe,CAAC;AAEpB;;;;;;GAMG;AACH,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,IAAI,EAAE,kBAAkB,CAAC;IAClC,QAAQ,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;IACpC,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC;CACtB;AAED;;;;;;GAMG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,kBAAkB,GAAG,MAAM,CAWhE;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,EAAE,KAAK,EAAE,SAAS,MAAM,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CASjG;AAED;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,UAAU,EAAE,SAAS,cAAc,EAAE,GAAG,cAAc,EAAE,CAM5F"}
@@ -10,7 +10,14 @@
10
10
  * @internal
11
11
  * @module composition/chain-candidate
12
12
  */
13
- function classIndex(kind) {
13
+ /**
14
+ * The rank of a class in the four-class order: confirmation 0, restatement
15
+ * 1, unique monomial 2, unfixed shape 3. `chain-result.ts` orders its
16
+ * records by this same function; there is no second copy.
17
+ *
18
+ * @internal
19
+ */
20
+ export function chainClassIndex(kind) {
14
21
  switch (kind) {
15
22
  case 'confirmation':
16
23
  return 0;
@@ -44,10 +51,12 @@ export function compareChainEdgeIds(left, right) {
44
51
  /**
45
52
  * Total order of chain candidates. Returns a new array of the same
46
53
  * objects. The input array is left as it was.
54
+ *
55
+ * @internal
47
56
  */
48
57
  export function orderChainCandidates(candidates) {
49
58
  return [...candidates].sort((a, b) => {
50
- const byClass = classIndex(a.kind) - classIndex(b.kind);
59
+ const byClass = chainClassIndex(a.kind) - chainClassIndex(b.kind);
51
60
  if (byClass !== 0)
52
61
  return byClass < 0 ? -1 : 1;
53
62
  return compareChainEdgeIds(a.edgeIds, b.edgeIds);
@@ -1 +1 @@
1
- {"version":3,"file":"chain-candidate.js","sourceRoot":"","sources":["../../src/composition/chain-candidate.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AA0BH,SAAS,UAAU,CAAC,IAAwB;IAC1C,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,cAAc;YACjB,OAAO,CAAC,CAAC;QACX,KAAK,aAAa;YAChB,OAAO,CAAC,CAAC;QACX,KAAK,iBAAiB;YACpB,OAAO,CAAC,CAAC;QACX,KAAK,eAAe;YAClB,OAAO,CAAC,CAAC;IACb,CAAC;AACH,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,mBAAmB,CAAC,IAAuB,EAAE,KAAwB;IACnF,IAAI,IAAI,CAAC,MAAM,KAAK,KAAK,CAAC,MAAM;QAAE,OAAO,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC7E,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACrC,MAAM,CAAC,GAAG,IAAI,CAAC,CAAC,CAAW,CAAC;QAC5B,MAAM,CAAC,GAAG,KAAK,CAAC,CAAC,CAAW,CAAC;QAC7B,IAAI,CAAC,GAAG,CAAC;YAAE,OAAO,CAAC,CAAC,CAAC;QACrB,IAAI,CAAC,GAAG,CAAC;YAAE,OAAO,CAAC,CAAC;IACtB,CAAC;IACD,OAAO,CAAC,CAAC;AACX,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,oBAAoB,CAAC,UAAqC;IACxE,OAAO,CAAC,GAAG,UAAU,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;QACnC,MAAM,OAAO,GAAG,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QACxD,IAAI,OAAO,KAAK,CAAC;YAAE,OAAO,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC/C,OAAO,mBAAmB,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC;IACnD,CAAC,CAAC,CAAC;AACL,CAAC"}
1
+ {"version":3,"file":"chain-candidate.js","sourceRoot":"","sources":["../../src/composition/chain-candidate.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AA0BH;;;;;;GAMG;AACH,MAAM,UAAU,eAAe,CAAC,IAAwB;IACtD,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,cAAc;YACjB,OAAO,CAAC,CAAC;QACX,KAAK,aAAa;YAChB,OAAO,CAAC,CAAC;QACX,KAAK,iBAAiB;YACpB,OAAO,CAAC,CAAC;QACX,KAAK,eAAe;YAClB,OAAO,CAAC,CAAC;IACb,CAAC;AACH,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,mBAAmB,CAAC,IAAuB,EAAE,KAAwB;IACnF,IAAI,IAAI,CAAC,MAAM,KAAK,KAAK,CAAC,MAAM;QAAE,OAAO,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC7E,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACrC,MAAM,CAAC,GAAG,IAAI,CAAC,CAAC,CAAW,CAAC;QAC5B,MAAM,CAAC,GAAG,KAAK,CAAC,CAAC,CAAW,CAAC;QAC7B,IAAI,CAAC,GAAG,CAAC;YAAE,OAAO,CAAC,CAAC,CAAC;QACrB,IAAI,CAAC,GAAG,CAAC;YAAE,OAAO,CAAC,CAAC;IACtB,CAAC;IACD,OAAO,CAAC,CAAC;AACX,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,oBAAoB,CAAC,UAAqC;IACxE,OAAO,CAAC,GAAG,UAAU,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;QACnC,MAAM,OAAO,GAAG,eAAe,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,eAAe,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QAClE,IAAI,OAAO,KAAK,CAAC;YAAE,OAAO,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC/C,OAAO,mBAAmB,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC;IACnD,CAAC,CAAC,CAAC;AACL,CAAC","sourcesContent":["/**\n * A chain candidate and the order the pipeline reads candidates in.\n *\n * Confirmation of a catalog id, then a restatement, then a unique\n * monomial, then a named PhysJS.Dimensional shape that leaves a\n * function or an exponent unfixed. A shorter chain comes before a\n * longer one. Equal lengths compare the ordered edge ids from the\n * left. Nothing here is written into the catalog.\n *\n * @internal\n * @module composition/chain-candidate\n */\n\n/** The four classes the order distinguishes. */\nexport type ChainCandidateKind =\n | 'confirmation'\n | 'restatement'\n | 'unique-monomial'\n | 'unfixed-shape';\n\n/**\n * One survivor of a chain of proved edges.\n *\n * `kind` and `edgeIds` are the order. `catalogId`, `canonicalId`,\n * `restatesBridge`, `theorem`, and `id` are carried data and are not\n * compared.\n */\nexport interface ChainCandidate {\n readonly kind: ChainCandidateKind;\n readonly edgeIds: readonly string[];\n readonly catalogId?: number;\n readonly canonicalId?: string;\n readonly restatesBridge?: string;\n readonly theorem?: string;\n readonly id?: string;\n}\n\n/**\n * The rank of a class in the four-class order: confirmation 0, restatement\n * 1, unique monomial 2, unfixed shape 3. `chain-result.ts` orders its\n * records by this same function; there is no second copy.\n *\n * @internal\n */\nexport function chainClassIndex(kind: ChainCandidateKind): number {\n switch (kind) {\n case 'confirmation':\n return 0;\n case 'restatement':\n return 1;\n case 'unique-monomial':\n return 2;\n case 'unfixed-shape':\n return 3;\n }\n}\n\n/**\n * Shorter chain first, then lexicographic edge ids.\n *\n * The regime-mismatch list uses this same comparison. It is not a class\n * inside {@link orderChainCandidates}.\n */\nexport function compareChainEdgeIds(left: readonly string[], right: readonly string[]): -1 | 0 | 1 {\n if (left.length !== right.length) return left.length < right.length ? -1 : 1;\n for (let i = 0; i < left.length; i++) {\n const a = left[i] as string;\n const b = right[i] as string;\n if (a < b) return -1;\n if (a > b) return 1;\n }\n return 0;\n}\n\n/**\n * Total order of chain candidates. Returns a new array of the same\n * objects. The input array is left as it was.\n *\n * @internal\n */\nexport function orderChainCandidates(candidates: readonly ChainCandidate[]): ChainCandidate[] {\n return [...candidates].sort((a, b) => {\n const byClass = chainClassIndex(a.kind) - chainClassIndex(b.kind);\n if (byClass !== 0) return byClass < 0 ? -1 : 1;\n return compareChainEdgeIds(a.edgeIds, b.edgeIds);\n });\n}\n"]}
@@ -1,9 +1,12 @@
1
1
  /**
2
2
  * Pipeline match for a chain of proved edges.
3
3
  *
4
- * Calls {@link classifyStructure}. A confirmation reports the catalog id.
5
- * A restatement reports the pre-declared canonical equation. Anything else
6
- * is a provisional `chain-` id. This function writes no catalog row, no
4
+ * Calls {@link classifyStructure} with the algebraic-equivalence step
5
+ * injected, so a chain that recovers a catalog right-hand side in another
6
+ * spelling (`a/(b/c)` for `a·c/b`) is that confirmation and not a
7
+ * provisional chain. A confirmation reports the catalog id. A restatement
8
+ * reports the pre-declared canonical equation. Anything else is a
9
+ * provisional `chain-` id. This function writes no catalog row, no
7
10
  * formal-reference overlay entry, and no evidence tag.
8
11
  *
9
12
  * @module composition/chain-match
@@ -1 +1 @@
1
- {"version":3,"file":"chain-match.d.ts","sourceRoot":"","sources":["../../src/composition/chain-match.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAC;AAC5D,OAAO,EAEL,KAAK,mBAAmB,EACzB,MAAM,4BAA4B,CAAC;AAEpC;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,MAAM,EAAE,GAAG,mBAAmB,CAE1F"}
1
+ {"version":3,"file":"chain-match.d.ts","sourceRoot":"","sources":["../../src/composition/chain-match.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AACH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAC;AAC5D,OAAO,EAEL,KAAK,mBAAmB,EACzB,MAAM,4BAA4B,CAAC;AAMpC;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,MAAM,EAAE,GAAG,mBAAmB,CAE1F"}