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,137 @@
1
+ /**
2
+ * Atlas Phase 3 — `Derivation` (a hyperedge) and multicategory composition.
3
+ *
4
+ * A `Derivation` is many premises and one conclusion. Composing two of them is
5
+ * the operation design note `docs/planning/Atlas-Phase-3-Design.md` §0 names as
6
+ * the one that can silently produce a false claim, and it states the invariant
7
+ * this module exists to enforce:
8
+ *
9
+ * > A hyperedge composes only when EVERY premise edge is exact, and the
10
+ * > composite's premises are the union of the inputs' premises MINUS the
11
+ * > internal conclusions.
12
+ *
13
+ * Four gates enforce it, and each one is a reason to refuse:
14
+ *
15
+ * 1. **Consumption.** `second` must actually consume `first`'s conclusion. If
16
+ * it does not, the two are unrelated hyperedges and gluing them would
17
+ * assert a chain that was never drawn.
18
+ * 2. **Relation.** `composeRelation` decides, exactly as it does for a binary
19
+ * chain. **A hyperedge cannot launder a pair the binary table refuses**
20
+ * (§3): if the two relations land on one of the fifty-six
21
+ * `'no-composite-claim'` cells, the hyperedge carries no claim either. This
22
+ * is also where "only exact hyperedges compose" is enforced — the table's
23
+ * eight defined cells ARE that set, and re-deciding exactness here with a
24
+ * second rule would be a second place for it to rot.
25
+ * 3. **Context.** The union over every statement involved must EXIST.
26
+ * `statementContextUnion` returns a refusal rather than a merge when it
27
+ * does not, and that refusal propagates: no union, no composite.
28
+ * 4. **Premises.** The composite's premises are `first.premises ∪
29
+ * second.premises` minus the internal conclusions — here, `first.conclusion`.
30
+ *
31
+ * ## Why the primary API returns a union and does not throw
32
+ *
33
+ * The S3.1 brief says composition "throws". The design note (§2) says the
34
+ * refusal "is the correct output rather than an error", and requires the
35
+ * result type to make "these do not compose" expressible WITHOUT a number or a
36
+ * conclusion attached — mirroring `boundPath`'s no-claim. Both are served
37
+ * here: {@link composeDerivations} returns a discriminated union, and
38
+ * {@link composeDerivationsOrThrow} is a thin strict wrapper for callers that
39
+ * genuinely want a failure. The union is primary because it is the shape a
40
+ * caller cannot misread — a refusal has no `.derivation` to read.
41
+ *
42
+ * Pure: no I/O, no registry reads beyond the map a caller passes in.
43
+ *
44
+ * @module atlas/derivation
45
+ */
46
+ import type { ContextUnionResult, Statement, StatementId } from './statement.js';
47
+ import type { RelationType } from './types.js';
48
+ /** A `Derivation` id — `'d-noether-energy'`, … . @internal */
49
+ export type DerivationId = string;
50
+ /**
51
+ * Many premises, one conclusion.
52
+ *
53
+ * `contextUnion` is a FIELD rather than a method because it is checked once,
54
+ * at construction, and carried: a record whose premises do not pool is a
55
+ * record that states no claim, and that fact travels with it.
56
+ *
57
+ * @internal
58
+ */
59
+ export interface Derivation {
60
+ readonly id: DerivationId;
61
+ readonly relation: RelationType;
62
+ readonly premises: readonly StatementId[];
63
+ readonly conclusion: StatementId;
64
+ readonly sideConditions: readonly string[];
65
+ /** CHECKED, never merged. A `'no-union'` here means this record claims nothing. */
66
+ readonly contextUnion: ContextUnionResult;
67
+ }
68
+ /** A `Derivation` without its checked union — what {@link makeDerivation} takes. @internal */
69
+ export type DerivationSpec = Omit<Derivation, 'contextUnion'>;
70
+ /**
71
+ * Build a `Derivation`, checking the context union of its premises AND its
72
+ * conclusion.
73
+ *
74
+ * The conclusion is included deliberately: a conclusion stated in a context
75
+ * incompatible with its own premises is exactly the false claim §0 warns
76
+ * about, and leaving it out would let one through.
77
+ *
78
+ * @throws RangeError via `statementContextUnion` if an id does not resolve.
79
+ * @internal
80
+ */
81
+ export declare function makeDerivation(spec: DerivationSpec, registry: ReadonlyMap<StatementId, Statement>): Derivation;
82
+ /** Why two hyperedges do not compose. @internal */
83
+ export type NoCompositeReason =
84
+ /** `second` does not consume `first`'s conclusion. */
85
+ 'not-consumed'
86
+ /** The binary composition table refuses the pair of relations. */
87
+ | 'no-composite-claim'
88
+ /** The statements involved have no context union. */
89
+ | 'no-context-union'
90
+ /** One of the inputs already states no claim of its own. */
91
+ | 'input-states-no-claim';
92
+ /** The composite hyperedge. @internal */
93
+ export interface CompositeFormed {
94
+ readonly kind: 'composite';
95
+ readonly derivation: Derivation;
96
+ }
97
+ /** The two hyperedges do NOT compose, and this is why. @internal */
98
+ export interface CompositeRefused {
99
+ readonly kind: 'no-composite';
100
+ readonly reason: NoCompositeReason;
101
+ readonly detail: string;
102
+ }
103
+ /** The result of {@link composeDerivations}. @internal */
104
+ export type DerivationCompositionResult = CompositeFormed | CompositeRefused;
105
+ /** Thrown by {@link composeDerivationsOrThrow}. Carries the refusal verbatim. @internal */
106
+ export declare class DerivationCompositionError extends Error {
107
+ readonly reason: NoCompositeReason;
108
+ constructor(refusal: CompositeRefused);
109
+ }
110
+ /**
111
+ * Compose `first` then `second` into one hyperedge, or refuse and say why.
112
+ *
113
+ * `D1: {A, B} ⊢ C` composed with `D2: {C, E} ⊢ F` yields `{A, B, E} ⊢ F`:
114
+ * `C` is the internal conclusion and leaves the composite's premises.
115
+ *
116
+ * Premise ORDER is `first`'s surviving premises followed by `second`'s, each
117
+ * de-duplicated on first appearance. Stable rather than sorted, so a composite
118
+ * reads in the order the derivation was performed.
119
+ *
120
+ * @param id - the composite's id. Supplied by the caller rather than derived
121
+ * from the inputs, because a generated id would be a new identifier the
122
+ * registry does not know about.
123
+ * @internal
124
+ */
125
+ export declare function composeDerivations(id: DerivationId, first: Derivation, second: Derivation, registry: ReadonlyMap<StatementId, Statement>): DerivationCompositionResult;
126
+ /**
127
+ * {@link composeDerivations}, throwing on refusal.
128
+ *
129
+ * For callers that treat a refusal as a failure. Prefer the union-returning
130
+ * form: a thrown error is easy to catch and discard, and a discarded refusal
131
+ * is how a composite gets used anyway.
132
+ *
133
+ * @throws DerivationCompositionError on any refusal.
134
+ * @internal
135
+ */
136
+ export declare function composeDerivationsOrThrow(id: DerivationId, first: Derivation, second: Derivation, registry: ReadonlyMap<StatementId, Statement>): Derivation;
137
+ //# sourceMappingURL=derivation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"derivation.d.ts","sourceRoot":"","sources":["../../src/atlas/derivation.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4CG;AAKH,OAAO,KAAK,EAAE,kBAAkB,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AACjF,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE/C,8DAA8D;AAC9D,MAAM,MAAM,YAAY,GAAG,MAAM,CAAC;AAElC;;;;;;;;GAQG;AACH,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,EAAE,EAAE,YAAY,CAAC;IAC1B,QAAQ,CAAC,QAAQ,EAAE,YAAY,CAAC;IAChC,QAAQ,CAAC,QAAQ,EAAE,SAAS,WAAW,EAAE,CAAC;IAC1C,QAAQ,CAAC,UAAU,EAAE,WAAW,CAAC;IACjC,QAAQ,CAAC,cAAc,EAAE,SAAS,MAAM,EAAE,CAAC;IAC3C,mFAAmF;IACnF,QAAQ,CAAC,YAAY,EAAE,kBAAkB,CAAC;CAC3C;AAED,8FAA8F;AAC9F,MAAM,MAAM,cAAc,GAAG,IAAI,CAAC,UAAU,EAAE,cAAc,CAAC,CAAC;AAE9D;;;;;;;;;;GAUG;AACH,wBAAgB,cAAc,CAC5B,IAAI,EAAE,cAAc,EACpB,QAAQ,EAAE,WAAW,CAAC,WAAW,EAAE,SAAS,CAAC,GAC5C,UAAU,CAKZ;AAED,mDAAmD;AACnD,MAAM,MAAM,iBAAiB;AAC3B,sDAAsD;AACpD,cAAc;AAChB,kEAAkE;GAChE,oBAAoB;AACtB,qDAAqD;GACnD,kBAAkB;AACpB,4DAA4D;GAC1D,uBAAuB,CAAC;AAE5B,yCAAyC;AACzC,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAC;IAC3B,QAAQ,CAAC,UAAU,EAAE,UAAU,CAAC;CACjC;AAED,oEAAoE;AACpE,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,IAAI,EAAE,cAAc,CAAC;IAC9B,QAAQ,CAAC,MAAM,EAAE,iBAAiB,CAAC;IACnC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB;AAED,0DAA0D;AAC1D,MAAM,MAAM,2BAA2B,GAAG,eAAe,GAAG,gBAAgB,CAAC;AAE7E,2FAA2F;AAC3F,qBAAa,0BAA2B,SAAQ,KAAK;IACnD,QAAQ,CAAC,MAAM,EAAE,iBAAiB,CAAC;IACnC,YAAY,OAAO,EAAE,gBAAgB,EAIpC;CACF;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,kBAAkB,CAChC,EAAE,EAAE,YAAY,EAChB,KAAK,EAAE,UAAU,EACjB,MAAM,EAAE,UAAU,EAClB,QAAQ,EAAE,WAAW,CAAC,WAAW,EAAE,SAAS,CAAC,GAC5C,2BAA2B,CA2F7B;AAED;;;;;;;;;GASG;AACH,wBAAgB,yBAAyB,CACvC,EAAE,EAAE,YAAY,EAChB,KAAK,EAAE,UAAU,EACjB,MAAM,EAAE,UAAU,EAClB,QAAQ,EAAE,WAAW,CAAC,WAAW,EAAE,SAAS,CAAC,GAC5C,UAAU,CAIZ"}
@@ -0,0 +1,190 @@
1
+ /**
2
+ * Atlas Phase 3 — `Derivation` (a hyperedge) and multicategory composition.
3
+ *
4
+ * A `Derivation` is many premises and one conclusion. Composing two of them is
5
+ * the operation design note `docs/planning/Atlas-Phase-3-Design.md` §0 names as
6
+ * the one that can silently produce a false claim, and it states the invariant
7
+ * this module exists to enforce:
8
+ *
9
+ * > A hyperedge composes only when EVERY premise edge is exact, and the
10
+ * > composite's premises are the union of the inputs' premises MINUS the
11
+ * > internal conclusions.
12
+ *
13
+ * Four gates enforce it, and each one is a reason to refuse:
14
+ *
15
+ * 1. **Consumption.** `second` must actually consume `first`'s conclusion. If
16
+ * it does not, the two are unrelated hyperedges and gluing them would
17
+ * assert a chain that was never drawn.
18
+ * 2. **Relation.** `composeRelation` decides, exactly as it does for a binary
19
+ * chain. **A hyperedge cannot launder a pair the binary table refuses**
20
+ * (§3): if the two relations land on one of the fifty-six
21
+ * `'no-composite-claim'` cells, the hyperedge carries no claim either. This
22
+ * is also where "only exact hyperedges compose" is enforced — the table's
23
+ * eight defined cells ARE that set, and re-deciding exactness here with a
24
+ * second rule would be a second place for it to rot.
25
+ * 3. **Context.** The union over every statement involved must EXIST.
26
+ * `statementContextUnion` returns a refusal rather than a merge when it
27
+ * does not, and that refusal propagates: no union, no composite.
28
+ * 4. **Premises.** The composite's premises are `first.premises ∪
29
+ * second.premises` minus the internal conclusions — here, `first.conclusion`.
30
+ *
31
+ * ## Why the primary API returns a union and does not throw
32
+ *
33
+ * The S3.1 brief says composition "throws". The design note (§2) says the
34
+ * refusal "is the correct output rather than an error", and requires the
35
+ * result type to make "these do not compose" expressible WITHOUT a number or a
36
+ * conclusion attached — mirroring `boundPath`'s no-claim. Both are served
37
+ * here: {@link composeDerivations} returns a discriminated union, and
38
+ * {@link composeDerivationsOrThrow} is a thin strict wrapper for callers that
39
+ * genuinely want a failure. The union is primary because it is the shape a
40
+ * caller cannot misread — a refusal has no `.derivation` to read.
41
+ *
42
+ * Pure: no I/O, no registry reads beyond the map a caller passes in.
43
+ *
44
+ * @module atlas/derivation
45
+ */
46
+ import { composeRelation, NO_COMPOSITE_CLAIM } from './composition-table.js';
47
+ import { statementContextUnion } from './statement.js';
48
+ /**
49
+ * Build a `Derivation`, checking the context union of its premises AND its
50
+ * conclusion.
51
+ *
52
+ * The conclusion is included deliberately: a conclusion stated in a context
53
+ * incompatible with its own premises is exactly the false claim §0 warns
54
+ * about, and leaving it out would let one through.
55
+ *
56
+ * @throws RangeError via `statementContextUnion` if an id does not resolve.
57
+ * @internal
58
+ */
59
+ export function makeDerivation(spec, registry) {
60
+ return {
61
+ ...spec,
62
+ contextUnion: statementContextUnion([...spec.premises, spec.conclusion], registry),
63
+ };
64
+ }
65
+ /** Thrown by {@link composeDerivationsOrThrow}. Carries the refusal verbatim. @internal */
66
+ export class DerivationCompositionError extends Error {
67
+ reason;
68
+ constructor(refusal) {
69
+ super(refusal.detail);
70
+ this.name = 'DerivationCompositionError';
71
+ this.reason = refusal.reason;
72
+ }
73
+ }
74
+ /**
75
+ * Compose `first` then `second` into one hyperedge, or refuse and say why.
76
+ *
77
+ * `D1: {A, B} ⊢ C` composed with `D2: {C, E} ⊢ F` yields `{A, B, E} ⊢ F`:
78
+ * `C` is the internal conclusion and leaves the composite's premises.
79
+ *
80
+ * Premise ORDER is `first`'s surviving premises followed by `second`'s, each
81
+ * de-duplicated on first appearance. Stable rather than sorted, so a composite
82
+ * reads in the order the derivation was performed.
83
+ *
84
+ * @param id - the composite's id. Supplied by the caller rather than derived
85
+ * from the inputs, because a generated id would be a new identifier the
86
+ * registry does not know about.
87
+ * @internal
88
+ */
89
+ export function composeDerivations(id, first, second, registry) {
90
+ // ── Gate 0: an input that claims nothing composes to nothing ──────────────
91
+ for (const [label, d] of [
92
+ ['first', first],
93
+ ['second', second],
94
+ ]) {
95
+ if (d.contextUnion.kind === 'no-union') {
96
+ return {
97
+ kind: 'no-composite',
98
+ reason: 'input-states-no-claim',
99
+ detail: `${label} derivation '${d.id}' has no context union ` +
100
+ `(${d.contextUnion.reason}: ${d.contextUnion.detail}), so it states no claim to compose`,
101
+ };
102
+ }
103
+ }
104
+ // ── Gate 1: `second` must consume `first`'s conclusion ────────────────────
105
+ if (!second.premises.includes(first.conclusion)) {
106
+ return {
107
+ kind: 'no-composite',
108
+ reason: 'not-consumed',
109
+ detail: `'${second.id}' does not take '${first.conclusion}' as a premise ` +
110
+ `(its premises are ${second.premises.map((p) => `'${p}'`).join(', ')}), ` +
111
+ `so '${first.id}' does not feed it`,
112
+ };
113
+ }
114
+ // ── Gate 2: the binary table governs, and a hyperedge cannot launder it ───
115
+ const relation = composeRelation(first.relation, second.relation);
116
+ if (relation === NO_COMPOSITE_CLAIM) {
117
+ return {
118
+ kind: 'no-composite',
119
+ reason: NO_COMPOSITE_CLAIM,
120
+ detail: `'${first.id}' (${first.relation}) then '${second.id}' (${second.relation}) ` +
121
+ 'composes to no relation; a hyperedge cannot assert what the binary table refuses',
122
+ };
123
+ }
124
+ // ── Gate 4 (computed before gate 3 so the union covers the right set) ─────
125
+ // The composite's premises: the union of the inputs' premises MINUS the
126
+ // internal conclusions. `first.conclusion` is the only internal one for a
127
+ // two-input composition; it is removed from BOTH sides, so a premise that
128
+ // `first` also happened to require does not survive as an input it no longer
129
+ // needs.
130
+ const internal = new Set([first.conclusion]);
131
+ const premises = [];
132
+ for (const p of [...first.premises, ...second.premises]) {
133
+ if (internal.has(p))
134
+ continue;
135
+ if (premises.includes(p))
136
+ continue;
137
+ premises.push(p);
138
+ }
139
+ // ── Gate 3: the pooled context must exist over EVERY statement involved ───
140
+ // Every statement, not just the surviving premises: the internal conclusion
141
+ // is what the two halves meet at, and an incompatibility there is exactly
142
+ // the one that would vanish from the composite's own field.
143
+ const involved = [
144
+ ...new Set([
145
+ ...first.premises,
146
+ first.conclusion,
147
+ ...second.premises,
148
+ second.conclusion,
149
+ ]),
150
+ ];
151
+ const union = statementContextUnion(involved, registry);
152
+ if (union.kind === 'no-union') {
153
+ return {
154
+ kind: 'no-composite',
155
+ reason: 'no-context-union',
156
+ detail: `'${first.id}' and '${second.id}' have no context union ` +
157
+ `(${union.reason}: ${union.detail})`,
158
+ };
159
+ }
160
+ return {
161
+ kind: 'composite',
162
+ derivation: {
163
+ id,
164
+ relation,
165
+ premises,
166
+ conclusion: second.conclusion,
167
+ sideConditions: [
168
+ ...new Set([...first.sideConditions, ...second.sideConditions]),
169
+ ],
170
+ contextUnion: union,
171
+ },
172
+ };
173
+ }
174
+ /**
175
+ * {@link composeDerivations}, throwing on refusal.
176
+ *
177
+ * For callers that treat a refusal as a failure. Prefer the union-returning
178
+ * form: a thrown error is easy to catch and discard, and a discarded refusal
179
+ * is how a composite gets used anyway.
180
+ *
181
+ * @throws DerivationCompositionError on any refusal.
182
+ * @internal
183
+ */
184
+ export function composeDerivationsOrThrow(id, first, second, registry) {
185
+ const result = composeDerivations(id, first, second, registry);
186
+ if (result.kind === 'no-composite')
187
+ throw new DerivationCompositionError(result);
188
+ return result.derivation;
189
+ }
190
+ //# sourceMappingURL=derivation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"derivation.js","sourceRoot":"","sources":["../../src/atlas/derivation.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,218 @@
1
+ /**
2
+ * Atlas Phase 1, S1.3 — evidence tags, DERIVED AT READ TIME.
3
+ *
4
+ * Design note: `docs/planning/Atlas-Phase-1-Design.md` §3 and §4.
5
+ *
6
+ * **The contract of this module: it has no write path.** No record stores an
7
+ * evidence set; every tag is computed from the artifacts a record actually
8
+ * carries, each time it is asked for. A tag is emitted ONLY when the artifact
9
+ * it names is present and passing. There is no default-true tag, no tag
10
+ * derived from another tag, no tag derived from `reviewStatus`, and no tag
11
+ * derived from prose. A record carrying no passing witness derives exactly
12
+ * `{'proposed'}`.
13
+ *
14
+ * ## The empty-set trap (design note §3, Adam A1 RED — confirmed by execution)
15
+ *
16
+ * `convention-checked` is the ONLY rule in the table whose quantifier is
17
+ * universal (`every`). Written as "`conventions` is present AND every declared
18
+ * field is consumed by a witness", it hands the tag to a record with ZERO
19
+ * witnesses, because `conventions = {}` declares nothing and `[].every(…)` is
20
+ * vacuously true. {@link deriveEvidence} therefore requires a NON-EMPTY
21
+ * declaration before the universal runs, and
22
+ * `tests/atlas/derive-evidence.test.ts` pins the empty-object case.
23
+ *
24
+ * **The general rule, for anything added here later:** a universal quantifier
25
+ * in a tag derivation must be paired with a non-emptiness check, or the tag is
26
+ * free. The other rules are existentials (`some`), which are false on the
27
+ * empty set and therefore safe.
28
+ *
29
+ * ## What "passing" means, and why the caller supplies it
30
+ *
31
+ * `Witness` records an id and the test file that runs it; nothing on the
32
+ * record says whether that test passed. Proving it is a filesystem act (see
33
+ * `tests/atlas/evidence-rule.test.ts`, which matches witness ids against test
34
+ * titles), and this module is pure. So the set of passing witness ids is an
35
+ * ARGUMENT, and it is REQUIRED — {@link NO_PASSING_WITNESSES} must be passed
36
+ * explicitly when nothing is verified.
37
+ *
38
+ * It used to DEFAULT to empty, which sounds conservative and was in fact a
39
+ * defect (Eve E1 RED, confirmed by execution). Defaulting the other way, to
40
+ * "all", would have been the free-tag defect above in a second location — but
41
+ * defaulting to empty created the mirror-image failure: a forgotten argument
42
+ * produced an answer identical to a real negative. A catalog-wide check written
43
+ * that way could only ever report "no row gains evidence", whatever the rows
44
+ * held, so it could not fail. Requiring the argument makes a vacuous result a
45
+ * STATED choice, and `tests/atlas/coverage.test.ts` now carries a positive
46
+ * control so that a negative result carries information.
47
+ *
48
+ * @module atlas/derive-evidence
49
+ * @internal
50
+ */
51
+ import type { Conventions, EvidenceTag, FormalFidelity } from './types.js';
52
+ /**
53
+ * The verdict of `adjudicateBridgeEntry` (`src/bridges/membership.ts`),
54
+ * restated structurally so this module takes no dependency on `src/bridges`
55
+ * (the dependency must run one way — design note §1).
56
+ *
57
+ * `tests/atlas/derive-evidence.test.ts` pins this union against the real
58
+ * `BridgeVerdict` at compile time AND at runtime over the live catalog, so a
59
+ * fourth verdict fails the test rather than silently falling through.
60
+ *
61
+ * @internal
62
+ */
63
+ export type MembershipVerdict = 'bridge' | 'not-a-bridge' | 'unadjudicated';
64
+ /**
65
+ * A witness as this derivation reads it.
66
+ *
67
+ * Structural, not an import of `Witness`, for two reasons that are findings in
68
+ * their own right (both reported to the Lead):
69
+ *
70
+ * - `Witness.kind` is `'symbolic' | 'numeric' | 'formal'` — there is NO
71
+ * `'dimensional'` member, so `dimension-checked` has no source on today's
72
+ * data. The kind is widened here to include `'dimensional'` so the rule is
73
+ * written once and correctly; it simply never fires until such a witness
74
+ * exists. Widening it is not inventing evidence: no record carries one.
75
+ * - `Witness` records no list of the convention fields a check consumes, so
76
+ * `consumes` is optional here. Absent ⇒ the witness consumes nothing ⇒
77
+ * `convention-checked` cannot be earned. Conservative by construction.
78
+ *
79
+ * @internal
80
+ */
81
+ export interface WitnessLike {
82
+ readonly id: string;
83
+ readonly kind: 'symbolic' | 'numeric' | 'formal' | 'dimensional';
84
+ /** Convention fields this check actually consumes, when it declares any. */
85
+ readonly consumes?: readonly (keyof Conventions)[];
86
+ }
87
+ /**
88
+ * A counterexample as this derivation reads it.
89
+ *
90
+ * `Counterexample` (`src/atlas/types.ts`) carries `description` and `witness`
91
+ * and has NO `resolvedBy` field — so on today's data every counterexample is
92
+ * unresolved. `resolvedBy` is read here as an optional property rather than
93
+ * assumed absent, so that adding it later resolves counterexamples without
94
+ * touching this file. This module adds no field to any type.
95
+ *
96
+ * @internal
97
+ */
98
+ export interface CounterexampleLike {
99
+ readonly description?: string;
100
+ readonly witness?: string;
101
+ /** Present and non-empty ⇒ the counterexample is resolved and does not contradict. */
102
+ readonly resolvedBy?: string;
103
+ }
104
+ /**
105
+ * A rejection as this projection reads it — structural, so this module still
106
+ * imports nothing from `src/bridges`.
107
+ *
108
+ * @internal
109
+ */
110
+ export interface RejectionLike {
111
+ readonly beId: number;
112
+ readonly reason: string;
113
+ }
114
+ /**
115
+ * A row's counterexamples INCLUDING the one its rejection constitutes.
116
+ *
117
+ * ROADMAP §7 Phase 1 asks for "a `RejectedBridgeAdjudication` ⇒ `contradicted`
118
+ * with the counterexample LINKED". The linking half is what matters and was
119
+ * missing: BE-35 had a counterexample written by hand and earned `contradicted`
120
+ * honestly, while BE-28, BE-29, BE-32 and BE-40 had none — and an earlier rule
121
+ * papered over that by FORCING `contradicted` onto every rejected row, which
122
+ * manufactured a refutation from nothing (Eve E1).
123
+ *
124
+ * This is the linking done properly. The rejection's own `reason` IS the
125
+ * counterexample: a row rejected for being single-regime is refuted AS A BRIDGE
126
+ * by exactly that argument. Projecting it means `contradicted` is then EARNED
127
+ * through the ordinary derivation rather than asserted by a special case.
128
+ *
129
+ * **It is a projection, not a copy.** The reason string is never duplicated into
130
+ * a catalog row; `bridges/rejected.ts` remains its single source, which is what
131
+ * the ROADMAP means by "cross-linked ... rather than duplicating it". The caller
132
+ * supplies the rejection, so this module still owns no view of WHICH ids are
133
+ * rejected.
134
+ *
135
+ * @internal
136
+ */
137
+ export declare function counterexamplesWithRejection(record: EvidenceInput, rejection: RejectionLike | undefined): readonly CounterexampleLike[];
138
+ /** The artifacts a record carries, all optional. @internal */
139
+ export interface EvidenceInput {
140
+ readonly witnesses?: readonly WitnessLike[];
141
+ readonly conventions?: Conventions;
142
+ readonly counterexamples?: readonly CounterexampleLike[];
143
+ /**
144
+ * The record's formal reference, read ONLY for its fidelity. Structural so a
145
+ * caller can pass an `AtlasBridge` directly.
146
+ */
147
+ readonly formalRef?: {
148
+ readonly fidelity: FormalFidelity;
149
+ };
150
+ }
151
+ /**
152
+ * The empty passing set, for a caller that genuinely has nothing marked passing.
153
+ *
154
+ * ⚠ This is EXPORTED and must be passed EXPLICITLY. It used to be a default
155
+ * parameter value, and that was a defect found by post-implementation review
156
+ * (Eve, E1) and confirmed by execution: a record carrying three passing
157
+ * witnesses and a consumed convention derived `{'proposed'}` under the default —
158
+ * byte-identical to an empty record. A caller who simply forgot the argument got
159
+ * an answer indistinguishable from a real negative.
160
+ *
161
+ * That made a catalog-wide check VACUOUS rather than reassuring. "No row gains
162
+ * evidence" was the only outcome the call could produce, whatever the rows
163
+ * contained, so the check could not fail and proved nothing. Requiring the
164
+ * argument forces the caller to STATE which witnesses were verified, which is
165
+ * exactly the decision that must never be implicit.
166
+ */
167
+ export declare const NO_PASSING_WITNESSES: ReadonlySet<string>;
168
+ /**
169
+ * Derive the evidence set of one record.
170
+ *
171
+ * @param record - the artifacts the record carries.
172
+ * @param passingWitnessIds - ids of witnesses VERIFIED to pass. REQUIRED: pass
173
+ * {@link NO_PASSING_WITNESSES} explicitly when nothing is verified, so that a
174
+ * vacuous result is a stated choice rather than a forgotten argument.
175
+ * @returns a fresh set; never cached, never stored.
176
+ * @internal
177
+ */
178
+ export declare function deriveEvidence(record: EvidenceInput, passingWitnessIds: ReadonlySet<string>): ReadonlySet<EvidenceTag>;
179
+ /**
180
+ * Derive the evidence set of a catalog row, under the adjudication precedence
181
+ * of design note §4. The verdict is supplied by the caller — it comes from
182
+ * `adjudicateBridgeEntry`, which owns the rejected-id registry
183
+ * (`REJECTED_BRIDGE_IDS`). Reading that registry here would make this file a
184
+ * second source of truth about which ids are rejected.
185
+ *
186
+ * | Verdict | Derives |
187
+ * |---|---|
188
+ * | `'not-a-bridge'` | {@link deriveEvidence} runs normally — see below |
189
+ * | `'unadjudicated'` | `{'proposed'}` only — never a refutation, never support |
190
+ * | `'bridge'` | {@link deriveEvidence} runs normally |
191
+ *
192
+ * ## ⚠ `'not-a-bridge'` no longer forces `'contradicted'` (Eve E1, 2026-09-21)
193
+ *
194
+ * It used to, "regardless of witnesses", and that rule — written by me in design
195
+ * note §4 — **violated §3 of the same document.** `contradicted` means THE CLAIM
196
+ * IS REFUTED. `not-a-bridge` means THE ROW IS NOT A REGIME-CROSSING BRIDGE.
197
+ * Those are different assertions about different things, and conflating them made
198
+ * the library report BE-35 as `status: 'established'` and `evidence:
199
+ * {'contradicted'}` in the same breath — from which a reader cannot tell whether
200
+ * the equation is a true in-regime identity the bridge graph ignores, or a
201
+ * refuted statement.
202
+ *
203
+ * Measured when the rule was removed: of the five rejected rows, only **BE-35**
204
+ * carries an actual counterexample, and it derives `{'contradicted'}` NATURALLY
205
+ * through the normal path. **BE-28, BE-29, BE-32 and BE-40 carry none** — the old
206
+ * rule was manufacturing a refutation for four rows with no refuting artifact
207
+ * whatsoever. That is exactly what §3 forbids: a tag is emitted only when the
208
+ * artifact it names is present and passing.
209
+ *
210
+ * Membership already has a single owner — `adjudicateBridgeEntry` — and it does
211
+ * not need restating in the evidence vocabulary. Removing the case leaves each
212
+ * fact with exactly one source, which is what §4 was trying to achieve and this
213
+ * rule was quietly undermining.
214
+ *
215
+ * @internal
216
+ */
217
+ export declare function deriveEvidenceForVerdict(verdict: MembershipVerdict, record: EvidenceInput, passingWitnessIds: ReadonlySet<string>): ReadonlySet<EvidenceTag>;
218
+ //# sourceMappingURL=derive-evidence.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"derive-evidence.d.ts","sourceRoot":"","sources":["../../src/atlas/derive-evidence.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiDG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAE3E;;;;;;;;;;GAUG;AACH,MAAM,MAAM,iBAAiB,GAAG,QAAQ,GAAG,cAAc,GAAG,eAAe,CAAC;AAE5E;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,IAAI,EAAE,UAAU,GAAG,SAAS,GAAG,QAAQ,GAAG,aAAa,CAAC;IACjE,4EAA4E;IAC5E,QAAQ,CAAC,QAAQ,CAAC,EAAE,SAAS,CAAC,MAAM,WAAW,CAAC,EAAE,CAAC;CACpD;AAED;;;;;;;;;;GAUG;AACH,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B,sFAAsF;IACtF,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;CAC9B;AAED;;;;;GAKG;AACH,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB;AAED;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAgB,4BAA4B,CAC1C,MAAM,EAAE,aAAa,EACrB,SAAS,EAAE,aAAa,GAAG,SAAS,GACnC,SAAS,kBAAkB,EAAE,CAqB/B;AAED,8DAA8D;AAC9D,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,SAAS,CAAC,EAAE,SAAS,WAAW,EAAE,CAAC;IAC5C,QAAQ,CAAC,WAAW,CAAC,EAAE,WAAW,CAAC;IACnC,QAAQ,CAAC,eAAe,CAAC,EAAE,SAAS,kBAAkB,EAAE,CAAC;IACzD;;;OAGG;IACH,QAAQ,CAAC,SAAS,CAAC,EAAE;QAAE,QAAQ,CAAC,QAAQ,EAAE,cAAc,CAAA;KAAE,CAAC;CAC5D;AAED;;;;;;;;;;;;;;;GAeG;AACH,eAAO,MAAM,oBAAoB,EAAE,WAAW,CAAC,MAAM,CAAqB,CAAC;AAmB3E;;;;;;;;;GASG;AACH,wBAAgB,cAAc,CAC5B,MAAM,EAAE,aAAa,EACrB,iBAAiB,EAAE,WAAW,CAAC,MAAM,CAAC,GACrC,WAAW,CAAC,WAAW,CAAC,CAyC1B;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AACH,wBAAgB,wBAAwB,CACtC,OAAO,EAAE,iBAAiB,EAC1B,MAAM,EAAE,aAAa,EACrB,iBAAiB,EAAE,WAAW,CAAC,MAAM,CAAC,GACrC,WAAW,CAAC,WAAW,CAAC,CAY1B"}