universal-physics-tensor 0.5.0 → 0.7.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 (401) 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 +22 -37
  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/gravitational-lensing.d.ts +13 -2
  183. package/dist/bridges/gravitational-lensing.d.ts.map +1 -1
  184. package/dist/bridges/gravitational-lensing.js +17 -6
  185. package/dist/bridges/gravitational-lensing.js.map +1 -1
  186. package/dist/bridges/index.d.ts +40 -1
  187. package/dist/bridges/index.d.ts.map +1 -1
  188. package/dist/bridges/index.js +130 -48
  189. package/dist/bridges/index.js.map +1 -1
  190. package/dist/bridges/perihelion-precession-labeled.d.ts +46 -0
  191. package/dist/bridges/perihelion-precession-labeled.d.ts.map +1 -0
  192. package/dist/bridges/perihelion-precession-labeled.js +54 -0
  193. package/dist/bridges/perihelion-precession-labeled.js.map +1 -0
  194. package/dist/bridges/perihelion-precession.d.ts +18 -3
  195. package/dist/bridges/perihelion-precession.d.ts.map +1 -1
  196. package/dist/bridges/perihelion-precession.js +22 -8
  197. package/dist/bridges/perihelion-precession.js.map +1 -1
  198. package/dist/core/axes-registry.d.ts +67 -0
  199. package/dist/core/axes-registry.d.ts.map +1 -0
  200. package/dist/core/axes-registry.js +75 -0
  201. package/dist/core/axes-registry.js.map +1 -0
  202. package/dist/core/cell.d.ts +176 -0
  203. package/dist/core/cell.d.ts.map +1 -0
  204. package/dist/core/cell.js +166 -0
  205. package/dist/core/cell.js.map +1 -0
  206. package/dist/core/constants.d.ts +50 -0
  207. package/dist/core/constants.d.ts.map +1 -0
  208. package/dist/core/constants.js +50 -0
  209. package/dist/core/constants.js.map +1 -0
  210. package/dist/core/flux-rules.d.ts +176 -0
  211. package/dist/core/flux-rules.d.ts.map +1 -0
  212. package/dist/core/flux-rules.js +329 -0
  213. package/dist/core/flux-rules.js.map +1 -0
  214. package/dist/core/labeled-tensor.d.ts +143 -0
  215. package/dist/core/labeled-tensor.d.ts.map +1 -0
  216. package/dist/core/labeled-tensor.js +275 -0
  217. package/dist/core/labeled-tensor.js.map +1 -0
  218. package/dist/core/regime-registry.d.ts +169 -0
  219. package/dist/core/regime-registry.d.ts.map +1 -0
  220. package/dist/core/regime-registry.js +174 -0
  221. package/dist/core/regime-registry.js.map +1 -0
  222. package/dist/core/regime-rule-install.d.ts +26 -0
  223. package/dist/core/regime-rule-install.d.ts.map +1 -0
  224. package/dist/core/regime-rule-install.js +90 -0
  225. package/dist/core/regime-rule-install.js.map +1 -0
  226. package/dist/core/regimes-builtins.d.ts +22 -0
  227. package/dist/core/regimes-builtins.d.ts.map +1 -0
  228. package/dist/core/regimes-builtins.js +96 -0
  229. package/dist/core/regimes-builtins.js.map +1 -0
  230. package/dist/core/tensor.d.ts +112 -0
  231. package/dist/core/tensor.d.ts.map +1 -1
  232. package/dist/core/tensor.js +366 -0
  233. package/dist/core/tensor.js.map +1 -1
  234. package/dist/core/types.d.ts +7 -2
  235. package/dist/core/types.d.ts.map +1 -1
  236. package/dist/core/types.js.map +1 -1
  237. package/dist/core/universal-index.d.ts +97 -0
  238. package/dist/core/universal-index.d.ts.map +1 -0
  239. package/dist/core/universal-index.js +70 -0
  240. package/dist/core/universal-index.js.map +1 -0
  241. package/dist/diff/bridge-gradient.d.ts +94 -0
  242. package/dist/diff/bridge-gradient.d.ts.map +1 -0
  243. package/dist/diff/bridge-gradient.js +83 -0
  244. package/dist/diff/bridge-gradient.js.map +1 -0
  245. package/dist/diff/bridge-specs.d.ts +68 -0
  246. package/dist/diff/bridge-specs.d.ts.map +1 -0
  247. package/dist/diff/bridge-specs.js +96 -0
  248. package/dist/diff/bridge-specs.js.map +1 -0
  249. package/dist/dimensional/bridge-check.d.ts.map +1 -1
  250. package/dist/dimensional/bridge-check.js +8 -0
  251. package/dist/dimensional/bridge-check.js.map +1 -1
  252. package/dist/dimensional/connection-validators.d.ts +13 -6
  253. package/dist/dimensional/connection-validators.d.ts.map +1 -1
  254. package/dist/dimensional/connection-validators.js +1 -1
  255. package/dist/dimensional/connection-validators.js.map +1 -1
  256. package/dist/dimensional/curvature-composite.d.ts +90 -0
  257. package/dist/dimensional/curvature-composite.d.ts.map +1 -0
  258. package/dist/dimensional/curvature-composite.js +57 -0
  259. package/dist/dimensional/curvature-composite.js.map +1 -0
  260. package/dist/dimensional/curvature-invariants.d.ts +90 -0
  261. package/dist/dimensional/curvature-invariants.d.ts.map +1 -0
  262. package/dist/dimensional/curvature-invariants.js +64 -0
  263. package/dist/dimensional/curvature-invariants.js.map +1 -0
  264. package/dist/dimensional/curvature.d.ts +82 -41
  265. package/dist/dimensional/curvature.d.ts.map +1 -1
  266. package/dist/dimensional/curvature.js +19 -11
  267. package/dist/dimensional/curvature.js.map +1 -1
  268. package/dist/dimensional/einstein-equation.d.ts +126 -0
  269. package/dist/dimensional/einstein-equation.d.ts.map +1 -0
  270. package/dist/dimensional/einstein-equation.js +122 -0
  271. package/dist/dimensional/einstein-equation.js.map +1 -0
  272. package/dist/dimensional/field-equation-helpers.d.ts +82 -0
  273. package/dist/dimensional/field-equation-helpers.d.ts.map +1 -0
  274. package/dist/dimensional/field-equation-helpers.js +123 -0
  275. package/dist/dimensional/field-equation-helpers.js.map +1 -0
  276. package/dist/dimensional/friedmann-equation.d.ts +148 -0
  277. package/dist/dimensional/friedmann-equation.d.ts.map +1 -0
  278. package/dist/dimensional/friedmann-equation.js +150 -0
  279. package/dist/dimensional/friedmann-equation.js.map +1 -0
  280. package/dist/dimensional/gauge-field.d.ts +182 -0
  281. package/dist/dimensional/gauge-field.d.ts.map +1 -0
  282. package/dist/dimensional/gauge-field.js +134 -0
  283. package/dist/dimensional/gauge-field.js.map +1 -0
  284. package/dist/dimensional/killing-validators.d.ts +94 -0
  285. package/dist/dimensional/killing-validators.d.ts.map +1 -0
  286. package/dist/dimensional/killing-validators.js +66 -0
  287. package/dist/dimensional/killing-validators.js.map +1 -0
  288. package/dist/dimensional/klein-gordon-equation.d.ts +113 -0
  289. package/dist/dimensional/klein-gordon-equation.d.ts.map +1 -0
  290. package/dist/dimensional/klein-gordon-equation.js +98 -0
  291. package/dist/dimensional/klein-gordon-equation.js.map +1 -0
  292. package/dist/dimensional/rg-flow.d.ts +156 -0
  293. package/dist/dimensional/rg-flow.d.ts.map +1 -0
  294. package/dist/dimensional/rg-flow.js +150 -0
  295. package/dist/dimensional/rg-flow.js.map +1 -0
  296. package/dist/dimensional/stress-energy-validators.d.ts +74 -0
  297. package/dist/dimensional/stress-energy-validators.d.ts.map +1 -0
  298. package/dist/dimensional/stress-energy-validators.js +47 -0
  299. package/dist/dimensional/stress-energy-validators.js.map +1 -0
  300. package/dist/dimensional/tensor-trace.d.ts +128 -0
  301. package/dist/dimensional/tensor-trace.d.ts.map +1 -0
  302. package/dist/dimensional/tensor-trace.js +95 -0
  303. package/dist/dimensional/tensor-trace.js.map +1 -0
  304. package/dist/dimensional/tensor.d.ts +6 -8
  305. package/dist/dimensional/tensor.d.ts.map +1 -1
  306. package/dist/dimensional/tensor.js +3 -1
  307. package/dist/dimensional/tensor.js.map +1 -1
  308. package/dist/dimensional/validator-registry.d.ts +90 -0
  309. package/dist/dimensional/validator-registry.d.ts.map +1 -0
  310. package/dist/dimensional/validator-registry.js +131 -0
  311. package/dist/dimensional/validator-registry.js.map +1 -0
  312. package/dist/dimensional/validator.d.ts +12 -2
  313. package/dist/dimensional/validator.d.ts.map +1 -1
  314. package/dist/dimensional/validator.js +60 -75
  315. package/dist/dimensional/validator.js.map +1 -1
  316. package/dist/dimensional/weyl-validators.d.ts +84 -0
  317. package/dist/dimensional/weyl-validators.d.ts.map +1 -0
  318. package/dist/dimensional/weyl-validators.js +84 -0
  319. package/dist/dimensional/weyl-validators.js.map +1 -0
  320. package/dist/index.d.ts +38 -0
  321. package/dist/index.d.ts.map +1 -1
  322. package/dist/index.js +45 -0
  323. package/dist/index.js.map +1 -1
  324. package/dist/numerical/be37-covariant-eikonal.d.ts +37 -2
  325. package/dist/numerical/be37-covariant-eikonal.d.ts.map +1 -1
  326. package/dist/numerical/be37-covariant-eikonal.js +51 -14
  327. package/dist/numerical/be37-covariant-eikonal.js.map +1 -1
  328. package/dist/numerical/christoffel-flat.d.ts +49 -0
  329. package/dist/numerical/christoffel-flat.d.ts.map +1 -0
  330. package/dist/numerical/christoffel-flat.js +86 -0
  331. package/dist/numerical/christoffel-flat.js.map +1 -0
  332. package/dist/numerical/curvature-lowering-helpers.d.ts +76 -57
  333. package/dist/numerical/curvature-lowering-helpers.d.ts.map +1 -1
  334. package/dist/numerical/curvature-lowering-helpers.js +203 -64
  335. package/dist/numerical/curvature-lowering-helpers.js.map +1 -1
  336. package/dist/numerical/derivative-lowering.d.ts +67 -0
  337. package/dist/numerical/derivative-lowering.d.ts.map +1 -0
  338. package/dist/numerical/derivative-lowering.js +243 -0
  339. package/dist/numerical/derivative-lowering.js.map +1 -0
  340. package/dist/numerical/einstein-equation.d.ts +106 -0
  341. package/dist/numerical/einstein-equation.d.ts.map +1 -0
  342. package/dist/numerical/einstein-equation.js +172 -0
  343. package/dist/numerical/einstein-equation.js.map +1 -0
  344. package/dist/numerical/engine-registry.js +4 -4
  345. package/dist/numerical/engine-registry.js.map +1 -1
  346. package/dist/numerical/geodesic-integrator.d.ts +7 -4
  347. package/dist/numerical/geodesic-integrator.d.ts.map +1 -1
  348. package/dist/numerical/geodesic-integrator.js +5 -1
  349. package/dist/numerical/geodesic-integrator.js.map +1 -1
  350. package/dist/numerical/gl4-integrator.d.ts +57 -9
  351. package/dist/numerical/gl4-integrator.d.ts.map +1 -1
  352. package/dist/numerical/gl4-integrator.js +63 -16
  353. package/dist/numerical/gl4-integrator.js.map +1 -1
  354. package/dist/numerical/killing.d.ts +157 -0
  355. package/dist/numerical/killing.d.ts.map +1 -0
  356. package/dist/numerical/killing.js +242 -0
  357. package/dist/numerical/killing.js.map +1 -0
  358. package/dist/numerical/kretschmann.d.ts +62 -0
  359. package/dist/numerical/kretschmann.d.ts.map +1 -0
  360. package/dist/numerical/kretschmann.js +88 -0
  361. package/dist/numerical/kretschmann.js.map +1 -0
  362. package/dist/numerical/lowering-utils.d.ts +47 -0
  363. package/dist/numerical/lowering-utils.d.ts.map +1 -0
  364. package/dist/numerical/lowering-utils.js +64 -0
  365. package/dist/numerical/lowering-utils.js.map +1 -0
  366. package/dist/numerical/lowering.d.ts +1 -29
  367. package/dist/numerical/lowering.d.ts.map +1 -1
  368. package/dist/numerical/lowering.js +226 -415
  369. package/dist/numerical/lowering.js.map +1 -1
  370. package/dist/numerical/mathts-engine.js +8 -8
  371. package/dist/numerical/mathts-engine.js.map +1 -1
  372. package/dist/numerical/metric-inverse.d.ts.map +1 -1
  373. package/dist/numerical/metric-inverse.js +28 -0
  374. package/dist/numerical/metric-inverse.js.map +1 -1
  375. package/dist/numerical/null-ic.d.ts +40 -0
  376. package/dist/numerical/null-ic.d.ts.map +1 -0
  377. package/dist/numerical/null-ic.js +50 -0
  378. package/dist/numerical/null-ic.js.map +1 -0
  379. package/dist/numerical/null-ray-integrator.d.ts +3 -2
  380. package/dist/numerical/null-ray-integrator.d.ts.map +1 -1
  381. package/dist/numerical/null-ray-integrator.js +6 -3
  382. package/dist/numerical/null-ray-integrator.js.map +1 -1
  383. package/dist/numerical/painleve-gullstrand-metric.d.ts +74 -0
  384. package/dist/numerical/painleve-gullstrand-metric.d.ts.map +1 -0
  385. package/dist/numerical/painleve-gullstrand-metric.js +121 -0
  386. package/dist/numerical/painleve-gullstrand-metric.js.map +1 -0
  387. package/dist/numerical/pderiv.d.ts +35 -3
  388. package/dist/numerical/pderiv.d.ts.map +1 -1
  389. package/dist/numerical/pderiv.js +47 -12
  390. package/dist/numerical/pderiv.js.map +1 -1
  391. package/dist/numerical/perihelion-finder.d.ts +57 -0
  392. package/dist/numerical/perihelion-finder.d.ts.map +1 -1
  393. package/dist/numerical/perihelion-finder.js +57 -0
  394. package/dist/numerical/perihelion-finder.js.map +1 -1
  395. package/dist/numerical/tensor-engine.d.ts +2 -2
  396. package/dist/numerical/tensor-engine.d.ts.map +1 -1
  397. package/dist/numerical/weyl-lowering.d.ts +60 -0
  398. package/dist/numerical/weyl-lowering.d.ts.map +1 -0
  399. package/dist/numerical/weyl-lowering.js +111 -0
  400. package/dist/numerical/weyl-lowering.js.map +1 -0
  401. package/package.json +9 -7
