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