universal-physics-tensor 0.5.1 → 0.7.1

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 (378) hide show
  1. package/README.md +66 -105
  2. package/dist/bridges/catalog-adapter.d.ts +116 -0
  3. package/dist/bridges/catalog-adapter.d.ts.map +1 -0
  4. package/dist/bridges/catalog-adapter.js +302 -0
  5. package/dist/bridges/catalog-adapter.js.map +1 -0
  6. package/dist/bridges/equations/_be-helpers.d.ts +145 -0
  7. package/dist/bridges/equations/_be-helpers.d.ts.map +1 -0
  8. package/dist/bridges/equations/_be-helpers.js +179 -0
  9. package/dist/bridges/equations/_be-helpers.js.map +1 -0
  10. package/dist/bridges/equations/be-11-decoherence-master.d.ts +1 -2
  11. package/dist/bridges/equations/be-11-decoherence-master.d.ts.map +1 -1
  12. package/dist/bridges/equations/be-11-decoherence-master.js +9 -20
  13. package/dist/bridges/equations/be-11-decoherence-master.js.map +1 -1
  14. package/dist/bridges/equations/be-12-coherence-length.d.ts +7 -1
  15. package/dist/bridges/equations/be-12-coherence-length.d.ts.map +1 -1
  16. package/dist/bridges/equations/be-12-coherence-length.js +8 -16
  17. package/dist/bridges/equations/be-12-coherence-length.js.map +1 -1
  18. package/dist/bridges/equations/be-13-einstein-trace.d.ts +51 -3
  19. package/dist/bridges/equations/be-13-einstein-trace.d.ts.map +1 -1
  20. package/dist/bridges/equations/be-13-einstein-trace.js +74 -17
  21. package/dist/bridges/equations/be-13-einstein-trace.js.map +1 -1
  22. package/dist/bridges/equations/be-14-ryu-takayanagi.d.ts +10 -4
  23. package/dist/bridges/equations/be-14-ryu-takayanagi.d.ts.map +1 -1
  24. package/dist/bridges/equations/be-14-ryu-takayanagi.js +6 -17
  25. package/dist/bridges/equations/be-14-ryu-takayanagi.js.map +1 -1
  26. package/dist/bridges/equations/be-15-emergence.d.ts +7 -1
  27. package/dist/bridges/equations/be-15-emergence.d.ts.map +1 -1
  28. package/dist/bridges/equations/be-15-emergence.js +12 -22
  29. package/dist/bridges/equations/be-15-emergence.js.map +1 -1
  30. package/dist/bridges/equations/be-16-landauer.d.ts +7 -1
  31. package/dist/bridges/equations/be-16-landauer.d.ts.map +1 -1
  32. package/dist/bridges/equations/be-16-landauer.js +5 -13
  33. package/dist/bridges/equations/be-16-landauer.js.map +1 -1
  34. package/dist/bridges/equations/be-17-einstein-cartan.d.ts +26 -13
  35. package/dist/bridges/equations/be-17-einstein-cartan.d.ts.map +1 -1
  36. package/dist/bridges/equations/be-17-einstein-cartan.js +28 -31
  37. package/dist/bridges/equations/be-17-einstein-cartan.js.map +1 -1
  38. package/dist/bridges/equations/be-18-higgs-mass.d.ts +7 -1
  39. package/dist/bridges/equations/be-18-higgs-mass.d.ts.map +1 -1
  40. package/dist/bridges/equations/be-18-higgs-mass.js +5 -16
  41. package/dist/bridges/equations/be-18-higgs-mass.js.map +1 -1
  42. package/dist/bridges/equations/be-19-quantum-bounce.d.ts +38 -3
  43. package/dist/bridges/equations/be-19-quantum-bounce.d.ts.map +1 -1
  44. package/dist/bridges/equations/be-19-quantum-bounce.js +69 -20
  45. package/dist/bridges/equations/be-19-quantum-bounce.js.map +1 -1
  46. package/dist/bridges/equations/be-20-vacuum-energy.d.ts +20 -1
  47. package/dist/bridges/equations/be-20-vacuum-energy.d.ts.map +1 -1
  48. package/dist/bridges/equations/be-20-vacuum-energy.js +36 -15
  49. package/dist/bridges/equations/be-20-vacuum-energy.js.map +1 -1
  50. package/dist/bridges/equations/be-21-kss-bound.d.ts +2 -0
  51. package/dist/bridges/equations/be-21-kss-bound.d.ts.map +1 -1
  52. package/dist/bridges/equations/be-21-kss-bound.js +4 -10
  53. package/dist/bridges/equations/be-21-kss-bound.js.map +1 -1
  54. package/dist/bridges/equations/be-22-topological-entanglement.d.ts +6 -9
  55. package/dist/bridges/equations/be-22-topological-entanglement.d.ts.map +1 -1
  56. package/dist/bridges/equations/be-22-topological-entanglement.js +9 -21
  57. package/dist/bridges/equations/be-22-topological-entanglement.js.map +1 -1
  58. package/dist/bridges/equations/be-23-syk-planckian.d.ts +7 -1
  59. package/dist/bridges/equations/be-23-syk-planckian.d.ts.map +1 -1
  60. package/dist/bridges/equations/be-23-syk-planckian.js +11 -25
  61. package/dist/bridges/equations/be-23-syk-planckian.js.map +1 -1
  62. package/dist/bridges/equations/be-24-foerster-fret.d.ts +7 -1
  63. package/dist/bridges/equations/be-24-foerster-fret.d.ts.map +1 -1
  64. package/dist/bridges/equations/be-24-foerster-fret.js +8 -16
  65. package/dist/bridges/equations/be-24-foerster-fret.js.map +1 -1
  66. package/dist/bridges/equations/be-25-iit-phi.d.ts +7 -1
  67. package/dist/bridges/equations/be-25-iit-phi.d.ts.map +1 -1
  68. package/dist/bridges/equations/be-25-iit-phi.js +12 -16
  69. package/dist/bridges/equations/be-25-iit-phi.js.map +1 -1
  70. package/dist/bridges/equations/be-25-orch-or.d.ts +6 -3
  71. package/dist/bridges/equations/be-25-orch-or.d.ts.map +1 -1
  72. package/dist/bridges/equations/be-25-orch-or.js +8 -17
  73. package/dist/bridges/equations/be-25-orch-or.js.map +1 -1
  74. package/dist/bridges/equations/be-26-dna-tunneling.d.ts +6 -3
  75. package/dist/bridges/equations/be-26-dna-tunneling.d.ts.map +1 -1
  76. package/dist/bridges/equations/be-26-dna-tunneling.js +11 -26
  77. package/dist/bridges/equations/be-26-dna-tunneling.js.map +1 -1
  78. package/dist/bridges/equations/be-27-effective-temperature.d.ts +7 -1
  79. package/dist/bridges/equations/be-27-effective-temperature.d.ts.map +1 -1
  80. package/dist/bridges/equations/be-27-effective-temperature.js +8 -16
  81. package/dist/bridges/equations/be-27-effective-temperature.js.map +1 -1
  82. package/dist/bridges/equations/be-28-onsager-entropy-production.d.ts +7 -1
  83. package/dist/bridges/equations/be-28-onsager-entropy-production.d.ts.map +1 -1
  84. package/dist/bridges/equations/be-28-onsager-entropy-production.js +9 -13
  85. package/dist/bridges/equations/be-28-onsager-entropy-production.js.map +1 -1
  86. package/dist/bridges/equations/be-29-jarzynski.d.ts +7 -1
  87. package/dist/bridges/equations/be-29-jarzynski.d.ts.map +1 -1
  88. package/dist/bridges/equations/be-29-jarzynski.js +8 -13
  89. package/dist/bridges/equations/be-29-jarzynski.js.map +1 -1
  90. package/dist/bridges/equations/be-30-flm-first-law.d.ts +11 -2
  91. package/dist/bridges/equations/be-30-flm-first-law.d.ts.map +1 -1
  92. package/dist/bridges/equations/be-30-flm-first-law.js +10 -21
  93. package/dist/bridges/equations/be-30-flm-first-law.js.map +1 -1
  94. package/dist/bridges/equations/be-31-causal-set-bd.d.ts +7 -1
  95. package/dist/bridges/equations/be-31-causal-set-bd.d.ts.map +1 -1
  96. package/dist/bridges/equations/be-31-causal-set-bd.js +11 -25
  97. package/dist/bridges/equations/be-31-causal-set-bd.js.map +1 -1
  98. package/dist/bridges/equations/be-32-quantum-reference-frame.d.ts +6 -9
  99. package/dist/bridges/equations/be-32-quantum-reference-frame.d.ts.map +1 -1
  100. package/dist/bridges/equations/be-32-quantum-reference-frame.js +8 -18
  101. package/dist/bridges/equations/be-32-quantum-reference-frame.js.map +1 -1
  102. package/dist/bridges/equations/be-33-hertz-millis.d.ts +53 -28
  103. package/dist/bridges/equations/be-33-hertz-millis.d.ts.map +1 -1
  104. package/dist/bridges/equations/be-33-hertz-millis.js +55 -51
  105. package/dist/bridges/equations/be-33-hertz-millis.js.map +1 -1
  106. package/dist/bridges/equations/be-34-kibble-zurek.d.ts +6 -3
  107. package/dist/bridges/equations/be-34-kibble-zurek.d.ts.map +1 -1
  108. package/dist/bridges/equations/be-34-kibble-zurek.js +15 -26
  109. package/dist/bridges/equations/be-34-kibble-zurek.js.map +1 -1
  110. package/dist/bridges/equations/be-35-conformal-bootstrap.d.ts +6 -9
  111. package/dist/bridges/equations/be-35-conformal-bootstrap.d.ts.map +1 -1
  112. package/dist/bridges/equations/be-35-conformal-bootstrap.js +9 -21
  113. package/dist/bridges/equations/be-35-conformal-bootstrap.js.map +1 -1
  114. package/dist/bridges/equations/be-36-gw-speed-bound.d.ts +7 -1
  115. package/dist/bridges/equations/be-36-gw-speed-bound.d.ts.map +1 -1
  116. package/dist/bridges/equations/be-36-gw-speed-bound.js +5 -13
  117. package/dist/bridges/equations/be-36-gw-speed-bound.js.map +1 -1
  118. package/dist/bridges/equations/be-37-shapiro-delay.d.ts +4 -2
  119. package/dist/bridges/equations/be-37-shapiro-delay.d.ts.map +1 -1
  120. package/dist/bridges/equations/be-37-shapiro-delay.js +15 -28
  121. package/dist/bridges/equations/be-37-shapiro-delay.js.map +1 -1
  122. package/dist/bridges/equations/be-38-mond.d.ts +7 -1
  123. package/dist/bridges/equations/be-38-mond.d.ts.map +1 -1
  124. package/dist/bridges/equations/be-38-mond.js +9 -19
  125. package/dist/bridges/equations/be-38-mond.js.map +1 -1
  126. package/dist/bridges/equations/be-39-asymptotic-safety.d.ts +66 -2
  127. package/dist/bridges/equations/be-39-asymptotic-safety.d.ts.map +1 -1
  128. package/dist/bridges/equations/be-39-asymptotic-safety.js +128 -20
  129. package/dist/bridges/equations/be-39-asymptotic-safety.js.map +1 -1
  130. package/dist/bridges/equations/be-40-composite-higgs.d.ts +7 -1
  131. package/dist/bridges/equations/be-40-composite-higgs.d.ts.map +1 -1
  132. package/dist/bridges/equations/be-40-composite-higgs.js +10 -22
  133. package/dist/bridges/equations/be-40-composite-higgs.js.map +1 -1
  134. package/dist/bridges/equations/be-41-swampland.d.ts +6 -3
  135. package/dist/bridges/equations/be-41-swampland.d.ts.map +1 -1
  136. package/dist/bridges/equations/be-41-swampland.js +11 -23
  137. package/dist/bridges/equations/be-41-swampland.js.map +1 -1
  138. package/dist/bridges/equations/be-42-hawking-temperature.d.ts +2 -0
  139. package/dist/bridges/equations/be-42-hawking-temperature.d.ts.map +1 -1
  140. package/dist/bridges/equations/be-42-hawking-temperature.js +5 -13
  141. package/dist/bridges/equations/be-42-hawking-temperature.js.map +1 -1
  142. package/dist/bridges/equations/be-43-er-epr.d.ts +7 -1
  143. package/dist/bridges/equations/be-43-er-epr.d.ts.map +1 -1
  144. package/dist/bridges/equations/be-43-er-epr.js +5 -13
  145. package/dist/bridges/equations/be-43-er-epr.js.map +1 -1
  146. package/dist/bridges/equations/be-44-soft-hair.d.ts +7 -1
  147. package/dist/bridges/equations/be-44-soft-hair.d.ts.map +1 -1
  148. package/dist/bridges/equations/be-44-soft-hair.js +5 -13
  149. package/dist/bridges/equations/be-44-soft-hair.js.map +1 -1
  150. package/dist/bridges/equations/be-45-tcc.d.ts +7 -1
  151. package/dist/bridges/equations/be-45-tcc.d.ts.map +1 -1
  152. package/dist/bridges/equations/be-45-tcc.js +10 -22
  153. package/dist/bridges/equations/be-45-tcc.js.map +1 -1
  154. package/dist/bridges/equations/be-46-multiverse-measure.d.ts +7 -1
  155. package/dist/bridges/equations/be-46-multiverse-measure.d.ts.map +1 -1
  156. package/dist/bridges/equations/be-46-multiverse-measure.js +9 -19
  157. package/dist/bridges/equations/be-46-multiverse-measure.js.map +1 -1
  158. package/dist/bridges/equations/be-47-bbn-dark-sector.d.ts +7 -1
  159. package/dist/bridges/equations/be-47-bbn-dark-sector.d.ts.map +1 -1
  160. package/dist/bridges/equations/be-47-bbn-dark-sector.js +14 -16
  161. package/dist/bridges/equations/be-47-bbn-dark-sector.js.map +1 -1
  162. package/dist/bridges/equations/be-48-grw-localization.d.ts +7 -1
  163. package/dist/bridges/equations/be-48-grw-localization.d.ts.map +1 -1
  164. package/dist/bridges/equations/be-48-grw-localization.js +15 -20
  165. package/dist/bridges/equations/be-48-grw-localization.js.map +1 -1
  166. package/dist/bridges/equations/be-49-quantum-darwinism.d.ts +7 -1
  167. package/dist/bridges/equations/be-49-quantum-darwinism.d.ts.map +1 -1
  168. package/dist/bridges/equations/be-49-quantum-darwinism.js +10 -22
  169. package/dist/bridges/equations/be-49-quantum-darwinism.js.map +1 -1
  170. package/dist/bridges/equations/be-50-wheeler-feynman.d.ts +42 -12
  171. package/dist/bridges/equations/be-50-wheeler-feynman.d.ts.map +1 -1
  172. package/dist/bridges/equations/be-50-wheeler-feynman.js +84 -20
  173. package/dist/bridges/equations/be-50-wheeler-feynman.js.map +1 -1
  174. package/dist/bridges/equations/be-53-yang-mills-beta.d.ts +158 -0
  175. package/dist/bridges/equations/be-53-yang-mills-beta.d.ts.map +1 -0
  176. package/dist/bridges/equations/be-53-yang-mills-beta.js +175 -0
  177. package/dist/bridges/equations/be-53-yang-mills-beta.js.map +1 -0
  178. package/dist/bridges/equations/be-54-randall-sundrum-brane.d.ts +117 -0
  179. package/dist/bridges/equations/be-54-randall-sundrum-brane.d.ts.map +1 -0
  180. package/dist/bridges/equations/be-54-randall-sundrum-brane.js +213 -0
  181. package/dist/bridges/equations/be-54-randall-sundrum-brane.js.map +1 -0
  182. package/dist/bridges/index.d.ts +40 -1
  183. package/dist/bridges/index.d.ts.map +1 -1
  184. package/dist/bridges/index.js +130 -48
  185. package/dist/bridges/index.js.map +1 -1
  186. package/dist/bridges/perihelion-precession-labeled.d.ts +46 -0
  187. package/dist/bridges/perihelion-precession-labeled.d.ts.map +1 -0
  188. package/dist/bridges/perihelion-precession-labeled.js +54 -0
  189. package/dist/bridges/perihelion-precession-labeled.js.map +1 -0
  190. package/dist/core/axes-registry.d.ts +67 -0
  191. package/dist/core/axes-registry.d.ts.map +1 -0
  192. package/dist/core/axes-registry.js +75 -0
  193. package/dist/core/axes-registry.js.map +1 -0
  194. package/dist/core/cell.d.ts +176 -0
  195. package/dist/core/cell.d.ts.map +1 -0
  196. package/dist/core/cell.js +166 -0
  197. package/dist/core/cell.js.map +1 -0
  198. package/dist/core/flux-rules.d.ts +176 -0
  199. package/dist/core/flux-rules.d.ts.map +1 -0
  200. package/dist/core/flux-rules.js +329 -0
  201. package/dist/core/flux-rules.js.map +1 -0
  202. package/dist/core/labeled-tensor.d.ts +143 -0
  203. package/dist/core/labeled-tensor.d.ts.map +1 -0
  204. package/dist/core/labeled-tensor.js +275 -0
  205. package/dist/core/labeled-tensor.js.map +1 -0
  206. package/dist/core/regime-registry.d.ts +169 -0
  207. package/dist/core/regime-registry.d.ts.map +1 -0
  208. package/dist/core/regime-registry.js +174 -0
  209. package/dist/core/regime-registry.js.map +1 -0
  210. package/dist/core/regime-rule-install.d.ts +26 -0
  211. package/dist/core/regime-rule-install.d.ts.map +1 -0
  212. package/dist/core/regime-rule-install.js +90 -0
  213. package/dist/core/regime-rule-install.js.map +1 -0
  214. package/dist/core/regimes-builtins.d.ts +22 -0
  215. package/dist/core/regimes-builtins.d.ts.map +1 -0
  216. package/dist/core/regimes-builtins.js +96 -0
  217. package/dist/core/regimes-builtins.js.map +1 -0
  218. package/dist/core/tensor.d.ts +112 -0
  219. package/dist/core/tensor.d.ts.map +1 -1
  220. package/dist/core/tensor.js +366 -0
  221. package/dist/core/tensor.js.map +1 -1
  222. package/dist/core/types.d.ts +7 -2
  223. package/dist/core/types.d.ts.map +1 -1
  224. package/dist/core/types.js.map +1 -1
  225. package/dist/core/universal-index.d.ts +97 -0
  226. package/dist/core/universal-index.d.ts.map +1 -0
  227. package/dist/core/universal-index.js +70 -0
  228. package/dist/core/universal-index.js.map +1 -0
  229. package/dist/diff/bridge-gradient.d.ts +94 -0
  230. package/dist/diff/bridge-gradient.d.ts.map +1 -0
  231. package/dist/diff/bridge-gradient.js +83 -0
  232. package/dist/diff/bridge-gradient.js.map +1 -0
  233. package/dist/diff/bridge-specs.d.ts +68 -0
  234. package/dist/diff/bridge-specs.d.ts.map +1 -0
  235. package/dist/diff/bridge-specs.js +96 -0
  236. package/dist/diff/bridge-specs.js.map +1 -0
  237. package/dist/dimensional/bridge-check.d.ts.map +1 -1
  238. package/dist/dimensional/bridge-check.js +8 -0
  239. package/dist/dimensional/bridge-check.js.map +1 -1
  240. package/dist/dimensional/connection-validators.d.ts +12 -5
  241. package/dist/dimensional/connection-validators.d.ts.map +1 -1
  242. package/dist/dimensional/connection-validators.js.map +1 -1
  243. package/dist/dimensional/curvature-composite.d.ts +90 -0
  244. package/dist/dimensional/curvature-composite.d.ts.map +1 -0
  245. package/dist/dimensional/curvature-composite.js +57 -0
  246. package/dist/dimensional/curvature-composite.js.map +1 -0
  247. package/dist/dimensional/curvature-invariants.d.ts +90 -0
  248. package/dist/dimensional/curvature-invariants.d.ts.map +1 -0
  249. package/dist/dimensional/curvature-invariants.js +64 -0
  250. package/dist/dimensional/curvature-invariants.js.map +1 -0
  251. package/dist/dimensional/curvature.d.ts +46 -30
  252. package/dist/dimensional/curvature.d.ts.map +1 -1
  253. package/dist/dimensional/curvature.js.map +1 -1
  254. package/dist/dimensional/einstein-equation.d.ts +126 -0
  255. package/dist/dimensional/einstein-equation.d.ts.map +1 -0
  256. package/dist/dimensional/einstein-equation.js +122 -0
  257. package/dist/dimensional/einstein-equation.js.map +1 -0
  258. package/dist/dimensional/field-equation-helpers.d.ts +82 -0
  259. package/dist/dimensional/field-equation-helpers.d.ts.map +1 -0
  260. package/dist/dimensional/field-equation-helpers.js +123 -0
  261. package/dist/dimensional/field-equation-helpers.js.map +1 -0
  262. package/dist/dimensional/friedmann-equation.d.ts +148 -0
  263. package/dist/dimensional/friedmann-equation.d.ts.map +1 -0
  264. package/dist/dimensional/friedmann-equation.js +150 -0
  265. package/dist/dimensional/friedmann-equation.js.map +1 -0
  266. package/dist/dimensional/gauge-field.d.ts +182 -0
  267. package/dist/dimensional/gauge-field.d.ts.map +1 -0
  268. package/dist/dimensional/gauge-field.js +134 -0
  269. package/dist/dimensional/gauge-field.js.map +1 -0
  270. package/dist/dimensional/killing-validators.d.ts +94 -0
  271. package/dist/dimensional/killing-validators.d.ts.map +1 -0
  272. package/dist/dimensional/killing-validators.js +66 -0
  273. package/dist/dimensional/killing-validators.js.map +1 -0
  274. package/dist/dimensional/klein-gordon-equation.d.ts +113 -0
  275. package/dist/dimensional/klein-gordon-equation.d.ts.map +1 -0
  276. package/dist/dimensional/klein-gordon-equation.js +98 -0
  277. package/dist/dimensional/klein-gordon-equation.js.map +1 -0
  278. package/dist/dimensional/rg-flow.d.ts +156 -0
  279. package/dist/dimensional/rg-flow.d.ts.map +1 -0
  280. package/dist/dimensional/rg-flow.js +150 -0
  281. package/dist/dimensional/rg-flow.js.map +1 -0
  282. package/dist/dimensional/stress-energy-validators.d.ts +74 -0
  283. package/dist/dimensional/stress-energy-validators.d.ts.map +1 -0
  284. package/dist/dimensional/stress-energy-validators.js +47 -0
  285. package/dist/dimensional/stress-energy-validators.js.map +1 -0
  286. package/dist/dimensional/tensor-trace.d.ts +128 -0
  287. package/dist/dimensional/tensor-trace.d.ts.map +1 -0
  288. package/dist/dimensional/tensor-trace.js +95 -0
  289. package/dist/dimensional/tensor-trace.js.map +1 -0
  290. package/dist/dimensional/tensor.d.ts +6 -8
  291. package/dist/dimensional/tensor.d.ts.map +1 -1
  292. package/dist/dimensional/tensor.js +3 -1
  293. package/dist/dimensional/tensor.js.map +1 -1
  294. package/dist/dimensional/validator-registry.d.ts +90 -0
  295. package/dist/dimensional/validator-registry.d.ts.map +1 -0
  296. package/dist/dimensional/validator-registry.js +131 -0
  297. package/dist/dimensional/validator-registry.js.map +1 -0
  298. package/dist/dimensional/validator.d.ts +12 -2
  299. package/dist/dimensional/validator.d.ts.map +1 -1
  300. package/dist/dimensional/validator.js +60 -75
  301. package/dist/dimensional/validator.js.map +1 -1
  302. package/dist/dimensional/weyl-validators.d.ts +84 -0
  303. package/dist/dimensional/weyl-validators.d.ts.map +1 -0
  304. package/dist/dimensional/weyl-validators.js +84 -0
  305. package/dist/dimensional/weyl-validators.js.map +1 -0
  306. package/dist/index.d.ts +37 -0
  307. package/dist/index.d.ts.map +1 -1
  308. package/dist/index.js +41 -0
  309. package/dist/index.js.map +1 -1
  310. package/dist/numerical/be37-covariant-eikonal.d.ts +19 -0
  311. package/dist/numerical/be37-covariant-eikonal.d.ts.map +1 -1
  312. package/dist/numerical/be37-covariant-eikonal.js +29 -9
  313. package/dist/numerical/be37-covariant-eikonal.js.map +1 -1
  314. package/dist/numerical/christoffel-flat.d.ts +49 -0
  315. package/dist/numerical/christoffel-flat.d.ts.map +1 -0
  316. package/dist/numerical/christoffel-flat.js +86 -0
  317. package/dist/numerical/christoffel-flat.js.map +1 -0
  318. package/dist/numerical/curvature-lowering-helpers.d.ts +49 -57
  319. package/dist/numerical/curvature-lowering-helpers.d.ts.map +1 -1
  320. package/dist/numerical/curvature-lowering-helpers.js +109 -4
  321. package/dist/numerical/curvature-lowering-helpers.js.map +1 -1
  322. package/dist/numerical/derivative-lowering.d.ts +67 -0
  323. package/dist/numerical/derivative-lowering.d.ts.map +1 -0
  324. package/dist/numerical/derivative-lowering.js +243 -0
  325. package/dist/numerical/derivative-lowering.js.map +1 -0
  326. package/dist/numerical/einstein-equation.d.ts +106 -0
  327. package/dist/numerical/einstein-equation.d.ts.map +1 -0
  328. package/dist/numerical/einstein-equation.js +172 -0
  329. package/dist/numerical/einstein-equation.js.map +1 -0
  330. package/dist/numerical/geodesic-integrator.d.ts +7 -4
  331. package/dist/numerical/geodesic-integrator.d.ts.map +1 -1
  332. package/dist/numerical/geodesic-integrator.js +5 -1
  333. package/dist/numerical/geodesic-integrator.js.map +1 -1
  334. package/dist/numerical/gl4-integrator.d.ts +4 -2
  335. package/dist/numerical/gl4-integrator.d.ts.map +1 -1
  336. package/dist/numerical/gl4-integrator.js +24 -8
  337. package/dist/numerical/gl4-integrator.js.map +1 -1
  338. package/dist/numerical/killing.d.ts +157 -0
  339. package/dist/numerical/killing.d.ts.map +1 -0
  340. package/dist/numerical/killing.js +242 -0
  341. package/dist/numerical/killing.js.map +1 -0
  342. package/dist/numerical/kretschmann.d.ts +62 -0
  343. package/dist/numerical/kretschmann.d.ts.map +1 -0
  344. package/dist/numerical/kretschmann.js +88 -0
  345. package/dist/numerical/kretschmann.js.map +1 -0
  346. package/dist/numerical/lowering-utils.d.ts +47 -0
  347. package/dist/numerical/lowering-utils.d.ts.map +1 -0
  348. package/dist/numerical/lowering-utils.js +64 -0
  349. package/dist/numerical/lowering-utils.js.map +1 -0
  350. package/dist/numerical/lowering.d.ts +1 -29
  351. package/dist/numerical/lowering.d.ts.map +1 -1
  352. package/dist/numerical/lowering.js +219 -415
  353. package/dist/numerical/lowering.js.map +1 -1
  354. package/dist/numerical/null-ic.d.ts +40 -0
  355. package/dist/numerical/null-ic.d.ts.map +1 -0
  356. package/dist/numerical/null-ic.js +50 -0
  357. package/dist/numerical/null-ic.js.map +1 -0
  358. package/dist/numerical/null-ray-integrator.d.ts +3 -2
  359. package/dist/numerical/null-ray-integrator.d.ts.map +1 -1
  360. package/dist/numerical/painleve-gullstrand-metric.d.ts +74 -0
  361. package/dist/numerical/painleve-gullstrand-metric.d.ts.map +1 -0
  362. package/dist/numerical/painleve-gullstrand-metric.js +121 -0
  363. package/dist/numerical/painleve-gullstrand-metric.js.map +1 -0
  364. package/dist/numerical/pderiv.d.ts +17 -9
  365. package/dist/numerical/pderiv.d.ts.map +1 -1
  366. package/dist/numerical/pderiv.js +6 -3
  367. package/dist/numerical/pderiv.js.map +1 -1
  368. package/dist/numerical/perihelion-finder.d.ts +30 -0
  369. package/dist/numerical/perihelion-finder.d.ts.map +1 -1
  370. package/dist/numerical/perihelion-finder.js +30 -0
  371. package/dist/numerical/perihelion-finder.js.map +1 -1
  372. package/dist/numerical/tensor-engine.d.ts +2 -2
  373. package/dist/numerical/tensor-engine.d.ts.map +1 -1
  374. package/dist/numerical/weyl-lowering.d.ts +60 -0
  375. package/dist/numerical/weyl-lowering.d.ts.map +1 -0
  376. package/dist/numerical/weyl-lowering.js +111 -0
  377. package/dist/numerical/weyl-lowering.js.map +1 -0
  378. package/package.json +9 -7
