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,165 @@
1
+ /**
2
+ * Atlas Phase 3 — `Statement`, `Context`, and the CHECKED context union.
3
+ *
4
+ * A `Statement` is a claim IN A CONTEXT, not a string. Design note
5
+ * `docs/planning/Atlas-Phase-3-Design.md` §1: two statements that render
6
+ * identically can be claims about different things when their gauge, frame or
7
+ * assumption set differs, and the poster index will place exactly such pairs
8
+ * next to each other. `context` is therefore the reason this type exists at
9
+ * all rather than reusing `CanonicalEquation`.
10
+ *
11
+ * ## `ast?` is optional ON PURPOSE
12
+ *
13
+ * The poster's hidden supporting nodes — the action principle, Noether, the
14
+ * full Maxwell set, the Lorentz group, the central limit theorem — are
15
+ * valuable because they are NAMED and LINKED, not because they are evaluable.
16
+ * Requiring an `ast` would force either a fabricated encoding or their
17
+ * exclusion, and both are worse than an honest `sourceExpression` with no
18
+ * `ast` (design note §1). Do not make it required.
19
+ *
20
+ * ## The union is CHECKED, never computed
21
+ *
22
+ * {@link contextUnion} does not MERGE contexts. It asks whether a union
23
+ * EXISTS, and returns an explicit refusal when it does not. Two refusals
24
+ * matter, and neither is an error condition:
25
+ *
26
+ * 1. **Convention conflict** — delegated to `checkConventions`, whose contract
27
+ * is that `undefined` means UNKNOWN and is never a mismatch. An absent
28
+ * declaration must not read as agreement, so the asymmetry is preserved
29
+ * here rather than re-derived.
30
+ * 2. **Contradictory assumptions** — Blueprint v2 §5.2 step 2: incompatible
31
+ * assumptions are NEVER POOLED. A derivation whose premises assume mutually
32
+ * exclusive conditions has no context union, therefore no composite.
33
+ *
34
+ * The result is a DISCRIMINATED UNION, mirroring `boundPath`'s no-claim
35
+ * (`./path-bound.ts`): a caller cannot read `.context` off a refusal, because
36
+ * a refusal has no `.context`. That is the whole point — the refusal is
37
+ * enforced by the type, so no caller can read a conclusion off a union that
38
+ * was never formed.
39
+ *
40
+ * Pure: no I/O, no registry reads.
41
+ *
42
+ * @module atlas/statement
43
+ */
44
+ import type { Conventions } from './types.js';
45
+ import type { ModelId } from './model.js';
46
+ import type { ExprNode } from '../dimensional/ast-types.js';
47
+ /** A {@link Statement} id — `'statement-noether'`, … . @internal */
48
+ export type StatementId = string;
49
+ /**
50
+ * The context a claim is made in: what it quantifies over, which choices it
51
+ * fixes, and what it assumes.
52
+ *
53
+ * Every field but `assumptions` and `excludes` is optional, and the SAME
54
+ * asymmetry `checkConventions` documents applies to each: a context that
55
+ * declares no `gauge` has not chosen the Lorenz gauge, it has not said.
56
+ * Absence is unknown, never disagreement.
57
+ *
58
+ * `assumptions` and `excludes` are required (possibly empty) because they are
59
+ * the pair that decides poolability, and an optional one would let a caller
60
+ * omit the field that makes a refusal possible.
61
+ *
62
+ * @internal
63
+ */
64
+ export interface Context {
65
+ /** Canonical quantity types the claim ranges over — `['energy', 'time']`. */
66
+ readonly quantityTypes?: readonly string[];
67
+ /** `'Lorenz'`, `'Coulomb'` — a fixed gauge choice, when the claim depends on one. */
68
+ readonly gauge?: string;
69
+ /** `'comoving'`, `'lab'` — a fixed frame choice, when the claim depends on one. */
70
+ readonly frame?: string;
71
+ /** Sign and unit choices. Compared by `checkConventions`. */
72
+ readonly conventions?: Conventions;
73
+ /** Stated assumptions — `'isolated system'`, `'weak field'`. */
74
+ readonly assumptions: readonly string[];
75
+ /**
76
+ * Assumption strings this context is INCOMPATIBLE with.
77
+ *
78
+ * Declared per context rather than inferred, because no rule in this repo
79
+ * can decide that `'weak field'` and `'strong field'` exclude each other
80
+ * from the strings alone. A guess here would manufacture refusals out of
81
+ * vocabulary rather than physics.
82
+ *
83
+ * Matching is exact string equality against another context's
84
+ * `assumptions`, and it is SYMMETRIC in effect: it is enough for one side
85
+ * to declare the exclusion.
86
+ */
87
+ readonly excludes: readonly string[];
88
+ }
89
+ /**
90
+ * A claim in a context.
91
+ *
92
+ * @internal
93
+ */
94
+ export interface Statement {
95
+ /** `'statement-noether'`, `'statement-l1-maxwell'`, … */
96
+ readonly id: StatementId;
97
+ /** The load-bearing field — see the module note. */
98
+ readonly context: Context;
99
+ readonly model: ModelId;
100
+ /** OPTIONAL BY DESIGN — see the module note. Absent ⇒ named-and-linked only. */
101
+ readonly ast?: ExprNode;
102
+ /** `'dS = 0'` — the source form, always present even when `ast` is not. */
103
+ readonly sourceExpression: string;
104
+ /** Rendered form for the poster index. */
105
+ readonly display: string;
106
+ }
107
+ /** Why a set of contexts has NO union. @internal */
108
+ export type NoUnionReason =
109
+ /** Two contexts DECLARE different values for a convention key. */
110
+ 'convention-conflict'
111
+ /** One context excludes an assumption another one states. */
112
+ | 'contradictory-assumptions'
113
+ /** Two contexts DECLARE different gauges or frames. */
114
+ | 'choice-conflict';
115
+ /** The contexts DO pool, and this is the pooled context. @internal */
116
+ export interface ContextUnionFormed {
117
+ readonly kind: 'union';
118
+ readonly context: Context;
119
+ }
120
+ /** The contexts do NOT pool, and this is why. @internal */
121
+ export interface ContextUnionRefused {
122
+ readonly kind: 'no-union';
123
+ readonly reason: NoUnionReason;
124
+ /** Human-readable specifics: which key, which assumption. */
125
+ readonly detail: string;
126
+ }
127
+ /**
128
+ * The result of {@link contextUnion}: a pooled context, or an explicit refusal.
129
+ *
130
+ * @internal
131
+ */
132
+ export type ContextUnionResult = ContextUnionFormed | ContextUnionRefused;
133
+ /**
134
+ * The union of `contexts`, or an explicit refusal.
135
+ *
136
+ * Three gates, in this order; the FIRST refusal found is the one reported.
137
+ *
138
+ * 1. **Conventions.** Every PAIR is compared with `checkConventions`. Pairwise
139
+ * rather than folded, because folding would compare each context against a
140
+ * running merge and a merge has already lost which side declared what —
141
+ * the exact information the `undefined`-is-unknown rule needs.
142
+ * 2. **Assumptions.** A context's `excludes` entry matching any context's
143
+ * stated `assumption` refuses the pool. Blueprint v2 §5.2 step 2.
144
+ * 3. **Gauge / frame.** Two DECLARED and different values refuse; one declared
145
+ * and one absent does not, mirroring gate 1's asymmetry.
146
+ *
147
+ * An empty list has no union: a union over nothing would be a context
148
+ * asserted about no claim, the same reason `boundPath` throws on an empty
149
+ * path. It is a `RangeError`, not a refusal, because it is a caller bug rather
150
+ * than a physical incompatibility.
151
+ *
152
+ * @throws RangeError when `contexts` is empty.
153
+ * @internal
154
+ */
155
+ export declare function contextUnion(contexts: readonly Context[]): ContextUnionResult;
156
+ /**
157
+ * The context union of a set of STATEMENTS, by id, resolved through `registry`.
158
+ *
159
+ * @throws RangeError if an id does not resolve. An unresolved id silently
160
+ * dropped would narrow the union and could turn a refusal into a pool —
161
+ * precisely the direction that manufactures a false claim.
162
+ * @internal
163
+ */
164
+ export declare function statementContextUnion(ids: readonly StatementId[], registry: ReadonlyMap<StatementId, Statement>): ContextUnionResult;
165
+ //# sourceMappingURL=statement.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"statement.d.ts","sourceRoot":"","sources":["../../src/atlas/statement.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0CG;AAIH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAC9C,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAC1C,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAC;AAE5D,oEAAoE;AACpE,MAAM,MAAM,WAAW,GAAG,MAAM,CAAC;AAEjC;;;;;;;;;;;;;;GAcG;AACH,MAAM,WAAW,OAAO;IACtB,6EAA6E;IAC7E,QAAQ,CAAC,aAAa,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC3C,qFAAqF;IACrF,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,mFAAmF;IACnF,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,6DAA6D;IAC7D,QAAQ,CAAC,WAAW,CAAC,EAAE,WAAW,CAAC;IACnC,gEAAgE;IAChE,QAAQ,CAAC,WAAW,EAAE,SAAS,MAAM,EAAE,CAAC;IACxC;;;;;;;;;;;OAWG;IACH,QAAQ,CAAC,QAAQ,EAAE,SAAS,MAAM,EAAE,CAAC;CACtC;AAED;;;;GAIG;AACH,MAAM,WAAW,SAAS;IACxB,yDAAyD;IACzD,QAAQ,CAAC,EAAE,EAAE,WAAW,CAAC;IACzB,oDAAoD;IACpD,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;IACxB,gFAAgF;IAChF,QAAQ,CAAC,GAAG,CAAC,EAAE,QAAQ,CAAC;IACxB,2EAA2E;IAC3E,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAClC,0CAA0C;IAC1C,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B;AAED,oDAAoD;AACpD,MAAM,MAAM,aAAa;AACvB,kEAAkE;AAChE,qBAAqB;AACvB,6DAA6D;GAC3D,2BAA2B;AAC7B,uDAAuD;GACrD,iBAAiB,CAAC;AAEtB,sEAAsE;AACtE,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IACvB,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;CAC3B;AAED,2DAA2D;AAC3D,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;IAC1B,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAC;IAC/B,6DAA6D;IAC7D,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB;AAED;;;;GAIG;AACH,MAAM,MAAM,kBAAkB,GAAG,kBAAkB,GAAG,mBAAmB,CAAC;AAe1E;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,YAAY,CAAC,QAAQ,EAAE,SAAS,OAAO,EAAE,GAAG,kBAAkB,CAwF7E;AAED;;;;;;;GAOG;AACH,wBAAgB,qBAAqB,CACnC,GAAG,EAAE,SAAS,WAAW,EAAE,EAC3B,QAAQ,EAAE,WAAW,CAAC,WAAW,EAAE,SAAS,CAAC,GAC5C,kBAAkB,CAUpB"}
@@ -0,0 +1,176 @@
1
+ /**
2
+ * Atlas Phase 3 — `Statement`, `Context`, and the CHECKED context union.
3
+ *
4
+ * A `Statement` is a claim IN A CONTEXT, not a string. Design note
5
+ * `docs/planning/Atlas-Phase-3-Design.md` §1: two statements that render
6
+ * identically can be claims about different things when their gauge, frame or
7
+ * assumption set differs, and the poster index will place exactly such pairs
8
+ * next to each other. `context` is therefore the reason this type exists at
9
+ * all rather than reusing `CanonicalEquation`.
10
+ *
11
+ * ## `ast?` is optional ON PURPOSE
12
+ *
13
+ * The poster's hidden supporting nodes — the action principle, Noether, the
14
+ * full Maxwell set, the Lorentz group, the central limit theorem — are
15
+ * valuable because they are NAMED and LINKED, not because they are evaluable.
16
+ * Requiring an `ast` would force either a fabricated encoding or their
17
+ * exclusion, and both are worse than an honest `sourceExpression` with no
18
+ * `ast` (design note §1). Do not make it required.
19
+ *
20
+ * ## The union is CHECKED, never computed
21
+ *
22
+ * {@link contextUnion} does not MERGE contexts. It asks whether a union
23
+ * EXISTS, and returns an explicit refusal when it does not. Two refusals
24
+ * matter, and neither is an error condition:
25
+ *
26
+ * 1. **Convention conflict** — delegated to `checkConventions`, whose contract
27
+ * is that `undefined` means UNKNOWN and is never a mismatch. An absent
28
+ * declaration must not read as agreement, so the asymmetry is preserved
29
+ * here rather than re-derived.
30
+ * 2. **Contradictory assumptions** — Blueprint v2 §5.2 step 2: incompatible
31
+ * assumptions are NEVER POOLED. A derivation whose premises assume mutually
32
+ * exclusive conditions has no context union, therefore no composite.
33
+ *
34
+ * The result is a DISCRIMINATED UNION, mirroring `boundPath`'s no-claim
35
+ * (`./path-bound.ts`): a caller cannot read `.context` off a refusal, because
36
+ * a refusal has no `.context`. That is the whole point — the refusal is
37
+ * enforced by the type, so no caller can read a conclusion off a union that
38
+ * was never formed.
39
+ *
40
+ * Pure: no I/O, no registry reads.
41
+ *
42
+ * @module atlas/statement
43
+ */
44
+ import { checkConventions } from './conventions.js';
45
+ /** Distinct declared values of one optional choice field, across contexts. */
46
+ function declaredChoices(contexts, key) {
47
+ const seen = new Set();
48
+ for (const c of contexts) {
49
+ const v = c[key];
50
+ if (v !== undefined)
51
+ seen.add(v);
52
+ }
53
+ return [...seen];
54
+ }
55
+ /**
56
+ * The union of `contexts`, or an explicit refusal.
57
+ *
58
+ * Three gates, in this order; the FIRST refusal found is the one reported.
59
+ *
60
+ * 1. **Conventions.** Every PAIR is compared with `checkConventions`. Pairwise
61
+ * rather than folded, because folding would compare each context against a
62
+ * running merge and a merge has already lost which side declared what —
63
+ * the exact information the `undefined`-is-unknown rule needs.
64
+ * 2. **Assumptions.** A context's `excludes` entry matching any context's
65
+ * stated `assumption` refuses the pool. Blueprint v2 §5.2 step 2.
66
+ * 3. **Gauge / frame.** Two DECLARED and different values refuse; one declared
67
+ * and one absent does not, mirroring gate 1's asymmetry.
68
+ *
69
+ * An empty list has no union: a union over nothing would be a context
70
+ * asserted about no claim, the same reason `boundPath` throws on an empty
71
+ * path. It is a `RangeError`, not a refusal, because it is a caller bug rather
72
+ * than a physical incompatibility.
73
+ *
74
+ * @throws RangeError when `contexts` is empty.
75
+ * @internal
76
+ */
77
+ export function contextUnion(contexts) {
78
+ if (contexts.length === 0) {
79
+ throw new RangeError('contextUnion: no contexts; a union over nothing states nothing');
80
+ }
81
+ // ── Gate 1: no DECLARED convention pair may disagree ──────────────────────
82
+ for (let i = 0; i < contexts.length; i++) {
83
+ for (let j = i + 1; j < contexts.length; j++) {
84
+ const clash = checkConventions(contexts[i].conventions, contexts[j].conventions);
85
+ if (clash.length > 0) {
86
+ return {
87
+ kind: 'no-union',
88
+ reason: 'convention-conflict',
89
+ detail: `contexts ${i} and ${j} declare different values for ` +
90
+ `${clash.map((k) => `'${k}'`).join(', ')}; they do not pool`,
91
+ };
92
+ }
93
+ }
94
+ }
95
+ // ── Gate 2: incompatible assumptions are NEVER pooled ─────────────────────
96
+ const stated = new Map();
97
+ for (let i = 0; i < contexts.length; i++) {
98
+ for (const a of contexts[i].assumptions) {
99
+ if (!stated.has(a))
100
+ stated.set(a, i);
101
+ }
102
+ }
103
+ for (let i = 0; i < contexts.length; i++) {
104
+ for (const x of contexts[i].excludes) {
105
+ const at = stated.get(x);
106
+ if (at !== undefined) {
107
+ return {
108
+ kind: 'no-union',
109
+ reason: 'contradictory-assumptions',
110
+ detail: `context ${i} excludes '${x}', which context ${at} assumes; ` +
111
+ 'incompatible assumptions are never pooled',
112
+ };
113
+ }
114
+ }
115
+ }
116
+ // ── Gate 3: a declared gauge or frame may not be contradicted ─────────────
117
+ for (const key of ['gauge', 'frame']) {
118
+ const values = declaredChoices(contexts, key);
119
+ if (values.length > 1) {
120
+ return {
121
+ kind: 'no-union',
122
+ reason: 'choice-conflict',
123
+ detail: `the contexts declare ${values.length} different ${key}s ` +
124
+ `(${values.map((v) => `'${v}'`).join(', ')}); they do not pool`,
125
+ };
126
+ }
127
+ }
128
+ // ── The pool ──────────────────────────────────────────────────────────────
129
+ // Conventions merge by KEY rather than by object, so a context silent on a
130
+ // key inherits another's declaration instead of erasing it. Gate 1 has
131
+ // already proved no two declarations disagree, so the order of assignment
132
+ // cannot change the result.
133
+ const conventions = {};
134
+ for (const c of contexts) {
135
+ for (const [k, v] of Object.entries(c.conventions ?? {})) {
136
+ if (v !== undefined)
137
+ conventions[k] = v;
138
+ }
139
+ }
140
+ const quantityTypes = [...new Set(contexts.flatMap((c) => c.quantityTypes ?? []))];
141
+ const gauge = declaredChoices(contexts, 'gauge')[0];
142
+ const frame = declaredChoices(contexts, 'frame')[0];
143
+ return {
144
+ kind: 'union',
145
+ context: {
146
+ ...(quantityTypes.length > 0 ? { quantityTypes } : {}),
147
+ ...(gauge !== undefined ? { gauge } : {}),
148
+ ...(frame !== undefined ? { frame } : {}),
149
+ ...(Object.keys(conventions).length > 0
150
+ ? { conventions: conventions }
151
+ : {}),
152
+ assumptions: [...stated.keys()],
153
+ excludes: [...new Set(contexts.flatMap((c) => c.excludes))],
154
+ },
155
+ };
156
+ }
157
+ /**
158
+ * The context union of a set of STATEMENTS, by id, resolved through `registry`.
159
+ *
160
+ * @throws RangeError if an id does not resolve. An unresolved id silently
161
+ * dropped would narrow the union and could turn a refusal into a pool —
162
+ * precisely the direction that manufactures a false claim.
163
+ * @internal
164
+ */
165
+ export function statementContextUnion(ids, registry) {
166
+ const contexts = [];
167
+ for (const id of ids) {
168
+ const s = registry.get(id);
169
+ if (s === undefined) {
170
+ throw new RangeError(`statementContextUnion: unknown statement '${id}'`);
171
+ }
172
+ contexts.push(s.context);
173
+ }
174
+ return contextUnion(contexts);
175
+ }
176
+ //# sourceMappingURL=statement.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"statement.js","sourceRoot":"","sources":["../../src/atlas/statement.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,308 @@
1
+ /**
2
+ * Atlas Phase 0 pilot types (oscillator pilot).
3
+ *
4
+ * Fixed by `docs/planning/Atlas-Phase-0-Design.md` §2 and the implementation
5
+ * plan's §"S0 types" block, implemented here verbatim.
6
+ *
7
+ * **These are throwaway pilot types** (design note §4). If Phase 1's
8
+ * relation-contract work disagrees with any of them, the Phase 0 type is
9
+ * replaced, not adapted: nothing atlas-side is public before Phase 6 and the
10
+ * only consumers are Phase 0's own tests.
11
+ *
12
+ * Name note: the probe's `RelationKind` and `AuditState` are NOT shadowed —
13
+ * this sprint uses `RelationType` and defines no `AuditState`.
14
+ * `src/composition/bridge-prediction.ts` has a module-local, unexported
15
+ * `interface Regime` for tensor-cell placement; different concept, no
16
+ * import collision.
17
+ *
18
+ * @module atlas/types
19
+ */
20
+ import type { PiGroup } from '../dimensional/buckingham.js';
21
+ /** The relation a bridge asserts between its premises and its conclusion. @public */
22
+ export type RelationType = 'derivation' | 'exact-equivalence' | 'restriction' | 'approximation' | 'coarse-graining' | 'analytic-continuation' | 'structural-analogy' | 'deformation-quantization';
23
+ /** What kind of support a record carries. Carried only if its witness passes. @public */
24
+ export type EvidenceTag = 'proposed' | 'reviewed' | 'dimension-checked' | 'convention-checked' | 'symbolically-checked' | 'numerically-supported' | 'formally-proved' | 'empirically-supported' | 'contradicted' | 'unresolved';
25
+ /**
26
+ * Every `EvidenceTag`, in declaration order, so a report can name all of them.
27
+ *
28
+ * Lives HERE, not in `coverage.ts` (which re-exports it), because
29
+ * `tests/atlas/derived-tag-literals.test.ts` allows the literals
30
+ * `'formally-proved'` and `'symbolically-checked'` under `src/atlas/` in
31
+ * exactly two files: this one and `derive-evidence.ts`. A tag that can only be
32
+ * DERIVED must not be spellable anywhere a record could hand-set it.
33
+ *
34
+ * @internal
35
+ */
36
+ export declare const ALL_EVIDENCE_TAGS: readonly ["proposed", "reviewed", "dimension-checked", "convention-checked", "symbolically-checked", "numerically-supported", "formally-proved", "empirically-supported", "contradicted", "unresolved"];
37
+ /**
38
+ * How a formal reference's statement was checked against the physics it claims
39
+ * to state (Phase 4 design note §3).
40
+ *
41
+ * - `'two-formalizers'` — two people formalized it independently and agreed.
42
+ * - `'back-translation'` — a reviewer who had not seen the source translated
43
+ * the formal statement back to prose and it matched.
44
+ * - `'sanity-lemmas'` — the statement was instantiated on known cases in
45
+ * `tests/atlas/formal-sanity.test.ts`.
46
+ * - `'unreviewed'` — recorded, not checked. **Earns no tag, by construction.**
47
+ *
48
+ * @internal
49
+ */
50
+ export type FormalFidelity = 'two-formalizers' | 'back-translation' | 'sanity-lemmas' | 'unreviewed';
51
+ /**
52
+ * A machine-checked counterpart of a record's claim in a proof assistant.
53
+ *
54
+ * A proof of the WRONG statement proves nothing about the physics, so the
55
+ * reference carries its `fidelity` — how anyone knows the formal statement says
56
+ * what the bridge says. `formally-proved` is derived from it and never set.
57
+ *
58
+ * @internal
59
+ */
60
+ export interface FormalRef {
61
+ readonly system: 'lean4-physlib' | 'other';
62
+ /** The formal statement's name or text, as it appears in `system`. */
63
+ readonly statement: string;
64
+ /** The library version or commit the statement was checked against. */
65
+ readonly version: string;
66
+ /** Axioms the proof depends on beyond the system's core. */
67
+ readonly axioms: readonly string[];
68
+ readonly fidelity: FormalFidelity;
69
+ }
70
+ /** Whether the limit a bridge takes is regular or singular. @public */
71
+ export type LimitCharacter = 'regular' | 'singular' | 'unknown';
72
+ /**
73
+ * One inequality on a regime coordinate. The coordinate is either a π-group
74
+ * `buckinghamPi` produced from the family's dimensioned parameters (keyed by
75
+ * `PiGroup.formula`), or a dimensionless INPUT of the model (an initial datum
76
+ * such as θ0, a wavenumber-lattice product qa) declared as a
77
+ * `DimensionalVariable` with the zero dimension, which is its own trivial
78
+ * group. Derived quantities such as ζ = ½ (m k / b²)^(−½) are NOT groups:
79
+ * write the inequality on the group (`m k / b² > 1/4`) and record the display
80
+ * alias in `alias`.
81
+ *
82
+ * @public
83
+ */
84
+ export interface RegimeInequality {
85
+ /** `PiGroup.formula`, or the dimensionless input's name. */
86
+ readonly group: string;
87
+ readonly op: '<' | '<=' | '>' | '>=';
88
+ readonly bound: number;
89
+ /** `'ζ < 1'` — for display only, never evaluated. */
90
+ readonly alias?: string;
91
+ }
92
+ /** Where in parameter space a model or bridge is claimed to apply. @public */
93
+ export interface Regime {
94
+ /** `'oscillators'`. */
95
+ readonly family: string;
96
+ readonly inequalities: readonly RegimeInequality[];
97
+ /** Traceability back to the dimension matrix, keyed by `PiGroup.formula`. */
98
+ readonly groupDefinitions: Readonly<Record<string, PiGroup>>;
99
+ }
100
+ /** A Lipschitz-plus-offset error bound with a mandatory horizon. @public */
101
+ export interface ApproximationBound {
102
+ /** Lipschitz constant of the map, in the stated norm. */
103
+ readonly K: number;
104
+ /**
105
+ * Uniform error, same norm: the SUPREMUM OF THE BOUND OVER THE WHOLE
106
+ * DECLARED DOMAIN (`domain` / `parameterRange`), never a sample of it at
107
+ * one convenient fixture point.
108
+ *
109
+ * A parameter-dependent bound evaluated at a fixture is not a bound on the
110
+ * domain it claims: the record would read as covering every admissible
111
+ * parameter while holding only at the one point it was measured. When the
112
+ * supremum is approached but not attained at an open edge of the domain,
113
+ * `delta` is that supremum, and `deltaAt` is what a caller uses to get the
114
+ * tighter value at its own point.
115
+ */
116
+ readonly delta: number;
117
+ /** `'relative period'`, `'sup |x − x_reduced| for t ≥ 5 m/b'`, … */
118
+ readonly norm: string;
119
+ /** Where the bound holds. */
120
+ readonly domain: string;
121
+ /** MANDATORY prose horizon: `'t ≪ 16 T0/θ0²'`. */
122
+ readonly horizon: string;
123
+ /** MANDATORY machine form of `horizon`: true while the bound is claimed to hold. */
124
+ readonly horizonHolds: (t: number, params: Readonly<Record<string, number>>) => boolean;
125
+ /**
126
+ * MACHINE FORM OF `delta`, mirroring what `horizonHolds` is to `horizon`:
127
+ * the bound AT A POINT of the declared domain, in the same norm.
128
+ *
129
+ * `horizon` had a machine counterpart and `delta` had none, so an
130
+ * implementer holding a correct parameter-dependent bound could only freeze
131
+ * it at a single point and hope the reader noticed. `deltaAt` is where that
132
+ * dependence goes; `delta` stays the supremum over the domain, and
133
+ * `deltaAt(p) <= delta` for every admissible `p`.
134
+ *
135
+ * Optional on the interface so a genuinely constant bound need not restate
136
+ * itself, and so `coarse-graining` bounds are unaffected; MANDATORY for an
137
+ * `approximation`, enforced at admission by `admitApproximation`.
138
+ */
139
+ readonly deltaAt?: (params: Readonly<Record<string, number>>) => number;
140
+ /** `'θ0 ≤ 0.5 rad'`. */
141
+ readonly parameterRange?: string;
142
+ readonly limitCharacter: LimitCharacter;
143
+ /**
144
+ * What the error is uniform in.
145
+ *
146
+ * `null` means NOT YET ANALYSED. That is a legitimate recorded state:
147
+ * `makeApproximation` accepts it, and the check lives at use (`boundPath`),
148
+ * not at construction. An empty array means the same thing — a universal
149
+ * over nothing must not count as analysed. A non-empty array names the
150
+ * scopes the error is uniform in. A variable a side condition says the
151
+ * error is NOT uniform in is not listed.
152
+ */
153
+ readonly uniformity: readonly string[] | null;
154
+ }
155
+ /** A named check that supports a record, and the test file that runs it. @public */
156
+ export interface Witness {
157
+ /** `'W7b'`. */
158
+ readonly id: string;
159
+ readonly kind: 'symbolic' | 'numeric' | 'formal';
160
+ /** Test file path. */
161
+ readonly test: string;
162
+ /** As stated in the brief. */
163
+ readonly tolerance?: string;
164
+ }
165
+ /**
166
+ * `AtlasModel` MOVED to `./model.ts` in Phase 3, where it gained
167
+ * `boundaryData?`, `initialData?` and `symmetryGroup?`. It is NOT re-exported
168
+ * from here: `model.ts` imports `Regime` from this module, so a re-export
169
+ * would close a cycle `bun run docs:deps` reports. Import it from
170
+ * `./model.js`.
171
+ */
172
+ /** A case a bridge does NOT cover, and the witness that shows it. @public */
173
+ export interface Counterexample {
174
+ readonly description: string;
175
+ /** `'W2b'`. */
176
+ readonly witness: string;
177
+ }
178
+ /** Field set = Blueprint v2 §3.1 Bridge record + citations. @internal */
179
+ export interface AtlasBridge {
180
+ /** `'ab-spring-lc'`. */
181
+ readonly id: string;
182
+ readonly relation: RelationType;
183
+ /** Model ids (many). */
184
+ readonly premises: readonly string[];
185
+ /** Model id (one). */
186
+ readonly conclusion: string;
187
+ /** `'u = x/x0 (or q/q0), τ = ω0 t'`. */
188
+ readonly transformation: string;
189
+ /** `'x = x0 u, t = τ/ω0'` — required for `exact-equivalence`. */
190
+ readonly inverse?: string;
191
+ readonly preserves: readonly string[];
192
+ readonly doesNotPreserve: readonly string[];
193
+ readonly sideConditions: readonly string[];
194
+ /** Required iff `relation === 'approximation'`. */
195
+ readonly bound?: ApproximationBound;
196
+ readonly regime: Regime;
197
+ readonly counterexamples: readonly Counterexample[];
198
+ readonly evidence: ReadonlySet<EvidenceTag>;
199
+ readonly witnesses: readonly Witness[];
200
+ readonly citations: readonly string[];
201
+ readonly reviewStatus: 'proposed' | 'reviewed';
202
+ /**
203
+ * A machine-checked counterpart, when one genuinely exists (Phase 4, S4.6).
204
+ * Absent is the honest default: a statement with no checked counterpart gets
205
+ * no reference rather than an `'unreviewed'` placeholder.
206
+ */
207
+ readonly formalRef?: FormalRef;
208
+ }
209
+ /** A claimed bridge the atlas records as REJECTED, with the reason. @public */
210
+ export interface AtlasRejection {
211
+ /** `'ax-cubic-spring-lc'`. */
212
+ readonly id: string;
213
+ readonly claimed: RelationType;
214
+ readonly premises: readonly string[];
215
+ readonly conclusion: string;
216
+ readonly reason: string;
217
+ /** `'beta·x0²·k⁻¹'`. */
218
+ readonly survivingGroup: string;
219
+ readonly witnesses: readonly Witness[];
220
+ }
221
+ /**
222
+ * The relation a record asserts, as a DISCRIMINATED UNION over `RelationType`.
223
+ *
224
+ * This is the Phase 1 overlay (design note §1.2, "One overlay, not two"). Its
225
+ * purpose is to move `AtlasBridge`'s two CONDITIONAL requirements — written
226
+ * there only as doc comments — into the type system:
227
+ *
228
+ * - `approximation` REQUIRES `bound`, and `ApproximationBound` itself
229
+ * mandates `horizon` + `horizonHolds`. So an approximation without a
230
+ * machine horizon is a COMPILE error, not a runtime one.
231
+ * - `exact-equivalence` REQUIRES `inverse`.
232
+ *
233
+ * Deliberately conservative elsewhere. The design note §2.2 names the fields
234
+ * the other members WOULD need (an analyticity domain, a checkable
235
+ * `preserves` set, an ħ-order) and records that none of them exists before
236
+ * Phase 2. Inventing them here would encode claims the data cannot support,
237
+ * so every other member carries only `transformation`.
238
+ *
239
+ * @internal
240
+ */
241
+ export type RelationContract = {
242
+ readonly type: 'derivation';
243
+ readonly transformation: string;
244
+ } | {
245
+ readonly type: 'exact-equivalence';
246
+ readonly transformation: string;
247
+ /** REQUIRED: `'x = x0 u, t = τ/ω0'`. An equivalence without an inverse is not one. */
248
+ readonly inverse: string;
249
+ } | {
250
+ readonly type: 'restriction';
251
+ readonly transformation: string;
252
+ } | {
253
+ readonly type: 'approximation';
254
+ readonly transformation: string;
255
+ /** REQUIRED, and mandates its own machine horizon. */
256
+ readonly bound: ApproximationBound;
257
+ } | {
258
+ readonly type: 'coarse-graining';
259
+ readonly transformation: string;
260
+ /** Optional: errors accumulate through `composeBounds` when present. */
261
+ readonly bound?: ApproximationBound;
262
+ } | {
263
+ readonly type: 'analytic-continuation';
264
+ readonly transformation: string;
265
+ } | {
266
+ readonly type: 'structural-analogy';
267
+ readonly transformation: string;
268
+ } | {
269
+ readonly type: 'deformation-quantization';
270
+ readonly transformation: string;
271
+ };
272
+ /**
273
+ * Sign and unit choices a record depends on. Every field is optional, and a
274
+ * field is only meaningful when the record actually depends on that choice.
275
+ *
276
+ * Non-emptiness matters downstream: design note §3 requires `conventions` to
277
+ * declare AT LEAST ONE field before `convention-checked` can be derived,
278
+ * because `[].every(…)` is vacuously true and would hand out a free tag.
279
+ *
280
+ * @internal
281
+ */
282
+ export interface Conventions {
283
+ /** First law as `dU = Q − W` or `dU = Q + W`. */
284
+ readonly heatWorkSign?: 'Q-W' | 'Q+W';
285
+ readonly metricSignature?: '-+++' | '+---';
286
+ readonly fourierNormalization?: 'unitary' | 'physics' | 'none';
287
+ readonly unitSystem?: 'SI' | 'gaussian' | 'natural';
288
+ readonly capacitorChargeSign?: '+' | '-';
289
+ }
290
+ /** Thrown when an `ApproximationBound` is built without its machine horizon. @public */
291
+ export declare class MissingHorizonError extends Error {
292
+ }
293
+ /**
294
+ * Thrown when an `approximation` bound is built without the machine form of
295
+ * its `delta`.
296
+ *
297
+ * A distinct type rather than a reuse of `MissingHorizonError`: the horizon of
298
+ * such a record is present and correct, and reporting a missing horizon for it
299
+ * would send the next reader to the one field that is not the defect.
300
+ *
301
+ * @internal
302
+ */
303
+ export declare class MissingDeltaAtError extends Error {
304
+ }
305
+ /** Thrown when a bound path has no Lipschitz constant anywhere but at its end. @public */
306
+ export declare class MissingLipschitzError extends Error {
307
+ }
308
+ //# sourceMappingURL=types.d.ts.map