universal-physics-tensor 10.0.0 → 12.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 (835) hide show
  1. package/README.md +39 -36
  2. package/bin/upt.mjs +13 -1
  3. package/data/applied-cases.json +1892 -0
  4. package/data/applied-cases.schema.json +194 -0
  5. package/data/atlas/atlas.json +25 -25
  6. package/data/atlas/atlas.jsonld +1 -1
  7. package/data/atlas/diffusion.json +6 -6
  8. package/data/atlas/oscillators.json +7 -7
  9. package/data/atlas/waves.json +14 -14
  10. package/data/atlas/witness-results.json +11 -11
  11. package/data/bridge-catalog.json +389 -230
  12. package/data/bridge-catalog.schema.json +45 -7
  13. package/data/units.json +6 -25
  14. package/dist/atlas/applicability.d.ts.map +1 -1
  15. package/dist/atlas/applicability.js +21 -15
  16. package/dist/atlas/applicability.js.map +1 -1
  17. package/dist/atlas/benchmark/hybrid-retrieval.d.ts +9 -1
  18. package/dist/atlas/benchmark/hybrid-retrieval.d.ts.map +1 -1
  19. package/dist/atlas/benchmark/hybrid-retrieval.js +15 -13
  20. package/dist/atlas/benchmark/hybrid-retrieval.js.map +1 -1
  21. package/dist/atlas/benchmark/loader.js +2 -2
  22. package/dist/atlas/benchmark/loader.js.map +1 -1
  23. package/dist/atlas/benchmark/stats.d.ts +2 -2
  24. package/dist/atlas/benchmark/stats.d.ts.map +1 -1
  25. package/dist/atlas/benchmark/stats.js +9 -15
  26. package/dist/atlas/benchmark/stats.js.map +1 -1
  27. package/dist/atlas/catalog-formal-ref.d.ts +26 -3
  28. package/dist/atlas/catalog-formal-ref.d.ts.map +1 -1
  29. package/dist/atlas/catalog-formal-ref.js +52 -5
  30. package/dist/atlas/catalog-formal-ref.js.map +1 -1
  31. package/dist/atlas/chain-pipeline.d.ts.map +1 -1
  32. package/dist/atlas/chain-pipeline.js +7 -8
  33. package/dist/atlas/chain-pipeline.js.map +1 -1
  34. package/dist/atlas/diffusion/bridges-closure.d.ts +0 -4
  35. package/dist/atlas/diffusion/bridges-closure.d.ts.map +1 -1
  36. package/dist/atlas/diffusion/bridges-closure.js +8 -12
  37. package/dist/atlas/diffusion/bridges-closure.js.map +1 -1
  38. package/dist/atlas/diffusion/bridges.d.ts.map +1 -1
  39. package/dist/atlas/diffusion/bridges.js +27 -39
  40. package/dist/atlas/diffusion/bridges.js.map +1 -1
  41. package/dist/atlas/diffusion/dimensions.d.ts +6 -14
  42. package/dist/atlas/diffusion/dimensions.d.ts.map +1 -1
  43. package/dist/atlas/diffusion/dimensions.js +8 -16
  44. package/dist/atlas/diffusion/dimensions.js.map +1 -1
  45. package/dist/atlas/diffusion/models.d.ts +3 -3
  46. package/dist/atlas/diffusion/models.d.ts.map +1 -1
  47. package/dist/atlas/diffusion/models.js +5 -10
  48. package/dist/atlas/diffusion/models.js.map +1 -1
  49. package/dist/atlas/diffusion/numerics.d.ts +16 -4
  50. package/dist/atlas/diffusion/numerics.d.ts.map +1 -1
  51. package/dist/atlas/diffusion/numerics.js +38 -24
  52. package/dist/atlas/diffusion/numerics.js.map +1 -1
  53. package/dist/atlas/link-prediction.d.ts +106 -3
  54. package/dist/atlas/link-prediction.d.ts.map +1 -1
  55. package/dist/atlas/link-prediction.js +212 -66
  56. package/dist/atlas/link-prediction.js.map +1 -1
  57. package/dist/atlas/oscillators/bridges-coarse.d.ts.map +1 -1
  58. package/dist/atlas/oscillators/bridges-coarse.js +7 -11
  59. package/dist/atlas/oscillators/bridges-coarse.js.map +1 -1
  60. package/dist/atlas/oscillators/bridges-exact.d.ts.map +1 -1
  61. package/dist/atlas/oscillators/bridges-exact.js +6 -7
  62. package/dist/atlas/oscillators/bridges-exact.js.map +1 -1
  63. package/dist/atlas/oscillators/bridges-limits.d.ts +3 -16
  64. package/dist/atlas/oscillators/bridges-limits.d.ts.map +1 -1
  65. package/dist/atlas/oscillators/bridges-limits.js +23 -34
  66. package/dist/atlas/oscillators/bridges-limits.js.map +1 -1
  67. package/dist/atlas/oscillators/dimensions.d.ts +9 -21
  68. package/dist/atlas/oscillators/dimensions.d.ts.map +1 -1
  69. package/dist/atlas/oscillators/dimensions.js +9 -21
  70. package/dist/atlas/oscillators/dimensions.js.map +1 -1
  71. package/dist/atlas/oscillators/limit-witnesses.d.ts +2 -2
  72. package/dist/atlas/oscillators/limit-witnesses.d.ts.map +1 -1
  73. package/dist/atlas/oscillators/limit-witnesses.js +17 -15
  74. package/dist/atlas/oscillators/limit-witnesses.js.map +1 -1
  75. package/dist/atlas/oscillators/models.d.ts.map +1 -1
  76. package/dist/atlas/oscillators/models.js +2 -6
  77. package/dist/atlas/oscillators/models.js.map +1 -1
  78. package/dist/atlas/oscillators/pendulum-motion.d.ts +29 -6
  79. package/dist/atlas/oscillators/pendulum-motion.d.ts.map +1 -1
  80. package/dist/atlas/oscillators/pendulum-motion.js +60 -40
  81. package/dist/atlas/oscillators/pendulum-motion.js.map +1 -1
  82. package/dist/atlas/oscillators/phase-translation.d.ts +0 -11
  83. package/dist/atlas/oscillators/phase-translation.d.ts.map +1 -1
  84. package/dist/atlas/oscillators/phase-translation.js +3 -4
  85. package/dist/atlas/oscillators/phase-translation.js.map +1 -1
  86. package/dist/atlas/oscillators/position-translation.d.ts +68 -7
  87. package/dist/atlas/oscillators/position-translation.d.ts.map +1 -1
  88. package/dist/atlas/oscillators/position-translation.js +123 -12
  89. package/dist/atlas/oscillators/position-translation.js.map +1 -1
  90. package/dist/atlas/oscillators/rejections.d.ts +0 -2
  91. package/dist/atlas/oscillators/rejections.d.ts.map +1 -1
  92. package/dist/atlas/oscillators/rejections.js +0 -7
  93. package/dist/atlas/oscillators/rejections.js.map +1 -1
  94. package/dist/atlas/physjs-entries.generated.d.ts +35 -25
  95. package/dist/atlas/physjs-entries.generated.d.ts.map +1 -1
  96. package/dist/atlas/physjs-entries.generated.js +37 -25
  97. package/dist/atlas/physjs-entries.generated.js.map +1 -1
  98. package/dist/atlas/physjs-ref.d.ts +34 -31
  99. package/dist/atlas/physjs-ref.d.ts.map +1 -1
  100. package/dist/atlas/physjs-ref.js +55 -53
  101. package/dist/atlas/physjs-ref.js.map +1 -1
  102. package/dist/atlas/physjs-reviewed.d.ts +1 -1
  103. package/dist/atlas/physjs-reviewed.js +15 -15
  104. package/dist/atlas/physjs-reviewed.js.map +1 -1
  105. package/dist/atlas/poster/statements.d.ts +0 -19
  106. package/dist/atlas/poster/statements.d.ts.map +1 -1
  107. package/dist/atlas/poster/statements.js +1 -1
  108. package/dist/atlas/poster/statements.js.map +1 -1
  109. package/dist/atlas/proof-target.d.ts +1 -1
  110. package/dist/atlas/proof-target.js +1 -1
  111. package/dist/atlas/proof-target.js.map +1 -1
  112. package/dist/atlas/regime.d.ts +1 -1
  113. package/dist/atlas/regime.d.ts.map +1 -1
  114. package/dist/atlas/regime.js +1 -1
  115. package/dist/atlas/regime.js.map +1 -1
  116. package/dist/atlas/text-overlap.d.ts +23 -0
  117. package/dist/atlas/text-overlap.d.ts.map +1 -0
  118. package/dist/atlas/text-overlap.js +41 -0
  119. package/dist/atlas/text-overlap.js.map +1 -0
  120. package/dist/atlas/waves/bridges-closure.d.ts.map +1 -1
  121. package/dist/atlas/waves/bridges-closure.js +2 -6
  122. package/dist/atlas/waves/bridges-closure.js.map +1 -1
  123. package/dist/atlas/waves/bridges.d.ts.map +1 -1
  124. package/dist/atlas/waves/bridges.js +32 -48
  125. package/dist/atlas/waves/bridges.js.map +1 -1
  126. package/dist/atlas/waves/models.d.ts +5 -6
  127. package/dist/atlas/waves/models.d.ts.map +1 -1
  128. package/dist/atlas/waves/models.js +7 -13
  129. package/dist/atlas/waves/models.js.map +1 -1
  130. package/dist/atlas/waves/numerics.d.ts.map +1 -1
  131. package/dist/atlas/waves/numerics.js +10 -3
  132. package/dist/atlas/waves/numerics.js.map +1 -1
  133. package/dist/atlas/witness-numeric.d.ts +30 -0
  134. package/dist/atlas/witness-numeric.d.ts.map +1 -1
  135. package/dist/atlas/witness-numeric.js +53 -0
  136. package/dist/atlas/witness-numeric.js.map +1 -1
  137. package/dist/atlas/witness-specs.d.ts.map +1 -1
  138. package/dist/atlas/witness-specs.js +19 -0
  139. package/dist/atlas/witness-specs.js.map +1 -1
  140. package/dist/atlas/witness-symbolic.d.ts +75 -3
  141. package/dist/atlas/witness-symbolic.d.ts.map +1 -1
  142. package/dist/atlas/witness-symbolic.js +116 -10
  143. package/dist/atlas/witness-symbolic.js.map +1 -1
  144. package/dist/bridges/catalog-load.d.ts.map +1 -1
  145. package/dist/bridges/catalog-load.js +13 -8
  146. package/dist/bridges/catalog-load.js.map +1 -1
  147. package/dist/bridges/catalog-types.d.ts +26 -2
  148. package/dist/bridges/catalog-types.d.ts.map +1 -1
  149. package/dist/bridges/catalog-types.js +11 -1
  150. package/dist/bridges/catalog-types.js.map +1 -1
  151. package/dist/bridges/evaluation-errors.d.ts +31 -1
  152. package/dist/bridges/evaluation-errors.d.ts.map +1 -1
  153. package/dist/bridges/evaluation-errors.js +20 -2
  154. package/dist/bridges/evaluation-errors.js.map +1 -1
  155. package/dist/bridges/evaluator-inputs.d.ts.map +1 -1
  156. package/dist/bridges/evaluator-inputs.js +7 -5
  157. package/dist/bridges/evaluator-inputs.js.map +1 -1
  158. package/dist/bridges/evaluators.d.ts.map +1 -1
  159. package/dist/bridges/evaluators.js +27 -12
  160. package/dist/bridges/evaluators.js.map +1 -1
  161. package/dist/bridges/expr-parse.d.ts +11 -0
  162. package/dist/bridges/expr-parse.d.ts.map +1 -1
  163. package/dist/bridges/expr-parse.js +14 -5
  164. package/dist/bridges/expr-parse.js.map +1 -1
  165. package/dist/bridges/holds.d.ts +35 -3
  166. package/dist/bridges/holds.d.ts.map +1 -1
  167. package/dist/bridges/holds.js +117 -23
  168. package/dist/bridges/holds.js.map +1 -1
  169. package/dist/bridges/notices.d.ts.map +1 -1
  170. package/dist/bridges/notices.js +5 -5
  171. package/dist/bridges/notices.js.map +1 -1
  172. package/dist/bridges/relation-eval.d.ts +4 -4
  173. package/dist/bridges/relation-eval.d.ts.map +1 -1
  174. package/dist/bridges/relation-eval.js +15 -16
  175. package/dist/bridges/relation-eval.js.map +1 -1
  176. package/dist/bridges/sensitivity.d.ts.map +1 -1
  177. package/dist/bridges/sensitivity.js +3 -3
  178. package/dist/bridges/sensitivity.js.map +1 -1
  179. package/dist/bridges/validity.d.ts +33 -0
  180. package/dist/bridges/validity.d.ts.map +1 -0
  181. package/dist/bridges/validity.js +67 -0
  182. package/dist/bridges/validity.js.map +1 -0
  183. package/dist/canonical/entries/atomic.js +1 -3
  184. package/dist/canonical/entries/atomic.js.map +1 -1
  185. package/dist/canonical/entries/condensed-matter.d.ts.map +1 -1
  186. package/dist/canonical/entries/condensed-matter.js +4 -5
  187. package/dist/canonical/entries/condensed-matter.js.map +1 -1
  188. package/dist/canonical/entries/dimensional-classics.d.ts.map +1 -1
  189. package/dist/canonical/entries/dimensional-classics.js +3 -4
  190. package/dist/canonical/entries/dimensional-classics.js.map +1 -1
  191. package/dist/canonical/entries/electromagnetism.d.ts.map +1 -1
  192. package/dist/canonical/entries/electromagnetism.js +4 -10
  193. package/dist/canonical/entries/electromagnetism.js.map +1 -1
  194. package/dist/canonical/entries/fluids-waves.d.ts.map +1 -1
  195. package/dist/canonical/entries/fluids-waves.js +3 -7
  196. package/dist/canonical/entries/fluids-waves.js.map +1 -1
  197. package/dist/canonical/entries/mechanics.d.ts.map +1 -1
  198. package/dist/canonical/entries/mechanics.js +4 -6
  199. package/dist/canonical/entries/mechanics.js.map +1 -1
  200. package/dist/canonical/entries/nonmonomial.d.ts.map +1 -1
  201. package/dist/canonical/entries/nonmonomial.js +9 -17
  202. package/dist/canonical/entries/nonmonomial.js.map +1 -1
  203. package/dist/canonical/entries/relativity.d.ts.map +1 -1
  204. package/dist/canonical/entries/relativity.js +6 -6
  205. package/dist/canonical/entries/relativity.js.map +1 -1
  206. package/dist/canonical/entries/thermo-nuclear-cosmo.d.ts.map +1 -1
  207. package/dist/canonical/entries/thermo-nuclear-cosmo.js +6 -10
  208. package/dist/canonical/entries/thermo-nuclear-cosmo.js.map +1 -1
  209. package/dist/canonical/fixed-points.d.ts +94 -0
  210. package/dist/canonical/fixed-points.d.ts.map +1 -0
  211. package/dist/canonical/fixed-points.js +81 -0
  212. package/dist/canonical/fixed-points.js.map +1 -0
  213. package/dist/canonical/linkage.d.ts.map +1 -1
  214. package/dist/canonical/linkage.js +25 -44
  215. package/dist/canonical/linkage.js.map +1 -1
  216. package/dist/canonical/normal-form.d.ts.map +1 -1
  217. package/dist/canonical/normal-form.js +5 -11
  218. package/dist/canonical/normal-form.js.map +1 -1
  219. package/dist/canonical/structural.d.ts +21 -21
  220. package/dist/canonical/structural.d.ts.map +1 -1
  221. package/dist/canonical/structural.js +40 -19
  222. package/dist/canonical/structural.js.map +1 -1
  223. package/dist/cases/catalog-checks.d.ts +10 -0
  224. package/dist/cases/catalog-checks.d.ts.map +1 -0
  225. package/dist/cases/catalog-checks.js +241 -0
  226. package/dist/cases/catalog-checks.js.map +1 -0
  227. package/dist/cases/catalog.d.ts +83 -0
  228. package/dist/cases/catalog.d.ts.map +1 -0
  229. package/dist/cases/catalog.js +118 -0
  230. package/dist/cases/catalog.js.map +1 -0
  231. package/dist/cases/engine.d.ts +13 -0
  232. package/dist/cases/engine.d.ts.map +1 -0
  233. package/dist/cases/engine.js +179 -0
  234. package/dist/cases/engine.js.map +1 -0
  235. package/dist/cases/index.d.ts.map +1 -1
  236. package/dist/cases/index.js +5 -7
  237. package/dist/cases/index.js.map +1 -1
  238. package/dist/cases/methods.d.ts +215 -0
  239. package/dist/cases/methods.d.ts.map +1 -0
  240. package/dist/cases/methods.js +743 -0
  241. package/dist/cases/methods.js.map +1 -0
  242. package/dist/cases/quadrature.d.ts +7 -9
  243. package/dist/cases/quadrature.d.ts.map +1 -1
  244. package/dist/cases/quadrature.js +28 -32
  245. package/dist/cases/quadrature.js.map +1 -1
  246. package/dist/cases/types.d.ts +12 -0
  247. package/dist/cases/types.d.ts.map +1 -1
  248. package/dist/cases/types.js.map +1 -1
  249. package/dist/cli/args.d.ts +25 -1
  250. package/dist/cli/args.d.ts.map +1 -1
  251. package/dist/cli/args.js +30 -8
  252. package/dist/cli/args.js.map +1 -1
  253. package/dist/cli/bindings.d.ts.map +1 -1
  254. package/dist/cli/bindings.js +5 -4
  255. package/dist/cli/bindings.js.map +1 -1
  256. package/dist/cli/command.d.ts +11 -1
  257. package/dist/cli/command.d.ts.map +1 -1
  258. package/dist/cli/command.js.map +1 -1
  259. package/dist/cli/commands/_atlas-map.d.ts +0 -9
  260. package/dist/cli/commands/_atlas-map.d.ts.map +1 -1
  261. package/dist/cli/commands/_atlas-map.js +8 -18
  262. package/dist/cli/commands/_atlas-map.js.map +1 -1
  263. package/dist/cli/commands/_atlas-route.d.ts.map +1 -1
  264. package/dist/cli/commands/_atlas-route.js +6 -2
  265. package/dist/cli/commands/_atlas-route.js.map +1 -1
  266. package/dist/cli/commands/_discovery-opts.d.ts +1 -0
  267. package/dist/cli/commands/_discovery-opts.d.ts.map +1 -1
  268. package/dist/cli/commands/_discovery-opts.js +9 -9
  269. package/dist/cli/commands/_discovery-opts.js.map +1 -1
  270. package/dist/cli/commands/atlas.d.ts.map +1 -1
  271. package/dist/cli/commands/atlas.js +8 -5
  272. package/dist/cli/commands/atlas.js.map +1 -1
  273. package/dist/cli/commands/audit.d.ts.map +1 -1
  274. package/dist/cli/commands/audit.js +8 -1
  275. package/dist/cli/commands/audit.js.map +1 -1
  276. package/dist/cli/commands/axes.d.ts.map +1 -1
  277. package/dist/cli/commands/axes.js +20 -1
  278. package/dist/cli/commands/axes.js.map +1 -1
  279. package/dist/cli/commands/confront.d.ts.map +1 -1
  280. package/dist/cli/commands/confront.js +8 -14
  281. package/dist/cli/commands/confront.js.map +1 -1
  282. package/dist/cli/commands/derive.d.ts.map +1 -1
  283. package/dist/cli/commands/derive.js +22 -22
  284. package/dist/cli/commands/derive.js.map +1 -1
  285. package/dist/cli/commands/discover.d.ts.map +1 -1
  286. package/dist/cli/commands/discover.js +122 -73
  287. package/dist/cli/commands/discover.js.map +1 -1
  288. package/dist/cli/commands/eval.d.ts.map +1 -1
  289. package/dist/cli/commands/eval.js +1 -0
  290. package/dist/cli/commands/eval.js.map +1 -1
  291. package/dist/cli/commands/evaluate.d.ts.map +1 -1
  292. package/dist/cli/commands/evaluate.js +67 -39
  293. package/dist/cli/commands/evaluate.js.map +1 -1
  294. package/dist/cli/commands/explain.d.ts.map +1 -1
  295. package/dist/cli/commands/explain.js +24 -3
  296. package/dist/cli/commands/explain.js.map +1 -1
  297. package/dist/cli/commands/ground.d.ts.map +1 -1
  298. package/dist/cli/commands/ground.js +7 -1
  299. package/dist/cli/commands/ground.js.map +1 -1
  300. package/dist/cli/commands/map.d.ts.map +1 -1
  301. package/dist/cli/commands/map.js +84 -11
  302. package/dist/cli/commands/map.js.map +1 -1
  303. package/dist/cli/commands/metric.d.ts.map +1 -1
  304. package/dist/cli/commands/metric.js +12 -9
  305. package/dist/cli/commands/metric.js.map +1 -1
  306. package/dist/cli/commands/path.d.ts +10 -0
  307. package/dist/cli/commands/path.d.ts.map +1 -1
  308. package/dist/cli/commands/path.js +25 -3
  309. package/dist/cli/commands/path.js.map +1 -1
  310. package/dist/cli/commands/probe.d.ts.map +1 -1
  311. package/dist/cli/commands/probe.js +59 -16
  312. package/dist/cli/commands/probe.js.map +1 -1
  313. package/dist/cli/commands/regime.d.ts.map +1 -1
  314. package/dist/cli/commands/regime.js +1 -0
  315. package/dist/cli/commands/regime.js.map +1 -1
  316. package/dist/cli/commands/retrieve.d.ts.map +1 -1
  317. package/dist/cli/commands/retrieve.js +1 -0
  318. package/dist/cli/commands/retrieve.js.map +1 -1
  319. package/dist/cli/commands/search.d.ts.map +1 -1
  320. package/dist/cli/commands/search.js +1 -0
  321. package/dist/cli/commands/search.js.map +1 -1
  322. package/dist/cli/commands/symbolic.d.ts.map +1 -1
  323. package/dist/cli/commands/symbolic.js +19 -28
  324. package/dist/cli/commands/symbolic.js.map +1 -1
  325. package/dist/cli/commands/testplan.d.ts.map +1 -1
  326. package/dist/cli/commands/testplan.js +4 -2
  327. package/dist/cli/commands/testplan.js.map +1 -1
  328. package/dist/cli/determination.d.ts +1 -0
  329. package/dist/cli/determination.d.ts.map +1 -1
  330. package/dist/cli/determination.js.map +1 -1
  331. package/dist/cli/expr-print.d.ts +0 -2
  332. package/dist/cli/expr-print.d.ts.map +1 -1
  333. package/dist/cli/expr-print.js +7 -31
  334. package/dist/cli/expr-print.js.map +1 -1
  335. package/dist/cli/flag-help.d.ts +1 -0
  336. package/dist/cli/flag-help.d.ts.map +1 -1
  337. package/dist/cli/flag-help.js +1 -0
  338. package/dist/cli/flag-help.js.map +1 -1
  339. package/dist/cli/graphs.d.ts +2 -0
  340. package/dist/cli/graphs.d.ts.map +1 -1
  341. package/dist/cli/graphs.js +1 -0
  342. package/dist/cli/graphs.js.map +1 -1
  343. package/dist/cli/main.d.ts +8 -0
  344. package/dist/cli/main.d.ts.map +1 -1
  345. package/dist/cli/main.js +19 -3
  346. package/dist/cli/main.js.map +1 -1
  347. package/dist/cli/numeric-flag.d.ts +12 -0
  348. package/dist/cli/numeric-flag.d.ts.map +1 -0
  349. package/dist/cli/numeric-flag.js +44 -0
  350. package/dist/cli/numeric-flag.js.map +1 -0
  351. package/dist/cli/output.d.ts +28 -0
  352. package/dist/cli/output.d.ts.map +1 -1
  353. package/dist/cli/output.js +23 -0
  354. package/dist/cli/output.js.map +1 -1
  355. package/dist/cli/record-reach.js +2 -2
  356. package/dist/cli/record-reach.js.map +1 -1
  357. package/dist/cli/record-tables.d.ts.map +1 -1
  358. package/dist/cli/record-tables.js +6 -5
  359. package/dist/cli/record-tables.js.map +1 -1
  360. package/dist/cli/record.d.ts +1 -5
  361. package/dist/cli/record.d.ts.map +1 -1
  362. package/dist/cli/record.js +9 -8
  363. package/dist/cli/record.js.map +1 -1
  364. package/dist/cli/search-index.d.ts.map +1 -1
  365. package/dist/cli/search-index.js +7 -6
  366. package/dist/cli/search-index.js.map +1 -1
  367. package/dist/cli/statuses.d.ts +0 -2
  368. package/dist/cli/statuses.d.ts.map +1 -1
  369. package/dist/cli/statuses.js +12 -9
  370. package/dist/cli/statuses.js.map +1 -1
  371. package/dist/cli/stored-results.d.ts +7 -0
  372. package/dist/cli/stored-results.d.ts.map +1 -0
  373. package/dist/cli/stored-results.js +23 -0
  374. package/dist/cli/stored-results.js.map +1 -0
  375. package/dist/cli/version.d.ts +1 -0
  376. package/dist/cli/version.d.ts.map +1 -1
  377. package/dist/cli/version.js +8 -5
  378. package/dist/cli/version.js.map +1 -1
  379. package/dist/cli-api.d.ts +36 -5
  380. package/dist/cli-api.d.ts.map +1 -1
  381. package/dist/cli-api.js +30 -4
  382. package/dist/cli-api.js.map +1 -1
  383. package/dist/composition/algebraic-equivalence.d.ts +43 -0
  384. package/dist/composition/algebraic-equivalence.d.ts.map +1 -0
  385. package/dist/composition/algebraic-equivalence.js +115 -0
  386. package/dist/composition/algebraic-equivalence.js.map +1 -0
  387. package/dist/composition/axes.d.ts +0 -6
  388. package/dist/composition/axes.d.ts.map +1 -1
  389. package/dist/composition/axes.js +6 -6
  390. package/dist/composition/axes.js.map +1 -1
  391. package/dist/composition/axis-audit.d.ts +47 -20
  392. package/dist/composition/axis-audit.d.ts.map +1 -1
  393. package/dist/composition/axis-audit.js +82 -9
  394. package/dist/composition/axis-audit.js.map +1 -1
  395. package/dist/composition/bridge-analysis.d.ts +17 -0
  396. package/dist/composition/bridge-analysis.d.ts.map +1 -1
  397. package/dist/composition/bridge-analysis.js +102 -55
  398. package/dist/composition/bridge-analysis.js.map +1 -1
  399. package/dist/composition/canonical-compare.d.ts +40 -0
  400. package/dist/composition/canonical-compare.d.ts.map +1 -1
  401. package/dist/composition/canonical-compare.js +122 -24
  402. package/dist/composition/canonical-compare.js.map +1 -1
  403. package/dist/composition/canonical-graph.d.ts +3 -3
  404. package/dist/composition/canonical-graph.d.ts.map +1 -1
  405. package/dist/composition/canonical-graph.js +11 -38
  406. package/dist/composition/canonical-graph.js.map +1 -1
  407. package/dist/composition/canonical-json.js +2 -2
  408. package/dist/composition/canonical-json.js.map +1 -1
  409. package/dist/composition/catalog-graph.d.ts.map +1 -1
  410. package/dist/composition/catalog-graph.js +2 -5
  411. package/dist/composition/catalog-graph.js.map +1 -1
  412. package/dist/composition/chain-candidate.d.ts +8 -0
  413. package/dist/composition/chain-candidate.d.ts.map +1 -1
  414. package/dist/composition/chain-candidate.js +9 -2
  415. package/dist/composition/chain-candidate.js.map +1 -1
  416. package/dist/composition/chain-match.d.ts +6 -3
  417. package/dist/composition/chain-match.d.ts.map +1 -1
  418. package/dist/composition/chain-match.js +4 -1
  419. package/dist/composition/chain-match.js.map +1 -1
  420. package/dist/composition/chain-result.d.ts.map +1 -1
  421. package/dist/composition/chain-result.js +2 -14
  422. package/dist/composition/chain-result.js.map +1 -1
  423. package/dist/composition/compose-symbolic.d.ts.map +1 -1
  424. package/dist/composition/compose-symbolic.js +3 -2
  425. package/dist/composition/compose-symbolic.js.map +1 -1
  426. package/dist/composition/compose.d.ts.map +1 -1
  427. package/dist/composition/compose.js +13 -5
  428. package/dist/composition/compose.js.map +1 -1
  429. package/dist/composition/composition-recovery.d.ts.map +1 -1
  430. package/dist/composition/composition-recovery.js +4 -7
  431. package/dist/composition/composition-recovery.js.map +1 -1
  432. package/dist/composition/consequence.d.ts +15 -5
  433. package/dist/composition/consequence.d.ts.map +1 -1
  434. package/dist/composition/consequence.js +6 -4
  435. package/dist/composition/consequence.js.map +1 -1
  436. package/dist/composition/discovery.d.ts +129 -9
  437. package/dist/composition/discovery.d.ts.map +1 -1
  438. package/dist/composition/discovery.js +171 -67
  439. package/dist/composition/discovery.js.map +1 -1
  440. package/dist/composition/edge.d.ts +21 -2
  441. package/dist/composition/edge.d.ts.map +1 -1
  442. package/dist/composition/edge.js +23 -1
  443. package/dist/composition/edge.js.map +1 -1
  444. package/dist/composition/enumerate.d.ts.map +1 -1
  445. package/dist/composition/enumerate.js +18 -3
  446. package/dist/composition/enumerate.js.map +1 -1
  447. package/dist/composition/evaluate-relation.d.ts +35 -11
  448. package/dist/composition/evaluate-relation.d.ts.map +1 -1
  449. package/dist/composition/evaluate-relation.js +60 -39
  450. package/dist/composition/evaluate-relation.js.map +1 -1
  451. package/dist/composition/explain.d.ts +3 -12
  452. package/dist/composition/explain.d.ts.map +1 -1
  453. package/dist/composition/explain.js +7 -20
  454. package/dist/composition/explain.js.map +1 -1
  455. package/dist/composition/expr-eval.d.ts +1 -1
  456. package/dist/composition/expr-eval.d.ts.map +1 -1
  457. package/dist/composition/expr-eval.js +6 -15
  458. package/dist/composition/expr-eval.js.map +1 -1
  459. package/dist/composition/expr-simplify.d.ts +26 -14
  460. package/dist/composition/expr-simplify.d.ts.map +1 -1
  461. package/dist/composition/expr-simplify.js +64 -72
  462. package/dist/composition/expr-simplify.js.map +1 -1
  463. package/dist/composition/formula-shape.d.ts +23 -4
  464. package/dist/composition/formula-shape.d.ts.map +1 -1
  465. package/dist/composition/formula-shape.js +57 -17
  466. package/dist/composition/formula-shape.js.map +1 -1
  467. package/dist/composition/graph-structure.d.ts +98 -0
  468. package/dist/composition/graph-structure.d.ts.map +1 -0
  469. package/dist/composition/graph-structure.js +167 -0
  470. package/dist/composition/graph-structure.js.map +1 -0
  471. package/dist/composition/graph-viz-svg.d.ts.map +1 -1
  472. package/dist/composition/graph-viz-svg.js +1 -1
  473. package/dist/composition/graph-viz-svg.js.map +1 -1
  474. package/dist/composition/graph-viz.d.ts.map +1 -1
  475. package/dist/composition/graph-viz.js +8 -37
  476. package/dist/composition/graph-viz.js.map +1 -1
  477. package/dist/composition/grounding.d.ts.map +1 -1
  478. package/dist/composition/grounding.js +19 -7
  479. package/dist/composition/grounding.js.map +1 -1
  480. package/dist/composition/identifiability.d.ts +91 -4
  481. package/dist/composition/identifiability.d.ts.map +1 -1
  482. package/dist/composition/identifiability.js +363 -6
  483. package/dist/composition/identifiability.js.map +1 -1
  484. package/dist/composition/index.d.ts +8 -4
  485. package/dist/composition/index.d.ts.map +1 -1
  486. package/dist/composition/index.js +3 -2
  487. package/dist/composition/index.js.map +1 -1
  488. package/dist/composition/mathts-quiet.d.ts +7 -8
  489. package/dist/composition/mathts-quiet.d.ts.map +1 -1
  490. package/dist/composition/mathts-quiet.js +7 -16
  491. package/dist/composition/mathts-quiet.js.map +1 -1
  492. package/dist/composition/mathts-scalar-symbols.d.ts.map +1 -1
  493. package/dist/composition/mathts-scalar-symbols.js +2 -1
  494. package/dist/composition/mathts-scalar-symbols.js.map +1 -1
  495. package/dist/composition/own-equation-magnitude.d.ts +95 -0
  496. package/dist/composition/own-equation-magnitude.d.ts.map +1 -0
  497. package/dist/composition/own-equation-magnitude.js +270 -0
  498. package/dist/composition/own-equation-magnitude.js.map +1 -0
  499. package/dist/composition/probe/backend-protocol.d.ts +3 -0
  500. package/dist/composition/probe/backend-protocol.d.ts.map +1 -1
  501. package/dist/composition/probe/backend-protocol.js.map +1 -1
  502. package/dist/composition/probe/candidate-store.d.ts +1 -0
  503. package/dist/composition/probe/candidate-store.d.ts.map +1 -1
  504. package/dist/composition/probe/candidate-store.js +1 -0
  505. package/dist/composition/probe/candidate-store.js.map +1 -1
  506. package/dist/composition/probe/corpus.d.ts +8 -4
  507. package/dist/composition/probe/corpus.d.ts.map +1 -1
  508. package/dist/composition/probe/corpus.js +23 -12
  509. package/dist/composition/probe/corpus.js.map +1 -1
  510. package/dist/composition/probe/dataset.d.ts +18 -0
  511. package/dist/composition/probe/dataset.d.ts.map +1 -1
  512. package/dist/composition/probe/dataset.js +95 -50
  513. package/dist/composition/probe/dataset.js.map +1 -1
  514. package/dist/composition/probe/experiment-design.d.ts +7 -1
  515. package/dist/composition/probe/experiment-design.d.ts.map +1 -1
  516. package/dist/composition/probe/experiment-design.js +44 -24
  517. package/dist/composition/probe/experiment-design.js.map +1 -1
  518. package/dist/composition/probe/falsify.d.ts +2 -0
  519. package/dist/composition/probe/falsify.d.ts.map +1 -1
  520. package/dist/composition/probe/falsify.js +2 -0
  521. package/dist/composition/probe/falsify.js.map +1 -1
  522. package/dist/composition/probe/fit.d.ts +7 -0
  523. package/dist/composition/probe/fit.d.ts.map +1 -1
  524. package/dist/composition/probe/fit.js +46 -22
  525. package/dist/composition/probe/fit.js.map +1 -1
  526. package/dist/composition/probe/frontier.d.ts.map +1 -1
  527. package/dist/composition/probe/frontier.js +33 -15
  528. package/dist/composition/probe/frontier.js.map +1 -1
  529. package/dist/composition/probe/generator.d.ts +30 -1
  530. package/dist/composition/probe/generator.d.ts.map +1 -1
  531. package/dist/composition/probe/generator.js +58 -36
  532. package/dist/composition/probe/generator.js.map +1 -1
  533. package/dist/composition/probe/index.d.ts +14 -0
  534. package/dist/composition/probe/index.d.ts.map +1 -1
  535. package/dist/composition/probe/index.js +6 -0
  536. package/dist/composition/probe/index.js.map +1 -1
  537. package/dist/composition/probe/limits.d.ts +25 -1
  538. package/dist/composition/probe/limits.d.ts.map +1 -1
  539. package/dist/composition/probe/limits.js +53 -11
  540. package/dist/composition/probe/limits.js.map +1 -1
  541. package/dist/composition/probe/pipeline.d.ts +5 -0
  542. package/dist/composition/probe/pipeline.d.ts.map +1 -1
  543. package/dist/composition/probe/pipeline.js +73 -24
  544. package/dist/composition/probe/pipeline.js.map +1 -1
  545. package/dist/composition/probe/power-law.d.ts +121 -0
  546. package/dist/composition/probe/power-law.d.ts.map +1 -0
  547. package/dist/composition/probe/power-law.js +251 -0
  548. package/dist/composition/probe/power-law.js.map +1 -0
  549. package/dist/composition/probe/problem.d.ts +8 -4
  550. package/dist/composition/probe/problem.d.ts.map +1 -1
  551. package/dist/composition/probe/problem.js +177 -49
  552. package/dist/composition/probe/problem.js.map +1 -1
  553. package/dist/composition/probe/report.js +1 -1
  554. package/dist/composition/probe/report.js.map +1 -1
  555. package/dist/composition/probe/residual.d.ts +7 -1
  556. package/dist/composition/probe/residual.d.ts.map +1 -1
  557. package/dist/composition/probe/residual.js +10 -7
  558. package/dist/composition/probe/residual.js.map +1 -1
  559. package/dist/composition/probe/run-manifest.d.ts +1 -0
  560. package/dist/composition/probe/run-manifest.d.ts.map +1 -1
  561. package/dist/composition/probe/run-manifest.js.map +1 -1
  562. package/dist/composition/probe/scalar-search.d.ts +50 -0
  563. package/dist/composition/probe/scalar-search.d.ts.map +1 -0
  564. package/dist/composition/probe/scalar-search.js +169 -0
  565. package/dist/composition/probe/scalar-search.js.map +1 -0
  566. package/dist/composition/probe/scoring.d.ts +1 -0
  567. package/dist/composition/probe/scoring.d.ts.map +1 -1
  568. package/dist/composition/probe/scoring.js.map +1 -1
  569. package/dist/composition/probe/structure.d.ts +82 -17
  570. package/dist/composition/probe/structure.d.ts.map +1 -1
  571. package/dist/composition/probe/structure.js +129 -55
  572. package/dist/composition/probe/structure.js.map +1 -1
  573. package/dist/composition/probe/study.d.ts +31 -9
  574. package/dist/composition/probe/study.d.ts.map +1 -1
  575. package/dist/composition/probe/study.js +235 -184
  576. package/dist/composition/probe/study.js.map +1 -1
  577. package/dist/composition/probe/t-tail.d.ts +16 -0
  578. package/dist/composition/probe/t-tail.d.ts.map +1 -0
  579. package/dist/composition/probe/t-tail.js +29 -0
  580. package/dist/composition/probe/t-tail.js.map +1 -0
  581. package/dist/composition/probe/types.d.ts +3 -0
  582. package/dist/composition/probe/types.d.ts.map +1 -1
  583. package/dist/composition/probe/types.js.map +1 -1
  584. package/dist/composition/proposed-bridges.d.ts +52 -12
  585. package/dist/composition/proposed-bridges.d.ts.map +1 -1
  586. package/dist/composition/proposed-bridges.js +107 -60
  587. package/dist/composition/proposed-bridges.js.map +1 -1
  588. package/dist/composition/quantity-clusters.d.ts +48 -0
  589. package/dist/composition/quantity-clusters.d.ts.map +1 -0
  590. package/dist/composition/quantity-clusters.js +98 -0
  591. package/dist/composition/quantity-clusters.js.map +1 -0
  592. package/dist/composition/rational-exponent.d.ts +40 -0
  593. package/dist/composition/rational-exponent.d.ts.map +1 -0
  594. package/dist/composition/rational-exponent.js +65 -0
  595. package/dist/composition/rational-exponent.js.map +1 -0
  596. package/dist/composition/representative-values.d.ts +22 -0
  597. package/dist/composition/representative-values.d.ts.map +1 -1
  598. package/dist/composition/representative-values.js +29 -0
  599. package/dist/composition/representative-values.js.map +1 -1
  600. package/dist/composition/retrodiction.d.ts +15 -0
  601. package/dist/composition/retrodiction.d.ts.map +1 -1
  602. package/dist/composition/retrodiction.js +12 -4
  603. package/dist/composition/retrodiction.js.map +1 -1
  604. package/dist/composition/user-equation.d.ts +1 -0
  605. package/dist/composition/user-equation.d.ts.map +1 -1
  606. package/dist/composition/user-equation.js +3 -2
  607. package/dist/composition/user-equation.js.map +1 -1
  608. package/dist/core/assignment.d.ts +19 -0
  609. package/dist/core/assignment.d.ts.map +1 -0
  610. package/dist/core/assignment.js +19 -0
  611. package/dist/core/assignment.js.map +1 -0
  612. package/dist/core/compare.d.ts +32 -0
  613. package/dist/core/compare.d.ts.map +1 -0
  614. package/dist/core/compare.js +46 -0
  615. package/dist/core/compare.js.map +1 -0
  616. package/dist/core/constants.d.ts +42 -41
  617. package/dist/core/constants.d.ts.map +1 -1
  618. package/dist/core/constants.js +71 -51
  619. package/dist/core/constants.js.map +1 -1
  620. package/dist/core/data-file.d.ts +7 -0
  621. package/dist/core/data-file.d.ts.map +1 -1
  622. package/dist/core/data-file.js +17 -0
  623. package/dist/core/data-file.js.map +1 -1
  624. package/dist/core/format.d.ts +36 -0
  625. package/dist/core/format.d.ts.map +1 -0
  626. package/dist/core/format.js +39 -0
  627. package/dist/core/format.js.map +1 -0
  628. package/dist/core/hash.d.ts +14 -0
  629. package/dist/core/hash.d.ts.map +1 -0
  630. package/dist/core/hash.js +17 -0
  631. package/dist/core/hash.js.map +1 -0
  632. package/dist/core/json-schema.d.ts +2 -0
  633. package/dist/core/json-schema.d.ts.map +1 -1
  634. package/dist/core/json-schema.js +14 -13
  635. package/dist/core/json-schema.js.map +1 -1
  636. package/dist/core/labeled-tensor.d.ts.map +1 -1
  637. package/dist/core/labeled-tensor.js +0 -8
  638. package/dist/core/labeled-tensor.js.map +1 -1
  639. package/dist/core/mathts-read.d.ts +25 -0
  640. package/dist/core/mathts-read.d.ts.map +1 -0
  641. package/dist/core/mathts-read.js +51 -0
  642. package/dist/core/mathts-read.js.map +1 -0
  643. package/dist/core/tensor.d.ts.map +1 -1
  644. package/dist/core/tensor.js +24 -0
  645. package/dist/core/tensor.js.map +1 -1
  646. package/dist/core/types.d.ts +5 -5
  647. package/dist/diff/bridge-ast-gradient.d.ts +27 -23
  648. package/dist/diff/bridge-ast-gradient.d.ts.map +1 -1
  649. package/dist/diff/bridge-ast-gradient.js +75 -173
  650. package/dist/diff/bridge-ast-gradient.js.map +1 -1
  651. package/dist/diff/bridge-gradient.d.ts +19 -6
  652. package/dist/diff/bridge-gradient.d.ts.map +1 -1
  653. package/dist/diff/bridge-gradient.js +19 -11
  654. package/dist/diff/bridge-gradient.js.map +1 -1
  655. package/dist/diff/bridge-specs.d.ts.map +1 -1
  656. package/dist/diff/bridge-specs.js +3 -0
  657. package/dist/diff/bridge-specs.js.map +1 -1
  658. package/dist/dimensional/algebra.d.ts +18 -0
  659. package/dist/dimensional/algebra.d.ts.map +1 -1
  660. package/dist/dimensional/algebra.js +41 -1
  661. package/dist/dimensional/algebra.js.map +1 -1
  662. package/dist/dimensional/ast-builders.d.ts +7 -0
  663. package/dist/dimensional/ast-builders.d.ts.map +1 -1
  664. package/dist/dimensional/ast-builders.js +11 -0
  665. package/dist/dimensional/ast-builders.js.map +1 -1
  666. package/dist/dimensional/ast-leaves.d.ts +81 -0
  667. package/dist/dimensional/ast-leaves.d.ts.map +1 -0
  668. package/dist/dimensional/ast-leaves.js +146 -0
  669. package/dist/dimensional/ast-leaves.js.map +1 -0
  670. package/dist/dimensional/ast-types.d.ts +15 -0
  671. package/dist/dimensional/ast-types.d.ts.map +1 -1
  672. package/dist/dimensional/ast-types.js.map +1 -1
  673. package/dist/dimensional/buckingham.d.ts.map +1 -1
  674. package/dist/dimensional/buckingham.js +15 -27
  675. package/dist/dimensional/buckingham.js.map +1 -1
  676. package/dist/dimensional/constant-rows.js +9 -9
  677. package/dist/dimensional/constant-rows.js.map +1 -1
  678. package/dist/dimensional/curvature-composite.d.ts +1 -1
  679. package/dist/dimensional/curvature-composite.js.map +1 -1
  680. package/dist/dimensional/dimension-inference.d.ts.map +1 -1
  681. package/dist/dimensional/dimension-inference.js +1 -2
  682. package/dist/dimensional/dimension-inference.js.map +1 -1
  683. package/dist/dimensional/errors.d.ts +1 -1
  684. package/dist/dimensional/errors.d.ts.map +1 -1
  685. package/dist/dimensional/errors.js +1 -15
  686. package/dist/dimensional/errors.js.map +1 -1
  687. package/dist/dimensional/exact-scale.d.ts +24 -11
  688. package/dist/dimensional/exact-scale.d.ts.map +1 -1
  689. package/dist/dimensional/exact-scale.js +122 -130
  690. package/dist/dimensional/exact-scale.js.map +1 -1
  691. package/dist/dimensional/gauge-field.d.ts.map +1 -1
  692. package/dist/dimensional/gauge-field.js +2 -2
  693. package/dist/dimensional/gauge-field.js.map +1 -1
  694. package/dist/dimensional/hyphen-names.d.ts +12 -2
  695. package/dist/dimensional/hyphen-names.d.ts.map +1 -1
  696. package/dist/dimensional/hyphen-names.js +44 -19
  697. package/dist/dimensional/hyphen-names.js.map +1 -1
  698. package/dist/dimensional/mathts-unit-delegation.d.ts +29 -0
  699. package/dist/dimensional/mathts-unit-delegation.d.ts.map +1 -0
  700. package/dist/dimensional/mathts-unit-delegation.js +187 -0
  701. package/dist/dimensional/mathts-unit-delegation.js.map +1 -0
  702. package/dist/dimensional/mathts-unit-wrapper.d.ts +33 -0
  703. package/dist/dimensional/mathts-unit-wrapper.d.ts.map +1 -0
  704. package/dist/dimensional/mathts-unit-wrapper.js +190 -0
  705. package/dist/dimensional/mathts-unit-wrapper.js.map +1 -0
  706. package/dist/dimensional/metric.d.ts.map +1 -1
  707. package/dist/dimensional/metric.js +0 -1
  708. package/dist/dimensional/metric.js.map +1 -1
  709. package/dist/dimensional/scalar-lowering.d.ts +21 -0
  710. package/dist/dimensional/scalar-lowering.d.ts.map +1 -0
  711. package/dist/dimensional/scalar-lowering.js +45 -0
  712. package/dist/dimensional/scalar-lowering.js.map +1 -0
  713. package/dist/dimensional/symbolic-constants.d.ts +9 -0
  714. package/dist/dimensional/symbolic-constants.d.ts.map +1 -1
  715. package/dist/dimensional/symbolic-constants.js +13 -1
  716. package/dist/dimensional/symbolic-constants.js.map +1 -1
  717. package/dist/dimensional/types.d.ts +36 -0
  718. package/dist/dimensional/types.d.ts.map +1 -1
  719. package/dist/dimensional/types.js +45 -7
  720. package/dist/dimensional/types.js.map +1 -1
  721. package/dist/dimensional/unit-data.d.ts +5 -1
  722. package/dist/dimensional/unit-data.d.ts.map +1 -1
  723. package/dist/dimensional/unit-data.js +30 -6
  724. package/dist/dimensional/unit-data.js.map +1 -1
  725. package/dist/dimensional/units.d.ts +2 -0
  726. package/dist/dimensional/units.d.ts.map +1 -1
  727. package/dist/dimensional/units.js +59 -3
  728. package/dist/dimensional/units.js.map +1 -1
  729. package/dist/dimensional/validator.d.ts +2 -0
  730. package/dist/dimensional/validator.d.ts.map +1 -1
  731. package/dist/dimensional/validator.js.map +1 -1
  732. package/dist/index.d.ts +9 -3
  733. package/dist/index.d.ts.map +1 -1
  734. package/dist/index.js +10 -4
  735. package/dist/index.js.map +1 -1
  736. package/dist/numerical/christoffel-flat.d.ts.map +1 -1
  737. package/dist/numerical/christoffel-flat.js +3 -2
  738. package/dist/numerical/christoffel-flat.js.map +1 -1
  739. package/dist/numerical/connection-lowering-helpers.d.ts +3 -1
  740. package/dist/numerical/connection-lowering-helpers.d.ts.map +1 -1
  741. package/dist/numerical/connection-lowering-helpers.js +11 -15
  742. package/dist/numerical/connection-lowering-helpers.js.map +1 -1
  743. package/dist/numerical/covariant-eikonal.d.ts.map +1 -1
  744. package/dist/numerical/covariant-eikonal.js +34 -11
  745. package/dist/numerical/covariant-eikonal.js.map +1 -1
  746. package/dist/numerical/curvature-lowering-helpers.js +3 -2
  747. package/dist/numerical/curvature-lowering-helpers.js.map +1 -1
  748. package/dist/numerical/errors.d.ts.map +1 -1
  749. package/dist/numerical/errors.js +0 -3
  750. package/dist/numerical/errors.js.map +1 -1
  751. package/dist/numerical/finite-difference.d.ts +22 -0
  752. package/dist/numerical/finite-difference.d.ts.map +1 -0
  753. package/dist/numerical/finite-difference.js +27 -0
  754. package/dist/numerical/finite-difference.js.map +1 -0
  755. package/dist/numerical/geodesic-integrator.d.ts.map +1 -1
  756. package/dist/numerical/geodesic-integrator.js +22 -14
  757. package/dist/numerical/geodesic-integrator.js.map +1 -1
  758. package/dist/numerical/geometrized.d.ts.map +1 -1
  759. package/dist/numerical/geometrized.js +0 -1
  760. package/dist/numerical/geometrized.js.map +1 -1
  761. package/dist/numerical/mathts-engine.d.ts.map +1 -1
  762. package/dist/numerical/mathts-engine.js +10 -24
  763. package/dist/numerical/mathts-engine.js.map +1 -1
  764. package/dist/numerical/metric-inverse.d.ts.map +1 -1
  765. package/dist/numerical/metric-inverse.js +83 -46
  766. package/dist/numerical/metric-inverse.js.map +1 -1
  767. package/dist/numerical/null-ray-integrator.d.ts +2 -1
  768. package/dist/numerical/null-ray-integrator.d.ts.map +1 -1
  769. package/dist/numerical/null-ray-integrator.js +12 -12
  770. package/dist/numerical/null-ray-integrator.js.map +1 -1
  771. package/dist/numerical/painleve-gullstrand-metric.js +2 -2
  772. package/dist/numerical/painleve-gullstrand-metric.js.map +1 -1
  773. package/dist/numerical/pderiv.d.ts.map +1 -1
  774. package/dist/numerical/pderiv.js +2 -6
  775. package/dist/numerical/pderiv.js.map +1 -1
  776. package/dist/numerical/perihelion-finder.d.ts +0 -36
  777. package/dist/numerical/perihelion-finder.d.ts.map +1 -1
  778. package/dist/numerical/perihelion-finder.js +41 -87
  779. package/dist/numerical/perihelion-finder.js.map +1 -1
  780. package/dist/numerical/quadrature.d.ts.map +1 -1
  781. package/dist/numerical/quadrature.js +11 -13
  782. package/dist/numerical/quadrature.js.map +1 -1
  783. package/dist/numerical/rk4-trajectory.d.ts +10 -0
  784. package/dist/numerical/rk4-trajectory.d.ts.map +1 -0
  785. package/dist/numerical/rk4-trajectory.js +37 -0
  786. package/dist/numerical/rk4-trajectory.js.map +1 -0
  787. package/dist/numerical/schwarzschild.d.ts +14 -0
  788. package/dist/numerical/schwarzschild.d.ts.map +1 -0
  789. package/dist/numerical/schwarzschild.js +17 -0
  790. package/dist/numerical/schwarzschild.js.map +1 -0
  791. package/dist/numerical/spacetime-metrics.d.ts +12 -0
  792. package/dist/numerical/spacetime-metrics.d.ts.map +1 -1
  793. package/dist/numerical/spacetime-metrics.js +72 -56
  794. package/dist/numerical/spacetime-metrics.js.map +1 -1
  795. package/dist/numerical/statistics.d.ts +24 -0
  796. package/dist/numerical/statistics.d.ts.map +1 -0
  797. package/dist/numerical/statistics.js +52 -0
  798. package/dist/numerical/statistics.js.map +1 -0
  799. package/dist/numerical/strides.d.ts +3 -2
  800. package/dist/numerical/strides.d.ts.map +1 -1
  801. package/dist/numerical/strides.js +3 -10
  802. package/dist/numerical/strides.js.map +1 -1
  803. package/dist/numerical/tensor-engine.d.ts +21 -0
  804. package/dist/numerical/tensor-engine.d.ts.map +1 -1
  805. package/dist/numerical/tensor-engine.js +12 -0
  806. package/dist/numerical/tensor-engine.js.map +1 -1
  807. package/dist/relations/regime.d.ts +10 -0
  808. package/dist/relations/regime.d.ts.map +1 -1
  809. package/dist/relations/regime.js +18 -1
  810. package/dist/relations/regime.js.map +1 -1
  811. package/package.json +9 -12
  812. package/dist/cases/brownian-sphere.d.ts +0 -68
  813. package/dist/cases/brownian-sphere.d.ts.map +0 -1
  814. package/dist/cases/brownian-sphere.js +0 -354
  815. package/dist/cases/brownian-sphere.js.map +0 -1
  816. package/dist/cases/damped-resonator.d.ts +0 -23
  817. package/dist/cases/damped-resonator.d.ts.map +0 -1
  818. package/dist/cases/damped-resonator.js +0 -224
  819. package/dist/cases/damped-resonator.js.map +0 -1
  820. package/dist/cases/kepler-rv.d.ts +0 -13
  821. package/dist/cases/kepler-rv.d.ts.map +0 -1
  822. package/dist/cases/kepler-rv.js +0 -172
  823. package/dist/cases/kepler-rv.js.map +0 -1
  824. package/dist/cases/lumped-cooling.d.ts +0 -46
  825. package/dist/cases/lumped-cooling.d.ts.map +0 -1
  826. package/dist/cases/lumped-cooling.js +0 -261
  827. package/dist/cases/lumped-cooling.js.map +0 -1
  828. package/dist/cases/resistor-noise.d.ts +0 -14
  829. package/dist/cases/resistor-noise.d.ts.map +0 -1
  830. package/dist/cases/resistor-noise.js +0 -215
  831. package/dist/cases/resistor-noise.js.map +0 -1
  832. package/dist/cases/skin-depth.d.ts +0 -21
  833. package/dist/cases/skin-depth.d.ts.map +0 -1
  834. package/dist/cases/skin-depth.js +0 -174
  835. package/dist/cases/skin-depth.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/composition/probe/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/composition/probe/index.ts"],"names":[],"mappings":"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"}