@@ -0,0 +1,98 @@
1
+ /**
2
+ * Klein-Gordon scalar field equation AST node.
3
+ *
4
+ * Phase 1 of the TensorEquationNode<LHS, RHS> generalization
5
+ * (`docs/architecture/v0.7-tensor-equation-node-design-note.md`).
6
+ * First new field-equation node to use the Phase 0 field-equation
7
+ * helpers shipped in commit `5cd860a`.
8
+ *
9
+ * Represents the predicate
10
+ *
11
+ * (□ + m²) φ = J
12
+ *
13
+ * where `□ = g^μν ∇_μ ∇_ν` is the d'Alembertian (wave operator),
14
+ * `m` is the field's mass, and `J` is an optional rank-0 source
15
+ * (set to `null` for the homogeneous form `(□ + m²) φ = 0`).
16
+ *
17
+ * The node validates three structural requirements (mirroring
18
+ * `EinsteinFieldEquationNode`'s pattern):
19
+ *
20
+ * 1. **Free-index agreement** — LHS and RHS are both rank-0
21
+ * (scalar). Trivial case of the rank-N invariant.
22
+ * 2. **Per-component dim equality** — LHS and RHS must have the
23
+ * same `Dimension`. The wave-operator's component dim equals
24
+ * the field's `[fieldDim] · [L^-2]`; m² has dim `[L^-2]`; so
25
+ * the LHS bracket combines to `[fieldDim · L^-2]`. The source
26
+ * J must match that.
27
+ * 3. **Symmetry agreement** — scalar fields have no symmetry
28
+ * structure; both sides carry the trivial `'scalar'` marker.
29
+ *
30
+ * Note: this is a PREDICATE node like EinsteinFieldEquationNode —
31
+ * not a value-producing expression. Numerical evaluation of the
32
+ * wave-operator action on a specific field is out of scope
33
+ * (would require a separate `lowerKleinGordon` step like the
34
+ * curvature pipeline).
35
+ *
36
+ * @module dimensional/klein-gordon-equation
37
+ */
38
+ import { validateFreeIndexLabelMatch, validateComponentDimension, validateTensorSymmetry, } from './field-equation-helpers.js';
39
+ /** The dimensional contribution of `□ + m²`: `[L^-2]`. */
40
+ const WAVE_OPERATOR_DIM_FACTOR = {
41
+ L: -2, M: 0, T: 0, I: 0, Theta: 0, N: 0, J: 0,
42
+ };
43
+ /**
44
+ * Compose `[field.dim] × [L^-2]` (component-wise sum of exponents).
45
+ */
46
+ function composeWaveOperatorDim(fieldDim) {
47
+ return {
48
+ L: fieldDim.L + WAVE_OPERATOR_DIM_FACTOR.L,
49
+ M: fieldDim.M + WAVE_OPERATOR_DIM_FACTOR.M,
50
+ T: fieldDim.T + WAVE_OPERATOR_DIM_FACTOR.T,
51
+ I: fieldDim.I + WAVE_OPERATOR_DIM_FACTOR.I,
52
+ Theta: fieldDim.Theta + WAVE_OPERATOR_DIM_FACTOR.Theta,
53
+ N: fieldDim.N + WAVE_OPERATOR_DIM_FACTOR.N,
54
+ J: fieldDim.J + WAVE_OPERATOR_DIM_FACTOR.J,
55
+ };
56
+ }
57
+ /**
58
+ * Validate a `klein-gordon-equation` node.
59
+ *
60
+ * Three predicates (mirroring the field-equation-helpers pattern):
61
+ *
62
+ * 1. **Free-index agreement** — trivially passes (both sides are
63
+ * rank-0; `validateFreeIndexLabelMatch` with empty arrays).
64
+ * 2. **Per-component dim equality** — m² and source J must
65
+ * match the wave-operator's contribution.
66
+ * 3. **Symmetry agreement** — all participants are 'scalar'.
67
+ *
68
+ * Errors carry the keywords 'index label', 'dimension', 'symmetry'
69
+ * (consumers pattern-matching on the EFE error vocabulary stay
70
+ * green).
71
+ *
72
+ * @public
73
+ */
74
+ export function validateKleinGordonEquation(node) {
75
+ const composedDim = composeWaveOperatorDim(node.field.dim);
76
+ // Predicate 1: free-index agreement (trivially: both rank-0).
77
+ validateFreeIndexLabelMatch('KleinGordonEquationNode', '(□+m²)φ', [], node.source ? 'J' : '0', []);
78
+ // Predicate 2a: m² dimension must be [L^-2] (mass-squared as a
79
+ // wave-operator term contributes this).
80
+ validateComponentDimension('KleinGordonEquationNode', 'mass term m².dim', node.mass.dim, WAVE_OPERATOR_DIM_FACTOR, 'm² is the mass-squared term in (□+m²)φ; must have dim [L^-2] to combine with the wave operator.');
81
+ // Predicate 2b: source J dimension must equal the composed
82
+ // wave-operator-acting-on-field dim. Skipped if source is null
83
+ // (homogeneous form).
84
+ if (node.source !== null) {
85
+ validateComponentDimension('KleinGordonEquationNode', 'source J.dim', node.source.dim, composedDim, 'J must match (□+m²)φ on the LHS, which has dim [field.dim · L^-2].');
86
+ }
87
+ // Predicate 3: symmetry agreement — all 'scalar'.
88
+ validateTensorSymmetry('KleinGordonEquationNode', 'field φ', node.field.symmetry, 'scalar', 'Klein-Gordon is a scalar field equation.');
89
+ validateTensorSymmetry('KleinGordonEquationNode', 'mass m²', node.mass.symmetry, 'scalar', 'm² is a scalar parameter.');
90
+ if (node.source !== null) {
91
+ validateTensorSymmetry('KleinGordonEquationNode', 'source J', node.source.symmetry, 'scalar', 'Klein-Gordon source J is a scalar.');
92
+ }
93
+ return {
94
+ dim: composedDim,
95
+ freeIndices: new Map(),
96
+ };
97
+ }
98
+ //# sourceMappingURL=klein-gordon-equation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"klein-gordon-equation.js","sourceRoot":"","sources":["../../src/dimensional/klein-gordon-equation.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG;AAGH,OAAO,EACL,2BAA2B,EAC3B,0BAA0B,EAC1B,sBAAsB,GACvB,MAAM,6BAA6B,CAAC;AA0DrC,0DAA0D;AAC1D,MAAM,wBAAwB,GAAc;IAC1C,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;CAC9C,CAAC;AAEF;;GAEG;AACH,SAAS,sBAAsB,CAAC,QAAmB;IACjD,OAAO;QACL,CAAC,EAAE,QAAQ,CAAC,CAAC,GAAG,wBAAwB,CAAC,CAAC;QAC1C,CAAC,EAAE,QAAQ,CAAC,CAAC,GAAG,wBAAwB,CAAC,CAAC;QAC1C,CAAC,EAAE,QAAQ,CAAC,CAAC,GAAG,wBAAwB,CAAC,CAAC;QAC1C,CAAC,EAAE,QAAQ,CAAC,CAAC,GAAG,wBAAwB,CAAC,CAAC;QAC1C,KAAK,EAAE,QAAQ,CAAC,KAAK,GAAG,wBAAwB,CAAC,KAAK;QACtD,CAAC,EAAE,QAAQ,CAAC,CAAC,GAAG,wBAAwB,CAAC,CAAC;QAC1C,CAAC,EAAE,QAAQ,CAAC,CAAC,GAAG,wBAAwB,CAAC,CAAC;KAC3C,CAAC;AACJ,CAAC;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,UAAU,2BAA2B,CACzC,IAA6B;IAE7B,MAAM,WAAW,GAAG,sBAAsB,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAE3D,8DAA8D;IAC9D,2BAA2B,CACzB,yBAAyB,EACzB,SAAS,EACT,EAAE,EACF,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EACvB,EAAE,CACH,CAAC;IAEF,+DAA+D;IAC/D,wCAAwC;IACxC,0BAA0B,CACxB,yBAAyB,EACzB,kBAAkB,EAClB,IAAI,CAAC,IAAI,CAAC,GAAG,EACb,wBAAwB,EACxB,iGAAiG,CAClG,CAAC;IAEF,2DAA2D;IAC3D,+DAA+D;IAC/D,sBAAsB;IACtB,IAAI,IAAI,CAAC,MAAM,KAAK,IAAI,EAAE,CAAC;QACzB,0BAA0B,CACxB,yBAAyB,EACzB,cAAc,EACd,IAAI,CAAC,MAAM,CAAC,GAAG,EACf,WAAW,EACX,oEAAoE,CACrE,CAAC;IACJ,CAAC;IAED,kDAAkD;IAClD,sBAAsB,CACpB,yBAAyB,EACzB,SAAS,EACT,IAAI,CAAC,KAAK,CAAC,QAAQ,EACnB,QAAQ,EACR,0CAA0C,CAC3C,CAAC;IACF,sBAAsB,CACpB,yBAAyB,EACzB,SAAS,EACT,IAAI,CAAC,IAAI,CAAC,QAAQ,EAClB,QAAQ,EACR,2BAA2B,CAC5B,CAAC;IACF,IAAI,IAAI,CAAC,MAAM,KAAK,IAAI,EAAE,CAAC;QACzB,sBAAsB,CACpB,yBAAyB,EACzB,UAAU,EACV,IAAI,CAAC,MAAM,CAAC,QAAQ,EACpB,QAAQ,EACR,oCAAoC,CACrC,CAAC;IACJ,CAAC;IAED,OAAO;QACL,GAAG,EAAE,WAAW;QAChB,WAAW,EAAE,IAAI,GAAG,EAAE;KACvB,CAAC;AACJ,CAAC"}
@@ -0,0 +1,156 @@
1
+ /**
2
+ * Renormalization-group (RG) flow primitives — `RGCouplingNode` +
3
+ * `BetaFunctionNode` (v0.7 BE-X re-encoding sprint).
4
+ *
5
+ * Encodes the structure of a Wilsonian / functional-RG flow on the
6
+ * space of *dimensionless* couplings. The motivating physics context
7
+ * is the asymptotic-safety program for quantum gravity (Reuter 1998
8
+ * *Phys. Rev. D* 57:971, arXiv:hep-th/9605030; Niedermaier-Reuter 2006
9
+ * *Living Rev. Relativity* 9:5 for the canonical review), in which RG
10
+ * flow on the space of dimensionless couplings `g_n = G_n(k)·k^{d_n}`
11
+ * is governed by polynomial β-functions
12
+ *
13
+ * β_n(g_1, g_2, …) ≡ k ∂_k g_n
14
+ *
15
+ * and a viable UV-complete theory is signalled by the existence of a
16
+ * non-Gaussian fixed point `(g_1*, g_2*, …)` at which every β_n
17
+ * vanishes simultaneously. The structural distinction made here:
18
+ *
19
+ * - `RGCouplingNode` represents a single dimensionless coupling
20
+ * (`g`, `λ`, …) — a labelled handle, dim hardcoded to
21
+ * DIMENSIONLESS for type-system symmetry with other AST nodes.
22
+ * - `BetaFunctionNode` represents one β-function of a multi-coupling
23
+ * flow: it carries the FULL coupling vector (the flow direction),
24
+ * a `target` selector picking out which coupling's β-function this
25
+ * node represents, the polynomial expression in those couplings,
26
+ * and an optional UV / IR fixed-point pin.
27
+ *
28
+ * The polynomial expression is a standard `ExprNode` built from
29
+ * dimensionless symbols + the existing `op (+ * / ^ -)` primitives;
30
+ * `validateBetaFunction` delegates dimensional checking to the existing
31
+ * `validate()` from `validator.ts` and verifies the result reduces to
32
+ * DIMENSIONLESS.
33
+ *
34
+ * These primitives are NOT (yet) added to the `ExprNode` union — they
35
+ * live as a standalone predicate-level structure that callers compose
36
+ * adjacent to the existing AST. BE-39's polynomial RHS continues to be
37
+ * encoded as plain `op`-trees for catalog round-trip; the structural
38
+ * `BetaFunctionNode` wrapper supplies the higher-level RG-flow
39
+ * semantics on top.
40
+ *
41
+ * @module dimensional/rg-flow
42
+ */
43
+ import type { ExprNode } from './validator.js';
44
+ import type { Dimension } from './types.js';
45
+ /**
46
+ * AST node for a single dimensionless RG coupling (e.g. `g`, `λ`).
47
+ *
48
+ * By RG-discipline every coupling appearing in a β-function expression
49
+ * is dimensionless: physical dimensionful couplings `G_n` are made
50
+ * dimensionless via the RG scale `k` (e.g. `g = G·k²`, `λ = Λ/k²`).
51
+ * The `dim` field is therefore hardcoded to `DIMENSIONLESS`; it is
52
+ * exposed for type-system symmetry with `{ kind: 'symbol' }` so a
53
+ * future ExprNode-union integration is mechanical.
54
+ *
55
+ * @public
56
+ */
57
+ export interface RGCouplingNode {
58
+ readonly kind: 'rg-coupling';
59
+ /** Coupling name, e.g. `'g'`, `'lambda'`. Non-empty. */
60
+ readonly name: string;
61
+ /** Always `DIMENSIONLESS` — RG-discipline invariant. */
62
+ readonly dim: Dimension;
63
+ }
64
+ /**
65
+ * Construct an `RGCouplingNode` with the dimensionless invariant
66
+ * pre-applied. Convenience helper — callers may also build the node
67
+ * literal directly.
68
+ *
69
+ * @public
70
+ */
71
+ export declare function rgCoupling(name: string): RGCouplingNode;
72
+ /**
73
+ * Validate an `RGCouplingNode`.
74
+ *
75
+ * Predicates:
76
+ * 1. `name` is a non-empty string (dimension validators reject empty
77
+ * labels because they make error messages unintelligible).
78
+ * 2. `dim` is `DIMENSIONLESS` (RG-discipline invariant; physical
79
+ * dimension is absorbed into the running scale `k`).
80
+ *
81
+ * Throws an `Error` with `"name"` / `"dimension"` in the message on
82
+ * failure.
83
+ *
84
+ * @public
85
+ */
86
+ export declare function validateRGCoupling(node: RGCouplingNode): void;
87
+ /**
88
+ * AST node for a single β-function in a multi-coupling RG flow.
89
+ *
90
+ * Fields:
91
+ * - `couplings` — the full coupling vector `(g_1, g_2, …)`; this is
92
+ * the flow direction. Every coupling must appear here, even those
93
+ * that do not enter the polynomialExpansion of this specific
94
+ * β-function (so that the cross-coupling dependency structure is
95
+ * captured at the type level).
96
+ * - `target` — the coupling whose β-function this node represents.
97
+ * MUST be one of `couplings` (by name).
98
+ * - `polynomialExpansion` — the explicit β(couplings) expression as
99
+ * a standard `ExprNode`. Must reduce to `DIMENSIONLESS` via the
100
+ * existing `validate()`.
101
+ * - `fixedPoint` — optional UV / IR fixed-point pin, one numeric
102
+ * value per coupling in the same order as `couplings`. When
103
+ * present, `fixedPoint.length === couplings.length` is enforced.
104
+ *
105
+ * The polynomial form follows Reuter 1998 + the Niedermaier-Reuter 2006
106
+ * review: each β_n is a polynomial in the dimensionless couplings,
107
+ * truncated at some power dictated by the chosen truncation scheme
108
+ * (e.g. canonical Einstein-Hilbert truncation for gravity).
109
+ *
110
+ * @public
111
+ */
112
+ export interface BetaFunctionNode {
113
+ readonly kind: 'beta-function';
114
+ readonly couplings: ReadonlyArray<RGCouplingNode>;
115
+ readonly target: RGCouplingNode;
116
+ readonly polynomialExpansion: ExprNode;
117
+ readonly fixedPoint?: ReadonlyArray<number>;
118
+ }
119
+ /**
120
+ * Result of validating a `BetaFunctionNode`.
121
+ *
122
+ * `dim` is always `DIMENSIONLESS` (a β-function of dimensionless
123
+ * couplings is itself dimensionless: `β = k ∂_k g` with both `g` and
124
+ * `k ∂_k log(k)` dimensionless). `targetName` is the validated target
125
+ * coupling label, useful for downstream RG-flow assembly.
126
+ *
127
+ * @public
128
+ */
129
+ export interface BetaFunctionValidationResult {
130
+ readonly dim: Dimension;
131
+ readonly targetName: string;
132
+ }
133
+ /**
134
+ * Validate a `BetaFunctionNode`.
135
+ *
136
+ * Predicates:
137
+ *
138
+ * 1. **Coupling list non-empty**: `couplings.length >= 1`. A flow
139
+ * with no couplings has no β-function to define.
140
+ * 2. **Every coupling is well-formed**: each entry passes
141
+ * `validateRGCoupling`. Names must be unique.
142
+ * 3. **Target ∈ couplings**: `target.name` appears in
143
+ * `couplings.map(c => c.name)`. Throws an Error scoped
144
+ * `'BetaFunctionNode: target …'` on miss.
145
+ * 4. **Polynomial dimensionless**: `validate(polynomialExpansion)`
146
+ * succeeds and yields `DIMENSIONLESS`. Anything else throws with
147
+ * `'dimension'` in the message.
148
+ * 5. **Fixed-point length match** (if `fixedPoint` is set):
149
+ * `fixedPoint.length === couplings.length`. Each value must be
150
+ * finite. Throws scoped `'BetaFunctionNode: fixedPoint …'` on
151
+ * mismatch.
152
+ *
153
+ * @public
154
+ */
155
+ export declare function validateBetaFunction(node: BetaFunctionNode): BetaFunctionValidationResult;
156
+ //# sourceMappingURL=rg-flow.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rg-flow.d.ts","sourceRoot":"","sources":["../../src/dimensional/rg-flow.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyCG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAE/C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAQ5C;;;;;;;;;;;GAWG;AACH,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,IAAI,EAAE,aAAa,CAAC;IAC7B,wDAAwD;IACxD,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,wDAAwD;IACxD,QAAQ,CAAC,GAAG,EAAE,SAAS,CAAC;CACzB;AAED;;;;;;GAMG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,cAAc,CAEvD;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,cAAc,GAAG,IAAI,CAc7D;AAMD;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,IAAI,EAAE,eAAe,CAAC;IAC/B,QAAQ,CAAC,SAAS,EAAE,aAAa,CAAC,cAAc,CAAC,CAAC;IAClD,QAAQ,CAAC,MAAM,EAAE,cAAc,CAAC;IAChC,QAAQ,CAAC,mBAAmB,EAAE,QAAQ,CAAC;IACvC,QAAQ,CAAC,UAAU,CAAC,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;CAC7C;AAED;;;;;;;;;GASG;AACH,MAAM,WAAW,4BAA4B;IAC3C,QAAQ,CAAC,GAAG,EAAE,SAAS,CAAC;IACxB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;CAC7B;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,oBAAoB,CAClC,IAAI,EAAE,gBAAgB,GACrB,4BAA4B,CAyE9B"}
@@ -0,0 +1,150 @@
1
+ /**
2
+ * Renormalization-group (RG) flow primitives — `RGCouplingNode` +
3
+ * `BetaFunctionNode` (v0.7 BE-X re-encoding sprint).
4
+ *
5
+ * Encodes the structure of a Wilsonian / functional-RG flow on the
6
+ * space of *dimensionless* couplings. The motivating physics context
7
+ * is the asymptotic-safety program for quantum gravity (Reuter 1998
8
+ * *Phys. Rev. D* 57:971, arXiv:hep-th/9605030; Niedermaier-Reuter 2006
9
+ * *Living Rev. Relativity* 9:5 for the canonical review), in which RG
10
+ * flow on the space of dimensionless couplings `g_n = G_n(k)·k^{d_n}`
11
+ * is governed by polynomial β-functions
12
+ *
13
+ * β_n(g_1, g_2, …) ≡ k ∂_k g_n
14
+ *
15
+ * and a viable UV-complete theory is signalled by the existence of a
16
+ * non-Gaussian fixed point `(g_1*, g_2*, …)` at which every β_n
17
+ * vanishes simultaneously. The structural distinction made here:
18
+ *
19
+ * - `RGCouplingNode` represents a single dimensionless coupling
20
+ * (`g`, `λ`, …) — a labelled handle, dim hardcoded to
21
+ * DIMENSIONLESS for type-system symmetry with other AST nodes.
22
+ * - `BetaFunctionNode` represents one β-function of a multi-coupling
23
+ * flow: it carries the FULL coupling vector (the flow direction),
24
+ * a `target` selector picking out which coupling's β-function this
25
+ * node represents, the polynomial expression in those couplings,
26
+ * and an optional UV / IR fixed-point pin.
27
+ *
28
+ * The polynomial expression is a standard `ExprNode` built from
29
+ * dimensionless symbols + the existing `op (+ * / ^ -)` primitives;
30
+ * `validateBetaFunction` delegates dimensional checking to the existing
31
+ * `validate()` from `validator.ts` and verifies the result reduces to
32
+ * DIMENSIONLESS.
33
+ *
34
+ * These primitives are NOT (yet) added to the `ExprNode` union — they
35
+ * live as a standalone predicate-level structure that callers compose
36
+ * adjacent to the existing AST. BE-39's polynomial RHS continues to be
37
+ * encoded as plain `op`-trees for catalog round-trip; the structural
38
+ * `BetaFunctionNode` wrapper supplies the higher-level RG-flow
39
+ * semantics on top.
40
+ *
41
+ * @module dimensional/rg-flow
42
+ */
43
+ import { validate } from './validator.js';
44
+ import { DIMENSIONLESS } from './types.js';
45
+ import { validateComponentDimension } from './field-equation-helpers.js';
46
+ /**
47
+ * Construct an `RGCouplingNode` with the dimensionless invariant
48
+ * pre-applied. Convenience helper — callers may also build the node
49
+ * literal directly.
50
+ *
51
+ * @public
52
+ */
53
+ export function rgCoupling(name) {
54
+ return { kind: 'rg-coupling', name, dim: DIMENSIONLESS };
55
+ }
56
+ /**
57
+ * Validate an `RGCouplingNode`.
58
+ *
59
+ * Predicates:
60
+ * 1. `name` is a non-empty string (dimension validators reject empty
61
+ * labels because they make error messages unintelligible).
62
+ * 2. `dim` is `DIMENSIONLESS` (RG-discipline invariant; physical
63
+ * dimension is absorbed into the running scale `k`).
64
+ *
65
+ * Throws an `Error` with `"name"` / `"dimension"` in the message on
66
+ * failure.
67
+ *
68
+ * @public
69
+ */
70
+ export function validateRGCoupling(node) {
71
+ if (typeof node.name !== 'string' || node.name.length === 0) {
72
+ throw new Error(`RGCouplingNode: invalid name — must be a non-empty string ` +
73
+ `(got ${JSON.stringify(node.name)}).`);
74
+ }
75
+ validateComponentDimension('RGCouplingNode', `coupling '${node.name}'`, node.dim, DIMENSIONLESS, `must be DIMENSIONLESS by RG-discipline. Physical dimension should be absorbed into the running scale k.`);
76
+ }
77
+ /**
78
+ * Validate a `BetaFunctionNode`.
79
+ *
80
+ * Predicates:
81
+ *
82
+ * 1. **Coupling list non-empty**: `couplings.length >= 1`. A flow
83
+ * with no couplings has no β-function to define.
84
+ * 2. **Every coupling is well-formed**: each entry passes
85
+ * `validateRGCoupling`. Names must be unique.
86
+ * 3. **Target ∈ couplings**: `target.name` appears in
87
+ * `couplings.map(c => c.name)`. Throws an Error scoped
88
+ * `'BetaFunctionNode: target …'` on miss.
89
+ * 4. **Polynomial dimensionless**: `validate(polynomialExpansion)`
90
+ * succeeds and yields `DIMENSIONLESS`. Anything else throws with
91
+ * `'dimension'` in the message.
92
+ * 5. **Fixed-point length match** (if `fixedPoint` is set):
93
+ * `fixedPoint.length === couplings.length`. Each value must be
94
+ * finite. Throws scoped `'BetaFunctionNode: fixedPoint …'` on
95
+ * mismatch.
96
+ *
97
+ * @public
98
+ */
99
+ export function validateBetaFunction(node) {
100
+ // ── Predicate 1: coupling list non-empty ───────────────────────────────────
101
+ if (node.couplings.length === 0) {
102
+ throw new Error(`BetaFunctionNode: coupling list is empty — an RG flow requires ` +
103
+ `at least one coupling. Define the flow direction in 'couplings'.`);
104
+ }
105
+ // ── Predicate 2: every coupling is well-formed; names unique ──────────────
106
+ const seen = new Set();
107
+ for (const c of node.couplings) {
108
+ validateRGCoupling(c);
109
+ if (seen.has(c.name)) {
110
+ throw new Error(`BetaFunctionNode: duplicate coupling name '${c.name}' in ` +
111
+ `couplings list. Each RGCouplingNode must have a unique name.`);
112
+ }
113
+ seen.add(c.name);
114
+ }
115
+ // ── Predicate 3: target is one of the couplings ───────────────────────────
116
+ validateRGCoupling(node.target);
117
+ if (!seen.has(node.target.name)) {
118
+ throw new Error(`BetaFunctionNode: target coupling '${node.target.name}' is not in ` +
119
+ `the couplings list [${[...seen].join(', ')}]. The target must be ` +
120
+ `one of the flow-direction couplings.`);
121
+ }
122
+ // ── Predicate 4: polynomialExpansion validates to DIMENSIONLESS ───────────
123
+ const polyResult = validate(node.polynomialExpansion);
124
+ if (!polyResult.ok || polyResult.inferredDimension === null) {
125
+ const noteSummary = polyResult.violations
126
+ .map((v) => v.note)
127
+ .join('; ');
128
+ throw new Error(`BetaFunctionNode: polynomialExpansion failed dimension inference ` +
129
+ `for target '${node.target.name}' — ${noteSummary || 'no detail available'}.`);
130
+ }
131
+ validateComponentDimension('BetaFunctionNode', `polynomialExpansion for target '${node.target.name}'`, polyResult.inferredDimension, DIMENSIONLESS, `must be DIMENSIONLESS (β-function of dimensionless couplings).`);
132
+ // ── Predicate 5: fixed-point length agrees with couplings count ───────────
133
+ if (node.fixedPoint !== undefined) {
134
+ if (node.fixedPoint.length !== node.couplings.length) {
135
+ throw new Error(`BetaFunctionNode: fixedPoint length mismatch — got ` +
136
+ `${node.fixedPoint.length} value(s) but couplings list has ` +
137
+ `${node.couplings.length}. Provide one fixed-point coordinate ` +
138
+ `per coupling in the same order as 'couplings'.`);
139
+ }
140
+ for (let i = 0; i < node.fixedPoint.length; i++) {
141
+ const v = node.fixedPoint[i];
142
+ if (!Number.isFinite(v)) {
143
+ throw new Error(`BetaFunctionNode: fixedPoint[${i}] (coupling ` +
144
+ `'${node.couplings[i].name}') is not finite (got ${v}).`);
145
+ }
146
+ }
147
+ }
148
+ return { dim: DIMENSIONLESS, targetName: node.target.name };
149
+ }
150
+ //# sourceMappingURL=rg-flow.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rg-flow.js","sourceRoot":"","sources":["../../src/dimensional/rg-flow.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,74 @@
1
+ /**
2
+ * Stress-energy tensor and cosmological constant AST nodes (v0.6.0 Phase 2).
3
+ *
4
+ * Locked to lower-lower variance (Decision #2). Symmetry locked as
5
+ * explicit field (Decision #12). Antisymmetric T_μν⁺ (Belinfante-Rosenfeld)
6
+ * deferred to v0.7.0+.
7
+ *
8
+ * @module dimensional/stress-energy-validators
9
+ */
10
+ import type { Dimension } from './types.js';
11
+ import type { CovariantIndex } from './metric-validators.js';
12
+ /**
13
+ * AST node for the stress-energy tensor T_μν. Rank-2 lower-lower locked
14
+ * (Decision #2). Symmetric (Decision #12).
15
+ *
16
+ * componentDim is the SI dimension of a single component: [M·L⁻¹·T⁻²]
17
+ * (energy density = Pa = kg·m⁻¹·s⁻²).
18
+ *
19
+ * @public
20
+ */
21
+ export interface StressEnergyTensorNode {
22
+ readonly kind: 'stress-energy';
23
+ readonly symbol: 'T';
24
+ readonly indices: readonly [CovariantIndex, CovariantIndex];
25
+ readonly symmetry: 'symmetric';
26
+ readonly componentDim: Dimension;
27
+ }
28
+ /**
29
+ * AST node for the cosmological constant Λ. Scalar (rank-0), dimension [L⁻²].
30
+ * Optional numeric value for de Sitter / ΛCDM evaluations.
31
+ *
32
+ * @public
33
+ */
34
+ export interface CosmologicalConstantNode {
35
+ readonly kind: 'cosmological-constant';
36
+ readonly symbol: 'Λ';
37
+ readonly dim: Dimension;
38
+ readonly value?: number;
39
+ }
40
+ interface StressEnergyValidationResult {
41
+ readonly dim: Dimension;
42
+ readonly freeIndices: Map<string, {
43
+ upper: number;
44
+ lower: number;
45
+ }>;
46
+ }
47
+ /**
48
+ * Validate a `stress-energy` node.
49
+ *
50
+ * Throws:
51
+ * - Error if rank ≠ 2 (T_μν is a rank-2 tensor by definition).
52
+ * - Error if any index variance ≠ 'lower' (lower-lower locked per Decision #2).
53
+ *
54
+ * Returns `{dim: componentDim, freeIndices: {idx0: {lower:1}, idx1: {lower:1}}}`.
55
+ */
56
+ export declare function validateStressEnergyTensor(node: StressEnergyTensorNode): StressEnergyValidationResult;
57
+ interface CosmologicalConstantValidationResult {
58
+ readonly dim: Dimension;
59
+ readonly freeIndices: Map<string, {
60
+ upper: number;
61
+ lower: number;
62
+ }>;
63
+ }
64
+ /**
65
+ * Validate a `cosmological-constant` node.
66
+ *
67
+ * Throws:
68
+ * - Error if dim ≠ [L⁻²] (check L === -2 && M === 0 && T === 0).
69
+ *
70
+ * Returns `{dim, freeIndices: empty}` (scalar — no free indices).
71
+ */
72
+ export declare function validateCosmologicalConstant(node: CosmologicalConstantNode): CosmologicalConstantValidationResult;
73
+ export {};
74
+ //# sourceMappingURL=stress-energy-validators.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stress-energy-validators.d.ts","sourceRoot":"","sources":["../../src/dimensional/stress-energy-validators.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAC5C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAE7D;;;;;;;;GAQG;AACH,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,IAAI,EAAE,eAAe,CAAC;IAC/B,QAAQ,CAAC,MAAM,EAAE,GAAG,CAAC;IACrB,QAAQ,CAAC,OAAO,EAAE,SAAS,CAAC,cAAc,EAAE,cAAc,CAAC,CAAC;IAC5D,QAAQ,CAAC,QAAQ,EAAE,WAAW,CAAC;IAC/B,QAAQ,CAAC,YAAY,EAAE,SAAS,CAAC;CAClC;AAED;;;;;GAKG;AACH,MAAM,WAAW,wBAAwB;IACvC,QAAQ,CAAC,IAAI,EAAE,uBAAuB,CAAC;IACvC,QAAQ,CAAC,MAAM,EAAE,GAAG,CAAC;IACrB,QAAQ,CAAC,GAAG,EAAE,SAAS,CAAC;IACxB,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;CACzB;AAGD,UAAU,4BAA4B;IACpC,QAAQ,CAAC,GAAG,EAAE,SAAS,CAAC;IACxB,QAAQ,CAAC,WAAW,EAAE,GAAG,CAAC,MAAM,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACrE;AAED;;;;;;;;GAQG;AACH,wBAAgB,0BAA0B,CACxC,IAAI,EAAE,sBAAsB,GAC3B,4BAA4B,CAiB9B;AAGD,UAAU,oCAAoC;IAC5C,QAAQ,CAAC,GAAG,EAAE,SAAS,CAAC;IACxB,QAAQ,CAAC,WAAW,EAAE,GAAG,CAAC,MAAM,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACrE;AAED;;;;;;;GAOG;AACH,wBAAgB,4BAA4B,CAC1C,IAAI,EAAE,wBAAwB,GAC7B,oCAAoC,CAOtC"}
@@ -0,0 +1,47 @@
1
+ /**
2
+ * Stress-energy tensor and cosmological constant AST nodes (v0.6.0 Phase 2).
3
+ *
4
+ * Locked to lower-lower variance (Decision #2). Symmetry locked as
5
+ * explicit field (Decision #12). Antisymmetric T_μν⁺ (Belinfante-Rosenfeld)
6
+ * deferred to v0.7.0+.
7
+ *
8
+ * @module dimensional/stress-energy-validators
9
+ */
10
+ /**
11
+ * Validate a `stress-energy` node.
12
+ *
13
+ * Throws:
14
+ * - Error if rank ≠ 2 (T_μν is a rank-2 tensor by definition).
15
+ * - Error if any index variance ≠ 'lower' (lower-lower locked per Decision #2).
16
+ *
17
+ * Returns `{dim: componentDim, freeIndices: {idx0: {lower:1}, idx1: {lower:1}}}`.
18
+ */
19
+ export function validateStressEnergyTensor(node) {
20
+ if (node.indices.length !== 2) {
21
+ throw new Error(`StressEnergyTensorNode: expected rank-2, got rank-${node.indices.length}`);
22
+ }
23
+ for (const idx of node.indices) {
24
+ if (idx.variance !== 'lower') {
25
+ throw new Error(`StressEnergyTensorNode: only lower-lower variance supported in v0.6.0 (got '${idx.variance}')`);
26
+ }
27
+ }
28
+ const freeIndices = new Map();
29
+ freeIndices.set(node.indices[0].label, { upper: 0, lower: 1 });
30
+ freeIndices.set(node.indices[1].label, { upper: 0, lower: 1 });
31
+ return { dim: node.componentDim, freeIndices };
32
+ }
33
+ /**
34
+ * Validate a `cosmological-constant` node.
35
+ *
36
+ * Throws:
37
+ * - Error if dim ≠ [L⁻²] (check L === -2 && M === 0 && T === 0).
38
+ *
39
+ * Returns `{dim, freeIndices: empty}` (scalar — no free indices).
40
+ */
41
+ export function validateCosmologicalConstant(node) {
42
+ if (node.dim.L !== -2 || node.dim.M !== 0 || node.dim.T !== 0) {
43
+ throw new Error(`CosmologicalConstantNode: expected dim [L⁻²], got ${JSON.stringify(node.dim)}`);
44
+ }
45
+ return { dim: node.dim, freeIndices: new Map() };
46
+ }
47
+ //# sourceMappingURL=stress-energy-validators.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stress-energy-validators.js","sourceRoot":"","sources":["../../src/dimensional/stress-energy-validators.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAyCH;;;;;;;;GAQG;AACH,MAAM,UAAU,0BAA0B,CACxC,IAA4B;IAE5B,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC9B,MAAM,IAAI,KAAK,CACb,qDAAqD,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAC3E,CAAC;IACJ,CAAC;IACD,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;QAC/B,IAAI,GAAG,CAAC,QAAQ,KAAK,OAAO,EAAE,CAAC;YAC7B,MAAM,IAAI,KAAK,CACb,+EAA+E,GAAG,CAAC,QAAQ,IAAI,CAChG,CAAC;QACJ,CAAC;IACH,CAAC;IACD,MAAM,WAAW,GAAG,IAAI,GAAG,EAA4C,CAAC;IACxE,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;IAC/D,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;IAC/D,OAAO,EAAE,GAAG,EAAE,IAAI,CAAC,YAAY,EAAE,WAAW,EAAE,CAAC;AACjD,CAAC;AAQD;;;;;;;GAOG;AACH,MAAM,UAAU,4BAA4B,CAC1C,IAA8B;IAE9B,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC;QAC9D,MAAM,IAAI,KAAK,CACb,qDAAqD,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAChF,CAAC;IACJ,CAAC;IACD,OAAO,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,WAAW,EAAE,IAAI,GAAG,EAAE,EAAE,CAAC;AACnD,CAAC"}