universal-physics-tensor 0.47.1 → 1.0.2
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 -21
- package/README.md +405 -383
- package/bin/upt.mjs +7 -1
- package/dist/atlas/benchmark/hybrid-retrieval.d.ts +108 -0
- package/dist/atlas/benchmark/hybrid-retrieval.d.ts.map +1 -0
- package/dist/atlas/benchmark/hybrid-retrieval.js +241 -0
- package/dist/atlas/benchmark/hybrid-retrieval.js.map +1 -0
- package/dist/atlas/catalog-formal-ref.d.ts +24 -0
- package/dist/atlas/catalog-formal-ref.d.ts.map +1 -0
- package/dist/atlas/catalog-formal-ref.js +36 -0
- package/dist/atlas/catalog-formal-ref.js.map +1 -0
- package/dist/atlas/chain-pipeline.d.ts +52 -0
- package/dist/atlas/chain-pipeline.d.ts.map +1 -0
- package/dist/atlas/chain-pipeline.js +176 -0
- package/dist/atlas/chain-pipeline.js.map +1 -0
- package/dist/atlas/composition-table.d.ts +11 -46
- package/dist/atlas/composition-table.d.ts.map +1 -1
- package/dist/atlas/composition-table.js +7 -124
- package/dist/atlas/composition-table.js.map +1 -1
- package/dist/atlas/conventions.d.ts +4 -58
- package/dist/atlas/conventions.d.ts.map +1 -1
- package/dist/atlas/conventions.js +3 -88
- package/dist/atlas/conventions.js.map +1 -1
- package/dist/atlas/derive-evidence.d.ts +50 -3
- package/dist/atlas/derive-evidence.d.ts.map +1 -1
- package/dist/atlas/derive-evidence.js +73 -4
- package/dist/atlas/derive-evidence.js.map +1 -1
- package/dist/atlas/diffusion/bridges-closure.d.ts.map +1 -1
- package/dist/atlas/diffusion/bridges-closure.js +5 -1
- package/dist/atlas/diffusion/bridges-closure.js.map +1 -1
- package/dist/atlas/index.d.ts +9 -7
- package/dist/atlas/index.d.ts.map +1 -1
- package/dist/atlas/index.js +6 -5
- package/dist/atlas/index.js.map +1 -1
- package/dist/atlas/oscillators/bridges-exact.d.ts.map +1 -1
- package/dist/atlas/oscillators/bridges-exact.js +6 -0
- package/dist/atlas/oscillators/bridges-exact.js.map +1 -1
- package/dist/atlas/oscillators/bridges-limits.d.ts +2 -0
- package/dist/atlas/oscillators/bridges-limits.d.ts.map +1 -1
- package/dist/atlas/oscillators/bridges-limits.js +11 -19
- package/dist/atlas/oscillators/bridges-limits.js.map +1 -1
- package/dist/atlas/oscillators/limit-witnesses.d.ts +93 -0
- package/dist/atlas/oscillators/limit-witnesses.d.ts.map +1 -0
- package/dist/atlas/oscillators/limit-witnesses.js +152 -0
- package/dist/atlas/oscillators/limit-witnesses.js.map +1 -0
- package/dist/atlas/oscillators/models.d.ts +2 -1
- package/dist/atlas/oscillators/models.d.ts.map +1 -1
- package/dist/atlas/oscillators/models.js +4 -3
- package/dist/atlas/oscillators/models.js.map +1 -1
- package/dist/atlas/oscillators/norm-transport-witness.d.ts +37 -0
- package/dist/atlas/oscillators/norm-transport-witness.d.ts.map +1 -0
- package/dist/atlas/oscillators/norm-transport-witness.js +58 -0
- package/dist/atlas/oscillators/norm-transport-witness.js.map +1 -0
- package/dist/atlas/oscillators/norm-transport.d.ts +44 -0
- package/dist/atlas/oscillators/norm-transport.d.ts.map +1 -0
- package/dist/atlas/oscillators/norm-transport.js +66 -0
- package/dist/atlas/oscillators/norm-transport.js.map +1 -0
- package/dist/atlas/oscillators/norms.d.ts +11 -0
- package/dist/atlas/oscillators/norms.d.ts.map +1 -0
- package/dist/atlas/oscillators/norms.js +11 -0
- package/dist/atlas/oscillators/norms.js.map +1 -0
- package/dist/atlas/oscillators/pendulum-motion.d.ts +38 -0
- package/dist/atlas/oscillators/pendulum-motion.d.ts.map +1 -0
- package/dist/atlas/oscillators/pendulum-motion.js +122 -0
- package/dist/atlas/oscillators/pendulum-motion.js.map +1 -0
- package/dist/atlas/oscillators/phase-carriage.d.ts +38 -0
- package/dist/atlas/oscillators/phase-carriage.d.ts.map +1 -0
- package/dist/atlas/oscillators/phase-carriage.js +96 -0
- package/dist/atlas/oscillators/phase-carriage.js.map +1 -0
- package/dist/atlas/oscillators/phase-translation.d.ts +46 -0
- package/dist/atlas/oscillators/phase-translation.d.ts.map +1 -0
- package/dist/atlas/oscillators/phase-translation.js +178 -0
- package/dist/atlas/oscillators/phase-translation.js.map +1 -0
- package/dist/atlas/oscillators/position-translation.d.ts +59 -0
- package/dist/atlas/oscillators/position-translation.d.ts.map +1 -0
- package/dist/atlas/oscillators/position-translation.js +254 -0
- package/dist/atlas/oscillators/position-translation.js.map +1 -0
- package/dist/atlas/path-bound.d.ts +126 -9
- package/dist/atlas/path-bound.d.ts.map +1 -1
- package/dist/atlas/path-bound.js +372 -23
- package/dist/atlas/path-bound.js.map +1 -1
- package/dist/atlas/physjs-ref.d.ts +141 -0
- package/dist/atlas/physjs-ref.d.ts.map +1 -0
- package/dist/atlas/physjs-ref.js +878 -0
- package/dist/atlas/physjs-ref.js.map +1 -0
- package/dist/atlas/proof-target.d.ts +32 -0
- package/dist/atlas/proof-target.d.ts.map +1 -0
- package/dist/atlas/proof-target.js +140 -0
- package/dist/atlas/proof-target.js.map +1 -0
- package/dist/atlas/regime.d.ts +12 -136
- package/dist/atlas/regime.d.ts.map +1 -1
- package/dist/atlas/regime.js +8 -254
- package/dist/atlas/regime.js.map +1 -1
- package/dist/atlas/serialize.d.ts.map +1 -1
- package/dist/atlas/serialize.js +25 -0
- package/dist/atlas/serialize.js.map +1 -1
- package/dist/atlas/translation-registry.d.ts +22 -0
- package/dist/atlas/translation-registry.d.ts.map +1 -0
- package/dist/atlas/translation-registry.js +31 -0
- package/dist/atlas/translation-registry.js.map +1 -0
- package/dist/atlas/translation.d.ts +116 -0
- package/dist/atlas/translation.d.ts.map +1 -0
- package/dist/atlas/translation.js +34 -0
- package/dist/atlas/translation.js.map +1 -0
- package/dist/atlas/types.d.ts +74 -240
- package/dist/atlas/types.d.ts.map +1 -1
- package/dist/atlas/types.js +5 -37
- package/dist/atlas/types.js.map +1 -1
- package/dist/atlas/waves/bridges-closure.d.ts.map +1 -1
- package/dist/atlas/waves/bridges-closure.js +4 -0
- package/dist/atlas/waves/bridges-closure.js.map +1 -1
- package/dist/atlas/waves/bridges.d.ts.map +1 -1
- package/dist/atlas/waves/bridges.js +3 -0
- package/dist/atlas/waves/bridges.js.map +1 -1
- package/dist/atlas/waves/models.js +1 -1
- package/dist/atlas/waves/models.js.map +1 -1
- package/dist/atlas/witness-dominance.d.ts +50 -0
- package/dist/atlas/witness-dominance.d.ts.map +1 -0
- package/dist/atlas/witness-dominance.js +86 -0
- package/dist/atlas/witness-dominance.js.map +1 -0
- package/dist/atlas/witness-specs.d.ts +30 -0
- package/dist/atlas/witness-specs.d.ts.map +1 -1
- package/dist/atlas/witness-specs.js +107 -0
- package/dist/atlas/witness-specs.js.map +1 -1
- package/dist/bridges/be53-yang-mills-confrontation.d.ts +81 -0
- package/dist/bridges/be53-yang-mills-confrontation.d.ts.map +1 -0
- package/dist/bridges/be53-yang-mills-confrontation.js +110 -0
- package/dist/bridges/be53-yang-mills-confrontation.js.map +1 -0
- package/dist/bridges/be63-chandrasekhar-mass.d.ts.map +1 -1
- package/dist/bridges/be63-chandrasekhar-mass.js +1 -3
- package/dist/bridges/be63-chandrasekhar-mass.js.map +1 -1
- package/dist/bridges/confrontation-coverage.d.ts +5 -61
- package/dist/bridges/confrontation-coverage.d.ts.map +1 -1
- package/dist/bridges/confrontation-coverage.js +5 -70
- package/dist/bridges/confrontation-coverage.js.map +1 -1
- package/dist/bridges/confrontations.d.ts +1 -1
- package/dist/bridges/confrontations.d.ts.map +1 -1
- package/dist/bridges/confrontations.js +291 -3
- package/dist/bridges/confrontations.js.map +1 -1
- package/dist/bridges/equations/be-13-einstein-trace.d.ts +2 -3
- package/dist/bridges/equations/be-13-einstein-trace.d.ts.map +1 -1
- package/dist/bridges/equations/be-13-einstein-trace.js +2 -3
- package/dist/bridges/equations/be-13-einstein-trace.js.map +1 -1
- package/dist/bridges/equations/be-38-mond.d.ts +7 -5
- package/dist/bridges/equations/be-38-mond.d.ts.map +1 -1
- package/dist/bridges/equations/be-38-mond.js +7 -5
- package/dist/bridges/equations/be-38-mond.js.map +1 -1
- package/dist/bridges/equations/be-42-hawking-temperature.d.ts +3 -0
- package/dist/bridges/equations/be-42-hawking-temperature.d.ts.map +1 -1
- package/dist/bridges/equations/be-42-hawking-temperature.js +8 -1
- package/dist/bridges/equations/be-42-hawking-temperature.js.map +1 -1
- package/dist/bridges/equations/be-53-yang-mills-beta.d.ts +21 -0
- package/dist/bridges/equations/be-53-yang-mills-beta.d.ts.map +1 -1
- package/dist/bridges/equations/be-53-yang-mills-beta.js +12 -0
- package/dist/bridges/equations/be-53-yang-mills-beta.js.map +1 -1
- package/dist/bridges/evaluator-inputs.d.ts +21 -0
- package/dist/bridges/evaluator-inputs.d.ts.map +1 -0
- package/dist/bridges/evaluator-inputs.js +75 -0
- package/dist/bridges/evaluator-inputs.js.map +1 -0
- package/dist/bridges/evaluators.d.ts +46 -0
- package/dist/bridges/evaluators.d.ts.map +1 -1
- package/dist/bridges/evaluators.js +57 -16
- package/dist/bridges/evaluators.js.map +1 -1
- package/dist/bridges/gravitational-lensing.d.ts +1 -1
- package/dist/bridges/gravitational-lensing.js +1 -1
- package/dist/bridges/index.d.ts +3 -2
- package/dist/bridges/index.d.ts.map +1 -1
- package/dist/bridges/index.js +15 -14
- package/dist/bridges/index.js.map +1 -1
- package/dist/bridges/observations/types.d.ts +110 -2
- package/dist/bridges/observations/types.d.ts.map +1 -1
- package/dist/bridges/observations/types.js +29 -0
- package/dist/bridges/observations/types.js.map +1 -1
- package/dist/bridges/perihelion-precession.d.ts +1 -1
- package/dist/bridges/perihelion-precession.js +1 -1
- package/dist/bridges/tensor-index.d.ts +39 -0
- package/dist/bridges/tensor-index.d.ts.map +1 -0
- package/dist/bridges/tensor-index.js +66 -0
- package/dist/bridges/tensor-index.js.map +1 -0
- package/dist/canonical/canonical-equation.d.ts +1 -1
- package/dist/canonical/canonical-equation.d.ts.map +1 -1
- package/dist/canonical/entries/atomic.d.ts.map +1 -1
- package/dist/canonical/entries/atomic.js +32 -10
- package/dist/canonical/entries/atomic.js.map +1 -1
- package/dist/canonical/entries/dimensional-classics.js +2 -2
- package/dist/canonical/entries/dimensional-classics.js.map +1 -1
- package/dist/canonical/entries/mechanics.d.ts.map +1 -1
- package/dist/canonical/entries/mechanics.js +10 -6
- package/dist/canonical/entries/mechanics.js.map +1 -1
- package/dist/canonical/entries/relativity.d.ts.map +1 -1
- package/dist/canonical/entries/relativity.js +41 -8
- package/dist/canonical/entries/relativity.js.map +1 -1
- package/dist/canonical/entries/thermo-nuclear-cosmo.js +5 -5
- package/dist/canonical/entries/thermo-nuclear-cosmo.js.map +1 -1
- package/dist/canonical/linkage.d.ts.map +1 -1
- package/dist/canonical/linkage.js +31 -28
- package/dist/canonical/linkage.js.map +1 -1
- package/dist/canonical/normal-form.d.ts +17 -0
- package/dist/canonical/normal-form.d.ts.map +1 -1
- package/dist/canonical/normal-form.js +21 -4
- package/dist/canonical/normal-form.js.map +1 -1
- package/dist/canonical/structural.d.ts +84 -0
- package/dist/canonical/structural.d.ts.map +1 -0
- package/dist/canonical/structural.js +107 -0
- package/dist/canonical/structural.js.map +1 -0
- package/dist/cases/brownian-sphere.d.ts +68 -0
- package/dist/cases/brownian-sphere.d.ts.map +1 -0
- package/dist/cases/brownian-sphere.js +353 -0
- package/dist/cases/brownian-sphere.js.map +1 -0
- package/dist/cases/damped-resonator.d.ts +23 -0
- package/dist/cases/damped-resonator.d.ts.map +1 -0
- package/dist/cases/damped-resonator.js +224 -0
- package/dist/cases/damped-resonator.js.map +1 -0
- package/dist/cases/index.d.ts +11 -0
- package/dist/cases/index.d.ts.map +1 -0
- package/dist/cases/index.js +29 -0
- package/dist/cases/index.js.map +1 -0
- package/dist/cases/kepler-rv.d.ts +13 -0
- package/dist/cases/kepler-rv.d.ts.map +1 -0
- package/dist/cases/kepler-rv.js +168 -0
- package/dist/cases/kepler-rv.js.map +1 -0
- package/dist/cases/lumped-cooling.d.ts +46 -0
- package/dist/cases/lumped-cooling.d.ts.map +1 -0
- package/dist/cases/lumped-cooling.js +261 -0
- package/dist/cases/lumped-cooling.js.map +1 -0
- package/dist/cases/quadrature.d.ts +14 -0
- package/dist/cases/quadrature.d.ts.map +1 -0
- package/dist/cases/quadrature.js +41 -0
- package/dist/cases/quadrature.js.map +1 -0
- package/dist/cases/resistor-noise.d.ts +14 -0
- package/dist/cases/resistor-noise.d.ts.map +1 -0
- package/dist/cases/resistor-noise.js +210 -0
- package/dist/cases/resistor-noise.js.map +1 -0
- package/dist/cases/skin-depth.d.ts +21 -0
- package/dist/cases/skin-depth.d.ts.map +1 -0
- package/dist/cases/skin-depth.js +174 -0
- package/dist/cases/skin-depth.js.map +1 -0
- package/dist/cases/types.d.ts +115 -0
- package/dist/cases/types.d.ts.map +1 -0
- package/dist/cases/types.js +20 -0
- package/dist/cases/types.js.map +1 -0
- package/dist/cli/commands/_atlas-map.d.ts +409 -0
- package/dist/cli/commands/_atlas-map.d.ts.map +1 -0
- package/dist/cli/commands/_atlas-map.js +1014 -0
- package/dist/cli/commands/_atlas-map.js.map +1 -0
- package/dist/cli/commands/_atlas-route.d.ts +111 -0
- package/dist/cli/commands/_atlas-route.d.ts.map +1 -0
- package/dist/cli/commands/_atlas-route.js +140 -0
- package/dist/cli/commands/_atlas-route.js.map +1 -0
- package/dist/cli/commands/_discovery-opts.d.ts.map +1 -1
- package/dist/cli/commands/_discovery-opts.js +10 -1
- package/dist/cli/commands/_discovery-opts.js.map +1 -1
- package/dist/cli/commands/atlas.d.ts +20 -0
- package/dist/cli/commands/atlas.d.ts.map +1 -1
- package/dist/cli/commands/atlas.js +333 -19
- package/dist/cli/commands/atlas.js.map +1 -1
- package/dist/cli/commands/audit.d.ts.map +1 -1
- package/dist/cli/commands/audit.js +12 -3
- package/dist/cli/commands/audit.js.map +1 -1
- package/dist/cli/commands/axes.js +4 -4
- package/dist/cli/commands/candidates.d.ts.map +1 -1
- package/dist/cli/commands/candidates.js +3 -2
- package/dist/cli/commands/candidates.js.map +1 -1
- package/dist/cli/commands/canonical.d.ts.map +1 -1
- package/dist/cli/commands/canonical.js +39 -10
- package/dist/cli/commands/canonical.js.map +1 -1
- package/dist/cli/commands/confront.d.ts.map +1 -1
- package/dist/cli/commands/confront.js +210 -28
- package/dist/cli/commands/confront.js.map +1 -1
- package/dist/cli/commands/connectors.d.ts.map +1 -1
- package/dist/cli/commands/connectors.js +5 -4
- package/dist/cli/commands/connectors.js.map +1 -1
- package/dist/cli/commands/coverage.js +3 -3
- package/dist/cli/commands/derive.d.ts.map +1 -1
- package/dist/cli/commands/derive.js +22 -9
- package/dist/cli/commands/derive.js.map +1 -1
- package/dist/cli/commands/discover.d.ts.map +1 -1
- package/dist/cli/commands/discover.js +149 -32
- package/dist/cli/commands/discover.js.map +1 -1
- package/dist/cli/commands/eval.d.ts.map +1 -1
- package/dist/cli/commands/eval.js +87 -17
- package/dist/cli/commands/eval.js.map +1 -1
- package/dist/cli/commands/evaluate.d.ts +30 -0
- package/dist/cli/commands/evaluate.d.ts.map +1 -1
- package/dist/cli/commands/evaluate.js +441 -25
- package/dist/cli/commands/evaluate.js.map +1 -1
- package/dist/cli/commands/explain.d.ts.map +1 -1
- package/dist/cli/commands/explain.js +38 -11
- package/dist/cli/commands/explain.js.map +1 -1
- package/dist/cli/commands/frontier.d.ts +3 -0
- package/dist/cli/commands/frontier.d.ts.map +1 -0
- package/dist/cli/commands/frontier.js +28 -0
- package/dist/cli/commands/frontier.js.map +1 -0
- package/dist/cli/commands/ground.d.ts.map +1 -1
- package/dist/cli/commands/ground.js +37 -12
- package/dist/cli/commands/ground.js.map +1 -1
- package/dist/cli/commands/index.d.ts +5 -0
- package/dist/cli/commands/index.d.ts.map +1 -1
- package/dist/cli/commands/index.js +5 -0
- package/dist/cli/commands/index.js.map +1 -1
- package/dist/cli/commands/map.d.ts +8 -0
- package/dist/cli/commands/map.d.ts.map +1 -1
- package/dist/cli/commands/map.js +385 -57
- package/dist/cli/commands/map.js.map +1 -1
- package/dist/cli/commands/metric.d.ts +3 -0
- package/dist/cli/commands/metric.d.ts.map +1 -0
- package/dist/cli/commands/metric.js +136 -0
- package/dist/cli/commands/metric.js.map +1 -0
- package/dist/cli/commands/path.d.ts +109 -1
- package/dist/cli/commands/path.d.ts.map +1 -1
- package/dist/cli/commands/path.js +1019 -109
- package/dist/cli/commands/path.js.map +1 -1
- package/dist/cli/commands/predict.d.ts.map +1 -1
- package/dist/cli/commands/predict.js +3 -2
- package/dist/cli/commands/predict.js.map +1 -1
- package/dist/cli/commands/priority.d.ts.map +1 -1
- package/dist/cli/commands/priority.js +3 -2
- package/dist/cli/commands/priority.js.map +1 -1
- package/dist/cli/commands/probe.d.ts +7 -0
- package/dist/cli/commands/probe.d.ts.map +1 -1
- package/dist/cli/commands/probe.js +234 -52
- package/dist/cli/commands/probe.js.map +1 -1
- package/dist/cli/commands/recover.d.ts.map +1 -1
- package/dist/cli/commands/recover.js +17 -6
- package/dist/cli/commands/recover.js.map +1 -1
- package/dist/cli/commands/regime.d.ts +1 -1
- package/dist/cli/commands/regime.d.ts.map +1 -1
- package/dist/cli/commands/regime.js +134 -33
- package/dist/cli/commands/regime.js.map +1 -1
- package/dist/cli/commands/retrieve.d.ts +3 -0
- package/dist/cli/commands/retrieve.d.ts.map +1 -0
- package/dist/cli/commands/retrieve.js +65 -0
- package/dist/cli/commands/retrieve.js.map +1 -0
- package/dist/cli/commands/search.d.ts +3 -0
- package/dist/cli/commands/search.d.ts.map +1 -0
- package/dist/cli/commands/search.js +70 -0
- package/dist/cli/commands/search.js.map +1 -0
- package/dist/cli/commands/symbolic.d.ts.map +1 -1
- package/dist/cli/commands/symbolic.js +107 -16
- package/dist/cli/commands/symbolic.js.map +1 -1
- package/dist/cli/commands/testplan.d.ts +3 -0
- package/dist/cli/commands/testplan.d.ts.map +1 -0
- package/dist/cli/commands/testplan.js +131 -0
- package/dist/cli/commands/testplan.js.map +1 -0
- package/dist/cli/conventions.d.ts +22 -0
- package/dist/cli/conventions.d.ts.map +1 -0
- package/dist/cli/conventions.js +48 -0
- package/dist/cli/conventions.js.map +1 -0
- package/dist/cli/euler-guard.d.ts +9 -0
- package/dist/cli/euler-guard.d.ts.map +1 -0
- package/dist/cli/euler-guard.js +11 -0
- package/dist/cli/euler-guard.js.map +1 -0
- package/dist/cli/eval-numbers.d.ts +26 -0
- package/dist/cli/eval-numbers.d.ts.map +1 -0
- package/dist/cli/eval-numbers.js +48 -0
- package/dist/cli/eval-numbers.js.map +1 -0
- package/dist/cli/expr-print.d.ts +25 -0
- package/dist/cli/expr-print.d.ts.map +1 -0
- package/dist/cli/expr-print.js +123 -0
- package/dist/cli/expr-print.js.map +1 -0
- package/dist/cli/graphs.d.ts +26 -0
- package/dist/cli/graphs.d.ts.map +1 -1
- package/dist/cli/graphs.js +19 -0
- package/dist/cli/graphs.js.map +1 -1
- package/dist/cli/main.d.ts +4 -10
- package/dist/cli/main.d.ts.map +1 -1
- package/dist/cli/main.js +370 -167
- package/dist/cli/main.js.map +1 -1
- package/dist/cli/map-evidence.d.ts +47 -0
- package/dist/cli/map-evidence.d.ts.map +1 -0
- package/dist/cli/map-evidence.js +53 -0
- package/dist/cli/map-evidence.js.map +1 -0
- package/dist/cli/output.d.ts +21 -1
- package/dist/cli/output.d.ts.map +1 -1
- package/dist/cli/output.js +5 -1
- package/dist/cli/output.js.map +1 -1
- package/dist/{composition → cli}/poster-source.d.ts +3 -2
- package/dist/cli/poster-source.d.ts.map +1 -0
- package/dist/{composition → cli}/poster-source.js +2 -1
- package/dist/cli/poster-source.js.map +1 -0
- package/dist/cli/record-reach.d.ts +44 -0
- package/dist/cli/record-reach.d.ts.map +1 -0
- package/dist/cli/record-reach.js +228 -0
- package/dist/cli/record-reach.js.map +1 -0
- package/dist/cli/record-tables.d.ts +38 -0
- package/dist/cli/record-tables.d.ts.map +1 -0
- package/dist/cli/record-tables.js +110 -0
- package/dist/cli/record-tables.js.map +1 -0
- package/dist/cli/record.d.ts +141 -0
- package/dist/cli/record.d.ts.map +1 -0
- package/dist/cli/record.js +612 -0
- package/dist/cli/record.js.map +1 -0
- package/dist/cli/search-index.d.ts +56 -0
- package/dist/cli/search-index.d.ts.map +1 -0
- package/dist/cli/search-index.js +190 -0
- package/dist/cli/search-index.js.map +1 -0
- package/dist/cli/statuses.d.ts +25 -0
- package/dist/cli/statuses.d.ts.map +1 -0
- package/dist/cli/statuses.js +276 -0
- package/dist/cli/statuses.js.map +1 -0
- package/dist/cli/version.d.ts +8 -0
- package/dist/cli/version.d.ts.map +1 -1
- package/dist/cli/version.js +32 -1
- package/dist/cli/version.js.map +1 -1
- package/dist/cli-api.d.ts +34 -16
- package/dist/cli-api.d.ts.map +1 -1
- package/dist/cli-api.js +32 -12
- package/dist/cli-api.js.map +1 -1
- package/dist/composition/audit-coverage.d.ts +70 -0
- package/dist/composition/audit-coverage.d.ts.map +1 -0
- package/dist/composition/audit-coverage.js +80 -0
- package/dist/composition/audit-coverage.js.map +1 -0
- package/dist/composition/bridge-analysis.d.ts.map +1 -1
- package/dist/composition/bridge-analysis.js +2 -1
- package/dist/composition/bridge-analysis.js.map +1 -1
- package/dist/composition/buckingham-filter.d.ts +34 -0
- package/dist/composition/buckingham-filter.d.ts.map +1 -0
- package/dist/composition/buckingham-filter.js +64 -0
- package/dist/composition/buckingham-filter.js.map +1 -0
- package/dist/composition/canonical-compare.d.ts +29 -16
- package/dist/composition/canonical-compare.d.ts.map +1 -1
- package/dist/composition/canonical-compare.js +355 -59
- package/dist/composition/canonical-compare.js.map +1 -1
- package/dist/composition/canonical-graph.d.ts +2 -2
- package/dist/composition/canonical-graph.js +3 -3
- package/dist/composition/canonical-graph.js.map +1 -1
- package/dist/composition/canonical-prefactors.d.ts +24 -1
- package/dist/composition/canonical-prefactors.d.ts.map +1 -1
- package/dist/composition/canonical-prefactors.js +97 -1
- package/dist/composition/canonical-prefactors.js.map +1 -1
- package/dist/composition/catalog-graph.d.ts +4 -4
- package/dist/composition/catalog-graph.d.ts.map +1 -1
- package/dist/composition/catalog-graph.js +6 -4
- package/dist/composition/catalog-graph.js.map +1 -1
- package/dist/composition/chain-candidate.d.ts +43 -0
- package/dist/composition/chain-candidate.d.ts.map +1 -0
- package/dist/composition/chain-candidate.js +56 -0
- package/dist/composition/chain-candidate.js.map +1 -0
- package/dist/composition/chain-match.d.ts +19 -0
- package/dist/composition/chain-match.d.ts.map +1 -0
- package/dist/composition/chain-match.js +10 -0
- package/dist/composition/chain-match.js.map +1 -0
- package/dist/composition/chain-regime.d.ts +34 -0
- package/dist/composition/chain-regime.d.ts.map +1 -0
- package/dist/composition/chain-regime.js +89 -0
- package/dist/composition/chain-regime.js.map +1 -0
- package/dist/composition/compose-symbolic.js +1 -1
- package/dist/composition/compose-symbolic.js.map +1 -1
- package/dist/composition/compose.d.ts +11 -0
- package/dist/composition/compose.d.ts.map +1 -1
- package/dist/composition/compose.js +30 -10
- package/dist/composition/compose.js.map +1 -1
- package/dist/composition/composition-recovery.d.ts +47 -0
- package/dist/composition/composition-recovery.d.ts.map +1 -0
- package/dist/composition/composition-recovery.js +77 -0
- package/dist/composition/composition-recovery.js.map +1 -0
- package/dist/composition/consequence.d.ts +39 -0
- package/dist/composition/consequence.d.ts.map +1 -1
- package/dist/composition/consequence.js +37 -0
- package/dist/composition/consequence.js.map +1 -1
- package/dist/{bridges → composition}/descriptor.d.ts +6 -3
- package/dist/composition/descriptor.d.ts.map +1 -0
- package/dist/{bridges → composition}/descriptor.js +7 -4
- package/dist/composition/descriptor.js.map +1 -0
- package/dist/composition/discovery.d.ts +20 -0
- package/dist/composition/discovery.d.ts.map +1 -1
- package/dist/composition/discovery.js +27 -5
- package/dist/composition/discovery.js.map +1 -1
- package/dist/composition/edge.d.ts +1 -1
- package/dist/composition/edge.d.ts.map +1 -1
- package/dist/composition/edge.js.map +1 -1
- package/dist/composition/edges/_catalog-helpers.d.ts +4 -0
- package/dist/composition/edges/_catalog-helpers.d.ts.map +1 -1
- package/dist/composition/edges/_catalog-helpers.js +15 -0
- package/dist/composition/edges/_catalog-helpers.js.map +1 -1
- package/dist/composition/edges/calibration.d.ts +0 -9
- package/dist/composition/edges/calibration.d.ts.map +1 -1
- package/dist/composition/edges/calibration.js +85 -0
- package/dist/composition/edges/calibration.js.map +1 -1
- package/dist/composition/edges/catalog-condensed-matter.d.ts +0 -9
- package/dist/composition/edges/catalog-condensed-matter.d.ts.map +1 -1
- package/dist/composition/edges/catalog-condensed-matter.js +32 -1
- package/dist/composition/edges/catalog-condensed-matter.js.map +1 -1
- package/dist/composition/edges/catalog-fields.d.ts.map +1 -1
- package/dist/composition/edges/catalog-fields.js +2 -1
- package/dist/composition/edges/catalog-fields.js.map +1 -1
- package/dist/composition/edges/catalog-full.d.ts +4 -2
- package/dist/composition/edges/catalog-full.d.ts.map +1 -1
- package/dist/composition/edges/catalog-full.js +4 -2
- package/dist/composition/edges/catalog-full.js.map +1 -1
- package/dist/composition/edges/catalog-gravitation-cosmology.d.ts +0 -10
- package/dist/composition/edges/catalog-gravitation-cosmology.d.ts.map +1 -1
- package/dist/composition/edges/catalog-gravitation-cosmology.js +31 -1
- package/dist/composition/edges/catalog-gravitation-cosmology.js.map +1 -1
- package/dist/composition/edges/catalog-quantum.d.ts +0 -10
- package/dist/composition/edges/catalog-quantum.d.ts.map +1 -1
- package/dist/composition/edges/catalog-quantum.js +53 -17
- package/dist/composition/edges/catalog-quantum.js.map +1 -1
- package/dist/composition/edges/catalog-tranche.d.ts +0 -15
- package/dist/composition/edges/catalog-tranche.d.ts.map +1 -1
- package/dist/composition/edges/catalog-tranche.js +70 -16
- package/dist/composition/edges/catalog-tranche.js.map +1 -1
- package/dist/composition/edges/proved-seeds.d.ts +39 -0
- package/dist/composition/edges/proved-seeds.d.ts.map +1 -0
- package/dist/composition/edges/proved-seeds.js +197 -0
- package/dist/composition/edges/proved-seeds.js.map +1 -0
- package/dist/composition/enumerate.d.ts +20 -0
- package/dist/composition/enumerate.d.ts.map +1 -1
- package/dist/composition/enumerate.js +23 -0
- package/dist/composition/enumerate.js.map +1 -1
- package/dist/composition/expr-eval.d.ts +5 -4
- package/dist/composition/expr-eval.d.ts.map +1 -1
- package/dist/composition/expr-eval.js +40 -6
- package/dist/composition/expr-eval.js.map +1 -1
- package/dist/composition/expr-simplify.js +1 -1
- package/dist/composition/expr-simplify.js.map +1 -1
- package/dist/composition/expr-subst.d.ts +2 -1
- package/dist/composition/expr-subst.d.ts.map +1 -1
- package/dist/composition/expr-subst.js +9 -2
- package/dist/composition/expr-subst.js.map +1 -1
- package/dist/composition/frontier-account.d.ts +78 -0
- package/dist/composition/frontier-account.d.ts.map +1 -0
- package/dist/composition/frontier-account.js +127 -0
- package/dist/composition/frontier-account.js.map +1 -0
- package/dist/composition/graph-viz.d.ts +7 -22
- package/dist/composition/graph-viz.d.ts.map +1 -1
- package/dist/composition/graph-viz.js +4 -27
- package/dist/composition/graph-viz.js.map +1 -1
- package/dist/composition/grounding.d.ts +49 -0
- package/dist/composition/grounding.d.ts.map +1 -1
- package/dist/composition/grounding.js +38 -0
- package/dist/composition/grounding.js.map +1 -1
- package/dist/composition/index.d.ts +0 -2
- package/dist/composition/index.d.ts.map +1 -1
- package/dist/composition/index.js +1 -1
- package/dist/composition/index.js.map +1 -1
- package/dist/composition/not-composable-seeds.d.ts +30 -0
- package/dist/composition/not-composable-seeds.d.ts.map +1 -0
- package/dist/composition/not-composable-seeds.js +90 -0
- package/dist/composition/not-composable-seeds.js.map +1 -0
- package/dist/composition/probe/expression-gaps.d.ts +27 -0
- package/dist/composition/probe/expression-gaps.d.ts.map +1 -0
- package/dist/composition/probe/expression-gaps.js +47 -0
- package/dist/composition/probe/expression-gaps.js.map +1 -0
- package/dist/composition/probe/frontier.d.ts +2 -1
- package/dist/composition/probe/frontier.d.ts.map +1 -1
- package/dist/composition/probe/frontier.js +3 -2
- package/dist/composition/probe/frontier.js.map +1 -1
- package/dist/composition/probe/index.d.ts +4 -1
- package/dist/composition/probe/index.d.ts.map +1 -1
- package/dist/composition/probe/index.js +3 -1
- package/dist/composition/probe/index.js.map +1 -1
- package/dist/composition/probe/pipeline.d.ts +2 -0
- package/dist/composition/probe/pipeline.d.ts.map +1 -1
- package/dist/composition/probe/pipeline.js +6 -2
- package/dist/composition/probe/pipeline.js.map +1 -1
- package/dist/composition/probe/problem.d.ts +7 -0
- package/dist/composition/probe/problem.d.ts.map +1 -1
- package/dist/composition/probe/problem.js +15 -5
- package/dist/composition/probe/problem.js.map +1 -1
- package/dist/composition/probe/search-budget.d.ts.map +1 -1
- package/dist/composition/probe/search-budget.js +6 -2
- package/dist/composition/probe/search-budget.js.map +1 -1
- package/dist/composition/probe/study.d.ts +340 -0
- package/dist/composition/probe/study.d.ts.map +1 -0
- package/dist/composition/probe/study.js +1519 -0
- package/dist/composition/probe/study.js.map +1 -0
- package/dist/composition/proposed-bridges.js +1 -1
- package/dist/composition/proposed-bridges.js.map +1 -1
- package/dist/composition/quantities/_dims.d.ts +6 -0
- package/dist/composition/quantities/_dims.d.ts.map +1 -1
- package/dist/composition/quantities/_dims.js +6 -0
- package/dist/composition/quantities/_dims.js.map +1 -1
- package/dist/composition/quantities/condensed-matter.d.ts +16 -0
- package/dist/composition/quantities/condensed-matter.d.ts.map +1 -1
- package/dist/composition/quantities/condensed-matter.js +43 -2
- package/dist/composition/quantities/condensed-matter.js.map +1 -1
- package/dist/composition/quantities/fields.d.ts +10 -0
- package/dist/composition/quantities/fields.d.ts.map +1 -1
- package/dist/composition/quantities/fields.js +37 -2
- package/dist/composition/quantities/fields.js.map +1 -1
- package/dist/composition/quantities/gravitation-cosmology.d.ts +4 -0
- package/dist/composition/quantities/gravitation-cosmology.d.ts.map +1 -1
- package/dist/composition/quantities/gravitation-cosmology.js +14 -0
- package/dist/composition/quantities/gravitation-cosmology.js.map +1 -1
- package/dist/composition/quantities/quantum.d.ts +2 -0
- package/dist/composition/quantities/quantum.d.ts.map +1 -1
- package/dist/composition/quantities/quantum.js +7 -0
- package/dist/composition/quantities/quantum.js.map +1 -1
- package/dist/composition/quantities.d.ts +4 -16
- package/dist/composition/quantities.d.ts.map +1 -1
- package/dist/composition/quantities.js +4 -16
- package/dist/composition/quantities.js.map +1 -1
- package/dist/composition/retrodiction.d.ts.map +1 -1
- package/dist/composition/retrodiction.js +6 -2
- package/dist/composition/retrodiction.js.map +1 -1
- package/dist/composition/uncertainty.d.ts +1 -1
- package/dist/composition/uncertainty.d.ts.map +1 -1
- package/dist/composition/user-equation.d.ts +79 -8
- package/dist/composition/user-equation.d.ts.map +1 -1
- package/dist/composition/user-equation.js +224 -32
- package/dist/composition/user-equation.js.map +1 -1
- package/dist/core/constants.d.ts +17 -5
- package/dist/core/constants.d.ts.map +1 -1
- package/dist/core/constants.js +17 -5
- package/dist/core/constants.js.map +1 -1
- package/dist/core/types.d.ts +1 -1
- package/dist/core/types.d.ts.map +1 -1
- package/dist/core/types.js +2 -1
- package/dist/core/types.js.map +1 -1
- package/dist/dimensional/curvature.d.ts +7 -56
- package/dist/dimensional/curvature.d.ts.map +1 -1
- package/dist/dimensional/curvature.js +7 -76
- package/dist/dimensional/curvature.js.map +1 -1
- package/dist/dimensional/dimension-spec.d.ts +7 -1
- package/dist/dimensional/dimension-spec.d.ts.map +1 -1
- package/dist/dimensional/dimension-spec.js +131 -3
- package/dist/dimensional/dimension-spec.js.map +1 -1
- package/dist/dimensional/formula-names.d.ts +30 -0
- package/dist/dimensional/formula-names.d.ts.map +1 -0
- package/dist/dimensional/formula-names.js +37 -0
- package/dist/dimensional/formula-names.js.map +1 -0
- package/dist/dimensional/natural-units.d.ts +33 -0
- package/dist/dimensional/natural-units.d.ts.map +1 -0
- package/dist/dimensional/natural-units.js +58 -0
- package/dist/dimensional/natural-units.js.map +1 -0
- package/dist/{composition → dimensional}/symbolic-constants.d.ts +21 -2
- package/dist/dimensional/symbolic-constants.d.ts.map +1 -0
- package/dist/dimensional/symbolic-constants.js +122 -0
- package/dist/dimensional/symbolic-constants.js.map +1 -0
- package/dist/dimensional/unit-convention.d.ts +30 -0
- package/dist/dimensional/unit-convention.d.ts.map +1 -0
- package/dist/dimensional/unit-convention.js +60 -0
- package/dist/dimensional/unit-convention.js.map +1 -0
- package/dist/dimensional/units.d.ts +43 -0
- package/dist/dimensional/units.d.ts.map +1 -0
- package/dist/dimensional/units.js +197 -0
- package/dist/dimensional/units.js.map +1 -0
- package/dist/index.d.ts +11 -5
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +10 -3
- package/dist/index.js.map +1 -1
- package/dist/numerical/bianchi-residual.d.ts +55 -0
- package/dist/numerical/bianchi-residual.d.ts.map +1 -0
- package/dist/numerical/bianchi-residual.js +79 -0
- package/dist/numerical/bianchi-residual.js.map +1 -0
- package/dist/numerical/binding-value.d.ts +67 -0
- package/dist/numerical/binding-value.d.ts.map +1 -0
- package/dist/numerical/binding-value.js +349 -0
- package/dist/numerical/binding-value.js.map +1 -0
- package/dist/numerical/connection-lowering-helpers.d.ts.map +1 -1
- package/dist/numerical/connection-lowering-helpers.js +13 -26
- package/dist/numerical/connection-lowering-helpers.js.map +1 -1
- package/dist/numerical/curvature-lowering-helpers.d.ts.map +1 -1
- package/dist/numerical/curvature-lowering-helpers.js +9 -0
- package/dist/numerical/curvature-lowering-helpers.js.map +1 -1
- package/dist/numerical/float64-engine.d.ts.map +1 -1
- package/dist/numerical/float64-engine.js +23 -16
- package/dist/numerical/float64-engine.js.map +1 -1
- package/dist/numerical/formula-dimension.d.ts +14 -0
- package/dist/numerical/formula-dimension.d.ts.map +1 -1
- package/dist/numerical/formula-dimension.js +56 -9
- package/dist/numerical/formula-dimension.js.map +1 -1
- package/dist/numerical/formula-mathts.d.ts.map +1 -1
- package/dist/numerical/formula-mathts.js +75 -6
- package/dist/numerical/formula-mathts.js.map +1 -1
- package/dist/numerical/formula.d.ts +33 -0
- package/dist/numerical/formula.d.ts.map +1 -1
- package/dist/numerical/formula.js +75 -6
- package/dist/numerical/formula.js.map +1 -1
- package/dist/numerical/spacetime-metrics.d.ts +243 -0
- package/dist/numerical/spacetime-metrics.d.ts.map +1 -0
- package/dist/numerical/spacetime-metrics.js +1056 -0
- package/dist/numerical/spacetime-metrics.js.map +1 -0
- package/dist/relations/category.d.ts +38 -0
- package/dist/relations/category.d.ts.map +1 -0
- package/dist/relations/category.js +23 -0
- package/dist/relations/category.js.map +1 -0
- package/dist/relations/composition-table.d.ts +61 -0
- package/dist/relations/composition-table.d.ts.map +1 -0
- package/dist/relations/composition-table.js +140 -0
- package/dist/relations/composition-table.js.map +1 -0
- package/dist/relations/conventions.d.ts +63 -0
- package/dist/relations/conventions.d.ts.map +1 -0
- package/dist/relations/conventions.js +93 -0
- package/dist/relations/conventions.js.map +1 -0
- package/dist/relations/regime.d.ts +159 -0
- package/dist/relations/regime.d.ts.map +1 -0
- package/dist/relations/regime.js +304 -0
- package/dist/relations/regime.js.map +1 -0
- package/dist/relations/types.d.ts +257 -0
- package/dist/relations/types.d.ts.map +1 -0
- package/dist/relations/types.js +35 -0
- package/dist/relations/types.js.map +1 -0
- package/package.json +166 -163
- package/dist/bridges/descriptor.d.ts.map +0 -1
- package/dist/bridges/descriptor.js.map +0 -1
- package/dist/composition/poster-source.d.ts.map +0 -1
- package/dist/composition/poster-source.js.map +0 -1
- package/dist/composition/symbolic-constants.d.ts.map +0 -1
- package/dist/composition/symbolic-constants.js +0 -65
- package/dist/composition/symbolic-constants.js.map +0 -1
|
@@ -1,12 +1,15 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Curvature-derived helpers — Ricci
|
|
2
|
+
* Curvature-derived helpers — Ricci and Einstein (v0.5.0 Phase 1d).
|
|
3
3
|
*
|
|
4
4
|
* Module hosts the layer of GR objects derived by contraction of a
|
|
5
5
|
* `RiemannTensorNode`:
|
|
6
6
|
*
|
|
7
|
-
* - `ricci(R)`
|
|
8
|
-
* - `einstein(R)`
|
|
9
|
-
*
|
|
7
|
+
* - `ricci(R)` → R_μν = R^λ_{λμν}
|
|
8
|
+
* - `einstein(R)` → G_μν = R_μν − ½ g_μν R
|
|
9
|
+
*
|
|
10
|
+
* The Bianchi validator stays here. `bianchiResidual`, the evaluator that
|
|
11
|
+
* calls `evaluateNumerical`, lives in `numerical/bianchi-residual.ts` so
|
|
12
|
+
* this module does not import `numerical`.
|
|
10
13
|
*
|
|
11
14
|
* Separation rationale (Design §3 Task 1d): the bare `RiemannTensorNode`
|
|
12
15
|
* stays in `connection-validators.ts` next to `CovariantDerivativeNode`
|
|
@@ -19,8 +22,6 @@
|
|
|
19
22
|
import type { Dimension } from './types.js';
|
|
20
23
|
import type { ExprNode, RiemannTensorNode, MetricTensorNode, RicciTensorNode, EinsteinTensorNode, BianchiResidualNode } from './ast-types.js';
|
|
21
24
|
export type { RicciTensorNode, EinsteinTensorNode, BianchiResidualNode } from './ast-types.js';
|
|
22
|
-
import type { TensorEngine } from '../numerical/tensor-engine.js';
|
|
23
|
-
import type { NumericalInputs, NestedArray } from '../numerical/types.js';
|
|
24
25
|
/**
|
|
25
26
|
* Shared callback shape used by every pattern-B validator (`validate
|
|
26
27
|
* RicciTensor`, `validateEinsteinTensor`, `validateBianchiResidual`).
|
|
@@ -305,54 +306,4 @@ interface BianchiResidualValidationResult {
|
|
|
305
306
|
* labels collide with any wrapped-Riemann label.
|
|
306
307
|
*/
|
|
307
308
|
export declare function validateBianchiResidual(node: BianchiResidualNode, validateRiemannChild: RiemannChildCallback): BianchiResidualValidationResult;
|
|
308
|
-
/**
|
|
309
|
-
* Imported lazily inside `bianchiResidual()` to avoid pulling the numerical
|
|
310
|
-
* lowering layer into the dimensional module's import graph at module load.
|
|
311
|
-
* Mirrors the runtime contract — `bianchiResidual()` returns closures that
|
|
312
|
-
* call `evaluateNumerical`, but the function itself is pure-symbolic until
|
|
313
|
-
* the closures are invoked.
|
|
314
|
-
*
|
|
315
|
-
* v0.5.1 TS-1: `engine`/`inputs`/return are now strictly typed via
|
|
316
|
-
* `import type` (no runtime import into curvature.ts), so the public API
|
|
317
|
-
* surface no longer leaks `any` through the bianchi return shape.
|
|
318
|
-
*/
|
|
319
|
-
type LazyEvaluator = (engine: TensorEngine, inputs: NumericalInputs) => Promise<NestedArray>;
|
|
320
|
-
/**
|
|
321
|
-
* Build the second-Bianchi-identity residual `B_{λμνρσ}` as a composite
|
|
322
|
-
* object with both an AST representation and evaluator closures.
|
|
323
|
-
*
|
|
324
|
-
* **Return shape (deviates from `ricci()`/`einstein()`'s plain-ExprNode
|
|
325
|
-
* return):** Bianchi is a 5-index residual tensor whose primary purpose is
|
|
326
|
-
* to be EVALUATED and reduced to its max-absolute value. Callers that just
|
|
327
|
-
* want the scalar self-consistency check use `evaluateMax`; callers that
|
|
328
|
-
* want to inspect per-component residual structure use `evaluate`. The
|
|
329
|
-
* underlying `residual: ExprNode` is exposed for downstream symbolic
|
|
330
|
-
* consumers (validator, equation-homogeneity checks).
|
|
331
|
-
*
|
|
332
|
-
* **Convention.** Carroll Eq. 3.95 cyclic form on the first three lower
|
|
333
|
-
* indices of the all-lower Riemann:
|
|
334
|
-
*
|
|
335
|
-
* B_{λμνρσ} = ∇_λ R_{μνρσ} + ∇_μ R_{νλρσ} + ∇_ν R_{λμρσ} = 0
|
|
336
|
-
*
|
|
337
|
-
* **Implementation (Approach 1 — full ∇, not raw ∂).** Lowering computes
|
|
338
|
-
* each `∇_λ R_{μνρσ}` term with full Christoffel corrections (one per lower
|
|
339
|
-
* index of R), then sums cyclically. The lowered Riemann itself is computed
|
|
340
|
-
* by lowering the upper-ρ of R^ρ_{σμν} on the JS side after the Riemann
|
|
341
|
-
* lowering pipeline (Task 6) — no v0.3.0 `lower()` AST round-trip per FD
|
|
342
|
-
* sample.
|
|
343
|
-
*
|
|
344
|
-
* **Numerical-noise discussion.** The cyclic sum involves one extra
|
|
345
|
-
* coordinate-derivative on R_{μνρσ}, which itself sits on a ∂g→Γ→∂Γ→R FD
|
|
346
|
-
* stack. Schwarzschild + de Sitter empirical residuals are reported in
|
|
347
|
-
* `tests/dimensional/bianchi-residual.test.ts`; expected per-component
|
|
348
|
-
* noise floor is ~1e-7 to 1e-8 — much looser than the Task 6 Riemann floor
|
|
349
|
-
* (~8e-10) because of the extra FD layer.
|
|
350
|
-
*
|
|
351
|
-
* @public
|
|
352
|
-
*/
|
|
353
|
-
export declare function bianchiResidual(R: RiemannTensorNode): {
|
|
354
|
-
residual: ExprNode;
|
|
355
|
-
evaluate: LazyEvaluator;
|
|
356
|
-
evaluateMax: (engine: TensorEngine, inputs: NumericalInputs) => Promise<number>;
|
|
357
|
-
};
|
|
358
309
|
//# sourceMappingURL=curvature.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"curvature.d.ts","sourceRoot":"","sources":["../../src/dimensional/curvature.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"curvature.d.ts","sourceRoot":"","sources":["../../src/dimensional/curvature.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAI5C,OAAO,KAAK,EACV,QAAQ,EAER,iBAAiB,EACjB,gBAAgB,EAChB,eAAe,EACf,kBAAkB,EAClB,mBAAmB,EACpB,MAAM,gBAAgB,CAAC;AAGxB,YAAY,EAAE,eAAe,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AAM/F;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,MAAM,oBAAoB,GAAG,CAAC,KAAK,EAAE,iBAAiB,KAAK;IAC/D,GAAG,EAAE,SAAS,CAAC;IACf,WAAW,EAAE,GAAG,CAAC,MAAM,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAC5D,CAAC;AAMF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH;;;GAGG;AACH;;;GAGG;AACH,UAAU,2BAA2B;IACnC,QAAQ,CAAC,GAAG,EAAE,SAAS,CAAC;IACxB,QAAQ,CAAC,WAAW,EAAE,GAAG,CAAC,MAAM,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACrE;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,mBAAmB,CACjC,IAAI,EAAE,eAAe,EACrB,oBAAoB,EAAE,oBAAoB,GACzC,2BAA2B,CA2B7B;AAMD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AACH,wBAAgB,KAAK,CAAC,CAAC,EAAE,iBAAiB,GAAG,QAAQ,CAEpD;AAMD;;;;;;;;;;;;;;;;;GAiBG;AACH;;;GAGG;AACH;;;GAGG;AACH,UAAU,8BAA8B;IACtC,QAAQ,CAAC,GAAG,EAAE,SAAS,CAAC;IACxB,QAAQ,CAAC,WAAW,EAAE,GAAG,CAAC,MAAM,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACrE;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,sBAAsB,CACpC,IAAI,EAAE,kBAAkB,EACxB,oBAAoB,EAAE,oBAAoB,GACzC,8BAA8B,CAWhC;AAMD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,wBAAgB,QAAQ,CACtB,CAAC,EAAE,iBAAiB,EACpB,CAAC,EAAE,gBAAgB,EACnB,QAAQ,EAAE,gBAAgB,GACzB,QAAQ,CAEV;AAMD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AACH;;;GAGG;AACH;;;GAGG;AACH,UAAU,+BAA+B;IACvC,QAAQ,CAAC,GAAG,EAAE,SAAS,CAAC;IACxB,QAAQ,CAAC,WAAW,EAAE,GAAG,CAAC,MAAM,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACrE;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,uBAAuB,CACrC,IAAI,EAAE,mBAAmB,EACzB,oBAAoB,EAAE,oBAAoB,GACzC,+BAA+B,CAyCjC"}
|
|
@@ -1,12 +1,15 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Curvature-derived helpers — Ricci
|
|
2
|
+
* Curvature-derived helpers — Ricci and Einstein (v0.5.0 Phase 1d).
|
|
3
3
|
*
|
|
4
4
|
* Module hosts the layer of GR objects derived by contraction of a
|
|
5
5
|
* `RiemannTensorNode`:
|
|
6
6
|
*
|
|
7
|
-
* - `ricci(R)`
|
|
8
|
-
* - `einstein(R)`
|
|
9
|
-
*
|
|
7
|
+
* - `ricci(R)` → R_μν = R^λ_{λμν}
|
|
8
|
+
* - `einstein(R)` → G_μν = R_μν − ½ g_μν R
|
|
9
|
+
*
|
|
10
|
+
* The Bianchi validator stays here. `bianchiResidual`, the evaluator that
|
|
11
|
+
* calls `evaluateNumerical`, lives in `numerical/bianchi-residual.ts` so
|
|
12
|
+
* this module does not import `numerical`.
|
|
10
13
|
*
|
|
11
14
|
* Separation rationale (Design §3 Task 1d): the bare `RiemannTensorNode`
|
|
12
15
|
* stays in `connection-validators.ts` next to `CovariantDerivativeNode`
|
|
@@ -224,76 +227,4 @@ export function validateBianchiResidual(node, validateRiemannChild) {
|
|
|
224
227
|
freeIndices.set(node.riemann.lowerIndices[2].label, { upper: 0, lower: 1 });
|
|
225
228
|
return { dim, freeIndices };
|
|
226
229
|
}
|
|
227
|
-
/**
|
|
228
|
-
* Build the second-Bianchi-identity residual `B_{λμνρσ}` as a composite
|
|
229
|
-
* object with both an AST representation and evaluator closures.
|
|
230
|
-
*
|
|
231
|
-
* **Return shape (deviates from `ricci()`/`einstein()`'s plain-ExprNode
|
|
232
|
-
* return):** Bianchi is a 5-index residual tensor whose primary purpose is
|
|
233
|
-
* to be EVALUATED and reduced to its max-absolute value. Callers that just
|
|
234
|
-
* want the scalar self-consistency check use `evaluateMax`; callers that
|
|
235
|
-
* want to inspect per-component residual structure use `evaluate`. The
|
|
236
|
-
* underlying `residual: ExprNode` is exposed for downstream symbolic
|
|
237
|
-
* consumers (validator, equation-homogeneity checks).
|
|
238
|
-
*
|
|
239
|
-
* **Convention.** Carroll Eq. 3.95 cyclic form on the first three lower
|
|
240
|
-
* indices of the all-lower Riemann:
|
|
241
|
-
*
|
|
242
|
-
* B_{λμνρσ} = ∇_λ R_{μνρσ} + ∇_μ R_{νλρσ} + ∇_ν R_{λμρσ} = 0
|
|
243
|
-
*
|
|
244
|
-
* **Implementation (Approach 1 — full ∇, not raw ∂).** Lowering computes
|
|
245
|
-
* each `∇_λ R_{μνρσ}` term with full Christoffel corrections (one per lower
|
|
246
|
-
* index of R), then sums cyclically. The lowered Riemann itself is computed
|
|
247
|
-
* by lowering the upper-ρ of R^ρ_{σμν} on the JS side after the Riemann
|
|
248
|
-
* lowering pipeline (Task 6) — no v0.3.0 `lower()` AST round-trip per FD
|
|
249
|
-
* sample.
|
|
250
|
-
*
|
|
251
|
-
* **Numerical-noise discussion.** The cyclic sum involves one extra
|
|
252
|
-
* coordinate-derivative on R_{μνρσ}, which itself sits on a ∂g→Γ→∂Γ→R FD
|
|
253
|
-
* stack. Schwarzschild + de Sitter empirical residuals are reported in
|
|
254
|
-
* `tests/dimensional/bianchi-residual.test.ts`; expected per-component
|
|
255
|
-
* noise floor is ~1e-7 to 1e-8 — much looser than the Task 6 Riemann floor
|
|
256
|
-
* (~8e-10) because of the extra FD layer.
|
|
257
|
-
*
|
|
258
|
-
* @public
|
|
259
|
-
*/
|
|
260
|
-
export function bianchiResidual(R) {
|
|
261
|
-
const residual = { kind: 'bianchi-residual', riemann: R };
|
|
262
|
-
const evaluate = async (engine, inputs) => {
|
|
263
|
-
// Dynamic import to keep the dimensional module's load-time graph clean
|
|
264
|
-
// (a static import here would create a dimensional→numerical→dimensional
|
|
265
|
-
// runtime cycle: numerical/index.ts imports validator.ts). The TS-1
|
|
266
|
-
// type-tightening above uses `import type` only, so this dynamic import
|
|
267
|
-
// does not weaken the static type story.
|
|
268
|
-
const mod = await import('../numerical/index.js');
|
|
269
|
-
const result = await mod.evaluateNumerical(residual, inputs, { engine });
|
|
270
|
-
return result.value;
|
|
271
|
-
};
|
|
272
|
-
const evaluateMax = async (engine, inputs) => {
|
|
273
|
-
const value = await evaluate(engine, inputs);
|
|
274
|
-
// Walk the 5-deep nested array (or any depth) and return max |x|.
|
|
275
|
-
// v0.5.1 TS-3: signature accepts `NestedArray` (the public type from
|
|
276
|
-
// evaluate()) plus a typed-array escape hatch; unexpected shapes throw
|
|
277
|
-
// rather than being silently ignored.
|
|
278
|
-
let max = 0;
|
|
279
|
-
const walk = (v) => {
|
|
280
|
-
if (typeof v === 'number') {
|
|
281
|
-
const a = Math.abs(v);
|
|
282
|
-
if (a > max)
|
|
283
|
-
max = a;
|
|
284
|
-
return;
|
|
285
|
-
}
|
|
286
|
-
if (Array.isArray(v)) {
|
|
287
|
-
for (const c of v)
|
|
288
|
-
walk(c);
|
|
289
|
-
return;
|
|
290
|
-
}
|
|
291
|
-
throw new Error(`bianchiResidual.evaluateMax: unexpected value shape — expected `
|
|
292
|
-
+ `number | NestedArray, got ${typeof v}`);
|
|
293
|
-
};
|
|
294
|
-
walk(value);
|
|
295
|
-
return max;
|
|
296
|
-
};
|
|
297
|
-
return { residual: residual, evaluate, evaluateMax };
|
|
298
|
-
}
|
|
299
230
|
//# sourceMappingURL=curvature.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"curvature.js","sourceRoot":"","sources":["../../src/dimensional/curvature.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"curvature.js","sourceRoot":"","sources":["../../src/dimensional/curvature.ts"],"names":[],"mappings":"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"}
|
|
@@ -8,7 +8,13 @@
|
|
|
8
8
|
* `temperature`, `entropy`, `charge`, `area`, `dimensionless`;
|
|
9
9
|
* 2. a fundamental constant by name — `hbar`/`ℏ`, `c`, `G`, `k_B`/`kB`,
|
|
10
10
|
* `e` (its SI dimension);
|
|
11
|
-
* 3.
|
|
11
|
+
* 3. a product/quotient of named dimensions or constants — `power/area`,
|
|
12
|
+
* `length*temperature` (persona finding L1); parentheses group a
|
|
13
|
+
* denominator or factor (`power/(area*temperature^4)`), a name may
|
|
14
|
+
* carry an exponent (`mass/length^3`), and a single base letter works
|
|
15
|
+
* in a quotient (`M/L^3`). A slash that is only the bar of a fractional
|
|
16
|
+
* exponent (`T^1/2`) stays on the explicit-base path;
|
|
17
|
+
* 4. explicit base exponents — `L^3.M^-1.T^-2` (bases L M T I Theta/Θ N J,
|
|
12
18
|
* separated by `.`, `*`, or spaces; `^` optional; fractional exponents
|
|
13
19
|
* like `T^1/2` allowed).
|
|
14
20
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dimension-spec.d.ts","sourceRoot":"","sources":["../../src/dimensional/dimension-spec.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"dimension-spec.d.ts","sourceRoot":"","sources":["../../src/dimensional/dimension-spec.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAoB5C,4BAA4B;AAC5B,qBAAa,kBAAmB,SAAQ,KAAK;IAC3C,YAAY,OAAO,EAAE,MAAM,EAG1B;CACF;AA8KD,wEAAwE;AACxE,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,CA6B1D"}
|
|
@@ -8,13 +8,20 @@
|
|
|
8
8
|
* `temperature`, `entropy`, `charge`, `area`, `dimensionless`;
|
|
9
9
|
* 2. a fundamental constant by name — `hbar`/`ℏ`, `c`, `G`, `k_B`/`kB`,
|
|
10
10
|
* `e` (its SI dimension);
|
|
11
|
-
* 3.
|
|
11
|
+
* 3. a product/quotient of named dimensions or constants — `power/area`,
|
|
12
|
+
* `length*temperature` (persona finding L1); parentheses group a
|
|
13
|
+
* denominator or factor (`power/(area*temperature^4)`), a name may
|
|
14
|
+
* carry an exponent (`mass/length^3`), and a single base letter works
|
|
15
|
+
* in a quotient (`M/L^3`). A slash that is only the bar of a fractional
|
|
16
|
+
* exponent (`T^1/2`) stays on the explicit-base path;
|
|
17
|
+
* 4. explicit base exponents — `L^3.M^-1.T^-2` (bases L M T I Theta/Θ N J,
|
|
12
18
|
* separated by `.`, `*`, or spaces; `^` optional; fractional exponents
|
|
13
19
|
* like `T^1/2` allowed).
|
|
14
20
|
*
|
|
15
21
|
* @module dimensional/dimension-spec
|
|
16
22
|
*/
|
|
17
23
|
import { DIMENSIONLESS, LENGTH, AREA, TIME, FREQUENCY, MASS, VELOCITY, ACCELERATION, FORCE, ENERGY, POWER, ACTION, TEMPERATURE, ENTROPY, CHARGE, } from './types.js';
|
|
24
|
+
import { divide, multiply, power } from './algebra.js';
|
|
18
25
|
/** A bad dimension spec. */
|
|
19
26
|
export class DimensionSpecError extends Error {
|
|
20
27
|
constructor(message) {
|
|
@@ -40,6 +47,12 @@ const NAMED_DIMS = {
|
|
|
40
47
|
temperature: TEMPERATURE,
|
|
41
48
|
entropy: ENTROPY,
|
|
42
49
|
charge: CHARGE,
|
|
50
|
+
pressure: d(-1, 1, -2),
|
|
51
|
+
density: d(-3, 1),
|
|
52
|
+
volume: d(3),
|
|
53
|
+
viscosity: d(-1, 1, -1),
|
|
54
|
+
resistance: d(2, 1, -3, 0, -2),
|
|
55
|
+
magnetic_field: d(0, 1, -2, 0, -1),
|
|
43
56
|
};
|
|
44
57
|
/** Fundamental constants by their SI dimension — matched EXACT-case, so
|
|
45
58
|
* `G` (Newton's constant) is never confused with `g` (acceleration). */
|
|
@@ -79,6 +92,118 @@ function parseExponent(raw) {
|
|
|
79
92
|
throw new DimensionSpecError(`bad exponent '${raw}'`);
|
|
80
93
|
return v;
|
|
81
94
|
}
|
|
95
|
+
/** Resolve one atom: constant (exact case) or named dimension (case-insensitive). */
|
|
96
|
+
function resolveAtom(raw) {
|
|
97
|
+
const s = raw.trim();
|
|
98
|
+
if (!s)
|
|
99
|
+
return null;
|
|
100
|
+
if (CONST_DIMS[s])
|
|
101
|
+
return CONST_DIMS[s];
|
|
102
|
+
const key = s.toLowerCase().replace(/[\s-]+/g, '_');
|
|
103
|
+
return NAMED_DIMS[key] ?? NAMED_DIMS[s.toLowerCase()] ?? null;
|
|
104
|
+
}
|
|
105
|
+
function baseAtom(id) {
|
|
106
|
+
const baseKey = BASES[id.toUpperCase()] ?? BASES[id];
|
|
107
|
+
if (!baseKey)
|
|
108
|
+
return null;
|
|
109
|
+
const dim = d();
|
|
110
|
+
dim[baseKey] = 1;
|
|
111
|
+
return dim;
|
|
112
|
+
}
|
|
113
|
+
/**
|
|
114
|
+
* Parse a product/quotient of named dims and constants: `power/area`,
|
|
115
|
+
* `length*temperature`, `L*Theta` is NOT this path (bases go to step 4).
|
|
116
|
+
* Only `*` and `/` as top-level operators; no parentheses, no `^` on names.
|
|
117
|
+
* Returns `null` when the string is not this form (so the base-exponent path
|
|
118
|
+
* can try).
|
|
119
|
+
*/
|
|
120
|
+
/**
|
|
121
|
+
* A product/quotient with parentheses and exponents: `power/(area*temperature^4)`,
|
|
122
|
+
* `mass/length^3`, `M/L^3`. A slash followed by a digit is a fractional
|
|
123
|
+
* exponent on the explicit-base path (`T^1/2`), not this one.
|
|
124
|
+
*/
|
|
125
|
+
function parseGroupedProduct(s) {
|
|
126
|
+
let i = 0;
|
|
127
|
+
const skip = () => {
|
|
128
|
+
while (s[i] === ' ')
|
|
129
|
+
i++;
|
|
130
|
+
};
|
|
131
|
+
const parseExponentToken = () => {
|
|
132
|
+
skip();
|
|
133
|
+
const start = i;
|
|
134
|
+
if (s[i] === '+' || s[i] === '-')
|
|
135
|
+
i++;
|
|
136
|
+
if (!/\d/.test(s[i] ?? ''))
|
|
137
|
+
throw new DimensionSpecError(`bad exponent in '${s}'`);
|
|
138
|
+
while (/\d/.test(s[i] ?? ''))
|
|
139
|
+
i++;
|
|
140
|
+
if (s[i] === '/' && /\d/.test(s[i + 1] ?? '')) {
|
|
141
|
+
i++;
|
|
142
|
+
while (/\d/.test(s[i] ?? ''))
|
|
143
|
+
i++;
|
|
144
|
+
}
|
|
145
|
+
return parseExponent(s.slice(start, i));
|
|
146
|
+
};
|
|
147
|
+
const parseAtom = () => {
|
|
148
|
+
skip();
|
|
149
|
+
if (s[i] === '(') {
|
|
150
|
+
i++;
|
|
151
|
+
const inner = parseProduct();
|
|
152
|
+
skip();
|
|
153
|
+
if (s[i] !== ')')
|
|
154
|
+
throw new DimensionSpecError(`unbalanced '(' in '${s}'`);
|
|
155
|
+
i++;
|
|
156
|
+
return inner;
|
|
157
|
+
}
|
|
158
|
+
const start = i;
|
|
159
|
+
while (i < s.length && /[A-Za-zΘ_]/.test(s[i]))
|
|
160
|
+
i++;
|
|
161
|
+
const id = s.slice(start, i);
|
|
162
|
+
if (!id)
|
|
163
|
+
throw new DimensionSpecError(`unrecognized dimension term '${s.slice(start)}'`);
|
|
164
|
+
const named = resolveAtom(id);
|
|
165
|
+
if (named)
|
|
166
|
+
return named;
|
|
167
|
+
const base = baseAtom(id);
|
|
168
|
+
if (base)
|
|
169
|
+
return base;
|
|
170
|
+
throw new DimensionSpecError(`unrecognized dimension term '${id}' (use a named dimension, a constant, ` +
|
|
171
|
+
`or bases L M T I Theta N J)`);
|
|
172
|
+
};
|
|
173
|
+
const parsePower = () => {
|
|
174
|
+
const base = parseAtom();
|
|
175
|
+
skip();
|
|
176
|
+
if (s[i] !== '^')
|
|
177
|
+
return base;
|
|
178
|
+
i++;
|
|
179
|
+
return power(base, parseExponentToken());
|
|
180
|
+
};
|
|
181
|
+
const parseProduct = () => {
|
|
182
|
+
let acc = parsePower();
|
|
183
|
+
while (true) {
|
|
184
|
+
skip();
|
|
185
|
+
const op = s[i];
|
|
186
|
+
if (op !== '*' && op !== '/')
|
|
187
|
+
break;
|
|
188
|
+
i++;
|
|
189
|
+
const rhs = parsePower();
|
|
190
|
+
acc = op === '*' ? multiply(acc, rhs) : divide(acc, rhs);
|
|
191
|
+
}
|
|
192
|
+
return acc;
|
|
193
|
+
};
|
|
194
|
+
const out = parseProduct();
|
|
195
|
+
skip();
|
|
196
|
+
if (i !== s.length)
|
|
197
|
+
throw new DimensionSpecError(`unrecognized dimension term '${s.slice(i)}'`);
|
|
198
|
+
return out;
|
|
199
|
+
}
|
|
200
|
+
function wantsGroupedProduct(s) {
|
|
201
|
+
if (/[()]/.test(s))
|
|
202
|
+
return true;
|
|
203
|
+
if (/\/\s*[(A-Za-zΘ]/.test(s))
|
|
204
|
+
return true;
|
|
205
|
+
return /\*/.test(s) && /[A-Za-z]{2,}/.test(s);
|
|
206
|
+
}
|
|
82
207
|
/** Parse a dimension spec string into a {@link Dimension}. @internal */
|
|
83
208
|
export function parseDimensionSpec(spec) {
|
|
84
209
|
const s = spec.trim();
|
|
@@ -91,7 +216,10 @@ export function parseDimensionSpec(spec) {
|
|
|
91
216
|
const named = NAMED_DIMS[s.toLowerCase()];
|
|
92
217
|
if (named)
|
|
93
218
|
return named;
|
|
94
|
-
// (3)
|
|
219
|
+
// (3) product/quotient, including parentheses and named exponents.
|
|
220
|
+
if (wantsGroupedProduct(s))
|
|
221
|
+
return parseGroupedProduct(s);
|
|
222
|
+
// (4) explicit base exponents.
|
|
95
223
|
const out = d();
|
|
96
224
|
const parts = s.split(/[.*\s]+/).filter(Boolean);
|
|
97
225
|
for (const part of parts) {
|
|
@@ -101,7 +229,7 @@ export function parseDimensionSpec(spec) {
|
|
|
101
229
|
const baseKey = BASES[m[1].toUpperCase()] ?? BASES[m[1]];
|
|
102
230
|
if (!baseKey) {
|
|
103
231
|
throw new DimensionSpecError(`unknown base dimension '${m[1]}' (use L M T I Theta N J, a named ` +
|
|
104
|
-
`dimension, or a
|
|
232
|
+
`dimension, a constant name, or a named product/quotient like power/area)`);
|
|
105
233
|
}
|
|
106
234
|
out[baseKey] += parseExponent(m[2] ?? '');
|
|
107
235
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dimension-spec.js","sourceRoot":"","sources":["../../src/dimensional/dimension-spec.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"dimension-spec.js","sourceRoot":"","sources":["../../src/dimensional/dimension-spec.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Names a formula may use that are not leaves of {@link CONSTANTS}.
|
|
3
|
+
*
|
|
4
|
+
* Spreading these into `CONSTANTS` would bake them into the canonical graph
|
|
5
|
+
* (`CANONICAL_CONSTANTS` spreads that table). They are an overlay for
|
|
6
|
+
* dimensional assignment and for `upt eval` only.
|
|
7
|
+
*
|
|
8
|
+
* @module dimensional/formula-names
|
|
9
|
+
*/
|
|
10
|
+
import type { Dimension } from './types.js';
|
|
11
|
+
/** Vacuum permittivity, the same CODATA value `CONSTANTS.epsilon_0` holds. */
|
|
12
|
+
export declare const EPS0_SI = 8.8541878128e-12;
|
|
13
|
+
/** Vacuum permeability from ε₀ and the exact c. */
|
|
14
|
+
export declare const MU0_SI: number;
|
|
15
|
+
/** One formula-only name. @internal */
|
|
16
|
+
export interface FormulaName {
|
|
17
|
+
readonly name: string;
|
|
18
|
+
readonly dim: Dimension;
|
|
19
|
+
readonly value: number;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Overlay names. `eps0` is rewritten to the constant `epsilon_0` before parse,
|
|
23
|
+
* so it is not listed here. `curvature_k` and `scale_factor` are the Friedmann
|
|
24
|
+
* curvature extension (the frozen `CE-friedmann` entry is the flat term).
|
|
25
|
+
* @internal
|
|
26
|
+
*/
|
|
27
|
+
export declare const FORMULA_NAMED: readonly FormulaName[];
|
|
28
|
+
/** Name → dimension for the formula overlay. Does not override a catalog entry. @internal */
|
|
29
|
+
export declare function formulaNameDimensions(): ReadonlyMap<string, Dimension>;
|
|
30
|
+
//# sourceMappingURL=formula-names.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"formula-names.d.ts","sourceRoot":"","sources":["../../src/dimensional/formula-names.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAQ5C,8EAA8E;AAC9E,eAAO,MAAM,OAAO,mBAAmB,CAAC;AACxC,mDAAmD;AACnD,eAAO,MAAM,MAAM,QAA8B,CAAC;AAElD,uCAAuC;AACvC,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,GAAG,EAAE,SAAS,CAAC;IACxB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;CACxB;AAED;;;;;GAKG;AACH,eAAO,MAAM,aAAa,EAAE,SAAS,WAAW,EAO/C,CAAC;AAEF,6FAA6F;AAC7F,wBAAgB,qBAAqB,IAAI,WAAW,CAAC,MAAM,EAAE,SAAS,CAAC,CAEtE"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Names a formula may use that are not leaves of {@link CONSTANTS}.
|
|
3
|
+
*
|
|
4
|
+
* Spreading these into `CONSTANTS` would bake them into the canonical graph
|
|
5
|
+
* (`CANONICAL_CONSTANTS` spreads that table). They are an overlay for
|
|
6
|
+
* dimensional assignment and for `upt eval` only.
|
|
7
|
+
*
|
|
8
|
+
* @module dimensional/formula-names
|
|
9
|
+
*/
|
|
10
|
+
import { CHARGE, DIMENSIONLESS, LENGTH, MASS } from './types.js';
|
|
11
|
+
import { C_SI, E_SI, M_E_SI } from '../core/constants.js';
|
|
12
|
+
const PERMITTIVITY = { L: -3, M: -1, T: 4, I: 2, Theta: 0, N: 0, J: 0 };
|
|
13
|
+
/** μ₀ = 1/(ε₀ c²), [M L T⁻² I⁻²]. */
|
|
14
|
+
const PERMEABILITY = { L: 1, M: 1, T: -2, I: -2, Theta: 0, N: 0, J: 0 };
|
|
15
|
+
/** Vacuum permittivity, the same CODATA value `CONSTANTS.epsilon_0` holds. */
|
|
16
|
+
export const EPS0_SI = 8.8541878128e-12;
|
|
17
|
+
/** Vacuum permeability from ε₀ and the exact c. */
|
|
18
|
+
export const MU0_SI = 1 / (EPS0_SI * C_SI * C_SI);
|
|
19
|
+
/**
|
|
20
|
+
* Overlay names. `eps0` is rewritten to the constant `epsilon_0` before parse,
|
|
21
|
+
* so it is not listed here. `curvature_k` and `scale_factor` are the Friedmann
|
|
22
|
+
* curvature extension (the frozen `CE-friedmann` entry is the flat term).
|
|
23
|
+
* @internal
|
|
24
|
+
*/
|
|
25
|
+
export const FORMULA_NAMED = [
|
|
26
|
+
{ name: 'm_e', dim: MASS, value: M_E_SI },
|
|
27
|
+
{ name: 'electron_mass', dim: MASS, value: M_E_SI },
|
|
28
|
+
{ name: 'e_charge', dim: CHARGE, value: E_SI },
|
|
29
|
+
{ name: 'mu_0', dim: PERMEABILITY, value: MU0_SI },
|
|
30
|
+
{ name: 'curvature_k', dim: DIMENSIONLESS, value: 0 },
|
|
31
|
+
{ name: 'scale_factor', dim: LENGTH, value: 1 },
|
|
32
|
+
];
|
|
33
|
+
/** Name → dimension for the formula overlay. Does not override a catalog entry. @internal */
|
|
34
|
+
export function formulaNameDimensions() {
|
|
35
|
+
return new Map(FORMULA_NAMED.map((n) => [n.name, n.dim]));
|
|
36
|
+
}
|
|
37
|
+
//# sourceMappingURL=formula-names.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"formula-names.js","sourceRoot":"","sources":["../../src/dimensional/formula-names.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AACjE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAE1D,MAAM,YAAY,GAAc,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;AACnF,qCAAqC;AACrC,MAAM,YAAY,GAAc,EAAE,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,EAAE,CAAC;AAEnF,8EAA8E;AAC9E,MAAM,CAAC,MAAM,OAAO,GAAG,gBAAgB,CAAC;AACxC,mDAAmD;AACnD,MAAM,CAAC,MAAM,MAAM,GAAG,CAAC,GAAG,CAAC,OAAO,GAAG,IAAI,GAAG,IAAI,CAAC,CAAC;AASlD;;;;;GAKG;AACH,MAAM,CAAC,MAAM,aAAa,GAA2B;IACnD,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE;IACzC,EAAE,IAAI,EAAE,eAAe,EAAE,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE;IACnD,EAAE,IAAI,EAAE,UAAU,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE;IAC9C,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,YAAY,EAAE,KAAK,EAAE,MAAM,EAAE;IAClD,EAAE,IAAI,EAAE,aAAa,EAAE,GAAG,EAAE,aAAa,EAAE,KAAK,EAAE,CAAC,EAAE;IACrD,EAAE,IAAI,EAAE,cAAc,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE;CAChD,CAAC;AAEF,6FAA6F;AAC7F,MAAM,UAAU,qBAAqB;IACnC,OAAO,IAAI,GAAG,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AAC5D,CAAC"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Opt-in natural units. The default comparison stays SI: an energy written as
|
|
3
|
+
* a mass is a mismatch. `--natural` sets ħ = c = 1; `--geometrized` also
|
|
4
|
+
* sets G = 1. A mismatch is reconciled only when the exponent difference is
|
|
5
|
+
* an integer combination of those constants.
|
|
6
|
+
*
|
|
7
|
+
* @module dimensional/natural-units
|
|
8
|
+
*/
|
|
9
|
+
import type { Dimension } from './types.js';
|
|
10
|
+
/** Which constants may be set to 1. @internal */
|
|
11
|
+
export type UnitMode = 'si' | 'natural' | 'geometrized';
|
|
12
|
+
/**
|
|
13
|
+
* Constant values for a numeric comparison in this mode. `h = 2π` keeps
|
|
14
|
+
* `h = 2π ħ` when `ħ = 1`. SI comparisons pass no overrides.
|
|
15
|
+
* @internal
|
|
16
|
+
*/
|
|
17
|
+
export declare function naturalConstantOverrides(mode: Exclude<UnitMode, 'si'>): Record<string, number>;
|
|
18
|
+
/** The powers of G, ħ and c that reconcile two dimensions, or null. @internal */
|
|
19
|
+
export interface NaturalPowers {
|
|
20
|
+
readonly nG: number;
|
|
21
|
+
readonly nH: number;
|
|
22
|
+
readonly nC: number;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Powers of G, ħ and c such that multiplying a quantity of dimension `from`
|
|
26
|
+
* by G^nG ħ^nH c^nC yields `to`. `nG` is zero unless `mode` is `geometrized`.
|
|
27
|
+
* Current, temperature, amount and luminous intensity must already agree.
|
|
28
|
+
* @internal
|
|
29
|
+
*/
|
|
30
|
+
export declare function naturalPowers(from: Dimension, to: Dimension, mode: Exclude<UnitMode, 'si'>): NaturalPowers | null;
|
|
31
|
+
/** A one-line note of the powers that were set to 1, or null when none are needed. @internal */
|
|
32
|
+
export declare function naturalNote(powers: NaturalPowers, mode: Exclude<UnitMode, 'si'>): string | null;
|
|
33
|
+
//# sourceMappingURL=natural-units.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"natural-units.d.ts","sourceRoot":"","sources":["../../src/dimensional/natural-units.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAE5C,iDAAiD;AACjD,MAAM,MAAM,QAAQ,GAAG,IAAI,GAAG,SAAS,GAAG,aAAa,CAAC;AAExD;;;;GAIG;AACH,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,OAAO,CAAC,QAAQ,EAAE,IAAI,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAI9F;AAED,iFAAiF;AACjF,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;CACrB;AAED;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,SAAS,EAAE,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,OAAO,CAAC,QAAQ,EAAE,IAAI,CAAC,GAAG,aAAa,GAAG,IAAI,CAcjH;AAED,gGAAgG;AAChG,wBAAgB,WAAW,CAAC,MAAM,EAAE,aAAa,EAAE,IAAI,EAAE,OAAO,CAAC,QAAQ,EAAE,IAAI,CAAC,GAAG,MAAM,GAAG,IAAI,CAQ/F"}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Opt-in natural units. The default comparison stays SI: an energy written as
|
|
3
|
+
* a mass is a mismatch. `--natural` sets ħ = c = 1; `--geometrized` also
|
|
4
|
+
* sets G = 1. A mismatch is reconciled only when the exponent difference is
|
|
5
|
+
* an integer combination of those constants.
|
|
6
|
+
*
|
|
7
|
+
* @module dimensional/natural-units
|
|
8
|
+
*/
|
|
9
|
+
/**
|
|
10
|
+
* Constant values for a numeric comparison in this mode. `h = 2π` keeps
|
|
11
|
+
* `h = 2π ħ` when `ħ = 1`. SI comparisons pass no overrides.
|
|
12
|
+
* @internal
|
|
13
|
+
*/
|
|
14
|
+
export function naturalConstantOverrides(mode) {
|
|
15
|
+
const overrides = { c: 1, hbar: 1, h: 2 * Math.PI };
|
|
16
|
+
if (mode === 'geometrized')
|
|
17
|
+
overrides.G = 1;
|
|
18
|
+
return overrides;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Powers of G, ħ and c such that multiplying a quantity of dimension `from`
|
|
22
|
+
* by G^nG ħ^nH c^nC yields `to`. `nG` is zero unless `mode` is `geometrized`.
|
|
23
|
+
* Current, temperature, amount and luminous intensity must already agree.
|
|
24
|
+
* @internal
|
|
25
|
+
*/
|
|
26
|
+
export function naturalPowers(from, to, mode) {
|
|
27
|
+
const dL = to.L - from.L;
|
|
28
|
+
const dM = to.M - from.M;
|
|
29
|
+
const dT = to.T - from.T;
|
|
30
|
+
if (to.I - from.I !== 0 || to.Theta - from.Theta !== 0 || to.N - from.N !== 0 || to.J - from.J !== 0) {
|
|
31
|
+
return null;
|
|
32
|
+
}
|
|
33
|
+
if ((dL + dT - dM) % 2 !== 0)
|
|
34
|
+
return null;
|
|
35
|
+
const nG = (dL + dT - dM) / 2;
|
|
36
|
+
if (nG !== 0 && mode !== 'geometrized')
|
|
37
|
+
return null;
|
|
38
|
+
const nH = dM + nG;
|
|
39
|
+
const nC = -dT - dM - 3 * nG;
|
|
40
|
+
if (!Number.isInteger(nH) || !Number.isInteger(nC) || !Number.isInteger(nG))
|
|
41
|
+
return null;
|
|
42
|
+
return { nG, nH, nC };
|
|
43
|
+
}
|
|
44
|
+
/** A one-line note of the powers that were set to 1, or null when none are needed. @internal */
|
|
45
|
+
export function naturalNote(powers, mode) {
|
|
46
|
+
if (powers.nG === 0 && powers.nH === 0 && powers.nC === 0)
|
|
47
|
+
return null;
|
|
48
|
+
const bits = [];
|
|
49
|
+
if (powers.nC !== 0)
|
|
50
|
+
bits.push(`c^${powers.nC}`);
|
|
51
|
+
if (powers.nH !== 0)
|
|
52
|
+
bits.push(`ħ^${powers.nH}`);
|
|
53
|
+
if (powers.nG !== 0)
|
|
54
|
+
bits.push(`G^${powers.nG}`);
|
|
55
|
+
const flag = mode === 'geometrized' ? '--geometrized (G = ħ = c = 1)' : '--natural (ħ = c = 1)';
|
|
56
|
+
return `${flag}: the dimensions agree after multiplying by ${bits.join(' ')}, with those constants set to 1`;
|
|
57
|
+
}
|
|
58
|
+
//# sourceMappingURL=natural-units.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"natural-units.js","sourceRoot":"","sources":["../../src/dimensional/natural-units.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAOH;;;;GAIG;AACH,MAAM,UAAU,wBAAwB,CAAC,IAA6B;IACpE,MAAM,SAAS,GAA2B,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC;IAC5E,IAAI,IAAI,KAAK,aAAa;QAAE,SAAS,CAAC,CAAC,GAAG,CAAC,CAAC;IAC5C,OAAO,SAAS,CAAC;AACnB,CAAC;AASD;;;;;GAKG;AACH,MAAM,UAAU,aAAa,CAAC,IAAe,EAAE,EAAa,EAAE,IAA6B;IACzF,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;IACzB,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;IACzB,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;IACzB,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC;QACrG,OAAO,IAAI,CAAC;IACd,CAAC;IACD,IAAI,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IAC1C,MAAM,EAAE,GAAG,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC;IAC9B,IAAI,EAAE,KAAK,CAAC,IAAI,IAAI,KAAK,aAAa;QAAE,OAAO,IAAI,CAAC;IACpD,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;IACnB,MAAM,EAAE,GAAG,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,CAAC;IAC7B,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC;QAAE,OAAO,IAAI,CAAC;IACzF,OAAO,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;AACxB,CAAC;AAED,gGAAgG;AAChG,MAAM,UAAU,WAAW,CAAC,MAAqB,EAAE,IAA6B;IAC9E,IAAI,MAAM,CAAC,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,EAAE,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IACvE,MAAM,IAAI,GAAa,EAAE,CAAC;IAC1B,IAAI,MAAM,CAAC,EAAE,KAAK,CAAC;QAAE,IAAI,CAAC,IAAI,CAAC,KAAK,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC;IACjD,IAAI,MAAM,CAAC,EAAE,KAAK,CAAC;QAAE,IAAI,CAAC,IAAI,CAAC,KAAK,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC;IACjD,IAAI,MAAM,CAAC,EAAE,KAAK,CAAC;QAAE,IAAI,CAAC,IAAI,CAAC,KAAK,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC;IACjD,MAAM,IAAI,GAAG,IAAI,KAAK,aAAa,CAAC,CAAC,CAAC,+BAA+B,CAAC,CAAC,CAAC,uBAAuB,CAAC;IAChG,OAAO,GAAG,IAAI,+CAA+C,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,iCAAiC,CAAC;AAC/G,CAAC"}
|