universal-physics-tensor 0.5.1 → 0.7.1
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 +15 -28
- 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/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/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/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 +12 -5
- package/dist/dimensional/connection-validators.d.ts.map +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 +46 -30
- package/dist/dimensional/curvature.d.ts.map +1 -1
- 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 +37 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +41 -0
- package/dist/index.js.map +1 -1
- package/dist/numerical/be37-covariant-eikonal.d.ts +19 -0
- package/dist/numerical/be37-covariant-eikonal.d.ts.map +1 -1
- package/dist/numerical/be37-covariant-eikonal.js +29 -9
- 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 +49 -57
- package/dist/numerical/curvature-lowering-helpers.d.ts.map +1 -1
- package/dist/numerical/curvature-lowering-helpers.js +109 -4
- 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/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 +4 -2
- package/dist/numerical/gl4-integrator.d.ts.map +1 -1
- package/dist/numerical/gl4-integrator.js +24 -8
- 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 +219 -415
- package/dist/numerical/lowering.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/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 +17 -9
- package/dist/numerical/pderiv.d.ts.map +1 -1
- package/dist/numerical/pderiv.js +6 -3
- package/dist/numerical/pderiv.js.map +1 -1
- package/dist/numerical/perihelion-finder.d.ts +30 -0
- package/dist/numerical/perihelion-finder.d.ts.map +1 -1
- package/dist/numerical/perihelion-finder.js +30 -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,182 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Gauge-field AST primitives for Wheeler-Feynman absorber-theory
|
|
3
|
+
* time-symmetric electrodynamics.
|
|
4
|
+
*
|
|
5
|
+
* Wheeler-Feynman absorber theory (Wheeler & Feynman 1945
|
|
6
|
+
* Rev. Mod. Phys. 17:157; Wheeler & Feynman 1949
|
|
7
|
+
* Rev. Mod. Phys. 21:425) uses TIME-SYMMETRIC electrodynamics:
|
|
8
|
+
* radiation reaction arises from the half-retarded +
|
|
9
|
+
* half-advanced potential combination
|
|
10
|
+
*
|
|
11
|
+
* A_μ(x) = (1/2) [A_μ^ret(x) + A_μ^adv(x)].
|
|
12
|
+
*
|
|
13
|
+
* Under the absorber boundary condition (every emitted disturbance
|
|
14
|
+
* is fully absorbed by future matter), this symmetric form is
|
|
15
|
+
* physically equivalent to retarded-only Maxwell.
|
|
16
|
+
*
|
|
17
|
+
* Two primitives are provided:
|
|
18
|
+
*
|
|
19
|
+
* 1. `GaugeFieldNode` — tags an EM gauge field with its
|
|
20
|
+
* "arrow of time": retarded (Liénard-Wiechert advanced
|
|
21
|
+
* Green's function), advanced (retarded Green's function
|
|
22
|
+
* — past-directed), or symmetric (half-half combination).
|
|
23
|
+
* The consumer supplies the dimension (SI: V·s/m =
|
|
24
|
+
* { L:1, M:1, T:-2, I:-1 }) or works with the ratio which
|
|
25
|
+
* is dimensionless.
|
|
26
|
+
*
|
|
27
|
+
* 2. `TimeSymmetryPredicateNode` — asserts that the
|
|
28
|
+
* dimensionless time-symmetry residual
|
|
29
|
+
* |A_ret − A_adv| / |A_ret + A_adv| is bounded by ε.
|
|
30
|
+
* Identically 0 under the absorber boundary condition.
|
|
31
|
+
* This is a PREDICATE node (like `EinsteinFieldEquationNode`)
|
|
32
|
+
* — not a value-producing expression.
|
|
33
|
+
*
|
|
34
|
+
* Phase 1 demonstrator pattern: follows
|
|
35
|
+
* `src/dimensional/klein-gordon-equation.ts` (field-equation-helpers
|
|
36
|
+
* pattern, Phase 1 of TensorEquationNode generalization).
|
|
37
|
+
*
|
|
38
|
+
* @see docs/architecture/v0.7-be-x-reencoding-design-note.md §BE-50
|
|
39
|
+
* @see src/bridges/equations/be-50-wheeler-feynman.ts
|
|
40
|
+
* @module dimensional/gauge-field
|
|
41
|
+
*/
|
|
42
|
+
import type { Dimension } from './types.js';
|
|
43
|
+
/**
|
|
44
|
+
* Arrow-of-time tag for an electromagnetic gauge potential.
|
|
45
|
+
*
|
|
46
|
+
* - `'retarded'` — propagator uses the retarded Green's function
|
|
47
|
+
* (∝ Liénard-Wiechert advanced solution); causal, future-directed.
|
|
48
|
+
* - `'advanced'` — propagator uses the advanced Green's function
|
|
49
|
+
* (∝ Liénard-Wiechert retarded solution); anti-causal, past-directed.
|
|
50
|
+
* - `'symmetric'` — half-retarded + half-advanced combination
|
|
51
|
+
* (Wheeler-Feynman's A_μ = (1/2)[A_μ^ret + A_μ^adv]).
|
|
52
|
+
*
|
|
53
|
+
* @public
|
|
54
|
+
*/
|
|
55
|
+
export type ArrowOfTime = 'retarded' | 'advanced' | 'symmetric';
|
|
56
|
+
/**
|
|
57
|
+
* AST node for an electromagnetic gauge potential A_μ with an explicit
|
|
58
|
+
* arrow-of-time tag.
|
|
59
|
+
*
|
|
60
|
+
* The `dim` field carries the SI dimension of the gauge field. For the
|
|
61
|
+
* Wheeler-Feynman time-symmetry ratio, the dimension of the numerator
|
|
62
|
+
* and denominator cancel, yielding a dimensionless result — but the
|
|
63
|
+
* `dim` field is required so the validator can confirm that both the
|
|
64
|
+
* retarded and advanced fields in a `TimeSymmetryPredicateNode` share
|
|
65
|
+
* the same dimension (the ratio is well-defined only if they do).
|
|
66
|
+
*
|
|
67
|
+
* Canonical SI dim of the magnetic vector potential A_μ:
|
|
68
|
+
* [A] = V·s/m = kg·m/(A·s²) = { L: 1, M: 1, T: -2, I: -1 }
|
|
69
|
+
*
|
|
70
|
+
* @public
|
|
71
|
+
*/
|
|
72
|
+
export interface GaugeFieldNode {
|
|
73
|
+
/** Discriminator: `'gauge-field'`. */
|
|
74
|
+
readonly kind: 'gauge-field';
|
|
75
|
+
/** Human-readable field name (e.g., `'A_ret'`, `'A_adv'`, `'A_mu'`). */
|
|
76
|
+
readonly name: string;
|
|
77
|
+
/**
|
|
78
|
+
* Arrow-of-time tag. Documents whether this field was computed using
|
|
79
|
+
* the retarded Green's function, the advanced Green's function, or
|
|
80
|
+
* the symmetric half-half combination.
|
|
81
|
+
*/
|
|
82
|
+
readonly arrowOfTime: ArrowOfTime;
|
|
83
|
+
/**
|
|
84
|
+
* SI dimension of the gauge field. Both retarded and advanced fields
|
|
85
|
+
* must share the same dimension for the time-symmetry ratio to be
|
|
86
|
+
* well-defined (dimensionless by cancellation).
|
|
87
|
+
*/
|
|
88
|
+
readonly dim: Dimension;
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* AST predicate node for the Wheeler-Feynman time-symmetry condition.
|
|
92
|
+
*
|
|
93
|
+
* Asserts that the dimensionless time-symmetry residual
|
|
94
|
+
*
|
|
95
|
+
* |A_ret − A_adv| / |A_ret + A_adv| ≤ ε
|
|
96
|
+
*
|
|
97
|
+
* is bounded by `epsilon`. Under the absorber boundary condition
|
|
98
|
+
* (Wheeler & Feynman 1945), this residual is identically 0 on
|
|
99
|
+
* physical states. A non-zero `epsilon` documents the allowable
|
|
100
|
+
* deviation (e.g., a Cramer 1986 experimental bound of 10⁻²).
|
|
101
|
+
*
|
|
102
|
+
* This is a PREDICATE node (like `EinsteinFieldEquationNode`) —
|
|
103
|
+
* not a value-producing expression. Numerical evaluation of the
|
|
104
|
+
* residual for specific field amplitudes is handled separately by
|
|
105
|
+
* `evaluateWFTimeSymmetry` in `src/bridges/equations/be-50-wheeler-feynman.ts`.
|
|
106
|
+
*
|
|
107
|
+
* @public
|
|
108
|
+
*/
|
|
109
|
+
export interface TimeSymmetryPredicateNode {
|
|
110
|
+
/** Discriminator: `'time-symmetry-predicate'`. */
|
|
111
|
+
readonly kind: 'time-symmetry-predicate';
|
|
112
|
+
/**
|
|
113
|
+
* The retarded gauge potential A_μ^ret.
|
|
114
|
+
* Must have `arrowOfTime: 'retarded'`.
|
|
115
|
+
*/
|
|
116
|
+
readonly retarded: GaugeFieldNode;
|
|
117
|
+
/**
|
|
118
|
+
* The advanced gauge potential A_μ^adv.
|
|
119
|
+
* Must have `arrowOfTime: 'advanced'`.
|
|
120
|
+
*/
|
|
121
|
+
readonly advanced: GaugeFieldNode;
|
|
122
|
+
/**
|
|
123
|
+
* Bound on the time-symmetry residual: |A_ret − A_adv| / |A_ret + A_adv| ≤ epsilon.
|
|
124
|
+
* Must be strictly positive and finite.
|
|
125
|
+
* Set to a small value (e.g., 1e-3) to encode an experimental bound,
|
|
126
|
+
* or to `Number.EPSILON` to assert near-exact absorber-theory symmetry.
|
|
127
|
+
*/
|
|
128
|
+
readonly epsilon: number;
|
|
129
|
+
}
|
|
130
|
+
/**
|
|
131
|
+
* Validate a `GaugeFieldNode`.
|
|
132
|
+
*
|
|
133
|
+
* Three predicates:
|
|
134
|
+
* 1. `name` must be a non-empty string.
|
|
135
|
+
* 2. `arrowOfTime` must be one of `'retarded'`, `'advanced'`, `'symmetric'`.
|
|
136
|
+
* 3. `dim` must be a valid `Dimension` object (all 7 SI exponents present
|
|
137
|
+
* as finite numbers).
|
|
138
|
+
*
|
|
139
|
+
* Throws `Error` with `'gauge-field'` in the message on any failure.
|
|
140
|
+
*
|
|
141
|
+
* @public
|
|
142
|
+
*/
|
|
143
|
+
export declare function validateGaugeField(node: GaugeFieldNode): void;
|
|
144
|
+
/**
|
|
145
|
+
* Result of validating a `TimeSymmetryPredicateNode`.
|
|
146
|
+
*
|
|
147
|
+
* @public
|
|
148
|
+
*/
|
|
149
|
+
export interface TimeSymmetryPredicateValidationResult {
|
|
150
|
+
/**
|
|
151
|
+
* The shared dimension of the retarded and advanced gauge fields.
|
|
152
|
+
* The ratio |A_ret − A_adv| / |A_ret + A_adv| is dimensionless
|
|
153
|
+
* because this dimension cancels.
|
|
154
|
+
*/
|
|
155
|
+
readonly fieldDim: Dimension;
|
|
156
|
+
/** The validated epsilon bound (> 0, finite). */
|
|
157
|
+
readonly epsilon: number;
|
|
158
|
+
}
|
|
159
|
+
/**
|
|
160
|
+
* Validate a `TimeSymmetryPredicateNode`.
|
|
161
|
+
*
|
|
162
|
+
* Four predicates (following the field-equation-helpers pattern):
|
|
163
|
+
*
|
|
164
|
+
* 1. **Arrow-of-time tags** — `retarded.arrowOfTime` must be
|
|
165
|
+
* `'retarded'`; `advanced.arrowOfTime` must be `'advanced'`.
|
|
166
|
+
* 2. **Per-field validity** — both `GaugeFieldNode`s pass
|
|
167
|
+
* `validateGaugeField`.
|
|
168
|
+
* 3. **Dimension equality** — `retarded.dim` and `advanced.dim`
|
|
169
|
+
* must match (so the ratio is dimensionless by cancellation).
|
|
170
|
+
* Uses `validateComponentDimension` from field-equation-helpers.
|
|
171
|
+
* 4. **Epsilon bound** — `epsilon` must be strictly positive and
|
|
172
|
+
* finite (`epsilon > 0` and `Number.isFinite(epsilon)`).
|
|
173
|
+
*
|
|
174
|
+
* Error messages contain `'symmetry'` for arrow-of-time mismatches
|
|
175
|
+
* and `'dimension'` for dim-equality failures (error-keyword
|
|
176
|
+
* discipline shared with EinsteinFieldEquationNode and
|
|
177
|
+
* KleinGordonEquationNode).
|
|
178
|
+
*
|
|
179
|
+
* @public
|
|
180
|
+
*/
|
|
181
|
+
export declare function validateTimeSymmetryPredicate(node: TimeSymmetryPredicateNode): TimeSymmetryPredicateValidationResult;
|
|
182
|
+
//# sourceMappingURL=gauge-field.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gauge-field.d.ts","sourceRoot":"","sources":["../../src/dimensional/gauge-field.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwCG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAO5C;;;;;;;;;;;GAWG;AACH,MAAM,MAAM,WAAW,GAAG,UAAU,GAAG,UAAU,GAAG,WAAW,CAAC;AAEhE;;;;;;;;;;;;;;;GAeG;AACH,MAAM,WAAW,cAAc;IAC7B,sCAAsC;IACtC,QAAQ,CAAC,IAAI,EAAE,aAAa,CAAC;IAC7B,wEAAwE;IACxE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB;;;;OAIG;IACH,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAC;IAClC;;;;OAIG;IACH,QAAQ,CAAC,GAAG,EAAE,SAAS,CAAC;CACzB;AAMD;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,WAAW,yBAAyB;IACxC,kDAAkD;IAClD,QAAQ,CAAC,IAAI,EAAE,yBAAyB,CAAC;IACzC;;;OAGG;IACH,QAAQ,CAAC,QAAQ,EAAE,cAAc,CAAC;IAClC;;;OAGG;IACH,QAAQ,CAAC,QAAQ,EAAE,cAAc,CAAC;IAClC;;;;;OAKG;IACH,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B;AAMD;;;;;;;;;;;;GAYG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,cAAc,GAAG,IAAI,CA0B7D;AAED;;;;GAIG;AACH,MAAM,WAAW,qCAAqC;IACpD;;;;OAIG;IACH,QAAQ,CAAC,QAAQ,EAAE,SAAS,CAAC;IAC7B,iDAAiD;IACjD,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,6BAA6B,CAC3C,IAAI,EAAE,yBAAyB,GAC9B,qCAAqC,CAkDvC"}
|
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Gauge-field AST primitives for Wheeler-Feynman absorber-theory
|
|
3
|
+
* time-symmetric electrodynamics.
|
|
4
|
+
*
|
|
5
|
+
* Wheeler-Feynman absorber theory (Wheeler & Feynman 1945
|
|
6
|
+
* Rev. Mod. Phys. 17:157; Wheeler & Feynman 1949
|
|
7
|
+
* Rev. Mod. Phys. 21:425) uses TIME-SYMMETRIC electrodynamics:
|
|
8
|
+
* radiation reaction arises from the half-retarded +
|
|
9
|
+
* half-advanced potential combination
|
|
10
|
+
*
|
|
11
|
+
* A_μ(x) = (1/2) [A_μ^ret(x) + A_μ^adv(x)].
|
|
12
|
+
*
|
|
13
|
+
* Under the absorber boundary condition (every emitted disturbance
|
|
14
|
+
* is fully absorbed by future matter), this symmetric form is
|
|
15
|
+
* physically equivalent to retarded-only Maxwell.
|
|
16
|
+
*
|
|
17
|
+
* Two primitives are provided:
|
|
18
|
+
*
|
|
19
|
+
* 1. `GaugeFieldNode` — tags an EM gauge field with its
|
|
20
|
+
* "arrow of time": retarded (Liénard-Wiechert advanced
|
|
21
|
+
* Green's function), advanced (retarded Green's function
|
|
22
|
+
* — past-directed), or symmetric (half-half combination).
|
|
23
|
+
* The consumer supplies the dimension (SI: V·s/m =
|
|
24
|
+
* { L:1, M:1, T:-2, I:-1 }) or works with the ratio which
|
|
25
|
+
* is dimensionless.
|
|
26
|
+
*
|
|
27
|
+
* 2. `TimeSymmetryPredicateNode` — asserts that the
|
|
28
|
+
* dimensionless time-symmetry residual
|
|
29
|
+
* |A_ret − A_adv| / |A_ret + A_adv| is bounded by ε.
|
|
30
|
+
* Identically 0 under the absorber boundary condition.
|
|
31
|
+
* This is a PREDICATE node (like `EinsteinFieldEquationNode`)
|
|
32
|
+
* — not a value-producing expression.
|
|
33
|
+
*
|
|
34
|
+
* Phase 1 demonstrator pattern: follows
|
|
35
|
+
* `src/dimensional/klein-gordon-equation.ts` (field-equation-helpers
|
|
36
|
+
* pattern, Phase 1 of TensorEquationNode generalization).
|
|
37
|
+
*
|
|
38
|
+
* @see docs/architecture/v0.7-be-x-reencoding-design-note.md §BE-50
|
|
39
|
+
* @see src/bridges/equations/be-50-wheeler-feynman.ts
|
|
40
|
+
* @module dimensional/gauge-field
|
|
41
|
+
*/
|
|
42
|
+
import { validateComponentDimension } from './field-equation-helpers.js';
|
|
43
|
+
// ---------------------------------------------------------------------------
|
|
44
|
+
// Validators
|
|
45
|
+
// ---------------------------------------------------------------------------
|
|
46
|
+
/**
|
|
47
|
+
* Validate a `GaugeFieldNode`.
|
|
48
|
+
*
|
|
49
|
+
* Three predicates:
|
|
50
|
+
* 1. `name` must be a non-empty string.
|
|
51
|
+
* 2. `arrowOfTime` must be one of `'retarded'`, `'advanced'`, `'symmetric'`.
|
|
52
|
+
* 3. `dim` must be a valid `Dimension` object (all 7 SI exponents present
|
|
53
|
+
* as finite numbers).
|
|
54
|
+
*
|
|
55
|
+
* Throws `Error` with `'gauge-field'` in the message on any failure.
|
|
56
|
+
*
|
|
57
|
+
* @public
|
|
58
|
+
*/
|
|
59
|
+
export function validateGaugeField(node) {
|
|
60
|
+
if (typeof node.name !== 'string' || node.name.trim().length === 0) {
|
|
61
|
+
throw new Error(`GaugeFieldNode: gauge-field name must be a non-empty string ` +
|
|
62
|
+
`(got ${JSON.stringify(node.name)}).`);
|
|
63
|
+
}
|
|
64
|
+
const validArrows = ['retarded', 'advanced', 'symmetric'];
|
|
65
|
+
if (!validArrows.includes(node.arrowOfTime)) {
|
|
66
|
+
throw new Error(`GaugeFieldNode: gauge-field arrowOfTime must be 'retarded', 'advanced', ` +
|
|
67
|
+
`or 'symmetric' (got ${JSON.stringify(node.arrowOfTime)}).`);
|
|
68
|
+
}
|
|
69
|
+
const dim = node.dim;
|
|
70
|
+
const axes = ['L', 'M', 'T', 'I', 'Theta', 'N', 'J'];
|
|
71
|
+
for (const ax of axes) {
|
|
72
|
+
if (typeof dim[ax] !== 'number' || !Number.isFinite(dim[ax])) {
|
|
73
|
+
throw new Error(`GaugeFieldNode: gauge-field dim.${ax} must be a finite number ` +
|
|
74
|
+
`(got ${JSON.stringify(dim[ax])} for field '${node.name}').`);
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Validate a `TimeSymmetryPredicateNode`.
|
|
80
|
+
*
|
|
81
|
+
* Four predicates (following the field-equation-helpers pattern):
|
|
82
|
+
*
|
|
83
|
+
* 1. **Arrow-of-time tags** — `retarded.arrowOfTime` must be
|
|
84
|
+
* `'retarded'`; `advanced.arrowOfTime` must be `'advanced'`.
|
|
85
|
+
* 2. **Per-field validity** — both `GaugeFieldNode`s pass
|
|
86
|
+
* `validateGaugeField`.
|
|
87
|
+
* 3. **Dimension equality** — `retarded.dim` and `advanced.dim`
|
|
88
|
+
* must match (so the ratio is dimensionless by cancellation).
|
|
89
|
+
* Uses `validateComponentDimension` from field-equation-helpers.
|
|
90
|
+
* 4. **Epsilon bound** — `epsilon` must be strictly positive and
|
|
91
|
+
* finite (`epsilon > 0` and `Number.isFinite(epsilon)`).
|
|
92
|
+
*
|
|
93
|
+
* Error messages contain `'symmetry'` for arrow-of-time mismatches
|
|
94
|
+
* and `'dimension'` for dim-equality failures (error-keyword
|
|
95
|
+
* discipline shared with EinsteinFieldEquationNode and
|
|
96
|
+
* KleinGordonEquationNode).
|
|
97
|
+
*
|
|
98
|
+
* @public
|
|
99
|
+
*/
|
|
100
|
+
export function validateTimeSymmetryPredicate(node) {
|
|
101
|
+
// Predicate 1a: retarded field's arrow-of-time must be 'retarded'.
|
|
102
|
+
if (node.retarded.arrowOfTime !== 'retarded') {
|
|
103
|
+
throw new Error(`TimeSymmetryPredicateNode: symmetry mismatch — retarded field ` +
|
|
104
|
+
`'${node.retarded.name}' must have arrowOfTime: 'retarded' ` +
|
|
105
|
+
`(got '${node.retarded.arrowOfTime}'). The time-symmetry predicate ` +
|
|
106
|
+
`requires A_ret to carry the retarded arrow-of-time tag.`);
|
|
107
|
+
}
|
|
108
|
+
// Predicate 1b: advanced field's arrow-of-time must be 'advanced'.
|
|
109
|
+
if (node.advanced.arrowOfTime !== 'advanced') {
|
|
110
|
+
throw new Error(`TimeSymmetryPredicateNode: symmetry mismatch — advanced field ` +
|
|
111
|
+
`'${node.advanced.name}' must have arrowOfTime: 'advanced' ` +
|
|
112
|
+
`(got '${node.advanced.arrowOfTime}'). The time-symmetry predicate ` +
|
|
113
|
+
`requires A_adv to carry the advanced arrow-of-time tag.`);
|
|
114
|
+
}
|
|
115
|
+
// Predicate 2: both GaugeFieldNodes pass individual validation.
|
|
116
|
+
validateGaugeField(node.retarded);
|
|
117
|
+
validateGaugeField(node.advanced);
|
|
118
|
+
// Predicate 3: retarded.dim and advanced.dim must match.
|
|
119
|
+
// Uses validateComponentDimension from field-equation-helpers — same
|
|
120
|
+
// helper used by KleinGordonEquationNode and EinsteinFieldEquationNode.
|
|
121
|
+
validateComponentDimension('TimeSymmetryPredicateNode', `advanced field '${node.advanced.name}' dim`, node.advanced.dim, node.retarded.dim, `A_ret and A_adv must share the same dimension so that the ratio ` +
|
|
122
|
+
`|A_ret − A_adv| / |A_ret + A_adv| is dimensionless by cancellation.`);
|
|
123
|
+
// Predicate 4: epsilon must be strictly positive and finite.
|
|
124
|
+
if (!Number.isFinite(node.epsilon) || node.epsilon <= 0) {
|
|
125
|
+
throw new Error(`TimeSymmetryPredicateNode: epsilon must be a strictly positive finite ` +
|
|
126
|
+
`number (got ${node.epsilon}). epsilon bounds the time-symmetry residual ` +
|
|
127
|
+
`|A_ret − A_adv| / |A_ret + A_adv| ≤ epsilon.`);
|
|
128
|
+
}
|
|
129
|
+
return {
|
|
130
|
+
fieldDim: node.retarded.dim,
|
|
131
|
+
epsilon: node.epsilon,
|
|
132
|
+
};
|
|
133
|
+
}
|
|
134
|
+
//# sourceMappingURL=gauge-field.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gauge-field.js","sourceRoot":"","sources":["../../src/dimensional/gauge-field.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwCG;AAGH,OAAO,EAAE,0BAA0B,EAAE,MAAM,6BAA6B,CAAC;AAoGzE,8EAA8E;AAC9E,aAAa;AACb,8EAA8E;AAE9E;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,kBAAkB,CAAC,IAAoB;IACrD,IAAI,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACnE,MAAM,IAAI,KAAK,CACb,8DAA8D;YAC9D,QAAQ,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CACtC,CAAC;IACJ,CAAC;IAED,MAAM,WAAW,GAA+B,CAAC,UAAU,EAAE,UAAU,EAAE,WAAW,CAAC,CAAC;IACtF,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC;QAC5C,MAAM,IAAI,KAAK,CACb,0EAA0E;YAC1E,uBAAuB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAC5D,CAAC;IACJ,CAAC;IAED,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC;IACrB,MAAM,IAAI,GAAmC,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;IACrF,KAAK,MAAM,EAAE,IAAI,IAAI,EAAE,CAAC;QACtB,IAAI,OAAO,GAAG,CAAC,EAAE,CAAC,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;YAC7D,MAAM,IAAI,KAAK,CACb,mCAAmC,EAAE,2BAA2B;gBAChE,QAAQ,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,eAAe,IAAI,CAAC,IAAI,KAAK,CAC7D,CAAC;QACJ,CAAC;IACH,CAAC;AACH,CAAC;AAkBD;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,MAAM,UAAU,6BAA6B,CAC3C,IAA+B;IAE/B,mEAAmE;IACnE,IAAI,IAAI,CAAC,QAAQ,CAAC,WAAW,KAAK,UAAU,EAAE,CAAC;QAC7C,MAAM,IAAI,KAAK,CACb,gEAAgE;YAChE,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,sCAAsC;YAC5D,SAAS,IAAI,CAAC,QAAQ,CAAC,WAAW,kCAAkC;YACpE,yDAAyD,CAC1D,CAAC;IACJ,CAAC;IAED,mEAAmE;IACnE,IAAI,IAAI,CAAC,QAAQ,CAAC,WAAW,KAAK,UAAU,EAAE,CAAC;QAC7C,MAAM,IAAI,KAAK,CACb,gEAAgE;YAChE,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,sCAAsC;YAC5D,SAAS,IAAI,CAAC,QAAQ,CAAC,WAAW,kCAAkC;YACpE,yDAAyD,CAC1D,CAAC;IACJ,CAAC;IAED,gEAAgE;IAChE,kBAAkB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAClC,kBAAkB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAElC,yDAAyD;IACzD,qEAAqE;IACrE,wEAAwE;IACxE,0BAA0B,CACxB,2BAA2B,EAC3B,mBAAmB,IAAI,CAAC,QAAQ,CAAC,IAAI,OAAO,EAC5C,IAAI,CAAC,QAAQ,CAAC,GAAG,EACjB,IAAI,CAAC,QAAQ,CAAC,GAAG,EACjB,kEAAkE;QAClE,qEAAqE,CACtE,CAAC;IAEF,6DAA6D;IAC7D,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,OAAO,IAAI,CAAC,EAAE,CAAC;QACxD,MAAM,IAAI,KAAK,CACb,wEAAwE;YACxE,eAAe,IAAI,CAAC,OAAO,+CAA+C;YAC1E,8CAA8C,CAC/C,CAAC;IACJ,CAAC;IAED,OAAO;QACL,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,GAAG;QAC3B,OAAO,EAAE,IAAI,CAAC,OAAO;KACtB,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Killing-vector machinery (v0.6.0 Phase 1, Tasks 1.1–1.2).
|
|
3
|
+
*
|
|
4
|
+
* A Killing vector ξ^μ generates an isometry of the metric. The defining
|
|
5
|
+
* equation is the Killing equation
|
|
6
|
+
*
|
|
7
|
+
* ∇_μ ξ_ν + ∇_ν ξ_μ = 0
|
|
8
|
+
*
|
|
9
|
+
* (Carroll Eq. 3.174). Validation here is symbolic (rank + variance only);
|
|
10
|
+
* the operator-valued check happens at lowering time in
|
|
11
|
+
* `src/numerical/killing.ts::verifyKillingEquation`.
|
|
12
|
+
*
|
|
13
|
+
* @module dimensional/killing-validators
|
|
14
|
+
*/
|
|
15
|
+
import type { Dimension } from './types.js';
|
|
16
|
+
import type { TensorSymbolNode } from './tensor.js';
|
|
17
|
+
import type { MetricTensorNode } from './metric-validators.js';
|
|
18
|
+
/**
|
|
19
|
+
* AST node for a Killing vector ξ^μ. Rank-1 upper-variance tensor with
|
|
20
|
+
* an attached metric reference (the metric whose isometry ξ generates).
|
|
21
|
+
*
|
|
22
|
+
* Component-dim is free (typically `[L·T⁻¹]` for spatial Killing fields,
|
|
23
|
+
* dimensionless for time-translation if c=1 normalization, or `[L]` for
|
|
24
|
+
* dimensionally-pure spatial isometries).
|
|
25
|
+
*
|
|
26
|
+
* @public
|
|
27
|
+
*/
|
|
28
|
+
export interface KillingVectorNode {
|
|
29
|
+
readonly kind: 'killing-vector';
|
|
30
|
+
readonly vector: TensorSymbolNode;
|
|
31
|
+
readonly metric: MetricTensorNode;
|
|
32
|
+
}
|
|
33
|
+
interface KillingVectorValidationResult {
|
|
34
|
+
readonly dim: Dimension;
|
|
35
|
+
readonly freeIndices: Map<string, {
|
|
36
|
+
upper: number;
|
|
37
|
+
lower: number;
|
|
38
|
+
}>;
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Validate a `killing-vector` node.
|
|
42
|
+
*
|
|
43
|
+
* Throws:
|
|
44
|
+
* - Error if vector is not rank-1 (Killing fields are rank-1 by definition).
|
|
45
|
+
* - Error if vector variance is not 'upper' (canonical Killing form is upper;
|
|
46
|
+
* lower form is obtained by metric-lowering at lowering-time).
|
|
47
|
+
*/
|
|
48
|
+
export declare function validateKillingVector(node: KillingVectorNode): KillingVectorValidationResult;
|
|
49
|
+
/**
|
|
50
|
+
* AST node for the conserved charge Q = ξ^μ p_μ along a geodesic
|
|
51
|
+
* (Carroll Eq. 3.175).
|
|
52
|
+
*
|
|
53
|
+
* **Sign convention**: the node encodes the raw contraction `ξ^μ p_μ`.
|
|
54
|
+
* In (-,+,+,+) signature with the timelike Killing vector ξ^μ_t = (1,0,0,0),
|
|
55
|
+
* `p_t < 0` for forward-time motion of massive particles, so the "physical
|
|
56
|
+
* energy" of common usage is `E = -Q` (Carroll Eq. 8.30). The PC-1.5
|
|
57
|
+
* diagnostic uses magnitude `|ΔQ / Q|` to be sign-agnostic.
|
|
58
|
+
*
|
|
59
|
+
* @public
|
|
60
|
+
*/
|
|
61
|
+
export interface ConservedChargeNode {
|
|
62
|
+
readonly kind: 'conserved-charge';
|
|
63
|
+
/** The Killing vector ξ^μ (rank-1, upper variance). */
|
|
64
|
+
readonly killing: KillingVectorNode;
|
|
65
|
+
/**
|
|
66
|
+
* The covariant momentum p_μ (rank-1, lower variance). Must have the same
|
|
67
|
+
* index label as `killing.vector` so that the contraction ξ^μ p_μ is
|
|
68
|
+
* well-formed.
|
|
69
|
+
*/
|
|
70
|
+
readonly momentum: TensorSymbolNode;
|
|
71
|
+
}
|
|
72
|
+
interface ConservedChargeValidationResult {
|
|
73
|
+
readonly dim: Dimension;
|
|
74
|
+
readonly freeIndices: Map<string, {
|
|
75
|
+
upper: number;
|
|
76
|
+
lower: number;
|
|
77
|
+
}>;
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Validate a `conserved-charge` node.
|
|
81
|
+
*
|
|
82
|
+
* Throws:
|
|
83
|
+
* - Error if momentum is not rank-1.
|
|
84
|
+
* - Error if the Killing-vector index label does not match the momentum
|
|
85
|
+
* index label (they must contract on the same label).
|
|
86
|
+
* - Error if momentum variance is not 'lower' (Q = ξ^μ p_μ requires the
|
|
87
|
+
* upper Killing field to contract with the lower momentum).
|
|
88
|
+
*
|
|
89
|
+
* Returns a scalar result (empty freeIndices) with dimension
|
|
90
|
+
* `dim(ξ) × dim(p)` via the `multiply` algebra helper.
|
|
91
|
+
*/
|
|
92
|
+
export declare function validateConservedCharge(node: ConservedChargeNode): ConservedChargeValidationResult;
|
|
93
|
+
export {};
|
|
94
|
+
//# sourceMappingURL=killing-validators.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"killing-validators.d.ts","sourceRoot":"","sources":["../../src/dimensional/killing-validators.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAC5C,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AACpD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAG/D;;;;;;;;;GASG;AACH,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,IAAI,EAAE,gBAAgB,CAAC;IAChC,QAAQ,CAAC,MAAM,EAAE,gBAAgB,CAAC;IAClC,QAAQ,CAAC,MAAM,EAAE,gBAAgB,CAAC;CACnC;AAGD,UAAU,6BAA6B;IACrC,QAAQ,CAAC,GAAG,EAAE,SAAS,CAAC;IACxB,QAAQ,CAAC,WAAW,EAAE,GAAG,CAAC,MAAM,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACrE;AAED;;;;;;;GAOG;AACH,wBAAgB,qBAAqB,CACnC,IAAI,EAAE,iBAAiB,GACtB,6BAA6B,CAe/B;AAMD;;;;;;;;;;;GAWG;AACH,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,IAAI,EAAE,kBAAkB,CAAC;IAClC,uDAAuD;IACvD,QAAQ,CAAC,OAAO,EAAE,iBAAiB,CAAC;IACpC;;;;OAIG;IACH,QAAQ,CAAC,QAAQ,EAAE,gBAAgB,CAAC;CACrC;AAGD,UAAU,+BAA+B;IACvC,QAAQ,CAAC,GAAG,EAAE,SAAS,CAAC;IACxB,QAAQ,CAAC,WAAW,EAAE,GAAG,CAAC,MAAM,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACrE;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,uBAAuB,CACrC,IAAI,EAAE,mBAAmB,GACxB,+BAA+B,CAsBjC"}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Killing-vector machinery (v0.6.0 Phase 1, Tasks 1.1–1.2).
|
|
3
|
+
*
|
|
4
|
+
* A Killing vector ξ^μ generates an isometry of the metric. The defining
|
|
5
|
+
* equation is the Killing equation
|
|
6
|
+
*
|
|
7
|
+
* ∇_μ ξ_ν + ∇_ν ξ_μ = 0
|
|
8
|
+
*
|
|
9
|
+
* (Carroll Eq. 3.174). Validation here is symbolic (rank + variance only);
|
|
10
|
+
* the operator-valued check happens at lowering time in
|
|
11
|
+
* `src/numerical/killing.ts::verifyKillingEquation`.
|
|
12
|
+
*
|
|
13
|
+
* @module dimensional/killing-validators
|
|
14
|
+
*/
|
|
15
|
+
import { multiply } from './algebra.js';
|
|
16
|
+
/**
|
|
17
|
+
* Validate a `killing-vector` node.
|
|
18
|
+
*
|
|
19
|
+
* Throws:
|
|
20
|
+
* - Error if vector is not rank-1 (Killing fields are rank-1 by definition).
|
|
21
|
+
* - Error if vector variance is not 'upper' (canonical Killing form is upper;
|
|
22
|
+
* lower form is obtained by metric-lowering at lowering-time).
|
|
23
|
+
*/
|
|
24
|
+
export function validateKillingVector(node) {
|
|
25
|
+
if (node.vector.indices.length !== 1) {
|
|
26
|
+
throw new Error(`KillingVectorNode: expected rank-1 vector, got rank-${node.vector.indices.length}`);
|
|
27
|
+
}
|
|
28
|
+
const idx = node.vector.indices[0];
|
|
29
|
+
if (idx.variance !== 'upper') {
|
|
30
|
+
throw new Error(`KillingVectorNode: expected upper variance, got '${idx.variance}'`);
|
|
31
|
+
}
|
|
32
|
+
const freeIndices = new Map();
|
|
33
|
+
freeIndices.set(idx.label, { upper: 1, lower: 0 });
|
|
34
|
+
return { dim: node.vector.dim, freeIndices };
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Validate a `conserved-charge` node.
|
|
38
|
+
*
|
|
39
|
+
* Throws:
|
|
40
|
+
* - Error if momentum is not rank-1.
|
|
41
|
+
* - Error if the Killing-vector index label does not match the momentum
|
|
42
|
+
* index label (they must contract on the same label).
|
|
43
|
+
* - Error if momentum variance is not 'lower' (Q = ξ^μ p_μ requires the
|
|
44
|
+
* upper Killing field to contract with the lower momentum).
|
|
45
|
+
*
|
|
46
|
+
* Returns a scalar result (empty freeIndices) with dimension
|
|
47
|
+
* `dim(ξ) × dim(p)` via the `multiply` algebra helper.
|
|
48
|
+
*/
|
|
49
|
+
export function validateConservedCharge(node) {
|
|
50
|
+
if (node.momentum.indices.length !== 1) {
|
|
51
|
+
throw new Error(`ConservedChargeNode: expected rank-1 momentum, got rank-${node.momentum.indices.length}`);
|
|
52
|
+
}
|
|
53
|
+
const xiLabel = node.killing.vector.indices[0].label;
|
|
54
|
+
const pLabel = node.momentum.indices[0].label;
|
|
55
|
+
if (xiLabel !== pLabel) {
|
|
56
|
+
throw new Error(`ConservedChargeNode: index label mismatch — Killing '${xiLabel}' vs momentum '${pLabel}'`);
|
|
57
|
+
}
|
|
58
|
+
if (node.momentum.indices[0].variance !== 'lower') {
|
|
59
|
+
throw new Error(`ConservedChargeNode: momentum must have lower variance to contract with upper Killing field`);
|
|
60
|
+
}
|
|
61
|
+
// dim(Q) = dim(ξ) × dim(p)
|
|
62
|
+
const dim = multiply(node.killing.vector.dim, node.momentum.dim);
|
|
63
|
+
// Q = ξ^μ p_μ is a full contraction — no free indices remain (scalar).
|
|
64
|
+
return { dim, freeIndices: new Map() };
|
|
65
|
+
}
|
|
66
|
+
//# sourceMappingURL=killing-validators.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"killing-validators.js","sourceRoot":"","sources":["../../src/dimensional/killing-validators.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAKH,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAwBxC;;;;;;;GAOG;AACH,MAAM,UAAU,qBAAqB,CACnC,IAAuB;IAEvB,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACrC,MAAM,IAAI,KAAK,CACb,uDAAuD,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE,CACpF,CAAC;IACJ,CAAC;IACD,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IACnC,IAAI,GAAG,CAAC,QAAQ,KAAK,OAAO,EAAE,CAAC;QAC7B,MAAM,IAAI,KAAK,CACb,oDAAoD,GAAG,CAAC,QAAQ,GAAG,CACpE,CAAC;IACJ,CAAC;IACD,MAAM,WAAW,GAAG,IAAI,GAAG,EAA4C,CAAC;IACxE,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;IACnD,OAAO,EAAE,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,WAAW,EAAE,CAAC;AAC/C,CAAC;AAoCD;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,uBAAuB,CACrC,IAAyB;IAEzB,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvC,MAAM,IAAI,KAAK,CACb,2DAA2D,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,EAAE,CAC1F,CAAC;IACJ,CAAC;IACD,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;IACrD,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;IAC9C,IAAI,OAAO,KAAK,MAAM,EAAE,CAAC;QACvB,MAAM,IAAI,KAAK,CACb,wDAAwD,OAAO,kBAAkB,MAAM,GAAG,CAC3F,CAAC;IACJ,CAAC;IACD,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,QAAQ,KAAK,OAAO,EAAE,CAAC;QAClD,MAAM,IAAI,KAAK,CACb,6FAA6F,CAC9F,CAAC;IACJ,CAAC;IACD,2BAA2B;IAC3B,MAAM,GAAG,GAAG,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;IACjE,uEAAuE;IACvE,OAAO,EAAE,GAAG,EAAE,WAAW,EAAE,IAAI,GAAG,EAAE,EAAE,CAAC;AACzC,CAAC"}
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Klein-Gordon scalar field equation AST node.
|
|
3
|
+
*
|
|
4
|
+
* Phase 1 of the TensorEquationNode<LHS, RHS> generalization
|
|
5
|
+
* (`docs/architecture/v0.7-tensor-equation-node-design-note.md`).
|
|
6
|
+
* First new field-equation node to use the Phase 0 field-equation
|
|
7
|
+
* helpers shipped in commit `5cd860a`.
|
|
8
|
+
*
|
|
9
|
+
* Represents the predicate
|
|
10
|
+
*
|
|
11
|
+
* (□ + m²) φ = J
|
|
12
|
+
*
|
|
13
|
+
* where `□ = g^μν ∇_μ ∇_ν` is the d'Alembertian (wave operator),
|
|
14
|
+
* `m` is the field's mass, and `J` is an optional rank-0 source
|
|
15
|
+
* (set to `null` for the homogeneous form `(□ + m²) φ = 0`).
|
|
16
|
+
*
|
|
17
|
+
* The node validates three structural requirements (mirroring
|
|
18
|
+
* `EinsteinFieldEquationNode`'s pattern):
|
|
19
|
+
*
|
|
20
|
+
* 1. **Free-index agreement** — LHS and RHS are both rank-0
|
|
21
|
+
* (scalar). Trivial case of the rank-N invariant.
|
|
22
|
+
* 2. **Per-component dim equality** — LHS and RHS must have the
|
|
23
|
+
* same `Dimension`. The wave-operator's component dim equals
|
|
24
|
+
* the field's `[fieldDim] · [L^-2]`; m² has dim `[L^-2]`; so
|
|
25
|
+
* the LHS bracket combines to `[fieldDim · L^-2]`. The source
|
|
26
|
+
* J must match that.
|
|
27
|
+
* 3. **Symmetry agreement** — scalar fields have no symmetry
|
|
28
|
+
* structure; both sides carry the trivial `'scalar'` marker.
|
|
29
|
+
*
|
|
30
|
+
* Note: this is a PREDICATE node like EinsteinFieldEquationNode —
|
|
31
|
+
* not a value-producing expression. Numerical evaluation of the
|
|
32
|
+
* wave-operator action on a specific field is out of scope
|
|
33
|
+
* (would require a separate `lowerKleinGordon` step like the
|
|
34
|
+
* curvature pipeline).
|
|
35
|
+
*
|
|
36
|
+
* @module dimensional/klein-gordon-equation
|
|
37
|
+
*/
|
|
38
|
+
import type { Dimension } from './types.js';
|
|
39
|
+
/**
|
|
40
|
+
* Scalar field node — a typed wrapper around a rank-0 (scalar) AST
|
|
41
|
+
* value with explicit dimension + symmetry markers. Minimal so the
|
|
42
|
+
* Klein-Gordon predicate validator can check shape without
|
|
43
|
+
* recursing into the field's internal AST.
|
|
44
|
+
*
|
|
45
|
+
* @public
|
|
46
|
+
*/
|
|
47
|
+
export interface ScalarFieldNode {
|
|
48
|
+
/** Discriminator: 'scalar-field'. */
|
|
49
|
+
readonly kind: 'scalar-field';
|
|
50
|
+
/** Human-readable field name (e.g., 'phi', 'sigma'). */
|
|
51
|
+
readonly name: string;
|
|
52
|
+
/** SI dimension of the scalar field value. */
|
|
53
|
+
readonly dim: Dimension;
|
|
54
|
+
/** Symmetry tag — 'scalar' for un-indexed scalar fields. */
|
|
55
|
+
readonly symmetry: 'scalar';
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* AST node for `(□ + m²) φ = J`.
|
|
59
|
+
*
|
|
60
|
+
* Fields:
|
|
61
|
+
* - `field` — φ (ScalarFieldNode). The free field whose
|
|
62
|
+
* dynamics this equation pins.
|
|
63
|
+
* - `mass` — m² (scalar with dim [L^-2]). Required.
|
|
64
|
+
* - `source` — J (ScalarFieldNode | null). Null for the
|
|
65
|
+
* homogeneous Klein-Gordon (free-field) form.
|
|
66
|
+
* - `coupling` — tag 'klein-gordon' (no inline numeric).
|
|
67
|
+
*
|
|
68
|
+
* Per-component dim of every term: `[field.dim · L^-2]` (the wave
|
|
69
|
+
* operator + mass term + source all share this composite dimension).
|
|
70
|
+
*
|
|
71
|
+
* @public
|
|
72
|
+
*/
|
|
73
|
+
export interface KleinGordonEquationNode {
|
|
74
|
+
readonly kind: 'klein-gordon-equation';
|
|
75
|
+
readonly field: ScalarFieldNode;
|
|
76
|
+
readonly mass: ScalarFieldNode;
|
|
77
|
+
readonly source: ScalarFieldNode | null;
|
|
78
|
+
readonly coupling: 'klein-gordon';
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* Result of validating a `KleinGordonEquationNode`. Mirrors
|
|
82
|
+
* `EinsteinFieldEquationValidationResult` shape.
|
|
83
|
+
*
|
|
84
|
+
* @public
|
|
85
|
+
*/
|
|
86
|
+
export interface KleinGordonEquationValidationResult {
|
|
87
|
+
/** Composite per-component dim: `[field.dim · L^-2]`. */
|
|
88
|
+
readonly dim: Dimension;
|
|
89
|
+
/** Empty free-indices map (rank-0 equation). */
|
|
90
|
+
readonly freeIndices: Map<string, {
|
|
91
|
+
upper: number;
|
|
92
|
+
lower: number;
|
|
93
|
+
}>;
|
|
94
|
+
}
|
|
95
|
+
/**
|
|
96
|
+
* Validate a `klein-gordon-equation` node.
|
|
97
|
+
*
|
|
98
|
+
* Three predicates (mirroring the field-equation-helpers pattern):
|
|
99
|
+
*
|
|
100
|
+
* 1. **Free-index agreement** — trivially passes (both sides are
|
|
101
|
+
* rank-0; `validateFreeIndexLabelMatch` with empty arrays).
|
|
102
|
+
* 2. **Per-component dim equality** — m² and source J must
|
|
103
|
+
* match the wave-operator's contribution.
|
|
104
|
+
* 3. **Symmetry agreement** — all participants are 'scalar'.
|
|
105
|
+
*
|
|
106
|
+
* Errors carry the keywords 'index label', 'dimension', 'symmetry'
|
|
107
|
+
* (consumers pattern-matching on the EFE error vocabulary stay
|
|
108
|
+
* green).
|
|
109
|
+
*
|
|
110
|
+
* @public
|
|
111
|
+
*/
|
|
112
|
+
export declare function validateKleinGordonEquation(node: KleinGordonEquationNode): KleinGordonEquationValidationResult;
|
|
113
|
+
//# sourceMappingURL=klein-gordon-equation.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"klein-gordon-equation.d.ts","sourceRoot":"","sources":["../../src/dimensional/klein-gordon-equation.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAO5C;;;;;;;GAOG;AACH,MAAM,WAAW,eAAe;IAC9B,qCAAqC;IACrC,QAAQ,CAAC,IAAI,EAAE,cAAc,CAAC;IAC9B,wDAAwD;IACxD,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,8CAA8C;IAC9C,QAAQ,CAAC,GAAG,EAAE,SAAS,CAAC;IACxB,4DAA4D;IAC5D,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC;CAC7B;AAED;;;;;;;;;;;;;;;GAeG;AACH,MAAM,WAAW,uBAAuB;IACtC,QAAQ,CAAC,IAAI,EAAE,uBAAuB,CAAC;IACvC,QAAQ,CAAC,KAAK,EAAE,eAAe,CAAC;IAChC,QAAQ,CAAC,IAAI,EAAE,eAAe,CAAC;IAC/B,QAAQ,CAAC,MAAM,EAAE,eAAe,GAAG,IAAI,CAAC;IACxC,QAAQ,CAAC,QAAQ,EAAE,cAAc,CAAC;CACnC;AAED;;;;;GAKG;AACH,MAAM,WAAW,mCAAmC;IAClD,yDAAyD;IACzD,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;CACrE;AAsBD;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,2BAA2B,CACzC,IAAI,EAAE,uBAAuB,GAC5B,mCAAmC,CAgErC"}
|