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,57 @@
1
+ /**
2
+ * Curvature composite-AST factory (v0.6.0 Phase 3, Task 3.9).
3
+ *
4
+ * PD-6 trigger fires: Weyl is the 5th curvature primitive (after
5
+ * Riemann/Ricci/Einstein/Bianchi from v0.5.0). The 4-kind parallel
6
+ * duplication is now extracted into a shared factory.
7
+ *
8
+ * Net LOC change: −180 (per design Decision #5).
9
+ *
10
+ * P-1 fix: `CurvatureCompositeNode<K, S>` is an intersection type, not an
11
+ * interface with an unused S. Without the intersection, the per-kind
12
+ * slot type-safety would silently drop (the S parameter would be
13
+ * decorative and TypeScript would not compose it into the result).
14
+ *
15
+ * @module dimensional/curvature-composite
16
+ */
17
+ // ─────────────────────────────────────────────────────────────────────────────
18
+ // CURVATURE_KIND_REGISTRY
19
+ // ─────────────────────────────────────────────────────────────────────────────
20
+ /**
21
+ * Registry mapping each `CurvatureKind` to its shape + dimensional spec.
22
+ *
23
+ * Used by:
24
+ * - Tests: to assert all 6 kinds are registered and that Riemann + Weyl
25
+ * share the rank-4 shape (refactor-only invariant).
26
+ * - Future lowering consolidation: `CURVATURE_KIND_REGISTRY[node.kind]`
27
+ * can supply common validation data without per-kind duplication.
28
+ *
29
+ * @public
30
+ */
31
+ export const CURVATURE_KIND_REGISTRY = {
32
+ 'riemann-tensor': {
33
+ freeIndicesShape: 'rank-4-1upper-3lower',
34
+ componentDim: { L: -2, M: 0, T: 0, I: 0, Theta: 0, N: 0, J: 0 },
35
+ },
36
+ 'ricci-tensor': {
37
+ freeIndicesShape: 'rank-2-lower-lower',
38
+ componentDim: { L: -2, M: 0, T: 0, I: 0, Theta: 0, N: 0, J: 0 },
39
+ },
40
+ 'einstein-tensor': {
41
+ freeIndicesShape: 'rank-2-lower-lower',
42
+ componentDim: { L: -2, M: 0, T: 0, I: 0, Theta: 0, N: 0, J: 0 },
43
+ },
44
+ 'bianchi-residual': {
45
+ freeIndicesShape: 'rank-3-lower',
46
+ componentDim: { L: -3, M: 0, T: 0, I: 0, Theta: 0, N: 0, J: 0 },
47
+ },
48
+ 'weyl-tensor': {
49
+ freeIndicesShape: 'rank-4-1upper-3lower',
50
+ componentDim: { L: -2, M: 0, T: 0, I: 0, Theta: 0, N: 0, J: 0 },
51
+ },
52
+ 'kretschmann-scalar': {
53
+ freeIndicesShape: 'scalar',
54
+ componentDim: { L: -4, M: 0, T: 0, I: 0, Theta: 0, N: 0, J: 0 },
55
+ },
56
+ };
57
+ //# sourceMappingURL=curvature-composite.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"curvature-composite.js","sourceRoot":"","sources":["../../src/dimensional/curvature-composite.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAsDH,gFAAgF;AAChF,0BAA0B;AAC1B,gFAAgF;AAEhF;;;;;;;;;;GAUG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAA6C;IAC/E,gBAAgB,EAAE;QAChB,gBAAgB,EAAE,sBAAsB;QACxC,YAAY,EAAE,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;KAChE;IACD,cAAc,EAAE;QACd,gBAAgB,EAAE,oBAAoB;QACtC,YAAY,EAAE,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;KAChE;IACD,iBAAiB,EAAE;QACjB,gBAAgB,EAAE,oBAAoB;QACtC,YAAY,EAAE,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;KAChE;IACD,kBAAkB,EAAE;QAClB,gBAAgB,EAAE,cAAc;QAChC,YAAY,EAAE,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;KAChE;IACD,aAAa,EAAE;QACb,gBAAgB,EAAE,sBAAsB;QACxC,YAAY,EAAE,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;KAChE;IACD,oBAAoB,EAAE;QACpB,gBAAgB,EAAE,QAAQ;QAC1B,YAAY,EAAE,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;KAChE;CACF,CAAC"}
@@ -0,0 +1,90 @@
1
+ /**
2
+ * Kretschmann scalar AST node + validator (v0.6.0 Phase 3, Task 3.5).
3
+ *
4
+ * The Kretschmann scalar (also spelled "Kretschner") is the quadratic
5
+ * curvature invariant:
6
+ *
7
+ * K = R_{ρσμν} R^{ρσμν}
8
+ *
9
+ * formed by full contraction of the Riemann tensor with itself (all four
10
+ * indices raised on the second factor via the inverse metric). K is a
11
+ * genuine spacetime scalar — coordinate-independent, diff-invariant — and
12
+ * the canonical diagnostic for curvature-singularity detection: K diverges
13
+ * at genuine singularities (Schwarzschild r→0) but is finite at coordinate
14
+ * singularities (Schwarzschild r=r_s).
15
+ *
16
+ * Closed-form for Schwarzschild: K(r) = 48 G² M² / (c⁴ r⁶).
17
+ *
18
+ * Dimensional analysis:
19
+ * - Riemann component: [L⁻²] (F8/I3 convention in connection-validators.ts)
20
+ * - K = R × R: [L⁻²] × [L⁻²] = [L⁻⁴]
21
+ *
22
+ * Mirrors the WeylTensorNode pattern in weyl-validators.ts — own validator
23
+ * function; wired via case arm in validator.ts + lowering stub in lowering.ts.
24
+ *
25
+ * @module dimensional/curvature-invariants
26
+ */
27
+ import type { Dimension } from './types.js';
28
+ import type { RiemannTensorNode } from './connection-validators.js';
29
+ import type { MetricTensorNode } from './metric-validators.js';
30
+ import type { CurvatureCompositeNode } from './curvature-composite.js';
31
+ /**
32
+ * AST node for the Kretschmann scalar K = R_{ρσμν} R^{ρσμν}.
33
+ *
34
+ * `riemann`: the Riemann tensor being contracted with itself. The validator
35
+ * re-enters its own validator so structural checks (index variance,
36
+ * metric signature) fire for the embedded sub-node.
37
+ *
38
+ * `metric`: the metric tensor used to raise all four indices on the second
39
+ * copy of Riemann. Present for downstream numerical consumers
40
+ * (computeKretschmann in src/numerical/kretschmann.ts). Its free indices
41
+ * are NOT propagated by the validator (H1 — consumed internally).
42
+ *
43
+ * `componentDim`: [L⁻⁴] — Riemann [L⁻²] squared, hard-coded per F8/I3.
44
+ *
45
+ * @public
46
+ */
47
+ /**
48
+ * v0.6.0 Task 3.10d: KretschmannScalarNode expressed via CurvatureCompositeNode<K, S>.
49
+ * The runtime shape is identical — pure type-alias migration.
50
+ */
51
+ export type KretschmannScalarNode = CurvatureCompositeNode<'kretschmann-scalar', {
52
+ /** Riemann tensor R^ρ_{σμν}. Both copies of R in the contraction originate
53
+ * from this node — the validator and lowering layer each duplicate as needed. */
54
+ readonly riemann: RiemannTensorNode;
55
+ /** Metric (both-lower preferred, though the numerical layer only needs gInverse).
56
+ * Present for downstream `computeKretschmann` consumers. */
57
+ readonly metric: MetricTensorNode;
58
+ }>;
59
+ /**
60
+ * Result of validating a KretschmannScalarNode.
61
+ * @public
62
+ */
63
+ export interface KretschmannScalarValidationResult {
64
+ /** [L⁻⁴] — Kretschmann is Riemann-squared in dimension. */
65
+ readonly dim: Dimension;
66
+ /** Empty: K is a scalar (rank-0, all indices contracted). */
67
+ readonly freeIndices: Map<string, {
68
+ upper: number;
69
+ lower: number;
70
+ }>;
71
+ }
72
+ /**
73
+ * Validate a `kretschmann-scalar` node.
74
+ *
75
+ * Re-enters `validateRiemannTensor` for the embedded `riemann` sub-node
76
+ * (so its index-variance, metric-signature, and label-disjointness checks
77
+ * all fire). Discards the Riemann's free-index map — K is a full contraction
78
+ * and every index disappears. Mirrors the `validateRicciTensor` pattern in
79
+ * curvature.ts for embedded-Riemann structural validation.
80
+ *
81
+ * Throws:
82
+ * - Everything `validateRiemannTensor` throws (PartialDerivativeIndexVarianceError,
83
+ * MetricSignatureError, IndexLabelCollisionError) propagated from the
84
+ * embedded Riemann check.
85
+ *
86
+ * Returns:
87
+ * - `{ dim: [L⁻⁴], freeIndices: empty Map }` — scalar, no free indices.
88
+ */
89
+ export declare function validateKretschmannScalar(node: KretschmannScalarNode): KretschmannScalarValidationResult;
90
+ //# sourceMappingURL=curvature-invariants.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"curvature-invariants.d.ts","sourceRoot":"","sources":["../../src/dimensional/curvature-invariants.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAC5C,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAEpE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC/D,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAMvE;;;;;;;;;;;;;;;GAeG;AACH;;;GAGG;AACH,MAAM,MAAM,qBAAqB,GAAG,sBAAsB,CAAC,oBAAoB,EAAE;IAC/E;sFACkF;IAClF,QAAQ,CAAC,OAAO,EAAE,iBAAiB,CAAC;IACpC;iEAC6D;IAC7D,QAAQ,CAAC,MAAM,EAAE,gBAAgB,CAAC;CACnC,CAAC,CAAC;AAEH;;;GAGG;AACH,MAAM,WAAW,iCAAiC;IAChD,2DAA2D;IAC3D,QAAQ,CAAC,GAAG,EAAE,SAAS,CAAC;IACxB,6DAA6D;IAC7D,QAAQ,CAAC,WAAW,EAAE,GAAG,CAAC,MAAM,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACrE;AAQD;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,yBAAyB,CACvC,IAAI,EAAE,qBAAqB,GAC1B,iCAAiC,CAcnC"}
@@ -0,0 +1,64 @@
1
+ /**
2
+ * Kretschmann scalar AST node + validator (v0.6.0 Phase 3, Task 3.5).
3
+ *
4
+ * The Kretschmann scalar (also spelled "Kretschner") is the quadratic
5
+ * curvature invariant:
6
+ *
7
+ * K = R_{ρσμν} R^{ρσμν}
8
+ *
9
+ * formed by full contraction of the Riemann tensor with itself (all four
10
+ * indices raised on the second factor via the inverse metric). K is a
11
+ * genuine spacetime scalar — coordinate-independent, diff-invariant — and
12
+ * the canonical diagnostic for curvature-singularity detection: K diverges
13
+ * at genuine singularities (Schwarzschild r→0) but is finite at coordinate
14
+ * singularities (Schwarzschild r=r_s).
15
+ *
16
+ * Closed-form for Schwarzschild: K(r) = 48 G² M² / (c⁴ r⁶).
17
+ *
18
+ * Dimensional analysis:
19
+ * - Riemann component: [L⁻²] (F8/I3 convention in connection-validators.ts)
20
+ * - K = R × R: [L⁻²] × [L⁻²] = [L⁻⁴]
21
+ *
22
+ * Mirrors the WeylTensorNode pattern in weyl-validators.ts — own validator
23
+ * function; wired via case arm in validator.ts + lowering stub in lowering.ts.
24
+ *
25
+ * @module dimensional/curvature-invariants
26
+ */
27
+ import { validateRiemannTensor } from './connection-validators.js';
28
+ /**
29
+ * Dimension literal for [L⁻⁴].
30
+ * Kept module-private; callers receive it through the return value.
31
+ */
32
+ const DIM_L_NEG4 = { L: -4, M: 0, T: 0, I: 0, Theta: 0, N: 0, J: 0 };
33
+ /**
34
+ * Validate a `kretschmann-scalar` node.
35
+ *
36
+ * Re-enters `validateRiemannTensor` for the embedded `riemann` sub-node
37
+ * (so its index-variance, metric-signature, and label-disjointness checks
38
+ * all fire). Discards the Riemann's free-index map — K is a full contraction
39
+ * and every index disappears. Mirrors the `validateRicciTensor` pattern in
40
+ * curvature.ts for embedded-Riemann structural validation.
41
+ *
42
+ * Throws:
43
+ * - Everything `validateRiemannTensor` throws (PartialDerivativeIndexVarianceError,
44
+ * MetricSignatureError, IndexLabelCollisionError) propagated from the
45
+ * embedded Riemann check.
46
+ *
47
+ * Returns:
48
+ * - `{ dim: [L⁻⁴], freeIndices: empty Map }` — scalar, no free indices.
49
+ */
50
+ export function validateKretschmannScalar(node) {
51
+ // Re-validate the embedded Riemann. We pass node.riemann directly to
52
+ // validateRiemannTensor (not via a callback, since KretschmannScalarNode
53
+ // does not need to thread an infer() context for its sub-nodes — it only
54
+ // needs the structural checks to fire, and the Riemann validator is
55
+ // self-contained). Mirrors the validateRicciTensor invocation in
56
+ // curvature.ts:validateRicciTensor.
57
+ validateRiemannTensor(node.riemann);
58
+ // K is a scalar: no free indices.
59
+ return {
60
+ dim: DIM_L_NEG4,
61
+ freeIndices: new Map(),
62
+ };
63
+ }
64
+ //# sourceMappingURL=curvature-invariants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"curvature-invariants.js","sourceRoot":"","sources":["../../src/dimensional/curvature-invariants.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAIH,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AAgDnE;;;GAGG;AACH,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;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,UAAU,yBAAyB,CACvC,IAA2B;IAE3B,qEAAqE;IACrE,yEAAyE;IACzE,yEAAyE;IACzE,oEAAoE;IACpE,iEAAiE;IACjE,oCAAoC;IACpC,qBAAqB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAEpC,kCAAkC;IAClC,OAAO;QACL,GAAG,EAAE,UAAU;QACf,WAAW,EAAE,IAAI,GAAG,EAAE;KACvB,CAAC;AACJ,CAAC"}
@@ -20,14 +20,58 @@ import type { Dimension } from './types.js';
20
20
  import type { ExprNode } from './validator.js';
