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,150 @@
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 { equals } from './algebra.js';
61
+ import { validateFreeIndexLabelMatch, validateComponentDimension, validateTensorSymmetry, } from './field-equation-helpers.js';
62
+ const KNOWN_VARIANTS = new Set([
63
+ 'classical',
64
+ 'lqc',
65
+ 'brane',
66
+ 'dgp',
67
+ 'massive',
68
+ ]);
69
+ // ---------------------------------------------------------------------------
70
+ // Expected dims
71
+ // ---------------------------------------------------------------------------
72
+ /** `[T^-2]`: dim of H² and of (8πG/3)·ρ in the canonical Friedmann form. */
73
+ const T_INV2 = { L: 0, M: 0, T: -2, I: 0, Theta: 0, N: 0, J: 0 };
74
+ /** `[T^-1]`: dim of the un-squared Hubble parameter H. */
75
+ const T_INV1 = { L: 0, M: 0, T: -1, I: 0, Theta: 0, N: 0, J: 0 };
76
+ /** `[M·L^-3]`: dim of mass-density ρ (canonical Friedmann convention). */
77
+ const MASS_DENSITY = { L: -3, M: 1, T: 0, I: 0, Theta: 0, N: 0, J: 0 };
78
+ /** `[]`: dimensionless (the LQC `(1 − ρ/ρ_crit)` correction factor). */
79
+ const DIMLESS = { L: 0, M: 0, T: 0, I: 0, Theta: 0, N: 0, J: 0 };
80
+ // ---------------------------------------------------------------------------
81
+ // Validator
82
+ // ---------------------------------------------------------------------------
83
+ /**
84
+ * Validate a `friedmann-equation` node.
85
+ *
86
+ * Predicates (mirroring the field-equation-helpers pattern):
87
+ *
88
+ * 1. **Variant discriminator** — `variant` must be one of the
89
+ * known tags. Throws with `"variant"` keyword on unknown values.
90
+ * 2. **Classical–correction consistency** — `variant === 'classical'`
91
+ * requires `correction === null`; any other variant requires
92
+ * `correction !== null`. Throws with `"variant"` keyword.
93
+ * 3. **Free-index agreement** — trivially passes (rank-0 equation).
94
+ * 4. **Per-component dim equality** — `hubble.dim` must be `[T^-2]`
95
+ * (H²) or `[T^-1]` (H); `density.dim` must be `[M·L^-3]`. For
96
+ * `variant === 'lqc'`, `correction.dim` must be dimensionless
97
+ * (the `(1 − ρ/ρ_crit)` bounce factor).
98
+ * 5. **Symmetry agreement** — all participants carry the trivial
99
+ * `'scalar'` marker.
100
+ *
101
+ * Errors carry the keywords `"dimension"` / `"symmetry"` (from the
102
+ * field-equation-helpers) and `"variant"` (for discriminator /
103
+ * classical-consistency violations).
104
+ *
105
+ * @public
106
+ */
107
+ export function validateFriedmannEquation(node) {
108
+ // Predicate 1: variant discriminator membership.
109
+ if (!KNOWN_VARIANTS.has(node.variant)) {
110
+ throw new Error(`FriedmannEquationNode: unknown variant '${node.variant}' — ` +
111
+ `must be one of 'classical' | 'lqc' | 'brane' | 'dgp' | 'massive'.`);
112
+ }
113
+ // Predicate 2: classical/correction consistency.
114
+ if (node.variant === 'classical' && node.correction !== null) {
115
+ throw new Error(`FriedmannEquationNode: variant 'classical' must carry ` +
116
+ `correction === null (the canonical FRW form has no ` +
117
+ `variant-specific correction term).`);
118
+ }
119
+ if (node.variant !== 'classical' && node.correction === null) {
120
+ throw new Error(`FriedmannEquationNode: variant '${node.variant}' requires a ` +
121
+ `non-null correction term (only the 'classical' variant accepts ` +
122
+ `correction === null).`);
123
+ }
124
+ // Predicate 3: free-index agreement (trivially: both rank-0).
125
+ validateFreeIndexLabelMatch('FriedmannEquationNode', 'H²', [], '(8πG/3)·ρ·correction', []);
126
+ // Predicate 4a: hubble dim must be [T^-2] or [T^-1].
127
+ if (!equals(node.hubble.dim, T_INV2) && !equals(node.hubble.dim, T_INV1)) {
128
+ throw new Error(`FriedmannEquationNode: dimension mismatch — hubble.dim must be ` +
129
+ `${JSON.stringify(T_INV2)} (H²) or ${JSON.stringify(T_INV1)} (H), ` +
130
+ `got ${JSON.stringify(node.hubble.dim)}.`);
131
+ }
132
+ // Predicate 4b: density dim must be [M·L^-3] (mass-density convention).
133
+ validateComponentDimension('FriedmannEquationNode', 'density ρ.dim', node.density.dim, MASS_DENSITY, 'ρ is the cosmic mass-density; Friedmann uses [M·L^-3] (so (8πG/3)·ρ ~ [T^-2]).');
134
+ // Predicate 4c: LQC correction must be dimensionless.
135
+ if (node.variant === 'lqc' && node.correction !== null) {
136
+ validateComponentDimension('FriedmannEquationNode', "lqc correction.dim", node.correction.dim, DIMLESS, 'LQC bounce factor (1 − ρ/ρ_crit) is dimensionless.');
137
+ }
138
+ // Predicate 5: symmetry agreement — all 'scalar'.
139
+ validateTensorSymmetry('FriedmannEquationNode', 'hubble', node.hubble.symmetry, 'scalar', 'Friedmann is a cosmological scalar equation.');
140
+ validateTensorSymmetry('FriedmannEquationNode', 'density', node.density.symmetry, 'scalar', 'ρ is a cosmological scalar.');
141
+ if (node.correction !== null) {
142
+ validateTensorSymmetry('FriedmannEquationNode', 'correction', node.correction.symmetry, 'scalar', 'Friedmann correction terms are encoded as scalar factors.');
143
+ }
144
+ return {
145
+ dim: T_INV2,
146
+ freeIndices: new Map(),
147
+ variant: node.variant,
148
+ };
149
+ }
150
+ //# sourceMappingURL=friedmann-equation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"friedmann-equation.js","sourceRoot":"","sources":["../../src/dimensional/friedmann-equation.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0DG;AAIH,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AACtC,OAAO,EACL,2BAA2B,EAC3B,0BAA0B,EAC1B,sBAAsB,GACvB,MAAM,6BAA6B,CAAC;AAuBrC,MAAM,cAAc,GAAkC,IAAI,GAAG,CAAC;IAC5D,WAAW;IACX,KAAK;IACL,OAAO;IACP,KAAK;IACL,SAAS;CACV,CAAC,CAAC;AAuDH,8EAA8E;AAC9E,gBAAgB;AAChB,8EAA8E;AAE9E,4EAA4E;AAC5E,MAAM,MAAM,GAAc,EAAE,CAAC,EAAE,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;AAE5E,0DAA0D;AAC1D,MAAM,MAAM,GAAc,EAAE,CAAC,EAAE,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;AAE5E,0EAA0E;AAC1E,MAAM,YAAY,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;AAElF,wEAAwE;AACxE,MAAM,OAAO,GAAc,EAAE,CAAC,EAAE,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;AAE5E,8EAA8E;AAC9E,YAAY;AACZ,8EAA8E;AAE9E;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,MAAM,UAAU,yBAAyB,CACvC,IAA2B;IAE3B,iDAAiD;IACjD,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;QACtC,MAAM,IAAI,KAAK,CACb,2CAA2C,IAAI,CAAC,OAAO,MAAM;YAC7D,mEAAmE,CACpE,CAAC;IACJ,CAAC;IAED,iDAAiD;IACjD,IAAI,IAAI,CAAC,OAAO,KAAK,WAAW,IAAI,IAAI,CAAC,UAAU,KAAK,IAAI,EAAE,CAAC;QAC7D,MAAM,IAAI,KAAK,CACb,wDAAwD;YACxD,qDAAqD;YACrD,oCAAoC,CACrC,CAAC;IACJ,CAAC;IACD,IAAI,IAAI,CAAC,OAAO,KAAK,WAAW,IAAI,IAAI,CAAC,UAAU,KAAK,IAAI,EAAE,CAAC;QAC7D,MAAM,IAAI,KAAK,CACb,mCAAmC,IAAI,CAAC,OAAO,eAAe;YAC9D,iEAAiE;YACjE,uBAAuB,CACxB,CAAC;IACJ,CAAC;IAED,8DAA8D;IAC9D,2BAA2B,CACzB,uBAAuB,EACvB,IAAI,EACJ,EAAE,EACF,sBAAsB,EACtB,EAAE,CACH,CAAC;IAEF,qDAAqD;IACrD,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,EAAE,CAAC;QACzE,MAAM,IAAI,KAAK,CACb,iEAAiE;YACjE,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,YAAY,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,QAAQ;YACnE,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAC1C,CAAC;IACJ,CAAC;IAED,wEAAwE;IACxE,0BAA0B,CACxB,uBAAuB,EACvB,eAAe,EACf,IAAI,CAAC,OAAO,CAAC,GAAG,EAChB,YAAY,EACZ,gFAAgF,CACjF,CAAC;IAEF,sDAAsD;IACtD,IAAI,IAAI,CAAC,OAAO,KAAK,KAAK,IAAI,IAAI,CAAC,UAAU,KAAK,IAAI,EAAE,CAAC;QACvD,0BAA0B,CACxB,uBAAuB,EACvB,oBAAoB,EACpB,IAAI,CAAC,UAAU,CAAC,GAAG,EACnB,OAAO,EACP,oDAAoD,CACrD,CAAC;IACJ,CAAC;IAED,kDAAkD;IAClD,sBAAsB,CACpB,uBAAuB,EACvB,QAAQ,EACR,IAAI,CAAC,MAAM,CAAC,QAAQ,EACpB,QAAQ,EACR,8CAA8C,CAC/C,CAAC;IACF,sBAAsB,CACpB,uBAAuB,EACvB,SAAS,EACT,IAAI,CAAC,OAAO,CAAC,QAAQ,EACrB,QAAQ,EACR,6BAA6B,CAC9B,CAAC;IACF,IAAI,IAAI,CAAC,UAAU,KAAK,IAAI,EAAE,CAAC;QAC7B,sBAAsB,CACpB,uBAAuB,EACvB,YAAY,EACZ,IAAI,CAAC,UAAU,CAAC,QAAQ,EACxB,QAAQ,EACR,2DAA2D,CAC5D,CAAC;IACJ,CAAC;IAED,OAAO;QACL,GAAG,EAAE,MAAM;QACX,WAAW,EAAE,IAAI,GAAG,EAAE;QACtB,OAAO,EAAE,IAAI,CAAC,OAAO;KACtB,CAAC;AACJ,CAAC"}
@@ -0,0 +1,182 @@
1
+ /**
2
+ * Gauge-field AST primitives for Wheeler-Feynman absorber-theory
3
+ * time-symmetric electrodynamics.
4
+ *
5
+ * Wheeler-Feynman absorber theory (Wheeler & Feynman 1945
6
+ * Rev. Mod. Phys. 17:157; Wheeler & Feynman 1949
7
+ * Rev. Mod. Phys. 21:425) uses TIME-SYMMETRIC electrodynamics:
8
+ * radiation reaction arises from the half-retarded +
9
+ * half-advanced potential combination
10
+ *
11
+ * A_μ(x) = (1/2) [A_μ^ret(x) + A_μ^adv(x)].
12
+ *
13
+ * Under the absorber boundary condition (every emitted disturbance
14
+ * is fully absorbed by future matter), this symmetric form is
15
+ * physically equivalent to retarded-only Maxwell.
16
+ *
17
+ * Two primitives are provided:
18
+ *
19
+ * 1. `GaugeFieldNode` — tags an EM gauge field with its
20
+ * "arrow of time": retarded (Liénard-Wiechert advanced
21
+ * Green's function), advanced (retarded Green's function
22
+ * — past-directed), or symmetric (half-half combination).
23
+ * The consumer supplies the dimension (SI: V·s/m =
24
+ * { L:1, M:1, T:-2, I:-1 }) or works with the ratio which
25
+ * is dimensionless.
26
+ *
27
+ * 2. `TimeSymmetryPredicateNode` — asserts that the
28
+ * dimensionless time-symmetry residual
29
+ * |A_ret − A_adv| / |A_ret + A_adv| is bounded by ε.
30
+ * Identically 0 under the absorber boundary condition.
31
+ * This is a PREDICATE node (like `EinsteinFieldEquationNode`)
32
+ * — not a value-producing expression.
33
+ *
34
+ * Phase 1 demonstrator pattern: follows
35
+ * `src/dimensional/klein-gordon-equation.ts` (field-equation-helpers
36
+ * pattern, Phase 1 of TensorEquationNode generalization).
37
+ *
38
+ * @see docs/architecture/v0.7-be-x-reencoding-design-note.md §BE-50
39
+ * @see src/bridges/equations/be-50-wheeler-feynman.ts
40
+ * @module dimensional/gauge-field
41
+ */
42
+ import type { Dimension } from './types.js';
43
+ /**
44
+ * Arrow-of-time tag for an electromagnetic gauge potential.
45
+ *
46
+ * - `'retarded'` — propagator uses the retarded Green's function
47
+ * (∝ Liénard-Wiechert advanced solution); causal, future-directed.
48
+ * - `'advanced'` — propagator uses the advanced Green's function
49
+ * (∝ Liénard-Wiechert retarded solution); anti-causal, past-directed.
50
+ * - `'symmetric'` — half-retarded + half-advanced combination
51
+ * (Wheeler-Feynman's A_μ = (1/2)[A_μ^ret + A_μ^adv]).
52
+ *
53
+ * @public
54
+ */
55
+ export type ArrowOfTime = 'retarded' | 'advanced' | 'symmetric';
56
+ /**
57
+ * AST node for an electromagnetic gauge potential A_μ with an explicit
58
+ * arrow-of-time tag.
59
+ *
60
+ * The `dim` field carries the SI dimension of the gauge field. For the
61
+ * Wheeler-Feynman time-symmetry ratio, the dimension of the numerator
62
+ * and denominator cancel, yielding a dimensionless result — but the
63
+ * `dim` field is required so the validator can confirm that both the
64
+ * retarded and advanced fields in a `TimeSymmetryPredicateNode` share
65
+ * the same dimension (the ratio is well-defined only if they do).
66
+ *
67
+ * Canonical SI dim of the magnetic vector potential A_μ:
68
+ * [A] = V·s/m = kg·m/(A·s²) = { L: 1, M: 1, T: -2, I: -1 }
69
+ *
70
+ * @public
71
+ */
72
+ export interface GaugeFieldNode {
73
+ /** Discriminator: `'gauge-field'`. */
74
+ readonly kind: 'gauge-field';
75
+ /** Human-readable field name (e.g., `'A_ret'`, `'A_adv'`, `'A_mu'`). */
76
+ readonly name: string;
77
+ /**
78
+ * Arrow-of-time tag. Documents whether this field was computed using
79
+ * the retarded Green's function, the advanced Green's function, or
80
+ * the symmetric half-half combination.
81
+ */
82
+ readonly arrowOfTime: ArrowOfTime;
83
+ /**
84
+ * SI dimension of the gauge field. Both retarded and advanced fields
85
+ * must share the same dimension for the time-symmetry ratio to be
86
+ * well-defined (dimensionless by cancellation).
87
+ */
88
+ readonly dim: Dimension;
89
+ }
90
+ /**
91
+ * AST predicate node for the Wheeler-Feynman time-symmetry condition.
92
+ *
93
+ * Asserts that the dimensionless time-symmetry residual
94
+ *
95
+ * |A_ret − A_adv| / |A_ret + A_adv| ≤ ε
96
+ *
97
+ * is bounded by `epsilon`. Under the absorber boundary condition
98
+ * (Wheeler & Feynman 1945), this residual is identically 0 on
99
+ * physical states. A non-zero `epsilon` documents the allowable
100
+ * deviation (e.g., a Cramer 1986 experimental bound of 10⁻²).
101
+ *
102
+ * This is a PREDICATE node (like `EinsteinFieldEquationNode`) —
103
+ * not a value-producing expression. Numerical evaluation of the
104
+ * residual for specific field amplitudes is handled separately by
105
+ * `evaluateWFTimeSymmetry` in `src/bridges/equations/be-50-wheeler-feynman.ts`.
106
+ *
107
+ * @public
108
+ */
109
+ export interface TimeSymmetryPredicateNode {
110
+ /** Discriminator: `'time-symmetry-predicate'`. */
111
+ readonly kind: 'time-symmetry-predicate';
112
+ /**
113
+ * The retarded gauge potential A_μ^ret.
114
+ * Must have `arrowOfTime: 'retarded'`.
115
+ */
116
+ readonly retarded: GaugeFieldNode;
117
+ /**
118
+ * The advanced gauge potential A_μ^adv.
119
+ * Must have `arrowOfTime: 'advanced'`.
120
+ */
121
+ readonly advanced: GaugeFieldNode;
122
+ /**
123
+ * Bound on the time-symmetry residual: |A_ret − A_adv| / |A_ret + A_adv| ≤ epsilon.
124
+ * Must be strictly positive and finite.
125
+ * Set to a small value (e.g., 1e-3) to encode an experimental bound,
126
+ * or to `Number.EPSILON` to assert near-exact absorber-theory symmetry.
127
+ */
128
+ readonly epsilon: number;
129
+ }
130
+ /**
131
+ * Validate a `GaugeFieldNode`.
132
+ *
133
+ * Three predicates:
134
+ * 1. `name` must be a non-empty string.
135
+ * 2. `arrowOfTime` must be one of `'retarded'`, `'advanced'`, `'symmetric'`.
136
+ * 3. `dim` must be a valid `Dimension` object (all 7 SI exponents present
137
+ * as finite numbers).
138
+ *
139
+ * Throws `Error` with `'gauge-field'` in the message on any failure.
140
+ *
141
+ * @public
142
+ */
143
+ export declare function validateGaugeField(node: GaugeFieldNode): void;
144
+ /**
145
+ * Result of validating a `TimeSymmetryPredicateNode`.
146
+ *
147
+ * @public
148
+ */
149
+ export interface TimeSymmetryPredicateValidationResult {
150
+ /**
151
+ * The shared dimension of the retarded and advanced gauge fields.
152
+ * The ratio |A_ret − A_adv| / |A_ret + A_adv| is dimensionless
153
+ * because this dimension cancels.
154
+ */
155
+ readonly fieldDim: Dimension;
156
+ /** The validated epsilon bound (> 0, finite). */
157
+ readonly epsilon: number;
158
+ }
159
+ /**
160
+ * Validate a `TimeSymmetryPredicateNode`.
161
+ *
162
+ * Four predicates (following the field-equation-helpers pattern):
163
+ *
164
+ * 1. **Arrow-of-time tags** — `retarded.arrowOfTime` must be
165
+ * `'retarded'`; `advanced.arrowOfTime` must be `'advanced'`.
166
+ * 2. **Per-field validity** — both `GaugeFieldNode`s pass
167
+ * `validateGaugeField`.
168
+ * 3. **Dimension equality** — `retarded.dim` and `advanced.dim`
169
+ * must match (so the ratio is dimensionless by cancellation).
170
+ * Uses `validateComponentDimension` from field-equation-helpers.
171
+ * 4. **Epsilon bound** — `epsilon` must be strictly positive and
172
+ * finite (`epsilon > 0` and `Number.isFinite(epsilon)`).
173
+ *
174
+ * Error messages contain `'symmetry'` for arrow-of-time mismatches
175
+ * and `'dimension'` for dim-equality failures (error-keyword
176
+ * discipline shared with EinsteinFieldEquationNode and
177
+ * KleinGordonEquationNode).
178
+ *
179
+ * @public
180
+ */
181
+ export declare function validateTimeSymmetryPredicate(node: TimeSymmetryPredicateNode): TimeSymmetryPredicateValidationResult;
182
+ //# sourceMappingURL=gauge-field.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gauge-field.d.ts","sourceRoot":"","sources":["../../src/dimensional/gauge-field.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwCG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAO5C;;;;;;;;;;;GAWG;AACH,MAAM,MAAM,WAAW,GAAG,UAAU,GAAG,UAAU,GAAG,WAAW,CAAC;AAEhE;;;;;;;;;;;;;;;GAeG;AACH,MAAM,WAAW,cAAc;IAC7B,sCAAsC;IACtC,QAAQ,CAAC,IAAI,EAAE,aAAa,CAAC;IAC7B,wEAAwE;IACxE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB;;;;OAIG;IACH,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAC;IAClC;;;;OAIG;IACH,QAAQ,CAAC,GAAG,EAAE,SAAS,CAAC;CACzB;AAMD;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,WAAW,yBAAyB;IACxC,kDAAkD;IAClD,QAAQ,CAAC,IAAI,EAAE,yBAAyB,CAAC;IACzC;;;OAGG;IACH,QAAQ,CAAC,QAAQ,EAAE,cAAc,CAAC;IAClC;;;OAGG;IACH,QAAQ,CAAC,QAAQ,EAAE,cAAc,CAAC;IAClC;;;;;OAKG;IACH,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B;AAMD;;;;;;;;;;;;GAYG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,cAAc,GAAG,IAAI,CA0B7D;AAED;;;;GAIG;AACH,MAAM,WAAW,qCAAqC;IACpD;;;;OAIG;IACH,QAAQ,CAAC,QAAQ,EAAE,SAAS,CAAC;IAC7B,iDAAiD;IACjD,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,6BAA6B,CAC3C,IAAI,EAAE,yBAAyB,GAC9B,qCAAqC,CAkDvC"}
@@ -0,0 +1,134 @@
1
+ /**
2
+ * Gauge-field AST primitives for Wheeler-Feynman absorber-theory
3
+ * time-symmetric electrodynamics.
4
+ *
5
+ * Wheeler-Feynman absorber theory (Wheeler & Feynman 1945
6
+ * Rev. Mod. Phys. 17:157; Wheeler & Feynman 1949
7
+ * Rev. Mod. Phys. 21:425) uses TIME-SYMMETRIC electrodynamics:
8
+ * radiation reaction arises from the half-retarded +
9
+ * half-advanced potential combination
10
+ *
11
+ * A_μ(x) = (1/2) [A_μ^ret(x) + A_μ^adv(x)].
12
+ *
13
+ * Under the absorber boundary condition (every emitted disturbance
14
+ * is fully absorbed by future matter), this symmetric form is
15
+ * physically equivalent to retarded-only Maxwell.
16
+ *
17
+ * Two primitives are provided:
18
+ *
19
+ * 1. `GaugeFieldNode` — tags an EM gauge field with its
20
+ * "arrow of time": retarded (Liénard-Wiechert advanced
21
+ * Green's function), advanced (retarded Green's function
22
+ * — past-directed), or symmetric (half-half combination).
23
+ * The consumer supplies the dimension (SI: V·s/m =
24
+ * { L:1, M:1, T:-2, I:-1 }) or works with the ratio which
25
+ * is dimensionless.
26
+ *
27
+ * 2. `TimeSymmetryPredicateNode` — asserts that the
28
+ * dimensionless time-symmetry residual
29
+ * |A_ret − A_adv| / |A_ret + A_adv| is bounded by ε.
30
+ * Identically 0 under the absorber boundary condition.
31
+ * This is a PREDICATE node (like `EinsteinFieldEquationNode`)
32
+ * — not a value-producing expression.
33
+ *
34
+ * Phase 1 demonstrator pattern: follows
35
+ * `src/dimensional/klein-gordon-equation.ts` (field-equation-helpers
36
+ * pattern, Phase 1 of TensorEquationNode generalization).
37
+ *
38
+ * @see docs/architecture/v0.7-be-x-reencoding-design-note.md §BE-50
39
+ * @see src/bridges/equations/be-50-wheeler-feynman.ts
40
+ * @module dimensional/gauge-field
41
+ */
42
+ import { validateComponentDimension } from './field-equation-helpers.js';
43
+ // ---------------------------------------------------------------------------
44
+ // Validators
45
+ // ---------------------------------------------------------------------------
46
+ /**
47
+ * Validate a `GaugeFieldNode`.
48
+ *
49
+ * Three predicates:
50
+ * 1. `name` must be a non-empty string.
51
+ * 2. `arrowOfTime` must be one of `'retarded'`, `'advanced'`, `'symmetric'`.
52
+ * 3. `dim` must be a valid `Dimension` object (all 7 SI exponents present
53
+ * as finite numbers).
54
+ *
55
+ * Throws `Error` with `'gauge-field'` in the message on any failure.
56
+ *
57
+ * @public
58
+ */
59
+ export function validateGaugeField(node) {
60
+ if (typeof node.name !== 'string' || node.name.trim().length === 0) {
61
+ throw new Error(`GaugeFieldNode: gauge-field name must be a non-empty string ` +
62
+ `(got ${JSON.stringify(node.name)}).`);
63
+ }
64
+ const validArrows = ['retarded', 'advanced', 'symmetric'];
65
+ if (!validArrows.includes(node.arrowOfTime)) {
66
+ throw new Error(`GaugeFieldNode: gauge-field arrowOfTime must be 'retarded', 'advanced', ` +
67
+ `or 'symmetric' (got ${JSON.stringify(node.arrowOfTime)}).`);
68
+ }
69
+ const dim = node.dim;
70
+ const axes = ['L', 'M', 'T', 'I', 'Theta', 'N', 'J'];
71
+ for (const ax of axes) {
72
+ if (typeof dim[ax] !== 'number' || !Number.isFinite(dim[ax])) {
73
+ throw new Error(`GaugeFieldNode: gauge-field dim.${ax} must be a finite number ` +
74
+ `(got ${JSON.stringify(dim[ax])} for field '${node.name}').`);
75
+ }
76
+ }
77
+ }
78
+ /**
79
+ * Validate a `TimeSymmetryPredicateNode`.
80
+ *
81
+ * Four predicates (following the field-equation-helpers pattern):
82
+ *
83
+ * 1. **Arrow-of-time tags** — `retarded.arrowOfTime` must be
84
+ * `'retarded'`; `advanced.arrowOfTime` must be `'advanced'`.
85
+ * 2. **Per-field validity** — both `GaugeFieldNode`s pass
86
+ * `validateGaugeField`.
87
+ * 3. **Dimension equality** — `retarded.dim` and `advanced.dim`
88
+ * must match (so the ratio is dimensionless by cancellation).
89
+ * Uses `validateComponentDimension` from field-equation-helpers.
90
+ * 4. **Epsilon bound** — `epsilon` must be strictly positive and
91
+ * finite (`epsilon > 0` and `Number.isFinite(epsilon)`).
92
+ *
93
+ * Error messages contain `'symmetry'` for arrow-of-time mismatches
94
+ * and `'dimension'` for dim-equality failures (error-keyword
95
+ * discipline shared with EinsteinFieldEquationNode and
96
+ * KleinGordonEquationNode).
97
+ *
98
+ * @public
99
+ */
100
+ export function validateTimeSymmetryPredicate(node) {
101
+ // Predicate 1a: retarded field's arrow-of-time must be 'retarded'.
102
+ if (node.retarded.arrowOfTime !== 'retarded') {
103
+ throw new Error(`TimeSymmetryPredicateNode: symmetry mismatch — retarded field ` +
104
+ `'${node.retarded.name}' must have arrowOfTime: 'retarded' ` +
105
+ `(got '${node.retarded.arrowOfTime}'). The time-symmetry predicate ` +
106
+ `requires A_ret to carry the retarded arrow-of-time tag.`);
107
+ }
108
+ // Predicate 1b: advanced field's arrow-of-time must be 'advanced'.
109
+ if (node.advanced.arrowOfTime !== 'advanced') {
110
+ throw new Error(`TimeSymmetryPredicateNode: symmetry mismatch — advanced field ` +
111
+ `'${node.advanced.name}' must have arrowOfTime: 'advanced' ` +
112
+ `(got '${node.advanced.arrowOfTime}'). The time-symmetry predicate ` +
113
+ `requires A_adv to carry the advanced arrow-of-time tag.`);
114
+ }
115
+ // Predicate 2: both GaugeFieldNodes pass individual validation.
116
+ validateGaugeField(node.retarded);
117
+ validateGaugeField(node.advanced);
118
+ // Predicate 3: retarded.dim and advanced.dim must match.
119
+ // Uses validateComponentDimension from field-equation-helpers — same
120
+ // helper used by KleinGordonEquationNode and EinsteinFieldEquationNode.
121
+ validateComponentDimension('TimeSymmetryPredicateNode', `advanced field '${node.advanced.name}' dim`, node.advanced.dim, node.retarded.dim, `A_ret and A_adv must share the same dimension so that the ratio ` +
122
+ `|A_ret − A_adv| / |A_ret + A_adv| is dimensionless by cancellation.`);
123
+ // Predicate 4: epsilon must be strictly positive and finite.
124
+ if (!Number.isFinite(node.epsilon) || node.epsilon <= 0) {
125
+ throw new Error(`TimeSymmetryPredicateNode: epsilon must be a strictly positive finite ` +
126
+ `number (got ${node.epsilon}). epsilon bounds the time-symmetry residual ` +
127
+ `|A_ret − A_adv| / |A_ret + A_adv| ≤ epsilon.`);
128
+ }
129
+ return {
130
+ fieldDim: node.retarded.dim,
131
+ epsilon: node.epsilon,
132
+ };
133
+ }
134
+ //# sourceMappingURL=gauge-field.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gauge-field.js","sourceRoot":"","sources":["../../src/dimensional/gauge-field.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,94 @@
1
+ /**
2
+ * Killing-vector machinery (v0.6.0 Phase 1, Tasks 1.1–1.2).
3
+ *
4
+ * A Killing vector ξ^μ generates an isometry of the metric. The defining
5
+ * equation is the Killing equation
6
+ *
7
+ * ∇_μ ξ_ν + ∇_ν ξ_μ = 0
8
+ *
9
+ * (Carroll Eq. 3.174). Validation here is symbolic (rank + variance only);
10
+ * the operator-valued check happens at lowering time in
11
+ * `src/numerical/killing.ts::verifyKillingEquation`.
12
+ *
13
+ * @module dimensional/killing-validators
14
+ */
15
+ import type { Dimension } from './types.js';
16
+ import type { TensorSymbolNode } from './tensor.js';
17
+ import type { MetricTensorNode } from './metric-validators.js';
18
+ /**
19
+ * AST node for a Killing vector ξ^μ. Rank-1 upper-variance tensor with
20
+ * an attached metric reference (the metric whose isometry ξ generates).
21
+ *
22
+ * Component-dim is free (typically `[L·T⁻¹]` for spatial Killing fields,
23
+ * dimensionless for time-translation if c=1 normalization, or `[L]` for
24
+ * dimensionally-pure spatial isometries).
25
+ *
26
+ * @public
27
+ */
28
+ export interface KillingVectorNode {
29
+ readonly kind: 'killing-vector';
30
+ readonly vector: TensorSymbolNode;
31
+ readonly metric: MetricTensorNode;
32
+ }
33
+ interface KillingVectorValidationResult {
34
+ readonly dim: Dimension;
35
+ readonly freeIndices: Map<string, {
36
+ upper: number;
37
+ lower: number;
38
+ }>;
39
+ }
40
+ /**
41
+ * Validate a `killing-vector` node.
42
+ *
43
+ * Throws:
44
+ * - Error if vector is not rank-1 (Killing fields are rank-1 by definition).
45
+ * - Error if vector variance is not 'upper' (canonical Killing form is upper;
46
+ * lower form is obtained by metric-lowering at lowering-time).
47
+ */
48
+ export declare function validateKillingVector(node: KillingVectorNode): KillingVectorValidationResult;
49
+ /**
50
+ * AST node for the conserved charge Q = ξ^μ p_μ along a geodesic
51
+ * (Carroll Eq. 3.175).
52
+ *
53
+ * **Sign convention**: the node encodes the raw contraction `ξ^μ p_μ`.
54
+ * In (-,+,+,+) signature with the timelike Killing vector ξ^μ_t = (1,0,0,0),
55
+ * `p_t < 0` for forward-time motion of massive particles, so the "physical
56
+ * energy" of common usage is `E = -Q` (Carroll Eq. 8.30). The PC-1.5
57
+ * diagnostic uses magnitude `|ΔQ / Q|` to be sign-agnostic.
58
+ *
59
+ * @public
60
+ */
61
+ export interface ConservedChargeNode {
62
+ readonly kind: 'conserved-charge';
63
+ /** The Killing vector ξ^μ (rank-1, upper variance). */
64
+ readonly killing: KillingVectorNode;
65
+ /**
66
+ * The covariant momentum p_μ (rank-1, lower variance). Must have the same
67
+ * index label as `killing.vector` so that the contraction ξ^μ p_μ is
68
+ * well-formed.
69
+ */
70
+ readonly momentum: TensorSymbolNode;
71
+ }
72
+ interface ConservedChargeValidationResult {
73
+ readonly dim: Dimension;
74
+ readonly freeIndices: Map<string, {
75
+ upper: number;
76
+ lower: number;
77
+ }>;
78
+ }
79
+ /**
80
+ * Validate a `conserved-charge` node.
81
+ *
82
+ * Throws:
83
+ * - Error if momentum is not rank-1.
84
+ * - Error if the Killing-vector index label does not match the momentum
85
+ * index label (they must contract on the same label).
86
+ * - Error if momentum variance is not 'lower' (Q = ξ^μ p_μ requires the
87
+ * upper Killing field to contract with the lower momentum).
88
+ *
89
+ * Returns a scalar result (empty freeIndices) with dimension
90
+ * `dim(ξ) × dim(p)` via the `multiply` algebra helper.
91
+ */
92
+ export declare function validateConservedCharge(node: ConservedChargeNode): ConservedChargeValidationResult;
93
+ export {};
94
+ //# sourceMappingURL=killing-validators.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"killing-validators.d.ts","sourceRoot":"","sources":["../../src/dimensional/killing-validators.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAC5C,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AACpD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAG/D;;;;;;;;;GASG;AACH,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,IAAI,EAAE,gBAAgB,CAAC;IAChC,QAAQ,CAAC,MAAM,EAAE,gBAAgB,CAAC;IAClC,QAAQ,CAAC,MAAM,EAAE,gBAAgB,CAAC;CACnC;AAGD,UAAU,6BAA6B;IACrC,QAAQ,CAAC,GAAG,EAAE,SAAS,CAAC;IACxB,QAAQ,CAAC,WAAW,EAAE,GAAG,CAAC,MAAM,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACrE;AAED;;;;;;;GAOG;AACH,wBAAgB,qBAAqB,CACnC,IAAI,EAAE,iBAAiB,GACtB,6BAA6B,CAe/B;AAMD;;;;;;;;;;;GAWG;AACH,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,IAAI,EAAE,kBAAkB,CAAC;IAClC,uDAAuD;IACvD,QAAQ,CAAC,OAAO,EAAE,iBAAiB,CAAC;IACpC;;;;OAIG;IACH,QAAQ,CAAC,QAAQ,EAAE,gBAAgB,CAAC;CACrC;AAGD,UAAU,+BAA+B;IACvC,QAAQ,CAAC,GAAG,EAAE,SAAS,CAAC;IACxB,QAAQ,CAAC,WAAW,EAAE,GAAG,CAAC,MAAM,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACrE;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,uBAAuB,CACrC,IAAI,EAAE,mBAAmB,GACxB,+BAA+B,CAsBjC"}
@@ -0,0 +1,66 @@
1
+ /**
2
+ * Killing-vector machinery (v0.6.0 Phase 1, Tasks 1.1–1.2).
3
+ *
4
+ * A Killing vector ξ^μ generates an isometry of the metric. The defining
5
+ * equation is the Killing equation
6
+ *
7
+ * ∇_μ ξ_ν + ∇_ν ξ_μ = 0
8
+ *
9
+ * (Carroll Eq. 3.174). Validation here is symbolic (rank + variance only);
10
+ * the operator-valued check happens at lowering time in
11
+ * `src/numerical/killing.ts::verifyKillingEquation`.
12
+ *
13
+ * @module dimensional/killing-validators
14
+ */
15
+ import { multiply } from './algebra.js';
16
+ /**
17
+ * Validate a `killing-vector` node.
18
+ *
19
+ * Throws:
20
+ * - Error if vector is not rank-1 (Killing fields are rank-1 by definition).
21
+ * - Error if vector variance is not 'upper' (canonical Killing form is upper;
22
+ * lower form is obtained by metric-lowering at lowering-time).
23
+ */
24
+ export function validateKillingVector(node) {
25
+ if (node.vector.indices.length !== 1) {
26
+ throw new Error(`KillingVectorNode: expected rank-1 vector, got rank-${node.vector.indices.length}`);
27
+ }
28
+ const idx = node.vector.indices[0];
29
+ if (idx.variance !== 'upper') {
30
+ throw new Error(`KillingVectorNode: expected upper variance, got '${idx.variance}'`);
31
+ }
32
+ const freeIndices = new Map();
33
+ freeIndices.set(idx.label, { upper: 1, lower: 0 });
34
+ return { dim: node.vector.dim, freeIndices };
35
+ }
36
+ /**
37
+ * Validate a `conserved-charge` node.
38
+ *
39
+ * Throws:
40
+ * - Error if momentum is not rank-1.
41
+ * - Error if the Killing-vector index label does not match the momentum
42
+ * index label (they must contract on the same label).
43
+ * - Error if momentum variance is not 'lower' (Q = ξ^μ p_μ requires the
44
+ * upper Killing field to contract with the lower momentum).
45
+ *
46
+ * Returns a scalar result (empty freeIndices) with dimension
47
+ * `dim(ξ) × dim(p)` via the `multiply` algebra helper.
48
+ */
49
+ export function validateConservedCharge(node) {
50
+ if (node.momentum.indices.length !== 1) {
51
+ throw new Error(`ConservedChargeNode: expected rank-1 momentum, got rank-${node.momentum.indices.length}`);
52
+ }
53
+ const xiLabel = node.killing.vector.indices[0].label;
54
+ const pLabel = node.momentum.indices[0].label;
55
+ if (xiLabel !== pLabel) {
56
+ throw new Error(`ConservedChargeNode: index label mismatch — Killing '${xiLabel}' vs momentum '${pLabel}'`);
57
+ }
58
+ if (node.momentum.indices[0].variance !== 'lower') {
59
+ throw new Error(`ConservedChargeNode: momentum must have lower variance to contract with upper Killing field`);
60
+ }
61
+ // dim(Q) = dim(ξ) × dim(p)
62
+ const dim = multiply(node.killing.vector.dim, node.momentum.dim);
63
+ // Q = ξ^μ p_μ is a full contraction — no free indices remain (scalar).
64
+ return { dim, freeIndices: new Map() };
65
+ }
66
+ //# sourceMappingURL=killing-validators.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"killing-validators.js","sourceRoot":"","sources":["../../src/dimensional/killing-validators.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAKH,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAwBxC;;;;;;;GAOG;AACH,MAAM,UAAU,qBAAqB,CACnC,IAAuB;IAEvB,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACrC,MAAM,IAAI,KAAK,CACb,uDAAuD,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE,CACpF,CAAC;IACJ,CAAC;IACD,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IACnC,IAAI,GAAG,CAAC,QAAQ,KAAK,OAAO,EAAE,CAAC;QAC7B,MAAM,IAAI,KAAK,CACb,oDAAoD,GAAG,CAAC,QAAQ,GAAG,CACpE,CAAC;IACJ,CAAC;IACD,MAAM,WAAW,GAAG,IAAI,GAAG,EAA4C,CAAC;IACxE,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;IACnD,OAAO,EAAE,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,WAAW,EAAE,CAAC;AAC/C,CAAC;AAoCD;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,uBAAuB,CACrC,IAAyB;IAEzB,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvC,MAAM,IAAI,KAAK,CACb,2DAA2D,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,EAAE,CAC1F,CAAC;IACJ,CAAC;IACD,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;IACrD,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;IAC9C,IAAI,OAAO,KAAK,MAAM,EAAE,CAAC;QACvB,MAAM,IAAI,KAAK,CACb,wDAAwD,OAAO,kBAAkB,MAAM,GAAG,CAC3F,CAAC;IACJ,CAAC;IACD,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,QAAQ,KAAK,OAAO,EAAE,CAAC;QAClD,MAAM,IAAI,KAAK,CACb,6FAA6F,CAC9F,CAAC;IACJ,CAAC;IACD,2BAA2B;IAC3B,MAAM,GAAG,GAAG,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;IACjE,uEAAuE;IACvE,OAAO,EAAE,GAAG,EAAE,WAAW,EAAE,IAAI,GAAG,EAAE,EAAE,CAAC;AACzC,CAAC"}