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,90 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Dimensional algebra: per-base-exponent arithmetic.
|
|
3
|
+
*
|
|
4
|
+
* Operations follow standard dimensional analysis (Bridgman, "Dimensional Analysis", 1922):
|
|
5
|
+
* - multiply: add exponents per base
|
|
6
|
+
* - divide: subtract exponents per base
|
|
7
|
+
* - power: scale exponents by the scalar `n`
|
|
8
|
+
* - add/sub: permitted only when both operands have the same dimension
|
|
9
|
+
*
|
|
10
|
+
* @module dimensional/algebra
|
|
11
|
+
*/
|
|
12
|
+
import { NAMED_DIMENSIONS } from './types.js';
|
|
13
|
+
import { DimensionMismatchError } from './errors.js';
|
|
14
|
+
/** Re-exported for backward compatibility with consumers that import
|
|
15
|
+
* `DimensionMismatchError` from `algebra.js`. The canonical definition
|
|
16
|
+
* now lives in `errors.ts` alongside the new `UPTError` base class. */
|
|
17
|
+
export { DimensionMismatchError };
|
|
18
|
+
const BASES = ['L', 'M', 'T', 'I', 'Theta', 'N', 'J'];
|
|
19
|
+
export function multiply(a, b) {
|
|
20
|
+
const out = {};
|
|
21
|
+
for (const base of BASES) {
|
|
22
|
+
out[base] = a[base] + b[base];
|
|
23
|
+
}
|
|
24
|
+
return out;
|
|
25
|
+
}
|
|
26
|
+
export function divide(a, b) {
|
|
27
|
+
const out = {};
|
|
28
|
+
for (const base of BASES) {
|
|
29
|
+
out[base] = a[base] - b[base];
|
|
30
|
+
}
|
|
31
|
+
return out;
|
|
32
|
+
}
|
|
33
|
+
export function power(a, n) {
|
|
34
|
+
const out = {};
|
|
35
|
+
for (const base of BASES) {
|
|
36
|
+
out[base] = a[base] * n;
|
|
37
|
+
}
|
|
38
|
+
return out;
|
|
39
|
+
}
|
|
40
|
+
export function equals(a, b) {
|
|
41
|
+
for (const base of BASES) {
|
|
42
|
+
if (a[base] !== b[base])
|
|
43
|
+
return false;
|
|
44
|
+
}
|
|
45
|
+
return true;
|
|
46
|
+
}
|
|
47
|
+
export function add(a, b) {
|
|
48
|
+
if (!equals(a, b)) {
|
|
49
|
+
throw new DimensionMismatchError(`Cannot add unlike dimensions: ${format(a)} + ${format(b)}`, a, b);
|
|
50
|
+
}
|
|
51
|
+
return { ...a };
|
|
52
|
+
}
|
|
53
|
+
export function subtract(a, b) {
|
|
54
|
+
if (!equals(a, b)) {
|
|
55
|
+
throw new DimensionMismatchError(`Cannot subtract unlike dimensions: ${format(a)} - ${format(b)}`, a, b);
|
|
56
|
+
}
|
|
57
|
+
return { ...a };
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Format a `Dimension` for human display.
|
|
61
|
+
*
|
|
62
|
+
* Strategy:
|
|
63
|
+
* 1. If `d` matches a named SI dimension exactly, return e.g. "[energy]".
|
|
64
|
+
* "dimensionless" is rendered as "[1]" for compactness.
|
|
65
|
+
* 2. Otherwise emit the bracketed product form, e.g. "[M L^2 T^-2]".
|
|
66
|
+
* Bases with exponent 0 are omitted; exponent 1 is written without "^1".
|
|
67
|
+
*/
|
|
68
|
+
export function format(d) {
|
|
69
|
+
for (const [name, ref] of NAMED_DIMENSIONS) {
|
|
70
|
+
if (equals(d, ref)) {
|
|
71
|
+
if (name === 'dimensionless')
|
|
72
|
+
return '[1]';
|
|
73
|
+
return `[${name}]`;
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
const parts = [];
|
|
77
|
+
for (const base of BASES) {
|
|
78
|
+
const exp = d[base];
|
|
79
|
+
if (exp === 0)
|
|
80
|
+
continue;
|
|
81
|
+
if (exp === 1)
|
|
82
|
+
parts.push(base);
|
|
83
|
+
else
|
|
84
|
+
parts.push(`${base}^${exp}`);
|
|
85
|
+
}
|
|
86
|
+
if (parts.length === 0)
|
|
87
|
+
return '[1]';
|
|
88
|
+
return `[${parts.join(' ')}]`;
|
|
89
|
+
}
|
|
90
|
+
//# sourceMappingURL=algebra.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"algebra.js","sourceRoot":"","sources":["../../src/dimensional/algebra.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Bridge-index integration scaffold.
|
|
3
|
+
*
|
|
4
|
+
* The 40 bridges in `src/bridges/index.ts` carry `formula_latex` strings
|
|
5
|
+
* but only a handful (BE-11, BE-14 today) have a machine-evaluable AST.
|
|
6
|
+
* The encoding is Tier 5 work, one bridge at a time.
|
|
7
|
+
*
|
|
8
|
+
* `inferDimensionForBridge(id, expr)` runs `validate()` on the AST. If
|
|
9
|
+
* the supplied `id` is registered in `EXPECTED_DIMENSION_BY_BRIDGE`, the
|
|
10
|
+
* inferred dim is also cross-checked against the expected one — a
|
|
11
|
+
* mismatch returns `null` (a real "bridge expected ENTROPY but got
|
|
12
|
+
* AREA" error). If the id is not registered, the inferred dim is
|
|
13
|
+
* returned unchanged (current MVP behaviour for entries with no
|
|
14
|
+
* dimensional_signature yet).
|
|
15
|
+
*
|
|
16
|
+
* @module dimensional/bridge-check
|
|
17
|
+
*/
|
|
18
|
+
import { Dimension } from './types.js';
|
|
19
|
+
import { ExprNode } from './validator.js';
|
|
20
|
+
/**
|
|
21
|
+
* Per-bridge expected SI dimension lookup. Seeded with every entry that
|
|
22
|
+
* has an AST encoding registered in `src/bridges/equations/`. Add a new
|
|
23
|
+
* row whenever a new Tier-5 AST encoding lands; the
|
|
24
|
+
* `dimensional-signature-catalog` round-trip test plus the
|
|
25
|
+
* `Wave-G expected-dimension entries` size guard in
|
|
26
|
+
* `tests/dimensional/bridge-check.test.ts` enforce that this map stays
|
|
27
|
+
* in sync with the encoded modules.
|
|
28
|
+
*
|
|
29
|
+
* Entries with bracketed-product signatures (e.g. BE-19 `[T^-2]`,
|
|
30
|
+
* BE-47 `[L^-3 T^-1]`) require a constructed `Dimension` literal — see
|
|
31
|
+
* `T_INV2` and `INV_VOLUME_PER_TIME` above for the pattern.
|
|
32
|
+
*/
|
|
33
|
+
export declare const EXPECTED_DIMENSION_BY_BRIDGE: ReadonlyMap<number, Dimension>;
|
|
34
|
+
/**
|
|
35
|
+
* Infer the SI dimensional signature of a bridge equation expression.
|
|
36
|
+
*
|
|
37
|
+
* @param bridgeId The id from `BRIDGE_EQUATIONS` (11..50). If present
|
|
38
|
+
* in `EXPECTED_DIMENSION_BY_BRIDGE` the inferred dim
|
|
39
|
+
* is cross-checked against the expected; mismatch =>
|
|
40
|
+
* null. If absent, the inferred dim is returned as-is.
|
|
41
|
+
* @param expr Hand-encoded ExprNode AST for the equation's RHS
|
|
42
|
+
* (or LHS).
|
|
43
|
+
* @returns The inferred SI dimension, or `null` if the expression is
|
|
44
|
+
* dimensionally inconsistent or fails the per-bridge expected
|
|
45
|
+
* dimension check.
|
|
46
|
+
*/
|
|
47
|
+
export declare function inferDimensionForBridge(bridgeId: number, expr: ExprNode): Dimension | null;
|
|
48
|
+
//# sourceMappingURL=bridge-check.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bridge-check.d.ts","sourceRoot":"","sources":["../../src/dimensional/bridge-check.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,EACL,SAAS,EAWV,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,QAAQ,EAAY,MAAM,gBAAgB,CAAC;AAqDpD;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,4BAA4B,EAAE,WAAW,CAAC,MAAM,EAAE,SAAS,CAyCtE,CAAC;AAEH;;;;;;;;;;;;GAYG;AACH,wBAAgB,uBAAuB,CACrC,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,QAAQ,GACb,SAAS,GAAG,IAAI,CAQlB"}
|
|
@@ -0,0 +1,137 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Bridge-index integration scaffold.
|
|
3
|
+
*
|
|
4
|
+
* The 40 bridges in `src/bridges/index.ts` carry `formula_latex` strings
|
|
5
|
+
* but only a handful (BE-11, BE-14 today) have a machine-evaluable AST.
|
|
6
|
+
* The encoding is Tier 5 work, one bridge at a time.
|
|
7
|
+
*
|
|
8
|
+
* `inferDimensionForBridge(id, expr)` runs `validate()` on the AST. If
|
|
9
|
+
* the supplied `id` is registered in `EXPECTED_DIMENSION_BY_BRIDGE`, the
|
|
10
|
+
* inferred dim is also cross-checked against the expected one — a
|
|
11
|
+
* mismatch returns `null` (a real "bridge expected ENTROPY but got
|
|
12
|
+
* AREA" error). If the id is not registered, the inferred dim is
|
|
13
|
+
* returned unchanged (current MVP behaviour for entries with no
|
|
14
|
+
* dimensional_signature yet).
|
|
15
|
+
*
|
|
16
|
+
* @module dimensional/bridge-check
|
|
17
|
+
*/
|
|
18
|
+
import { DIMENSIONLESS, ENERGY, ENTROPY, FREQUENCY, TIME, MASS, LENGTH, AREA, FORCE, TEMPERATURE, } from './types.js';
|
|
19
|
+
import { validate } from './validator.js';
|
|
20
|
+
import { equals, multiply, power } from './algebra.js';
|
|
21
|
+
/** [T^-2] — bracketed-product literal for BE-19's H² Friedmann RHS. */
|
|
22
|
+
const T_INV2 = { L: 0, M: 0, T: -2, I: 0, Theta: 0, N: 0, J: 0 };
|
|
23
|
+
/** [L^-3 T^-1] — bracketed-product literal for BE-47's BBN-dark dY/dt RHS. */
|
|
24
|
+
const INV_VOLUME_PER_TIME = multiply(power(LENGTH, -3), { L: 0, M: 0, T: -1, I: 0, Theta: 0, N: 0, J: 0 });
|
|
25
|
+
/** [L^3 M T^-3 I^-2] — bracketed-product literal for BE-23's resistivity (Ω·m). */
|
|
26
|
+
const RESISTIVITY = {
|
|
27
|
+
L: 3, M: 1, T: -3, I: -2, Theta: 0, N: 0, J: 0,
|
|
28
|
+
};
|
|
29
|
+
/** [energy^4] = [L^8 M^4 T^-8] — bracketed-product literal for BE-40's composite Higgs V(h). */
|
|
30
|
+
const ENERGY_4 = power(ENERGY, 4);
|
|
31
|
+
/** [L^-2] — bracketed-product literal for BE-31's Benincasa-Dowker discrete Ricci scalar. */
|
|
32
|
+
const INV_LENGTH_2 = power(LENGTH, -2);
|
|
33
|
+
/** [T Θ] — bracketed-product literal for BE-21's KSS viscosity-to-entropy ratio. */
|
|
34
|
+
const TIME_TIMES_TEMPERATURE = {
|
|
35
|
+
L: 0, M: 0, T: 1, I: 0, Theta: 1, N: 0, J: 0,
|
|
36
|
+
};
|
|
37
|
+
/** [L^-3 M] — bracketed-product literal for BE-20's cosmological-constant mass density. */
|
|
38
|
+
const MASS_DENSITY = {
|
|
39
|
+
L: -3, M: 1, T: 0, I: 0, Theta: 0, N: 0, J: 0,
|
|
40
|
+
};
|
|
41
|
+
/**
|
|
42
|
+
* [L^-2 M^2 T^-2] — bracketed-product literal for BE-17's squared-
|
|
43
|
+
* invariant scalar reduction S²_spin = (c⁴/(8πG))² · T_λμν T^λμν
|
|
44
|
+
* (Wave Z-C 2026-05-07). Spin-density-squared = (angular-momentum-
|
|
45
|
+
* density)² is a custom dim not in NAMED_DIMENSIONS.
|
|
46
|
+
*/
|
|
47
|
+
const SPIN_DENSITY_SQUARED = {
|
|
48
|
+
L: -2, M: 2, T: -2, I: 0, Theta: 0, N: 0, J: 0,
|
|
49
|
+
};
|
|
50
|
+
/**
|
|
51
|
+
* [L^2 T^-1] — bracketed-product literal for BE-44's soft-hair squared-
|
|
52
|
+
* norm Q_soft² = ∫(∂_u C)² du. News [velocity] = [L T^-1], squared
|
|
53
|
+
* [L^2 T^-2], integral times measure [T] gives [L^2 T^-1]. Wave Z-C
|
|
54
|
+
* 2026-05-07.
|
|
55
|
+
*/
|
|
56
|
+
const SOFT_HAIR_L2_SQUARED = {
|
|
57
|
+
L: 2, M: 0, T: -1, I: 0, Theta: 0, N: 0, J: 0,
|
|
58
|
+
};
|
|
59
|
+
/**
|
|
60
|
+
* Per-bridge expected SI dimension lookup. Seeded with every entry that
|
|
61
|
+
* has an AST encoding registered in `src/bridges/equations/`. Add a new
|
|
62
|
+
* row whenever a new Tier-5 AST encoding lands; the
|
|
63
|
+
* `dimensional-signature-catalog` round-trip test plus the
|
|
64
|
+
* `Wave-G expected-dimension entries` size guard in
|
|
65
|
+
* `tests/dimensional/bridge-check.test.ts` enforce that this map stays
|
|
66
|
+
* in sync with the encoded modules.
|
|
67
|
+
*
|
|
68
|
+
* Entries with bracketed-product signatures (e.g. BE-19 `[T^-2]`,
|
|
69
|
+
* BE-47 `[L^-3 T^-1]`) require a constructed `Dimension` literal — see
|
|
70
|
+
* `T_INV2` and `INV_VOLUME_PER_TIME` above for the pattern.
|
|
71
|
+
*/
|
|
72
|
+
export const EXPECTED_DIMENSION_BY_BRIDGE = new Map([
|
|
73
|
+
[11, FREQUENCY],
|
|
74
|
+
[12, LENGTH], // BE-12 thermal de Broglie wavelength λ_T = √(2π ℏ²/(m k_B T)) — Wave T 2026-05-06.
|
|
75
|
+
[13, INV_LENGTH_2], // BE-13 trace of Einstein equations R = 4Λ - (8πG/c⁴)T — Wave Y 2026-05-07.
|
|
76
|
+
[18, ENERGY], // BE-18 Higgs-like dark-fermion mass m_dark = g·v — Wave Y 2026-05-07.
|
|
77
|
+
[14, ENTROPY],
|
|
78
|
+
[15, AREA], // BE-15 Model A Kawasaki-Gunton coarsening L(t)² = Γ·t — Wave Z-D 2026-05-11. Late-stage coarsening length-scale; full Langevin equation requires δ-correlator + functional-derivative + functional-integral grammar extensions (out of scope).
|
|
79
|
+
[16, ENERGY], // BE-16 Landauer's principle E_min = k_B · T · ln(2) — Wave Z-E 2026-05-11. Reformulated from 'invalid' (broken C(ρ) ansatz, Wave P-D-style replacement per OpenAI o3 consultation). Canonical information-↔-thermodynamics bridge per Landauer 1961, experimentally tested by Bérut 2012 and Jun 2014.
|
|
80
|
+
[17, SPIN_DENSITY_SQUARED], // BE-17 Einstein-Cartan squared-invariant reduction S²_spin = (c⁴/(8πG))² · T_λμν T^λμν — Wave Z-C 2026-05-07.
|
|
81
|
+
[19, T_INV2],
|
|
82
|
+
[20, MASS_DENSITY], // BE-20 observed cosmological-constant mass density ρ_Λ = c²Λ/(8πG) — Wave Y 2026-05-07.
|
|
83
|
+
[21, TIME_TIMES_TEMPERATURE], // BE-21 KSS viscosity-to-entropy bound η/s = ℏ/(4π k_B) — Wave Y 2026-05-07.
|
|
84
|
+
[22, DIMENSIONLESS],
|
|
85
|
+
[23, RESISTIVITY], // BE-23 SYK Planckian resistivity ρ(T) = ρ_0 + (m* k_B T)/(n_e e² ℏ)·α_SYK — Wave V 2026-05-07.
|
|
86
|
+
[24, DIMENSIONLESS], // BE-24 Förster FRET efficiency η = R_0⁶/(R_0⁶ + R⁶) — Wave V 2026-05-07.
|
|
87
|
+
[25, DIMENSIONLESS], // BE-25 IIT inner intrinsic information ii(s,s̃) = p(s̃|s)·log₂[p(s̃|s)/p(s̃)] — Wave Z-B 2026-05-07. Re-added under the IIT reformulation (Wave P-D R-D2); legacy Penrose-Hameroff `be-25-orch-or.ts` AST remains archived (Wave Q B2). ii has units of bits (pseudo-unit; not in SI 7-base) and types DIMENSIONLESS. Outer MIP min over partitions is deferred grammar-extension.
|
|
88
|
+
[26, FREQUENCY],
|
|
89
|
+
[27, TEMPERATURE], // BE-27 Cugliandolo-Kurchan effective temperature T_eff = T(1+Σ_active/(k_BT)) — Wave Y 2026-05-07.
|
|
90
|
+
[28, { L: 2, M: 1, T: -3, I: 0, Theta: -1, N: 0, J: 0 }], // BE-28 Onsager linear-response entropy production σ = Σ J·X — Wave Z-G 2026-05-11. **User-confirmed relabeling** from MEPP variational principle (which would require variational-δ + Lagrange + discrete-sum grammar extensions). Honest-claude: does NOT capture MEPP's variational maximization claim; see module docstring.
|
|
91
|
+
[29, ENERGY], // BE-29 Jarzynski free-energy equality ΔF = -k_B T ln⟨exp(-βW)⟩ — Wave Y 2026-05-07.
|
|
92
|
+
[30, DIMENSIONLESS], // BE-30 FLM first law δS_EE = δ⟨H_R⟩ — Wave Y 2026-05-07.
|
|
93
|
+
[31, INV_LENGTH_2], // BE-31 Benincasa-Dowker discrete Ricci scalar R(p) = (4/√6) ℓ_P^-2 [1 + N_0 - 9N_1 + 16N_2 - 8N_3] — Wave W 2026-05-07.
|
|
94
|
+
[32, DIMENSIONLESS], // BE-32 QRF Born-rule overlap probability P = |⟨ψ_A|U(g)|ψ_B⟩|² = c² + s² — Wave Z 2026-05-07.
|
|
95
|
+
[33, LENGTH], // BE-33 Hertz-Millis ξ(T) = ξ_0 · (T/T_0)^(-ν/z) — Wave V 2026-05-07.
|
|
96
|
+
[34, DIMENSIONLESS],
|
|
97
|
+
[35, DIMENSIONLESS], // BE-35 CFT bootstrap crossing residual R_cross = C²·[g_block(u,v) - g_block(v,u)] — Wave Z 2026-05-07.
|
|
98
|
+
[36, DIMENSIONLESS], // BE-36 GW170817 graviton-speed bound |c_GW-c|/c ≤ 10⁻¹⁵ — Wave Y 2026-05-07.
|
|
99
|
+
[37, TIME], // BE-37 Shapiro gravitational time-delay Δt = (2GM/c³)·ln(R_far/R_near) — Wave Z-F 2026-05-11. Reformulated from 'invalid' (operationally-meaningless vacuum c(t,x)≠const per Ellis-Uzan 2005) to the canonical operationally-meaningful gravitational time-delay (Shapiro 1964, Cassini 2003).
|
|
100
|
+
[38, FORCE], // BE-38 Milgrom MOND F = F_N · ν(z) — Wave U 2026-05-06.
|
|
101
|
+
[39, DIMENSIONLESS], // BE-39 asymptotic-safety β_g (canonical EH-truncation; β_λ has same dim) — Wave X 2026-05-07.
|
|
102
|
+
[40, ENERGY_4], // BE-40 Composite Higgs V(h) = -α f⁴ sin² + β f⁴ [sin⁴ - sin²cos²] — Wave V 2026-05-07.
|
|
103
|
+
[41, MASS],
|
|
104
|
+
[42, TEMPERATURE], // BE-42 Hawking temperature T_H = ℏc³/(8π G M k_B) — Wave Y 2026-05-07.
|
|
105
|
+
[43, ENTROPY], // BE-43 ER=EPR S = k_B · A_wormhole / (4 ℓ_P²) — Wave V 2026-05-07.
|
|
106
|
+
[44, SOFT_HAIR_L2_SQUARED], // BE-44 Soft-hair L²-norm Q_soft² = ∫(∂_u C)² du — Wave Z-C 2026-05-07. Squared-norm scalar reduction of BMS supertranslation charge; integral primitive over u-direction at null infinity (celestial 2-sphere absorbed).
|
|
107
|
+
[45, DIMENSIONLESS], // BE-45 TCC e-fold bound N_e_max = log(M_P/H_inf) - γ log(r/0.01) — Wave W 2026-05-07.
|
|
108
|
+
[46, DIMENSIONLESS], // BE-46 Weinberg-Vilenkin anthropic probability P(Λ) = A·exp(-α/Λ) — Wave Z 2026-05-07.
|
|
109
|
+
[47, INV_VOLUME_PER_TIME],
|
|
110
|
+
[48, FREQUENCY], // BE-48 GRW mass-amplified localization rate λ_GRW(m) = λ_0 (m/m_0) — Wave Y 2026-05-07.
|
|
111
|
+
[49, DIMENSIONLESS], // BE-49 Quantum Darwinism I(S:F_k) = I(S:E) - α k^(-β) — Wave W 2026-05-07.
|
|
112
|
+
[50, DIMENSIONLESS], // BE-50 Wheeler-Feynman time-symmetry residual r_TS = (A_ret-A_adv)/(A_ret+A_adv) — Wave Z 2026-05-07.
|
|
113
|
+
]);
|
|
114
|
+
/**
|
|
115
|
+
* Infer the SI dimensional signature of a bridge equation expression.
|
|
116
|
+
*
|
|
117
|
+
* @param bridgeId The id from `BRIDGE_EQUATIONS` (11..50). If present
|
|
118
|
+
* in `EXPECTED_DIMENSION_BY_BRIDGE` the inferred dim
|
|
119
|
+
* is cross-checked against the expected; mismatch =>
|
|
120
|
+
* null. If absent, the inferred dim is returned as-is.
|
|
121
|
+
* @param expr Hand-encoded ExprNode AST for the equation's RHS
|
|
122
|
+
* (or LHS).
|
|
123
|
+
* @returns The inferred SI dimension, or `null` if the expression is
|
|
124
|
+
* dimensionally inconsistent or fails the per-bridge expected
|
|
125
|
+
* dimension check.
|
|
126
|
+
*/
|
|
127
|
+
export function inferDimensionForBridge(bridgeId, expr) {
|
|
128
|
+
const r = validate(expr);
|
|
129
|
+
if (!r.ok || r.inferredDimension === null)
|
|
130
|
+
return null;
|
|
131
|
+
const expected = EXPECTED_DIMENSION_BY_BRIDGE.get(bridgeId);
|
|
132
|
+
if (expected !== undefined && !equals(r.inferredDimension, expected)) {
|
|
133
|
+
return null;
|
|
134
|
+
}
|
|
135
|
+
return r.inferredDimension;
|
|
136
|
+
}
|
|
137
|
+
//# sourceMappingURL=bridge-check.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bridge-check.js","sourceRoot":"","sources":["../../src/dimensional/bridge-check.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,EAEL,aAAa,EACb,MAAM,EACN,OAAO,EACP,SAAS,EACT,IAAI,EACJ,IAAI,EACJ,MAAM,EACN,IAAI,EACJ,KAAK,EACL,WAAW,GACZ,MAAM,YAAY,CAAC;AACpB,OAAO,EAAY,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AACpD,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,cAAc,CAAC;AAEvD,uEAAuE;AACvE,MAAM,MAAM,GAAc,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;AAE5E,8EAA8E;AAC9E,MAAM,mBAAmB,GAAc,QAAQ,CAC7C,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EACjB,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAClD,CAAC;AAEF,mFAAmF;AACnF,MAAM,WAAW,GAAc;IAC7B,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;CAC/C,CAAC;AAEF,gGAAgG;AAChG,MAAM,QAAQ,GAAc,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;AAE7C,6FAA6F;AAC7F,MAAM,YAAY,GAAc,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC;AAElD,oFAAoF;AACpF,MAAM,sBAAsB,GAAc;IACxC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;CAC7C,CAAC;AAEF,2FAA2F;AAC3F,MAAM,YAAY,GAAc;IAC9B,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;CAC9C,CAAC;AAEF;;;;;GAKG;AACH,MAAM,oBAAoB,GAAc;IACtC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;CAC/C,CAAC;AAEF;;;;;GAKG;AACH,MAAM,oBAAoB,GAAc;IACtC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;CAC9C,CAAC;AAEF;;;;;;;;;;;;GAYG;AACH,MAAM,CAAC,MAAM,4BAA4B,GAAmC,IAAI,GAAG,CAAoB;IACrG,CAAC,EAAE,EAAE,SAAS,CAAC;IACf,CAAC,EAAE,EAAE,MAAM,CAAC,EAAE,oFAAoF;IAClG,CAAC,EAAE,EAAE,YAAY,CAAC,EAAE,4EAA4E;IAChG,CAAC,EAAE,EAAE,MAAM,CAAC,EAAE,uEAAuE;IACrF,CAAC,EAAE,EAAE,OAAO,CAAC;IACb,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,gPAAgP;IAC5P,CAAC,EAAE,EAAE,MAAM,CAAC,EAAE,wSAAwS;IACtT,CAAC,EAAE,EAAE,oBAAoB,CAAC,EAAE,+GAA+G;IAC3I,CAAC,EAAE,EAAE,MAAM,CAAC;IACZ,CAAC,EAAE,EAAE,YAAY,CAAC,EAAE,yFAAyF;IAC7G,CAAC,EAAE,EAAE,sBAAsB,CAAC,EAAE,6EAA6E;IAC3G,CAAC,EAAE,EAAE,aAAa,CAAC;IACnB,CAAC,EAAE,EAAE,WAAW,CAAC,EAAE,gGAAgG;IACnH,CAAC,EAAE,EAAE,aAAa,CAAC,EAAE,0EAA0E;IAC/F,CAAC,EAAE,EAAE,aAAa,CAAC,EAAE,oXAAoX;IACzY,CAAC,EAAE,EAAE,SAAS,CAAC;IACf,CAAC,EAAE,EAAE,WAAW,CAAC,EAAE,oGAAoG;IACvH,CAAC,EAAE,EAAE,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,EAAE,iUAAiU;IAC3X,CAAC,EAAE,EAAE,MAAM,CAAC,EAAE,qFAAqF;IACnG,CAAC,EAAE,EAAE,aAAa,CAAC,EAAE,0DAA0D;IAC/E,CAAC,EAAE,EAAE,YAAY,CAAC,EAAE,yHAAyH;IAC7I,CAAC,EAAE,EAAE,aAAa,CAAC,EAAE,+FAA+F;IACpH,CAAC,EAAE,EAAE,MAAM,CAAC,EAAE,sEAAsE;IACpF,CAAC,EAAE,EAAE,aAAa,CAAC;IACnB,CAAC,EAAE,EAAE,aAAa,CAAC,EAAE,wGAAwG;IAC7H,CAAC,EAAE,EAAE,aAAa,CAAC,EAAE,8EAA8E;IACnG,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,gSAAgS;IAC5S,CAAC,EAAE,EAAE,KAAK,CAAC,EAAE,yDAAyD;IACtE,CAAC,EAAE,EAAE,aAAa,CAAC,EAAE,+FAA+F;IACpH,CAAC,EAAE,EAAE,QAAQ,CAAC,EAAE,wFAAwF;IACxG,CAAC,EAAE,EAAE,IAAI,CAAC;IACV,CAAC,EAAE,EAAE,WAAW,CAAC,EAAE,wEAAwE;IAC3F,CAAC,EAAE,EAAE,OAAO,CAAC,EAAE,oEAAoE;IACnF,CAAC,EAAE,EAAE,oBAAoB,CAAC,EAAE,0NAA0N;IACtP,CAAC,EAAE,EAAE,aAAa,CAAC,EAAE,uFAAuF;IAC5G,CAAC,EAAE,EAAE,aAAa,CAAC,EAAE,wFAAwF;IAC7G,CAAC,EAAE,EAAE,mBAAmB,CAAC;IACzB,CAAC,EAAE,EAAE,SAAS,CAAC,EAAE,yFAAyF;IAC1G,CAAC,EAAE,EAAE,aAAa,CAAC,EAAE,4EAA4E;IACjG,CAAC,EAAE,EAAE,aAAa,CAAC,EAAE,uGAAuG;CAC7H,CAAC,CAAC;AAEH;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,uBAAuB,CACrC,QAAgB,EAChB,IAAc;IAEd,MAAM,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;IACzB,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,iBAAiB,KAAK,IAAI;QAAE,OAAO,IAAI,CAAC;IACvD,MAAM,QAAQ,GAAG,4BAA4B,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IAC5D,IAAI,QAAQ,KAAK,SAAS,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,iBAAiB,EAAE,QAAQ,CAAC,EAAE,CAAC;QACrE,OAAO,IAAI,CAAC;IACd,CAAC;IACD,OAAO,CAAC,CAAC,iBAAiB,CAAC;AAC7B,CAAC"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Per-kind validation for v0.4.0 connection-layer AST nodes.
|
|
3
|
+
*
|
|
4
|
+
* Mirrors the pattern of `metric-validators.ts`: each validator is a pure
|
|
5
|
+
* function returning a local `{dim, freeIndices, role?}` carrier that
|
|
6
|
+
* validator.ts merges into its InferContext accumulator.
|
|
7
|
+
*
|
|
8
|
+
* Per docs/specification/Part-IX-Connection-Layer.md (to be written in
|
|
9
|
+
* Task 18) and v0.4.0-Design.md §4 + §7.
|
|
10
|
+
*
|
|
11
|
+
* @module dimensional/connection-validators
|
|
12
|
+
*/
|
|
13
|
+
import type { Dimension } from './types.js';
|
|
14
|
+
import type { Role } from './tensor.js';
|
|
15
|
+
import type { MetricTensorNode, CovariantIndex, PartialDerivativeChildResult } from './metric-validators.js';
|
|
16
|
+
/**
|
|
17
|
+
* ExprNode-like — uses `unknown` for `of`/`wrt` because connection-validators.ts
|
|
18
|
+
* MUST NOT import from validator.ts (module cycle). The validator's case arm
|
|
19
|
+
* threads a callback that knows the real ExprNode type.
|
|
20
|
+
*/
|
|
21
|
+
export interface CovariantDerivativeNode {
|
|
22
|
+
readonly kind: 'covariant-derivative';
|
|
23
|
+
readonly of: unknown;
|
|
24
|
+
readonly wrt: unknown;
|
|
25
|
+
readonly wrtIndex: CovariantIndex;
|
|
26
|
+
readonly gLower: MetricTensorNode;
|
|
27
|
+
readonly gInverse: MetricTensorNode;
|
|
28
|
+
}
|
|
29
|
+
export interface CovariantDerivativeValidationResult {
|
|
30
|
+
readonly dim: Dimension;
|
|
31
|
+
readonly freeIndices: Map<string, {
|
|
32
|
+
upper: number;
|
|
33
|
+
lower: number;
|
|
34
|
+
}>;
|
|
35
|
+
readonly role?: Role;
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Validate a covariant-derivative node. Pure-function module-cycle-free
|
|
39
|
+
* pattern (matches validatePartialDerivative). Recursion via the
|
|
40
|
+
* `validateChild` callback supplied by the caller (validator.ts's
|
|
41
|
+
* `infer()` dispatch).
|
|
42
|
+
*
|
|
43
|
+
* Throws:
|
|
44
|
+
* - PartialDerivativeIndexVarianceError if wrtIndex.variance !== 'lower'
|
|
45
|
+
* - MetricSignatureError if gLower is not both-lower or gInverse is not both-upper
|
|
46
|
+
*
|
|
47
|
+
* Note: the gLower / gInverse free indices are CONSUMED INTERNALLY by the
|
|
48
|
+
* Christoffel formula's contractions and do NOT propagate upward. The
|
|
49
|
+
* output freeIndices is just `of.freeIndices ∪ {wrtIndex.label: lower}`
|
|
50
|
+
* (same structural rule as tensor-partial-derivative).
|
|
51
|
+
*/
|
|
52
|
+
export declare function validateCovariantDerivative(node: CovariantDerivativeNode, validateChild: (child: unknown) => PartialDerivativeChildResult): CovariantDerivativeValidationResult;
|
|
53
|
+
//# sourceMappingURL=connection-validators.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"connection-validators.d.ts","sourceRoot":"","sources":["../../src/dimensional/connection-validators.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAC5C,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AAExC,OAAO,KAAK,EACV,gBAAgB,EAChB,cAAc,EACd,4BAA4B,EAC7B,MAAM,wBAAwB,CAAC;AAOhC;;;;GAIG;AACH,MAAM,WAAW,uBAAuB;IACtC,QAAQ,CAAC,IAAI,EAAE,sBAAsB,CAAC;IACtC,QAAQ,CAAC,EAAE,EAAE,OAAO,CAAC;IACrB,QAAQ,CAAC,GAAG,EAAE,OAAO,CAAC;IACtB,QAAQ,CAAC,QAAQ,EAAE,cAAc,CAAC;IAClC,QAAQ,CAAC,MAAM,EAAE,gBAAgB,CAAC;IAClC,QAAQ,CAAC,QAAQ,EAAE,gBAAgB,CAAC;CACrC;AAED,MAAM,WAAW,mCAAmC;IAClD,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;IACpE,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC;CACtB;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,2BAA2B,CACzC,IAAI,EAAE,uBAAuB,EAC7B,aAAa,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,4BAA4B,GAC9D,mCAAmC,CAsErC"}
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Per-kind validation for v0.4.0 connection-layer AST nodes.
|
|
3
|
+
*
|
|
4
|
+
* Mirrors the pattern of `metric-validators.ts`: each validator is a pure
|
|
5
|
+
* function returning a local `{dim, freeIndices, role?}` carrier that
|
|
6
|
+
* validator.ts merges into its InferContext accumulator.
|
|
7
|
+
*
|
|
8
|
+
* Per docs/specification/Part-IX-Connection-Layer.md (to be written in
|
|
9
|
+
* Task 18) and v0.4.0-Design.md §4 + §7.
|
|
10
|
+
*
|
|
11
|
+
* @module dimensional/connection-validators
|
|
12
|
+
*/
|
|
13
|
+
import { divide } from './algebra.js';
|
|
14
|
+
import { PartialDerivativeIndexVarianceError, MetricSignatureError, DuplicateCoordinateWarning, } from './errors.js';
|
|
15
|
+
/**
|
|
16
|
+
* Validate a covariant-derivative node. Pure-function module-cycle-free
|
|
17
|
+
* pattern (matches validatePartialDerivative). Recursion via the
|
|
18
|
+
* `validateChild` callback supplied by the caller (validator.ts's
|
|
19
|
+
* `infer()` dispatch).
|
|
20
|
+
*
|
|
21
|
+
* Throws:
|
|
22
|
+
* - PartialDerivativeIndexVarianceError if wrtIndex.variance !== 'lower'
|
|
23
|
+
* - MetricSignatureError if gLower is not both-lower or gInverse is not both-upper
|
|
24
|
+
*
|
|
25
|
+
* Note: the gLower / gInverse free indices are CONSUMED INTERNALLY by the
|
|
26
|
+
* Christoffel formula's contractions and do NOT propagate upward. The
|
|
27
|
+
* output freeIndices is just `of.freeIndices ∪ {wrtIndex.label: lower}`
|
|
28
|
+
* (same structural rule as tensor-partial-derivative).
|
|
29
|
+
*/
|
|
30
|
+
export function validateCovariantDerivative(node, validateChild) {
|
|
31
|
+
if (node.wrtIndex.variance !== 'lower') {
|
|
32
|
+
throw new PartialDerivativeIndexVarianceError(node.wrtIndex.label);
|
|
33
|
+
}
|
|
34
|
+
if (node.gLower.indices[0].variance !== 'lower' ||
|
|
35
|
+
node.gLower.indices[1].variance !== 'lower') {
|
|
36
|
+
throw new MetricSignatureError(node.gLower.name, `covariant-derivative requires gLower to be both-lower (got ` +
|
|
37
|
+
`[${node.gLower.indices[0].variance}, ${node.gLower.indices[1].variance}])`);
|
|
38
|
+
}
|
|
39
|
+
if (node.gInverse.indices[0].variance !== 'upper' ||
|
|
40
|
+
node.gInverse.indices[1].variance !== 'upper') {
|
|
41
|
+
throw new MetricSignatureError(node.gInverse.name, `covariant-derivative requires gInverse to be both-upper (got ` +
|
|
42
|
+
`[${node.gInverse.indices[0].variance}, ${node.gInverse.indices[1].variance}])`);
|
|
43
|
+
}
|
|
44
|
+
const ofResult = validateChild(node.of);
|
|
45
|
+
const wrtResult = validateChild(node.wrt);
|
|
46
|
+
// gLower and gInverse are validated via validateChild ONLY for their dim
|
|
47
|
+
// sanity-check; their free indices are deliberately discarded — the
|
|
48
|
+
// Christoffel contractions inside ∇_μ consume them internally.
|
|
49
|
+
// (We don't even need to call validateChild on them; their dims are
|
|
50
|
+
// structurally known and any malformed metric would have failed the
|
|
51
|
+
// signature checks above.)
|
|
52
|
+
// Per §VIII.4 (pderiv-label-collision-rejected analog):
|
|
53
|
+
// wrtIndex.label must not collide with of.freeIndices.
|
|
54
|
+
//
|
|
55
|
+
// I1 HYBRID DECISION: throw by default (soundness > friendliness);
|
|
56
|
+
// env var UPT_ALLOW_COORD_SHADOW=1 downgrades to process.emitWarning.
|
|
57
|
+
// Task 13 covers BOTH paths (default throws; env=1 warns).
|
|
58
|
+
if (ofResult.freeIndices.has(node.wrtIndex.label)) {
|
|
59
|
+
const conflict = node.wrtIndex.label;
|
|
60
|
+
if (typeof process !== 'undefined' && process.env?.UPT_ALLOW_COORD_SHADOW === '1') {
|
|
61
|
+
process.emitWarning(new DuplicateCoordinateWarning(conflict, conflict));
|
|
62
|
+
}
|
|
63
|
+
else {
|
|
64
|
+
throw new MetricSignatureError(`covariant-derivative`, `wrt='${conflict}' shadows an existing free index '${conflict}'. ` +
|
|
65
|
+
`Rename the operand's free index or set UPT_ALLOW_COORD_SHADOW=1 to ` +
|
|
66
|
+
`downgrade to a warning.`);
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
// Output freeIndices = of.freeIndices ∪ {wrtIndex.label: lower}.
|
|
70
|
+
const freeIndices = new Map();
|
|
71
|
+
for (const [label, counts] of ofResult.freeIndices)
|
|
72
|
+
freeIndices.set(label, counts);
|
|
73
|
+
freeIndices.set(node.wrtIndex.label, { upper: 0, lower: 1 });
|
|
74
|
+
// Output dim = divide(of.dim, wrt.dim) — same as pderiv.
|
|
75
|
+
const dim = divide(ofResult.dim, wrtResult.dim);
|
|
76
|
+
// Role passthrough: propagate of.role only when the child has one; omit
|
|
77
|
+
// otherwise. Mirrors the `role?: Role` optional declaration on
|
|
78
|
+
// CovariantDerivativeValidationResult — don't force a 'field' default when
|
|
79
|
+
// the child has no role (e.g. a plain scalar operand).
|
|
80
|
+
return ofResult.role !== undefined
|
|
81
|
+
? { dim, freeIndices, role: ofResult.role }
|
|
82
|
+
: { dim, freeIndices };
|
|
83
|
+
}
|
|
84
|
+
//# sourceMappingURL=connection-validators.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"connection-validators.js","sourceRoot":"","sources":["../../src/dimensional/connection-validators.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* v0.4.0 connection-layer helpers (composite-formula builders that produce
|
|
3
|
+
* trees of v0.3.0 AST nodes). The substantive new operator (∇_μ) is a
|
|
4
|
+
* dedicated ExprNode kind defined in connection-validators.ts; this module
|
|
5
|
+
* holds the Christoffel formula builder (a composite, like raise/lower).
|
|
6
|
+
*
|
|
7
|
+
* Per docs/specification/Part-IX-Connection-Layer.md (Task 18) and
|
|
8
|
+
* v0.4.0-Design.md §5.
|
|
9
|
+
*
|
|
10
|
+
* @module dimensional/connection
|
|
11
|
+
*/
|
|
12
|
+
import type { TensorSymbolNode } from './tensor.js';
|
|
13
|
+
import type { MetricTensorNode } from './metric-validators.js';
|
|
14
|
+
import type { ExprNode } from './validator.js';
|
|
15
|
+
/**
|
|
16
|
+
* Christoffel symbol Γ^λ_μν = (1/2) g^λρ (∂_μ g_ρν + ∂_ν g_ρμ − ∂_ρ g_μν).
|
|
17
|
+
*
|
|
18
|
+
* Builds a composite tree of v0.3.0 nodes. The negation is encoded as binary
|
|
19
|
+
* subtraction at the outer level: (∂_μ g_ρν + ∂_ν g_ρμ) − ∂_ρ g_μν.
|
|
20
|
+
* Unary minus is NOT supported in v0.4.0 (validator special-cases '-' as
|
|
21
|
+
* binary-only).
|
|
22
|
+
*
|
|
23
|
+
* The fresh dummy label ρ is generated via the deterministic freshLabel scheme
|
|
24
|
+
* (Part-VIII §VIII.5 TENSOR-RULE raise-lower-fresh-label-deterministic):
|
|
25
|
+
* tries 'ρ' first; falls back to 'ρ_1', 'ρ_2', … until non-colliding.
|
|
26
|
+
*
|
|
27
|
+
* Per v0.4.0-Design.md §5; Levi-Civita connection only.
|
|
28
|
+
*
|
|
29
|
+
* @param gLower Covariant metric g_ab (both indices lower).
|
|
30
|
+
* @param gInverse Contravariant inverse metric g^ab (both indices upper).
|
|
31
|
+
* @param upper Free upper index label λ.
|
|
32
|
+
* @param lowerA First free lower index label μ.
|
|
33
|
+
* @param lowerB Second free lower index label ν.
|
|
34
|
+
* @param xCoord Coordinate tensor x^α — used as the wrt argument for pderiv.
|
|
35
|
+
*/
|
|
36
|
+
export declare function christoffel(gLower: MetricTensorNode, gInverse: MetricTensorNode, upper: string, // λ
|
|
37
|
+
lowerA: string, // μ
|
|
38
|
+
lowerB: string, // ν
|
|
39
|
+
xCoord: TensorSymbolNode): ExprNode;
|
|
40
|
+
//# sourceMappingURL=connection.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"connection.d.ts","sourceRoot":"","sources":["../../src/dimensional/connection.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAIH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAEpD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC/D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAG/C;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,WAAW,CACzB,MAAM,EAAE,gBAAgB,EACxB,QAAQ,EAAE,gBAAgB,EAC1B,KAAK,EAAE,MAAM,EAAU,IAAI;AAC3B,MAAM,EAAE,MAAM,EAAS,IAAI;AAC3B,MAAM,EAAE,MAAM,EAAS,IAAI;AAC3B,MAAM,EAAE,gBAAgB,GACvB,QAAQ,CAuDV"}
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* v0.4.0 connection-layer helpers (composite-formula builders that produce
|
|
3
|
+
* trees of v0.3.0 AST nodes). The substantive new operator (∇_μ) is a
|
|
4
|
+
* dedicated ExprNode kind defined in connection-validators.ts; this module
|
|
5
|
+
* holds the Christoffel formula builder (a composite, like raise/lower).
|
|
6
|
+
*
|
|
7
|
+
* Per docs/specification/Part-IX-Connection-Layer.md (Task 18) and
|
|
8
|
+
* v0.4.0-Design.md §5.
|
|
9
|
+
*
|
|
10
|
+
* @module dimensional/connection
|
|
11
|
+
*/
|
|
12
|
+
import { DIMENSIONLESS } from './types.js';
|
|
13
|
+
import { contract } from './tensor.js';
|
|
14
|
+
import { metric, pderiv } from './metric.js';
|
|
15
|
+
import { freshLabel } from './fresh-label.js';
|
|
16
|
+
/**
|
|
17
|
+
* Christoffel symbol Γ^λ_μν = (1/2) g^λρ (∂_μ g_ρν + ∂_ν g_ρμ − ∂_ρ g_μν).
|
|
18
|
+
*
|
|
19
|
+
* Builds a composite tree of v0.3.0 nodes. The negation is encoded as binary
|
|
20
|
+
* subtraction at the outer level: (∂_μ g_ρν + ∂_ν g_ρμ) − ∂_ρ g_μν.
|
|
21
|
+
* Unary minus is NOT supported in v0.4.0 (validator special-cases '-' as
|
|
22
|
+
* binary-only).
|
|
23
|
+
*
|
|
24
|
+
* The fresh dummy label ρ is generated via the deterministic freshLabel scheme
|
|
25
|
+
* (Part-VIII §VIII.5 TENSOR-RULE raise-lower-fresh-label-deterministic):
|
|
26
|
+
* tries 'ρ' first; falls back to 'ρ_1', 'ρ_2', … until non-colliding.
|
|
27
|
+
*
|
|
28
|
+
* Per v0.4.0-Design.md §5; Levi-Civita connection only.
|
|
29
|
+
*
|
|
30
|
+
* @param gLower Covariant metric g_ab (both indices lower).
|
|
31
|
+
* @param gInverse Contravariant inverse metric g^ab (both indices upper).
|
|
32
|
+
* @param upper Free upper index label λ.
|
|
33
|
+
* @param lowerA First free lower index label μ.
|
|
34
|
+
* @param lowerB Second free lower index label ν.
|
|
35
|
+
* @param xCoord Coordinate tensor x^α — used as the wrt argument for pderiv.
|
|
36
|
+
*/
|
|
37
|
+
export function christoffel(gLower, gInverse, upper, // λ
|
|
38
|
+
lowerA, // μ
|
|
39
|
+
lowerB, // ν
|
|
40
|
+
xCoord) {
|
|
41
|
+
// Collect labels in use to generate a fresh dummy.
|
|
42
|
+
const taken = new Set([upper, lowerA, lowerB]);
|
|
43
|
+
for (const idx of gLower.indices)
|
|
44
|
+
taken.add(idx.label);
|
|
45
|
+
for (const idx of gInverse.indices)
|
|
46
|
+
taken.add(idx.label);
|
|
47
|
+
// Finding #2 fix: include xCoord's own index labels so the fresh dummy
|
|
48
|
+
// cannot alias a coordinate-tensor index (e.g. xCoord with label 'ρ').
|
|
49
|
+
for (const idx of xCoord.indices)
|
|
50
|
+
taken.add(idx.label);
|
|
51
|
+
const rho = freshLabel('ρ', taken);
|
|
52
|
+
// Renamed inverse metric so its indices match: g^{λ rho}.
|
|
53
|
+
const gInverseRenamed = metric(gInverse.name, [
|
|
54
|
+
{ label: upper, variance: 'upper' },
|
|
55
|
+
{ label: rho, variance: 'upper' },
|
|
56
|
+
], gInverse.dim, gInverse.signature, gInverse.derivativeStrategy);
|
|
57
|
+
// The three lowered metrics: g_{ρ ν}, g_{ρ μ}, g_{μ ν}.
|
|
58
|
+
const gRho_nu = metric(gLower.name, [{ label: rho, variance: 'lower' }, { label: lowerB, variance: 'lower' }], gLower.dim, gLower.signature, gLower.derivativeStrategy);
|
|
59
|
+
const gRho_mu = metric(gLower.name, [{ label: rho, variance: 'lower' }, { label: lowerA, variance: 'lower' }], gLower.dim, gLower.signature, gLower.derivativeStrategy);
|
|
60
|
+
const gMu_nu = metric(gLower.name, [{ label: lowerA, variance: 'lower' }, { label: lowerB, variance: 'lower' }], gLower.dim, gLower.signature, gLower.derivativeStrategy);
|
|
61
|
+
// The three pderiv terms: ∂_μ g_{ρν}, ∂_ν g_{ρμ}, ∂_ρ g_{μν}.
|
|
62
|
+
const dmu_gRhoNu = pderiv(gRho_nu, xCoord, { label: lowerA, variance: 'lower' });
|
|
63
|
+
const dnu_gRhoMu = pderiv(gRho_mu, xCoord, { label: lowerB, variance: 'lower' });
|
|
64
|
+
const drho_gMuNu = pderiv(gMu_nu, xCoord, { label: rho, variance: 'lower' });
|
|
65
|
+
// Sum: (∂_μ g_{ρν} + ∂_ν g_{ρμ}) − ∂_ρ g_{μν}.
|
|
66
|
+
// Binary subtraction — unary minus is NOT supported in v0.4.0.
|
|
67
|
+
const innerSum = {
|
|
68
|
+
kind: 'op', op: '+',
|
|
69
|
+
args: [dmu_gRhoNu, dnu_gRhoMu],
|
|
70
|
+
};
|
|
71
|
+
const sumExpr = {
|
|
72
|
+
kind: 'op', op: '-',
|
|
73
|
+
args: [innerSum, drho_gMuNu], // binary subtraction
|
|
74
|
+
};
|
|
75
|
+
// Half-factor: dimensionless scalar.
|
|
76
|
+
const half = { kind: 'symbol', name: '(1/2)', dim: DIMENSIONLESS };
|
|
77
|
+
// Final: (1/2) · g^{λρ} · sumExpr
|
|
78
|
+
// Γ has units 1/LENGTH (geometrized DIMENSIONLESS metric).
|
|
79
|
+
return contract(half, gInverseRenamed, sumExpr);
|
|
80
|
+
}
|
|
81
|
+
//# sourceMappingURL=connection.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"connection.js","sourceRoot":"","sources":["../../src/dimensional/connection.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,30 @@
|
|
|
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 { Dimension } from './types.js';
|
|
18
|
+
/** Reduced Planck constant ℏ — action [M L^2 T^-1]. */
|
|
19
|
+
export declare const hbar: Dimension;
|
|
20
|
+
/** Speed of light c — velocity [L T^-1]. */
|
|
21
|
+
export declare const c: Dimension;
|
|
22
|
+
/** Newton's gravitational constant G — [L^3 M^-1 T^-2]. */
|
|
23
|
+
export declare const G: Dimension;
|
|
24
|
+
/** Boltzmann constant k_B — energy / temperature [M L^2 T^-2 Θ^-1]. */
|
|
25
|
+
export declare const k_B: Dimension;
|
|
26
|
+
/** Elementary charge e — [T I] (coulombs). */
|
|
27
|
+
export declare const e: Dimension;
|
|
28
|
+
/** Planck length ℓ_P — [L]. */
|
|
29
|
+
export declare const l_P: Dimension;
|
|
30
|
+
//# sourceMappingURL=constants.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/dimensional/constants.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,EACL,SAAS,EAKV,MAAM,YAAY,CAAC;AAEpB,uDAAuD;AACvD,eAAO,MAAM,IAAI,EAAE,SAAkB,CAAC;AAEtC,4CAA4C;AAC5C,eAAO,MAAM,CAAC,EAAE,SAAoB,CAAC;AAErC,2DAA2D;AAC3D,eAAO,MAAM,CAAC,EAAE,SAA8D,CAAC;AAE/E,uEAAuE;AACvE,eAAO,MAAM,GAAG,EAAE,SAA8D,CAAC;AAEjF,8CAA8C;AAC9C,eAAO,MAAM,CAAC,EAAE,SAAkB,CAAC;AAInC,+BAA+B;AAC/B,eAAO,MAAM,GAAG,EAAE,SAAkB,CAAC"}
|