21
21
  import type { RiemannTensorNode } from './connection-validators.js';
22
22
  import type { MetricTensorNode } from './metric-validators.js';
23
+ import type { CurvatureCompositeNode } from './curvature-composite.js';
24
+ import type { TensorEngine } from '../numerical/tensor-engine.js';
25
+ import type { NumericalInputs, NestedArray } from '../numerical/types.js';
26
+ /**
27
+ * Shared callback shape used by every pattern-B validator (`validate
28
+ * RicciTensor`, `validateEinsteinTensor`, `validateBianchiResidual`).
29
+ *
30
+ * The callback re-enters the Riemann validator for an embedded
31
+ * `RiemannTensorNode`, returning the validated `{dim, freeIndices}`
32
+ * pair without the surrounding validator-result envelope (the caller
33
+ * is responsible for merging or discarding the free-index map per
34
+ * the contraction it is performing).
35
+ *
36
+ * Co-located here with the three consumer functions (rather than in
37
+ * `validator-registry.ts`) to avoid a `curvature.ts ↔ validator-
38
+ * registry.ts` import cycle — the registry imports the validators
39
+ * from this module, so this module must own the callback type.
40
+ *
41
+ * @internal
42
+ */
43
+ export type RiemannChildCallback = (child: RiemannTensorNode) => {
44
+ dim: Dimension;
45
+ freeIndices: Map<string, {
46
+ upper: number;
47
+ lower: number;
48
+ }>;
49
+ };
23
50
  /**
24
51
  * v0.5.0 Task 7: Ricci tensor AST node R_μν.
25
52
  *
26
53
  * Internally wraps a RiemannTensorNode and represents the contraction
27
- * R_μν = R^λ_{λμν}. The wrapped Riemann's `upperIndex.label` and
28
- * `lowerIndices[0].label` are the dummy contraction indices (the λ slot);
29
- * the output free indices are `mu` and `nu` (cloned from
30
- * `R.lowerIndices[1]` and `R.lowerIndices[2]` respectively).
54
+ *
55
+ * R_μν = R^λ_{μλν} (Carroll Eq. 3.91)
56
+ *
57
+ * Index-map on the wrapped Riemann (R^ρ_σμν per RiemannTensorNode):
58
+ *
59
+ * R^ρ σ μ ν
60
+ * │ │ │ │
61
+ * │ │ └── lowerIndices[1] = the dummy contraction slot (λ)
62
+ * │ │ contracts against upperIndex.label (ρ ↔ λ)
63
+ * │ └── lowerIndices[0] = free output index #1 (μ_out, lower)
64
+ * └── upperIndex (ρ) — contracts against lowerIndices[1]
65
+ * lowerIndices[2] = free output index #2 (ν_out, lower)
66
+ *
67
+ * After contraction: R_μν free indices = {μ_out: lower, ν_out: lower}, dim {L: -2}.
68
+ *
69
+ * NOTE (post-S1 correction, commit `76628c4`): prior to v0.5.0 Task 7 this
70
+ * docstring incorrectly said `lowerIndices[0]` was the dummy slot. Carroll
71
+ * Eq. 3.91 contracts on the SECOND lower (the μ slot in R^ρ_σμν), giving
72
+ * R_σν after the contraction. The implementation in `validateRicciTensor`
73
+ * below (lines ~87-101) is the authoritative reference. See memory entry
74
+ * `feedback_v0_5_0_ricci_contraction_bug.md` for the bug history.
31
75
  *
32
76
  * The node is its own validation arm in validator.ts and its own lowering
33
77
  * arm in numerical/lowering.ts — same pattern as RiemannTensorNode (no
@@ -35,11 +79,14 @@ import type { MetricTensorNode } from './metric-validators.js';
35
79
  *
36
80
  * @public
37
81
  */