@@ -18,6 +18,8 @@ export { scalarDiscrepancy, rmse, ResidualError } from './residual.js';
18
18
  export { openManifest, closeManifest } from './run-manifest.js';
19
19
  export { canTransition, applyStatus, statusRank, ProbeCandidateStore } from './candidate-store.js';
20
20
  export { monomialToExpr, generateNative } from './generator.js';
21
+ /** The rational power law over the π-groups, and the log-design rank the frontier reads. */
22
+ export { powerLawDetermination, powerLawWording, rationalizeExponent, piStructure, logDesign, logDesignRank } from './power-law.js';
21
23
  export { wrapRelationLinkGaps, wrapConnectorGaps, wrapRegimeGaps, scanFrontier, findFrontierGap, problemFromResidualGap, } from './frontier.js';
22
24
  export { expressionSearchGaps, scanWithExpressionGaps } from './expression-gaps.js';
23
25
  export { fitPrefactor } from './fit.js';
@@ -26,8 +28,12 @@ export { compareToCorpus, corpusRelativeWording } from './corpus.js';
26
28
  export { checkDeclaredLimit, checkDeclaredLimits } from './limits.js';
27
29
  export { runFalsification, DEFAULT_BATTERIES } from './falsify.js';
28
30
  export { datasetFromRows, asDatasetSafe, loadDatasetFromJson, loadSplitDatasetsFromJson, loadDatasetFromCsv, loadSplitCsv, } from './dataset.js';
