universal-physics-tensor 0.45.2 → 0.46.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 (473) hide show
  1. package/README.md +28 -27
  2. package/dist/atlas/applicability.d.ts +108 -0
  3. package/dist/atlas/applicability.d.ts.map +1 -0
  4. package/dist/atlas/applicability.js +301 -0
  5. package/dist/atlas/applicability.js.map +1 -0
  6. package/dist/atlas/association.d.ts +92 -0
  7. package/dist/atlas/association.d.ts.map +1 -0
  8. package/dist/atlas/association.js +112 -0
  9. package/dist/atlas/association.js.map +1 -0
  10. package/dist/atlas/benchmark/backend-shapes.d.ts +47 -0
  11. package/dist/atlas/benchmark/backend-shapes.d.ts.map +1 -0
  12. package/dist/atlas/benchmark/backend-shapes.js +58 -0
  13. package/dist/atlas/benchmark/backend-shapes.js.map +1 -0
  14. package/dist/atlas/benchmark/baselines.d.ts +64 -0
  15. package/dist/atlas/benchmark/baselines.d.ts.map +1 -0
  16. package/dist/atlas/benchmark/baselines.js +112 -0
  17. package/dist/atlas/benchmark/baselines.js.map +1 -0
  18. package/dist/atlas/benchmark/leakage.d.ts +56 -0
  19. package/dist/atlas/benchmark/leakage.d.ts.map +1 -0
  20. package/dist/atlas/benchmark/leakage.js +100 -0
  21. package/dist/atlas/benchmark/leakage.js.map +1 -0
  22. package/dist/atlas/benchmark/loader.d.ts +56 -0
  23. package/dist/atlas/benchmark/loader.d.ts.map +1 -0
  24. package/dist/atlas/benchmark/loader.js +104 -0
  25. package/dist/atlas/benchmark/loader.js.map +1 -0
  26. package/dist/atlas/benchmark/run-atlas.d.ts +72 -0
  27. package/dist/atlas/benchmark/run-atlas.d.ts.map +1 -0
  28. package/dist/atlas/benchmark/run-atlas.js +210 -0
  29. package/dist/atlas/benchmark/run-atlas.js.map +1 -0
  30. package/dist/atlas/benchmark/stats.d.ts +90 -0
  31. package/dist/atlas/benchmark/stats.d.ts.map +1 -0
  32. package/dist/atlas/benchmark/stats.js +159 -0
  33. package/dist/atlas/benchmark/stats.js.map +1 -0
  34. package/dist/atlas/benchmark/study.d.ts +120 -0
  35. package/dist/atlas/benchmark/study.d.ts.map +1 -0
  36. package/dist/atlas/benchmark/study.js +192 -0
  37. package/dist/atlas/benchmark/study.js.map +1 -0
  38. package/dist/atlas/benchmark/types.d.ts +79 -0
  39. package/dist/atlas/benchmark/types.d.ts.map +1 -0
  40. package/dist/atlas/benchmark/types.js +46 -0
  41. package/dist/atlas/benchmark/types.js.map +1 -0
  42. package/dist/atlas/composition-table.d.ts +55 -0
  43. package/dist/atlas/composition-table.d.ts.map +1 -0
  44. package/dist/atlas/composition-table.js +133 -0
  45. package/dist/atlas/composition-table.js.map +1 -0
  46. package/dist/atlas/conventions.d.ts +63 -0
  47. package/dist/atlas/conventions.d.ts.map +1 -0
  48. package/dist/atlas/conventions.js +93 -0
  49. package/dist/atlas/conventions.js.map +1 -0
  50. package/dist/atlas/coverage.d.ts +93 -0
  51. package/dist/atlas/coverage.d.ts.map +1 -0
  52. package/dist/atlas/coverage.js +69 -0
  53. package/dist/atlas/coverage.js.map +1 -0
  54. package/dist/atlas/derivation.d.ts +137 -0
  55. package/dist/atlas/derivation.d.ts.map +1 -0
  56. package/dist/atlas/derivation.js +190 -0
  57. package/dist/atlas/derivation.js.map +1 -0
  58. package/dist/atlas/derive-evidence.d.ts +218 -0
  59. package/dist/atlas/derive-evidence.d.ts.map +1 -0
  60. package/dist/atlas/derive-evidence.js +225 -0
  61. package/dist/atlas/derive-evidence.js.map +1 -0
  62. package/dist/atlas/diffusion/bridges-closure.d.ts +63 -0
  63. package/dist/atlas/diffusion/bridges-closure.d.ts.map +1 -0
  64. package/dist/atlas/diffusion/bridges-closure.js +324 -0
  65. package/dist/atlas/diffusion/bridges-closure.js.map +1 -0
  66. package/dist/atlas/diffusion/bridges.d.ts +36 -0
  67. package/dist/atlas/diffusion/bridges.d.ts.map +1 -0
  68. package/dist/atlas/diffusion/bridges.js +226 -0
  69. package/dist/atlas/diffusion/bridges.js.map +1 -0
  70. package/dist/atlas/diffusion/dimensions.d.ts +21 -0
  71. package/dist/atlas/diffusion/dimensions.d.ts.map +1 -0
  72. package/dist/atlas/diffusion/dimensions.js +21 -0
  73. package/dist/atlas/diffusion/dimensions.js.map +1 -0
  74. package/dist/atlas/diffusion/index.d.ts +16 -0
  75. package/dist/atlas/diffusion/index.d.ts.map +1 -0
  76. package/dist/atlas/diffusion/index.js +23 -0
  77. package/dist/atlas/diffusion/index.js.map +1 -0
  78. package/dist/atlas/diffusion/models.d.ts +24 -0
  79. package/dist/atlas/diffusion/models.d.ts.map +1 -0
  80. package/dist/atlas/diffusion/models.js +139 -0
  81. package/dist/atlas/diffusion/models.js.map +1 -0
  82. package/dist/atlas/diffusion/numerics.d.ts +181 -0
  83. package/dist/atlas/diffusion/numerics.d.ts.map +1 -0
  84. package/dist/atlas/diffusion/numerics.js +251 -0
  85. package/dist/atlas/diffusion/numerics.js.map +1 -0
  86. package/dist/atlas/error-algebra.d.ts +52 -0
  87. package/dist/atlas/error-algebra.d.ts.map +1 -0
  88. package/dist/atlas/error-algebra.js +55 -0
  89. package/dist/atlas/error-algebra.js.map +1 -0
  90. package/dist/atlas/export.d.ts +48 -0
  91. package/dist/atlas/export.d.ts.map +1 -0
  92. package/dist/atlas/export.js +106 -0
  93. package/dist/atlas/export.js.map +1 -0
  94. package/dist/atlas/families.d.ts +14 -0
  95. package/dist/atlas/families.d.ts.map +1 -0
  96. package/dist/atlas/families.js +20 -0
  97. package/dist/atlas/families.js.map +1 -0
  98. package/dist/atlas/index.d.ts +90 -0
  99. package/dist/atlas/index.d.ts.map +1 -0
  100. package/dist/atlas/index.js +69 -0
  101. package/dist/atlas/index.js.map +1 -0
  102. package/dist/atlas/link-prediction.d.ts +71 -0
  103. package/dist/atlas/link-prediction.d.ts.map +1 -0
  104. package/dist/atlas/link-prediction.js +128 -0
  105. package/dist/atlas/link-prediction.js.map +1 -0
  106. package/dist/atlas/model.d.ts +70 -0
  107. package/dist/atlas/model.d.ts.map +1 -0
  108. package/dist/atlas/model.js +26 -0
  109. package/dist/atlas/model.js.map +1 -0
  110. package/dist/atlas/oscillators/bridges-coarse.d.ts +71 -0
  111. package/dist/atlas/oscillators/bridges-coarse.d.ts.map +1 -0
  112. package/dist/atlas/oscillators/bridges-coarse.js +146 -0
  113. package/dist/atlas/oscillators/bridges-coarse.js.map +1 -0
  114. package/dist/atlas/oscillators/bridges-exact.d.ts +70 -0
  115. package/dist/atlas/oscillators/bridges-exact.d.ts.map +1 -0
  116. package/dist/atlas/oscillators/bridges-exact.js +227 -0
  117. package/dist/atlas/oscillators/bridges-exact.js.map +1 -0
  118. package/dist/atlas/oscillators/bridges-limits.d.ts +118 -0
  119. package/dist/atlas/oscillators/bridges-limits.d.ts.map +1 -0
  120. package/dist/atlas/oscillators/bridges-limits.js +342 -0
  121. package/dist/atlas/oscillators/bridges-limits.js.map +1 -0
  122. package/dist/atlas/oscillators/dimensions.d.ts +34 -0
  123. package/dist/atlas/oscillators/dimensions.d.ts.map +1 -0
  124. package/dist/atlas/oscillators/dimensions.js +34 -0
  125. package/dist/atlas/oscillators/dimensions.js.map +1 -0
  126. package/dist/atlas/oscillators/index.d.ts +38 -0
  127. package/dist/atlas/oscillators/index.d.ts.map +1 -0
  128. package/dist/atlas/oscillators/index.js +37 -0
  129. package/dist/atlas/oscillators/index.js.map +1 -0
  130. package/dist/atlas/oscillators/models.d.ts +25 -0
  131. package/dist/atlas/oscillators/models.d.ts.map +1 -0
  132. package/dist/atlas/oscillators/models.js +160 -0
  133. package/dist/atlas/oscillators/models.js.map +1 -0
  134. package/dist/atlas/oscillators/rejections.d.ts +21 -0
  135. package/dist/atlas/oscillators/rejections.d.ts.map +1 -0
  136. package/dist/atlas/oscillators/rejections.js +54 -0
  137. package/dist/atlas/oscillators/rejections.js.map +1 -0
  138. package/dist/atlas/path-bound.d.ts +143 -0
  139. package/dist/atlas/path-bound.d.ts.map +1 -0
  140. package/dist/atlas/path-bound.js +268 -0
  141. package/dist/atlas/path-bound.js.map +1 -0
  142. package/dist/atlas/poster/associations.d.ts +66 -0
  143. package/dist/atlas/poster/associations.d.ts.map +1 -0
  144. package/dist/atlas/poster/associations.js +90 -0
  145. package/dist/atlas/poster/associations.js.map +1 -0
  146. package/dist/atlas/poster/derivations.d.ts +156 -0
  147. package/dist/atlas/poster/derivations.d.ts.map +1 -0
  148. package/dist/atlas/poster/derivations.js +430 -0
  149. package/dist/atlas/poster/derivations.js.map +1 -0
  150. package/dist/atlas/poster/statements.d.ts +198 -0
  151. package/dist/atlas/poster/statements.d.ts.map +1 -0
  152. package/dist/atlas/poster/statements.js +365 -0
  153. package/dist/atlas/poster/statements.js.map +1 -0
  154. package/dist/atlas/public.d.ts +26 -0
  155. package/dist/atlas/public.d.ts.map +1 -0
  156. package/dist/atlas/public.js +21 -0
  157. package/dist/atlas/public.js.map +1 -0
  158. package/dist/atlas/regime.d.ts +171 -0
  159. package/dist/atlas/regime.d.ts.map +1 -0
  160. package/dist/atlas/regime.js +309 -0
  161. package/dist/atlas/regime.js.map +1 -0
  162. package/dist/atlas/serialize.d.ts +50 -0
  163. package/dist/atlas/serialize.d.ts.map +1 -0
  164. package/dist/atlas/serialize.js +180 -0
  165. package/dist/atlas/serialize.js.map +1 -0
  166. package/dist/atlas/statement.d.ts +165 -0
  167. package/dist/atlas/statement.d.ts.map +1 -0
  168. package/dist/atlas/statement.js +176 -0
  169. package/dist/atlas/statement.js.map +1 -0
  170. package/dist/atlas/types.d.ts +308 -0
  171. package/dist/atlas/types.d.ts.map +1 -0
  172. package/dist/atlas/types.js +61 -0
  173. package/dist/atlas/types.js.map +1 -0
  174. package/dist/atlas/waves/bridges-closure.d.ts +39 -0
  175. package/dist/atlas/waves/bridges-closure.d.ts.map +1 -0
  176. package/dist/atlas/waves/bridges-closure.js +223 -0
  177. package/dist/atlas/waves/bridges-closure.js.map +1 -0
  178. package/dist/atlas/waves/bridges.d.ts +49 -0
  179. package/dist/atlas/waves/bridges.d.ts.map +1 -0
  180. package/dist/atlas/waves/bridges.js +265 -0
  181. package/dist/atlas/waves/bridges.js.map +1 -0
  182. package/dist/atlas/waves/index.d.ts +16 -0
  183. package/dist/atlas/waves/index.d.ts.map +1 -0
  184. package/dist/atlas/waves/index.js +23 -0
  185. package/dist/atlas/waves/index.js.map +1 -0
  186. package/dist/atlas/waves/models.d.ts +29 -0
  187. package/dist/atlas/waves/models.d.ts.map +1 -0
  188. package/dist/atlas/waves/models.js +127 -0
  189. package/dist/atlas/waves/models.js.map +1 -0
  190. package/dist/atlas/waves/numerics.d.ts +149 -0
  191. package/dist/atlas/waves/numerics.d.ts.map +1 -0
  192. package/dist/atlas/waves/numerics.js +218 -0
  193. package/dist/atlas/waves/numerics.js.map +1 -0
  194. package/dist/atlas/witness-artifact.d.ts +65 -0
  195. package/dist/atlas/witness-artifact.d.ts.map +1 -0
  196. package/dist/atlas/witness-artifact.js +78 -0
  197. package/dist/atlas/witness-artifact.js.map +1 -0
  198. package/dist/atlas/witness-numeric.d.ts +81 -0
  199. package/dist/atlas/witness-numeric.d.ts.map +1 -0
  200. package/dist/atlas/witness-numeric.js +105 -0
  201. package/dist/atlas/witness-numeric.js.map +1 -0
  202. package/dist/atlas/witness-result.d.ts +77 -0
  203. package/dist/atlas/witness-result.d.ts.map +1 -0
  204. package/dist/atlas/witness-result.js +39 -0
  205. package/dist/atlas/witness-result.js.map +1 -0
  206. package/dist/atlas/witness-specs.d.ts +110 -0
  207. package/dist/atlas/witness-specs.d.ts.map +1 -0
  208. package/dist/atlas/witness-specs.js +372 -0
  209. package/dist/atlas/witness-specs.js.map +1 -0
  210. package/dist/atlas/witness-symbolic.d.ts +79 -0
  211. package/dist/atlas/witness-symbolic.d.ts.map +1 -0
  212. package/dist/atlas/witness-symbolic.js +140 -0
  213. package/dist/atlas/witness-symbolic.js.map +1 -0
  214. package/dist/atlas/witnesses/quantum-support.d.ts +50 -0
  215. package/dist/atlas/witnesses/quantum-support.d.ts.map +1 -0
  216. package/dist/atlas/witnesses/quantum-support.js +48 -0
  217. package/dist/atlas/witnesses/quantum-support.js.map +1 -0
  218. package/dist/bridges/be11-decoherence-confrontation.js.map +1 -1
  219. package/dist/bridges/be21-kss-confrontation.js.map +1 -1
  220. package/dist/bridges/be23-planckian-confrontation.js.map +1 -1
  221. package/dist/bridges/be35-bootstrap-confrontation.js.map +1 -1
  222. package/dist/bridges/be36-gw170817-confrontation.js.map +1 -1
  223. package/dist/bridges/be37-cassini-confrontation.js.map +1 -1
  224. package/dist/bridges/be48-collapse-confrontation.js.map +1 -1
  225. package/dist/bridges/be51-lensing-confrontation.js.map +1 -1
  226. package/dist/bridges/be52-mercury-confrontation.js.map +1 -1
  227. package/dist/bridges/be55-quantum-hall-confrontation.js.map +1 -1
  228. package/dist/bridges/be56-casimir-confrontation.js.map +1 -1
  229. package/dist/bridges/be58-johnson-nyquist-confrontation.js.map +1 -1
  230. package/dist/bridges/be59-ac-josephson-confrontation.js.map +1 -1
  231. package/dist/bridges/be60-fractional-qh-confrontation.js.map +1 -1
  232. package/dist/bridges/be61-wiedemann-franz-confrontation.js.map +1 -1
  233. package/dist/bridges/be62-bcs-gap-confrontation.js.map +1 -1
  234. package/dist/bridges/be63-chandrasekhar-mass-confrontation.js.map +1 -1
  235. package/dist/bridges/be64-eddington-luminosity-confrontation.js.map +1 -1
  236. package/dist/bridges/be65-jeans-mass-confrontation.js.map +1 -1
  237. package/dist/bridges/bridge-equations.d.ts +2 -1
  238. package/dist/bridges/bridge-equations.d.ts.map +1 -1
  239. package/dist/bridges/bridge-equations.js +3 -2
  240. package/dist/bridges/bridge-equations.js.map +1 -1
  241. package/dist/bridges/catalog-adapter.d.ts.map +1 -1
  242. package/dist/bridges/catalog-adapter.js.map +1 -1
  243. package/dist/bridges/equations/_be-helpers.d.ts +2 -2
  244. package/dist/bridges/equations/_be-helpers.js +2 -2
  245. package/dist/bridges/equations/be-20-vacuum-energy.js.map +1 -1
  246. package/dist/bridges/equations/be-35-conformal-bootstrap.d.ts +88 -58
  247. package/dist/bridges/equations/be-35-conformal-bootstrap.d.ts.map +1 -1
  248. package/dist/bridges/equations/be-35-conformal-bootstrap.js +102 -62
  249. package/dist/bridges/equations/be-35-conformal-bootstrap.js.map +1 -1
  250. package/dist/bridges/equations/be-48-grw-localization.d.ts +9 -8
  251. package/dist/bridges/equations/be-48-grw-localization.d.ts.map +1 -1
  252. package/dist/bridges/equations/be-48-grw-localization.js +9 -8
  253. package/dist/bridges/equations/be-48-grw-localization.js.map +1 -1
  254. package/dist/bridges/gravitational-lensing.d.ts +10 -0
  255. package/dist/bridges/gravitational-lensing.d.ts.map +1 -1
  256. package/dist/bridges/gravitational-lensing.js.map +1 -1
  257. package/dist/bridges/index.d.ts +125 -7
  258. package/dist/bridges/index.d.ts.map +1 -1
  259. package/dist/bridges/index.js +483 -20
  260. package/dist/bridges/index.js.map +1 -1
  261. package/dist/bridges/perihelion-precession.d.ts +10 -0
  262. package/dist/bridges/perihelion-precession.d.ts.map +1 -1
  263. package/dist/bridges/perihelion-precession.js.map +1 -1
  264. package/dist/bridges/rhs-registry.js +2 -2
  265. package/dist/canonical/canonical-equation.d.ts +15 -0
  266. package/dist/canonical/canonical-equation.d.ts.map +1 -1
  267. package/dist/canonical/entries/_l1-build.d.ts +1 -1
  268. package/dist/canonical/entries/_l1-build.d.ts.map +1 -1
  269. package/dist/canonical/entries/atomic.d.ts.map +1 -1
  270. package/dist/canonical/entries/atomic.js +23 -0
  271. package/dist/canonical/entries/atomic.js.map +1 -1
  272. package/dist/canonical/entries/nonmonomial.d.ts.map +1 -1
  273. package/dist/canonical/entries/nonmonomial.js +93 -0
  274. package/dist/canonical/entries/nonmonomial.js.map +1 -1
  275. package/dist/canonical/normal-form.js.map +1 -1
  276. package/dist/canonical/residual.d.ts +28 -0
  277. package/dist/canonical/residual.d.ts.map +1 -0
  278. package/dist/canonical/residual.js +31 -0
  279. package/dist/canonical/residual.js.map +1 -0
  280. package/dist/cli/command.d.ts +8 -0
  281. package/dist/cli/command.d.ts.map +1 -1
  282. package/dist/cli/command.js +10 -0
  283. package/dist/cli/command.js.map +1 -1
  284. package/dist/cli/commands/atlas.d.ts +3 -0
  285. package/dist/cli/commands/atlas.d.ts.map +1 -0
  286. package/dist/cli/commands/atlas.js +158 -0
  287. package/dist/cli/commands/atlas.js.map +1 -0
  288. package/dist/cli/commands/confront.js.map +1 -1
  289. package/dist/cli/commands/coverage.js +3 -3
  290. package/dist/cli/commands/index.d.ts +3 -0
  291. package/dist/cli/commands/index.d.ts.map +1 -1
  292. package/dist/cli/commands/index.js +3 -0
  293. package/dist/cli/commands/index.js.map +1 -1
  294. package/dist/cli/commands/map.d.ts.map +1 -1
  295. package/dist/cli/commands/map.js +161 -27
  296. package/dist/cli/commands/map.js.map +1 -1
  297. package/dist/cli/commands/path.d.ts +3 -0
  298. package/dist/cli/commands/path.d.ts.map +1 -0
  299. package/dist/cli/commands/path.js +145 -0
  300. package/dist/cli/commands/path.js.map +1 -0
  301. package/dist/cli/commands/recover.d.ts.map +1 -1
  302. package/dist/cli/commands/recover.js +25 -6
  303. package/dist/cli/commands/recover.js.map +1 -1
  304. package/dist/cli/commands/regime.d.ts +14 -0
  305. package/dist/cli/commands/regime.d.ts.map +1 -0
  306. package/dist/cli/commands/regime.js +189 -0
  307. package/dist/cli/commands/regime.js.map +1 -0
  308. package/dist/cli/errors.d.ts.map +1 -1
  309. package/dist/cli/graphs.d.ts.map +1 -1
  310. package/dist/cli/graphs.js +5 -1
  311. package/dist/cli/graphs.js.map +1 -1
  312. package/dist/cli/main.d.ts.map +1 -1
  313. package/dist/cli/main.js +22 -0
  314. package/dist/cli/main.js.map +1 -1
  315. package/dist/cli/output.d.ts +6 -1
  316. package/dist/cli/output.d.ts.map +1 -1
  317. package/dist/cli/output.js.map +1 -1
  318. package/dist/cli/version.js.map +1 -1
  319. package/dist/cli-api.d.ts +16 -0
  320. package/dist/cli-api.d.ts.map +1 -1
  321. package/dist/cli-api.js +18 -0
  322. package/dist/cli-api.js.map +1 -1
  323. package/dist/composition/axis-audit.js.map +1 -1
  324. package/dist/composition/bridge-prediction.d.ts.map +1 -1
  325. package/dist/composition/bridge-prediction.js +0 -0
  326. package/dist/composition/bridge-prediction.js.map +1 -1
  327. package/dist/composition/canonical-graph.d.ts +2 -2
  328. package/dist/composition/canonical-graph.js +2 -2
  329. package/dist/composition/canonical-graph.js.map +1 -1
  330. package/dist/composition/compose-symbolic.d.ts.map +1 -1
  331. package/dist/composition/compose-symbolic.js.map +1 -1
  332. package/dist/composition/compose.d.ts.map +1 -1
  333. package/dist/composition/compose.js +80 -1
  334. package/dist/composition/compose.js.map +1 -1
  335. package/dist/composition/consequence.js.map +1 -1
  336. package/dist/composition/discovery.js.map +1 -1
  337. package/dist/composition/edge.d.ts +64 -0
  338. package/dist/composition/edge.d.ts.map +1 -1
  339. package/dist/composition/edge.js +29 -0
  340. package/dist/composition/edge.js.map +1 -1
  341. package/dist/composition/edges/calibration.d.ts.map +1 -1
  342. package/dist/composition/edges/calibration.js +46 -0
  343. package/dist/composition/edges/calibration.js.map +1 -1
  344. package/dist/composition/edges/catalog-quantum.d.ts.map +1 -1
  345. package/dist/composition/edges/catalog-quantum.js +9 -0
  346. package/dist/composition/edges/catalog-quantum.js.map +1 -1
  347. package/dist/composition/edges/catalog-tranche.d.ts.map +1 -1
  348. package/dist/composition/edges/catalog-tranche.js +18 -0
  349. package/dist/composition/edges/catalog-tranche.js.map +1 -1
  350. package/dist/composition/enumerate.js.map +1 -1
  351. package/dist/composition/explain.js.map +1 -1
  352. package/dist/composition/expr-eval.d.ts.map +1 -1
  353. package/dist/composition/expr-eval.js.map +1 -1
  354. package/dist/composition/expr-simplify.d.ts +13 -0
  355. package/dist/composition/expr-simplify.d.ts.map +1 -1
  356. package/dist/composition/expr-simplify.js +25 -0
  357. package/dist/composition/expr-simplify.js.map +1 -1
  358. package/dist/composition/expr-subst.js.map +1 -1
  359. package/dist/composition/graph-viz-svg.d.ts.map +1 -1
  360. package/dist/composition/graph-viz.d.ts +118 -1
  361. package/dist/composition/graph-viz.d.ts.map +1 -1
  362. package/dist/composition/graph-viz.js +189 -6
  363. package/dist/composition/graph-viz.js.map +1 -1
  364. package/dist/composition/identifiability.js.map +1 -1
  365. package/dist/composition/index.d.ts +4 -2
  366. package/dist/composition/index.d.ts.map +1 -1
  367. package/dist/composition/index.js +2 -1
  368. package/dist/composition/index.js.map +1 -1
  369. package/dist/composition/poster-source.d.ts +153 -0
  370. package/dist/composition/poster-source.d.ts.map +1 -0
  371. package/dist/composition/poster-source.js +183 -0
  372. package/dist/composition/poster-source.js.map +1 -0
  373. package/dist/composition/probe/backend-protocol.d.ts +34 -1
  374. package/dist/composition/probe/backend-protocol.d.ts.map +1 -1
  375. package/dist/composition/probe/backend-protocol.js +9 -2
  376. package/dist/composition/probe/backend-protocol.js.map +1 -1
  377. package/dist/composition/probe/candidate-store.d.ts.map +1 -1
  378. package/dist/composition/probe/limits.js.map +1 -1
  379. package/dist/composition/probe/pipeline.js.map +1 -1
  380. package/dist/composition/probe/problem.js.map +1 -1
  381. package/dist/composition/probe/residual.d.ts.map +1 -1
  382. package/dist/composition/probe/residual.js.map +1 -1
  383. package/dist/composition/probe/search-budget.js.map +1 -1
  384. package/dist/composition/proposed-bridges.d.ts +2 -2
  385. package/dist/composition/proposed-bridges.d.ts.map +1 -1
  386. package/dist/composition/proposed-bridges.js +1 -1
  387. package/dist/composition/proposed-bridges.js.map +1 -1
  388. package/dist/composition/retrodiction.js.map +1 -1
  389. package/dist/composition/uncertainty.d.ts +52 -2
  390. package/dist/composition/uncertainty.d.ts.map +1 -1
  391. package/dist/composition/uncertainty.js +38 -2
  392. package/dist/composition/uncertainty.js.map +1 -1
  393. package/dist/composition/user-equation.d.ts.map +1 -1
  394. package/dist/core/flux-rules.d.ts.map +1 -1
  395. package/dist/core/flux-rules.js.map +1 -1
  396. package/dist/core/labeled-tensor.d.ts.map +1 -1
  397. package/dist/core/regime-registry.d.ts.map +1 -1
  398. package/dist/core/regime-rule-install.js.map +1 -1
  399. package/dist/core/tensor.d.ts.map +1 -1
  400. package/dist/core/tensor.js.map +1 -1
  401. package/dist/core/types.d.ts.map +1 -1
  402. package/dist/diff/bridge-ast-gradient.js.map +1 -1
  403. package/dist/dimensional/ast-types.d.ts +31 -1
  404. package/dist/dimensional/ast-types.d.ts.map +1 -1
  405. package/dist/dimensional/bridge-check.d.ts +1 -1
  406. package/dist/dimensional/bridge-check.js +1 -1
  407. package/dist/dimensional/buckingham.d.ts.map +1 -1
  408. package/dist/dimensional/connection.d.ts +2 -0
  409. package/dist/dimensional/connection.d.ts.map +1 -1
  410. package/dist/dimensional/connection.js +2 -0
  411. package/dist/dimensional/connection.js.map +1 -1
  412. package/dist/dimensional/curvature-composite.d.ts +5 -3
  413. package/dist/dimensional/curvature-composite.d.ts.map +1 -1
  414. package/dist/dimensional/curvature-composite.js +1 -0
  415. package/dist/dimensional/curvature-composite.js.map +1 -1
  416. package/dist/dimensional/curvature-invariants.d.ts +2 -0
  417. package/dist/dimensional/curvature-invariants.d.ts.map +1 -1
  418. package/dist/dimensional/curvature-invariants.js +2 -0
  419. package/dist/dimensional/curvature-invariants.js.map +1 -1
  420. package/dist/dimensional/dimension-spec.d.ts.map +1 -1
  421. package/dist/dimensional/einstein-equation.d.ts +3 -3
  422. package/dist/dimensional/einstein-equation.js +3 -3
  423. package/dist/dimensional/errors.d.ts.map +1 -1
  424. package/dist/dimensional/metric.d.ts +5 -2
  425. package/dist/dimensional/metric.d.ts.map +1 -1
  426. package/dist/dimensional/metric.js +5 -2
  427. package/dist/dimensional/metric.js.map +1 -1
  428. package/dist/dimensional/tensor-trace.js.map +1 -1
  429. package/dist/dimensional/validator-registry.js.map +1 -1
  430. package/dist/dimensional/validator.d.ts +3 -2
  431. package/dist/dimensional/validator.d.ts.map +1 -1
  432. package/dist/dimensional/validator.js +23 -4
  433. package/dist/dimensional/validator.js.map +1 -1
  434. package/dist/index.d.ts +4 -3
  435. package/dist/index.d.ts.map +1 -1
  436. package/dist/index.js +4 -1
  437. package/dist/index.js.map +1 -1
  438. package/dist/numerical/curvature-lowering-helpers.d.ts.map +1 -1
  439. package/dist/numerical/curvature-lowering-helpers.js +104 -0
  440. package/dist/numerical/curvature-lowering-helpers.js.map +1 -1
  441. package/dist/numerical/errors.d.ts.map +1 -1
  442. package/dist/numerical/errors.js.map +1 -1
  443. package/dist/numerical/float64-engine.d.ts.map +1 -1
  444. package/dist/numerical/float64-engine.js +51 -24
  445. package/dist/numerical/float64-engine.js.map +1 -1
  446. package/dist/numerical/formula-dimension.d.ts.map +1 -1
  447. package/dist/numerical/formula-dimension.js.map +1 -1
  448. package/dist/numerical/formula.d.ts.map +1 -1
  449. package/dist/numerical/formula.js.map +1 -1
  450. package/dist/numerical/geometrized.d.ts.map +1 -1
  451. package/dist/numerical/gl4-integrator.d.ts +3 -3
  452. package/dist/numerical/gl4-integrator.js +3 -3
  453. package/dist/numerical/killing.d.ts +47 -5
  454. package/dist/numerical/killing.d.ts.map +1 -1
  455. package/dist/numerical/killing.js +41 -3
  456. package/dist/numerical/killing.js.map +1 -1
  457. package/dist/numerical/klein-gordon.d.ts +2 -2
  458. package/dist/numerical/klein-gordon.js +2 -2
  459. package/dist/numerical/lowering.d.ts +2 -2
  460. package/dist/numerical/lowering.d.ts.map +1 -1
  461. package/dist/numerical/lowering.js +5 -3
  462. package/dist/numerical/lowering.js.map +1 -1
  463. package/dist/numerical/mathts-engine.d.ts.map +1 -1
  464. package/dist/numerical/mathts-engine.js.map +1 -1
  465. package/dist/numerical/metric-inverse.js.map +1 -1
  466. package/dist/numerical/perihelion-finder.d.ts +15 -13
  467. package/dist/numerical/perihelion-finder.d.ts.map +1 -1
  468. package/dist/numerical/perihelion-finder.js +15 -13
  469. package/dist/numerical/perihelion-finder.js.map +1 -1
  470. package/dist/numerical/weyl-lowering.d.ts.map +1 -1
  471. package/dist/numerical/weyl-lowering.js +90 -40
  472. package/dist/numerical/weyl-lowering.js.map +1 -1
  473. package/package.json +121 -104