38
- export interface RicciTensorNode {
39
- readonly kind: 'ricci-tensor';
82
+ /**
83
+ * v0.6.0 Task 3.10b: RicciTensorNode expressed via CurvatureCompositeNode<K, S>.
84
+ * The runtime shape is identical — pure type-alias migration.
85
+ */
86
+ export type RicciTensorNode = CurvatureCompositeNode<'ricci-tensor', {
40
87
  /** The Riemann tensor whose first two slots are contracted. */
41
88
  readonly riemann: RiemannTensorNode;
42
- }
89
+ }>;
43
90
  /**
44
91
  * Result of validating a RicciTensorNode.
45
92
  * @public
@@ -68,13 +115,7 @@ export interface RicciTensorValidationResult {
68
115
  * `R_μν = R^λ_{μλν}`), and the surviving σ / ν slots become the new
69
116
  * free indices of the Ricci tensor.
70
117
  */
71
- export declare function validateRicciTensor(node: RicciTensorNode, validateRiemannChild: (child: RiemannTensorNode) => {
72
- dim: Dimension;
73
- freeIndices: Map<string, {
74
- upper: number;
75
- lower: number;
76
- }>;
77
- }): RicciTensorValidationResult;
118
+ export declare function validateRicciTensor(node: RicciTensorNode, validateRiemannChild: RiemannChildCallback): RicciTensorValidationResult;
78
119
  /**
79
120
  * Build the Ricci tensor R_μν = R^λ_{μλν} as a composite ExprNode.
80
121
  *
@@ -132,15 +173,18 @@ export declare function ricci(R: RiemannTensorNode): ExprNode;
132
173
  *
133
174
  * @public
134
175
  */