31
+ /** The strict cell reader (a finite number or a decimal string, never a coercion) and the error a dataset raises by row and column. */
32
+ export { readDatasetNumber, DatasetError } from './dataset.js';
29
33
  export { suggestDiscriminatingPoint, parseDesignBounds } from './experiment-design.js';
30
34
  export { detectMeanChangepoint, estimateScaleExponent, probeConservation, } from './structure.js';
35
+ /** The direct two-sided Student t tail the probes consume instead of MathTS's `2·(1 − CDF)`. */
36
+ export { studentTwoSidedP } from './t-tail.js';
31
37
  export { runBackendWorker } from './backend-protocol.js';
32
38
  export { setRelationMetadata, getRelationMetadata, listRelationMetadata, clearRelationMetadata, } from './metadata.js';
33
39
  /** The problem-file readers and the error a file that is not a problem file raises, naming its field. */
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/composition/probe/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EACL,cAAc,EACd,oBAAoB,EACpB,qBAAqB,GACtB,MAAM,YAAY,CAAC;AAyCpB,OAAO,EAAE,aAAa,EAAE,SAAS,EAAE,aAAa,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AACnG,OAAO,EAAE,UAAU,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAEpF,OAAO,EACL,cAAc,EACd,aAAa,EACb,cAAc,EACd,aAAa,EACb,YAAY,EACZ,eAAe,GAChB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,iBAAiB,EAAE,IAAI,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AACvE,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAChE,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,UAAU,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AACnG,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAEhE,OAAO,EACL,oBAAoB,EACpB,iBAAiB,EACjB,cAAc,EACd,YAAY,EACZ,eAAe,EACf,sBAAsB,GACvB,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,oBAAoB,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AACpF,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAExC,OAAO,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE1D,OAAO,EAAE,eAAe,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AAErE,OAAO,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAEtE,OAAO,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAEnE,OAAO,EACL,eAAe,EACf,aAAa,EACb,mBAAmB,EACnB,yBAAyB,EACzB,kBAAkB,EAClB,YAAY,GACb,MAAM,cAAc,CAAC;AAEtB,OAAO,EAAE,0BAA0B,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAEvF,OAAO,EACL,qBAAqB,EACrB,qBAAqB,EACrB,iBAAiB,GAClB,MAAM,gBAAgB,CAAC;AAExB,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAEzD,OAAO,EACL,mBAAmB,EACnB,mBAAmB,EACnB,oBAAoB,EACpB,qBAAqB,GACtB,MAAM,eAAe,CAAC;AACvB,yGAAyG;AACzG,OAAO,EAAE,eAAe,EAAE,yBAAyB,EAAE,qBAAqB,EAAE,uBAAuB,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAE3J,sEAAsE;AACtE,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAE/D,OAAO,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AACvF,OAAO,EACL,UAAU,EACV,iBAAiB,EACjB,aAAa,EACb,iBAAiB,EACjB,aAAa,EACb,aAAa,EACb,gBAAgB,EAChB,iBAAiB,EACjB,SAAS,EACT,cAAc,EACd,YAAY,GACb,MAAM,YAAY,CAAC","sourcesContent":["/**\n * Experimental Product B barrel — expression / residual search.\n *\n * Import via `universal-physics-tensor/probe`. Not re-exported from the\n * root `universal-physics-tensor` entry. Orthogonal to Product A\n * (`upt discover` / `VettedCandidate`).\n *\n * All symbols are `@internal`: the subpath exists for CLI and experiments,\n * not as a stability contract.\n *\n * @module composition/probe\n */\n\nexport {\n SCHEMA_VERSION,\n PROBE_SCHEMA_VERSION,\n DEFAULT_SEARCH_BUDGET,\n} from './types.js';\nexport type {\n ProbeCandidateStatus,\n RelationKind,\n AuditState,\n DiscrepancyKind,\n DatasetRole,\n SearchStopReason,\n FrontierGapKind,\n IdentifiabilityKind,\n SearchBudget,\n DiscrepancyDefinition,\n ScientificRelationRef,\n IdentifiabilityAssessment,\n SearchabilityAssessment,\n GapEvidence,\n FrontierGap,\n ProbeCandidateOrigin,\n ProbeCandidateBody,\n StatusEvent,\n CandidateFingerprint,\n ComplexityMetrics,\n ProbeCandidateRecord,\n ProbeRejectionRecord,\n DiscoveryBackendDescriptor,\n EnvironmentFingerprint,\n NondeterminismSource,\n DiscoveryRunManifest,\n DimensionalVariableRef,\n ObservationRow,\n ProbeDataset,\n SearchProblem,\n ScoreVector,\n EvidenceAssessment,\n EvidenceProfile,\n DeclaredLimit,\n FalsificationBattery,\n FalsificationRecord,\n ScientificRelationRecord,\n} from './types.js';\n\nexport { canonicalJson, sha256Hex, hashCanonical, captureEnvironment } from '../canonical-json.js';\nexport { openBudget, budgetStopReason, canEmitCandidate } from './search-budget.js';\nexport type { BudgetState } from './search-budget.js';\nexport {\n bodyExpression,\n countAstNodes,\n countOperators,\n maxPowerOrder,\n complexityOf,\n fingerprintExpr,\n} from './fingerprint.js';\nexport { scalarDiscrepancy, rmse, ResidualError } from './residual.js';\nexport { openManifest, closeManifest } from './run-manifest.js';\nexport { canTransition, applyStatus, statusRank, ProbeCandidateStore } from './candidate-store.js';\nexport { monomialToExpr, generateNative } from './generator.js';\nexport type { RawCandidate } from './generator.js';\nexport {\n wrapRelationLinkGaps,\n wrapConnectorGaps,\n wrapRegimeGaps,\n scanFrontier,\n findFrontierGap,\n problemFromResidualGap,\n} from './frontier.js';\nexport { expressionSearchGaps, scanWithExpressionGaps } from './expression-gaps.js';\nexport { fitPrefactor } from './fit.js';\nexport type { FitResult } from './fit.js';\nexport { scoreCandidate, rankPareto } from './scoring.js';\nexport type { RankedCandidate } from './scoring.js';\nexport { compareToCorpus, corpusRelativeWording } from './corpus.js';\nexport type { CorpusMatch, CorpusComparisonResult } from './corpus.js';\nexport { checkDeclaredLimit, checkDeclaredLimits } from './limits.js';\nexport type { LimitCheckResult } from './limits.js';\nexport { runFalsification, DEFAULT_BATTERIES } from './falsify.js';\nexport type { FalsifyInput, FalsifyResult } from './falsify.js';\nexport {\n datasetFromRows,\n asDatasetSafe,\n loadDatasetFromJson,\n loadSplitDatasetsFromJson,\n loadDatasetFromCsv,\n loadSplitCsv,\n} from './dataset.js';\nexport type { SplitFileDatasets } from './dataset.js';\nexport { suggestDiscriminatingPoint, parseDesignBounds } from './experiment-design.js';\nexport type { DesignBounds, DesignSuggestion } from './experiment-design.js';\nexport {\n detectMeanChangepoint,\n estimateScaleExponent,\n probeConservation,\n} from './structure.js';\nexport type { ChangepointInput, ChangepointResult, ScaleSymmetryInput } from './structure.js';\nexport { runBackendWorker } from './backend-protocol.js';\nexport type { BackendRequest, BackendCandidate, BackendResponse } from './backend-protocol.js';\nexport {\n setRelationMetadata,\n getRelationMetadata,\n listRelationMetadata,\n clearRelationMetadata,\n} from './metadata.js';\n/** The problem-file readers and the error a file that is not a problem file raises, naming its field. */\nexport { makeResidualGap, loadSearchProblemFromJson, searchProblemFromFile, resolveObservationsPath, parseExprJson, ProblemFileError } from './problem.js';\nexport type { ProblemFile } from './problem.js';\n/** The search pipeline and the argv a Node worker is spawned with. */\nexport { runProbeSearch, nodeWorkerArgv } from './pipeline.js';\nexport type { ProbeSearchOptions, ProbeSearchResult } from './pipeline.js';\nexport { formatProbeReport, formatFrontierScan, formatFrontierGap } from './report.js';\nexport {\n parseStudy,\n loadStudyFromJson,\n loadStudyFile,\n attachReplication,\n studyCsvToRaw,\n runProbeStudy,\n formatProbeStudy,\n chiSquareSurvival,\n fSurvival,\n effectiveSigma,\n StudyRefusal,\n} from './study.js';\nexport type {\n ProbeStudy,\n ProbeStudyOptions,\n ProbeStudyResult,\n StudyVerdict,\n ReplicationOutcome,\n StudyRole,\n StudyProvenance,\n StudyObservation,\n StudyBaseline,\n SetTest,\n ModelTest,\n CandidateTest,\n StudyDesignSuggestion,\n StudyCorrection,\n StudyCorrectionReport,\n CorrectionStep,\n} from './study.js';\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/composition/probe/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EACL,cAAc,EACd,oBAAoB,EACpB,qBAAqB,GACtB,MAAM,YAAY,CAAC;AAyCpB,OAAO,EAAE,aAAa,EAAE,SAAS,EAAE,aAAa,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AACnG,OAAO,EAAE,UAAU,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAEpF,OAAO,EACL,cAAc,EACd,aAAa,EACb,cAAc,EACd,aAAa,EACb,YAAY,EACZ,eAAe,GAChB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,iBAAiB,EAAE,IAAI,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AACvE,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAChE,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,UAAU,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AACnG,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAEhE,4FAA4F;AAC5F,OAAO,EAAE,qBAAqB,EAAE,eAAe,EAAE,mBAAmB,EAAE,WAAW,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAGpI,OAAO,EACL,oBAAoB,EACpB,iBAAiB,EACjB,cAAc,EACd,YAAY,EACZ,eAAe,EACf,sBAAsB,GACvB,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,oBAAoB,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AACpF,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAExC,OAAO,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE1D,OAAO,EAAE,eAAe,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AAErE,OAAO,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAItE,OAAO,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAEnE,OAAO,EACL,eAAe,EACf,aAAa,EACb,mBAAmB,EACnB,yBAAyB,EACzB,kBAAkB,EAClB,YAAY,GACb,MAAM,cAAc,CAAC;AACtB,uIAAuI;AACvI,OAAO,EAAE,iBAAiB,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAE/D,OAAO,EAAE,0BAA0B,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAEvF,OAAO,EACL,qBAAqB,EACrB,qBAAqB,EACrB,iBAAiB,GAClB,MAAM,gBAAgB,CAAC;AAIxB,gGAAgG;AAChG,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAEzD,OAAO,EACL,mBAAmB,EACnB,mBAAmB,EACnB,oBAAoB,EACpB,qBAAqB,GACtB,MAAM,eAAe,CAAC;AACvB,yGAAyG;AACzG,OAAO,EAAE,eAAe,EAAE,yBAAyB,EAAE,qBAAqB,EAAE,uBAAuB,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAE3J,sEAAsE;AACtE,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAE/D,OAAO,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AACvF,OAAO,EACL,UAAU,EACV,iBAAiB,EACjB,aAAa,EACb,iBAAiB,EACjB,aAAa,EACb,aAAa,EACb,gBAAgB,EAChB,iBAAiB,EACjB,SAAS,EACT,cAAc,EACd,YAAY,GACb,MAAM,YAAY,CAAC","sourcesContent":["/**\n * Experimental Product B barrel — expression / residual search.\n *\n * Import via `universal-physics-tensor/probe`. Not re-exported from the\n * root `universal-physics-tensor` entry. Orthogonal to Product A\n * (`upt discover` / `VettedCandidate`).\n *\n * All symbols are `@internal`: the subpath exists for CLI and experiments,\n * not as a stability contract.\n *\n * @module composition/probe\n */\n\nexport {\n SCHEMA_VERSION,\n PROBE_SCHEMA_VERSION,\n DEFAULT_SEARCH_BUDGET,\n} from './types.js';\nexport type {\n ProbeCandidateStatus,\n RelationKind,\n AuditState,\n DiscrepancyKind,\n DatasetRole,\n SearchStopReason,\n FrontierGapKind,\n IdentifiabilityKind,\n SearchBudget,\n DiscrepancyDefinition,\n ScientificRelationRef,\n IdentifiabilityAssessment,\n SearchabilityAssessment,\n GapEvidence,\n FrontierGap,\n ProbeCandidateOrigin,\n ProbeCandidateBody,\n StatusEvent,\n CandidateFingerprint,\n ComplexityMetrics,\n ProbeCandidateRecord,\n ProbeRejectionRecord,\n DiscoveryBackendDescriptor,\n EnvironmentFingerprint,\n NondeterminismSource,\n DiscoveryRunManifest,\n DimensionalVariableRef,\n ObservationRow,\n ProbeDataset,\n SearchProblem,\n ScoreVector,\n EvidenceAssessment,\n EvidenceProfile,\n DeclaredLimit,\n FalsificationBattery,\n FalsificationRecord,\n ScientificRelationRecord,\n} from './types.js';\n\nexport { canonicalJson, sha256Hex, hashCanonical, captureEnvironment } from '../canonical-json.js';\nexport { openBudget, budgetStopReason, canEmitCandidate } from './search-budget.js';\nexport type { BudgetState } from './search-budget.js';\nexport {\n bodyExpression,\n countAstNodes,\n countOperators,\n maxPowerOrder,\n complexityOf,\n fingerprintExpr,\n} from './fingerprint.js';\nexport { scalarDiscrepancy, rmse, ResidualError } from './residual.js';\nexport { openManifest, closeManifest } from './run-manifest.js';\nexport { canTransition, applyStatus, statusRank, ProbeCandidateStore } from './candidate-store.js';\nexport { monomialToExpr, generateNative } from './generator.js';\nexport type { RawCandidate } from './generator.js';\n/** The rational power law over the π-groups, and the log-design rank the frontier reads. */\nexport { powerLawDetermination, powerLawWording, rationalizeExponent, piStructure, logDesign, logDesignRank } from './power-law.js';\n/** The power-law types: the determination, one fitted exponent, a recovered fit, the π-structure and the log-design. */\nexport type { PowerLawDetermination, PowerLawExponent, PowerLawFit, PiStructure, LogDesign } from './power-law.js';\nexport {\n wrapRelationLinkGaps,\n wrapConnectorGaps,\n wrapRegimeGaps,\n scanFrontier,\n findFrontierGap,\n problemFromResidualGap,\n} from './frontier.js';\nexport { expressionSearchGaps, scanWithExpressionGaps } from './expression-gaps.js';\nexport { fitPrefactor } from './fit.js';\nexport type { FitResult } from './fit.js';\nexport { scoreCandidate, rankPareto } from './scoring.js';\nexport type { RankedCandidate } from './scoring.js';\nexport { compareToCorpus, corpusRelativeWording } from './corpus.js';\nexport type { CorpusMatch, CorpusComparisonResult } from './corpus.js';\nexport { checkDeclaredLimit, checkDeclaredLimits } from './limits.js';\nexport type { LimitCheckResult } from './limits.js';\n/** What a declared-limit check found: held, failed, or undecided on too few evaluable rows. */\nexport type { LimitOutcome } from './limits.js';\nexport { runFalsification, DEFAULT_BATTERIES } from './falsify.js';\nexport type { FalsifyInput, FalsifyResult } from './falsify.js';\nexport {\n datasetFromRows,\n asDatasetSafe,\n loadDatasetFromJson,\n loadSplitDatasetsFromJson,\n loadDatasetFromCsv,\n loadSplitCsv,\n} from './dataset.js';\n/** The strict cell reader (a finite number or a decimal string, never a coercion) and the error a dataset raises by row and column. */\nexport { readDatasetNumber, DatasetError } from './dataset.js';\nexport type { SplitFileDatasets } from './dataset.js';\nexport { suggestDiscriminatingPoint, parseDesignBounds } from './experiment-design.js';\nexport type { DesignBounds, DesignSuggestion } from './experiment-design.js';\nexport {\n detectMeanChangepoint,\n estimateScaleExponent,\n probeConservation,\n} from './structure.js';\nexport type { ChangepointInput, ChangepointResult, ScaleSymmetryInput } from './structure.js';\n/** The scale-exponent result (slope, standard error, direct p) and the conservation verdict (slope against k·stdErr). */\nexport type { ScaleExponentResult, ConservationResult } from './structure.js';\n/** The direct two-sided Student t tail the probes consume instead of MathTS's `2·(1 − CDF)`. */\nexport { studentTwoSidedP } from './t-tail.js';\nexport { runBackendWorker } from './backend-protocol.js';\nexport type { BackendRequest, BackendCandidate, BackendResponse } from './backend-protocol.js';\nexport {\n setRelationMetadata,\n getRelationMetadata,\n listRelationMetadata,\n clearRelationMetadata,\n} from './metadata.js';\n/** The problem-file readers and the error a file that is not a problem file raises, naming its field. */\nexport { makeResidualGap, loadSearchProblemFromJson, searchProblemFromFile, resolveObservationsPath, parseExprJson, ProblemFileError } from './problem.js';\nexport type { ProblemFile } from './problem.js';\n/** The search pipeline and the argv a Node worker is spawned with. */\nexport { runProbeSearch, nodeWorkerArgv } from './pipeline.js';\nexport type { ProbeSearchOptions, ProbeSearchResult } from './pipeline.js';\nexport { formatProbeReport, formatFrontierScan, formatFrontierGap } from './report.js';\nexport {\n parseStudy,\n loadStudyFromJson,\n loadStudyFile,\n attachReplication,\n studyCsvToRaw,\n runProbeStudy,\n formatProbeStudy,\n chiSquareSurvival,\n fSurvival,\n effectiveSigma,\n StudyRefusal,\n} from './study.js';\nexport type {\n ProbeStudy,\n ProbeStudyOptions,\n ProbeStudyResult,\n StudyVerdict,\n ReplicationOutcome,\n StudyRole,\n StudyProvenance,\n StudyObservation,\n StudyBaseline,\n SetTest,\n ModelTest,\n CandidateTest,\n StudyDesignSuggestion,\n StudyCorrection,\n StudyCorrectionReport,\n CorrectionStep,\n} from './study.js';\n/** One fitted correction coefficient with its standard error and, when declared, the reference it is compared with. */\nexport type { CorrectionCoefficient } from './study.js';\n"]}
@@ -2,15 +2,26 @@
2
2
  * Declared-limit checks for probe candidates.