@@ -0,0 +1 @@
1
+ {"version":3,"file":"witness-result.d.ts","sourceRoot":"","sources":["../../src/atlas/witness-result.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAEH;;;;;;;;GAQG;AACH,MAAM,MAAM,aAAa,GAAG,SAAS,GAAG,SAAS,GAAG,YAAY,CAAC;AAEjE;;;;;GAKG;AACH,MAAM,MAAM,gBAAgB;AAC1B,kEAAkE;AAChE,aAAa;AACf,8DAA8D;GAC5D,SAAS;AACX,yDAAyD;GACvD,aAAa;AACf,qEAAqE;GACnE,gBAAgB;AAClB,sEAAsE;GACpE,gBAAgB,CAAC;AAErB,+CAA+C;AAC/C,MAAM,WAAW,gBAAgB;IAC/B,0DAA0D;IAC1D,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,IAAI,EAAE,UAAU,GAAG,SAAS,CAAC;IACtC,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAC;IAC/B,iEAAiE;IACjE,QAAQ,CAAC,MAAM,CAAC,EAAE,gBAAgB,CAAC;IACnC,6EAA6E;IAC7E,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,sCAAsC;IACtC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;CAC5B;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,iBAAiB,CAC/B,OAAO,EAAE,SAAS,gBAAgB,EAAE,GACnC,WAAW,CAAC,MAAM,CAAC,CAErB"}
@@ -0,0 +1,39 @@
1
+ /**
2
+ * Atlas Phase 4, S4.2 — the shape a witness run reports.
3
+ *
4
+ * Design note: `docs/planning/Atlas-Phase-4-Design.md` §2.2.
5
+ *
6
+ * **The load-bearing distinction in this file: a check that DID NOT RUN is not
7
+ * a check that FAILED.** Peer absent, budget exhausted, and parser throw are
8
+ * all `'unresolved'`, each carrying the reason it could not answer. Only a
9
+ * check that COMPLETES and finds a disagreement is `'refuted'`.
10
+ *
11
+ * This repo has been bitten by exactly that conflation more than once — a
12
+ * checker that discarded its own stderr manufactured a false negative
13
+ * indistinguishable from a clean pass. Folding "could not run" into "failed"
14
+ * is the same defect with the sign flipped: it turns a missing optional peer
15
+ * into a refutation of the physics.
16
+ *
17
+ * Nothing here throws. A runner that threw would force every caller into a
18
+ * `try`/`catch` whose `catch` arm cannot tell which of the three outcomes it
19
+ * is looking at.
20
+ *
21
+ * @module atlas/witness-result
22
+ * @internal
23
+ */
24
+ /**
25
+ * The ids of runs that CHECKED, as `deriveEvidence` wants its
26
+ * `passingWitnessIds` argument.
27
+ *
28
+ * A convenience with one purpose: keep the mapping from run results to
29
+ * "passing" in ONE place. Writing `results.filter(r => r.status !== 'refuted')`
30
+ * at a call site would hand `symbolically-checked` to every unresolved run —
31
+ * the free-tag defect `derive-evidence.ts` documents at length, reintroduced
32
+ * one layer up.
33
+ *
34
+ * @internal
35
+ */
36
+ export function passingWitnessIds(results) {
37
+ return new Set(results.filter((r) => r.status === 'checked').map((r) => r.witnessId));
38
+ }
39
+ //# sourceMappingURL=witness-result.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"witness-result.js","sourceRoot":"","sources":["../../src/atlas/witness-result.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AA6CH;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,iBAAiB,CAC/B,OAAoC;IAEpC,OAAO,IAAI,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;AACxF,CAAC"}
@@ -0,0 +1,110 @@
1
+ /**
2
+ * Atlas Phase 4, S4.3 — the EXECUTABLE witness registry.
3
+ *
4
+ * Design note: `docs/planning/Atlas-Phase-4-Design.md` §3.
5
+ *
6
+ * A `Witness` record names a check and the test file that runs it; it carries
7
+ * nothing a runner can execute. This module holds the executable form of every
8
+ * witness the results artifact covers, keyed by the record it supports. The
9
+ * Lead-run `scripts/emit-witness-results.mjs` runs exactly this list, and
10
+ * `tests/atlas/witness-results.test.ts` deep-equals the committed artifact
11
+ * against a fresh run of it.
12
+ *
13
+ * ## The symbolic specs apply the bridge's DICTIONARY, they do not restate it
14
+ *
15
+ * Writing `lhs` and `rhs` as two hand-typed ASTs that happen to be equal would
16
+ * check nothing but the typist. Each spec below starts from the PREMISE
17
+ * model's expression and pushes it through the bridge's variable dictionary
18
+ * with `substitute`; the CAS then has to show that the result equals the
19
+ * CONCLUSION model's expression. What is checked is the dictionary.
20
+ *
21
+ * @module atlas/witness-specs
22
+ * @internal
23
+ */
24
+ import type { HeatFixture, LangevinFixture, SteadyStateFixture, WickFixture } from './diffusion/numerics.js';
25
+ import type { AcousticFixture, DalembertFixture, StringFixture } from './waves/numerics.js';
26
+ import type { NumericWitnessSpec } from './witness-numeric.js';
27
+ import type { SymbolicWitnessSpec } from './witness-symbolic.js';
28
+ /** A symbolic spec bound to the record it supports. @internal */
29
+ export interface RegisteredSymbolicWitness {
30
+ /** The `AtlasBridge.id` (or other record id) the witness belongs to. */
31
+ readonly recordId: string;
32
+ readonly kind: 'symbolic';
33
+ readonly spec: SymbolicWitnessSpec;
34
+ }
35
+ /** A numeric spec bound to the record it supports. @internal */
36
+ export interface RegisteredNumericWitness {
37
+ readonly recordId: string;
38
+ readonly kind: 'numeric';
39
+ readonly spec: NumericWitnessSpec;
40
+ }
41
+ /** One entry of the registry. @internal */
42
+ export type RegisteredWitness = RegisteredSymbolicWitness | RegisteredNumericWitness;
43
+ /** WD1 fixture: D and t, fixed while the walk is refined. @internal */
44
+ export declare const WD1_FIXTURE: {
45
+ readonly D: 0.5;
46
+ readonly t: 2;
47
+ };
48
+ /**
49
+ * WD2 fixture. κ, ρ and c_p are chosen so the heat equation's own variables
50
+ * are all different from 1 while κ/(ρ c_p) = 1: a dictionary that dropped or
51
+ * inverted a factor would move the answer.
52
+ *
53
+ * @internal
54
+ */
55
+ export declare const WD2_FIXTURE: HeatFixture;
56
+ /** WD3 fixture: an off-centre point, so no symmetry zeroes a derivative. @internal */
57
+ export declare const WD3_FIXTURE: WickFixture;
58
+ /** WS1 fixture: F and μ both ≠ 1 while c = √(F/μ) = 2. @internal */
59
+ export declare const WS1_FIXTURE: StringFixture;
60
+ /** WS2 fixture: an off-centre point where both profiles contribute. @internal */
61
+ export declare const WS2_FIXTURE: DalembertFixture;
62
+ /** WS3 fixture: γ = 1.4 with nondimensional p₀ = 1, ρ₀ = 1.2. @internal */
63
+ export declare const WS3_FIXTURE: AcousticFixture;
64
+ /** WS4 fixture: ω₀ = c = 1, base wavenumber k₀ = 10 (the domain edge ω₀/(ck) = 0.1). @internal */
65
+ export declare const WS4_FIXTURE: {
66
+ readonly omega0: 1;
67
+ readonly c: 1;
68
+ readonly k0: 10;
69
+ };
70
+ /** WD4 fixture: m, γ, k_BT all ≠ 1; τ_p = m/γ = 4. @internal */
71
+ export declare const WD4_FIXTURE: LangevinFixture;
72
+ /** WD6 base: τ₀ = 0.1 with D = q = 1, so ε = τ at the resolution's τ = τ₀/resolution. @internal */
73
+ export declare const WD6_FIXTURE: {
74
+ readonly tau0: 0.1;
75
+ readonly D: 1;
76
+ readonly q: 1;
77
+ };
78
+ /** WD7 base: ε = 25 · resolution with D = q = 1. @internal */
79
+ export declare const WD7_FIXTURE: {
80
+ readonly eps0: 25;
81
+ readonly D: 1;
82
+ readonly q: 1;
83
+ };
84
+ /** WD8 fixture: a unit rod held at 2 and 5, base time 0.1 (Fourier number 0.1 per unit). @internal */
85
+ export declare const WD8_FIXTURE: SteadyStateFixture;
86
+ /** WS5 base: x₀ = ck/ω₀ = 0.1, halved per resolution step. @internal */
87
+ export declare const WS5_FIXTURE: {
88
+ readonly x0: 0.1;
89
+ };
90
+ /** WS6 fixture: c = 1, ω₀ = 2, t = 3; resolution = time steps. @internal */
91
+ export declare const WS6_FIXTURE: {
92
+ readonly c: 1;
93
+ readonly omega0: 2;
94
+ readonly tEnd: 3;
95
+ };
96
+ /** WS7 fixture: F = 100, μ = 0.01 (so √(F/μ) = 100), EI = 0.01, k₀ = 10 (β = 0.01 at res 1). @internal */
97
+ export declare const WS7_FIXTURE: {
98
+ readonly F: 100;
99
+ readonly mu: 0.01;
100
+ readonly EI: 0.01;
101
+ readonly k0: 10;
102
+ };
103
+ /**
104
+ * Every witness the results artifact covers, in a fixed order (the artifact is
105
+ * emitted in this order, so reordering is a reviewable diff, not churn).
106
+ *
107
+ * @internal
108
+ */
109
+ export declare const WITNESS_REGISTRY: readonly RegisteredWitness[];
110
+ //# sourceMappingURL=witness-specs.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"witness-specs.d.ts","sourceRoot":"","sources":["../../src/atlas/witness-specs.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAwBH,OAAO,KAAK,EACV,WAAW,EACX,eAAe,EACf,kBAAkB,EAClB,WAAW,EACZ,MAAM,yBAAyB,CAAC;AAajC,OAAO,KAAK,EAAE,eAAe,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAC5F,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC/D,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAEjE,iEAAiE;AACjE,MAAM,WAAW,yBAAyB;IACxC,wEAAwE;IACxE,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;IAC1B,QAAQ,CAAC,IAAI,EAAE,mBAAmB,CAAC;CACpC;AAED,gEAAgE;AAChE,MAAM,WAAW,wBAAwB;IACvC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;IACzB,QAAQ,CAAC,IAAI,EAAE,kBAAkB,CAAC;CACnC;AAED,2CAA2C;AAC3C,MAAM,MAAM,iBAAiB,GAAG,yBAAyB,GAAG,wBAAwB,CAAC;AA4CrF,uEAAuE;AACvE,eAAO,MAAM,WAAW;aAAK,CAAC,EAAE,GAAG;aAAE,CAAC,EAAE,CAAC;CAAW,CAAC;AAErD;;;;;;GAMG;AACH,eAAO,MAAM,WAAW,EAAE,WAOzB,CAAC;AAEF,sFAAsF;AACtF,eAAO,MAAM,WAAW,EAAE,WAAoE,CAAC;AAU/F,oEAAoE;AACpE,eAAO,MAAM,WAAW,EAAE,aAAkD,CAAC;AAE7E,iFAAiF;AACjF,eAAO,MAAM,WAAW,EAAE,gBAAsD,CAAC;AAEjF,2EAA2E;AAC3E,eAAO,MAAM,WAAW,EAAE,eAA8D,CAAC;AAEzF,kGAAkG;AAClG,eAAO,MAAM,WAAW;aAAK,MAAM,EAAE,CAAC;aAAE,CAAC,EAAE,CAAC;aAAE,EAAE,EAAE,EAAE;CAAW,CAAC;AAIhE,gEAAgE;AAChE,eAAO,MAAM,WAAW,EAAE,eAA+C,CAAC;AAE1E,mGAAmG;AACnG,eAAO,MAAM,WAAW;aAAK,IAAI,EAAE,GAAG;aAAE,CAAC,EAAE,CAAC;aAAE,CAAC,EAAE,CAAC;CAAW,CAAC;AAE9D,8DAA8D;AAC9D,eAAO,MAAM,WAAW;aAAK,IAAI,EAAE,EAAE;aAAE,CAAC,EAAE,CAAC;aAAE,CAAC,EAAE,CAAC;CAAW,CAAC;AAE7D,sGAAsG;AACtG,eAAO,MAAM,WAAW,EAAE,kBAOzB,CAAC;AAEF,wEAAwE;AACxE,eAAO,MAAM,WAAW;aAAK,EAAE,EAAE,GAAG;CAAW,CAAC;AAEhD,4EAA4E;AAC5E,eAAO,MAAM,WAAW;aAAK,CAAC,EAAE,CAAC;aAAE,MAAM,EAAE,CAAC;aAAE,IAAI,EAAE,CAAC;CAAW,CAAC;AAEjE,0GAA0G;AAC1G,eAAO,MAAM,WAAW;aAAK,CAAC,EAAE,GAAG;aAAE,EAAE,EAAE,IAAI;aAAE,EAAE,EAAE,IAAI;aAAE,EAAE,EAAE,EAAE;CAAW,CAAC;AAQ3E;;;;;GAKG;AACH,eAAO,MAAM,gBAAgB,EAAE,SAAS,iBAAiB,EAwPxD,CAAC"}
@@ -0,0 +1,372 @@
1
+ /**
2
+ * Atlas Phase 4, S4.3 — the EXECUTABLE witness registry.
3
+ *
4
+ * Design note: `docs/planning/Atlas-Phase-4-Design.md` §3.
5
+ *
6
+ * A `Witness` record names a check and the test file that runs it; it carries
7
+ * nothing a runner can execute. This module holds the executable form of every
8
+ * witness the results artifact covers, keyed by the record it supports. The
9
+ * Lead-run `scripts/emit-witness-results.mjs` runs exactly this list, and
10
+ * `tests/atlas/witness-results.test.ts` deep-equals the committed artifact
11
+ * against a fresh run of it.
12
+ *
13
+ * ## The symbolic specs apply the bridge's DICTIONARY, they do not restate it
14
+ *
15
+ * Writing `lhs` and `rhs` as two hand-typed ASTs that happen to be equal would
16
+ * check nothing but the typist. Each spec below starts from the PREMISE
17
+ * model's expression and pushes it through the bridge's variable dictionary
18
+ * with `substitute`; the CAS then has to show that the result equals the
19
+ * CONCLUSION model's expression. What is checked is the dictionary.
20
+ *
21
+ * @module atlas/witness-specs
22
+ * @internal
23
+ */
24
+ import { sym } from '../dimensional/ast-builders.js';
25
+ import { DIMENSIONLESS, ENERGY, LENGTH, MASS } from '../dimensional/types.js';
26
+ import { substitute } from '../composition/expr-subst.js';
27
+ import { CAPACITANCE, DAMPING, INDUCTANCE, RESISTANCE, SPRING_CONSTANT, } from './oscillators/dimensions.js';
28
+ import { heatSteadyDeviation, langevinMsdRatio, telegraphSlowRateRatio, telegraphWaveFrequencyRatio, diffusionKernel, gaussianSpread, heatFtcsCentre, randomWalkCentralDensity, wickHeatResidual, } from './diffusion/numerics.js';
29
+ import { DENSITY, DIFFUSIVITY, SPECIFIC_HEAT, THERMAL_CONDUCTIVITY } from './diffusion/dimensions.js';
30
+ import { VISCOSITY } from './diffusion/models.js';
31
+ import { wickRotatedFreeKernel } from './witnesses/quantum-support.js';
32
+ import { kgNonrelativisticError, kgUniformModeValue, stiffStringPhaseVelocity, acousticLeapfrogQuarter, dalembertResidual, kleinGordonPhaseVelocity, stringLeapfrogMidpoint, } from './waves/numerics.js';
33
+ const op = (o, ...args) => ({
34
+ kind: 'op',
35
+ op: o,
36
+ args,
37
+ });
38
+ const n = (value) => sym(String(value), DIMENSIONLESS);
39
+ /**
40
+ * Push `expr` through a variable dictionary, REFUSING a mapping that matches no
41
+ * leaf. A zero-occurrence substitution is a silent no-op that would leave the
42
+ * premise variable in place and let the check pass or fail for the wrong
43
+ * reason — the same guard `composeSymbolic` applies (Adam A-3).
44
+ */
45
+ function applyDictionary(expr, dictionary) {
46
+ let out = expr;
47
+ for (const [name, replacement] of Object.entries(dictionary)) {
48
+ const r = substitute(out, name, replacement);
49
+ if (r.count === 0) {
50
+ throw new Error(`witness-specs: dictionary entry '${name}' matches no leaf`);
51
+ }
52
+ out = r.expr;
53
+ }
54
+ return out;
55
+ }
56
+ // Spring and LC symbols, with the dimensions the oscillator models declare.
57
+ const m = sym('m', MASS);
58
+ const k = sym('k', SPRING_CONSTANT);
59
+ const b = sym('b', DAMPING);
60
+ const L = sym('L', INDUCTANCE);
61
+ const C = sym('C', CAPACITANCE);
62
+ const R = sym('R', RESISTANCE);
63
+ /** The spring ↔ circuit dictionary of `ab-spring-lc` / `ab-damped-rlc`: m ↔ L, k ↔ 1/C, b ↔ R. */
64
+ const SPRING_TO_CIRCUIT = {
65
+ m: L,
66
+ k: op('/', n(1), C),
67
+ b: R,
68
+ };
69
+ // ── Diffusion family (S4.4) ────────────────────────────────────────────────
70
+ /** WD1 fixture: D and t, fixed while the walk is refined. @internal */
71
+ export const WD1_FIXTURE = { D: 0.5, t: 2 };
72
+ /**
73
+ * WD2 fixture. κ, ρ and c_p are chosen so the heat equation's own variables
74
+ * are all different from 1 while κ/(ρ c_p) = 1: a dictionary that dropped or
75
+ * inverted a factor would move the answer.
76
+ *
77
+ * @internal
78
+ */
79
+ export const WD2_FIXTURE = {
80
+ kappa: 2,
81
+ rho: 4,
82
+ cp: 0.5,
83
+ s0: 0.05,
84
+ tEnd: 0.2,
85
+ halfWidth: 4,
86
+ };
87
+ /** WD3 fixture: an off-centre point, so no symmetry zeroes a derivative. @internal */
88
+ export const WD3_FIXTURE = { hbar: 1, m: 0.5, s: 0.7, x: 0.3, tau: 0.4, h0: 0.1 };
89
+ const kappa = sym('kappa', THERMAL_CONDUCTIVITY);
90
+ const rho = sym('rho', DENSITY);
91
+ const cp = sym('cp', SPECIFIC_HEAT);
92
+ const D = sym('D', DIFFUSIVITY);
93
+ const q = sym('q', { ...LENGTH, L: -1 });
94
+ // ── Wave family (S4.5) ─────────────────────────────────────────────────────
95
+ /** WS1 fixture: F and μ both ≠ 1 while c = √(F/μ) = 2. @internal */
96
+ export const WS1_FIXTURE = { tension: 2, mu: 0.5, tEnd: 0.3 };
97
+ /** WS2 fixture: an off-centre point where both profiles contribute. @internal */
98
+ export const WS2_FIXTURE = { c: 1.5, x: 0.4, t: 0.3, h0: 0.1 };
99
+ /** WS3 fixture: γ = 1.4 with nondimensional p₀ = 1, ρ₀ = 1.2. @internal */
100
+ export const WS3_FIXTURE = { p0: 1, rho0: 1.2, gamma: 1.4, tEnd: 0.37 };
101
+ /** WS4 fixture: ω₀ = c = 1, base wavenumber k₀ = 10 (the domain edge ω₀/(ck) = 0.1). @internal */
102
+ export const WS4_FIXTURE = { omega0: 1, c: 1, k0: 10 };
103
+ // ── Sprint 4 closure ───────────────────────────────────────────────────────
104
+ /** WD4 fixture: m, γ, k_BT all ≠ 1; τ_p = m/γ = 4. @internal */
105
+ export const WD4_FIXTURE = { m: 2, gamma: 0.5, kT: 1.5 };
106
+ /** WD6 base: τ₀ = 0.1 with D = q = 1, so ε = τ at the resolution's τ = τ₀/resolution. @internal */
107
+ export const WD6_FIXTURE = { tau0: 0.1, D: 1, q: 1 };
108
+ /** WD7 base: ε = 25 · resolution with D = q = 1. @internal */
109
+ export const WD7_FIXTURE = { eps0: 25, D: 1, q: 1 };
110
+ /** WD8 fixture: a unit rod held at 2 and 5, base time 0.1 (Fourier number 0.1 per unit). @internal */
111
+ export const WD8_FIXTURE = {
112
+ alpha: 1,
113
+ ell: 1,
114
+ tLeft: 2,
115
+ tRight: 5,
116
+ t0: 0.1,
117
+ cells: 40,
118
+ };
119
+ /** WS5 base: x₀ = ck/ω₀ = 0.1, halved per resolution step. @internal */
120
+ export const WS5_FIXTURE = { x0: 0.1 };
121
+ /** WS6 fixture: c = 1, ω₀ = 2, t = 3; resolution = time steps. @internal */
122
+ export const WS6_FIXTURE = { c: 1, omega0: 2, tEnd: 3 };
123
+ /** WS7 fixture: F = 100, μ = 0.01 (so √(F/μ) = 100), EI = 0.01, k₀ = 10 (β = 0.01 at res 1). @internal */
124
+ export const WS7_FIXTURE = { F: 100, mu: 0.01, EI: 0.01, k0: 10 };
125
+ const kT = sym('kT', ENERGY);
126
+ const gammaSym = sym('gamma', DAMPING);
127
+ const eta = sym('eta', VISCOSITY);
128
+ const a = sym('a', LENGTH);
129
+ const pi = sym('pi', DIMENSIONLESS);
130
+ /**
131
+ * Every witness the results artifact covers, in a fixed order (the artifact is
132
+ * emitted in this order, so reordering is a reviewable diff, not churn).
133
+ *
134
+ * @internal
135
+ */
136
+ export const WITNESS_REGISTRY = [
137
+ {
138
+ // ω0² of the spring, pushed through the dictionary, is ω0² of the LC circuit.
139
+ recordId: 'ab-spring-lc',
140
+ kind: 'symbolic',
141
+ spec: {
142
+ id: 'W1s',
143
+ lhs: applyDictionary(op('/', k, m), { m: SPRING_TO_CIRCUIT['m'], k: SPRING_TO_CIRCUIT['k'] }),
144
+ rhs: op('/', n(1), op('*', L, C)),
145
+ },
146
+ },
147
+ {
148
+ // ζ² of the damped spring, b²/(4mk), pushed through the dictionary, is ζ² of
149
+ // the RLC circuit, R²C/(4L). The squared form avoids a fractional exponent
150
+ // on a dimensioned base, which the grammar forbids.
151
+ recordId: 'ab-damped-rlc',
152
+ kind: 'symbolic',
153
+ spec: {
154
+ id: 'W2s',
155
+ lhs: applyDictionary(op('/', op('^', b, n(2)), op('*', n(4), m, k)), SPRING_TO_CIRCUIT),
156
+ rhs: op('/', op('*', op('^', R, n(2)), C), op('*', n(4), L)),
157
+ },
158
+ },
159
+ {
160
+ // Coarse-graining: the walk's density at the origin converges to the
161
+ // diffusion kernel as the closure D = Δx²/(2Δt) is held and Δt → 0.
162
+ recordId: 'ab-walk-diffusion',
163
+ kind: 'numeric',
164
+ spec: {
165
+ id: 'WD1',
166
+ evaluate: (steps) => randomWalkCentralDensity(steps, WD1_FIXTURE.D, WD1_FIXTURE.t),
167
+ target: diffusionKernel(0, WD1_FIXTURE.t, WD1_FIXTURE.D),
168
+ coarseResolution: 100,
169
+ fineResolution: 1000,
170
+ tolerance: 1e-4,
171
+ },
172
+ },
173
+ {
174
+ // Exact equivalence: the HEAT equation, solved in κ, ρ, c_p, reproduces the
175
+ // FICK solution with D = κ/(ρ c_p).
176
+ recordId: 'ab-heat-diffusion',
177
+ kind: 'numeric',
178
+ spec: {
179
+ id: 'WD2',
180
+ evaluate: (cells) => heatFtcsCentre(cells, WD2_FIXTURE),
181
+ target: gaussianSpread(0, WD2_FIXTURE.tEnd, WD2_FIXTURE.kappa / (WD2_FIXTURE.rho * WD2_FIXTURE.cp), WD2_FIXTURE.s0),
182
+ coarseResolution: 80,
183
+ fineResolution: 160,
184
+ tolerance: 5e-4,
185
+ },
186
+ },
187
+ {
188
+ // The heat side's Fourier-mode decay rate κq²/(ρ c_p), pushed through the
189
+ // inverse dictionary κ ↦ D ρ c_p, is the Fick side's D q².
190
+ recordId: 'ab-heat-diffusion',
191
+ kind: 'symbolic',
192
+ spec: {
193
+ id: 'WD2s',
194
+ lhs: applyDictionary(op('/', op('*', kappa, op('^', q, n(2))), op('*', rho, cp)), {
195
+ kappa: op('*', D, rho, cp),
196
+ }),
197
+ rhs: op('*', D, op('^', q, n(2))),
198
+ },
199
+ },
200
+ {
201
+ // Analytic continuation: the Wick-rotated free kernel satisfies the
202
+ // diffusion equation with D = ħ/(2m); the residual's target is zero.
203
+ recordId: 'ab-schrodinger-diffusion',
204
+ kind: 'numeric',
205
+ spec: {
206
+ id: 'WD3',
207
+ evaluate: (resolution) => wickHeatResidual(resolution, WD3_FIXTURE, wickRotatedFreeKernel),
208
+ target: 0,
209
+ coarseResolution: 1,
210
+ fineResolution: 4,
211
+ tolerance: 1e-3,
212
+ },
213
+ },
214
+ {
215
+ // Restriction: the string, solved in F and μ, reproduces the 1-D wave
216
+ // solution with c = √(F/μ).
217
+ recordId: 'ab-string-wave',
218
+ kind: 'numeric',
219
+ spec: {
220
+ id: 'WS1',
221
+ evaluate: (cells) => stringLeapfrogMidpoint(cells, WS1_FIXTURE),
222
+ target: Math.sin(Math.PI * 0.5) *
223
+ Math.cos(Math.PI * Math.sqrt(WS1_FIXTURE.tension / WS1_FIXTURE.mu) * WS1_FIXTURE.tEnd),
224
+ coarseResolution: 40,
225
+ fineResolution: 80,
226
+ tolerance: 2e-4,
227
+ },
228
+ },
229
+ {
230
+ // Derivation: d'Alembert's form satisfies the wave equation; residual → 0.
231
+ recordId: 'ab-wave-dalembert',
232
+ kind: 'numeric',
233
+ spec: {
234
+ id: 'WS2',
235
+ evaluate: (resolution) => dalembertResidual(resolution, WS2_FIXTURE),
236
+ target: 0,
237
+ coarseResolution: 4,
238
+ fineResolution: 8,
239
+ tolerance: 2e-3,
240
+ },
241
+ },
242
+ {
243
+ // Hyperedge: linearized Euler closed by the adiabatic EOS reproduces the
244
+ // sound model with c_s² = γp₀/ρ₀.
245
+ recordId: 'ab-sound-speed',
246
+ kind: 'numeric',
247
+ spec: {
248
+ id: 'WS3',
249
+ evaluate: (cells) => acousticLeapfrogQuarter(cells, WS3_FIXTURE),
250
+ target: Math.cos(2 * Math.PI * Math.sqrt((WS3_FIXTURE.gamma * WS3_FIXTURE.p0) / WS3_FIXTURE.rho0) * WS3_FIXTURE.tEnd),
251
+ coarseResolution: 64,
252
+ fineResolution: 128,
253
+ tolerance: 2e-4,
254
+ },
255
+ },
256
+ {
257
+ // Approximation: the Klein–Gordon phase velocity tends to c as k grows.
258
+ recordId: 'ab-klein-gordon-wave',
259
+ kind: 'numeric',
260
+ spec: {
261
+ id: 'WS4',
262
+ evaluate: (resolution) => kleinGordonPhaseVelocity(resolution, WS4_FIXTURE.omega0, WS4_FIXTURE.c, WS4_FIXTURE.k0),
263
+ target: WS4_FIXTURE.c,
264
+ coarseResolution: 1,
265
+ fineResolution: 2,
266
+ tolerance: 2e-3,
267
+ },
268
+ },
269
+ // ── Sprint 4 closure ─────────────────────────────────────────────────────
270
+ {
271
+ // Coarse-graining: Langevin second moments at t = resolution · τ_p, over 2Dt.
272
+ recordId: 'ab-langevin-diffusion',
273
+ kind: 'numeric',
274
+ spec: {
275
+ id: 'WD4',
276
+ evaluate: (resolution) => langevinMsdRatio(resolution, WD4_FIXTURE),
277
+ target: 1,
278
+ coarseResolution: 10,
279
+ fineResolution: 100,
280
+ tolerance: 0.02,
281
+ },
282
+ },
283
+ {
284
+ // Hyperedge: γ = 6πηa pushed into Einstein's D = k_BT/γ.
285
+ recordId: 'ab-stokes-einstein',
286
+ kind: 'symbolic',
287
+ spec: {
288
+ id: 'WD5s',
289
+ lhs: applyDictionary(op('/', kT, gammaSym), { gamma: op('*', n(6), pi, eta, a) }),
290
+ rhs: op('/', kT, op('*', n(6), pi, eta, a)),
291
+ },
292
+ },
293
+ {
294
+ // Singular limit τ → 0: the telegraph slow rate over Dq² tends to 1.
295
+ recordId: 'ab-telegraph-diffusion',
296
+ kind: 'numeric',
297
+ spec: {
298
+ id: 'WD6',
299
+ evaluate: (resolution) => telegraphSlowRateRatio(WD6_FIXTURE.tau0 / resolution, WD6_FIXTURE.D, WD6_FIXTURE.q),
300
+ target: 1,
301
+ coarseResolution: 2,
302
+ fineResolution: 4,
303
+ tolerance: 0.03,
304
+ },
305
+ },
306
+ {
307
+ // ε → ∞: the telegraph oscillation frequency over c q tends to 1.
308
+ recordId: 'ab-telegraph-wave',
309
+ kind: 'numeric',
310
+ spec: {
311
+ id: 'WD7',
312
+ evaluate: (resolution) => telegraphWaveFrequencyRatio(WD7_FIXTURE.eps0 * resolution, WD7_FIXTURE.D, WD7_FIXTURE.q),
313
+ target: 1,
314
+ coarseResolution: 1,
315
+ fineResolution: 2,
316
+ tolerance: 3e-3,
317
+ },
318
+ },
319
+ {
320
+ // Steady state: the heat solution's deviation from the Laplace profile → 0.
321
+ recordId: 'ab-heat-laplace',
322
+ kind: 'numeric',
323
+ spec: {
324
+ id: 'WD8',
325
+ evaluate: (resolution) => heatSteadyDeviation(resolution, WD8_FIXTURE),
326
+ target: 0,
327
+ coarseResolution: 2,
328
+ fineResolution: 4,
329
+ tolerance: 0.025,
330
+ },
331
+ },
332
+ {
333
+ // Non-relativistic limit: kinetic-frequency error → 0 as x = ck/ω₀ halves.
334
+ recordId: 'ab-kg-schrodinger',
335
+ kind: 'numeric',
336
+ spec: {
337
+ id: 'WS5',
338
+ evaluate: (resolution) => kgNonrelativisticError(WS5_FIXTURE.x0 / resolution),
339
+ target: 0,
340
+ coarseResolution: 1,
341
+ fineResolution: 2,
342
+ tolerance: 1e-3,
343
+ },
344
+ },
345
+ {
346
+ // Uniform-mode restriction: the full KG PDE, uniform data, vs cos(ω₀t).
347
+ recordId: 'ab-kg-oscillator',
348
+ kind: 'numeric',
349
+ spec: {
350
+ id: 'WS6',
351
+ evaluate: (steps) => kgUniformModeValue(steps, WS6_FIXTURE.c, WS6_FIXTURE.omega0, WS6_FIXTURE.tEnd),
352
+ target: Math.cos(WS6_FIXTURE.omega0 * WS6_FIXTURE.tEnd),
353
+ coarseResolution: 50,
354
+ fineResolution: 100,
355
+ tolerance: 3e-4,
356
+ },
357
+ },
358
+ {
359
+ // Flexible-string limit: stiff-string phase velocity → √(F/μ) as k shrinks.
360
+ recordId: 'ab-stiff-string',
361
+ kind: 'numeric',
362
+ spec: {
363
+ id: 'WS7',
364
+ evaluate: (resolution) => stiffStringPhaseVelocity(resolution, WS7_FIXTURE.F, WS7_FIXTURE.mu, WS7_FIXTURE.EI, WS7_FIXTURE.k0),
365
+ target: Math.sqrt(WS7_FIXTURE.F / WS7_FIXTURE.mu),
366
+ coarseResolution: 1,
367
+ fineResolution: 2,
368
+ tolerance: 0.15,
369
+ },
370
+ },
371
+ ];
372
+ //# sourceMappingURL=witness-specs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"witness-specs.js","sourceRoot":"","sources":["../../src/atlas/witness-specs.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,79 @@
1
+ /**
2
+ * Atlas Phase 4, S4.2 — the symbolic witness runner.
3
+ *
4
+ * Design note: `docs/planning/Atlas-Phase-4-Design.md` §2.
5
+ *
6
+ * A symbolic witness claims `lhs = rhs`. The runner forms the DIFFERENCE and
7
+ * asks the optional CAS peer to simplify it: a difference that collapses to a
8
+ * literal zero is `'checked'`; one that collapses to a non-zero literal is
9
+ * `'refuted'`; anything else is `'unresolved'` with the reason it could not
10
+ * decide.
11
+ *
12
+ * ## The simplifier is INJECTED, and no test touches the registry
13
+ *
14
+ * `src/numerical/formula-registry.ts` caches its selection in module scope and
15
+ * exposes no reset hook, so a test that registered a stub would leak it into
16
+ * every later test in the same worker. {@link runSymbolicWitness} therefore
17
+ * takes the simplifier as a PARAMETER, defaulting to `simplifyExpr`. Tests
18
+ * pass a stub for the present path and `null` for the absent path; the
19
+ * registry is never written. One test exercises the real peer under the
20
+ * existing skip-when-absent pattern.
21
+ *
22
+ * `null` means "the peer is absent" and is a first-class argument value, not a
23
+ * forgotten one. `simplifyExpr` itself CANNOT tell absence from "nothing to
24
+ * simplify" — both return `simplified: false` — so when the argument is
25
+ * OMITTED the runner asks `isSimplifierAvailable()` first and maps absence to
26
+ * `null`. Without that step the default path would report a missing peer as
27
+ * `'not-simplified'`, the wrong reason on the one path most callers take.
28
+ *
29
+ * Deviation from the plan's wording, recorded in the design note §2.1: the
30
+ * plan names `getFormulaParser()` as the default. A parser cannot decide
31
+ * `lhs − rhs = 0`; the capability needed is SIMPLIFICATION, which lives in
32
+ * `expr-simplify.ts` (a different peer, `@danielsimonjr/mathts-functions`).
33
+ *
34
+ * @module atlas/witness-symbolic
35
+ * @internal
36
+ */
37
+ import type { ExprNode } from '../dimensional/ast-types.js';
38
+ import type { WitnessRunResult } from './witness-result.js';
39
+ /**
40
+ * The simplification capability this runner needs, as a function rather than
41
+ * the whole module — so a stub is five lines and cannot accidentally depend on
42
+ * anything else `expr-simplify.ts` exports.
43
+ *
44
+ * @internal
45
+ */
46
+ export type SymbolicSimplifier = (expr: ExprNode) => Promise<{
47
+ readonly expr: ExprNode;
48
+ readonly simplified: boolean;
49
+ }>;
50
+ /** What a symbolic witness asserts. @internal */
51
+ export interface SymbolicWitnessSpec {
52
+ /** The `Witness.id` (`'W7b'`). */
53
+ readonly id: string;
54
+ readonly lhs: ExprNode;
55
+ readonly rhs: ExprNode;
56
+ /**
57
+ * Wall-clock budget in milliseconds. Default 5000.
58
+ *
59
+ * ⚠ **This bounds how long the RUNNER WAITS, not how long the CAS works.**
60
+ * The peer's `simplify` is synchronous inside its promise, so nothing here
61
+ * can interrupt it; a timeout reports that no answer arrived in time and the
62
+ * underlying work may still be running. Saying otherwise would be the
63
+ * "a running process is not a working one" error in reverse.
64
+ */
65
+ readonly budgetMs?: number;
66
+ }
67
+ /**
68
+ * Run one symbolic witness.
69
+ *
70
+ * @param spec - the claim, as two ASTs whose difference should vanish.
71
+ * @param simplifier - the CAS capability, or `null` when the optional peer is
72
+ * absent. When omitted, resolves to `simplifyExpr` if the peer is available and
73
+ * to `null` otherwise. Pass `null` EXPLICITLY to exercise the absent path.
74
+ * @returns a result; **never throws**, because a thrown error forces callers
75
+ * into a `catch` that cannot distinguish "did not run" from "failed".
76
+ * @internal
77
+ */
78
+ export declare function runSymbolicWitness(spec: SymbolicWitnessSpec, simplifier?: SymbolicSimplifier | null): Promise<WitnessRunResult>;
79
+ //# sourceMappingURL=witness-symbolic.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"witness-symbolic.d.ts","sourceRoot":"","sources":["../../src/atlas/witness-symbolic.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAC;AAE5D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAE5D;;;;;;GAMG;AACH,MAAM,MAAM,kBAAkB,GAAG,CAC/B,IAAI,EAAE,QAAQ,KACX,OAAO,CAAC;IAAE,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;IAAC,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAA;CAAE,CAAC,CAAC;AAExE,iDAAiD;AACjD,MAAM,WAAW,mBAAmB;IAClC,kCAAkC;IAClC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,GAAG,EAAE,QAAQ,CAAC;IACvB,QAAQ,CAAC,GAAG,EAAE,QAAQ,CAAC;IACvB;;;;;;;;OAQG;IACH,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;CAC5B;AAeD;;;;;;;;;;GAUG;AACH,wBAAsB,kBAAkB,CACtC,IAAI,EAAE,mBAAmB,EACzB,UAAU,CAAC,EAAE,kBAAkB,GAAG,IAAI,GACrC,OAAO,CAAC,gBAAgB,CAAC,CAoF3B"}