135
- export interface EinsteinTensorNode {
136
- readonly kind: 'einstein-tensor';
176
+ /**
177
+ * v0.6.0 Task 3.10b: EinsteinTensorNode expressed via CurvatureCompositeNode<K, S>.
178
+ * The runtime shape is identical — pure type-alias migration.
179
+ */
180
+ export type EinsteinTensorNode = CurvatureCompositeNode<'einstein-tensor', {
137
181
  /** The Riemann tensor whose contraction yields the inner Ricci R_μν. */
138
182
  readonly riemann: RiemannTensorNode;
139
183
  /** Lower metric g_μν — supplies the `½ R g_μν` subtraction tensor. */
140
184
  readonly gLower: MetricTensorNode;
141
185
  /** Upper metric g^μν — supplies the scalar trace `R = g^μν R_μν`. */
142
186
  readonly gInverse: MetricTensorNode;
143
- }
187
+ }>;
144
188
  /**
145
189
  * Result of validating an EinsteinTensorNode.
146
190
  * @public
@@ -172,21 +216,17 @@ export interface EinsteinTensorValidationResult {
172
216
  * surviving free-index collision; MetricSignatureError /
173
217
  * PartialDerivativeIndexVarianceError from the inner Riemann).
174
218
  */
175
- export declare function validateEinsteinTensor(node: EinsteinTensorNode, validateRiemannChild: (child: RiemannTensorNode) => {
176
- dim: Dimension;
177
- freeIndices: Map<string, {
178
- upper: number;
179
- lower: number;
180
- }>;
181
- }): EinsteinTensorValidationResult;
219
+ export declare function validateEinsteinTensor(node: EinsteinTensorNode, validateRiemannChild: RiemannChildCallback): EinsteinTensorValidationResult;
182
220
  /**
183
221
  * Build the Einstein tensor G_μν = R_μν − ½ R g_μν as a composite ExprNode.
184
222
  *
185
- * **Convention.** Inherits Carroll Eq. 3.91 from `ricci(R)` — the inner
186
- * Ricci is computed by contracting upper-ρ of the wrapped Riemann against
187
- * `lowerIndices[1]` (the middle/μ slot in R^ρ_σμν). The scalar trace is
188
- * `R = g^μν R_μν` and the subtraction term is `½ R · g_μν`. The result
189
- * `G_μν` shares free indices {μ_out, ν_out} with `ricci(R)`.
223
+ * **Convention.** The Einstein tensor adds the scalar-trace subtraction
224
+ * term R g_μν` to Ricci it does NOT introduce a new contraction
225
+ * convention. The inner Ricci `R_μν` inherits Carroll Eq. 3.91 from
226
+ * `ricci(R)` (contraction on `lowerIndices[1]`, the middle/μ slot in
227
+ * R^ρ_σμν; see RicciTensorNode JSDoc for the index-map diagram). The
228
+ * scalar trace is `R = g^μν R_μν`. The result `G_μν` shares free indices
229
+ * {μ_out, ν_out} with `ricci(R)`.
190
230
  *
191
231
  * **Algebra (sanity check).**
192
232
  * - de Sitter (n=4): `R_μν = Λ g_μν`, `R = 4Λ` ⇒
@@ -246,11 +286,14 @@ export declare function einstein(R: RiemannTensorNode, g: MetricTensorNode, gInv
246
286
  *
247
287
  * @public
248
288
  */
