universal-physics-tensor 0.4.5
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/LICENSE +21 -0
- package/README.md +377 -0
- package/dist/bridges/equations/be-11-decoherence-master.d.ts +83 -0
- package/dist/bridges/equations/be-11-decoherence-master.d.ts.map +1 -0
- package/dist/bridges/equations/be-11-decoherence-master.js +116 -0
- package/dist/bridges/equations/be-11-decoherence-master.js.map +1 -0
- package/dist/bridges/equations/be-12-coherence-length.d.ts +80 -0
- package/dist/bridges/equations/be-12-coherence-length.d.ts.map +1 -0
- package/dist/bridges/equations/be-12-coherence-length.js +128 -0
- package/dist/bridges/equations/be-12-coherence-length.js.map +1 -0
- package/dist/bridges/equations/be-13-einstein-trace.d.ts +89 -0
- package/dist/bridges/equations/be-13-einstein-trace.d.ts.map +1 -0
- package/dist/bridges/equations/be-13-einstein-trace.js +143 -0
- package/dist/bridges/equations/be-13-einstein-trace.js.map +1 -0
- package/dist/bridges/equations/be-14-ryu-takayanagi.d.ts +67 -0
- package/dist/bridges/equations/be-14-ryu-takayanagi.d.ts.map +1 -0
- package/dist/bridges/equations/be-14-ryu-takayanagi.js +112 -0
- package/dist/bridges/equations/be-14-ryu-takayanagi.js.map +1 -0
- package/dist/bridges/equations/be-15-emergence.d.ts +164 -0
- package/dist/bridges/equations/be-15-emergence.d.ts.map +1 -0
- package/dist/bridges/equations/be-15-emergence.js +204 -0
- package/dist/bridges/equations/be-15-emergence.js.map +1 -0
- package/dist/bridges/equations/be-16-landauer.d.ts +180 -0
- package/dist/bridges/equations/be-16-landauer.d.ts.map +1 -0
- package/dist/bridges/equations/be-16-landauer.js +206 -0
- package/dist/bridges/equations/be-16-landauer.js.map +1 -0
- package/dist/bridges/equations/be-17-einstein-cartan.d.ts +245 -0
- package/dist/bridges/equations/be-17-einstein-cartan.d.ts.map +1 -0
- package/dist/bridges/equations/be-17-einstein-cartan.js +304 -0
- package/dist/bridges/equations/be-17-einstein-cartan.js.map +1 -0
- package/dist/bridges/equations/be-18-higgs-mass.d.ts +65 -0
- package/dist/bridges/equations/be-18-higgs-mass.d.ts.map +1 -0
- package/dist/bridges/equations/be-18-higgs-mass.js +86 -0
- package/dist/bridges/equations/be-18-higgs-mass.js.map +1 -0
- package/dist/bridges/equations/be-19-quantum-bounce.d.ts +72 -0
- package/dist/bridges/equations/be-19-quantum-bounce.d.ts.map +1 -0
- package/dist/bridges/equations/be-19-quantum-bounce.js +151 -0
- package/dist/bridges/equations/be-19-quantum-bounce.js.map +1 -0
- package/dist/bridges/equations/be-20-vacuum-energy.d.ts +72 -0
- package/dist/bridges/equations/be-20-vacuum-energy.d.ts.map +1 -0
- package/dist/bridges/equations/be-20-vacuum-energy.js +115 -0
- package/dist/bridges/equations/be-20-vacuum-energy.js.map +1 -0
- package/dist/bridges/equations/be-21-kss-bound.d.ts +72 -0
- package/dist/bridges/equations/be-21-kss-bound.d.ts.map +1 -0
- package/dist/bridges/equations/be-21-kss-bound.js +103 -0
- package/dist/bridges/equations/be-21-kss-bound.js.map +1 -0
- package/dist/bridges/equations/be-22-topological-entanglement.d.ts +90 -0
- package/dist/bridges/equations/be-22-topological-entanglement.d.ts.map +1 -0
- package/dist/bridges/equations/be-22-topological-entanglement.js +123 -0
- package/dist/bridges/equations/be-22-topological-entanglement.js.map +1 -0
- package/dist/bridges/equations/be-23-syk-planckian.d.ts +89 -0
- package/dist/bridges/equations/be-23-syk-planckian.d.ts.map +1 -0
- package/dist/bridges/equations/be-23-syk-planckian.js +155 -0
- package/dist/bridges/equations/be-23-syk-planckian.js.map +1 -0
- package/dist/bridges/equations/be-24-foerster-fret.d.ts +81 -0
- package/dist/bridges/equations/be-24-foerster-fret.d.ts.map +1 -0
- package/dist/bridges/equations/be-24-foerster-fret.js +121 -0
- package/dist/bridges/equations/be-24-foerster-fret.js.map +1 -0
- package/dist/bridges/equations/be-25-iit-phi.d.ts +220 -0
- package/dist/bridges/equations/be-25-iit-phi.d.ts.map +1 -0
- package/dist/bridges/equations/be-25-iit-phi.js +259 -0
- package/dist/bridges/equations/be-25-iit-phi.js.map +1 -0
- package/dist/bridges/equations/be-25-orch-or.d.ts +78 -0
- package/dist/bridges/equations/be-25-orch-or.d.ts.map +1 -0
- package/dist/bridges/equations/be-25-orch-or.js +121 -0
- package/dist/bridges/equations/be-25-orch-or.js.map +1 -0
- package/dist/bridges/equations/be-26-dna-tunneling.d.ts +75 -0
- package/dist/bridges/equations/be-26-dna-tunneling.d.ts.map +1 -0
- package/dist/bridges/equations/be-26-dna-tunneling.js +138 -0
- package/dist/bridges/equations/be-26-dna-tunneling.js.map +1 -0
- package/dist/bridges/equations/be-27-effective-temperature.d.ts +81 -0
- package/dist/bridges/equations/be-27-effective-temperature.d.ts.map +1 -0
- package/dist/bridges/equations/be-27-effective-temperature.js +120 -0
- package/dist/bridges/equations/be-27-effective-temperature.js.map +1 -0
- package/dist/bridges/equations/be-28-onsager-entropy-production.d.ts +175 -0
- package/dist/bridges/equations/be-28-onsager-entropy-production.d.ts.map +1 -0
- package/dist/bridges/equations/be-28-onsager-entropy-production.js +203 -0
- package/dist/bridges/equations/be-28-onsager-entropy-production.js.map +1 -0
- package/dist/bridges/equations/be-29-jarzynski.d.ts +86 -0
- package/dist/bridges/equations/be-29-jarzynski.d.ts.map +1 -0
- package/dist/bridges/equations/be-29-jarzynski.js +132 -0
- package/dist/bridges/equations/be-29-jarzynski.js.map +1 -0
- package/dist/bridges/equations/be-30-flm-first-law.d.ts +93 -0
- package/dist/bridges/equations/be-30-flm-first-law.d.ts.map +1 -0
- package/dist/bridges/equations/be-30-flm-first-law.js +109 -0
- package/dist/bridges/equations/be-30-flm-first-law.js.map +1 -0
- package/dist/bridges/equations/be-31-causal-set-bd.d.ts +96 -0
- package/dist/bridges/equations/be-31-causal-set-bd.d.ts.map +1 -0
- package/dist/bridges/equations/be-31-causal-set-bd.js +133 -0
- package/dist/bridges/equations/be-31-causal-set-bd.js.map +1 -0
- package/dist/bridges/equations/be-32-quantum-reference-frame.d.ts +113 -0
- package/dist/bridges/equations/be-32-quantum-reference-frame.d.ts.map +1 -0
- package/dist/bridges/equations/be-32-quantum-reference-frame.js +155 -0
- package/dist/bridges/equations/be-32-quantum-reference-frame.js.map +1 -0
- package/dist/bridges/equations/be-33-hertz-millis.d.ts +77 -0
- package/dist/bridges/equations/be-33-hertz-millis.d.ts.map +1 -0
- package/dist/bridges/equations/be-33-hertz-millis.js +113 -0
- package/dist/bridges/equations/be-33-hertz-millis.js.map +1 -0
- package/dist/bridges/equations/be-34-kibble-zurek.d.ts +76 -0
- package/dist/bridges/equations/be-34-kibble-zurek.d.ts.map +1 -0
- package/dist/bridges/equations/be-34-kibble-zurek.js +139 -0
- package/dist/bridges/equations/be-34-kibble-zurek.js.map +1 -0
- package/dist/bridges/equations/be-35-conformal-bootstrap.d.ts +117 -0
- package/dist/bridges/equations/be-35-conformal-bootstrap.d.ts.map +1 -0
- package/dist/bridges/equations/be-35-conformal-bootstrap.js +167 -0
- package/dist/bridges/equations/be-35-conformal-bootstrap.js.map +1 -0
- package/dist/bridges/equations/be-36-gw-speed-bound.d.ts +77 -0
- package/dist/bridges/equations/be-36-gw-speed-bound.d.ts.map +1 -0
- package/dist/bridges/equations/be-36-gw-speed-bound.js +107 -0
- package/dist/bridges/equations/be-36-gw-speed-bound.js.map +1 -0
- package/dist/bridges/equations/be-37-shapiro-delay.d.ts +260 -0
- package/dist/bridges/equations/be-37-shapiro-delay.d.ts.map +1 -0
- package/dist/bridges/equations/be-37-shapiro-delay.js +429 -0
- package/dist/bridges/equations/be-37-shapiro-delay.js.map +1 -0
- package/dist/bridges/equations/be-38-mond.d.ts +86 -0
- package/dist/bridges/equations/be-38-mond.d.ts.map +1 -0
- package/dist/bridges/equations/be-38-mond.js +122 -0
- package/dist/bridges/equations/be-38-mond.js.map +1 -0
- package/dist/bridges/equations/be-39-asymptotic-safety.d.ts +106 -0
- package/dist/bridges/equations/be-39-asymptotic-safety.d.ts.map +1 -0
- package/dist/bridges/equations/be-39-asymptotic-safety.js +155 -0
- package/dist/bridges/equations/be-39-asymptotic-safety.js.map +1 -0
- package/dist/bridges/equations/be-40-composite-higgs.d.ts +81 -0
- package/dist/bridges/equations/be-40-composite-higgs.d.ts.map +1 -0
- package/dist/bridges/equations/be-40-composite-higgs.js +149 -0
- package/dist/bridges/equations/be-40-composite-higgs.js.map +1 -0
- package/dist/bridges/equations/be-41-swampland.d.ts +67 -0
- package/dist/bridges/equations/be-41-swampland.d.ts.map +1 -0
- package/dist/bridges/equations/be-41-swampland.js +109 -0
- package/dist/bridges/equations/be-41-swampland.js.map +1 -0
- package/dist/bridges/equations/be-42-hawking-temperature.d.ts +67 -0
- package/dist/bridges/equations/be-42-hawking-temperature.d.ts.map +1 -0
- package/dist/bridges/equations/be-42-hawking-temperature.js +109 -0
- package/dist/bridges/equations/be-42-hawking-temperature.js.map +1 -0
- package/dist/bridges/equations/be-43-er-epr.d.ts +73 -0
- package/dist/bridges/equations/be-43-er-epr.d.ts.map +1 -0
- package/dist/bridges/equations/be-43-er-epr.js +114 -0
- package/dist/bridges/equations/be-43-er-epr.js.map +1 -0
- package/dist/bridges/equations/be-44-soft-hair.d.ts +151 -0
- package/dist/bridges/equations/be-44-soft-hair.d.ts.map +1 -0
- package/dist/bridges/equations/be-44-soft-hair.js +185 -0
- package/dist/bridges/equations/be-44-soft-hair.js.map +1 -0
- package/dist/bridges/equations/be-45-tcc.d.ts +116 -0
- package/dist/bridges/equations/be-45-tcc.d.ts.map +1 -0
- package/dist/bridges/equations/be-45-tcc.js +157 -0
- package/dist/bridges/equations/be-45-tcc.js.map +1 -0
- package/dist/bridges/equations/be-46-multiverse-measure.d.ts +163 -0
- package/dist/bridges/equations/be-46-multiverse-measure.d.ts.map +1 -0
- package/dist/bridges/equations/be-46-multiverse-measure.js +198 -0
- package/dist/bridges/equations/be-46-multiverse-measure.js.map +1 -0
- package/dist/bridges/equations/be-47-bbn-dark-sector.d.ts +72 -0
- package/dist/bridges/equations/be-47-bbn-dark-sector.d.ts.map +1 -0
- package/dist/bridges/equations/be-47-bbn-dark-sector.js +121 -0
- package/dist/bridges/equations/be-47-bbn-dark-sector.js.map +1 -0
- package/dist/bridges/equations/be-48-grw-localization.d.ts +84 -0
- package/dist/bridges/equations/be-48-grw-localization.d.ts.map +1 -0
- package/dist/bridges/equations/be-48-grw-localization.js +107 -0
- package/dist/bridges/equations/be-48-grw-localization.js.map +1 -0
- package/dist/bridges/equations/be-49-quantum-darwinism.d.ts +97 -0
- package/dist/bridges/equations/be-49-quantum-darwinism.d.ts.map +1 -0
- package/dist/bridges/equations/be-49-quantum-darwinism.js +129 -0
- package/dist/bridges/equations/be-49-quantum-darwinism.js.map +1 -0
- package/dist/bridges/equations/be-50-wheeler-feynman.d.ts +120 -0
- package/dist/bridges/equations/be-50-wheeler-feynman.d.ts.map +1 -0
- package/dist/bridges/equations/be-50-wheeler-feynman.js +151 -0
- package/dist/bridges/equations/be-50-wheeler-feynman.js.map +1 -0
- package/dist/bridges/gravitational-lensing.d.ts +52 -0
- package/dist/bridges/gravitational-lensing.d.ts.map +1 -0
- package/dist/bridges/gravitational-lensing.js +48 -0
- package/dist/bridges/gravitational-lensing.js.map +1 -0
- package/dist/bridges/index.d.ts +104 -0
- package/dist/bridges/index.d.ts.map +1 -0
- package/dist/bridges/index.js +1663 -0
- package/dist/bridges/index.js.map +1 -0
- package/dist/bridges/perihelion-precession.d.ts +62 -0
- package/dist/bridges/perihelion-precession.d.ts.map +1 -0
- package/dist/bridges/perihelion-precession.js +68 -0
- package/dist/bridges/perihelion-precession.js.map +1 -0
- package/dist/core/tensor.d.ts +135 -0
- package/dist/core/tensor.d.ts.map +1 -0
- package/dist/core/tensor.js +376 -0
- package/dist/core/tensor.js.map +1 -0
- package/dist/core/types.d.ts +131 -0
- package/dist/core/types.d.ts.map +1 -0
- package/dist/core/types.js +25 -0
- package/dist/core/types.js.map +1 -0
- package/dist/dimensional/algebra.d.ts +34 -0
- package/dist/dimensional/algebra.d.ts.map +1 -0
- package/dist/dimensional/algebra.js +90 -0
- package/dist/dimensional/algebra.js.map +1 -0
- package/dist/dimensional/bridge-check.d.ts +48 -0
- package/dist/dimensional/bridge-check.d.ts.map +1 -0
- package/dist/dimensional/bridge-check.js +137 -0
- package/dist/dimensional/bridge-check.js.map +1 -0
- package/dist/dimensional/connection-validators.d.ts +53 -0
- package/dist/dimensional/connection-validators.d.ts.map +1 -0
- package/dist/dimensional/connection-validators.js +84 -0
- package/dist/dimensional/connection-validators.js.map +1 -0
- package/dist/dimensional/connection.d.ts +40 -0
- package/dist/dimensional/connection.d.ts.map +1 -0
- package/dist/dimensional/connection.js +81 -0
- package/dist/dimensional/connection.js.map +1 -0
- package/dist/dimensional/constants.d.ts +30 -0
- package/dist/dimensional/constants.d.ts.map +1 -0
- package/dist/dimensional/constants.js +31 -0
- package/dist/dimensional/constants.js.map +1 -0
- package/dist/dimensional/errors.d.ts +161 -0
- package/dist/dimensional/errors.d.ts.map +1 -0
- package/dist/dimensional/errors.js +254 -0
- package/dist/dimensional/errors.js.map +1 -0
- package/dist/dimensional/fresh-label.d.ts +26 -0
- package/dist/dimensional/fresh-label.d.ts.map +1 -0
- package/dist/dimensional/fresh-label.js +31 -0
- package/dist/dimensional/fresh-label.js.map +1 -0
- package/dist/dimensional/metric-validators.d.ts +124 -0
- package/dist/dimensional/metric-validators.d.ts.map +1 -0
- package/dist/dimensional/metric-validators.js +141 -0
- package/dist/dimensional/metric-validators.js.map +1 -0
- package/dist/dimensional/metric.d.ts +67 -0
- package/dist/dimensional/metric.d.ts.map +1 -0
- package/dist/dimensional/metric.js +177 -0
- package/dist/dimensional/metric.js.map +1 -0
- package/dist/dimensional/tensor.d.ts +153 -0
- package/dist/dimensional/tensor.d.ts.map +1 -0
- package/dist/dimensional/tensor.js +138 -0
- package/dist/dimensional/tensor.js.map +1 -0
- package/dist/dimensional/types.d.ts +50 -0
- package/dist/dimensional/types.d.ts.map +1 -0
- package/dist/dimensional/types.js +66 -0
- package/dist/dimensional/types.js.map +1 -0
- package/dist/dimensional/validator.d.ts +84 -0
- package/dist/dimensional/validator.d.ts.map +1 -0
- package/dist/dimensional/validator.js +505 -0
- package/dist/dimensional/validator.js.map +1 -0
- package/dist/index.d.ts +25 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +37 -0
- package/dist/index.js.map +1 -0
- package/dist/numerical/be37-covariant-eikonal.d.ts +90 -0
- package/dist/numerical/be37-covariant-eikonal.d.ts.map +1 -0
- package/dist/numerical/be37-covariant-eikonal.js +79 -0
- package/dist/numerical/be37-covariant-eikonal.js.map +1 -0
- package/dist/numerical/connection-lowering-helpers.d.ts +107 -0
- package/dist/numerical/connection-lowering-helpers.d.ts.map +1 -0
- package/dist/numerical/connection-lowering-helpers.js +315 -0
- package/dist/numerical/connection-lowering-helpers.js.map +1 -0
- package/dist/numerical/engine-registry.d.ts +50 -0
- package/dist/numerical/engine-registry.d.ts.map +1 -0
- package/dist/numerical/engine-registry.js +82 -0
- package/dist/numerical/engine-registry.js.map +1 -0
- package/dist/numerical/errors.d.ts +28 -0
- package/dist/numerical/errors.d.ts.map +1 -0
- package/dist/numerical/errors.js +39 -0
- package/dist/numerical/errors.js.map +1 -0
- package/dist/numerical/float64-engine.d.ts +53 -0
- package/dist/numerical/float64-engine.d.ts.map +1 -0
- package/dist/numerical/float64-engine.js +638 -0
- package/dist/numerical/float64-engine.js.map +1 -0
- package/dist/numerical/geodesic-integrator.d.ts +62 -0
- package/dist/numerical/geodesic-integrator.d.ts.map +1 -0
- package/dist/numerical/geodesic-integrator.js +103 -0
- package/dist/numerical/geodesic-integrator.js.map +1 -0
- package/dist/numerical/grid-field.d.ts +24 -0
- package/dist/numerical/grid-field.d.ts.map +1 -0
- package/dist/numerical/grid-field.js +2 -0
- package/dist/numerical/grid-field.js.map +1 -0
- package/dist/numerical/index.d.ts +80 -0
- package/dist/numerical/index.d.ts.map +1 -0
- package/dist/numerical/index.js +75 -0
- package/dist/numerical/index.js.map +1 -0
- package/dist/numerical/lowering.d.ts +48 -0
- package/dist/numerical/lowering.d.ts.map +1 -0
- package/dist/numerical/lowering.js +443 -0
- package/dist/numerical/lowering.js.map +1 -0
- package/dist/numerical/mathts-engine.d.ts +55 -0
- package/dist/numerical/mathts-engine.d.ts.map +1 -0
- package/dist/numerical/mathts-engine.js +164 -0
- package/dist/numerical/mathts-engine.js.map +1 -0
- package/dist/numerical/metric-inverse.d.ts +31 -0
- package/dist/numerical/metric-inverse.d.ts.map +1 -0
- package/dist/numerical/metric-inverse.js +68 -0
- package/dist/numerical/metric-inverse.js.map +1 -0
- package/dist/numerical/null-ray-integrator.d.ts +13 -0
- package/dist/numerical/null-ray-integrator.d.ts.map +1 -0
- package/dist/numerical/null-ray-integrator.js +53 -0
- package/dist/numerical/null-ray-integrator.js.map +1 -0
- package/dist/numerical/pderiv.d.ts +43 -0
- package/dist/numerical/pderiv.d.ts.map +1 -0
- package/dist/numerical/pderiv.js +121 -0
- package/dist/numerical/pderiv.js.map +1 -0
- package/dist/numerical/tensor-engine.d.ts +114 -0
- package/dist/numerical/tensor-engine.d.ts.map +1 -0
- package/dist/numerical/tensor-engine.js +64 -0
- package/dist/numerical/tensor-engine.js.map +1 -0
- package/dist/numerical/types.d.ts +37 -0
- package/dist/numerical/types.d.ts.map +1 -0
- package/dist/numerical/types.js +8 -0
- package/dist/numerical/types.js.map +1 -0
- package/package.json +72 -0
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SI dimensional signatures of fundamental physical constants.
|
|
3
|
+
*
|
|
4
|
+
* These are *dimensions only* — numerical values for the constants themselves
|
|
5
|
+
* live in `src/core/types.ts` (`PhysicalConstants`). The split is intentional:
|
|
6
|
+
* - `core/types.ts` owns numeric values (CODATA 2018) for runtime computation.
|
|
7
|
+
* - this module owns the SI dimensional signatures for the validator.
|
|
8
|
+
*
|
|
9
|
+
* Sources for the dimensional signatures:
|
|
10
|
+
* - CODATA 2018 / NIST CODATA values: https://physics.nist.gov/cuu/Constants/
|
|
11
|
+
* - BIPM SI Brochure 9th ed. (2019)
|
|
12
|
+
* - Planck-unit derivations: Planck (1899); see Wald, "General Relativity"
|
|
13
|
+
* (1984), §G for the canonical Planck-length / Planck-time relations.
|
|
14
|
+
*
|
|
15
|
+
* @module dimensional/constants
|
|
16
|
+
*/
|
|
17
|
+
import { LENGTH, VELOCITY, ACTION, CHARGE, } from './types.js';
|
|
18
|
+
/** Reduced Planck constant ℏ — action [M L^2 T^-1]. */
|
|
19
|
+
export const hbar = ACTION;
|
|
20
|
+
/** Speed of light c — velocity [L T^-1]. */
|
|
21
|
+
export const c = VELOCITY;
|
|
22
|
+
/** Newton's gravitational constant G — [L^3 M^-1 T^-2]. */
|
|
23
|
+
export const G = { L: 3, M: -1, T: -2, I: 0, Theta: 0, N: 0, J: 0 };
|
|
24
|
+
/** Boltzmann constant k_B — energy / temperature [M L^2 T^-2 Θ^-1]. */
|
|
25
|
+
export const k_B = { L: 2, M: 1, T: -2, I: 0, Theta: -1, N: 0, J: 0 };
|
|
26
|
+
/** Elementary charge e — [T I] (coulombs). */
|
|
27
|
+
export const e = CHARGE;
|
|
28
|
+
// --- Planck-unit shorthand (SI dimensions; numerical values not stored here). ---
|
|
29
|
+
/** Planck length ℓ_P — [L]. */
|
|
30
|
+
export const l_P = LENGTH;
|
|
31
|
+
//# sourceMappingURL=constants.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/dimensional/constants.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,EAEL,MAAM,EACN,QAAQ,EACR,MAAM,EACN,MAAM,GACP,MAAM,YAAY,CAAC;AAEpB,uDAAuD;AACvD,MAAM,CAAC,MAAM,IAAI,GAAc,MAAM,CAAC;AAEtC,4CAA4C;AAC5C,MAAM,CAAC,MAAM,CAAC,GAAc,QAAQ,CAAC;AAErC,2DAA2D;AAC3D,MAAM,CAAC,MAAM,CAAC,GAAc,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;AAE/E,uEAAuE;AACvE,MAAM,CAAC,MAAM,GAAG,GAAc,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;AAEjF,8CAA8C;AAC9C,MAAM,CAAC,MAAM,CAAC,GAAc,MAAM,CAAC;AAEnC,mFAAmF;AAEnF,+BAA+B;AAC/B,MAAM,CAAC,MAAM,GAAG,GAAc,MAAM,CAAC"}
|
|
@@ -0,0 +1,161 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* UPT error hierarchy. All UPT-source errors subclass UPTError so
|
|
3
|
+
* downstream consumers (mathjs, threejs, TensorJS) can discriminate
|
|
4
|
+
* with `err instanceof UPTError`.
|
|
5
|
+
*
|
|
6
|
+
* @module dimensional/errors
|
|
7
|
+
*/
|
|
8
|
+
import { Dimension } from './types.js';
|
|
9
|
+
/** Base class for all UPT-source errors. */
|
|
10
|
+
export declare class UPTError extends Error {
|
|
11
|
+
constructor(message: string);
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Thrown by add/sub and equation-level checks when dimensions disagree.
|
|
15
|
+
* (Moved from src/dimensional/algebra.ts as part of the v0.2.0 UPTError
|
|
16
|
+
* refactor. Behavior unchanged.)
|
|
17
|
+
*/
|
|
18
|
+
export declare class DimensionMismatchError extends UPTError {
|
|
19
|
+
readonly expected: Dimension;
|
|
20
|
+
readonly actual: Dimension;
|
|
21
|
+
constructor(message: string, expected: Dimension, actual: Dimension);
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Thrown when a tensor-symbol's indices list contains the same label
|
|
25
|
+
* more than once (e.g., T^μ_μ_μ). Per Part-VII §VII.4.
|
|
26
|
+
*
|
|
27
|
+
* NOTE: this error fires on DECLARATION-TIME duplicates within a single
|
|
28
|
+
* tensor-symbol's indices list. Those indices are *free*, not "dummy"
|
|
29
|
+
* (a dummy index in tensor calculus is one that is summed over). The
|
|
30
|
+
* earlier name `RepeatedDummyLabelError` was a misnomer; that deprecated
|
|
31
|
+
* alias was removed in v0.4.5.
|
|
32
|
+
*/
|
|
33
|
+
export declare class DuplicateIndexLabelError extends UPTError {
|
|
34
|
+
readonly tensorName: string;
|
|
35
|
+
readonly label: string;
|
|
36
|
+
constructor(tensorName: string, label: string);
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Thrown when an index label appears more than twice across a
|
|
40
|
+
* tensor-product's operands. Einstein contraction requires exactly two
|
|
41
|
+
* occurrences (one upper + one lower) per dummy label. Per Part-VII §VII.4.
|
|
42
|
+
*/
|
|
43
|
+
export declare class IndexLabelCollisionError extends UPTError {
|
|
44
|
+
readonly label: string;
|
|
45
|
+
readonly totalCount: number;
|
|
46
|
+
/**
|
|
47
|
+
* Tensor names that contributed occurrences of the colliding label,
|
|
48
|
+
* if the caller has them available. May be undefined for callers that
|
|
49
|
+
* don't track per-operand provenance.
|
|
50
|
+
*/
|
|
51
|
+
readonly sources?: ReadonlyArray<string>;
|
|
52
|
+
constructor(label: string, totalCount: number, sources?: ReadonlyArray<string>);
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Thrown when an index label appears twice in a tensor-product but both
|
|
56
|
+
* occurrences share the same variance (both upper or both lower). v0.2.0
|
|
57
|
+
* has no metric tensor available to raise/lower indices, so such a
|
|
58
|
+
* contraction is rejected at validation time. Per Part-VII §VII.4.
|
|
59
|
+
*/
|
|
60
|
+
export declare class VarianceMismatchError extends UPTError {
|
|
61
|
+
readonly label: string;
|
|
62
|
+
readonly variance: 'upper' | 'lower';
|
|
63
|
+
constructor(label: string, variance: 'upper' | 'lower');
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Thrown by `op '*'` / `'/'` / `'^'` when an operand carries non-empty
|
|
67
|
+
* freeIndices. Scalar operators in v0.2.0 are strict: any tensor-valued
|
|
68
|
+
* operand must instead pass through `tensor-product`. Per Part-VII §VII.5
|
|
69
|
+
* (op-tensor boundary rules).
|
|
70
|
+
*/
|
|
71
|
+
export declare class TensorInScalarOpError extends UPTError {
|
|
72
|
+
readonly op: string;
|
|
73
|
+
constructor(op: string);
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Thrown by `op '+'` / `'-'` when the operand freeIndices maps differ.
|
|
77
|
+
* Addition / subtraction across tensors requires identical free-index
|
|
78
|
+
* signatures (same labels, same per-label upper/lower counts). Per
|
|
79
|
+
* Part-VII §VII.5.
|
|
80
|
+
*/
|
|
81
|
+
export declare class FreeIndexMismatchError extends UPTError {
|
|
82
|
+
constructor(message: string);
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* Thrown by the validator's tensor-product child resolver when a non-tensor
|
|
86
|
+
* operand to a `tensor-product` fails dimension inference. Subclassing
|
|
87
|
+
* UPTError (rather than throwing a plain `Error`) preserves the §14.7
|
|
88
|
+
* forward-compat invariant that downstream consumers can discriminate
|
|
89
|
+
* UPT-source errors with `err instanceof UPTError`.
|
|
90
|
+
*/
|
|
91
|
+
export declare class TensorProductChildInferenceError extends UPTError {
|
|
92
|
+
constructor(message: string);
|
|
93
|
+
}
|
|
94
|
+
/**
|
|
95
|
+
* Thrown when a `metric-tensor` node has rank other than 2. Per
|
|
96
|
+
* Part-VIII §VIII.2 (metric-tensor-rank-2-only TENSOR-RULE). The metric
|
|
97
|
+
* is fundamentally a rank-2 object in v0.3.0; higher-rank generalizations
|
|
98
|
+
* are out of scope.
|
|
99
|
+
*/
|
|
100
|
+
export declare class InvalidMetricRankError extends UPTError {
|
|
101
|
+
readonly tensorName: string;
|
|
102
|
+
readonly actualRank: number;
|
|
103
|
+
constructor(tensorName: string, actualRank: number);
|
|
104
|
+
}
|
|
105
|
+
/**
|
|
106
|
+
* Thrown when a `metric-tensor` has mixed-variance indices, an empty
|
|
107
|
+
* signature, an invalid signature string, or other structural problem
|
|
108
|
+
* orthogonal to rank. Per Part-VIII §VIII.2 and §VIII.5 (raise/lower
|
|
109
|
+
* variance requirements).
|
|
110
|
+
*/
|
|
111
|
+
export declare class MetricSignatureError extends UPTError {
|
|
112
|
+
readonly tensorName: string;
|
|
113
|
+
readonly reason: string;
|
|
114
|
+
constructor(tensorName: string, reason: string);
|
|
115
|
+
}
|
|
116
|
+
/**
|
|
117
|
+
* Thrown when a `kronecker-delta` node has rank other than 2.
|
|
118
|
+
* Per Part-VIII §VIII.3.
|
|
119
|
+
*/
|
|
120
|
+
export declare class InvalidKroneckerRankError extends UPTError {
|
|
121
|
+
readonly actualRank: number;
|
|
122
|
+
constructor(actualRank: number);
|
|
123
|
+
}
|
|
124
|
+
/**
|
|
125
|
+
* Thrown when a `kronecker-delta`'s two indices share the same variance
|
|
126
|
+
* (both upper or both lower). Per Part-VIII §VIII.3, the canonical
|
|
127
|
+
* δ^μ_ν requires mixed variance.
|
|
128
|
+
*/
|
|
129
|
+
export declare class KroneckerVarianceError extends UPTError {
|
|
130
|
+
readonly bothVariance: 'upper' | 'lower';
|
|
131
|
+
constructor(bothVariance: 'upper' | 'lower');
|
|
132
|
+
}
|
|
133
|
+
/**
|
|
134
|
+
* Thrown when a `tensor-partial-derivative` node's `wrtIndex.variance`
|
|
135
|
+
* is `'upper'`. The differentiation operator ∂/∂x^μ is fundamentally
|
|
136
|
+
* covariant (lower) regardless of the variance of the coordinate. Per
|
|
137
|
+
* Part-VIII §VIII.4 (pderiv-wrtIndex-always-lower TENSOR-RULE).
|
|
138
|
+
*/
|
|
139
|
+
export declare class PartialDerivativeIndexVarianceError extends UPTError {
|
|
140
|
+
readonly label: string;
|
|
141
|
+
constructor(label: string);
|
|
142
|
+
}
|
|
143
|
+
/**
|
|
144
|
+
* Emitted (not thrown) via `process.emitWarning` when a covariant-derivative's
|
|
145
|
+
* `wrt` coordinate label collides with an existing free index of the operand
|
|
146
|
+
* and the env var `UPT_ALLOW_COORD_SHADOW=1` has opted in to downgraded
|
|
147
|
+
* handling. By default the collision throws `MetricSignatureError` (soundness
|
|
148
|
+
* over friendliness — silent wrong results are the worst failure mode).
|
|
149
|
+
*
|
|
150
|
+
* Lives here (dimensional/errors.ts) rather than numerical/index.ts to avoid
|
|
151
|
+
* a dimensional → numerical import cycle; re-exported from numerical/index.ts
|
|
152
|
+
* for the public API surface per v0.4.0-Implementation-Plan Task 13.
|
|
153
|
+
*
|
|
154
|
+
* Uses `Object.setPrototypeOf` for correct `instanceof` after ES5 transpilation.
|
|
155
|
+
*
|
|
156
|
+
* @public
|
|
157
|
+
*/
|
|
158
|
+
export declare class DuplicateCoordinateWarning extends Error {
|
|
159
|
+
constructor(coord: string, conflictingIndex: string);
|
|
160
|
+
}
|
|
161
|
+
//# sourceMappingURL=errors.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/dimensional/errors.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAEvC,4CAA4C;AAC5C,qBAAa,QAAS,SAAQ,KAAK;gBACrB,OAAO,EAAE,MAAM;CAM5B;AAED;;;;GAIG;AACH,qBAAa,sBAAuB,SAAQ,QAAQ;IAClD,SAAgB,QAAQ,EAAE,SAAS,CAAC;IACpC,SAAgB,MAAM,EAAE,SAAS,CAAC;gBACtB,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS;CAOpE;AAED;;;;;;;;;GASG;AACH,qBAAa,wBAAyB,SAAQ,QAAQ;IACpD,SAAgB,UAAU,EAAE,MAAM,CAAC;IACnC,SAAgB,KAAK,EAAE,MAAM,CAAC;gBAClB,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM;CAW9C;AAED;;;;GAIG;AACH,qBAAa,wBAAyB,SAAQ,QAAQ;IACpD,SAAgB,KAAK,EAAE,MAAM,CAAC;IAC9B,SAAgB,UAAU,EAAE,MAAM,CAAC;IACnC;;;;OAIG;IACH,SAAgB,OAAO,CAAC,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;gBAE9C,KAAK,EAAE,MAAM,EACb,UAAU,EAAE,MAAM,EAClB,OAAO,CAAC,EAAE,aAAa,CAAC,MAAM,CAAC;CAiBlC;AAED;;;;;GAKG;AACH,qBAAa,qBAAsB,SAAQ,QAAQ;IACjD,SAAgB,KAAK,EAAE,MAAM,CAAC;IAC9B,SAAgB,QAAQ,EAAE,OAAO,GAAG,OAAO,CAAC;gBAChC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,GAAG,OAAO;CAavD;AAED;;;;;GAKG;AACH,qBAAa,qBAAsB,SAAQ,QAAQ;IACjD,SAAgB,EAAE,EAAE,MAAM,CAAC;gBACf,EAAE,EAAE,MAAM;CASvB;AAED;;;;;GAKG;AACH,qBAAa,sBAAuB,SAAQ,QAAQ;gBACtC,OAAO,EAAE,MAAM;CAK5B;AAED;;;;;;GAMG;AACH,qBAAa,gCAAiC,SAAQ,QAAQ;gBAChD,OAAO,EAAE,MAAM;CAK5B;AAED;;;;;GAKG;AACH,qBAAa,sBAAuB,SAAQ,QAAQ;IAClD,SAAgB,UAAU,EAAE,MAAM,CAAC;IACnC,SAAgB,UAAU,EAAE,MAAM,CAAC;gBACvB,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM;CAUnD;AAED;;;;;GAKG;AACH,qBAAa,oBAAqB,SAAQ,QAAQ;IAChD,SAAgB,UAAU,EAAE,MAAM,CAAC;IACnC,SAAgB,MAAM,EAAE,MAAM,CAAC;gBACnB,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;CAS/C;AAED;;;GAGG;AACH,qBAAa,yBAA0B,SAAQ,QAAQ;IACrD,SAAgB,UAAU,EAAE,MAAM,CAAC;gBACvB,UAAU,EAAE,MAAM;CAS/B;AAED;;;;GAIG;AACH,qBAAa,sBAAuB,SAAQ,QAAQ;IAClD,SAAgB,YAAY,EAAE,OAAO,GAAG,OAAO,CAAC;gBACpC,YAAY,EAAE,OAAO,GAAG,OAAO;CAU5C;AAED;;;;;GAKG;AACH,qBAAa,mCAAoC,SAAQ,QAAQ;IAC/D,SAAgB,KAAK,EAAE,MAAM,CAAC;gBAClB,KAAK,EAAE,MAAM;CAU1B;AAED;;;;;;;;;;;;;;GAcG;AACH,qBAAa,0BAA2B,SAAQ,KAAK;gBACvC,KAAK,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM;CASpD"}
|
|
@@ -0,0 +1,254 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* UPT error hierarchy. All UPT-source errors subclass UPTError so
|
|
3
|
+
* downstream consumers (mathjs, threejs, TensorJS) can discriminate
|
|
4
|
+
* with `err instanceof UPTError`.
|
|
5
|
+
*
|
|
6
|
+
* @module dimensional/errors
|
|
7
|
+
*/
|
|
8
|
+
/** Base class for all UPT-source errors. */
|
|
9
|
+
export class UPTError extends Error {
|
|
10
|
+
constructor(message) {
|
|
11
|
+
super(message);
|
|
12
|
+
this.name = 'UPTError';
|
|
13
|
+
// Restore prototype chain (needed for instanceof after ES5 transpilation).
|
|
14
|
+
Object.setPrototypeOf(this, UPTError.prototype);
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Thrown by add/sub and equation-level checks when dimensions disagree.
|
|
19
|
+
* (Moved from src/dimensional/algebra.ts as part of the v0.2.0 UPTError
|
|
20
|
+
* refactor. Behavior unchanged.)
|
|
21
|
+
*/
|
|
22
|
+
export class DimensionMismatchError extends UPTError {
|
|
23
|
+
expected;
|
|
24
|
+
actual;
|
|
25
|
+
constructor(message, expected, actual) {
|
|
26
|
+
super(message);
|
|
27
|
+
this.name = 'DimensionMismatchError';
|
|
28
|
+
this.expected = expected;
|
|
29
|
+
this.actual = actual;
|
|
30
|
+
Object.setPrototypeOf(this, DimensionMismatchError.prototype);
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Thrown when a tensor-symbol's indices list contains the same label
|
|
35
|
+
* more than once (e.g., T^μ_μ_μ). Per Part-VII §VII.4.
|
|
36
|
+
*
|
|
37
|
+
* NOTE: this error fires on DECLARATION-TIME duplicates within a single
|
|
38
|
+
* tensor-symbol's indices list. Those indices are *free*, not "dummy"
|
|
39
|
+
* (a dummy index in tensor calculus is one that is summed over). The
|
|
40
|
+
* earlier name `RepeatedDummyLabelError` was a misnomer; that deprecated
|
|
41
|
+
* alias was removed in v0.4.5.
|
|
42
|
+
*/
|
|
43
|
+
export class DuplicateIndexLabelError extends UPTError {
|
|
44
|
+
tensorName;
|
|
45
|
+
label;
|
|
46
|
+
constructor(tensorName, label) {
|
|
47
|
+
super(`Tensor '${tensorName}' has repeated index label '${label}'. ` +
|
|
48
|
+
`A label may appear at most twice (once upper, once lower) within ` +
|
|
49
|
+
`a single tensor-symbol's indices list.`);
|
|
50
|
+
this.name = 'DuplicateIndexLabelError';
|
|
51
|
+
this.tensorName = tensorName;
|
|
52
|
+
this.label = label;
|
|
53
|
+
Object.setPrototypeOf(this, DuplicateIndexLabelError.prototype);
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Thrown when an index label appears more than twice across a
|
|
58
|
+
* tensor-product's operands. Einstein contraction requires exactly two
|
|
59
|
+
* occurrences (one upper + one lower) per dummy label. Per Part-VII §VII.4.
|
|
60
|
+
*/
|
|
61
|
+
export class IndexLabelCollisionError extends UPTError {
|
|
62
|
+
label;
|
|
63
|
+
totalCount;
|
|
64
|
+
/**
|
|
65
|
+
* Tensor names that contributed occurrences of the colliding label,
|
|
66
|
+
* if the caller has them available. May be undefined for callers that
|
|
67
|
+
* don't track per-operand provenance.
|
|
68
|
+
*/
|
|
69
|
+
sources;
|
|
70
|
+
constructor(label, totalCount, sources) {
|
|
71
|
+
const sourceClause = sources && sources.length > 0
|
|
72
|
+
? ` (sources: ${sources.join(', ')})`
|
|
73
|
+
: '';
|
|
74
|
+
super(`Index label '${label}' appears ${totalCount} times across the ` +
|
|
75
|
+
`tensor-product operands${sourceClause} (max allowed: 2 for Einstein ` +
|
|
76
|
+
`contraction). Rename one of the offending indices.`);
|
|
77
|
+
this.name = 'IndexLabelCollisionError';
|
|
78
|
+
this.label = label;
|
|
79
|
+
this.totalCount = totalCount;
|
|
80
|
+
this.sources = sources;
|
|
81
|
+
Object.setPrototypeOf(this, IndexLabelCollisionError.prototype);
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* Thrown when an index label appears twice in a tensor-product but both
|
|
86
|
+
* occurrences share the same variance (both upper or both lower). v0.2.0
|
|
87
|
+
* has no metric tensor available to raise/lower indices, so such a
|
|
88
|
+
* contraction is rejected at validation time. Per Part-VII §VII.4.
|
|
89
|
+
*/
|
|
90
|
+
export class VarianceMismatchError extends UPTError {
|
|
91
|
+
label;
|
|
92
|
+
variance;
|
|
93
|
+
constructor(label, variance) {
|
|
94
|
+
super(`Index label '${label}' appears twice but both with variance '${variance}'. ` +
|
|
95
|
+
`Einstein contraction requires one upper and one lower. ` +
|
|
96
|
+
`If this is intentional, use raise(operand, gInverse, '${label}') or ` +
|
|
97
|
+
`lower(operand, g, '${label}') to traverse variance via the metric ` +
|
|
98
|
+
`before contracting.`);
|
|
99
|
+
this.name = 'VarianceMismatchError';
|
|
100
|
+
this.label = label;
|
|
101
|
+
this.variance = variance;
|
|
102
|
+
Object.setPrototypeOf(this, VarianceMismatchError.prototype);
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
/**
|
|
106
|
+
* Thrown by `op '*'` / `'/'` / `'^'` when an operand carries non-empty
|
|
107
|
+
* freeIndices. Scalar operators in v0.2.0 are strict: any tensor-valued
|
|
108
|
+
* operand must instead pass through `tensor-product`. Per Part-VII §VII.5
|
|
109
|
+
* (op-tensor boundary rules).
|
|
110
|
+
*/
|
|
111
|
+
export class TensorInScalarOpError extends UPTError {
|
|
112
|
+
op;
|
|
113
|
+
constructor(op) {
|
|
114
|
+
super(`Operator '${op}' is scalar-only; received a tensor argument with ` +
|
|
115
|
+
`non-empty freeIndices. Use 'tensor-product' for tensor multiplication.`);
|
|
116
|
+
this.name = 'TensorInScalarOpError';
|
|
117
|
+
this.op = op;
|
|
118
|
+
Object.setPrototypeOf(this, TensorInScalarOpError.prototype);
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
/**
|
|
122
|
+
* Thrown by `op '+'` / `'-'` when the operand freeIndices maps differ.
|
|
123
|
+
* Addition / subtraction across tensors requires identical free-index
|
|
124
|
+
* signatures (same labels, same per-label upper/lower counts). Per
|
|
125
|
+
* Part-VII §VII.5.
|
|
126
|
+
*/
|
|
127
|
+
export class FreeIndexMismatchError extends UPTError {
|
|
128
|
+
constructor(message) {
|
|
129
|
+
super(message);
|
|
130
|
+
this.name = 'FreeIndexMismatchError';
|
|
131
|
+
Object.setPrototypeOf(this, FreeIndexMismatchError.prototype);
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
/**
|
|
135
|
+
* Thrown by the validator's tensor-product child resolver when a non-tensor
|
|
136
|
+
* operand to a `tensor-product` fails dimension inference. Subclassing
|
|
137
|
+
* UPTError (rather than throwing a plain `Error`) preserves the §14.7
|
|
138
|
+
* forward-compat invariant that downstream consumers can discriminate
|
|
139
|
+
* UPT-source errors with `err instanceof UPTError`.
|
|
140
|
+
*/
|
|
141
|
+
export class TensorProductChildInferenceError extends UPTError {
|
|
142
|
+
constructor(message) {
|
|
143
|
+
super(message);
|
|
144
|
+
this.name = 'TensorProductChildInferenceError';
|
|
145
|
+
Object.setPrototypeOf(this, TensorProductChildInferenceError.prototype);
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
/**
|
|
149
|
+
* Thrown when a `metric-tensor` node has rank other than 2. Per
|
|
150
|
+
* Part-VIII §VIII.2 (metric-tensor-rank-2-only TENSOR-RULE). The metric
|
|
151
|
+
* is fundamentally a rank-2 object in v0.3.0; higher-rank generalizations
|
|
152
|
+
* are out of scope.
|
|
153
|
+
*/
|
|
154
|
+
export class InvalidMetricRankError extends UPTError {
|
|
155
|
+
tensorName;
|
|
156
|
+
actualRank;
|
|
157
|
+
constructor(tensorName, actualRank) {
|
|
158
|
+
super(`Metric tensor '${tensorName}' has rank ${actualRank}, but a ` +
|
|
159
|
+
`metric must be rank-2 (exactly two indices). Per Part-VIII §VIII.2.`);
|
|
160
|
+
this.name = 'InvalidMetricRankError';
|
|
161
|
+
this.tensorName = tensorName;
|
|
162
|
+
this.actualRank = actualRank;
|
|
163
|
+
Object.setPrototypeOf(this, InvalidMetricRankError.prototype);
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
/**
|
|
167
|
+
* Thrown when a `metric-tensor` has mixed-variance indices, an empty
|
|
168
|
+
* signature, an invalid signature string, or other structural problem
|
|
169
|
+
* orthogonal to rank. Per Part-VIII §VIII.2 and §VIII.5 (raise/lower
|
|
170
|
+
* variance requirements).
|
|
171
|
+
*/
|
|
172
|
+
export class MetricSignatureError extends UPTError {
|
|
173
|
+
tensorName;
|
|
174
|
+
reason;
|
|
175
|
+
constructor(tensorName, reason) {
|
|
176
|
+
super(`Metric tensor '${tensorName}': ${reason}. Per Part-VIII §VIII.2.`);
|
|
177
|
+
this.name = 'MetricSignatureError';
|
|
178
|
+
this.tensorName = tensorName;
|
|
179
|
+
this.reason = reason;
|
|
180
|
+
Object.setPrototypeOf(this, MetricSignatureError.prototype);
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
/**
|
|
184
|
+
* Thrown when a `kronecker-delta` node has rank other than 2.
|
|
185
|
+
* Per Part-VIII §VIII.3.
|
|
186
|
+
*/
|
|
187
|
+
export class InvalidKroneckerRankError extends UPTError {
|
|
188
|
+
actualRank;
|
|
189
|
+
constructor(actualRank) {
|
|
190
|
+
super(`Kronecker delta has rank ${actualRank}, but must be rank-2 ` +
|
|
191
|
+
`(exactly one upper + one lower index). Per Part-VIII §VIII.3.`);
|
|
192
|
+
this.name = 'InvalidKroneckerRankError';
|
|
193
|
+
this.actualRank = actualRank;
|
|
194
|
+
Object.setPrototypeOf(this, InvalidKroneckerRankError.prototype);
|
|
195
|
+
}
|
|
196
|
+
}
|
|
197
|
+
/**
|
|
198
|
+
* Thrown when a `kronecker-delta`'s two indices share the same variance
|
|
199
|
+
* (both upper or both lower). Per Part-VIII §VIII.3, the canonical
|
|
200
|
+
* δ^μ_ν requires mixed variance.
|
|
201
|
+
*/
|
|
202
|
+
export class KroneckerVarianceError extends UPTError {
|
|
203
|
+
bothVariance;
|
|
204
|
+
constructor(bothVariance) {
|
|
205
|
+
super(`Kronecker delta indices both have variance '${bothVariance}'; ` +
|
|
206
|
+
`must be one upper + one lower (canonical δ^μ_ν form). ` +
|
|
207
|
+
`Per Part-VIII §VIII.3.`);
|
|
208
|
+
this.name = 'KroneckerVarianceError';
|
|
209
|
+
this.bothVariance = bothVariance;
|
|
210
|
+
Object.setPrototypeOf(this, KroneckerVarianceError.prototype);
|
|
211
|
+
}
|
|
212
|
+
}
|
|
213
|
+
/**
|
|
214
|
+
* Thrown when a `tensor-partial-derivative` node's `wrtIndex.variance`
|
|
215
|
+
* is `'upper'`. The differentiation operator ∂/∂x^μ is fundamentally
|
|
216
|
+
* covariant (lower) regardless of the variance of the coordinate. Per
|
|
217
|
+
* Part-VIII §VIII.4 (pderiv-wrtIndex-always-lower TENSOR-RULE).
|
|
218
|
+
*/
|
|
219
|
+
export class PartialDerivativeIndexVarianceError extends UPTError {
|
|
220
|
+
label;
|
|
221
|
+
constructor(label) {
|
|
222
|
+
super(`Partial-derivative index '${label}' has variance 'upper', but ` +
|
|
223
|
+
`∂_μ is fundamentally covariant — wrtIndex.variance must always ` +
|
|
224
|
+
`be 'lower'. Per Part-VIII §VIII.4.`);
|
|
225
|
+
this.name = 'PartialDerivativeIndexVarianceError';
|
|
226
|
+
this.label = label;
|
|
227
|
+
Object.setPrototypeOf(this, PartialDerivativeIndexVarianceError.prototype);
|
|
228
|
+
}
|
|
229
|
+
}
|
|
230
|
+
/**
|
|
231
|
+
* Emitted (not thrown) via `process.emitWarning` when a covariant-derivative's
|
|
232
|
+
* `wrt` coordinate label collides with an existing free index of the operand
|
|
233
|
+
* and the env var `UPT_ALLOW_COORD_SHADOW=1` has opted in to downgraded
|
|
234
|
+
* handling. By default the collision throws `MetricSignatureError` (soundness
|
|
235
|
+
* over friendliness — silent wrong results are the worst failure mode).
|
|
236
|
+
*
|
|
237
|
+
* Lives here (dimensional/errors.ts) rather than numerical/index.ts to avoid
|
|
238
|
+
* a dimensional → numerical import cycle; re-exported from numerical/index.ts
|
|
239
|
+
* for the public API surface per v0.4.0-Implementation-Plan Task 13.
|
|
240
|
+
*
|
|
241
|
+
* Uses `Object.setPrototypeOf` for correct `instanceof` after ES5 transpilation.
|
|
242
|
+
*
|
|
243
|
+
* @public
|
|
244
|
+
*/
|
|
245
|
+
export class DuplicateCoordinateWarning extends Error {
|
|
246
|
+
constructor(coord, conflictingIndex) {
|
|
247
|
+
super(`Covariant-derivative wrt='${coord}' collides with existing free index ` +
|
|
248
|
+
`'${conflictingIndex}' of the operand; result will silently misbehave. ` +
|
|
249
|
+
`Rename the operand's free index or pick a different wrt label.`);
|
|
250
|
+
this.name = 'DuplicateCoordinateWarning';
|
|
251
|
+
Object.setPrototypeOf(this, DuplicateCoordinateWarning.prototype);
|
|
252
|
+
}
|
|
253
|
+
}
|
|
254
|
+
//# sourceMappingURL=errors.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/dimensional/errors.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAIH,4CAA4C;AAC5C,MAAM,OAAO,QAAS,SAAQ,KAAK;IACjC,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,UAAU,CAAC;QACvB,2EAA2E;QAC3E,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,QAAQ,CAAC,SAAS,CAAC,CAAC;IAClD,CAAC;CACF;AAED;;;;GAIG;AACH,MAAM,OAAO,sBAAuB,SAAQ,QAAQ;IAClC,QAAQ,CAAY;IACpB,MAAM,CAAY;IAClC,YAAY,OAAe,EAAE,QAAmB,EAAE,MAAiB;QACjE,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,wBAAwB,CAAC;QACrC,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,sBAAsB,CAAC,SAAS,CAAC,CAAC;IAChE,CAAC;CACF;AAED;;;;;;;;;GASG;AACH,MAAM,OAAO,wBAAyB,SAAQ,QAAQ;IACpC,UAAU,CAAS;IACnB,KAAK,CAAS;IAC9B,YAAY,UAAkB,EAAE,KAAa;QAC3C,KAAK,CACH,WAAW,UAAU,+BAA+B,KAAK,KAAK;YAC9D,mEAAmE;YACnE,wCAAwC,CACzC,CAAC;QACF,IAAI,CAAC,IAAI,GAAG,0BAA0B,CAAC;QACvC,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,wBAAwB,CAAC,SAAS,CAAC,CAAC;IAClE,CAAC;CACF;AAED;;;;GAIG;AACH,MAAM,OAAO,wBAAyB,SAAQ,QAAQ;IACpC,KAAK,CAAS;IACd,UAAU,CAAS;IACnC;;;;OAIG;IACa,OAAO,CAAyB;IAChD,YACE,KAAa,EACb,UAAkB,EAClB,OAA+B;QAE/B,MAAM,YAAY,GAChB,OAAO,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC;YAC3B,CAAC,CAAC,cAAc,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG;YACrC,CAAC,CAAC,EAAE,CAAC;QACT,KAAK,CACH,gBAAgB,KAAK,aAAa,UAAU,oBAAoB;YAChE,0BAA0B,YAAY,gCAAgC;YACtE,oDAAoD,CACrD,CAAC;QACF,IAAI,CAAC,IAAI,GAAG,0BAA0B,CAAC;QACvC,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,wBAAwB,CAAC,SAAS,CAAC,CAAC;IAClE,CAAC;CACF;AAED;;;;;GAKG;AACH,MAAM,OAAO,qBAAsB,SAAQ,QAAQ;IACjC,KAAK,CAAS;IACd,QAAQ,CAAoB;IAC5C,YAAY,KAAa,EAAE,QAA2B;QACpD,KAAK,CACH,gBAAgB,KAAK,2CAA2C,QAAQ,KAAK;YAC7E,yDAAyD;YACzD,yDAAyD,KAAK,QAAQ;YACtE,sBAAsB,KAAK,yCAAyC;YACpE,qBAAqB,CACtB,CAAC;QACF,IAAI,CAAC,IAAI,GAAG,uBAAuB,CAAC;QACpC,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,qBAAqB,CAAC,SAAS,CAAC,CAAC;IAC/D,CAAC;CACF;AAED;;;;;GAKG;AACH,MAAM,OAAO,qBAAsB,SAAQ,QAAQ;IACjC,EAAE,CAAS;IAC3B,YAAY,EAAU;QACpB,KAAK,CACH,aAAa,EAAE,oDAAoD;YACnE,wEAAwE,CACzE,CAAC;QACF,IAAI,CAAC,IAAI,GAAG,uBAAuB,CAAC;QACpC,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;QACb,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,qBAAqB,CAAC,SAAS,CAAC,CAAC;IAC/D,CAAC;CACF;AAED;;;;;GAKG;AACH,MAAM,OAAO,sBAAuB,SAAQ,QAAQ;IAClD,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,wBAAwB,CAAC;QACrC,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,sBAAsB,CAAC,SAAS,CAAC,CAAC;IAChE,CAAC;CACF;AAED;;;;;;GAMG;AACH,MAAM,OAAO,gCAAiC,SAAQ,QAAQ;IAC5D,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,kCAAkC,CAAC;QAC/C,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,gCAAgC,CAAC,SAAS,CAAC,CAAC;IAC1E,CAAC;CACF;AAED;;;;;GAKG;AACH,MAAM,OAAO,sBAAuB,SAAQ,QAAQ;IAClC,UAAU,CAAS;IACnB,UAAU,CAAS;IACnC,YAAY,UAAkB,EAAE,UAAkB;QAChD,KAAK,CACH,kBAAkB,UAAU,cAAc,UAAU,UAAU;YAC9D,qEAAqE,CACtE,CAAC;QACF,IAAI,CAAC,IAAI,GAAG,wBAAwB,CAAC;QACrC,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,sBAAsB,CAAC,SAAS,CAAC,CAAC;IAChE,CAAC;CACF;AAED;;;;;GAKG;AACH,MAAM,OAAO,oBAAqB,SAAQ,QAAQ;IAChC,UAAU,CAAS;IACnB,MAAM,CAAS;IAC/B,YAAY,UAAkB,EAAE,MAAc;QAC5C,KAAK,CACH,kBAAkB,UAAU,MAAM,MAAM,0BAA0B,CACnE,CAAC;QACF,IAAI,CAAC,IAAI,GAAG,sBAAsB,CAAC;QACnC,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,oBAAoB,CAAC,SAAS,CAAC,CAAC;IAC9D,CAAC;CACF;AAED;;;GAGG;AACH,MAAM,OAAO,yBAA0B,SAAQ,QAAQ;IACrC,UAAU,CAAS;IACnC,YAAY,UAAkB;QAC5B,KAAK,CACH,4BAA4B,UAAU,uBAAuB;YAC7D,+DAA+D,CAChE,CAAC;QACF,IAAI,CAAC,IAAI,GAAG,2BAA2B,CAAC;QACxC,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,yBAAyB,CAAC,SAAS,CAAC,CAAC;IACnE,CAAC;CACF;AAED;;;;GAIG;AACH,MAAM,OAAO,sBAAuB,SAAQ,QAAQ;IAClC,YAAY,CAAoB;IAChD,YAAY,YAA+B;QACzC,KAAK,CACH,+CAA+C,YAAY,KAAK;YAChE,wDAAwD;YACxD,wBAAwB,CACzB,CAAC;QACF,IAAI,CAAC,IAAI,GAAG,wBAAwB,CAAC;QACrC,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;QACjC,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,sBAAsB,CAAC,SAAS,CAAC,CAAC;IAChE,CAAC;CACF;AAED;;;;;GAKG;AACH,MAAM,OAAO,mCAAoC,SAAQ,QAAQ;IAC/C,KAAK,CAAS;IAC9B,YAAY,KAAa;QACvB,KAAK,CACH,6BAA6B,KAAK,8BAA8B;YAChE,iEAAiE;YACjE,oCAAoC,CACrC,CAAC;QACF,IAAI,CAAC,IAAI,GAAG,qCAAqC,CAAC;QAClD,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,mCAAmC,CAAC,SAAS,CAAC,CAAC;IAC7E,CAAC;CACF;AAED;;;;;;;;;;;;;;GAcG;AACH,MAAM,OAAO,0BAA2B,SAAQ,KAAK;IACnD,YAAY,KAAa,EAAE,gBAAwB;QACjD,KAAK,CACH,6BAA6B,KAAK,sCAAsC;YACxE,IAAI,gBAAgB,oDAAoD;YACxE,gEAAgE,CACjE,CAAC;QACF,IAAI,CAAC,IAAI,GAAG,4BAA4B,CAAC;QACzC,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,0BAA0B,CAAC,SAAS,CAAC,CAAC;IACpE,CAAC;CACF"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared deterministic fresh-label utility used by both metric.ts (raise/lower)
|
|
3
|
+
* and connection.ts (christoffel). Extracted to eliminate the algorithmic
|
|
4
|
+
* divergence found in the Task 3 code-quality review (Finding #1).
|
|
5
|
+
*
|
|
6
|
+
* Canonical semantics (from metric.ts, the older module with downstream callers):
|
|
7
|
+
* always returns `<base>_<counter>` starting at counter=1, regardless of
|
|
8
|
+
* whether `base` itself is free. This guarantees every returned label is
|
|
9
|
+
* suffixed and avoids subtle round-trip inconsistencies when the same base
|
|
10
|
+
* label appears in multiple call sites.
|
|
11
|
+
*
|
|
12
|
+
* Per Part-VIII §VIII.5 TENSOR-RULE raise-lower-fresh-label-deterministic.
|
|
13
|
+
*
|
|
14
|
+
* @module dimensional/fresh-label
|
|
15
|
+
*/
|
|
16
|
+
/**
|
|
17
|
+
* Generate a deterministic fresh label not present in `taken`.
|
|
18
|
+
* Uses the scheme `<base>_<counter>` starting at counter=1; increments until
|
|
19
|
+
* a non-taken label is found. Deterministic across runs.
|
|
20
|
+
*
|
|
21
|
+
* @param base The preferred label stem (e.g. `'ρ'`).
|
|
22
|
+
* @param taken Set of labels already in use.
|
|
23
|
+
* @returns A label of the form `<base>_N` where N ≥ 1.
|
|
24
|
+
*/
|
|
25
|
+
export declare function freshLabel(base: string, taken: Set<string>): string;
|
|
26
|
+
//# sourceMappingURL=fresh-label.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fresh-label.d.ts","sourceRoot":"","sources":["../../src/dimensional/fresh-label.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH;;;;;;;;GAQG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,CAAC,MAAM,CAAC,GAAG,MAAM,CAInE"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared deterministic fresh-label utility used by both metric.ts (raise/lower)
|
|
3
|
+
* and connection.ts (christoffel). Extracted to eliminate the algorithmic
|
|
4
|
+
* divergence found in the Task 3 code-quality review (Finding #1).
|
|
5
|
+
*
|
|
6
|
+
* Canonical semantics (from metric.ts, the older module with downstream callers):
|
|
7
|
+
* always returns `<base>_<counter>` starting at counter=1, regardless of
|
|
8
|
+
* whether `base` itself is free. This guarantees every returned label is
|
|
9
|
+
* suffixed and avoids subtle round-trip inconsistencies when the same base
|
|
10
|
+
* label appears in multiple call sites.
|
|
11
|
+
*
|
|
12
|
+
* Per Part-VIII §VIII.5 TENSOR-RULE raise-lower-fresh-label-deterministic.
|
|
13
|
+
*
|
|
14
|
+
* @module dimensional/fresh-label
|
|
15
|
+
*/
|
|
16
|
+
/**
|
|
17
|
+
* Generate a deterministic fresh label not present in `taken`.
|
|
18
|
+
* Uses the scheme `<base>_<counter>` starting at counter=1; increments until
|
|
19
|
+
* a non-taken label is found. Deterministic across runs.
|
|
20
|
+
*
|
|
21
|
+
* @param base The preferred label stem (e.g. `'ρ'`).
|
|
22
|
+
* @param taken Set of labels already in use.
|
|
23
|
+
* @returns A label of the form `<base>_N` where N ≥ 1.
|
|
24
|
+
*/
|
|
25
|
+
export function freshLabel(base, taken) {
|
|
26
|
+
let counter = 1;
|
|
27
|
+
while (taken.has(`${base}_${counter}`))
|
|
28
|
+
counter++;
|
|
29
|
+
return `${base}_${counter}`;
|
|
30
|
+
}
|
|
31
|
+
//# sourceMappingURL=fresh-label.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fresh-label.js","sourceRoot":"","sources":["../../src/dimensional/fresh-label.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH;;;;;;;;GAQG;AACH,MAAM,UAAU,UAAU,CAAC,IAAY,EAAE,KAAkB;IACzD,IAAI,OAAO,GAAG,CAAC,CAAC;IAChB,OAAO,KAAK,CAAC,GAAG,CAAC,GAAG,IAAI,IAAI,OAAO,EAAE,CAAC;QAAE,OAAO,EAAE,CAAC;IAClD,OAAO,GAAG,IAAI,IAAI,OAAO,EAAE,CAAC;AAC9B,CAAC"}
|
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Per-kind validation for v0.3.0 metric-layer AST nodes.
|
|
3
|
+
*
|
|
4
|
+
* Mirrors the pattern of `validateTensorSymbol` in tensor.ts: each
|
|
5
|
+
* validator is a pure function returning a local `{dim, freeIndices}`
|
|
6
|
+
* carrier that validator.ts merges into its InferContext accumulator.
|
|
7
|
+
*
|
|
8
|
+
* Per docs/specification/Part-VIII-Metric-Layer.md §VIII.2-§VIII.4.
|
|
9
|
+
*
|
|
10
|
+
* @module dimensional/metric-validators
|
|
11
|
+
*/
|
|
12
|
+
import type { Dimension } from './types.js';
|
|
13
|
+
import type { Role, TensorIndex } from './tensor.js';
|
|
14
|
+
export interface MetricTensorNode {
|
|
15
|
+
readonly kind: 'metric-tensor';
|
|
16
|
+
readonly name: string;
|
|
17
|
+
readonly indices: ReadonlyArray<TensorIndex>;
|
|
18
|
+
readonly signature: string;
|
|
19
|
+
readonly dim: Dimension;
|
|
20
|
+
/**
|
|
21
|
+
* v0.4.0 numerical-lowering hint: which strategy the numerical engine uses
|
|
22
|
+
* to compute ∂g for Christoffel / ∇_μ. Defaults to 'computed' (use the
|
|
23
|
+
* engine's AD on the metric function). 'zero' = constant metric (∂g=0,
|
|
24
|
+
* Γ=0, ∇_μ=∂_μ). 'supplied' = user provides ∂g components in
|
|
25
|
+
* inputs.metricDerivatives. See v0.4.0-Design.md §4 and §7.
|
|
26
|
+
*/
|
|
27
|
+
readonly derivativeStrategy?: 'computed' | 'zero' | 'supplied';
|
|
28
|
+
}
|
|
29
|
+
export interface MetricTensorValidationResult {
|
|
30
|
+
readonly dim: Dimension;
|
|
31
|
+
readonly freeIndices: Map<string, {
|
|
32
|
+
upper: number;
|
|
33
|
+
lower: number;
|
|
34
|
+
}>;
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Symbolic structural check for InverseMetricInconsistencyWarning: a
|
|
38
|
+
* both-lower metric and a both-upper metric should have all-lower and
|
|
39
|
+
* all-upper index variance respectively. Returns a warning note when the
|
|
40
|
+
* structure is wrong, else null. The numerical residual check lives in
|
|
41
|
+
* src/numerical/metric-inverse.ts.
|
|
42
|
+
*/
|
|
43
|
+
export declare function checkInverseMetricStructure(gLower: MetricTensorNode, gUpper: MetricTensorNode): string | null;
|
|
44
|
+
/**
|
|
45
|
+
* Validate a metric-tensor node. Rejects:
|
|
46
|
+
* - rank ≠ 2 → InvalidMetricRankError
|
|
47
|
+
* - mixed-variance indices → MetricSignatureError
|
|
48
|
+
* - duplicate index labels (e.g., g_μμ) → MetricSignatureError
|
|
49
|
+
* - malformed/empty signature string → MetricSignatureError
|
|
50
|
+
*
|
|
51
|
+
* Per Part-VIII §VIII.2.
|
|
52
|
+
*/
|
|
53
|
+
export declare function validateMetricTensor(node: MetricTensorNode): MetricTensorValidationResult;
|
|
54
|
+
export interface KroneckerDeltaNode {
|
|
55
|
+
readonly kind: 'kronecker-delta';
|
|
56
|
+
readonly indices: ReadonlyArray<TensorIndex>;
|
|
57
|
+
readonly dim: Dimension;
|
|
58
|
+
}
|
|
59
|
+
export interface KroneckerDeltaValidationResult {
|
|
60
|
+
readonly dim: Dimension;
|
|
61
|
+
readonly freeIndices: Map<string, {
|
|
62
|
+
upper: number;
|
|
63
|
+
lower: number;
|
|
64
|
+
}>;
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Validate a kronecker-delta node. Rejects:
|
|
68
|
+
* - rank ≠ 2 → InvalidKroneckerRankError
|
|
69
|
+
* - same-variance indices (both upper or both lower) → KroneckerVarianceError
|
|
70
|
+
* - duplicate index labels (e.g., δ^μ_μ, a trace) → IndexLabelCollisionError
|
|
71
|
+
*
|
|
72
|
+
* Per Part-VIII §VIII.3.
|
|
73
|
+
*/
|
|
74
|
+
export declare function validateKroneckerDelta(node: KroneckerDeltaNode): KroneckerDeltaValidationResult;
|
|
75
|
+
export interface CovariantIndex {
|
|
76
|
+
readonly label: string;
|
|
77
|
+
readonly variance: 'lower';
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* ExprNode-like — uses `unknown` for `of`/`wrt` because metric-validators.ts
|
|
81
|
+
* MUST NOT import from validator.ts (would create a module cycle). The
|
|
82
|
+
* validator's case arm threads a callback that knows the real ExprNode type.
|
|
83
|
+
*/
|
|
84
|
+
export interface TensorPartialDerivativeNode {
|
|
85
|
+
readonly kind: 'tensor-partial-derivative';
|
|
86
|
+
readonly of: unknown;
|
|
87
|
+
readonly wrt: unknown;
|
|
88
|
+
readonly wrtIndex: CovariantIndex;
|
|
89
|
+
}
|
|
90
|
+
export interface PartialDerivativeValidationResult {
|
|
91
|
+
readonly dim: Dimension;
|
|
92
|
+
readonly freeIndices: Map<string, {
|
|
93
|
+
upper: number;
|
|
94
|
+
lower: number;
|
|
95
|
+
}>;
|
|
96
|
+
readonly role?: Role;
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* Per-child validation result the caller supplies via the recursion
|
|
100
|
+
* callback. Mirrors `ChildValidationResult` in tensor.ts — same shape,
|
|
101
|
+
* different home so this module stays decoupled from tensor.ts.
|
|
102
|
+
*/
|
|
103
|
+
export interface PartialDerivativeChildResult {
|
|
104
|
+
readonly dim: Dimension;
|
|
105
|
+
readonly freeIndices: Map<string, {
|
|
106
|
+
upper: number;
|
|
107
|
+
lower: number;
|
|
108
|
+
}>;
|
|
109
|
+
readonly role?: Role;
|
|
110
|
+
}
|
|
111
|
+
/**
|
|
112
|
+
* Validate a tensor-partial-derivative node.
|
|
113
|
+
*
|
|
114
|
+
* Pure-function module-cycle-free pattern (matches `computeContraction`):
|
|
115
|
+
* recursion is injected via the `validateChild` callback. The caller
|
|
116
|
+
* (validator.ts's `infer()` dispatch) supplies a resolver that returns
|
|
117
|
+
* `{dim, freeIndices, role?}` for each child (the `of` and `wrt` operands).
|
|
118
|
+
*
|
|
119
|
+
* Per Part-VIII §VIII.4. Throws:
|
|
120
|
+
* - PartialDerivativeIndexVarianceError if wrtIndex.variance !== 'lower'
|
|
121
|
+
* - IndexLabelCollisionError if wrtIndex.label collides with `of`'s free indices
|
|
122
|
+
*/
|
|
123
|
+
export declare function validatePartialDerivative(node: TensorPartialDerivativeNode, validateChild: (child: unknown) => PartialDerivativeChildResult): PartialDerivativeValidationResult;
|
|
124
|
+
//# sourceMappingURL=metric-validators.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"metric-validators.d.ts","sourceRoot":"","sources":["../../src/dimensional/metric-validators.ts"],"names":[],"mappings":"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"}
|