@@ -0,0 +1,242 @@
1
+ /**
2
+ * Killing-equation numerical verification (v0.6.0 Phase 1, Task 1.3).
3
+ *
4
+ * F-3 reconciliation (hybrid impl):
5
+ * - Uses EXACT symbolic Christoffels for all Γ terms.
6
+ * - For the outer ∂_μ ξ_α = (∂_μ g_{αβ}) ξ^β + g_{αβ} ∂_μ ξ^β, two paths:
7
+ * 1. constantKilling=true (default for constant ξ^β): uses metric
8
+ * compatibility ∂_μ g_{αβ} = Γ^λ_{μα} g_{λβ} + Γ^λ_{μβ} g_{αλ} to
9
+ * derive ∇_μ ξ_α = Γ^λ_{μβ} g_{αλ} ξ^β without any FD. Achieves
10
+ * machine-precision (~1e-15 or exact 0) for Schwarzschild.
11
+ * 2. constantKilling=false with dMetricFn supplied: uses exact analytic
12
+ * ∂_μ g_{αβ} + FD for ∂_μ ξ^β. Handles spatially-varying Killing fields.
13
+ * 3. Fallback FD path: differentiates ξ_α(y) = g_{αβ}(y) ξ^β(y) via 4th-
14
+ * order FD. WARNING: suffers c²-cancellation noise for SI-scaled metrics.
15
+ *
16
+ * The Killing equation (Carroll Eq. 3.174):
17
+ * ∇_μ ξ_ν + ∇_ν ξ_μ = 0
18
+ *
19
+ * where ∇_μ ξ_ν = ∂_μ ξ_ν − Γ^λ_{μν} ξ_λ (covariant derivative of the
20
+ * lowered Killing field ξ_ν = g_{νβ} ξ^β).
21
+ *
22
+ * @module numerical/killing
23
+ */
24
+ import { pderivNumericalFn } from './pderiv.js';
25
+ /**
26
+ * Compute `||∇_μ ξ_ν + ∇_ν ξ_μ||_∞` at point `x`, returning the maximum
27
+ * absolute symmetrized residual over all 16 (μ, ν) pairs.
28
+ *
29
+ * For constant Killing fields (constantKilling=true, the default):
30
+ * Uses metric compatibility to derive ∇_μ ξ_α = Γ^λ_{μβ} g_{αλ} ξ^β
31
+ * algebraically — no FD at all. Achieves machine-precision residuals
32
+ * for Schwarzschild Killing fields in SI units.
33
+ *
34
+ * @param killingFn - Factory returning ξ^μ(x) (upper index).
35
+ * @param metricFn - Covariant metric g_{μν}(x).
36
+ * @param christoffelAt - Christoffel accessor factory (layout-agnostic).
37
+ * @param x - Evaluation point [t, r, θ, φ].
38
+ * @param opts - Optional overrides (see {@link KillingEquationOptions}).
39
+ * @returns Maximum absolute residual of the symmetrized Killing equation.
40
+ *
41
+ * @example
42
+ * ```typescript
43
+ * import { verifyKillingEquation } from 'universal-physics-tensor';
44
+ * import {
45
+ * schwarzschildKillingT,
46
+ * schwarzschildGFn,
47
+ * schwarzschildChristoffelFn,
48
+ * schwarzschildRs,
49
+ * } from '../tests/fixtures/schwarzschild.js'; // or your own metric closures
50
+ *
51
+ * const M = 1.989e30; // solar mass, kg
52
+ * const r_s = schwarzschildRs(M);
53
+ * const x: [number, number, number, number] = [0, 5 * r_s, Math.PI / 2, 0];
54
+ *
55
+ * // Christoffel accessor wrapping the flat Float64Array layout (BR-2)
56
+ * const gammaFn = schwarzschildChristoffelFn(M);
57
+ * const christoffelAccessAt = (pt: [number, number, number, number]) => {
58
+ * const arr = gammaFn(pt);
59
+ * return (lam: number, mu: number, nu: number) => arr[16 * lam + 4 * mu + nu];
60
+ * };
61
+ *
62
+ * const residual = verifyKillingEquation(
63
+ * schwarzschildKillingT,
64
+ * schwarzschildGFn(M),
65
+ * christoffelAccessAt,
66
+ * x,
67
+ * { constantKilling: true },
68
+ * );
69
+ * // residual < 1e-12 for the exact time-translation Killing field
70
+ * ```
71
+ *
72
+ * @public
73
+ */
74
+ export function verifyKillingEquation(killingFn, metricFn, christoffelAt, x, opts = {}) {
75
+ const order = opts.order ?? 4;
76
+ const constantKilling = opts.constantKilling ?? true;
77
+ const xi = killingFn();
78
+ const g = metricFn(x);
79
+ const xiAtX = xi(x);
80
+ const Gamma = christoffelAt(x);
81
+ // Lowered Killing field: ξ_α = g_{αβ} ξ^β
82
+ const xiLower = [0, 0, 0, 0];
83
+ for (let a = 0; a < 4; a++) {
84
+ let s = 0;
85
+ for (let b = 0; b < 4; b++)
86
+ s += g[a][b] * xiAtX[b];
87
+ xiLower[a] = s;
88
+ }
89
+ // Covariant derivative ∇_μ ξ_α (4×4 matrix)
90
+ const cov = [
91
+ [0, 0, 0, 0],
92
+ [0, 0, 0, 0],
93
+ [0, 0, 0, 0],
94
+ [0, 0, 0, 0],
95
+ ];
96
+ if (constantKilling) {
97
+ // Algebraic path (metric compatibility, ∂_μ ξ^β = 0):
98
+ // ∇_μ ξ_α = ∂_μ ξ_α − Γ^λ_{μα} ξ_λ
99
+ // where ∂_μ ξ_α = (Γ^λ_{μα} g_{λβ} + Γ^λ_{μβ} g_{αλ}) ξ^β
100
+ // cancelling Γ^λ_{μα} g_{λβ} ξ^β = Γ^λ_{μα} ξ_λ gives:
101
+ // ∇_μ ξ_α = Σ_β Σ_λ Γ^λ_{μβ} g_{αλ} ξ^β
102
+ //
103
+ // Symmetrized: ∇_μ ξ_α + ∇_α ξ_μ = Σ_β [Γ^λ_{μβ} g_{αλ} + Γ^λ_{αβ} g_{μλ}] ξ^β
104
+ // This is the Killing equation in terms of Christoffels only.
105
+ for (let mu = 0; mu < 4; mu++) {
106
+ for (let a = 0; a < 4; a++) {
107
+ let s = 0;
108
+ for (let lam = 0; lam < 4; lam++) {
109
+ for (let b = 0; b < 4; b++) {
110
+ s += Gamma(lam, mu, b) * g[a][lam] * xiAtX[b];
111
+ }
112
+ }
113
+ cov[mu][a] = s;
114
+ }
115
+ }
116
+ }
117
+ else if (opts.dMetricFn !== undefined) {
118
+ // Exact dMetricFn + FD path for spatially-varying Killing fields.
119
+ // ∂_μ ξ_α = (∂_μ g_{αβ}) ξ^β + g_{αβ} ∂_μ ξ^β
120
+ const dg = opts.dMetricFn(x);
121
+ // FD for ∂_μ ξ^β (upper components)
122
+ const dxiUpper = [
123
+ [0, 0, 0, 0],
124
+ [0, 0, 0, 0],
125
+ [0, 0, 0, 0],
126
+ [0, 0, 0, 0],
127
+ ];
128
+ for (let b = 0; b < 4; b++) {
129
+ const xiUpperB = (y) => xi(y)[b];
130
+ for (let mu = 0; mu < 4; mu++) {
131
+ const raw = pderivNumericalFn(xiUpperB, x, mu, { order });
132
+ dxiUpper[mu][b] = typeof raw === 'number' ? raw : raw[0];
133
+ }
134
+ }
135
+ const partial = [
136
+ [0, 0, 0, 0],
137
+ [0, 0, 0, 0],
138
+ [0, 0, 0, 0],
139
+ [0, 0, 0, 0],
140
+ ];
141
+ for (let mu = 0; mu < 4; mu++) {
142
+ for (let a = 0; a < 4; a++) {
143
+ let s = 0;
144
+ for (let b = 0; b < 4; b++) {
145
+ s += dg[mu][a][b] * xiAtX[b];
146
+ s += g[a][b] * dxiUpper[mu][b];
147
+ }
148
+ partial[mu][a] = s;
149
+ }
150
+ }
151
+ for (let mu = 0; mu < 4; mu++) {
152
+ for (let a = 0; a < 4; a++) {
153
+ let connSum = 0;
154
+ for (let lam = 0; lam < 4; lam++)
155
+ connSum += Gamma(lam, mu, a) * xiLower[lam];
156
+ cov[mu][a] = partial[mu][a] - connSum;
157
+ }
158
+ }
159
+ }
160
+ else {
161
+ // Pure FD fallback: differentiate ξ_α(y) = g_{αβ}(y) ξ^β(y) numerically.
162
+ // WARNING: large-scale SI metrics (c²·g_tt ~ 6e16) produce cancellation
163
+ // noise at the ~1-10 absolute level. Use constantKilling=true for
164
+ // constant Schwarzschild Killing fields.
165
+ const partial = [
166
+ [0, 0, 0, 0],
167
+ [0, 0, 0, 0],
168
+ [0, 0, 0, 0],
169
+ [0, 0, 0, 0],
170
+ ];
171
+ for (let a = 0; a < 4; a++) {
172
+ const xiLowerA = (y) => {
173
+ const gy = metricFn(y);
174
+ const xy = xi(y);
175
+ let s = 0;
176
+ for (let b = 0; b < 4; b++)
177
+ s += gy[a][b] * xy[b];
178
+ return s;
179
+ };
180
+ for (let mu = 0; mu < 4; mu++) {
181
+ const raw = pderivNumericalFn(xiLowerA, x, mu, { order });
182
+ partial[mu][a] = typeof raw === 'number' ? raw : raw[0];
183
+ }
184
+ }
185
+ for (let mu = 0; mu < 4; mu++) {
186
+ for (let a = 0; a < 4; a++) {
187
+ let connSum = 0;
188
+ for (let lam = 0; lam < 4; lam++)
189
+ connSum += Gamma(lam, mu, a) * xiLower[lam];
190
+ cov[mu][a] = partial[mu][a] - connSum;
191
+ }
192
+ }
193
+ }
194
+ // Symmetrize ∇_μ ξ_ν + ∇_ν ξ_μ and find max|·| over 16 pairs.
195
+ let maxResid = 0;
196
+ for (let mu = 0; mu < 4; mu++) {
197
+ for (let nu = 0; nu < 4; nu++) {
198
+ const sym = cov[mu][nu] + cov[nu][mu];
199
+ const ab = Math.abs(sym);
200
+ if (ab > maxResid)
201
+ maxResid = ab;
202
+ }
203
+ }
204
+ return maxResid;
205
+ }
206
+ /**
207
+ * Evaluate the conserved charge Q = ξ^μ p_μ at point x along a geodesic.
208
+ *
209
+ * Sign convention: raw contraction ξ^μ p_μ. For the time-translation
210
+ * Killing field in (−,+,+,+) signature, p_t < 0 for forward-time motion,
211
+ * so the physical energy of common usage is E = −Q (Carroll Eq. 8.30).
212
+ * Use `|ΔQ / Q|` for drift diagnostics to stay sign-agnostic.
213
+ *
214
+ * @param killingFn - Factory returning ξ^μ(x) (upper index).
215
+ * @param momentumLower - Co-momentum p_μ at the geodesic point (lower index).
216
+ * @param x - Geodesic coordinate [t, r, θ, φ].
217
+ * @returns Q = ξ^μ p_μ (dimensioned as energy if p is 4-momentum).
218
+ *
219
+ * @example
220
+ * ```typescript
221
+ * import { evaluateConservedCharge } from 'universal-physics-tensor';
222
+ * import { schwarzschildKillingT } from '../tests/fixtures/schwarzschild.js';
223
+ *
224
+ * // Co-momentum p_μ at a geodesic snapshot (p_t < 0 for forward-time motion)
225
+ * const pLower: [number, number, number, number] = [-8.988e16, 0, 0, 0];
226
+ * const x: [number, number, number, number] = [0, 1e7, Math.PI / 2, 0];
227
+ *
228
+ * const Q = evaluateConservedCharge(schwarzschildKillingT, pLower, x);
229
+ * // Q = ξ^t · p_t = 1 · p_t = p_t (energy with sign from metric)
230
+ * // Physical energy E = −Q (Carroll sign convention for (−,+,+,+))
231
+ * ```
232
+ *
233
+ * @public
234
+ */
235
+ export function evaluateConservedCharge(killingFn, momentumLower, x) {
236
+ const xi = killingFn()(x);
237
+ let q = 0;
238
+ for (let m = 0; m < 4; m++)
239
+ q += xi[m] * momentumLower[m];
240
+ return q;
241
+ }
242
+ //# sourceMappingURL=killing.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"killing.js","sourceRoot":"","sources":["../../src/numerical/killing.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,62 @@
1
+ /**
2
+ * Kretschmann scalar numerical contraction (v0.6.0 Phase 3, Task 3.6).
3
+ *
4
+ * Computes K = R_{ρσμν} R^{ρσμν} from the fully-lowered Riemann tensor and
5
+ * the inverse metric by raising all four indices on the second Riemann factor.
6
+ *
7
+ * **PERFORMANCE WARNING**: O(4⁸) = 65536 multiplications per call. Acceptable
8
+ * for diagnostic / sample-point use, but DO NOT call inside tight integration
9
+ * loops (10⁶ steps × 65k ops = ~6.5e10 ops). Future optimization (v0.7.0
10
+ * candidate): exploit Riemann symmetries to reduce to ~20 independent
11
+ * components × symmetric weighting; estimated speedup ~12×. Tracked in
12
+ * v0.6.0 brainstorm carry-forward.
13
+ *
14
+ * @module numerical/kretschmann
15
+ */
16
+ /**
17
+ * Kretschmann invariant K = R_{ρσμν} R^{ρσμν}.
18
+ *
19
+ * Algorithm:
20
+ * 1. Raise all four indices on the second Riemann factor:
21
+ * R^{ρσμν} = g^{ρα} g^{σβ} g^{μγ} g^{νδ} R_{αβγδ}
22
+ * 2. Contract:
23
+ * K = Σ_{ρσμν} R_{ρσμν} · R^{ρσμν}
24
+ *
25
+ * The outer sum has 4⁴ = 256 terms; each inner raise requires 4⁴ = 256
26
+ * metric products, giving the O(4⁸) = 65536 total multiplications.
27
+ *
28
+ * @param riemannLower - R_{ρσμν}: all-lower Riemann tensor, shape [4][4][4][4].
29
+ * Obtain by lowering R^ρ_{σμν} via g_{ρα}: R_{αβγδ} = g_{αρ} R^ρ_{βγδ}.
30
+ * @param metricInverse - g^{αβ}: inverse metric, shape [4][4].
31
+ * @returns K, a scalar. Dimension [L⁻⁴] (Riemann is [L⁻²] per F8/I3 convention).
32
+ *
33
+ * @example
34
+ * ```typescript
35
+ * import { computeKretschmann, G_SI, C_SI } from 'universal-physics-tensor';
36
+ * import {
37
+ * schwarzschildGFn,
38
+ * schwarzschildGInverseFn,
39
+ * schwarzschildRs,
40
+ * } from '../tests/fixtures/schwarzschild.js';
41
+ * import { riemannLowerAt } from '../src/numerical/curvature-lowering-helpers.js';
42
+ * import { Float64ReferenceEngine } from '../src/numerical/float64-engine.js';
43
+ *
44
+ * const M = 1.989e30;
45
+ * const r_s = schwarzschildRs(M);
46
+ * const r = 5 * r_s;
47
+ * const x: [number, number, number, number] = [0, r, Math.PI / 2, 0];
48
+ *
49
+ * const engine = new Float64ReferenceEngine();
50
+ * const rLower = riemannLowerAt(x, schwarzschildGFn(M), schwarzschildGInverseFn(M), 4, engine);
51
+ * const gInv = schwarzschildGInverseFn(M)(x);
52
+ * const K = computeKretschmann(rLower, gInv);
53
+ *
54
+ * // Schwarzschild closed-form: K = 48 G² M² / (c⁴ r⁶)
55
+ * const K_analytic = 48 * G_SI**2 * M**2 / (C_SI**4 * r**6);
56
+ * // |K - K_analytic| / K_analytic < 1e-4
57
+ * ```
58
+ *
59
+ * @public
60
+ */
61
+ export declare function computeKretschmann(riemannLower: number[][][][], metricInverse: number[][]): number;
62
+ //# sourceMappingURL=kretschmann.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"kretschmann.d.ts","sourceRoot":"","sources":["../../src/numerical/kretschmann.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4CG;AACH,wBAAgB,kBAAkB,CAChC,YAAY,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,EAC5B,aAAa,EAAE,MAAM,EAAE,EAAE,GACxB,MAAM,CA0BR"}
@@ -0,0 +1,88 @@
1
+ /**
2
+ * Kretschmann scalar numerical contraction (v0.6.0 Phase 3, Task 3.6).
3
+ *
4
+ * Computes K = R_{ρσμν} R^{ρσμν} from the fully-lowered Riemann tensor and
5
+ * the inverse metric by raising all four indices on the second Riemann factor.
6
+ *
7
+ * **PERFORMANCE WARNING**: O(4⁸) = 65536 multiplications per call. Acceptable
8
+ * for diagnostic / sample-point use, but DO NOT call inside tight integration
9
+ * loops (10⁶ steps × 65k ops = ~6.5e10 ops). Future optimization (v0.7.0
10
+ * candidate): exploit Riemann symmetries to reduce to ~20 independent
11
+ * components × symmetric weighting; estimated speedup ~12×. Tracked in
12
+ * v0.6.0 brainstorm carry-forward.
13
+ *
14
+ * @module numerical/kretschmann
15
+ */
16
+ /**
17
+ * Kretschmann invariant K = R_{ρσμν} R^{ρσμν}.
18
+ *
19
+ * Algorithm:
20
+ * 1. Raise all four indices on the second Riemann factor:
21
+ * R^{ρσμν} = g^{ρα} g^{σβ} g^{μγ} g^{νδ} R_{αβγδ}
22
+ * 2. Contract:
23
+ * K = Σ_{ρσμν} R_{ρσμν} · R^{ρσμν}
24
+ *
25
+ * The outer sum has 4⁴ = 256 terms; each inner raise requires 4⁴ = 256
26
+ * metric products, giving the O(4⁸) = 65536 total multiplications.
27
+ *
28
+ * @param riemannLower - R_{ρσμν}: all-lower Riemann tensor, shape [4][4][4][4].
29
+ * Obtain by lowering R^ρ_{σμν} via g_{ρα}: R_{αβγδ} = g_{αρ} R^ρ_{βγδ}.
30
+ * @param metricInverse - g^{αβ}: inverse metric, shape [4][4].
31
+ * @returns K, a scalar. Dimension [L⁻⁴] (Riemann is [L⁻²] per F8/I3 convention).
32
+ *
33
+ * @example
34
+ * ```typescript
35
+ * import { computeKretschmann, G_SI, C_SI } from 'universal-physics-tensor';
36
+ * import {
37
+ * schwarzschildGFn,
38
+ * schwarzschildGInverseFn,
39
+ * schwarzschildRs,
40
+ * } from '../tests/fixtures/schwarzschild.js';
41
+ * import { riemannLowerAt } from '../src/numerical/curvature-lowering-helpers.js';
42
+ * import { Float64ReferenceEngine } from '../src/numerical/float64-engine.js';
43
+ *
44
+ * const M = 1.989e30;
45
+ * const r_s = schwarzschildRs(M);
46
+ * const r = 5 * r_s;
47
+ * const x: [number, number, number, number] = [0, r, Math.PI / 2, 0];
48
+ *
49
+ * const engine = new Float64ReferenceEngine();
50
+ * const rLower = riemannLowerAt(x, schwarzschildGFn(M), schwarzschildGInverseFn(M), 4, engine);
51
+ * const gInv = schwarzschildGInverseFn(M)(x);
52
+ * const K = computeKretschmann(rLower, gInv);
53
+ *
54
+ * // Schwarzschild closed-form: K = 48 G² M² / (c⁴ r⁶)
55
+ * const K_analytic = 48 * G_SI**2 * M**2 / (C_SI**4 * r**6);
56
+ * // |K - K_analytic| / K_analytic < 1e-4
57
+ * ```
58
+ *
59
+ * @public
60
+ */
61
+ export function computeKretschmann(riemannLower, metricInverse) {
62
+ // Raise: R^{ρσμν} = g^{ρα} g^{σβ} g^{μγ} g^{νδ} R_{αβγδ}
63
+ // Then K = R_{ρσμν} R^{ρσμν} (sum over all 4⁴ = 256 components)
64
+ let K = 0;
65
+ for (let rho = 0; rho < 4; rho++) {
66
+ for (let sigma = 0; sigma < 4; sigma++) {
67
+ for (let mu = 0; mu < 4; mu++) {
68
+ for (let nu = 0; nu < 4; nu++) {
69
+ let raised = 0;
70
+ for (let a = 0; a < 4; a++) {
71
+ for (let b = 0; b < 4; b++) {
72
+ for (let c = 0; c < 4; c++) {
73
+ for (let d = 0; d < 4; d++) {
74
+ raised += metricInverse[rho][a] * metricInverse[sigma][b]
75
+ * metricInverse[mu][c] * metricInverse[nu][d]
76
+ * riemannLower[a][b][c][d];
77
+ }
78
+ }
79
+ }
80
+ }
81
+ K += riemannLower[rho][sigma][mu][nu] * raised;
82
+ }
83
+ }
84
+ }
85
+ }
86
+ return K;
87
+ }
88
+ //# sourceMappingURL=kretschmann.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"kretschmann.js","sourceRoot":"","sources":["../../src/numerical/kretschmann.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4CG;AACH,MAAM,UAAU,kBAAkB,CAChC,YAA4B,EAC5B,aAAyB;IAEzB,yDAAyD;IACzD,gEAAgE;IAChE,IAAI,CAAC,GAAG,CAAC,CAAC;IACV,KAAK,IAAI,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,EAAE,EAAE,CAAC;QACjC,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC;YACvC,KAAK,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC;gBAC9B,KAAK,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC;oBAC9B,IAAI,MAAM,GAAG,CAAC,CAAC;oBACf,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;wBAC3B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;4BAC3B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;gCAC3B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;oCAC3B,MAAM,IAAI,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;0CAC/C,aAAa,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,aAAa,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;0CAC3C,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gCACrC,CAAC;4BACH,CAAC;wBACH,CAAC;oBACH,CAAC;oBACD,CAAC,IAAI,YAAY,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC;gBACjD,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IACD,OAAO,CAAC,CAAC;AACX,CAAC"}
@@ -0,0 +1,47 @@
1
+ /**
2
+ * Shared private utilities for the `numerical/lowering*.ts` modules.
3
+ *
4
+ * Carved out of `lowering.ts` in the v0.7 follow-up to its v0.6.1
5
+ * sprint-target miss (LOC 903 vs ≤890). Centralizes the four helpers
6
+ * that both `lowering.ts` and the v0.7 `derivative-lowering.ts`
7
+ * need, avoiding both a forward-import cycle and code duplication.
8
+ *
9
+ * No public surface — every export carries an `@internal` JSDoc tag.
10
+ *
11
+ * @module numerical/lowering-utils
12
+ */
13
+ import type { NumericalInputs, NestedArray } from './types.js';
14
+ import type { MetricTensorNode } from '../dimensional/metric-validators.js';
15
+ /**
16
+ * Module-private type predicate for the `metric-tensor` AST kind.
17
+ * Replaces the duplicated `(n as { kind?: unknown }).kind ===
18
+ * 'metric-tensor'` cast pattern. TypeScript narrows the operand to
19
+ * `MetricTensorNode` after the predicate, removing follow-up `as
20
+ * MetricTensorNode` casts.
21
+ *
22
+ * @internal
23
+ */
24
+ export declare function isMetricTensorNode(n: unknown): n is MetricTensorNode;
25
+ /**
26
+ * Coordinate-space dimension supplied via `NumericalInputs.dimension`,
27
+ * defaulting to 4 (spacetime). Read at most case-arms in lowering.
28
+ *
29
+ * @internal
30
+ */
31
+ export declare function dimensionOf(inputs: NumericalInputs): number;
32
+ /**
33
+ * Look up a named tensor's concrete value from
34
+ * `NumericalInputs.tensors`, or throw with a clear message.
35
+ *
36
+ * @internal
37
+ */
38
+ export declare function requireValue(name: string, inputs: NumericalInputs): NestedArray;
39
+ /**
40
+ * Flatten a `NestedArray` to a plain `number[]` and check the result
41
+ * matches `expectedSize`. Wraps the canonical `flattenNA()` with a
42
+ * size-mismatch guard so consumers don't silently swallow bad input.
43
+ *
44
+ * @internal
45
+ */
46
+ export declare function flattenNestedArray(data: NestedArray, expectedSize: number): number[];
47
+ //# sourceMappingURL=lowering-utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lowering-utils.d.ts","sourceRoot":"","sources":["../../src/numerical/lowering-utils.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAC/D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,qCAAqC,CAAC;AAI5E;;;;;;;;GAQG;AACH,wBAAgB,kBAAkB,CAAC,CAAC,EAAE,OAAO,GAAG,CAAC,IAAI,gBAAgB,CAGpE;AAED;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,MAAM,EAAE,eAAe,GAAG,MAAM,CAE3D;AAED;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,eAAe,GAAG,WAAW,CAM/E;AAED;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,GAAG,MAAM,EAAE,CAQpF"}
@@ -0,0 +1,64 @@
1
+ /**
2
+ * Shared private utilities for the `numerical/lowering*.ts` modules.
3
+ *
4
+ * Carved out of `lowering.ts` in the v0.7 follow-up to its v0.6.1
5
+ * sprint-target miss (LOC 903 vs ≤890). Centralizes the four helpers
6
+ * that both `lowering.ts` and the v0.7 `derivative-lowering.ts`
7
+ * need, avoiding both a forward-import cycle and code duplication.
8
+ *
9
+ * No public surface — every export carries an `@internal` JSDoc tag.
10
+ *
11
+ * @module numerical/lowering-utils
12
+ */
13
+ import { NumericalBackendError } from './errors.js';
14
+ import { flattenNA } from './connection-lowering-helpers.js';
15
+ /**
16
+ * Module-private type predicate for the `metric-tensor` AST kind.
17
+ * Replaces the duplicated `(n as { kind?: unknown }).kind ===
18
+ * 'metric-tensor'` cast pattern. TypeScript narrows the operand to
19
+ * `MetricTensorNode` after the predicate, removing follow-up `as
20
+ * MetricTensorNode` casts.
21
+ *
22
+ * @internal
23
+ */
24
+ export function isMetricTensorNode(n) {
25
+ return typeof n === 'object' && n !== null
26
+ && n.kind === 'metric-tensor';
27
+ }
28
+ /**
29
+ * Coordinate-space dimension supplied via `NumericalInputs.dimension`,
30
+ * defaulting to 4 (spacetime). Read at most case-arms in lowering.
31
+ *
32
+ * @internal
33
+ */
34
+ export function dimensionOf(inputs) {
35
+ return inputs.dimension ?? 4;
36
+ }
37
+ /**
38
+ * Look up a named tensor's concrete value from
39
+ * `NumericalInputs.tensors`, or throw with a clear message.
40
+ *
41
+ * @internal
42
+ */
43
+ export function requireValue(name, inputs) {
44
+ const v = inputs.tensors.get(name);
45
+ if (v === undefined) {
46
+ throw new NumericalBackendError(`lowering: no value supplied for "${name}" in inputs.tensors`);
47
+ }
48
+ return v;
49
+ }
50
+ /**
51
+ * Flatten a `NestedArray` to a plain `number[]` and check the result
52
+ * matches `expectedSize`. Wraps the canonical `flattenNA()` with a
53
+ * size-mismatch guard so consumers don't silently swallow bad input.
54
+ *
55
+ * @internal
56
+ */
57
+ export function flattenNestedArray(data, expectedSize) {
58
+ const out = flattenNA(data);
59
+ if (out.length !== expectedSize) {
60
+ throw new NumericalBackendError(`lowering: flattenNestedArray: got ${out.length} elements, expected ${expectedSize}`);
61
+ }
62
+ return out;
63
+ }
64
+ //# sourceMappingURL=lowering-utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lowering-utils.js","sourceRoot":"","sources":["../../src/numerical/lowering-utils.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAIH,OAAO,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AACpD,OAAO,EAAE,SAAS,EAAE,MAAM,kCAAkC,CAAC;AAE7D;;;;;;;;GAQG;AACH,MAAM,UAAU,kBAAkB,CAAC,CAAU;IAC3C,OAAO,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,IAAI;WACpC,CAAwB,CAAC,IAAI,KAAK,eAAe,CAAC;AAC1D,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,WAAW,CAAC,MAAuB;IACjD,OAAO,MAAM,CAAC,SAAS,IAAI,CAAC,CAAC;AAC/B,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,YAAY,CAAC,IAAY,EAAE,MAAuB;IAChE,MAAM,CAAC,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACnC,IAAI,CAAC,KAAK,SAAS,EAAE,CAAC;QACpB,MAAM,IAAI,qBAAqB,CAAC,oCAAoC,IAAI,qBAAqB,CAAC,CAAC;IACjG,CAAC;IACD,OAAO,CAAC,CAAC;AACX,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,kBAAkB,CAAC,IAAiB,EAAE,YAAoB;IACxE,MAAM,GAAG,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;IAC5B,IAAI,GAAG,CAAC,MAAM,KAAK,YAAY,EAAE,CAAC;QAChC,MAAM,IAAI,qBAAqB,CAC7B,qCAAqC,GAAG,CAAC,MAAM,uBAAuB,YAAY,EAAE,CACrF,CAAC;IACJ,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC"}
@@ -11,37 +11,9 @@
11
11
  * @module numerical/lowering
