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,126 @@
1
+ /**
2
+ * Einstein field equation AST node (v0.6.0 Phase 2, Task 2.3).
3
+ *
4
+ * Represents the predicate
5
+ *
6
+ * G_μν + Λ g_μν = (8πG/c⁴) T_μν
7
+ *
8
+ * as a first-class structural node in the ExprNode union. The node is a
9
+ * predicate (an equation), not a value-producing expression — it validates
10
+ * the three structural requirements (Decision #3):
11
+ *
12
+ * 1. **Free-index agreement** — G_μν and T_μν must be rank-(0,2) lower-lower
13
+ * with the SAME index labels.
14
+ * 2. **Per-component dim equality** — each term reduces to [L⁻²]:
15
+ * G_μν ~ [L⁻²]
16
+ * (8πG/c⁴) T_μν ~ [T²·M⁻¹·L⁻¹] · [M·L⁻¹·T⁻²] = [L⁻²]
17
+ * Λ g_μν ~ [L⁻²] · dimensionless = [L⁻²]
18
+ * 3. **Symmetry agreement** — both sides symmetric in (μ,ν). T_μν has
19
+ * `symmetry: 'symmetric'`; G_μν is symmetric by construction.
20
+ *
21
+ * The coupling constant `8πG/c⁴` is represented symbolically by the tag
22
+ * `coupling: 'einstein'` (Decision #3). No inline numeric value — mirrors
23
+ * the constants-discipline requirement.
24
+ *
25
+ * @module dimensional/einstein-equation
26
+ */
27
+ import type { Dimension } from './types.js';
28
+ import type { MetricTensorNode } from './metric-validators.js';
29
+ import type { EinsteinTensorNode } from './curvature.js';
30
+ import type { StressEnergyTensorNode, CosmologicalConstantNode } from './stress-energy-validators.js';
31
+ /**
32
+ * AST node for the Einstein field equation G_μν + Λ g_μν = (8πG/c⁴) T_μν.
33
+ *
34
+ * Fields:
35
+ * - `lhs` — G_μν (EinsteinTensorNode, shipped in v0.5.0)
36
+ * - `cosmological` — CosmologicalConstantNode for the Λ term; null when the
37
+ * Λ-free form `G_μν = (8πG/c⁴) T_μν` is intended
38
+ * (Decision #11: null = Λ-omitted, not Λ=0).
39
+ * - `metric` — g_μν for the `Λ g_μν` cosmological term.
40
+ * - `rhs` — T_μν (StressEnergyTensorNode).
41
+ * - `coupling` — tag `'einstein'` representing 8πG/c⁴ (symbolic only).
42
+ *
43
+ * @public
44
+ */
45
+ export interface EinsteinFieldEquationNode {
46
+ readonly kind: 'einstein-equation';
47
+ readonly lhs: EinsteinTensorNode;
48
+ readonly cosmological: CosmologicalConstantNode | null;
49
+ readonly metric: MetricTensorNode;
50
+ readonly rhs: StressEnergyTensorNode;
51
+ readonly coupling: 'einstein';
52
+ }
53
+ /**
54
+ * Result of validating an EinsteinFieldEquationNode.
55
+ *
56
+ * The equation as a whole is a rank-2 lower-lower tensor identity,
57
+ * so `freeIndices` carries the same {μ: lower, ν: lower} pair as G_μν and T_μν.
58
+ * `dim` is [L⁻²] — the common per-component dimension of every term.
59
+ *
60
+ * @public
61
+ */
62
+ export interface EinsteinFieldEquationValidationResult {
63
+ readonly dim: Dimension;
64
+ readonly freeIndices: Map<string, {
65
+ upper: number;
66
+ lower: number;
67
+ }>;
68
+ }
69
+ /**
70
+ * Validate an `einstein-equation` node.
71
+ *
72
+ * Checks three predicates (Decision #3):
73
+ *
74
+ * 1. **Free-index agreement** — G_μν (lhs) and T_μν (rhs) must share the
75
+ * same two lower index labels (extracted from EinsteinTensorNode's embedded
76
+ * Riemann, following the Carroll Eq. 3.91 contraction convention).
77
+ * Throws an Error with "index label" in the message on mismatch.
78
+ *
79
+ * 2. **Per-component dim equality** — T_μν.componentDim must equal
80
+ * [M·L⁻¹·T⁻²] so that (8πG/c⁴)·T_μν ~ [L⁻²]. Throws an Error with
81
+ * "dimension" in the message on mismatch.
82
+ *
83
+ * 3. **Symmetry agreement** — T_μν must have `symmetry: 'symmetric'`. Throws
84
+ * an Error with "symmetry" in the message if not.
85
+ *
86
+ * Note: `lhs.riemann` structural validation is intentionally deferred to the
87
+ * `einstein-tensor` case arm in `validator.ts::infer()` — this function is
88
+ * a pure predicate-level check, not a full recursive walk.
89
+ *
90
+ * @example
91
+ * ```typescript
92
+ * import { validateEinsteinFieldEquation } from 'universal-physics-tensor';
93
+ * import type {
94
+ * EinsteinFieldEquationNode,
95
+ * EinsteinTensorNode,
96
+ * StressEnergyTensorNode,
97
+ * } from 'universal-physics-tensor';
98
+ *
99
+ * // Minimal vacuum EFE node (G_μν = κ T_μν with T = perfect-fluid)
100
+ * const efeNode: EinsteinFieldEquationNode = {
101
+ * kind: 'einstein-equation',
102
+ * lhs: { ... } as EinsteinTensorNode, // G_μν from einstein()
103
+ * cosmological: null, // Λ = 0
104
+ * metric: { kind: 'metric-tensor', ... },
105
+ * rhs: {
106
+ * kind: 'stress-energy-tensor',
107
+ * indices: [
108
+ * { label: 'mu', variance: 'lower' },
109
+ * { label: 'nu', variance: 'lower' },
110
+ * ],
111
+ * fluidType: 'perfect-fluid',
112
+ * symmetry: 'symmetric',
113
+ * componentDim: { L: -1, M: 1, T: -2, I: 0, Theta: 0, N: 0, J: 0 },
114
+ * },
115
+ * coupling: 'einstein',
116
+ * };
117
+ *
118
+ * const result = validateEinsteinFieldEquation(efeNode);
119
+ * // result.dim = { L: -2, M: 0, T: 0, ... } ([L⁻²])
120
+ * // result.freeIndices.get('mu') = { upper: 0, lower: 1 }
121
+ * ```
122
+ *
123
+ * @public
124
+ */
125
+ export declare function validateEinsteinFieldEquation(node: EinsteinFieldEquationNode): EinsteinFieldEquationValidationResult;
126
+ //# sourceMappingURL=einstein-equation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"einstein-equation.d.ts","sourceRoot":"","sources":["../../src/dimensional/einstein-equation.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAE5C,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC/D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AACzD,OAAO,KAAK,EAAE,sBAAsB,EAAE,wBAAwB,EAAE,MAAM,+BAA+B,CAAC;AAWtG;;;;;;;;;;;;;GAaG;AACH,MAAM,WAAW,yBAAyB;IACxC,QAAQ,CAAC,IAAI,EAAE,mBAAmB,CAAC;IACnC,QAAQ,CAAC,GAAG,EAAE,kBAAkB,CAAC;IACjC,QAAQ,CAAC,YAAY,EAAE,wBAAwB,GAAG,IAAI,CAAC;IACvD,QAAQ,CAAC,MAAM,EAAE,gBAAgB,CAAC;IAClC,QAAQ,CAAC,GAAG,EAAE,sBAAsB,CAAC;IACrC,QAAQ,CAAC,QAAQ,EAAE,UAAU,CAAC;CAC/B;AAED;;;;;;;;GAQG;AACH,MAAM,WAAW,qCAAqC;IACpD,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;AAuBD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuDG;AACH,wBAAgB,6BAA6B,CAC3C,IAAI,EAAE,yBAAyB,GAC9B,qCAAqC,CA2CvC"}
@@ -0,0 +1,122 @@
1
+ /**
2
+ * Einstein field equation AST node (v0.6.0 Phase 2, Task 2.3).
3
+ *
4
+ * Represents the predicate
5
+ *
6
+ * G_μν + Λ g_μν = (8πG/c⁴) T_μν
7
+ *
8
+ * as a first-class structural node in the ExprNode union. The node is a
9
+ * predicate (an equation), not a value-producing expression — it validates
10
+ * the three structural requirements (Decision #3):
11
+ *
12
+ * 1. **Free-index agreement** — G_μν and T_μν must be rank-(0,2) lower-lower
13
+ * with the SAME index labels.
14
+ * 2. **Per-component dim equality** — each term reduces to [L⁻²]:
15
+ * G_μν ~ [L⁻²]
16
+ * (8πG/c⁴) T_μν ~ [T²·M⁻¹·L⁻¹] · [M·L⁻¹·T⁻²] = [L⁻²]
17
+ * Λ g_μν ~ [L⁻²] · dimensionless = [L⁻²]
18
+ * 3. **Symmetry agreement** — both sides symmetric in (μ,ν). T_μν has
19
+ * `symmetry: 'symmetric'`; G_μν is symmetric by construction.
20
+ *
21
+ * The coupling constant `8πG/c⁴` is represented symbolically by the tag
22
+ * `coupling: 'einstein'` (Decision #3). No inline numeric value — mirrors
23
+ * the constants-discipline requirement.
24
+ *
25
+ * @module dimensional/einstein-equation
26
+ */
27
+ import { validateFreeIndexLabelMatch, validateComponentDimension, validateTensorSymmetry, } from './field-equation-helpers.js';
28
+ // Expected per-component dimension of every term: [L⁻²].
29
+ const DIM_L_INV2 = { L: -2, M: 0, T: 0, I: 0, Theta: 0, N: 0, J: 0 };
30
+ // Expected dimension of T_μν components: [M·L⁻¹·T⁻²] (energy density / Pa).
31
+ // (8πG/c⁴) ~ [T²·M⁻¹·L⁻¹]; product = [M·L⁻¹·T⁻²] × [T²·M⁻¹·L⁻¹] = [L⁻²] ✓
32
+ const DIM_T_MUV = { L: -1, M: 1, T: -2, I: 0, Theta: 0, N: 0, J: 0 };
33
+ /**
34
+ * Extract the free-index labels from an EinsteinTensorNode.
35
+ *
36
+ * The Einstein tensor's free indices come from its embedded Riemann's
37
+ * lowerIndices[0] (σ slot) and lowerIndices[2] (ν slot) — the surviving
38
+ * indices after the Carroll Eq. 3.91 contraction. These become G_μν's
39
+ * own μ_out and ν_out labels.
40
+ */
41
+ function einsteinFreeIndexLabels(lhs) {
42
+ const mu = lhs.riemann.lowerIndices[0].label;
43
+ const nu = lhs.riemann.lowerIndices[2].label;
44
+ return [mu, nu];
45
+ }
46
+ /**
47
+ * Validate an `einstein-equation` node.
48
+ *
49
+ * Checks three predicates (Decision #3):
50
+ *
51
+ * 1. **Free-index agreement** — G_μν (lhs) and T_μν (rhs) must share the
52
+ * same two lower index labels (extracted from EinsteinTensorNode's embedded
53
+ * Riemann, following the Carroll Eq. 3.91 contraction convention).
54
+ * Throws an Error with "index label" in the message on mismatch.
55
+ *
56
+ * 2. **Per-component dim equality** — T_μν.componentDim must equal
57
+ * [M·L⁻¹·T⁻²] so that (8πG/c⁴)·T_μν ~ [L⁻²]. Throws an Error with
58
+ * "dimension" in the message on mismatch.
59
+ *
60
+ * 3. **Symmetry agreement** — T_μν must have `symmetry: 'symmetric'`. Throws
61
+ * an Error with "symmetry" in the message if not.
62
+ *
63
+ * Note: `lhs.riemann` structural validation is intentionally deferred to the
64
+ * `einstein-tensor` case arm in `validator.ts::infer()` — this function is
65
+ * a pure predicate-level check, not a full recursive walk.
66
+ *
67
+ * @example
68
+ * ```typescript
69
+ * import { validateEinsteinFieldEquation } from 'universal-physics-tensor';
70
+ * import type {
71
+ * EinsteinFieldEquationNode,
72
+ * EinsteinTensorNode,
73
+ * StressEnergyTensorNode,
74
+ * } from 'universal-physics-tensor';
75
+ *
76
+ * // Minimal vacuum EFE node (G_μν = κ T_μν with T = perfect-fluid)
77
+ * const efeNode: EinsteinFieldEquationNode = {
78
+ * kind: 'einstein-equation',
79
+ * lhs: { ... } as EinsteinTensorNode, // G_μν from einstein()
80
+ * cosmological: null, // Λ = 0
81
+ * metric: { kind: 'metric-tensor', ... },
82
+ * rhs: {
83
+ * kind: 'stress-energy-tensor',
84
+ * indices: [
85
+ * { label: 'mu', variance: 'lower' },
86
+ * { label: 'nu', variance: 'lower' },
87
+ * ],
88
+ * fluidType: 'perfect-fluid',
89
+ * symmetry: 'symmetric',
90
+ * componentDim: { L: -1, M: 1, T: -2, I: 0, Theta: 0, N: 0, J: 0 },
91
+ * },
92
+ * coupling: 'einstein',
93
+ * };
94
+ *
95
+ * const result = validateEinsteinFieldEquation(efeNode);
96
+ * // result.dim = { L: -2, M: 0, T: 0, ... } ([L⁻²])
97
+ * // result.freeIndices.get('mu') = { upper: 0, lower: 1 }
98
+ * ```
99
+ *
100
+ * @public
101
+ */
102
+ export function validateEinsteinFieldEquation(node) {
103
+ // v0.7 follow-up Phase 0 (`docs/architecture/v0.7-tensor-equation-node-
104
+ // design-note.md`): the three predicates below are now thin
105
+ // delegations to `field-equation-helpers.ts`. Behavior preserved —
106
+ // error messages contain the same "index label" / "dimension" /
107
+ // "symmetry" keywords any test pattern-matches against.
108
+ const [lhsMu, lhsNu] = einsteinFreeIndexLabels(node.lhs);
109
+ // ── Predicate 1: free-index label agreement ───────────────────────────────
110
+ validateFreeIndexLabelMatch('EinsteinFieldEquationNode', 'G_μν', [lhsMu, lhsNu], 'T_μν', [node.rhs.indices[0].label, node.rhs.indices[1].label]);
111
+ // ── Predicate 2: per-component dim equality ────────────────────────────────
112
+ validateComponentDimension('EinsteinFieldEquationNode', 'T_μν componentDim', node.rhs.componentDim, DIM_T_MUV, `(should be [M·L⁻¹·T⁻²] / energy density so that (8πG/c⁴)·T_μν ~ [L⁻²]; ` +
113
+ `per-component dim of every EFE term must reduce to [L⁻²]).`);
114
+ // ── Predicate 3: symmetry agreement ───────────────────────────────────────
115
+ validateTensorSymmetry('EinsteinFieldEquationNode', 'T_μν', node.rhs.symmetry, 'symmetric', `Both sides of the EFE are symmetric in (μ,ν).`);
116
+ // All predicates passed — return the equation's rank-2 lower-lower identity.
117
+ const freeIndices = new Map();
118
+ freeIndices.set(lhsMu, { upper: 0, lower: 1 });
119
+ freeIndices.set(lhsNu, { upper: 0, lower: 1 });
120
+ return { dim: DIM_L_INV2, freeIndices };
121
+ }
122
+ //# sourceMappingURL=einstein-equation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"einstein-equation.js","sourceRoot":"","sources":["../../src/dimensional/einstein-equation.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAOH,OAAO,EACL,2BAA2B,EAC3B,0BAA0B,EAC1B,sBAAsB,GACvB,MAAM,6BAA6B,CAAC;AA2CrC,yDAAyD;AACzD,MAAM,UAAU,GAAc,EAAE,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,EAAE,CAAC;AAEhF,4EAA4E;AAC5E,0EAA0E;AAC1E,MAAM,SAAS,GAAc,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;AAEhF;;;;;;;GAOG;AACH,SAAS,uBAAuB,CAAC,GAAuB;IACtD,MAAM,EAAE,GAAG,GAAG,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;IAC7C,MAAM,EAAE,GAAG,GAAG,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;IAC7C,OAAO,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;AAClB,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuDG;AACH,MAAM,UAAU,6BAA6B,CAC3C,IAA+B;IAE/B,wEAAwE;IACxE,4DAA4D;IAC5D,mEAAmE;IACnE,gEAAgE;IAChE,wDAAwD;IAExD,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,GAAG,uBAAuB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAEzD,6EAA6E;IAC7E,2BAA2B,CACzB,2BAA2B,EAC3B,MAAM,EACN,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,MAAM,EACN,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CACvD,CAAC;IAEF,8EAA8E;IAC9E,0BAA0B,CACxB,2BAA2B,EAC3B,mBAAmB,EACnB,IAAI,CAAC,GAAG,CAAC,YAAY,EACrB,SAAS,EACT,yEAAyE;QACvE,4DAA4D,CAC/D,CAAC;IAEF,6EAA6E;IAC7E,sBAAsB,CACpB,2BAA2B,EAC3B,MAAM,EACN,IAAI,CAAC,GAAG,CAAC,QAAQ,EACjB,WAAW,EACX,+CAA+C,CAChD,CAAC;IAEF,6EAA6E;IAC7E,MAAM,WAAW,GAAG,IAAI,GAAG,EAA4C,CAAC;IACxE,WAAW,CAAC,GAAG,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;IAC/C,WAAW,CAAC,GAAG,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;IAE/C,OAAO,EAAE,GAAG,EAAE,UAAU,EAAE,WAAW,EAAE,CAAC;AAC1C,CAAC"}
@@ -0,0 +1,82 @@
1
+ /**
2
+ * Shared validation helpers for field-equation predicate AST nodes
3
+ * (`EinsteinFieldEquationNode`, and future `MaxwellEquationNode`,
4
+ * `KleinGordonEquationNode`, etc.).
5
+ *
6
+ * Per `docs/architecture/v0.7-tensor-equation-node-design-note.md`
7
+ * Phase 0 — extract the 3 invariant checks from
8
+ * `validateEinsteinFieldEquation` so future field equations get
9
+ * them for free, instead of copy-pasting the predicate bodies.
10
+ * Investment-upfront pattern: same shape as v0.6.1's
11
+ * validator-registry refactor.
12
+ *
13
+ * Three helpers, all behavior-preserving extractions:
14
+ *
15
+ * - `validateFreeIndexLabelMatch` — checks lhs and rhs carry
16
+ * the same free-index labels in the same order. Generic over
17
+ * rank (works for rank-1 Maxwell `∇_μ F^{μν}`, rank-2 EFE,
18
+ * etc.).
19
+ *
20
+ * - `validateComponentDimension` — checks a tensor's
21
+ * `componentDim` matches an expected `Dimension`. Generic
22
+ * over which tensor and what equation context.
23
+ *
24
+ * - `validateTensorSymmetry` — checks a tensor's `symmetry`
25
+ * field equals an expected value. Generic over tensor +
26
+ * equation context.
27
+ *
28
+ * @module dimensional/field-equation-helpers
29
+ */
30
+ import type { Dimension } from './types.js';
31
+ /**
32
+ * Assert that the LHS and RHS of a field-equation predicate carry
33
+ * the same free-index labels in the same order.
34
+ *
35
+ * Throws `Error` with `"index label"` in the message (matches the
36
+ * existing `validateEinsteinFieldEquation` error prose, so any
37
+ * test pattern-matching that string stays green).
38
+ *
39
+ * @param equationKind - Discriminator for the error message
40
+ * (e.g., `'EinsteinFieldEquationNode'`, `'MaxwellEquationNode'`).
41
+ * @param lhsName - Human label for the LHS in the error (e.g., `'G_μν'`).
42
+ * @param lhsLabels - Free-index labels from the LHS, in axis order.
43
+ * @param rhsName - Human label for the RHS (e.g., `'T_μν'`).
44
+ * @param rhsLabels - Free-index labels from the RHS, in axis order.
45
+ *
46
+ * @internal
47
+ */
48
+ export declare function validateFreeIndexLabelMatch(equationKind: string, lhsName: string, lhsLabels: ReadonlyArray<string>, rhsName: string, rhsLabels: ReadonlyArray<string>): void;
49
+ /**
50
+ * Assert that an `actual: Dimension` equals an `expected: Dimension`
51
+ * across all seven base SI axes (L, M, T, I, Theta, N, J).
52
+ *
53
+ * Throws `Error` with `"dimension"` in the message (matches the
54
+ * existing error prose convention).
55
+ *
56
+ * @param equationKind - Discriminator (e.g., `'EinsteinFieldEquationNode'`).
57
+ * @param tensorName - Human label for the tensor being checked
58
+ * (e.g., `'T_μν componentDim'`).
59
+ * @param actual - The actual `Dimension` from the AST node.
60
+ * @param expected - The expected `Dimension`.
61
+ * @param explanation - Optional trailing message explaining why
62
+ * this dimension is required (e.g., `"so that (8πG/c⁴)·T_μν ~ [L⁻²]"`).
63
+ *
64
+ * @internal
65
+ */
66
+ export declare function validateComponentDimension(equationKind: string, tensorName: string, actual: Dimension, expected: Dimension, explanation?: string): void;
67
+ /**
68
+ * Assert that a tensor's `symmetry` field equals `expected`.
69
+ *
70
+ * Throws `Error` with `"symmetry"` in the message.
71
+ *
72
+ * @param equationKind - Discriminator (e.g., `'EinsteinFieldEquationNode'`).
73
+ * @param tensorName - Human label (e.g., `'T_μν'`).
74
+ * @param actual - The tensor's actual `symmetry` value.
75
+ * @param expected - The required `symmetry` value (e.g., `'symmetric'`).
76
+ * @param explanation - Optional trailing message (e.g., `"Both sides of
77
+ * the EFE are symmetric in (μ,ν)"`).
78
+ *
79
+ * @internal
80
+ */
81
+ export declare function validateTensorSymmetry(equationKind: string, tensorName: string, actual: string, expected: string, explanation?: string): void;
82
+ //# sourceMappingURL=field-equation-helpers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"field-equation-helpers.d.ts","sourceRoot":"","sources":["../../src/dimensional/field-equation-helpers.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAM5C;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,2BAA2B,CACzC,YAAY,EAAE,MAAM,EACpB,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,aAAa,CAAC,MAAM,CAAC,EAChC,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,aAAa,CAAC,MAAM,CAAC,GAC/B,IAAI,CAmBN;AAMD;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,0BAA0B,CACxC,YAAY,EAAE,MAAM,EACpB,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,SAAS,EACjB,QAAQ,EAAE,SAAS,EACnB,WAAW,CAAC,EAAE,MAAM,GACnB,IAAI,CAgBN;AAMD;;;;;;;;;;;;;GAaG;AACH,wBAAgB,sBAAsB,CACpC,YAAY,EAAE,MAAM,EACpB,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,EAChB,WAAW,CAAC,EAAE,MAAM,GACnB,IAAI,CAQN"}
@@ -0,0 +1,123 @@
1
+ /**
2
+ * Shared validation helpers for field-equation predicate AST nodes
3
+ * (`EinsteinFieldEquationNode`, and future `MaxwellEquationNode`,
4
+ * `KleinGordonEquationNode`, etc.).
5
+ *
6
+ * Per `docs/architecture/v0.7-tensor-equation-node-design-note.md`
7
+ * Phase 0 — extract the 3 invariant checks from
8
+ * `validateEinsteinFieldEquation` so future field equations get
9
+ * them for free, instead of copy-pasting the predicate bodies.
10
+ * Investment-upfront pattern: same shape as v0.6.1's
11
+ * validator-registry refactor.
12
+ *
13
+ * Three helpers, all behavior-preserving extractions:
14
+ *
15
+ * - `validateFreeIndexLabelMatch` — checks lhs and rhs carry
16
+ * the same free-index labels in the same order. Generic over
17
+ * rank (works for rank-1 Maxwell `∇_μ F^{μν}`, rank-2 EFE,
18
+ * etc.).
19
+ *
20
+ * - `validateComponentDimension` — checks a tensor's
21
+ * `componentDim` matches an expected `Dimension`. Generic
22
+ * over which tensor and what equation context.
23
+ *
24
+ * - `validateTensorSymmetry` — checks a tensor's `symmetry`
25
+ * field equals an expected value. Generic over tensor +
26
+ * equation context.
27
+ *
28
+ * @module dimensional/field-equation-helpers
29
+ */
30
+ // ---------------------------------------------------------------------------
31
+ // Helper 1 — Free-index label agreement
32
+ // ---------------------------------------------------------------------------
33
+ /**
34
+ * Assert that the LHS and RHS of a field-equation predicate carry
35
+ * the same free-index labels in the same order.
36
+ *
37
+ * Throws `Error` with `"index label"` in the message (matches the
38
+ * existing `validateEinsteinFieldEquation` error prose, so any
39
+ * test pattern-matching that string stays green).
40
+ *
41
+ * @param equationKind - Discriminator for the error message
42
+ * (e.g., `'EinsteinFieldEquationNode'`, `'MaxwellEquationNode'`).
43
+ * @param lhsName - Human label for the LHS in the error (e.g., `'G_μν'`).
44
+ * @param lhsLabels - Free-index labels from the LHS, in axis order.
45
+ * @param rhsName - Human label for the RHS (e.g., `'T_μν'`).
46
+ * @param rhsLabels - Free-index labels from the RHS, in axis order.
47
+ *
48
+ * @internal
49
+ */
50
+ export function validateFreeIndexLabelMatch(equationKind, lhsName, lhsLabels, rhsName, rhsLabels) {
51
+ if (lhsLabels.length !== rhsLabels.length) {
52
+ throw new Error(`${equationKind}: index label rank mismatch — LHS ${lhsName} has ` +
53
+ `${lhsLabels.length} free indices (${lhsLabels.join(', ')}) but RHS ` +
54
+ `${rhsName} has ${rhsLabels.length} (${rhsLabels.join(', ')}). ` +
55
+ `Both sides must carry the same rank.`);
56
+ }
57
+ for (let i = 0; i < lhsLabels.length; i++) {
58
+ if (lhsLabels[i] !== rhsLabels[i]) {
59
+ throw new Error(`${equationKind}: index label mismatch — LHS ${lhsName} has free ` +
60
+ `indices (${lhsLabels.join(', ')}) but RHS ${rhsName} has ` +
61
+ `(${rhsLabels.join(', ')}). Both sides must carry the same lower ` +
62
+ `index labels in the same axis order.`);
63
+ }
64
+ }
65
+ }
66
+ // ---------------------------------------------------------------------------
67
+ // Helper 2 — Per-component dimensional equality
68
+ // ---------------------------------------------------------------------------
69
+ /**
70
+ * Assert that an `actual: Dimension` equals an `expected: Dimension`
71
+ * across all seven base SI axes (L, M, T, I, Theta, N, J).
72
+ *
73
+ * Throws `Error` with `"dimension"` in the message (matches the
74
+ * existing error prose convention).
75
+ *
76
+ * @param equationKind - Discriminator (e.g., `'EinsteinFieldEquationNode'`).
77
+ * @param tensorName - Human label for the tensor being checked
78
+ * (e.g., `'T_μν componentDim'`).
79
+ * @param actual - The actual `Dimension` from the AST node.
80
+ * @param expected - The expected `Dimension`.
81
+ * @param explanation - Optional trailing message explaining why
82
+ * this dimension is required (e.g., `"so that (8πG/c⁴)·T_μν ~ [L⁻²]"`).
83
+ *
84
+ * @internal
85
+ */
86
+ export function validateComponentDimension(equationKind, tensorName, actual, expected, explanation) {
87
+ if (actual.L !== expected.L ||
88
+ actual.M !== expected.M ||
89
+ actual.T !== expected.T ||
90
+ actual.I !== expected.I ||
91
+ actual.Theta !== expected.Theta ||
92
+ actual.N !== expected.N ||
93
+ actual.J !== expected.J) {
94
+ const tail = explanation ? ` ${explanation}` : '';
95
+ throw new Error(`${equationKind}: dimension mismatch — ${tensorName} must be ` +
96
+ `${JSON.stringify(expected)} but got ${JSON.stringify(actual)}.${tail}`);
97
+ }
98
+ }
99
+ // ---------------------------------------------------------------------------
100
+ // Helper 3 — Tensor symmetry agreement
101
+ // ---------------------------------------------------------------------------
102
+ /**
103
+ * Assert that a tensor's `symmetry` field equals `expected`.
104
+ *
105
+ * Throws `Error` with `"symmetry"` in the message.
106
+ *
107
+ * @param equationKind - Discriminator (e.g., `'EinsteinFieldEquationNode'`).
108
+ * @param tensorName - Human label (e.g., `'T_μν'`).
109
+ * @param actual - The tensor's actual `symmetry` value.
110
+ * @param expected - The required `symmetry` value (e.g., `'symmetric'`).
111
+ * @param explanation - Optional trailing message (e.g., `"Both sides of
112
+ * the EFE are symmetric in (μ,ν)"`).
113
+ *
114
+ * @internal
115
+ */
116
+ export function validateTensorSymmetry(equationKind, tensorName, actual, expected, explanation) {
117
+ if (actual !== expected) {
118
+ const tail = explanation ? ` ${explanation}` : '';
119
+ throw new Error(`${equationKind}: symmetry mismatch — ${tensorName} must have ` +
120
+ `symmetry: '${expected}' (got '${actual}').${tail}`);
121
+ }
122
+ }
123
+ //# sourceMappingURL=field-equation-helpers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"field-equation-helpers.js","sourceRoot":"","sources":["../../src/dimensional/field-equation-helpers.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAIH,8EAA8E;AAC9E,wCAAwC;AACxC,8EAA8E;AAE9E;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,UAAU,2BAA2B,CACzC,YAAoB,EACpB,OAAe,EACf,SAAgC,EAChC,OAAe,EACf,SAAgC;IAEhC,IAAI,SAAS,CAAC,MAAM,KAAK,SAAS,CAAC,MAAM,EAAE,CAAC;QAC1C,MAAM,IAAI,KAAK,CACb,GAAG,YAAY,qCAAqC,OAAO,OAAO;YAClE,GAAG,SAAS,CAAC,MAAM,kBAAkB,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY;YACrE,GAAG,OAAO,QAAQ,SAAS,CAAC,MAAM,KAAK,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK;YAChE,sCAAsC,CACvC,CAAC;IACJ,CAAC;IACD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QAC1C,IAAI,SAAS,CAAC,CAAC,CAAC,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC;YAClC,MAAM,IAAI,KAAK,CACb,GAAG,YAAY,gCAAgC,OAAO,YAAY;gBAClE,YAAY,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,OAAO,OAAO;gBAC3D,IAAI,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,0CAA0C;gBAClE,sCAAsC,CACvC,CAAC;QACJ,CAAC;IACH,CAAC;AACH,CAAC;AAED,8EAA8E;AAC9E,gDAAgD;AAChD,8EAA8E;AAE9E;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,UAAU,0BAA0B,CACxC,YAAoB,EACpB,UAAkB,EAClB,MAAiB,EACjB,QAAmB,EACnB,WAAoB;IAEpB,IACE,MAAM,CAAC,CAAC,KAAK,QAAQ,CAAC,CAAC;QACvB,MAAM,CAAC,CAAC,KAAK,QAAQ,CAAC,CAAC;QACvB,MAAM,CAAC,CAAC,KAAK,QAAQ,CAAC,CAAC;QACvB,MAAM,CAAC,CAAC,KAAK,QAAQ,CAAC,CAAC;QACvB,MAAM,CAAC,KAAK,KAAK,QAAQ,CAAC,KAAK;QAC/B,MAAM,CAAC,CAAC,KAAK,QAAQ,CAAC,CAAC;QACvB,MAAM,CAAC,CAAC,KAAK,QAAQ,CAAC,CAAC,EACvB,CAAC;QACD,MAAM,IAAI,GAAG,WAAW,CAAC,CAAC,CAAC,IAAI,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAClD,MAAM,IAAI,KAAK,CACb,GAAG,YAAY,0BAA0B,UAAU,WAAW;YAC9D,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,YAAY,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,IAAI,EAAE,CACxE,CAAC;IACJ,CAAC;AACH,CAAC;AAED,8EAA8E;AAC9E,uCAAuC;AACvC,8EAA8E;AAE9E;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,sBAAsB,CACpC,YAAoB,EACpB,UAAkB,EAClB,MAAc,EACd,QAAgB,EAChB,WAAoB;IAEpB,IAAI,MAAM,KAAK,QAAQ,EAAE,CAAC;QACxB,MAAM,IAAI,GAAG,WAAW,CAAC,CAAC,CAAC,IAAI,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAClD,MAAM,IAAI,KAAK,CACb,GAAG,YAAY,yBAAyB,UAAU,aAAa;YAC/D,cAAc,QAAQ,WAAW,MAAM,MAAM,IAAI,EAAE,CACpD,CAAC;IACJ,CAAC;AACH,CAAC"}
@@ -0,0 +1,148 @@
1
+ /**
2
+ * Friedmann equation AST node — modified-cosmology predicate.
3
+ *
4
+ * Per `docs/architecture/v0.7-be-x-reencoding-design-note.md`
5
+ * §"BE-19 — `FriedmannEquationNode` for modified-Friedmann
6
+ * predicates". Fourth of four BE-X structural re-encodings in the
7
+ * v0.7-series follow-up to the v0.6.0 deferred-bridges list.
8
+ *
9
+ * Represents the predicate
10
+ *
11
+ * H² = (8πG/3) · ρ · [correction]
12
+ *
13
+ * where H is the Hubble parameter, ρ the cosmic energy/mass-density,
14
+ * and `[correction]` is a variant-tagged extension term. The classical
15
+ * FRW form takes `correction = null`; modified-cosmology variants
16
+ * (LQC bounce, Randall-Sundrum brane, DGP, dRGT massive gravity)
17
+ * tag their correction with a `variant` discriminator so consumers
18
+ * can pattern-match on which cosmological regime the equation
19
+ * occupies.
20
+ *
21
+ * Discriminator vocabulary:
22
+ *
23
+ * - `'classical'` — canonical FRW `H² = (8πG/3) ρ` (the [-k/a²]
24
+ * and [Λ/3] terms ride along as additive scalars, not the
25
+ * `correction` slot). `correction` MUST be `null`.
26
+ * - `'lqc'` — Loop Quantum Cosmology bounce `(1 − ρ/ρ_crit)`. The
27
+ * correction is a DIMENSIONLESS multiplicative factor.
28
+ * - `'brane'` — Randall-Sundrum brane-tension `(1 + ρ/(2σ))`. Also
29
+ * dimensionless multiplicative.
30
+ * - `'dgp'` — Dvali-Gabadadze-Porrati 5D-crossover `±H/r_c`. The
31
+ * `correction` slot holds a stub for the additional scale; this
32
+ * variant signals "5D structure present" — fine-grained dim
33
+ * discipline left for future BE-NN landing.
34
+ * - `'massive'` — dRGT massive-gravity graviton-mass term. The
35
+ * `correction` slot holds the graviton-mass^2 contribution; dim
36
+ * discipline left for future BE-NN landing.
37
+ *
38
+ * The variant discriminator is the load-bearing structural fact:
39
+ * future modified-cosmology bridges (brane, DGP, dRGT) land as new
40
+ * `BridgeEquation` entries that produce `FriedmannEquationNode`s
41
+ * with the appropriate variant tag, instead of each inventing a
42
+ * separate AST primitive.
43
+ *
44
+ * References:
45
+ * - Mukhanov, *Physical Foundations of Cosmology* (2005), §2.1
46
+ * for the canonical FRW Friedmann equation derivation.
47
+ * - Ashtekar & Singh, *Loop Quantum Cosmology: A Status Report*
48
+ * (2011), arXiv:1108.0893 — for the LQC `(1 − ρ/ρ_crit)` bounce
49
+ * factor; the canonical reference for the `'lqc'` variant
50
+ * consumed by BE-19.
51
+ *
52
+ * Status: PREDICATE node like `EinsteinFieldEquationNode` and
53
+ * `KleinGordonEquationNode` — not a value-producing expression.
54
+ * Numerical evaluation of a specific FRW history is out of scope
55
+ * (numerical evaluators live alongside per-bridge encodings — e.g.
56
+ * `evaluateQuantumBounce` in `src/bridges/equations/be-19-quantum-bounce.ts`).
57
+ *
58
+ * @module dimensional/friedmann-equation
59
+ */
60
+ import type { Dimension } from './types.js';
61
+ import type { ScalarFieldNode } from './klein-gordon-equation.js';
62
+ /**
63
+ * Tag for the cosmological regime a `FriedmannEquationNode`
64
+ * represents. Each variant identifies a structural pattern of
65
+ * deviation from canonical FRW; consumers pattern-match on this
66
+ * discriminator to select regime-specific downstream logic.
67
+ *
68
+ * See the module docstring for the per-variant semantics.
69
+ *
70
+ * @public
71
+ */
72
+ export type FriedmannVariant = 'classical' | 'lqc' | 'brane' | 'dgp' | 'massive';
73
+ /**
74
+ * AST node for the modified Friedmann equation
75
+ *
76
+ * H² = (8πG/3) · ρ · [variant-specific correction]
77
+ *
78
+ * Fields:
79
+ * - `hubble` — H or H² as a `ScalarFieldNode`. Accepted dims
80
+ * are `[T^-1]` (H) or `[T^-2]` (H²); the validator
81
+ * does NOT square the field for you, it only
82
+ * checks the stated dim is one of the two.
83
+ * - `density` — ρ as a `ScalarFieldNode`, dim `[M·L^-3]`
84
+ * (mass-density convention, aligning with BE-19's
85
+ * existing `QUANTUM_BOUNCE_RHS` encoding).
86
+ * - `correction` — the variant-specific extension. `null` IFF
87
+ * `variant === 'classical'`. For `'lqc'`, the
88
+ * correction's dim is constrained to be
89
+ * dimensionless (the `(1 − ρ/ρ_crit)` factor).
90
+ * Other non-classical variants accept any dim
91
+ * (refinement deferred to per-bridge landing).
92
+ * - `variant` — the regime discriminator. See `FriedmannVariant`.
93
+ * - `coupling` — tag `'friedmann'` representing the symbolic
94
+ * `(8πG/3)` prefactor (no inline numeric).
95
+ *
96
+ * @public
97
+ */
98
+ export interface FriedmannEquationNode {
99
+ readonly kind: 'friedmann-equation';
100
+ readonly hubble: ScalarFieldNode;
101
+ readonly density: ScalarFieldNode;
102
+ readonly correction: ScalarFieldNode | null;
103
+ readonly variant: FriedmannVariant;
104
+ readonly coupling: 'friedmann';
105
+ }
106
+ /**
107
+ * Result of validating a `FriedmannEquationNode`. Mirrors
108
+ * `KleinGordonEquationValidationResult` shape.
109
+ *
110
+ * @public
111
+ */
112
+ export interface FriedmannEquationValidationResult {
113
+ /** Per-component dim of the equation — `[T^-2]` (H² shape). */
114
+ readonly dim: Dimension;
115
+ /** Empty free-indices map (rank-0 equation). */
116
+ readonly freeIndices: Map<string, {
117
+ upper: number;
118
+ lower: number;
119
+ }>;
120
+ /** Echo of the variant tag for downstream pattern-matching. */
121
+ readonly variant: FriedmannVariant;
122
+ }
123
+ /**
124
+ * Validate a `friedmann-equation` node.
125
+ *
126
+ * Predicates (mirroring the field-equation-helpers pattern):
127
+ *
128
+ * 1. **Variant discriminator** — `variant` must be one of the
129
+ * known tags. Throws with `"variant"` keyword on unknown values.
130
+ * 2. **Classical–correction consistency** — `variant === 'classical'`
131
+ * requires `correction === null`; any other variant requires
132
+ * `correction !== null`. Throws with `"variant"` keyword.
133
+ * 3. **Free-index agreement** — trivially passes (rank-0 equation).
134
+ * 4. **Per-component dim equality** — `hubble.dim` must be `[T^-2]`
135
+ * (H²) or `[T^-1]` (H); `density.dim` must be `[M·L^-3]`. For
136
+ * `variant === 'lqc'`, `correction.dim` must be dimensionless
137
+ * (the `(1 − ρ/ρ_crit)` bounce factor).
138
+ * 5. **Symmetry agreement** — all participants carry the trivial
139
+ * `'scalar'` marker.
140
+ *
141
+ * Errors carry the keywords `"dimension"` / `"symmetry"` (from the
142
+ * field-equation-helpers) and `"variant"` (for discriminator /
143
+ * classical-consistency violations).
144
+ *
145
+ * @public
146
+ */
147
+ export declare function validateFriedmannEquation(node: FriedmannEquationNode): FriedmannEquationValidationResult;
148
+ //# sourceMappingURL=friedmann-equation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"friedmann-equation.d.ts","sourceRoot":"","sources":["../../src/dimensional/friedmann-equation.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0DG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAC5C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAYlE;;;;;;;;;GASG;AACH,MAAM,MAAM,gBAAgB,GACxB,WAAW,GACX,KAAK,GACL,OAAO,GACP,KAAK,GACL,SAAS,CAAC;AAcd;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,IAAI,EAAE,oBAAoB,CAAC;IACpC,QAAQ,CAAC,MAAM,EAAE,eAAe,CAAC;IACjC,QAAQ,CAAC,OAAO,EAAE,eAAe,CAAC;IAClC,QAAQ,CAAC,UAAU,EAAE,eAAe,GAAG,IAAI,CAAC;IAC5C,QAAQ,CAAC,OAAO,EAAE,gBAAgB,CAAC;IACnC,QAAQ,CAAC,QAAQ,EAAE,WAAW,CAAC;CAChC;AAED;;;;;GAKG;AACH,MAAM,WAAW,iCAAiC;IAChD,+DAA+D;IAC/D,QAAQ,CAAC,GAAG,EAAE,SAAS,CAAC;IACxB,gDAAgD;IAChD,QAAQ,CAAC,WAAW,EAAE,GAAG,CAAC,MAAM,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACpE,+DAA+D;IAC/D,QAAQ,CAAC,OAAO,EAAE,gBAAgB,CAAC;CACpC;AAsBD;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAgB,yBAAyB,CACvC,IAAI,EAAE,qBAAqB,GAC1B,iCAAiC,CA6FnC"}