3
3
  *
4
4
  * A failed limit is **not automatically fatal**. It is fatal only when the
5
- * candidate claims the domain in which the limit fails.
5
+ * candidate claims the domain in which the limit fails. A limit whose rows
6
+ * the candidate mostly could not be evaluated on is **undecided**, which is
7
+ * neither a pass nor a failure and is never fatal.
6
8
  *
7
9
  * @internal
8
10
  */
9
11
  import type { ExprNode } from '../../dimensional/ast-types.js';
10
12
  import type { DeclaredLimit, ProbeDataset } from './types.js';
13
+ /** What a limit check found: the limit held, failed, or could not be decided on these rows. @internal */
14
+ export type LimitOutcome = 'held' | 'failed' | 'undecided';
15
+ /** The outcome of one declared-limit check, and whether it is fatal. */
11
16
  export interface LimitCheckResult {
12
17
  readonly id: string;
18
+ /** `outcome === 'held'`. */
13
19
  readonly passed: boolean;
20
+ readonly outcome: LimitOutcome;
21
+ /** Rows the candidate was evaluated on (finite prediction and a finite observation). */
22
+ readonly evaluated: number;
23
+ /** Rows the candidate threw on, or predicted a non-finite value for, or that have no finite observation. */
24
+ readonly skipped: number;
14
25
  readonly claimedDomain: boolean;
15
26
  readonly fatal: boolean;
16
27
  readonly detail: string;
@@ -19,6 +30,19 @@ export interface LimitCheckResult {
19
30
  * Evaluate `prefactor · expr` RMSE on `dataset`. When the candidate does not
20
31
  * claim `limit.regime`, a failure is recorded but not fatal.
21
32
  *
33
+ * A row the candidate throws on, or predicts a non-finite value for, is
34
+ * skipped and COUNTED. When more rows were skipped than evaluated (or none
35
+ * could be evaluated), the outcome is `undecided`: a candidate that throws on
36
+ * nine rows of ten is not judged on the tenth. That threshold, skipped >
37
+ * evaluated, is a choice stated here, not a measured one.
38
+ *
39
+ * The pass rule is LOOSE by design: the limit holds when the RMSE over the
40
+ * evaluated rows is at most half the largest |observation| of the dataset. It
41
+ * catches a candidate that is wrong by its own scale in a regime, not one that
42
+ * is wrong by a few percent; the holdout tolerance is the quantitative test.
43
+ * The RMSE is core `norm2` of the residuals over √n (overflow-safe), so a
44
+ * residual of 1e200 is a number, not `Infinity`.
45
+ *
22
46
  * @internal
23
47
  */
24
48
  export declare function checkDeclaredLimit(expr: ExprNode, dataset: ProbeDataset, prefactor: number, limit: DeclaredLimit, claimsDomain: boolean): LimitCheckResult;
@@ -1 +1 @@
1
- {"version":3,"file":"limits.d.ts","sourceRoot":"","sources":["../../../src/composition/probe/limits.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gCAAgC,CAAC;AAC/D,OAAO,KAAK,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAG9D,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IACzB,QAAQ,CAAC,aAAa,EAAE,OAAO,CAAC;IAChC,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;IACxB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAChC,IAAI,EAAE,QAAQ,EACd,OAAO,EAAE,YAAY,EACrB,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,aAAa,EACpB,YAAY,EAAE,OAAO,GACpB,gBAAgB,CAyClB;AAED,0CAA0C;AAC1C,wBAAgB,mBAAmB,CACjC,IAAI,EAAE,QAAQ,EACd,OAAO,EAAE,YAAY,GAAG,SAAS,EACjC,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,SAAS,aAAa,EAAE,EAChC,cAAc,GAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAM,GACpD,SAAS,gBAAgB,EAAE,CAc7B"}
1
+ {"version":3,"file":"limits.d.ts","sourceRoot":"","sources":["../../../src/composition/probe/limits.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAGH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gCAAgC,CAAC;AAC/D,OAAO,KAAK,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAG9D,yGAAyG;AACzG,MAAM,MAAM,YAAY,GAAG,MAAM,GAAG,QAAQ,GAAG,WAAW,CAAC;AAE3D,wEAAwE;AACxE,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,4BAA4B;IAC5B,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IACzB,QAAQ,CAAC,OAAO,EAAE,YAAY,CAAC;IAC/B,wFAAwF;IACxF,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,4GAA4G;IAC5G,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,aAAa,EAAE,OAAO,CAAC;IAChC,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;IACxB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,kBAAkB,CAChC,IAAI,EAAE,QAAQ,EACd,OAAO,EAAE,YAAY,EACrB,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,aAAa,EACpB,YAAY,EAAE,OAAO,GACpB,gBAAgB,CAiElB;AAED,0CAA0C;AAC1C,wBAAgB,mBAAmB,CACjC,IAAI,EAAE,QAAQ,EACd,OAAO,EAAE,YAAY,GAAG,SAAS,EACjC,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,SAAS,aAAa,EAAE,EAChC,cAAc,GAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAM,GACpD,SAAS,gBAAgB,EAAE,CAc7B"}
@@ -2,15 +2,31 @@
2
2
  * Declared-limit checks for probe candidates.
3
3
  *
4
4
  * A failed limit is **not automatically fatal**. It is fatal only when the
5
- * candidate claims the domain in which the limit fails.
5
+ * candidate claims the domain in which the limit fails. A limit whose rows
6
+ * the candidate mostly could not be evaluated on is **undecided**, which is
7
+ * neither a pass nor a failure and is never fatal.
6
8
  *
7
9
  * @internal
8
10
  */
11
+ import { norm2 } from '@danielsimonjr/mathts-core';
9
12
  import { evalExpr } from '../expr-eval.js';
10
13
  /**
11
14
  * Evaluate `prefactor · expr` RMSE on `dataset`. When the candidate does not
12
15
  * claim `limit.regime`, a failure is recorded but not fatal.
13
16
  *
17
+ * A row the candidate throws on, or predicts a non-finite value for, is
18
+ * skipped and COUNTED. When more rows were skipped than evaluated (or none
19
+ * could be evaluated), the outcome is `undecided`: a candidate that throws on
20
+ * nine rows of ten is not judged on the tenth. That threshold, skipped >
21
+ * evaluated, is a choice stated here, not a measured one.
22
+ *
23
+ * The pass rule is LOOSE by design: the limit holds when the RMSE over the
24
+ * evaluated rows is at most half the largest |observation| of the dataset. It
25
+ * catches a candidate that is wrong by its own scale in a regime, not one that
26
+ * is wrong by a few percent; the holdout tolerance is the quantitative test.
27
+ * The RMSE is core `norm2` of the residuals over √n (overflow-safe), so a
28
+ * residual of 1e200 is a number, not `Infinity`.
29
+ *
14
30
  * @internal
15
31
  */
16
32
  export function checkDeclaredLimit(expr, dataset, prefactor, limit, claimsDomain) {
@@ -18,40 +34,66 @@ export function checkDeclaredLimit(expr, dataset, prefactor, limit, claimsDomain
18
34
  return {
19
35
  id: limit.id,
20
36
  passed: true,
37
+ outcome: 'held',
38
+ evaluated: 0,
39
+ skipped: 0,
21
40
  claimedDomain: claimsDomain,
22
41
  fatal: false,
23
42
  detail: `no observations for declared-limit ${limit.id}`,
24
43
  };
25
44
  }
26
- let sumSq = 0;
27
- let n = 0;
45
+ const residuals = [];
46
+ let skipped = 0;
28
47
  for (const row of dataset.rows) {
29
48
  let predicted;
30
49
  try {
31
50
  predicted = prefactor * evalExpr(expr, row);
32
51
  }
33
52
  catch {
53
+ skipped += 1;
34
54
  continue;
35
55
  }
36
56
  const observed = row[dataset.observable];
37
- if (!Number.isFinite(predicted) || observed == null || !Number.isFinite(observed))
57
+ if (!Number.isFinite(predicted) || observed === undefined || !Number.isFinite(observed)) {
58
+ skipped += 1;
38
59
  continue;
39
- const err = predicted - observed;
40
- sumSq += err * err;
41
- n += 1;
60
+ }
61
+ residuals.push(predicted - observed);
62
+ }
63
+ const evaluated = residuals.length;
64
+ const total = dataset.rows.length;
65
+ if (evaluated === 0 || skipped > evaluated) {
66
+ return {
67
+ id: limit.id,
68
+ passed: false,
69
+ outcome: 'undecided',
70
+ evaluated,
71
+ skipped,
72
+ claimedDomain: claimsDomain,
73
+ fatal: false,
74
+ detail: `limit ${limit.id} undecided: ${skipped} of ${total} rows could not be evaluated (${evaluated} could); not judged on so few`,
75
+ };
42
76
  }
43
- const rmse = n === 0 ? Number.POSITIVE_INFINITY : Math.sqrt(sumSq / n);
44
- const scale = Math.max(...dataset.rows.map((r) => Math.abs(r[dataset.observable] ?? 0)), 1e-12);
77
+ const rmse = norm2(residuals) / Math.sqrt(evaluated);
78
+ // A reduce, not `Math.max(...rows)`: a spread of a large dataset overflows the call stack.
79
+ const scale = dataset.rows.reduce((m, r) => {
80
+ const v = r[dataset.observable];
81
+ return v !== undefined && Number.isFinite(v) ? Math.max(m, Math.abs(v)) : m;
82
+ }, 1e-12);
45
83
  const passed = Number.isFinite(rmse) && rmse <= 0.5 * scale;
46
84
  const fatal = !passed && claimsDomain;
85
+ const rows = skipped > 0 ? ` on ${evaluated} of ${total} rows (${skipped} skipped)` : '';
47
86
  return {
48
87
  id: limit.id,
49
88
  passed,
89
+ outcome: passed ? 'held' : 'failed',
90
+ evaluated,
91
+ skipped,
50
92
  claimedDomain: claimsDomain,
51
93
  fatal,
52
94
  detail: passed
53
- ? `limit ${limit.id} held (rmse=${rmse})`
54
- : `limit ${limit.id} failed (rmse=${rmse})${fatal ? ' — fatal because candidate claims this domain' : ' — not fatal (domain not claimed)'}`,
95
+ ? `limit ${limit.id} held (rmse=${rmse})${rows}`
96
+ : `limit ${limit.id} failed (rmse=${rmse})${rows}${fatal ? ' — fatal because candidate claims this domain' : ' — not fatal (domain not claimed)'}`,
55
97
  };
56
98
  }
57
99
  /** Run every declared limit. @internal */
@@ -1 +1 @@
1
- {"version":3,"file":"limits.js","sourceRoot":"","sources":["../../../src/composition/probe/limits.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Declared-limit checks for probe candidates.\n *\n * A failed limit is **not automatically fatal**. It is fatal only when the\n * candidate claims the domain in which the limit fails.\n *\n * @internal\n */\n\nimport type { ExprNode } from '../../dimensional/ast-types.js';\nimport type { DeclaredLimit, ProbeDataset } from './types.js';\nimport { evalExpr } from '../expr-eval.js';\n\nexport interface LimitCheckResult {\n readonly id: string;\n readonly passed: boolean;\n readonly claimedDomain: boolean;\n readonly fatal: boolean;\n readonly detail: string;\n}\n\n/**\n * Evaluate `prefactor · expr` RMSE on `dataset`. When the candidate does not\n * claim `limit.regime`, a failure is recorded but not fatal.\n *\n * @internal\n */\nexport function checkDeclaredLimit(\n expr: ExprNode,\n dataset: ProbeDataset,\n prefactor: number,\n limit: DeclaredLimit,\n claimsDomain: boolean,\n): LimitCheckResult {\n if (dataset.rows.length === 0) {\n return {\n id: limit.id,\n passed: true,\n claimedDomain: claimsDomain,\n fatal: false,\n detail: `no observations for declared-limit ${limit.id}`,\n };\n }\n let sumSq = 0;\n let n = 0;\n for (const row of dataset.rows) {\n let predicted: number;\n try {\n predicted = prefactor * evalExpr(expr, row);\n } catch {\n continue;\n }\n const observed = row[dataset.observable];\n if (!Number.isFinite(predicted) || observed == null || !Number.isFinite(observed)) continue;\n const err = predicted - observed;\n sumSq += err * err;\n n += 1;\n }\n const rmse = n === 0 ? Number.POSITIVE_INFINITY : Math.sqrt(sumSq / n);\n const scale = Math.max(\n ...dataset.rows.map((r) => Math.abs(r[dataset.observable] ?? 0)),\n 1e-12,\n );\n const passed = Number.isFinite(rmse) && rmse <= 0.5 * scale;\n const fatal = !passed && claimsDomain;\n return {\n id: limit.id,\n passed,\n claimedDomain: claimsDomain,\n fatal,\n detail: passed\n ? `limit ${limit.id} held (rmse=${rmse})`\n : `limit ${limit.id} failed (rmse=${rmse})${fatal ? ' — fatal because candidate claims this domain' : ' — not fatal (domain not claimed)'}`,\n };\n}\n\n/** Run every declared limit. @internal */\nexport function checkDeclaredLimits(\n expr: ExprNode,\n dataset: ProbeDataset | undefined,\n prefactor: number,\n limits: readonly DeclaredLimit[],\n claimedRegimes: Readonly<Record<string, string>> = {},\n): readonly LimitCheckResult[] {\n const rows = dataset ?? {\n id: 'empty',\n role: 'falsification-only' as const,\n rows: [],\n observable: '',\n schemaVersion: '0',\n };\n return limits.map((limit) => {\n const claimsDomain = Object.entries(limit.regime).every(\n ([k, v]) => claimedRegimes[k] === v,\n );\n return checkDeclaredLimit(expr, rows, prefactor, limit, claimsDomain);\n });\n}\n"]}
1
+ {"version":3,"file":"limits.js","sourceRoot":"","sources":["../../../src/composition/probe/limits.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Declared-limit checks for probe candidates.\n *\n * A failed limit is **not automatically fatal**. It is fatal only when the\n * candidate claims the domain in which the limit fails. A limit whose rows\n * the candidate mostly could not be evaluated on is **undecided**, which is\n * neither a pass nor a failure and is never fatal.\n *\n * @internal\n */\n\nimport { norm2 } from '@danielsimonjr/mathts-core';\nimport type { ExprNode } from '../../dimensional/ast-types.js';\nimport type { DeclaredLimit, ProbeDataset } from './types.js';\nimport { evalExpr } from '../expr-eval.js';\n\n/** What a limit check found: the limit held, failed, or could not be decided on these rows. @internal */\nexport type LimitOutcome = 'held' | 'failed' | 'undecided';\n\n/** The outcome of one declared-limit check, and whether it is fatal. */\nexport interface LimitCheckResult {\n readonly id: string;\n /** `outcome === 'held'`. */\n readonly passed: boolean;\n readonly outcome: LimitOutcome;\n /** Rows the candidate was evaluated on (finite prediction and a finite observation). */\n readonly evaluated: number;\n /** Rows the candidate threw on, or predicted a non-finite value for, or that have no finite observation. */\n readonly skipped: number;\n readonly claimedDomain: boolean;\n readonly fatal: boolean;\n readonly detail: string;\n}\n\n/**\n * Evaluate `prefactor · expr` RMSE on `dataset`. When the candidate does not\n * claim `limit.regime`, a failure is recorded but not fatal.\n *\n * A row the candidate throws on, or predicts a non-finite value for, is\n * skipped and COUNTED. When more rows were skipped than evaluated (or none\n * could be evaluated), the outcome is `undecided`: a candidate that throws on\n * nine rows of ten is not judged on the tenth. That threshold, skipped >\n * evaluated, is a choice stated here, not a measured one.\n *\n * The pass rule is LOOSE by design: the limit holds when the RMSE over the\n * evaluated rows is at most half the largest |observation| of the dataset. It\n * catches a candidate that is wrong by its own scale in a regime, not one that\n * is wrong by a few percent; the holdout tolerance is the quantitative test.\n * The RMSE is core `norm2` of the residuals over √n (overflow-safe), so a\n * residual of 1e200 is a number, not `Infinity`.\n *\n * @internal\n */\nexport function checkDeclaredLimit(\n expr: ExprNode,\n dataset: ProbeDataset,\n prefactor: number,\n limit: DeclaredLimit,\n claimsDomain: boolean,\n): LimitCheckResult {\n if (dataset.rows.length === 0) {\n return {\n id: limit.id,\n passed: true,\n outcome: 'held',\n evaluated: 0,\n skipped: 0,\n claimedDomain: claimsDomain,\n fatal: false,\n detail: `no observations for declared-limit ${limit.id}`,\n };\n }\n const residuals: number[] = [];\n let skipped = 0;\n for (const row of dataset.rows) {\n let predicted: number;\n try {\n predicted = prefactor * evalExpr(expr, row);\n } catch {\n skipped += 1;\n continue;\n }\n const observed = row[dataset.observable];\n if (!Number.isFinite(predicted) || observed === undefined || !Number.isFinite(observed)) {\n skipped += 1;\n continue;\n }\n residuals.push(predicted - observed);\n }\n const evaluated = residuals.length;\n const total = dataset.rows.length;\n if (evaluated === 0 || skipped > evaluated) {\n return {\n id: limit.id,\n passed: false,\n outcome: 'undecided',\n evaluated,\n skipped,\n claimedDomain: claimsDomain,\n fatal: false,\n detail: `limit ${limit.id} undecided: ${skipped} of ${total} rows could not be evaluated (${evaluated} could); not judged on so few`,\n };\n }\n const rmse = norm2(residuals) / Math.sqrt(evaluated);\n // A reduce, not `Math.max(...rows)`: a spread of a large dataset overflows the call stack.\n const scale = dataset.rows.reduce((m, r) => {\n const v = r[dataset.observable];\n return v !== undefined && Number.isFinite(v) ? Math.max(m, Math.abs(v)) : m;\n }, 1e-12);\n const passed = Number.isFinite(rmse) && rmse <= 0.5 * scale;\n const fatal = !passed && claimsDomain;\n const rows = skipped > 0 ? ` on ${evaluated} of ${total} rows (${skipped} skipped)` : '';\n return {\n id: limit.id,\n passed,\n outcome: passed ? 'held' : 'failed',\n evaluated,\n skipped,\n claimedDomain: claimsDomain,\n fatal,\n detail: passed\n ? `limit ${limit.id} held (rmse=${rmse})${rows}`\n : `limit ${limit.id} failed (rmse=${rmse})${rows}${fatal ? ' — fatal because candidate claims this domain' : ' — not fatal (domain not claimed)'}`,\n };\n}\n\n/** Run every declared limit. @internal */\nexport function checkDeclaredLimits(\n expr: ExprNode,\n dataset: ProbeDataset | undefined,\n prefactor: number,\n limits: readonly DeclaredLimit[],\n claimedRegimes: Readonly<Record<string, string>> = {},\n): readonly LimitCheckResult[] {\n const rows = dataset ?? {\n id: 'empty',\n role: 'falsification-only' as const,\n rows: [],\n observable: '',\n schemaVersion: '0',\n };\n return limits.map((limit) => {\n const claimsDomain = Object.entries(limit.regime).every(\n ([k, v]) => claimedRegimes[k] === v,\n );\n return checkDeclaredLimit(expr, rows, prefactor, limit, claimsDomain);\n });\n}\n"]}
@@ -13,6 +13,7 @@ import { type CorpusComparisonResult } from './corpus.js';
13
13
  import { type FitResult } from './fit.js';
14
14
  import { type FalsifyResult } from './falsify.js';
15
15
  import { type RankedCandidate } from './scoring.js';
16
+ import { type ProbeScalarSearchOptions } from './scalar-search.js';
16
17
  /** Stop wording when the problem carried no holdout rows. @internal */
17
18
  export declare const NO_HOLDOUT_WORDING = "no holdout observations: no candidate was tested on withheld data";
18
19
  /**
@@ -20,15 +21,19 @@ export declare const NO_HOLDOUT_WORDING = "no holdout observations: no candidate
20
21
  * @internal
21
22
  */
22
23
  export declare function nodeWorkerArgv(script: string): readonly string[];
24
+ /** The optional settings of one probe search: budget, run id, backend and corpus version. */
23
25
  export interface ProbeSearchOptions {
24
26
  readonly budget?: SearchBudget;
25
27
  readonly runId?: string;
26
28
  readonly repositoryCommit?: string;
27
29
  readonly holdoutTol?: number;
28
30
  readonly backendArgv?: readonly string[];
31
+ /** Opt-in MathTS scalar-search candidate source (plan task P5). Absent: the search does not run. */
32
+ readonly scalarSearch?: ProbeScalarSearchOptions;
29
33
  readonly corpusVersion?: string;
30
34
  readonly now?: string;
31
35
  }
36
+ /** The outcome of one probe search: its manifest, candidates, rankings and stop reason. */
32
37
  export interface ProbeSearchResult {
33
38
  readonly manifest: DiscoveryRunManifest;
34
39
  readonly candidates: readonly ProbeCandidateRecord[];
@@ -1 +1 @@
1
- {"version":3,"file":"pipeline.d.ts","sourceRoot":"","sources":["../../../src/composition/probe/pipeline.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAIH,OAAO,KAAK,EACV,oBAAoB,EACpB,oBAAoB,EACpB,YAAY,EACZ,aAAa,EACb,gBAAgB,EAChB,oBAAoB,EACrB,MAAM,YAAY,CAAC;AAKpB,OAAO,EAIL,KAAK,sBAAsB,EAC5B,MAAM,aAAa,CAAC;AACrB,OAAO,EAAgB,KAAK,SAAS,EAAE,MAAM,UAAU,CAAC;AACxD,OAAO,EAAoB,KAAK,aAAa,EAAE,MAAM,cAAc,CAAC;AAIpE,OAAO,EAA8B,KAAK,eAAe,EAAE,MAAM,cAAc,CAAC;AAGhF,uEAAuE;AACvE,eAAO,MAAM,kBAAkB,sEAAsE,CAAC;AAEtG;;;GAGG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,MAAM,EAAE,CAEhE;AAED,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,MAAM,CAAC,EAAE,YAAY,CAAC;IAC/B,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IACnC,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,WAAW,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACzC,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,QAAQ,EAAE,oBAAoB,CAAC;IACxC,QAAQ,CAAC,UAAU,EAAE,SAAS,oBAAoB,EAAE,CAAC;IACrD,QAAQ,CAAC,MAAM,EAAE,SAAS,eAAe,EAAE,CAAC;IAC5C,QAAQ,CAAC,UAAU,EAAE,SAAS,oBAAoB,EAAE,CAAC;IACrD,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC;IACnD,QAAQ,CAAC,cAAc,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC,CAAC;IACjE,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,sBAAsB,CAAC,CAAC,CAAC;IAClE;;;OAGG;IACH,QAAQ,CAAC,cAAc,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC,CAAC,CAAC;IACrE,QAAQ,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;IACpC,QAAQ,CAAC,UAAU,EAAE,gBAAgB,CAAC;CACvC;AA8GD;;;;GAIG;AACH,wBAAsB,cAAc,CAClC,OAAO,EAAE,aAAa,EACtB,IAAI,GAAE,kBAAuB,GAC5B,OAAO,CAAC,iBAAiB,CAAC,CA+S5B"}
1
+ {"version":3,"file":"pipeline.d.ts","sourceRoot":"","sources":["../../../src/composition/probe/pipeline.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAIH,OAAO,KAAK,EAEV,oBAAoB,EACpB,oBAAoB,EACpB,YAAY,EACZ,aAAa,EACb,gBAAgB,EAChB,oBAAoB,EACrB,MAAM,YAAY,CAAC;AAYpB,OAAO,EAIL,KAAK,sBAAsB,EAC5B,MAAM,aAAa,CAAC;AACrB,OAAO,EAAgB,KAAK,SAAS,EAAE,MAAM,UAAU,CAAC;AACxD,OAAO,EAAoB,KAAK,aAAa,EAAE,MAAM,cAAc,CAAC;AAIpE,OAAO,EAA8B,KAAK,eAAe,EAAE,MAAM,cAAc,CAAC;AAEhF,OAAO,EAIL,KAAK,wBAAwB,EAC9B,MAAM,oBAAoB,CAAC;AAE5B,uEAAuE;AACvE,eAAO,MAAM,kBAAkB,sEAAsE,CAAC;AAEtG;;;GAGG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,MAAM,EAAE,CAEhE;AAED,6FAA6F;AAC7F,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,MAAM,CAAC,EAAE,YAAY,CAAC;IAC/B,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IACnC,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,WAAW,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACzC,oGAAoG;IACpG,QAAQ,CAAC,YAAY,CAAC,EAAE,wBAAwB,CAAC;IACjD,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,2FAA2F;AAC3F,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,QAAQ,EAAE,oBAAoB,CAAC;IACxC,QAAQ,CAAC,UAAU,EAAE,SAAS,oBAAoB,EAAE,CAAC;IACrD,QAAQ,CAAC,MAAM,EAAE,SAAS,eAAe,EAAE,CAAC;IAC5C,QAAQ,CAAC,UAAU,EAAE,SAAS,oBAAoB,EAAE,CAAC;IACrD,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC;IACnD,QAAQ,CAAC,cAAc,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC,CAAC;IACjE,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,sBAAsB,CAAC,CAAC,CAAC;IAClE;;;OAGG;IACH,QAAQ,CAAC,cAAc,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC,CAAC,CAAC;IACrE,QAAQ,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;IACpC,QAAQ,CAAC,UAAU,EAAE,gBAAgB,CAAC;CACvC;AAkJD;;;;GAIG;AACH,wBAAsB,cAAc,CAClC,OAAO,EAAE,aAAa,EACtB,IAAI,GAAE,kBAAuB,GAC5B,OAAO,CAAC,iBAAiB,CAAC,CAuT5B"}
@@ -12,7 +12,7 @@ import { validate } from '../../dimensional/validator.js';
12
12
  import { equals } from '../../dimensional/algebra.js';
13
13
  import { DEFAULT_HOLDOUT_TOL, DEFAULT_SEARCH_BUDGET, SCHEMA_VERSION } from './types.js';
14
14
  import { openBudget, budgetStopReason } from './search-budget.js';
15
- import { generateNative, nativeDetermination } from './generator.js';
15
+ import { generateNative, nativeDetermination, powerLawDetermination, powerLawWording, withinAstCaps, } from './generator.js';
16
16
  import { fingerprintExpr, complexityOf, bodyExpression } from './fingerprint.js';
17
17
  import { compareToCorpus, corpusPrefactorNotes, corpusRelativeWording, } from './corpus.js';
18
18
  import { fitPrefactor } from './fit.js';
@@ -22,6 +22,7 @@ import { openManifest, closeManifest } from './run-manifest.js';
22
22
  import { hashCanonical } from './serialize.js';
23
23
  import { scoreCandidate, rankPareto } from './scoring.js';
24
24
  import { runBackendWorker } from './backend-protocol.js';
25
+ import { SCALAR_SEARCH_ORIGIN, scalarSearchCandidates, UnsupportedScalarFunctionError, } from './scalar-search.js';
25
26
  /** Stop wording when the problem carried no holdout rows. @internal */
26
27
  export const NO_HOLDOUT_WORDING = 'no holdout observations: no candidate was tested on withheld data';
27
28
  /**
@@ -116,6 +117,42 @@ function makeGenerated(expr, problem, runId, at, origin, seq) {
116
117
  schemaVersion: SCHEMA_VERSION,
117
118
  };
118
119
  }
120
+ /**
121
+ * The manifest's backend list: the native enumerator, then each opted-in source.
122
+ * `undefined` when no source is opted in, so a default run's manifest is unchanged.
123
+ */
124
+ function backendDescriptorsFor(opts) {
125
+ if (!opts.backendArgv && !opts.scalarSearch)
126
+ return undefined;
127
+ const list = [
128
+ {
129
+ protocolVersion: '0',
130
+ backendId: 'native',
131
+ backendVersion: SCHEMA_VERSION,
132
+ capabilities: ['grammar-enumerator'],
133
+ deterministic: 'yes',
134
+ },
135
+ ];
136
+ if (opts.backendArgv) {
137
+ list.push({
138
+ protocolVersion: '0',
139
+ backendId: opts.backendArgv.join(' '),
140
+ backendVersion: 'external',
141
+ capabilities: ['external-backend'],
142
+ deterministic: 'unknown',
143
+ });
144
+ }
145
+ if (opts.scalarSearch) {
146
+ list.push({
147
+ protocolVersion: '0',
148
+ backendId: SCALAR_SEARCH_ORIGIN,
149
+ backendVersion: 'mathts-functions',
150
+ capabilities: ['scalar-search'],
151
+ deterministic: 'seeded',
152
+ });
153
+ }
154
+ return list;
155
+ }
119
156
  /**
120
157
  * Run a bounded Product B search. Never mutates Product A catalogs.
121
158
  *
@@ -147,8 +184,14 @@ export async function runProbeSearch(problem, opts = {}) {
147
184
  const { unsearched } = nativeDetermination(problem);
148
185
  if (unsearched.length > 0) {
149
186
  wording.push(`the monomial is taken from the dimensioned inputs; an unknown function of the ` +
150
- `dimensionless input(s) {${unsearched.join(', ')}} is not searched`);
187
+ `dimensionless input(s) {${unsearched.join(', ')}} is not searched as such`);
151
188
  }
189
+ // What the power-law fit over the π-groups found on the exploratory rows, or why it abstained
190
+ // (a negative result is a result); the generator ran the same fit to emit its candidate.
191
+ const powerLaw = hasAnyData(problem) ? powerLawDetermination(problem) : null;
192
+ const powerLawNote = powerLaw ? powerLawWording(powerLaw) : null;
193
+ if (powerLawNote !== null)
194
+ wording.push(powerLawNote);
152
195
  for (const raw of generateNative(problem, state)) {
153
196
  raws.push(raw);
154
197
  const stop = budgetStopReason(state);
@@ -179,6 +222,27 @@ export async function runProbeSearch(problem, opts = {}) {
179
222
  }
180
223
  }
181
224
  }
225
+ if (opts.scalarSearch && !budgetStopReason(state)) {
226
+ const remainingMs = Math.max(1, budget.maxWallClockMs - (performance.now() - state.startedAtMs));
227
+ try {
228
+ const found = await scalarSearchCandidates(problem, opts.scalarSearch, remainingMs);
229
+ if (found.note !== undefined)
230
+ wording.push(found.note);
231
+ for (const raw of found.raws) {
232
+ if (budgetStopReason(state))
233
+ break;
234
+ if (!withinAstCaps(raw.expression, budget))
235
+ continue;
236
+ state.candidates += 1;
237
+ raws.push(raw);
238
+ }
239
+ }
240
+ catch (err) {
241
+ if (err instanceof UnsupportedScalarFunctionError)
242
+ throw err;
243
+ wording.push(`scalar search abstained: ${err instanceof Error ? err.message : String(err)}`);
244
+ }
245
+ }
182
246
  const open = openManifest({
183
247
  runId,
184
248
  repositoryCommit: opts.repositoryCommit ?? 'unknown',
@@ -190,24 +254,7 @@ export async function runProbeSearch(problem, opts = {}) {
190
254
  tolerances: { holdoutRmse: opts.holdoutTol ?? DEFAULT_HOLDOUT_TOL },
191
255
  searchBudget: budget,
192
256
  startedAt: at,
193
- backendDescriptors: opts.backendArgv
194
- ? [
195
- {
196
- protocolVersion: '0',
197
- backendId: 'native',
198
- backendVersion: SCHEMA_VERSION,
199
- capabilities: ['grammar-enumerator'],
200
- deterministic: 'yes',
201
- },
202
- {
203
- protocolVersion: '0',
204
- backendId: opts.backendArgv.join(' '),
205
- backendVersion: 'external',
206
- capabilities: ['external-backend'],
207
- deterministic: 'unknown',
208
- },
209
- ]
210
- : undefined,
257
+ backendDescriptors: backendDescriptorsFor(opts),
211
258
  });
212
259
  for (const raw of raws) {
213
260
  const stop = budgetStopReason(state);
@@ -215,7 +262,9 @@ export async function runProbeSearch(problem, opts = {}) {
215
262
  break;
216
263
  const origin = raw.originNote === 'external-backend'
217
264
  ? { kind: 'external-backend', backendId: 'external', runId }
218
- : { kind: 'grammar-enumerator', runId };
265
+ : raw.originNote === SCALAR_SEARCH_ORIGIN
266
+ ? { kind: 'external-backend', backendId: SCALAR_SEARCH_ORIGIN, runId }
267
+ : { kind: 'grammar-enumerator', runId };
219
268
  seq += 1;
220
269
  let rec = makeGenerated(raw.expression, problem, runId, at, origin, seq);
221
270
  if (seenHash.has(rec.fingerprint.canonicalAstHash))
@@ -259,7 +308,7 @@ export async function runProbeSearch(problem, opts = {}) {
259
308
  }
260
309
  rec = applyStatus(rec, 'structurally-valid', 'validate() ok', runId, at);
261
310
  store.replace(rec);
262
- const corp = compareToCorpus(bodyExpression(rec.body), corpusVersion);
311
+ const corp = compareToCorpus(bodyExpression(rec.body), corpusVersion, at);
263
312
  corpus[rec.id] = corp;
264
313
  wording.push(corpusRelativeWording(corp));
265
314
  const known = corp.algebraicMatches.length > 0;
@@ -303,7 +352,7 @@ export async function runProbeSearch(problem, opts = {}) {
303
352
  if (known) {
304
353
  // Equivalent up to a constant is not equal: compare the fitted constant
305
354
  // with the corpus one where the corpus records it (persona finding L7).
306
- prefactorNotes[rec.id] = corpusPrefactorNotes(corp, bodyExpression(rec.body), fit.prefactor, opts.holdoutTol ?? DEFAULT_HOLDOUT_TOL);
355
+ prefactorNotes[rec.id] = corpusPrefactorNotes(corp, bodyExpression(rec.body), fit.prefactor, opts.holdoutTol ?? DEFAULT_HOLDOUT_TOL, fit.prefactorStderr);
307
356
  rec = applyStatus(rec, 'equivalent-known', corpusRelativeWording(corp), runId, at);
308
357
  store.replace(rec);
309
358
  continue;
@@ -352,7 +401,7 @@ export async function runProbeSearch(problem, opts = {}) {
352
401
  wording.push(det.determined
353
402
  ? 'enumerator produced no dimensionally valid candidates'
354
403
  : `the target is not a unique monomial of the inputs (${det.reason}); ` +
355
- 'the native enumerator searches unique monomials only');
404
+ 'the native enumerator searches unique monomials and, with exploratory rows, a rational power law of the π-groups');
356
405
  }
357
406
  else if (hasAnyData(problem) &&
358
407
  all.every((c) => c.status === 'rejected' ||