12
12
  */
13
13
  import type { ExprNode } from '../dimensional/validator.js';
14
- import type { TensorIndex } from '../dimensional/tensor.js';
15
- import type { EngineTensor, TensorEngine, EinsumSpec } from './tensor-engine.js';
14
+ import type { EngineTensor, TensorEngine } from './tensor-engine.js';
16
15
  import type { NumericalInputs } from './types.js';
17
- /** Operand kinds a flat tensor-product can lower in v0.3.5: the three
18
- * index-carrying nodes plus tensor-partial-derivative (whose effective
19
- * indices are `of`'s indices followed by its wrtIndex). */
20
- type ContractableNode = Extract<ExprNode, {
21
- indices: ReadonlyArray<TensorIndex>;
22
- }> | Extract<ExprNode, {
23
- kind: 'tensor-partial-derivative';
24
- }>;
25
- /**
26
- * Build the EinsumSpec for a flat tensor-product.
27
- *
28
- * NOTE: this function does NOT decide which indices contract. That authority
29
- * belongs to `computeContraction()` (v0.2.0 symbolic-layer) — variance-aware,
30
- * implicit-identity-metric rule — which already classified every label as
31
- * contracted or free. buildEinsumSpec only maps those already-classified
32
- * labels to their (operand, axis) sites. There is exactly one
33
- * contraction-decision implementation in the codebase.
34
- *
35
- * @internal — cross-module/test use only; not part of the consumer surface.
36
- */
37
- export declare function buildEinsumSpec(operands: ReadonlyArray<ContractableNode>, contractionPairs: ReadonlyArray<{
38
- label: string;
39
- }>, freeIndices: ReadonlyMap<string, {
40
- upper: number;
41
- lower: number;
42
- }>): EinsumSpec;
43
16
  /** Lower a validated ExprNode to an EngineTensor.
44
17
  * @internal — cross-module/test use only; not part of the consumer surface. */