249
- export interface BianchiResidualNode {
250
- readonly kind: 'bianchi-residual';
289
+ /**
290
+ * v0.6.0 Task 3.10c: BianchiResidualNode expressed via CurvatureCompositeNode<K, S>.
291
+ * The runtime shape is identical — pure type-alias migration.
292
+ */
293
+ export type BianchiResidualNode = CurvatureCompositeNode<'bianchi-residual', {
251
294
  /** The Riemann tensor whose cyclic-derivative identity is checked. */
252
295
  readonly riemann: RiemannTensorNode;
253
- }
296
+ }>;
254
297
  /**
255
298
  * Result of validating a BianchiResidualNode.
256
299
  * @public
@@ -279,21 +322,19 @@ export interface BianchiResidualValidationResult {
279
322
  * - IndexLabelCollisionError if the synthesised `lambda` / `sigma_out`
280
323
  * labels collide with any wrapped-Riemann label.
281
324
  */
282
- export declare function validateBianchiResidual(node: BianchiResidualNode, validateRiemannChild: (child: RiemannTensorNode) => {
283
- dim: Dimension;
284
- freeIndices: Map<string, {
285
- upper: number;
286
- lower: number;
287
- }>;
288
- }): BianchiResidualValidationResult;
325
+ export declare function validateBianchiResidual(node: BianchiResidualNode, validateRiemannChild: RiemannChildCallback): BianchiResidualValidationResult;
289
326
  /**
290
327
  * Imported lazily inside `bianchiResidual()` to avoid pulling the numerical
291
328
  * lowering layer into the dimensional module's import graph at module load.
292
329
  * Mirrors the runtime contract — `bianchiResidual()` returns closures that
293
330
  * call `evaluateNumerical`, but the function itself is pure-symbolic until
294
331
  * the closures are invoked.
332
+ *
333
+ * v0.5.1 TS-1: `engine`/`inputs`/return are now strictly typed via
334
+ * `import type` (no runtime import into curvature.ts), so the public API
335
+ * surface no longer leaks `any` through the bianchi return shape.
295
336
  */