45
18
  export declare function lowerNode(node: ExprNode, inputs: NumericalInputs, engine: TensorEngine): EngineTensor;
46
- export {};
47
19
  //# sourceMappingURL=lowering.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"lowering.d.ts","sourceRoot":"","sources":["../../src/numerical/lowering.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAC;AAE5D,OAAO,KAAK,EAAE,WAAW,EAAoB,MAAM,0BAA0B,CAAC;AAY9E,OAAO,KAAK,EACV,YAAY,EAAE,YAAY,EAAE,UAAU,EACvC,MAAM,oBAAoB,CAAC;AAC5B,OAAO,KAAK,EAAE,eAAe,EAAe,MAAM,YAAY,CAAC;AAqB/D;;4DAE4D;AAC5D,KAAK,gBAAgB,GACjB,OAAO,CAAC,QAAQ,EAAE;IAAE,OAAO,EAAE,aAAa,CAAC,WAAW,CAAC,CAAA;CAAE,CAAC,GAC1D,OAAO,CAAC,QAAQ,EAAE;IAAE,IAAI,EAAE,2BAA2B,CAAA;CAAE,CAAC,CAAC;AAqD7D;;;;;;;;;;;GAWG;AACH,wBAAgB,eAAe,CAC7B,QAAQ,EAAE,aAAa,CAAC,gBAAgB,CAAC,EACzC,gBAAgB,EAAE,aAAa,CAAC;IAAE,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC,EAClD,WAAW,EAAE,WAAW,CAAC,MAAM,EAAE;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC,GACjE,UAAU,CA0CZ;AAiBD;gFACgF;AAChF,wBAAgB,SAAS,CACvB,IAAI,EAAE,QAAQ,EACd,MAAM,EAAE,eAAe,EACvB,MAAM,EAAE,YAAY,GACnB,YAAY,CA2lBd"}
1
+ {"version":3,"file":"lowering.d.ts","sourceRoot":"","sources":["../../src/numerical/lowering.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAC;AAiB5D,OAAO,KAAK,EACV,YAAY,EAAE,YAAY,EAC3B,MAAM,oBAAoB,CAAC;AAC5B,OAAO,KAAK,EAAE,eAAe,EAAe,MAAM,YAAY,CAAC;AAwW/D;gFACgF;AAChF,wBAAgB,SAAS,CACvB,IAAI,EAAE,QAAQ,EACd,MAAM,EAAE,eAAe,EACvB,MAAM,EAAE,YAAY,GACnB,YAAY,CAqMd"}