296
- type LazyEvaluator = (engine: any, inputs: any) => Promise<any>;
337
+ type LazyEvaluator = (engine: TensorEngine, inputs: NumericalInputs) => Promise<NestedArray>;
297
338
  /**
298
339
  * Build the second-Bianchi-identity residual `B_{λμνρσ}` as a composite
299
340
  * object with both an AST representation and evaluator closures.
@@ -330,7 +371,7 @@ type LazyEvaluator = (engine: any, inputs: any) => Promise<any>;
330
371
  export declare function bianchiResidual(R: RiemannTensorNode): {
331
372
  residual: ExprNode;
332
373
  evaluate: LazyEvaluator;
333
- evaluateMax: (engine: any, inputs: any) => Promise<number>;
374
+ evaluateMax: (engine: TensorEngine, inputs: NumericalInputs) => Promise<number>;
334
375
  };
335
376
  export {};
336
377
  //# sourceMappingURL=curvature.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"curvature.d.ts","sourceRoot":"","sources":["../../src/dimensional/curvature.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"curvature.d.ts","sourceRoot":"","sources":["../../src/dimensional/curvature.ts"],"names":[],"mappings":"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"}
@@ -139,11 +139,13 @@ export function validateEinsteinTensor(node, validateRiemannChild) {
139
139
  /**
140
140
  * Build the Einstein tensor G_μν = R_μν − ½ R g_μν as a composite ExprNode.
141
141
  *
142
- * **Convention.** Inherits Carroll Eq. 3.91 from `ricci(R)` — the inner
143
- * Ricci is computed by contracting upper-ρ of the wrapped Riemann against
144
- * `lowerIndices[1]` (the middle/μ slot in R^ρ_σμν). The scalar trace is
145
- * `R = g^μν R_μν` and the subtraction term is `½ R · g_μν`. The result
146
- * `G_μν` shares free indices {μ_out, ν_out} with `ricci(R)`.
142
+ * **Convention.** The Einstein tensor adds the scalar-trace subtraction
143
+ * term R g_μν` to Ricci it does NOT introduce a new contraction
144
+ * convention. The inner Ricci `R_μν` inherits Carroll Eq. 3.91 from
145
+ * `ricci(R)` (contraction on `lowerIndices[1]`, the middle/μ slot in
146
+ * R^ρ_σμν; see RicciTensorNode JSDoc for the index-map diagram). The
147
+ * scalar trace is `R = g^μν R_μν`. The result `G_μν` shares free indices
148
+ * {μ_out, ν_out} with `ricci(R)`.
147
149
  *
148
150
  * **Algebra (sanity check).**
149
151
  * - de Sitter (n=4): `R_μν = Λ g_μν`, `R = 4Λ` ⇒
@@ -258,18 +260,21 @@ export function validateBianchiResidual(node, validateRiemannChild) {
258
260
  export function bianchiResidual(R) {
259
261
  const residual = { kind: 'bianchi-residual', riemann: R };
260
262
  const evaluate = async (engine, inputs) => {
261
- // Dynamic import to keep the dimensional module's load-time graph clean.
263
+ // Dynamic import to keep the dimensional module's load-time graph clean
264
+ // (a static import here would create a dimensional→numerical→dimensional
265
+ // runtime cycle: numerical/index.ts imports validator.ts). The TS-1
266
+ // type-tightening above uses `import type` only, so this dynamic import
267
+ // does not weaken the static type story.
262
268
  const mod = await import('../numerical/index.js');
263
269
  const result = await mod.evaluateNumerical(residual, inputs, { engine });
264
270
  return result.value;
265
271
  };
266
- const evaluateMax = async (
267
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
268
- engine,
269
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
270
- inputs) => {
272
+ const evaluateMax = async (engine, inputs) => {
271
273
  const value = await evaluate(engine, inputs);
272
274
  // Walk the 5-deep nested array (or any depth) and return max |x|.
275
+ // v0.5.1 TS-3: signature accepts `NestedArray` (the public type from
276
+ // evaluate()) plus a typed-array escape hatch; unexpected shapes throw
277
+ // rather than being silently ignored.
273
278
  let max = 0;
274
279
  const walk = (v) => {
275
280
  if (typeof v === 'number') {
@@ -281,7 +286,10 @@ export function bianchiResidual(R) {
281
286
  if (Array.isArray(v)) {
282
287
  for (const c of v)
283
288
  walk(c);
289
+ return;
284
290
  }
291
+ throw new Error(`bianchiResidual.evaluateMax: unexpected value shape — expected `
292
+ + `number | NestedArray, got ${typeof v}`);
285
293
  };
286
294
  walk(value);
287
295
  return max;
@@ -1 +1 @@
1
- {"version":3,"file":"curvature.js","sourceRoot":"","sources":["../../src/dimensional/curvature.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"curvature.js","sourceRoot":"","sources":["../../src/dimensional/curvature.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAOH,OAAO,EAAE,wBAAwB,EAAE,MAAM,aAAa,CAAC;AA0FvD;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,UAAU,mBAAmB,CACjC,IAAqB,EACrB,oBAA0C;IAE1C,yEAAyE;IACzE,iEAAiE;IACjE,0EAA0E;IAC1E,wEAAwE;IACxE,yEAAyE;IACzE,iCAAiC;IACjC,MAAM,OAAO,GAAG,oBAAoB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAEnD,qEAAqE;IACrE,gEAAgE;IAChE,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC;IAExB,oEAAoE;IACpE,mEAAmE;IACnE,yDAAyD;IACzD,MAAM,QAAQ,GAAmB,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;IAC9D,MAAM,QAAQ,GAAmB,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;IAC9D,IAAI,QAAQ,CAAC,KAAK,KAAK,QAAQ,CAAC,KAAK,EAAE,CAAC;QACtC,MAAM,IAAI,wBAAwB,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,cAAc,CAAC,CAAC,CAAC;IAC1E,CAAC;IAED,MAAM,WAAW,GAAG,IAAI,GAAG,EAA4C,CAAC;IACxE,WAAW,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;IACxD,WAAW,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;IAExD,OAAO,EAAE,GAAG,EAAE,WAAW,EAAE,CAAC;AAC9B,CAAC;AAED,gFAAgF;AAChF,oCAAoC;AACpC,gFAAgF;AAEhF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AACH,MAAM,UAAU,KAAK,CAAC,CAAoB;IACxC,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC;AAC9C,CAAC;AA8CD;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,UAAU,sBAAsB,CACpC,IAAwB,EACxB,oBAA0C;IAE1C,yEAAyE;IACzE,wEAAwE;IACxE,MAAM,SAAS,GAAoB,EAAE,IAAI,EAAE,cAAc,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC;IACnF,MAAM,CAAC,GAAG,mBAAmB,CAAC,SAAS,EAAE,oBAAoB,CAAC,CAAC;IAE/D,oEAAoE;IACpE,yEAAyE;IACzE,yEAAyE;IACzE,wEAAwE;IACxE,OAAO,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,EAAE,WAAW,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;AACpD,CAAC;AAED,gFAAgF;AAChF,uCAAuC;AACvC,gFAAgF;AAEhF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,MAAM,UAAU,QAAQ,CACtB,CAAoB,EACpB,CAAmB,EACnB,QAA0B;IAE1B,OAAO,EAAE,IAAI,EAAE,iBAAiB,EAAE,OAAO,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC;AACtE,CAAC;AA8DD;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,UAAU,uBAAuB,CACrC,IAAyB,EACzB,oBAA0C;IAE1C,uEAAuE;IACvE,oBAAoB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAEnC,yEAAyE;IACzE,0EAA0E;IAC1E,4DAA4D;IAC5D,gEAAgE;IAChE,uEAAuE;IACvE,mDAAmD;IACnD,wEAAwE;IACxE,iDAAiD;IACjD,EAAE;IACF,0EAA0E;IAC1E,gDAAgD;IAChD,MAAM,aAAa,GAAG,IAAI,GAAG,CAAS;QACpC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,KAAK;QAC7B,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,KAAK;QAClC,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,KAAK;QAClC,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,KAAK;KACnC,CAAC,CAAC;IACH,MAAM,WAAW,GAAG,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAC;IAC9C,KAAK,MAAM,CAAC,IAAI,WAAW,EAAE,CAAC;QAC5B,IAAI,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;YACzB,MAAM,IAAI,wBAAwB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,kBAAkB,CAAC,CAAC,CAAC;QACjE,CAAC;IACH,CAAC;IAED,sEAAsE;IACtE,6CAA6C;IAC7C,MAAM,GAAG,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;IAEzE,6BAA6B;IAC7B,MAAM,WAAW,GAAG,IAAI,GAAG,EAA4C,CAAC;IACxE,WAAW,CAAC,GAAG,CAAC,QAAQ,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;IAClD,WAAW,CAAC,GAAG,CAAC,aAAa,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;IACvD,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;IAC5E,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;IAC5E,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;IAE5E,OAAO,EAAE,GAAG,EAAE,WAAW,EAAE,CAAC;AAC9B,CAAC;AAsBD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AACH,MAAM,UAAU,eAAe,CAAC,CAAoB;IAKlD,MAAM,QAAQ,GAAwB,EAAE,IAAI,EAAE,kBAAkB,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC;IAE/E,MAAM,QAAQ,GAAkB,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE;QACvD,wEAAwE;QACxE,yEAAyE;QACzE,oEAAoE;QACpE,wEAAwE;QACxE,yCAAyC;QACzC,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,uBAAuB,CAAC,CAAC;QAClD,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,iBAAiB,CAAC,QAAoB,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC;QACrF,OAAO,MAAM,CAAC,KAAK,CAAC;IACtB,CAAC,CAAC;IAEF,MAAM,WAAW,GAAG,KAAK,EACvB,MAAoB,EACpB,MAAuB,EACN,EAAE;QACnB,MAAM,KAAK,GAAG,MAAM,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAC7C,kEAAkE;QAClE,qEAAqE;QACrE,uEAAuE;QACvE,sCAAsC;QACtC,IAAI,GAAG,GAAG,CAAC,CAAC;QACZ,MAAM,IAAI,GAAG,CAAC,CAAkC,EAAQ,EAAE;YACxD,IAAI,OAAO,CAAC,KAAK,QAAQ,EAAE,CAAC;gBAC1B,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;gBACtB,IAAI,CAAC,GAAG,GAAG;oBAAE,GAAG,GAAG,CAAC,CAAC;gBACrB,OAAO;YACT,CAAC;YACD,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;gBACrB,KAAK,MAAM,CAAC,IAAI,CAAC;oBAAE,IAAI,CAAC,CAAC,CAAC,CAAC;gBAC3B,OAAO;YACT,CAAC;YACD,MAAM,IAAI,KAAK,CACb,iEAAiE;kBAC/D,6BAA6B,OAAO,CAAC,EAAE,CAC1C,CAAC;QACJ,CAAC,CAAC;QACF,IAAI,CAAC,KAAK,CAAC,CAAC;QACZ,OAAO,GAAG,CAAC;IACb,CAAC,CAAC;IAEF,OAAO,EAAE,QAAQ,EAAE,QAAoB,EAAE,QAAQ,EAAE,WAAW,EAAE,CAAC;AACnE,CAAC"}