universal-physics-tensor 8.0.0 → 10.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +26 -21
- package/data/atlas/atlas.json +75 -64
- package/data/atlas/atlas.jsonld +1 -1
- package/data/atlas/diffusion.json +23 -22
- package/data/atlas/oscillators.json +21 -16
- package/data/atlas/waves.json +33 -28
- package/data/bridge-catalog.json +1356 -1791
- package/data/bridge-catalog.schema.json +789 -46
- package/data/quantities.json +280 -234
- package/data/quantities.schema.json +52 -0
- package/data/schemas/atlas-record.v0.json +184 -46
- package/data/units.json +1178 -0
- package/data/units.schema.json +124 -0
- package/dist/atlas/applicability.d.ts.map +1 -1
- package/dist/atlas/applicability.js +14 -3
- package/dist/atlas/applicability.js.map +1 -1
- package/dist/atlas/association.d.ts +1 -1
- package/dist/atlas/association.js.map +1 -1
- package/dist/atlas/benchmark/backend-shapes.d.ts.map +1 -1
- package/dist/atlas/benchmark/backend-shapes.js +5 -1
- package/dist/atlas/benchmark/backend-shapes.js.map +1 -1
- package/dist/atlas/benchmark/baselines.d.ts.map +1 -1
- package/dist/atlas/benchmark/baselines.js +8 -0
- package/dist/atlas/benchmark/baselines.js.map +1 -1
- package/dist/atlas/benchmark/hybrid-retrieval.d.ts +3 -2
- package/dist/atlas/benchmark/hybrid-retrieval.d.ts.map +1 -1
- package/dist/atlas/benchmark/hybrid-retrieval.js +16 -12
- package/dist/atlas/benchmark/hybrid-retrieval.js.map +1 -1
- package/dist/atlas/benchmark/leakage.js.map +1 -1
- package/dist/atlas/benchmark/loader.js.map +1 -1
- package/dist/atlas/benchmark/run-atlas.d.ts.map +1 -1
- package/dist/atlas/benchmark/run-atlas.js +14 -2
- package/dist/atlas/benchmark/run-atlas.js.map +1 -1
- package/dist/atlas/benchmark/stats.d.ts +1 -1
- package/dist/atlas/benchmark/stats.d.ts.map +1 -1
- package/dist/atlas/benchmark/stats.js +1 -1
- package/dist/atlas/benchmark/stats.js.map +1 -1
- package/dist/atlas/benchmark/study.js.map +1 -1
- package/dist/atlas/benchmark/types.js.map +1 -1
- package/dist/atlas/bridge-record.d.ts +4 -4
- package/dist/atlas/bridge-record.d.ts.map +1 -1
- package/dist/atlas/bridge-record.js +6 -6
- package/dist/atlas/bridge-record.js.map +1 -1
- package/dist/atlas/catalog-formal-ref.js.map +1 -1
- package/dist/atlas/chain-pipeline.d.ts +0 -11
- package/dist/atlas/chain-pipeline.d.ts.map +1 -1
- package/dist/atlas/chain-pipeline.js +5 -16
- package/dist/atlas/chain-pipeline.js.map +1 -1
- package/dist/atlas/composition-table.js.map +1 -1
- package/dist/atlas/conventions.js.map +1 -1
- package/dist/atlas/coverage.d.ts +2 -2
- package/dist/atlas/coverage.js.map +1 -1
- package/dist/atlas/derivation.js.map +1 -1
- package/dist/atlas/derive-evidence.d.ts +6 -4
- package/dist/atlas/derive-evidence.d.ts.map +1 -1
- package/dist/atlas/derive-evidence.js +7 -2
- 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 +0 -5
- package/dist/atlas/diffusion/bridges-closure.js.map +1 -1
- package/dist/atlas/diffusion/bridges.d.ts.map +1 -1
- package/dist/atlas/diffusion/bridges.js +0 -3
- package/dist/atlas/diffusion/bridges.js.map +1 -1
- package/dist/atlas/diffusion/dimensions.js.map +1 -1
- package/dist/atlas/diffusion/index.d.ts +1 -1
- package/dist/atlas/diffusion/index.d.ts.map +1 -1
- package/dist/atlas/diffusion/index.js.map +1 -1
- package/dist/atlas/diffusion/models.js.map +1 -1
- package/dist/atlas/diffusion/numerics.js.map +1 -1
- package/dist/atlas/error-algebra.d.ts +6 -0
- package/dist/atlas/error-algebra.d.ts.map +1 -1
- package/dist/atlas/error-algebra.js +26 -0
- package/dist/atlas/error-algebra.js.map +1 -1
- package/dist/atlas/export.d.ts +18 -2
- package/dist/atlas/export.d.ts.map +1 -1
- package/dist/atlas/export.js +9 -3
- package/dist/atlas/export.js.map +1 -1
- package/dist/atlas/families.d.ts +19 -2
- package/dist/atlas/families.d.ts.map +1 -1
- package/dist/atlas/families.js +26 -3
- package/dist/atlas/families.js.map +1 -1
- package/dist/atlas/family.d.ts +27 -0
- package/dist/atlas/family.d.ts.map +1 -0
- package/dist/atlas/family.js +12 -0
- package/dist/atlas/family.js.map +1 -0
- package/dist/atlas/index.d.ts +3 -2
- package/dist/atlas/index.d.ts.map +1 -1
- package/dist/atlas/index.js +2 -1
- package/dist/atlas/index.js.map +1 -1
- package/dist/atlas/link-prediction.d.ts +1 -1
- package/dist/atlas/link-prediction.d.ts.map +1 -1
- package/dist/atlas/link-prediction.js.map +1 -1
- package/dist/atlas/model.js.map +1 -1
- package/dist/atlas/oscillators/bridges-coarse.d.ts.map +1 -1
- package/dist/atlas/oscillators/bridges-coarse.js +0 -1
- package/dist/atlas/oscillators/bridges-coarse.js.map +1 -1
- package/dist/atlas/oscillators/bridges-exact.d.ts.map +1 -1
- package/dist/atlas/oscillators/bridges-exact.js +0 -3
- package/dist/atlas/oscillators/bridges-exact.js.map +1 -1
- package/dist/atlas/oscillators/bridges-limits.d.ts.map +1 -1
- package/dist/atlas/oscillators/bridges-limits.js +0 -2
- package/dist/atlas/oscillators/bridges-limits.js.map +1 -1
- package/dist/atlas/oscillators/dimensions.js.map +1 -1
- package/dist/atlas/oscillators/index.d.ts +1 -16
- package/dist/atlas/oscillators/index.d.ts.map +1 -1
- package/dist/atlas/oscillators/index.js.map +1 -1
- package/dist/atlas/oscillators/limit-witnesses.js.map +1 -1
- package/dist/atlas/oscillators/models.js.map +1 -1
- package/dist/atlas/oscillators/norm-transport-witness.js.map +1 -1
- package/dist/atlas/oscillators/norm-transport.js.map +1 -1
- package/dist/atlas/oscillators/norms.js.map +1 -1
- package/dist/atlas/oscillators/pendulum-motion.js.map +1 -1
- package/dist/atlas/oscillators/phase-carriage.js.map +1 -1
- package/dist/atlas/oscillators/phase-translation.js.map +1 -1
- package/dist/atlas/oscillators/position-translation.js.map +1 -1
- package/dist/atlas/oscillators/rejections.js.map +1 -1
- package/dist/atlas/path-bound.js.map +1 -1
- package/dist/atlas/physjs-entries.generated.d.ts +1601 -220
- package/dist/atlas/physjs-entries.generated.d.ts.map +1 -1
- package/dist/atlas/physjs-entries.generated.js +1854 -345
- package/dist/atlas/physjs-entries.generated.js.map +1 -1
- package/dist/atlas/physjs-ref.d.ts +151 -117
- package/dist/atlas/physjs-ref.d.ts.map +1 -1
- package/dist/atlas/physjs-ref.js +244 -211
- package/dist/atlas/physjs-ref.js.map +1 -1
- package/dist/atlas/physjs-reviewed.d.ts +31 -0
- package/dist/atlas/physjs-reviewed.d.ts.map +1 -0
- package/dist/atlas/physjs-reviewed.js +194 -0
- package/dist/atlas/physjs-reviewed.js.map +1 -0
- package/dist/atlas/poster/associations.js.map +1 -1
- package/dist/atlas/poster/derivations.js.map +1 -1
- package/dist/atlas/poster/statements.js.map +1 -1
- package/dist/atlas/proof-target.d.ts +16 -8
- package/dist/atlas/proof-target.d.ts.map +1 -1
- package/dist/atlas/proof-target.js +34 -31
- package/dist/atlas/proof-target.js.map +1 -1
- package/dist/atlas/public.d.ts +2 -1
- package/dist/atlas/public.d.ts.map +1 -1
- package/dist/atlas/public.js +2 -1
- package/dist/atlas/public.js.map +1 -1
- package/dist/atlas/regime.js.map +1 -1
- package/dist/atlas/serialize.d.ts +18 -12
- package/dist/atlas/serialize.d.ts.map +1 -1
- package/dist/atlas/serialize.js +28 -18
- package/dist/atlas/serialize.js.map +1 -1
- package/dist/atlas/statement.js.map +1 -1
- package/dist/atlas/translation-registry.js.map +1 -1
- package/dist/atlas/translation.js.map +1 -1
- package/dist/atlas/types.d.ts +9 -2
- package/dist/atlas/types.d.ts.map +1 -1
- package/dist/atlas/types.js +1 -1
- 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 +0 -3
- 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 +0 -4
- package/dist/atlas/waves/bridges.js.map +1 -1
- package/dist/atlas/waves/index.d.ts +1 -1
- package/dist/atlas/waves/index.d.ts.map +1 -1
- package/dist/atlas/waves/index.js.map +1 -1
- package/dist/atlas/waves/models.js.map +1 -1
- package/dist/atlas/waves/numerics.js.map +1 -1
- package/dist/atlas/witness-artifact.js.map +1 -1
- package/dist/atlas/witness-dominance.d.ts +4 -3
- package/dist/atlas/witness-dominance.d.ts.map +1 -1
- package/dist/atlas/witness-dominance.js +15 -5
- package/dist/atlas/witness-dominance.js.map +1 -1
- package/dist/atlas/witness-numeric.d.ts +8 -4
- package/dist/atlas/witness-numeric.d.ts.map +1 -1
- package/dist/atlas/witness-numeric.js +27 -2
- package/dist/atlas/witness-numeric.js.map +1 -1
- package/dist/atlas/witness-result.d.ts +7 -1
- package/dist/atlas/witness-result.d.ts.map +1 -1
- package/dist/atlas/witness-result.js.map +1 -1
- package/dist/atlas/witness-specs.js.map +1 -1
- package/dist/atlas/witness-symbolic.js.map +1 -1
- package/dist/atlas/witnesses/quantum-support.js.map +1 -1
- package/dist/bridges/caller-table.d.ts +1 -1
- package/dist/bridges/caller-table.d.ts.map +1 -1
- package/dist/bridges/caller-table.js.map +1 -1
- package/dist/bridges/carrier-sign.d.ts.map +1 -1
- package/dist/bridges/carrier-sign.js +8 -3
- package/dist/bridges/carrier-sign.js.map +1 -1
- package/dist/bridges/catalog-adapter.d.ts +12 -3
- package/dist/bridges/catalog-adapter.d.ts.map +1 -1
- package/dist/bridges/catalog-adapter.js +22 -14
- package/dist/bridges/catalog-adapter.js.map +1 -1
- package/dist/bridges/catalog-load.d.ts +19 -2
- package/dist/bridges/catalog-load.d.ts.map +1 -1
- package/dist/bridges/catalog-load.js +233 -14
- package/dist/bridges/catalog-load.js.map +1 -1
- package/dist/bridges/catalog-types.d.ts +96 -27
- package/dist/bridges/catalog-types.d.ts.map +1 -1
- package/dist/bridges/catalog-types.js.map +1 -1
- package/dist/bridges/coefficient-statement.js +1 -5
- package/dist/bridges/coefficient-statement.js.map +1 -1
- 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 +1 -1
- package/dist/bridges/confrontations.js.map +1 -1
- package/dist/bridges/evaluation-errors.d.ts +89 -0
- package/dist/bridges/evaluation-errors.d.ts.map +1 -0
- package/dist/bridges/evaluation-errors.js +136 -0
- package/dist/bridges/evaluation-errors.js.map +1 -0
- package/dist/bridges/evaluator-inputs.d.ts +5 -3
- package/dist/bridges/evaluator-inputs.d.ts.map +1 -1
- package/dist/bridges/evaluator-inputs.js +24 -24
- package/dist/bridges/evaluator-inputs.js.map +1 -1
- package/dist/bridges/evaluators.d.ts +48 -8
- package/dist/bridges/evaluators.d.ts.map +1 -1
- package/dist/bridges/evaluators.js +173 -38
- package/dist/bridges/evaluators.js.map +1 -1
- package/dist/bridges/expr-parse.d.ts +38 -7
- package/dist/bridges/expr-parse.d.ts.map +1 -1
- package/dist/bridges/expr-parse.js +129 -156
- package/dist/bridges/expr-parse.js.map +1 -1
- package/dist/bridges/holds.d.ts +16 -8
- package/dist/bridges/holds.d.ts.map +1 -1
- package/dist/bridges/holds.js +130 -236
- package/dist/bridges/holds.js.map +1 -1
- package/dist/bridges/index.d.ts +15 -14
- package/dist/bridges/index.d.ts.map +1 -1
- package/dist/bridges/index.js +14 -15
- package/dist/bridges/index.js.map +1 -1
- package/dist/bridges/input-contract.d.ts +65 -0
- package/dist/bridges/input-contract.d.ts.map +1 -0
- package/dist/bridges/input-contract.js +97 -0
- package/dist/bridges/input-contract.js.map +1 -0
- package/dist/bridges/membership.d.ts +5 -3
- package/dist/bridges/membership.d.ts.map +1 -1
- package/dist/bridges/membership.js +5 -6
- package/dist/bridges/membership.js.map +1 -1
- package/dist/bridges/notices.d.ts +11 -0
- package/dist/bridges/notices.d.ts.map +1 -0
- package/dist/bridges/notices.js +22 -0
- package/dist/bridges/notices.js.map +1 -0
- package/dist/bridges/observations/types.js.map +1 -1
- package/dist/bridges/rejected.d.ts +11 -17
- package/dist/bridges/rejected.d.ts.map +1 -1
- package/dist/bridges/rejected.js +13 -68
- package/dist/bridges/rejected.js.map +1 -1
- package/dist/bridges/relation-eval.d.ts +5 -6
- package/dist/bridges/relation-eval.d.ts.map +1 -1
- package/dist/bridges/relation-eval.js +9 -38
- package/dist/bridges/relation-eval.js.map +1 -1
- package/dist/bridges/rhs-registry.js.map +1 -1
- package/dist/bridges/sensitivity.d.ts +11 -3
- package/dist/bridges/sensitivity.d.ts.map +1 -1
- package/dist/bridges/sensitivity.js +24 -10
- package/dist/bridges/sensitivity.js.map +1 -1
- package/dist/bridges/tensor-index.js.map +1 -1
- package/dist/bridges/types.d.ts +1 -7
- package/dist/bridges/types.d.ts.map +1 -1
- package/dist/bridges/types.js +1 -4
- package/dist/bridges/types.js.map +1 -1
- package/dist/canonical/canonical-equation.d.ts +31 -0
- package/dist/canonical/canonical-equation.d.ts.map +1 -1
- package/dist/canonical/canonical-equation.js.map +1 -1
- package/dist/canonical/dimensional-fields.js.map +1 -1
- package/dist/canonical/entries/_l1-build.js.map +1 -1
- package/dist/canonical/entries/atomic.d.ts.map +1 -1
- package/dist/canonical/entries/atomic.js +11 -1
- package/dist/canonical/entries/atomic.js.map +1 -1
- package/dist/canonical/entries/condensed-matter.d.ts.map +1 -1
- package/dist/canonical/entries/condensed-matter.js +7 -4
- package/dist/canonical/entries/condensed-matter.js.map +1 -1
- package/dist/canonical/entries/dimensional-classics.d.ts.map +1 -1
- package/dist/canonical/entries/dimensional-classics.js +50 -2
- package/dist/canonical/entries/dimensional-classics.js.map +1 -1
- package/dist/canonical/entries/electromagnetism.d.ts.map +1 -1
- package/dist/canonical/entries/electromagnetism.js +32 -2
- package/dist/canonical/entries/electromagnetism.js.map +1 -1
- package/dist/canonical/entries/fluids-waves.d.ts.map +1 -1
- package/dist/canonical/entries/fluids-waves.js +34 -0
- package/dist/canonical/entries/fluids-waves.js.map +1 -1
- package/dist/canonical/entries/mechanics.d.ts.map +1 -1
- package/dist/canonical/entries/mechanics.js +24 -0
- package/dist/canonical/entries/mechanics.js.map +1 -1
- package/dist/canonical/entries/nonmonomial.d.ts.map +1 -1
- package/dist/canonical/entries/nonmonomial.js +42 -24
- package/dist/canonical/entries/nonmonomial.js.map +1 -1
- package/dist/canonical/entries/relativity.d.ts.map +1 -1
- package/dist/canonical/entries/relativity.js +6 -0
- package/dist/canonical/entries/relativity.js.map +1 -1
- package/dist/canonical/entries/statistical-mechanics.d.ts.map +1 -1
- package/dist/canonical/entries/statistical-mechanics.js +24 -5
- package/dist/canonical/entries/statistical-mechanics.js.map +1 -1
- package/dist/canonical/entries/thermo-nuclear-cosmo.d.ts.map +1 -1
- package/dist/canonical/entries/thermo-nuclear-cosmo.js +15 -0
- package/dist/canonical/entries/thermo-nuclear-cosmo.js.map +1 -1
- package/dist/canonical/linkage.d.ts +29 -4
- package/dist/canonical/linkage.d.ts.map +1 -1
- package/dist/canonical/linkage.js +31 -29
- package/dist/canonical/linkage.js.map +1 -1
- package/dist/canonical/normal-form.d.ts +0 -8
- package/dist/canonical/normal-form.d.ts.map +1 -1
- package/dist/canonical/normal-form.js +17 -12
- package/dist/canonical/normal-form.js.map +1 -1
- package/dist/canonical/registry.js.map +1 -1
- package/dist/canonical/residual.js.map +1 -1
- package/dist/canonical/seed-l-layer.d.ts +7 -1
- package/dist/canonical/seed-l-layer.d.ts.map +1 -1
- package/dist/canonical/seed-l-layer.js +7 -1
- package/dist/canonical/seed-l-layer.js.map +1 -1
- package/dist/canonical/structural.d.ts +21 -0
- package/dist/canonical/structural.d.ts.map +1 -1
- package/dist/canonical/structural.js +24 -4
- package/dist/canonical/structural.js.map +1 -1
- package/dist/cases/brownian-sphere.js +4 -4
- package/dist/cases/brownian-sphere.js.map +1 -1
- package/dist/cases/damped-resonator.js +2 -2
- package/dist/cases/damped-resonator.js.map +1 -1
- package/dist/cases/index.d.ts +9 -2
- package/dist/cases/index.d.ts.map +1 -1
- package/dist/cases/index.js +26 -7
- package/dist/cases/index.js.map +1 -1
- package/dist/cases/kepler-rv.js +6 -6
- package/dist/cases/kepler-rv.js.map +1 -1
- package/dist/cases/lumped-cooling.js +1 -1
- package/dist/cases/lumped-cooling.js.map +1 -1
- package/dist/cases/quadrature.js.map +1 -1
- package/dist/cases/resistor-noise.js +3 -3
- package/dist/cases/resistor-noise.js.map +1 -1
- package/dist/cases/skin-depth.js.map +1 -1
- package/dist/cases/types.js.map +1 -1
- package/dist/cli/args.d.ts +7 -2
- package/dist/cli/args.d.ts.map +1 -1
- package/dist/cli/args.js +18 -2
- package/dist/cli/args.js.map +1 -1
- package/dist/cli/bindings.d.ts +13 -0
- package/dist/cli/bindings.d.ts.map +1 -0
- package/dist/cli/bindings.js +32 -0
- package/dist/cli/bindings.js.map +1 -0
- package/dist/cli/closed-form-range.js.map +1 -1
- package/dist/cli/command.js.map +1 -1
- package/dist/cli/commands/_atlas-map.d.ts +3 -3
- package/dist/cli/commands/_atlas-map.d.ts.map +1 -1
- package/dist/cli/commands/_atlas-map.js +43 -18
- package/dist/cli/commands/_atlas-map.js.map +1 -1
- package/dist/cli/commands/_atlas-route.js.map +1 -1
- package/dist/cli/commands/_discovery-opts.d.ts +2 -1
- package/dist/cli/commands/_discovery-opts.d.ts.map +1 -1
- package/dist/cli/commands/_discovery-opts.js +48 -18
- package/dist/cli/commands/_discovery-opts.js.map +1 -1
- package/dist/cli/commands/atlas.d.ts.map +1 -1
- package/dist/cli/commands/atlas.js +7 -12
- 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 +13 -21
- package/dist/cli/commands/audit.js.map +1 -1
- package/dist/cli/commands/axes.js.map +1 -1
- package/dist/cli/commands/candidates.d.ts.map +1 -1
- package/dist/cli/commands/candidates.js +16 -8
- package/dist/cli/commands/candidates.js.map +1 -1
- package/dist/cli/commands/canonical.js.map +1 -1
- package/dist/cli/commands/chain.js +1 -1
- package/dist/cli/commands/chain.js.map +1 -1
- package/dist/cli/commands/confront.d.ts.map +1 -1
- package/dist/cli/commands/confront.js +22 -14
- 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 +8 -9
- package/dist/cli/commands/connectors.js.map +1 -1
- package/dist/cli/commands/coverage.js.map +1 -1
- package/dist/cli/commands/derive.d.ts.map +1 -1
- package/dist/cli/commands/derive.js +50 -26
- 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 +18 -13
- 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 +29 -26
- package/dist/cli/commands/eval.js.map +1 -1
- package/dist/cli/commands/evaluate.d.ts +1 -35
- package/dist/cli/commands/evaluate.d.ts.map +1 -1
- package/dist/cli/commands/evaluate.js +99 -208
- 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 +57 -45
- package/dist/cli/commands/explain.js.map +1 -1
- package/dist/cli/commands/frontier.js.map +1 -1
- package/dist/cli/commands/ground.d.ts.map +1 -1
- package/dist/cli/commands/ground.js +41 -11
- package/dist/cli/commands/ground.js.map +1 -1
- package/dist/cli/commands/index.js.map +1 -1
- package/dist/cli/commands/map.d.ts.map +1 -1
- package/dist/cli/commands/map.js +84 -92
- package/dist/cli/commands/map.js.map +1 -1
- package/dist/cli/commands/metric.d.ts.map +1 -1
- package/dist/cli/commands/metric.js +53 -15
- package/dist/cli/commands/metric.js.map +1 -1
- package/dist/cli/commands/path.js +4 -4
- package/dist/cli/commands/path.js.map +1 -1
- package/dist/cli/commands/predict.js.map +1 -1
- package/dist/cli/commands/priority.js.map +1 -1
- package/dist/cli/commands/probe.d.ts.map +1 -1
- package/dist/cli/commands/probe.js +50 -26
- package/dist/cli/commands/probe.js.map +1 -1
- package/dist/cli/commands/recover.js +1 -1
- package/dist/cli/commands/recover.js.map +1 -1
- package/dist/cli/commands/regime.d.ts +5 -4
- package/dist/cli/commands/regime.d.ts.map +1 -1
- package/dist/cli/commands/regime.js +25 -27
- package/dist/cli/commands/regime.js.map +1 -1
- package/dist/cli/commands/retrieve.d.ts.map +1 -1
- package/dist/cli/commands/retrieve.js +22 -14
- package/dist/cli/commands/retrieve.js.map +1 -1
- package/dist/cli/commands/search.d.ts.map +1 -1
- package/dist/cli/commands/search.js +8 -4
- package/dist/cli/commands/search.js.map +1 -1
- package/dist/cli/commands/symbolic.d.ts.map +1 -1
- package/dist/cli/commands/symbolic.js +14 -7
- package/dist/cli/commands/symbolic.js.map +1 -1
- package/dist/cli/commands/testplan.js +4 -4
- package/dist/cli/commands/testplan.js.map +1 -1
- package/dist/cli/conventions.d.ts +6 -7
- package/dist/cli/conventions.d.ts.map +1 -1
- package/dist/cli/conventions.js +19 -28
- package/dist/cli/conventions.js.map +1 -1
- package/dist/cli/determination.js.map +1 -1
- package/dist/cli/errors.js.map +1 -1
- package/dist/cli/euler-guard.d.ts +13 -2
- package/dist/cli/euler-guard.d.ts.map +1 -1
- package/dist/cli/euler-guard.js +17 -3
- package/dist/cli/euler-guard.js.map +1 -1
- package/dist/cli/eval-numbers.d.ts +4 -9
- package/dist/cli/eval-numbers.d.ts.map +1 -1
- package/dist/cli/eval-numbers.js +11 -41
- package/dist/cli/eval-numbers.js.map +1 -1
- package/dist/cli/expr-print.d.ts +29 -2
- package/dist/cli/expr-print.d.ts.map +1 -1
- package/dist/cli/expr-print.js +46 -2
- package/dist/cli/expr-print.js.map +1 -1
- package/dist/cli/flag-help.js.map +1 -1
- package/dist/cli/graphs.js.map +1 -1
- package/dist/cli/library-defaults.d.ts +19 -0
- package/dist/cli/library-defaults.d.ts.map +1 -0
- package/dist/cli/library-defaults.js +22 -0
- package/dist/cli/library-defaults.js.map +1 -0
- package/dist/cli/main.js +7 -3
- package/dist/cli/main.js.map +1 -1
- package/dist/cli/map-evidence.js.map +1 -1
- package/dist/cli/output.d.ts +3 -6
- package/dist/cli/output.d.ts.map +1 -1
- package/dist/cli/output.js.map +1 -1
- package/dist/cli/published-url.d.ts +2 -0
- package/dist/cli/published-url.d.ts.map +1 -1
- package/dist/cli/published-url.js +5 -0
- package/dist/cli/published-url.js.map +1 -1
- package/dist/cli/record-reach.d.ts +6 -0
- package/dist/cli/record-reach.d.ts.map +1 -1
- package/dist/cli/record-reach.js +16 -10
- package/dist/cli/record-reach.js.map +1 -1
- package/dist/cli/record-tables.d.ts +2 -1
- package/dist/cli/record-tables.d.ts.map +1 -1
- package/dist/cli/record-tables.js +8 -3
- package/dist/cli/record-tables.js.map +1 -1
- package/dist/cli/record.d.ts.map +1 -1
- package/dist/cli/record.js +31 -12
- package/dist/cli/record.js.map +1 -1
- package/dist/cli/search-index.d.ts +5 -0
- package/dist/cli/search-index.d.ts.map +1 -1
- package/dist/cli/search-index.js +12 -1
- package/dist/cli/search-index.js.map +1 -1
- package/dist/cli/statuses.js.map +1 -1
- package/dist/cli/top-level-help.js.map +1 -1
- package/dist/cli/version.js.map +1 -1
- package/dist/cli-api.d.ts +57 -18
- package/dist/cli-api.d.ts.map +1 -1
- package/dist/cli-api.js +49 -21
- package/dist/cli-api.js.map +1 -1
- package/dist/composition/adjudication.d.ts +8 -30
- package/dist/composition/adjudication.d.ts.map +1 -1
- package/dist/composition/adjudication.js +15 -67
- package/dist/composition/adjudication.js.map +1 -1
- package/dist/composition/aliases.d.ts +1 -1
- package/dist/composition/aliases.d.ts.map +1 -1
- package/dist/composition/aliases.js +10 -20
- package/dist/composition/aliases.js.map +1 -1
- package/dist/composition/audit-coverage.d.ts +2 -0
- package/dist/composition/audit-coverage.d.ts.map +1 -1
- package/dist/composition/audit-coverage.js.map +1 -1
- package/dist/composition/axes.d.ts +12 -0
- package/dist/composition/axes.d.ts.map +1 -1
- package/dist/composition/axes.js +18 -6
- package/dist/composition/axes.js.map +1 -1
- package/dist/composition/axis-audit.js.map +1 -1
- package/dist/composition/bridge-analysis.d.ts +0 -14
- package/dist/composition/bridge-analysis.d.ts.map +1 -1
- package/dist/composition/bridge-analysis.js +66 -57
- package/dist/composition/bridge-analysis.js.map +1 -1
- package/dist/composition/bridge-prediction.d.ts +5 -1
- package/dist/composition/bridge-prediction.d.ts.map +1 -1
- package/dist/composition/bridge-prediction.js +12 -16
- package/dist/composition/bridge-prediction.js.map +1 -1
- package/dist/composition/buckingham-filter.js.map +1 -1
- package/dist/composition/canonical-compare.d.ts.map +1 -1
- package/dist/composition/canonical-compare.js +12 -2
- package/dist/composition/canonical-compare.js.map +1 -1
- package/dist/composition/canonical-graph.d.ts +15 -18
- package/dist/composition/canonical-graph.d.ts.map +1 -1
- package/dist/composition/canonical-graph.js +59 -85
- package/dist/composition/canonical-graph.js.map +1 -1
- package/dist/composition/canonical-json.js.map +1 -1
- package/dist/composition/canonical-prefactors.d.ts +10 -29
- package/dist/composition/canonical-prefactors.d.ts.map +1 -1
- package/dist/composition/canonical-prefactors.js +15 -202
- package/dist/composition/canonical-prefactors.js.map +1 -1
- package/dist/composition/catalog-graph.d.ts.map +1 -1
- package/dist/composition/catalog-graph.js +6 -20
- package/dist/composition/catalog-graph.js.map +1 -1
- package/dist/composition/chain-candidate.d.ts +2 -0
- package/dist/composition/chain-candidate.d.ts.map +1 -1
- package/dist/composition/chain-candidate.js +2 -0
- package/dist/composition/chain-candidate.js.map +1 -1
- package/dist/composition/chain-match.js.map +1 -1
- package/dist/composition/chain-regime.js.map +1 -1
- package/dist/composition/chain-result.js.map +1 -1
- package/dist/composition/compose-surface.js.map +1 -1
- package/dist/composition/compose-symbolic.js.map +1 -1
- package/dist/composition/compose.d.ts.map +1 -1
- package/dist/composition/compose.js +154 -36
- package/dist/composition/compose.js.map +1 -1
- package/dist/composition/composition-recovery.js.map +1 -1
- package/dist/composition/consequence.d.ts.map +1 -1
- package/dist/composition/consequence.js +15 -6
- package/dist/composition/consequence.js.map +1 -1
- package/dist/composition/consistency.js.map +1 -1
- package/dist/composition/descriptor.d.ts +1 -1
- package/dist/composition/descriptor.d.ts.map +1 -1
- package/dist/composition/descriptor.js.map +1 -1
- package/dist/composition/dimension-adjacency.js.map +1 -1
- package/dist/composition/discovery.d.ts +67 -7
- package/dist/composition/discovery.d.ts.map +1 -1
- package/dist/composition/discovery.js +83 -23
- package/dist/composition/discovery.js.map +1 -1
- package/dist/composition/edge.d.ts +19 -22
- package/dist/composition/edge.d.ts.map +1 -1
- package/dist/composition/edge.js +25 -28
- package/dist/composition/edge.js.map +1 -1
- package/dist/composition/enumerate.d.ts +2 -2
- package/dist/composition/enumerate.d.ts.map +1 -1
- package/dist/composition/enumerate.js.map +1 -1
- package/dist/composition/evaluate-relation.d.ts +29 -5
- package/dist/composition/evaluate-relation.d.ts.map +1 -1
- package/dist/composition/evaluate-relation.js +100 -72
- package/dist/composition/evaluate-relation.js.map +1 -1
- package/dist/composition/explain.d.ts +14 -4
- package/dist/composition/explain.d.ts.map +1 -1
- package/dist/composition/explain.js +53 -19
- package/dist/composition/explain.js.map +1 -1
- package/dist/composition/expr-eval.d.ts.map +1 -1
- package/dist/composition/expr-eval.js +2 -1
- package/dist/composition/expr-eval.js.map +1 -1
- package/dist/composition/expr-simplify.d.ts.map +1 -1
- package/dist/composition/expr-simplify.js +9 -39
- package/dist/composition/expr-simplify.js.map +1 -1
- package/dist/composition/expr-subst.js.map +1 -1
- package/dist/composition/formula-shape.d.ts +9 -0
- package/dist/composition/formula-shape.d.ts.map +1 -1
- package/dist/composition/formula-shape.js +54 -0
- package/dist/composition/formula-shape.js.map +1 -1
- package/dist/composition/frontier-account.d.ts +3 -2
- package/dist/composition/frontier-account.d.ts.map +1 -1
- package/dist/composition/frontier-account.js +7 -3
- package/dist/composition/frontier-account.js.map +1 -1
- package/dist/composition/graph-viz-svg.js.map +1 -1
- package/dist/composition/graph-viz.js.map +1 -1
- package/dist/composition/grounding.js.map +1 -1
- package/dist/composition/identifiability.js.map +1 -1
- package/dist/composition/index.d.ts +9 -5
- package/dist/composition/index.d.ts.map +1 -1
- package/dist/composition/index.js +7 -4
- package/dist/composition/index.js.map +1 -1
- package/dist/composition/mathts-quiet.d.ts +28 -0
- package/dist/composition/mathts-quiet.d.ts.map +1 -0
- package/dist/composition/mathts-quiet.js +56 -0
- package/dist/composition/mathts-quiet.js.map +1 -0
- package/dist/composition/mathts-scalar-symbols.d.ts.map +1 -1
- package/dist/composition/mathts-scalar-symbols.js +18 -34
- package/dist/composition/mathts-scalar-symbols.js.map +1 -1
- package/dist/composition/not-composable-seeds.d.ts +3 -1
- package/dist/composition/not-composable-seeds.d.ts.map +1 -1
- package/dist/composition/not-composable-seeds.js +2 -0
- package/dist/composition/not-composable-seeds.js.map +1 -1
- package/dist/composition/probe/backend-protocol.js.map +1 -1
- package/dist/composition/probe/candidate-store.js.map +1 -1
- package/dist/composition/probe/corpus.js.map +1 -1
- package/dist/composition/probe/dataset.js.map +1 -1
- package/dist/composition/probe/experiment-design.js.map +1 -1
- package/dist/composition/probe/expression-gaps.js.map +1 -1
- package/dist/composition/probe/falsify.d.ts +14 -3
- package/dist/composition/probe/falsify.d.ts.map +1 -1
- package/dist/composition/probe/falsify.js +14 -27
- package/dist/composition/probe/falsify.js.map +1 -1
- package/dist/composition/probe/fingerprint.js.map +1 -1
- package/dist/composition/probe/fit.d.ts +1 -1
- package/dist/composition/probe/fit.d.ts.map +1 -1
- package/dist/composition/probe/fit.js +2 -1
- package/dist/composition/probe/fit.js.map +1 -1
- package/dist/composition/probe/frontier.js.map +1 -1
- package/dist/composition/probe/generator.js.map +1 -1
- package/dist/composition/probe/index.d.ts +4 -2
- package/dist/composition/probe/index.d.ts.map +1 -1
- package/dist/composition/probe/index.js +4 -2
- package/dist/composition/probe/index.js.map +1 -1
- package/dist/composition/probe/limits.js.map +1 -1
- package/dist/composition/probe/metadata.js.map +1 -1
- package/dist/composition/probe/pipeline.d.ts +5 -0
- package/dist/composition/probe/pipeline.d.ts.map +1 -1
- package/dist/composition/probe/pipeline.js +13 -6
- package/dist/composition/probe/pipeline.js.map +1 -1
- package/dist/composition/probe/problem.d.ts +8 -0
- package/dist/composition/probe/problem.d.ts.map +1 -1
- package/dist/composition/probe/problem.js +78 -12
- package/dist/composition/probe/problem.js.map +1 -1
- package/dist/composition/probe/report.js.map +1 -1
- package/dist/composition/probe/residual.js.map +1 -1
- package/dist/composition/probe/run-manifest.js +2 -2
- package/dist/composition/probe/run-manifest.js.map +1 -1
- package/dist/composition/probe/scoring.d.ts +2 -1
- package/dist/composition/probe/scoring.d.ts.map +1 -1
- package/dist/composition/probe/scoring.js +21 -7
- package/dist/composition/probe/scoring.js.map +1 -1
- package/dist/composition/probe/search-budget.js.map +1 -1
- package/dist/composition/probe/serialize.js.map +1 -1
- package/dist/composition/probe/structure.js.map +1 -1
- package/dist/composition/probe/study.d.ts +4 -3
- package/dist/composition/probe/study.d.ts.map +1 -1
- package/dist/composition/probe/study.js +5 -3
- package/dist/composition/probe/study.js.map +1 -1
- package/dist/composition/probe/types.d.ts +3 -1
- package/dist/composition/probe/types.d.ts.map +1 -1
- package/dist/composition/probe/types.js +2 -0
- package/dist/composition/probe/types.js.map +1 -1
- package/dist/composition/proposed-bridges.d.ts +11 -4
- package/dist/composition/proposed-bridges.d.ts.map +1 -1
- package/dist/composition/proposed-bridges.js +14 -6
- package/dist/composition/proposed-bridges.js.map +1 -1
- package/dist/composition/quantities.d.ts +0 -4
- package/dist/composition/quantities.d.ts.map +1 -1
- package/dist/composition/quantities.js +5 -5
- package/dist/composition/quantities.js.map +1 -1
- package/dist/composition/quantity.d.ts +18 -2
- package/dist/composition/quantity.d.ts.map +1 -1
- package/dist/composition/quantity.js +35 -6
- package/dist/composition/quantity.js.map +1 -1
- package/dist/composition/representative-values.js.map +1 -1
- package/dist/composition/retrodiction.d.ts +18 -0
- package/dist/composition/retrodiction.d.ts.map +1 -1
- package/dist/composition/retrodiction.js +37 -7
- package/dist/composition/retrodiction.js.map +1 -1
- package/dist/composition/uncertainty.js.map +1 -1
- package/dist/composition/user-equation.d.ts +11 -7
- package/dist/composition/user-equation.d.ts.map +1 -1
- package/dist/composition/user-equation.js +24 -26
- package/dist/composition/user-equation.js.map +1 -1
- package/dist/core/axes-registry.d.ts +8 -5
- package/dist/core/axes-registry.d.ts.map +1 -1
- package/dist/core/axes-registry.js.map +1 -1
- package/dist/core/cell.js.map +1 -1
- package/dist/core/constants.d.ts +35 -12
- package/dist/core/constants.d.ts.map +1 -1
- package/dist/core/constants.js +46 -15
- package/dist/core/constants.js.map +1 -1
- package/dist/core/data-file.d.ts +27 -0
- package/dist/core/data-file.d.ts.map +1 -0
- package/dist/core/data-file.js +48 -0
- package/dist/core/data-file.js.map +1 -0
- package/dist/core/flux-rules.js +1 -1
- package/dist/core/flux-rules.js.map +1 -1
- package/dist/core/json-schema.d.ts +27 -0
- package/dist/core/json-schema.d.ts.map +1 -0
- package/dist/core/json-schema.js +177 -0
- package/dist/core/json-schema.js.map +1 -0
- package/dist/core/labeled-tensor.d.ts +6 -1
- package/dist/core/labeled-tensor.d.ts.map +1 -1
- package/dist/core/labeled-tensor.js +18 -8
- package/dist/core/labeled-tensor.js.map +1 -1
- package/dist/core/regime-registry.d.ts +6 -2
- package/dist/core/regime-registry.d.ts.map +1 -1
- package/dist/core/regime-registry.js.map +1 -1
- package/dist/core/regime-rule-install.js.map +1 -1
- package/dist/core/regimes-builtins.js.map +1 -1
- package/dist/core/tensor.d.ts +7 -4
- package/dist/core/tensor.d.ts.map +1 -1
- package/dist/core/tensor.js +40 -8
- package/dist/core/tensor.js.map +1 -1
- package/dist/core/types.d.ts +3 -2
- package/dist/core/types.d.ts.map +1 -1
- package/dist/core/types.js +16 -14
- package/dist/core/types.js.map +1 -1
- package/dist/core/universal-index.js.map +1 -1
- package/dist/diff/bridge-ast-gradient.d.ts +4 -5
- package/dist/diff/bridge-ast-gradient.d.ts.map +1 -1
- package/dist/diff/bridge-ast-gradient.js +16 -23
- package/dist/diff/bridge-ast-gradient.js.map +1 -1
- package/dist/diff/bridge-gradient.d.ts +24 -80
- package/dist/diff/bridge-gradient.d.ts.map +1 -1
- package/dist/diff/bridge-gradient.js +21 -98
- package/dist/diff/bridge-gradient.js.map +1 -1
- package/dist/diff/bridge-specs.d.ts +18 -6
- package/dist/diff/bridge-specs.d.ts.map +1 -1
- package/dist/diff/bridge-specs.js +17 -5
- package/dist/diff/bridge-specs.js.map +1 -1
- package/dist/dimensional/algebra.js.map +1 -1
- package/dist/dimensional/ast-builders.d.ts +5 -4
- package/dist/dimensional/ast-builders.d.ts.map +1 -1
- package/dist/dimensional/ast-builders.js +6 -5
- package/dist/dimensional/ast-builders.js.map +1 -1
- package/dist/dimensional/ast-types.js.map +1 -1
- package/dist/dimensional/bridge-check.d.ts.map +1 -1
- package/dist/dimensional/bridge-check.js +3 -5
- package/dist/dimensional/bridge-check.js.map +1 -1
- package/dist/dimensional/buckingham.js.map +1 -1
- package/dist/dimensional/connection-validators.d.ts +2 -1
- package/dist/dimensional/connection-validators.d.ts.map +1 -1
- package/dist/dimensional/connection-validators.js.map +1 -1
- package/dist/dimensional/connection.js.map +1 -1
- package/dist/dimensional/constant-rows.d.ts +54 -0
- package/dist/dimensional/constant-rows.d.ts.map +1 -0
- package/dist/dimensional/constant-rows.js +115 -0
- package/dist/dimensional/constant-rows.js.map +1 -0
- package/dist/dimensional/constants.d.ts +7 -17
- package/dist/dimensional/constants.d.ts.map +1 -1
- package/dist/dimensional/constants.js +12 -21
- package/dist/dimensional/constants.js.map +1 -1
- package/dist/dimensional/curvature-composite.js.map +1 -1
- package/dist/dimensional/curvature-invariants.js.map +1 -1
- package/dist/dimensional/curvature.js.map +1 -1
- package/dist/dimensional/dimension-inference.js.map +1 -1
- package/dist/dimensional/dimension-spec.d.ts +21 -6
- package/dist/dimensional/dimension-spec.d.ts.map +1 -1
- package/dist/dimensional/dimension-spec.js +150 -160
- package/dist/dimensional/dimension-spec.js.map +1 -1
- package/dist/dimensional/einstein-equation.js.map +1 -1
- package/dist/dimensional/errors.d.ts +3 -1
- package/dist/dimensional/errors.d.ts.map +1 -1
- package/dist/dimensional/errors.js +2 -2
- package/dist/dimensional/errors.js.map +1 -1
- package/dist/dimensional/exact-scale.d.ts +79 -0
- package/dist/dimensional/exact-scale.d.ts.map +1 -0
- package/dist/dimensional/exact-scale.js +222 -0
- package/dist/dimensional/exact-scale.js.map +1 -0
- package/dist/dimensional/field-equation-helpers.js.map +1 -1
- package/dist/dimensional/formula-names.d.ts +13 -12
- package/dist/dimensional/formula-names.d.ts.map +1 -1
- package/dist/dimensional/formula-names.js +28 -51
- package/dist/dimensional/formula-names.js.map +1 -1
- package/dist/dimensional/fresh-label.js.map +1 -1
- package/dist/dimensional/friedmann-equation.d.ts +3 -3
- package/dist/dimensional/friedmann-equation.js +3 -3
- package/dist/dimensional/friedmann-equation.js.map +1 -1
- package/dist/dimensional/gauge-field.d.ts +2 -3
- package/dist/dimensional/gauge-field.d.ts.map +1 -1
- package/dist/dimensional/gauge-field.js +0 -1
- package/dist/dimensional/gauge-field.js.map +1 -1
- package/dist/dimensional/hyphen-names.d.ts.map +1 -1
- package/dist/dimensional/hyphen-names.js +8 -0
- package/dist/dimensional/hyphen-names.js.map +1 -1
- package/dist/dimensional/killing-validators.js.map +1 -1
- package/dist/dimensional/klein-gordon-equation.js.map +1 -1
- package/dist/dimensional/metric-validators.d.ts +2 -1
- package/dist/dimensional/metric-validators.d.ts.map +1 -1
- package/dist/dimensional/metric-validators.js.map +1 -1
- package/dist/dimensional/metric.js.map +1 -1
- package/dist/dimensional/natural-units.js.map +1 -1
- package/dist/dimensional/quantity-registry.d.ts +23 -1
- package/dist/dimensional/quantity-registry.d.ts.map +1 -1
- package/dist/dimensional/quantity-registry.js +55 -18
- package/dist/dimensional/quantity-registry.js.map +1 -1
- package/dist/dimensional/rg-flow.js.map +1 -1
- package/dist/dimensional/stress-energy-validators.js.map +1 -1
- package/dist/dimensional/symbolic-constants.d.ts +63 -19
- package/dist/dimensional/symbolic-constants.d.ts.map +1 -1
- package/dist/dimensional/symbolic-constants.js +114 -92
- package/dist/dimensional/symbolic-constants.js.map +1 -1
- package/dist/dimensional/tensor-trace.js.map +1 -1
- package/dist/dimensional/tensor.js.map +1 -1
- package/dist/dimensional/types.js.map +1 -1
- package/dist/dimensional/unit-convention.d.ts +0 -2
- package/dist/dimensional/unit-convention.d.ts.map +1 -1
- package/dist/dimensional/unit-convention.js +2 -2
- package/dist/dimensional/unit-convention.js.map +1 -1
- package/dist/dimensional/unit-data.d.ts +70 -0
- package/dist/dimensional/unit-data.d.ts.map +1 -0
- package/dist/dimensional/unit-data.js +139 -0
- package/dist/dimensional/unit-data.js.map +1 -0
- package/dist/dimensional/units.d.ts +87 -24
- package/dist/dimensional/units.d.ts.map +1 -1
- package/dist/dimensional/units.js +290 -295
- package/dist/dimensional/units.js.map +1 -1
- package/dist/dimensional/validator-registry.js.map +1 -1
- package/dist/dimensional/validator.d.ts +0 -16
- package/dist/dimensional/validator.d.ts.map +1 -1
- package/dist/dimensional/validator.js +65 -29
- package/dist/dimensional/validator.js.map +1 -1
- package/dist/dimensional/weyl-validators.js.map +1 -1
- package/dist/index.d.ts +65 -18
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +19 -24
- package/dist/index.js.map +1 -1
- package/dist/numerical/bianchi-residual.js.map +1 -1
- package/dist/numerical/binding-value.d.ts +32 -7
- package/dist/numerical/binding-value.d.ts.map +1 -1
- package/dist/numerical/binding-value.js +218 -209
- package/dist/numerical/binding-value.js.map +1 -1
- package/dist/numerical/christoffel-flat.js.map +1 -1
- package/dist/numerical/connection-lowering-helpers.js.map +1 -1
- package/dist/numerical/covariant-eikonal.d.ts.map +1 -1
- package/dist/numerical/covariant-eikonal.js +2 -2
- package/dist/numerical/covariant-eikonal.js.map +1 -1
- package/dist/numerical/curvature-lowering-helpers.d.ts +20 -0
- package/dist/numerical/curvature-lowering-helpers.d.ts.map +1 -1
- package/dist/numerical/curvature-lowering-helpers.js +6 -3
- package/dist/numerical/curvature-lowering-helpers.js.map +1 -1
- package/dist/numerical/derivative-lowering.js.map +1 -1
- package/dist/numerical/einstein-equation.js.map +1 -1
- package/dist/numerical/engine-registry.js.map +1 -1
- package/dist/numerical/errors.d.ts +7 -3
- package/dist/numerical/errors.d.ts.map +1 -1
- package/dist/numerical/errors.js +5 -5
- package/dist/numerical/errors.js.map +1 -1
- package/dist/numerical/evaluator-uncertainty.d.ts +34 -0
- package/dist/numerical/evaluator-uncertainty.d.ts.map +1 -0
- package/dist/numerical/evaluator-uncertainty.js +134 -0
- package/dist/numerical/evaluator-uncertainty.js.map +1 -0
- package/dist/numerical/formula-contract.d.ts +67 -7
- package/dist/numerical/formula-contract.d.ts.map +1 -1
- package/dist/numerical/formula-contract.js +68 -42
- package/dist/numerical/formula-contract.js.map +1 -1
- package/dist/numerical/formula-dimension.d.ts +17 -7
- package/dist/numerical/formula-dimension.d.ts.map +1 -1
- package/dist/numerical/formula-dimension.js +120 -44
- 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 +10 -3
- package/dist/numerical/formula-mathts.js.map +1 -1
- package/dist/numerical/formula-registry.d.ts +13 -3
- package/dist/numerical/formula-registry.d.ts.map +1 -1
- package/dist/numerical/formula-registry.js +7 -2
- package/dist/numerical/formula-registry.js.map +1 -1
- package/dist/numerical/geodesic-integrator.js.map +1 -1
- package/dist/numerical/geometrized.js.map +1 -1
- package/dist/numerical/gl4-integrator.d.ts +28 -27
- package/dist/numerical/gl4-integrator.d.ts.map +1 -1
- package/dist/numerical/gl4-integrator.js +44 -45
- package/dist/numerical/gl4-integrator.js.map +1 -1
- package/dist/numerical/grid-field.js.map +1 -1
- package/dist/numerical/index.js.map +1 -1
- package/dist/numerical/input-validation.d.ts +3 -6
- package/dist/numerical/input-validation.d.ts.map +1 -1
- package/dist/numerical/input-validation.js +4 -8
- package/dist/numerical/input-validation.js.map +1 -1
- package/dist/numerical/killing.d.ts +8 -5
- package/dist/numerical/killing.d.ts.map +1 -1
- package/dist/numerical/killing.js.map +1 -1
- package/dist/numerical/klein-gordon.js.map +1 -1
- package/dist/numerical/kretschmann.js.map +1 -1
- package/dist/numerical/lowering-utils.js.map +1 -1
- package/dist/numerical/lowering.d.ts.map +1 -1
- package/dist/numerical/lowering.js +7 -17
- package/dist/numerical/lowering.js.map +1 -1
- package/dist/numerical/mathts-engine.d.ts.map +1 -1
- package/dist/numerical/mathts-engine.js +11 -6
- package/dist/numerical/mathts-engine.js.map +1 -1
- package/dist/numerical/metric-inverse.js.map +1 -1
- package/dist/numerical/null-ic.js.map +1 -1
- package/dist/numerical/null-ray-integrator.js +4 -4
- package/dist/numerical/null-ray-integrator.js.map +1 -1
- package/dist/numerical/painleve-gullstrand-metric.js.map +1 -1
- package/dist/numerical/pderiv.d.ts.map +1 -1
- package/dist/numerical/pderiv.js +9 -2
- package/dist/numerical/pderiv.js.map +1 -1
- package/dist/numerical/perihelion-finder.js.map +1 -1
- package/dist/numerical/quadrature.d.ts +5 -2
- package/dist/numerical/quadrature.d.ts.map +1 -1
- package/dist/numerical/quadrature.js +20 -3
- package/dist/numerical/quadrature.js.map +1 -1
- package/dist/numerical/spacetime-metrics.d.ts +17 -19
- package/dist/numerical/spacetime-metrics.d.ts.map +1 -1
- package/dist/numerical/spacetime-metrics.js +158 -250
- package/dist/numerical/spacetime-metrics.js.map +1 -1
- package/dist/numerical/strides.js.map +1 -1
- package/dist/numerical/tensor-engine.d.ts +9 -5
- package/dist/numerical/tensor-engine.d.ts.map +1 -1
- package/dist/numerical/tensor-engine.js.map +1 -1
- package/dist/numerical/types.js.map +1 -1
- package/dist/numerical/weyl-lowering.js.map +1 -1
- package/dist/relations/category.js.map +1 -1
- package/dist/relations/composition-table.d.ts +4 -4
- package/dist/relations/composition-table.js +4 -4
- package/dist/relations/composition-table.js.map +1 -1
- package/dist/relations/conventions.js.map +1 -1
- package/dist/relations/domain-regimes.js.map +1 -1
- package/dist/relations/regime-registration.js.map +1 -1
- package/dist/relations/regime-vocabularies.js.map +1 -1
- package/dist/relations/regime.d.ts +18 -8
- package/dist/relations/regime.d.ts.map +1 -1
- package/dist/relations/regime.js +26 -14
- package/dist/relations/regime.js.map +1 -1
- package/dist/relations/types.d.ts +26 -6
- package/dist/relations/types.d.ts.map +1 -1
- package/dist/relations/types.js +15 -3
- package/dist/relations/types.js.map +1 -1
- package/package.json +10 -14
- package/dist/bridges/registry.d.ts +0 -60
- package/dist/bridges/registry.d.ts.map +0 -1
- package/dist/bridges/registry.js +0 -87
- package/dist/bridges/registry.js.map +0 -1
- package/dist/cli/poster-source.d.ts +0 -154
- package/dist/cli/poster-source.d.ts.map +0 -1
- package/dist/cli/poster-source.js +0 -184
- package/dist/cli/poster-source.js.map +0 -1
|
@@ -1,52 +1,21 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Names a formula may use that are not leaves of {@link CONSTANTS}
|
|
3
|
-
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
2
|
+
* Names a formula may use that are not leaves of {@link CONSTANTS}: the
|
|
3
|
+
* non-canonical rows of the constant registry. Spreading them into
|
|
4
|
+
* `CONSTANTS` would bake them into the canonical graph (`CANONICAL_CONSTANTS`
|
|
5
|
+
* spreads that table). They are an overlay for dimensional assignment and for
|
|
6
|
+
* `upt eval` only.
|
|
7
7
|
*
|
|
8
8
|
* @module dimensional/formula-names
|
|
9
9
|
*/
|
|
10
|
-
import {
|
|
11
|
-
import {
|
|
12
|
-
import { allQuantityRecords, quantityRecord, synonymGroupsFromRegistry } from './quantity-registry.js';
|
|
13
|
-
const PERMITTIVITY = { L: -3, M: -1, T: 4, I: 2, Theta: 0, N: 0, J: 0 };
|
|
14
|
-
/** μ₀ = 1/(ε₀ c²), [M L T⁻² I⁻²]. */
|
|
15
|
-
const PERMEABILITY = { L: 1, M: 1, T: -2, I: -2, Theta: 0, N: 0, J: 0 };
|
|
16
|
-
/** N_A — [N⁻¹]. */
|
|
17
|
-
const PER_AMOUNT = { L: 0, M: 0, T: 0, I: 0, Theta: 0, N: -1, J: 0 };
|
|
18
|
-
/** Faraday constant — charge per amount, [T I N⁻¹]. */
|
|
19
|
-
const FARADAY = { L: 0, M: 0, T: 1, I: 1, Theta: 0, N: -1, J: 0 };
|
|
20
|
-
/** Thomson cross-section — area. */
|
|
21
|
-
const AREA = { L: 2, M: 0, T: 0, I: 0, Theta: 0, N: 0, J: 0 };
|
|
22
|
-
/** Vacuum permittivity, the same CODATA value `CONSTANTS.epsilon_0` holds. */
|
|
23
|
-
export const EPS0_SI = 8.8541878128e-12;
|
|
24
|
-
/** Vacuum permeability from ε₀ and the exact c. */
|
|
25
|
-
export const MU0_SI = 1 / (EPS0_SI * C_SI * C_SI);
|
|
10
|
+
import { MASS, TEMPERATURE } from './types.js';
|
|
11
|
+
import { CONSTANT_REGISTRY } from './symbolic-constants.js';
|
|
12
|
+
import { allQuantityRecords, foldName, quantityRecord, synonymGroupsFromRegistry } from './quantity-registry.js';
|
|
26
13
|
/**
|
|
27
|
-
* Overlay names
|
|
28
|
-
* so it is not listed here.
|
|
29
|
-
* curvature extension (the frozen `CE-friedmann` entry is the flat term).
|
|
14
|
+
* Overlay names: the registry rows a canonical equation may not bake. `eps0`
|
|
15
|
+
* is a spelling of `epsilon_0`, so it is not listed here.
|
|
30
16
|
* @internal
|
|
31
17
|
*/
|
|
32
|
-
export const FORMULA_NAMED =
|
|
33
|
-
{ name: 'm_e', dim: MASS, value: M_E_SI },
|
|
34
|
-
{ name: 'electron_mass', dim: MASS, value: M_E_SI },
|
|
35
|
-
{ name: 'e_charge', dim: CHARGE, value: E_SI },
|
|
36
|
-
{ name: 'mu_0', dim: PERMEABILITY, value: MU0_SI },
|
|
37
|
-
{ name: 'm_p', dim: MASS, value: M_PROTON_SI },
|
|
38
|
-
{ name: 'm_proton', dim: MASS, value: M_PROTON_SI },
|
|
39
|
-
{ name: 'N_A', dim: PER_AMOUNT, value: N_A_SI },
|
|
40
|
-
{ name: 'F', dim: FARADAY, value: FARADAY_SI },
|
|
41
|
-
{ name: 'curvature_k', dim: DIMENSIONLESS, value: 0 },
|
|
42
|
-
{ name: 'scale_factor', dim: LENGTH, value: 1 },
|
|
43
|
-
{ name: 'sigma_T', dim: AREA, value: THOMSON_CROSS_SECTION_SI },
|
|
44
|
-
{ name: 'lane_emden_omega_3', dim: DIMENSIONLESS, value: LANE_EMDEN_OMEGA3 },
|
|
45
|
-
// GRW mass amplification: λ = λ₀ · (m / m₀), with λ₀ a rate and m₀ a mass.
|
|
46
|
-
// The two numbers are the catalog expression's, so the rate is unchanged.
|
|
47
|
-
{ name: 'grw_lambda0', dim: FREQUENCY, value: 1e-16 },
|
|
48
|
-
{ name: 'grw_m0', dim: MASS, value: 1.67e-27 },
|
|
49
|
-
];
|
|
18
|
+
export const FORMULA_NAMED = CONSTANT_REGISTRY.filter((row) => !row.canonical).map((row) => ({ name: row.name, dim: row.dim, value: row.value }));
|
|
50
19
|
/** Name → dimension for the formula overlay. Does not override a catalog entry. @internal */
|
|
51
20
|
export function formulaNameDimensions() {
|
|
52
21
|
return new Map(FORMULA_NAMED.map((n) => [n.name, n.dim]));
|
|
@@ -78,7 +47,6 @@ export const DIMENSION_RENAMES = [
|
|
|
78
47
|
*/
|
|
79
48
|
/** Synonym groups projected from the quantity registry's aliases. */
|
|
80
49
|
export const SYNONYM_GROUPS = synonymGroupsFromRegistry();
|
|
81
|
-
const foldName = (s) => s.replace(/_/g, '-');
|
|
82
50
|
const QUANTITY_IDS = new Set(allQuantityRecords().map((row) => row.id));
|
|
83
51
|
/**
|
|
84
52
|
* The registry id for `name`, or for the same spelling with `_` written as `-`.
|
|
@@ -125,6 +93,20 @@ export class SynonymDisagreementError extends Error {
|
|
|
125
93
|
this.name = 'SynonymDisagreementError';
|
|
126
94
|
}
|
|
127
95
|
}
|
|
96
|
+
/**
|
|
97
|
+
* The error for spellings of one quantity that carry different numbers, or
|
|
98
|
+
* null when they agree. Every caller that refuses a disagreement builds its
|
|
99
|
+
* message here.
|
|
100
|
+
*/
|
|
101
|
+
export function synonymDisagreement(present, values) {
|
|
102
|
+
if (present.length < 2)
|
|
103
|
+
return null;
|
|
104
|
+
const first = values[present[0]];
|
|
105
|
+
if (!present.some((key) => values[key] !== first))
|
|
106
|
+
return null;
|
|
107
|
+
const shown = present.map((key) => `${key}=${values[key]}`).join(', ');
|
|
108
|
+
return new SynonymDisagreementError(`${present.join(' and ')} are one quantity and disagree (${shown})`);
|
|
109
|
+
}
|
|
128
110
|
/** Spellings of one group that `values` actually binds. */
|
|
129
111
|
function presentSpellings(group, values) {
|
|
130
112
|
return Object.keys(values).filter((key) => group.some((member) => member === key || foldName(member) === foldName(key)));
|
|
@@ -135,14 +117,9 @@ function presentSpellings(group, values) {
|
|
|
135
117
|
*/
|
|
136
118
|
export function assertSynonymAgreement(values) {
|
|
137
119
|
for (const group of SYNONYM_GROUPS) {
|
|
138
|
-
const
|
|
139
|
-
if (
|
|
140
|
-
|
|
141
|
-
const first = values[present[0]];
|
|
142
|
-
if (present.some((key) => values[key] !== first)) {
|
|
143
|
-
const shown = present.map((key) => `${key}=${values[key]}`).join(', ');
|
|
144
|
-
throw new SynonymDisagreementError(`${present.join(' and ')} are one quantity and disagree (${shown})`);
|
|
145
|
-
}
|
|
120
|
+
const disagreement = synonymDisagreement(presentSpellings(group, values), values);
|
|
121
|
+
if (disagreement !== null)
|
|
122
|
+
throw disagreement;
|
|
146
123
|
}
|
|
147
124
|
}
|
|
148
125
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"formula-names.js","sourceRoot":"","sources":["../../src/dimensional/formula-names.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"formula-names.js","sourceRoot":"","sources":["../../src/dimensional/formula-names.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Names a formula may use that are not leaves of {@link CONSTANTS}: the\n * non-canonical rows of the constant registry. Spreading them into\n * `CONSTANTS` would bake them into the canonical graph (`CANONICAL_CONSTANTS`\n * spreads that table). They are an overlay for dimensional assignment and for\n * `upt eval` only.\n *\n * @module dimensional/formula-names\n */\n\nimport type { Dimension } from './types.js';\nimport { MASS, TEMPERATURE } from './types.js';\nimport { CONSTANT_REGISTRY } from './symbolic-constants.js';\nimport { allQuantityRecords, foldName, quantityRecord, synonymGroupsFromRegistry } from './quantity-registry.js';\n\n/** One formula-only name. @internal */\nexport interface FormulaName {\n readonly name: string;\n readonly dim: Dimension;\n readonly value: number;\n}\n\n/**\n * Overlay names: the registry rows a canonical equation may not bake. `eps0`\n * is a spelling of `epsilon_0`, so it is not listed here.\n * @internal\n */\nexport const FORMULA_NAMED: readonly FormulaName[] = CONSTANT_REGISTRY.filter((row) => !row.canonical).map(\n (row) => ({ name: row.name, dim: row.dim, value: row.value }),\n);\n\n/** Name → dimension for the formula overlay. Does not override a catalog entry. @internal */\nexport function formulaNameDimensions(): ReadonlyMap<string, Dimension> {\n return new Map(FORMULA_NAMED.map((n) => [n.name, n.dim]));\n}\n\n/** A short symbol is this quantity only when it carries this dimension. */\nexport interface DimensionRename {\n readonly symbol: string;\n readonly dimension: Dimension;\n readonly name: string;\n}\n\n/**\n * Structural-hash spellings. A time coordinate named `T` is not temperature.\n * The name table includes this array. It is defined here so the canonical\n * normal form can read it without importing composition.\n */\nexport const DIMENSION_RENAMES: readonly DimensionRename[] = [\n { symbol: 'T', dimension: TEMPERATURE, name: 'temperature' },\n { symbol: 'M', dimension: MASS, name: 'mass' },\n { symbol: 'm_1', dimension: MASS, name: 'mass' },\n { symbol: 'm_2', dimension: MASS, name: 'secondary-mass' },\n];\n\n/**\n * One quantity, under every spelling a caller may type.\n *\n * A group is not a pair of hubs. `T` and `temp` are the same temperature\n * whether or not the word `temperature` is also present. `Th_K` and `Tc_K`\n * are two temperatures and are not in the temperature group. `k_B` and\n * `boltzmann-constant` are one scale. `specific-heat` and\n * `specific-heat-capacity` are one quantity. This array is\n * the only spelling list: the name table holds it by reference, and a\n * temperature binding asks {@link isTemperatureName}.\n *\n * A dimension rename is a different fact. It applies only when the symbol\n * carries that dimension, so a time coordinate named `T` stays `T`.\n */\n/** Synonym groups projected from the quantity registry's aliases. */\nexport const SYNONYM_GROUPS: readonly (readonly string[])[] = synonymGroupsFromRegistry();\n\nconst QUANTITY_IDS = new Set(allQuantityRecords().map((row) => row.id));\n\n/**\n * The registry id for `name`, or for the same spelling with `_` written as `-`.\n * A short symbol that is not an id stays unresolved. Dimension is not consulted.\n */\nexport function quantityIdForSpelling(name: string): string | undefined {\n if (QUANTITY_IDS.has(name)) return name;\n const hyphen = foldName(name);\n if (hyphen !== name && QUANTITY_IDS.has(hyphen)) return hyphen;\n return undefined;\n}\n\n/** The group `name` belongs to, comparing `_` and `-` as the same character. */\nexport function synonymGroup(name: string): readonly string[] | undefined {\n const folded = foldName(name);\n return SYNONYM_GROUPS.find((group) => group.some((member) => member === name || foldName(member) === folded));\n}\n\n/**\n * True when `name` is a spelling of the temperature quantity.\n * A declared kelvin unit is a separate fact the binding reader already has.\n */\nexport function isTemperatureName(name: string): boolean {\n const group = synonymGroup(name);\n return group !== undefined && group.includes('temperature');\n}\n\n/**\n * Whether an affine temperature on this quantity is an interval or a point.\n *\n * The registry declares `kind`. An interval is a difference. A name the\n * registry does not declare is an absolute point. The spelling of the name\n * is not the role.\n */\nexport function temperatureQuantityRole(name: string): 'absolute' | 'difference' {\n return quantityRecord(name)?.kind === 'interval' ? 'difference' : 'absolute';\n}\n\n/**\n * Thrown when one quantity is bound under two spellings and the numbers differ.\n * The formula is not run. The message names both spellings.\n */\nexport class SynonymDisagreementError extends Error {\n constructor(message: string) {\n super(message);\n this.name = 'SynonymDisagreementError';\n }\n}\n\n/**\n * The error for spellings of one quantity that carry different numbers, or\n * null when they agree. Every caller that refuses a disagreement builds its\n * message here.\n */\nexport function synonymDisagreement(\n present: readonly string[],\n values: Readonly<Record<string, number | undefined>>,\n): SynonymDisagreementError | null {\n if (present.length < 2) return null;\n const first = values[present[0]!];\n if (!present.some((key) => values[key] !== first)) return null;\n const shown = present.map((key) => `${key}=${values[key]}`).join(', ');\n return new SynonymDisagreementError(`${present.join(' and ')} are one quantity and disagree (${shown})`);\n}\n\n/** Spellings of one group that `values` actually binds. */\nfunction presentSpellings(group: readonly string[], values: Readonly<Record<string, number>>): string[] {\n return Object.keys(values).filter((key) => group.some((member) => member === key || foldName(member) === foldName(key)));\n}\n\n/**\n * Refuse two spellings of one quantity that carry different numbers.\n * The message names the keys the caller typed.\n */\nexport function assertSynonymAgreement(values: Readonly<Record<string, number>>): void {\n for (const group of SYNONYM_GROUPS) {\n const disagreement = synonymDisagreement(presentSpellings(group, values), values);\n if (disagreement !== null) throw disagreement;\n }\n}\n\n/**\n * Copy an agreed value onto every spelling in its group.\n * A formula that names `T` and a formula that names `temperature` then read one binding.\n */\nexport function expandSynonymValues<T extends Record<string, number>>(values: T): T {\n assertSynonymAgreement(values);\n const out: Record<string, number> = { ...values };\n for (const group of SYNONYM_GROUPS) {\n const present = presentSpellings(group, values);\n if (present.length === 0) continue;\n const value = values[present[0]!]!;\n for (const member of group) {\n if (!Object.hasOwn(out, member)) out[member] = value;\n }\n }\n return out as T;\n}\n\n/**\n * The catalog or parameter name `name` means.\n *\n * A literal name wins, then an `_`/`-` swap, then an edge alias whose target\n * is in `catalogNames`, then the member of {@link SYNONYM_GROUPS} that the\n * catalog holds. `null` when none of those is in the catalog. `T` is\n * temperature when that name is in the catalog; the pendulum period is named\n * `period`, not `T`.\n *\n * @public\n */\nexport function resolveQuantityName(\n name: string,\n catalogNames: ReadonlySet<string>,\n edgeAliases?: ReadonlyMap<string, string>,\n): string | null {\n if (catalogNames.has(name)) return name;\n const underToHyphen = name.replace(/_/g, '-');\n if (underToHyphen !== name && catalogNames.has(underToHyphen)) return underToHyphen;\n const hyphenToUnder = name.replace(/-/g, '_');\n if (hyphenToUnder !== name && catalogNames.has(hyphenToUnder)) return hyphenToUnder;\n if (edgeAliases !== undefined) {\n const alias = edgeAliases.get(name) ?? edgeAliases.get(underToHyphen) ?? edgeAliases.get(hyphenToUnder);\n if (alias !== undefined && catalogNames.has(alias)) return alias;\n }\n const group = synonymGroup(name);\n if (group !== undefined) {\n for (const member of group) {\n if (catalogNames.has(member)) return member;\n const folded = foldName(member);\n if (folded !== member && catalogNames.has(folded)) return folded;\n }\n }\n return null;\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fresh-label.js","sourceRoot":"","sources":["../../src/dimensional/fresh-label.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH;;;;;;;;GAQG;AACH,MAAM,UAAU,UAAU,CAAC,IAAY,EAAE,KAAkB;IACzD,IAAI,OAAO,GAAG,CAAC,CAAC;IAChB,OAAO,KAAK,CAAC,GAAG,CAAC,GAAG,IAAI,IAAI,OAAO,EAAE,CAAC;QAAE,OAAO,EAAE,CAAC;IAClD,OAAO,GAAG,IAAI,IAAI,OAAO,EAAE,CAAC;AAC9B,CAAC"}
|
|
1
|
+
{"version":3,"file":"fresh-label.js","sourceRoot":"","sources":["../../src/dimensional/fresh-label.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH;;;;;;;;GAQG;AACH,MAAM,UAAU,UAAU,CAAC,IAAY,EAAE,KAAkB;IACzD,IAAI,OAAO,GAAG,CAAC,CAAC;IAChB,OAAO,KAAK,CAAC,GAAG,CAAC,GAAG,IAAI,IAAI,OAAO,EAAE,CAAC;QAAE,OAAO,EAAE,CAAC;IAClD,OAAO,GAAG,IAAI,IAAI,OAAO,EAAE,CAAC;AAC9B,CAAC","sourcesContent":["/**\n * Shared deterministic fresh-label utility used by both metric.ts (raise/lower)\n * and connection.ts (christoffel). Extracted to eliminate the algorithmic\n * divergence found in the Task 3 code-quality review (Finding #1).\n *\n * Canonical semantics (from metric.ts, the older module with downstream callers):\n * always returns `<base>_<counter>` starting at counter=1, regardless of\n * whether `base` itself is free. This guarantees every returned label is\n * suffixed and avoids subtle round-trip inconsistencies when the same base\n * label appears in multiple call sites.\n *\n * Per Part-VIII §VIII.5 TENSOR-RULE raise-lower-fresh-label-deterministic.\n *\n * @module dimensional/fresh-label\n */\n\n/**\n * Generate a deterministic fresh label not present in `taken`.\n * Uses the scheme `<base>_<counter>` starting at counter=1; increments until\n * a non-taken label is found. Deterministic across runs.\n *\n * @param base The preferred label stem (e.g. `'ρ'`).\n * @param taken Set of labels already in use.\n * @returns A label of the form `<base>_N` where N ≥ 1.\n */\nexport function freshLabel(base: string, taken: Set<string>): string {\n let counter = 1;\n while (taken.has(`${base}_${counter}`)) counter++;\n return `${base}_${counter}`;\n}\n"]}
|
|
@@ -51,9 +51,9 @@
|
|
|
51
51
|
*
|
|
52
52
|
* Status: PREDICATE node like `EinsteinFieldEquationNode` and
|
|
53
53
|
* `KleinGordonEquationNode` — not a value-producing expression.
|
|
54
|
-
* Numerical evaluation of a specific FRW history is out of scope
|
|
55
|
-
*
|
|
56
|
-
*
|
|
54
|
+
* Numerical evaluation of a specific FRW history is out of scope; the
|
|
55
|
+
* catalog relation be-19 that consumes this node has no numerical
|
|
56
|
+
* evaluator (`src/bridges/README.md`).
|
|
57
57
|
*
|
|
58
58
|
* @module dimensional/friedmann-equation
|
|
59
59
|
*/
|
|
@@ -51,9 +51,9 @@
|
|
|
51
51
|
*
|
|
52
52
|
* Status: PREDICATE node like `EinsteinFieldEquationNode` and
|
|
53
53
|
* `KleinGordonEquationNode` — not a value-producing expression.
|
|
54
|
-
* Numerical evaluation of a specific FRW history is out of scope
|
|
55
|
-
*
|
|
56
|
-
*
|
|
54
|
+
* Numerical evaluation of a specific FRW history is out of scope; the
|
|
55
|
+
* catalog relation be-19 that consumes this node has no numerical
|
|
56
|
+
* evaluator (`src/bridges/README.md`).
|
|
57
57
|
*
|
|
58
58
|
* @module dimensional/friedmann-equation
|
|
59
59
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"friedmann-equation.js","sourceRoot":"","sources":["../../src/dimensional/friedmann-equation.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"friedmann-equation.js","sourceRoot":"","sources":["../../src/dimensional/friedmann-equation.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Friedmann equation AST node — modified-cosmology predicate.\n *\n * Per `docs/architecture/archive/v0.7-be-x-reencoding-design-note.md`\n * §\"BE-19 — `FriedmannEquationNode` for modified-Friedmann\n * predicates\". Fourth of four BE-X structural re-encodings in the\n * v0.7-series follow-up to the v0.6.0 deferred-bridges list.\n *\n * Represents the predicate\n *\n * H² = (8πG/3) · ρ · [correction]\n *\n * where H is the Hubble parameter, ρ the cosmic energy/mass-density,\n * and `[correction]` is a variant-tagged extension term. The classical\n * FRW form takes `correction = null`; modified-cosmology variants\n * (LQC bounce, Randall-Sundrum brane, DGP, dRGT massive gravity)\n * tag their correction with a `variant` discriminator so consumers\n * can pattern-match on which cosmological regime the equation\n * occupies.\n *\n * Discriminator vocabulary:\n *\n * - `'classical'` — canonical FRW `H² = (8πG/3) ρ` (the [-k/a²]\n * and [Λ/3] terms ride along as additive scalars, not the\n * `correction` slot). `correction` MUST be `null`.\n * - `'lqc'` — Loop Quantum Cosmology bounce `(1 − ρ/ρ_crit)`. The\n * correction is a DIMENSIONLESS multiplicative factor.\n * - `'brane'` — Randall-Sundrum brane-tension `(1 + ρ/(2σ))`. Also\n * dimensionless multiplicative.\n * - `'dgp'` — Dvali-Gabadadze-Porrati 5D-crossover `±H/r_c`. The\n * `correction` slot holds a stub for the additional scale; this\n * variant signals \"5D structure present\" — fine-grained dim\n * discipline left for future BE-NN landing.\n * - `'massive'` — dRGT massive-gravity graviton-mass term. The\n * `correction` slot holds the graviton-mass^2 contribution; dim\n * discipline left for future BE-NN landing.\n *\n * The variant discriminator is the load-bearing structural fact:\n * future modified-cosmology bridges (brane, DGP, dRGT) land as new\n * `BridgeEquation` entries that produce `FriedmannEquationNode`s\n * with the appropriate variant tag, instead of each inventing a\n * separate AST primitive.\n *\n * References:\n * - Mukhanov, *Physical Foundations of Cosmology* (2005), §2.1\n * for the canonical FRW Friedmann equation derivation.\n * - Ashtekar & Singh, *Loop Quantum Cosmology: A Status Report*\n * (2011), arXiv:1108.0893 — for the LQC `(1 − ρ/ρ_crit)` bounce\n * factor; the canonical reference for the `'lqc'` variant\n * consumed by BE-19.\n *\n * Status: PREDICATE node like `EinsteinFieldEquationNode` and\n * `KleinGordonEquationNode` — not a value-producing expression.\n * Numerical evaluation of a specific FRW history is out of scope; the\n * catalog relation be-19 that consumes this node has no numerical\n * evaluator (`src/bridges/README.md`).\n *\n * @module dimensional/friedmann-equation\n */\n\nimport type { Dimension } from './types.js';\nimport { MASS_DENSITY } from './types.js';\nimport type { ScalarFieldNode } from './klein-gordon-equation.js';\nimport { equals } from './algebra.js';\nimport {\n validateFreeIndexLabelMatch,\n validateComponentDimension,\n validateTensorSymmetry,\n} from './field-equation-helpers.js';\n\n// ---------------------------------------------------------------------------\n// Variant discriminator\n// ---------------------------------------------------------------------------\n\n/**\n * Tag for the cosmological regime a `FriedmannEquationNode`\n * represents. Each variant identifies a structural pattern of\n * deviation from canonical FRW; consumers pattern-match on this\n * discriminator to select regime-specific downstream logic.\n *\n * See the module docstring for the per-variant semantics.\n *\n * @public\n */\nexport type FriedmannVariant =\n | 'classical'\n | 'lqc'\n | 'brane'\n | 'dgp'\n | 'massive';\n\nconst KNOWN_VARIANTS: ReadonlySet<FriedmannVariant> = new Set([\n 'classical',\n 'lqc',\n 'brane',\n 'dgp',\n 'massive',\n]);\n\n// ---------------------------------------------------------------------------\n// Node interface\n// ---------------------------------------------------------------------------\n\n/**\n * AST node for the modified Friedmann equation\n *\n * H² = (8πG/3) · ρ · [variant-specific correction]\n *\n * Fields:\n * - `hubble` — H or H² as a `ScalarFieldNode`. Accepted dims\n * are `[T^-1]` (H) or `[T^-2]` (H²); the validator\n * does NOT square the field for you, it only\n * checks the stated dim is one of the two.\n * - `density` — ρ as a `ScalarFieldNode`, dim `[M·L^-3]`\n * (mass-density convention, aligning with BE-19's\n * existing `QUANTUM_BOUNCE_RHS` encoding).\n * - `correction` — the variant-specific extension. `null` IFF\n * `variant === 'classical'`. For `'lqc'`, the\n * correction's dim is constrained to be\n * dimensionless (the `(1 − ρ/ρ_crit)` factor).\n * Other non-classical variants accept any dim\n * (refinement deferred to per-bridge landing).\n * - `variant` — the regime discriminator. See `FriedmannVariant`.\n * - `coupling` — tag `'friedmann'` representing the symbolic\n * `(8πG/3)` prefactor (no inline numeric).\n *\n * @public\n */\nexport interface FriedmannEquationNode {\n readonly kind: 'friedmann-equation';\n readonly hubble: ScalarFieldNode;\n readonly density: ScalarFieldNode;\n readonly correction: ScalarFieldNode | null;\n readonly variant: FriedmannVariant;\n readonly coupling: 'friedmann';\n}\n\n/**\n * Result of validating a `FriedmannEquationNode`. Mirrors\n * `KleinGordonEquationValidationResult` shape.\n *\n * @public\n */\nexport interface FriedmannEquationValidationResult {\n /** Per-component dim of the equation — `[T^-2]` (H² shape). */\n readonly dim: Dimension;\n /** Empty free-indices map (rank-0 equation). */\n readonly freeIndices: Map<string, { upper: number; lower: number }>;\n /** Echo of the variant tag for downstream pattern-matching. */\n readonly variant: FriedmannVariant;\n}\n\n// ---------------------------------------------------------------------------\n// Expected dims\n// ---------------------------------------------------------------------------\n\n/** `[T^-2]`: dim of H² and of (8πG/3)·ρ in the canonical Friedmann form. */\nconst T_INV2: Dimension = { L: 0, M: 0, T: -2, I: 0, Theta: 0, N: 0, J: 0 };\n\n/** `[T^-1]`: dim of the un-squared Hubble parameter H. */\nconst T_INV1: Dimension = { L: 0, M: 0, T: -1, I: 0, Theta: 0, N: 0, J: 0 };\n\n/** `[]`: dimensionless (the LQC `(1 − ρ/ρ_crit)` correction factor). */\nconst DIMLESS: Dimension = { L: 0, M: 0, T: 0, I: 0, Theta: 0, N: 0, J: 0 };\n\n// ---------------------------------------------------------------------------\n// Validator\n// ---------------------------------------------------------------------------\n\n/**\n * Validate a `friedmann-equation` node.\n *\n * Predicates (mirroring the field-equation-helpers pattern):\n *\n * 1. **Variant discriminator** — `variant` must be one of the\n * known tags. Throws with `\"variant\"` keyword on unknown values.\n * 2. **Classical–correction consistency** — `variant === 'classical'`\n * requires `correction === null`; any other variant requires\n * `correction !== null`. Throws with `\"variant\"` keyword.\n * 3. **Free-index agreement** — trivially passes (rank-0 equation).\n * 4. **Per-component dim equality** — `hubble.dim` must be `[T^-2]`\n * (H²) or `[T^-1]` (H); `density.dim` must be `[M·L^-3]`. For\n * `variant === 'lqc'`, `correction.dim` must be dimensionless\n * (the `(1 − ρ/ρ_crit)` bounce factor).\n * 5. **Symmetry agreement** — all participants carry the trivial\n * `'scalar'` marker.\n *\n * Errors carry the keywords `\"dimension\"` / `\"symmetry\"` (from the\n * field-equation-helpers) and `\"variant\"` (for discriminator /\n * classical-consistency violations).\n *\n * @public\n */\nexport function validateFriedmannEquation(\n node: FriedmannEquationNode,\n): FriedmannEquationValidationResult {\n // Predicate 1: variant discriminator membership.\n if (!KNOWN_VARIANTS.has(node.variant)) {\n throw new Error(\n `FriedmannEquationNode: unknown variant '${node.variant}' — ` +\n `must be one of 'classical' | 'lqc' | 'brane' | 'dgp' | 'massive'.`,\n );\n }\n\n // Predicate 2: classical/correction consistency.\n if (node.variant === 'classical' && node.correction !== null) {\n throw new Error(\n `FriedmannEquationNode: variant 'classical' must carry ` +\n `correction === null (the canonical FRW form has no ` +\n `variant-specific correction term).`,\n );\n }\n if (node.variant !== 'classical' && node.correction === null) {\n throw new Error(\n `FriedmannEquationNode: variant '${node.variant}' requires a ` +\n `non-null correction term (only the 'classical' variant accepts ` +\n `correction === null).`,\n );\n }\n\n // Predicate 3: free-index agreement (trivially: both rank-0).\n validateFreeIndexLabelMatch(\n 'FriedmannEquationNode',\n 'H²',\n [],\n '(8πG/3)·ρ·correction',\n [],\n );\n\n // Predicate 4a: hubble dim must be [T^-2] or [T^-1].\n if (!equals(node.hubble.dim, T_INV2) && !equals(node.hubble.dim, T_INV1)) {\n throw new Error(\n `FriedmannEquationNode: dimension mismatch — hubble.dim must be ` +\n `${JSON.stringify(T_INV2)} (H²) or ${JSON.stringify(T_INV1)} (H), ` +\n `got ${JSON.stringify(node.hubble.dim)}.`,\n );\n }\n\n // Predicate 4b: density dim must be [M·L^-3] (mass-density convention).\n validateComponentDimension(\n 'FriedmannEquationNode',\n 'density ρ.dim',\n node.density.dim,\n MASS_DENSITY,\n 'ρ is the cosmic mass-density; Friedmann uses [M·L^-3] (so (8πG/3)·ρ ~ [T^-2]).',\n );\n\n // Predicate 4c: LQC correction must be dimensionless.\n if (node.variant === 'lqc' && node.correction !== null) {\n validateComponentDimension(\n 'FriedmannEquationNode',\n \"lqc correction.dim\",\n node.correction.dim,\n DIMLESS,\n 'LQC bounce factor (1 − ρ/ρ_crit) is dimensionless.',\n );\n }\n\n // Predicate 5: symmetry agreement — all 'scalar'.\n validateTensorSymmetry(\n 'FriedmannEquationNode',\n 'hubble',\n node.hubble.symmetry,\n 'scalar',\n 'Friedmann is a cosmological scalar equation.',\n );\n validateTensorSymmetry(\n 'FriedmannEquationNode',\n 'density',\n node.density.symmetry,\n 'scalar',\n 'ρ is a cosmological scalar.',\n );\n if (node.correction !== null) {\n validateTensorSymmetry(\n 'FriedmannEquationNode',\n 'correction',\n node.correction.symmetry,\n 'scalar',\n 'Friedmann correction terms are encoded as scalar factors.',\n );\n }\n\n return {\n dim: T_INV2,\n freeIndices: new Map(),\n variant: node.variant,\n };\n}\n"]}
|
|
@@ -36,7 +36,6 @@
|
|
|
36
36
|
* pattern, Phase 1 of TensorEquationNode generalization).
|
|
37
37
|
*
|
|
38
38
|
* @see docs/architecture/archive/v0.7-be-x-reencoding-design-note.md §BE-50
|
|
39
|
-
* @see src/bridges/equations/be-50-wheeler-feynman.ts
|
|
40
39
|
* @module dimensional/gauge-field
|
|
41
40
|
*/
|
|
42
41
|
import type { Dimension } from './types.js';
|
|
@@ -101,8 +100,8 @@ export interface GaugeFieldNode {
|
|
|
101
100
|
*
|
|
102
101
|
* This is a PREDICATE node (like `EinsteinFieldEquationNode`) —
|
|
103
102
|
* not a value-producing expression. Numerical evaluation of the
|
|
104
|
-
* residual for specific field amplitudes is
|
|
105
|
-
*
|
|
103
|
+
* residual for specific field amplitudes is out of scope; the catalog
|
|
104
|
+
* relation be-50 that consumes this node has no numerical evaluator.
|
|
106
105
|
*
|
|
107
106
|
* @public
|
|
108
107
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gauge-field.d.ts","sourceRoot":"","sources":["../../src/dimensional/gauge-field.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"gauge-field.d.ts","sourceRoot":"","sources":["../../src/dimensional/gauge-field.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuCG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAO5C;;;;;;;;;;;GAWG;AACH,MAAM,MAAM,WAAW,GAAG,UAAU,GAAG,UAAU,GAAG,WAAW,CAAC;AAEhE;;;;;;;;;;;;;;;GAeG;AACH,MAAM,WAAW,cAAc;IAC7B,sCAAsC;IACtC,QAAQ,CAAC,IAAI,EAAE,aAAa,CAAC;IAC7B,wEAAwE;IACxE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB;;;;OAIG;IACH,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAC;IAClC;;;;OAIG;IACH,QAAQ,CAAC,GAAG,EAAE,SAAS,CAAC;CACzB;AAMD;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,WAAW,yBAAyB;IACxC,kDAAkD;IAClD,QAAQ,CAAC,IAAI,EAAE,yBAAyB,CAAC;IACzC;;;OAGG;IACH,QAAQ,CAAC,QAAQ,EAAE,cAAc,CAAC;IAClC;;;OAGG;IACH,QAAQ,CAAC,QAAQ,EAAE,cAAc,CAAC;IAClC;;;;;OAKG;IACH,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B;AAMD;;;;;;;;;;;;GAYG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,cAAc,GAAG,IAAI,CA0B7D;AAED;;;;GAIG;AACH,MAAM,WAAW,qCAAqC;IACpD;;;;OAIG;IACH,QAAQ,CAAC,QAAQ,EAAE,SAAS,CAAC;IAC7B,iDAAiD;IACjD,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,6BAA6B,CAC3C,IAAI,EAAE,yBAAyB,GAC9B,qCAAqC,CAkDvC"}
|
|
@@ -36,7 +36,6 @@
|
|
|
36
36
|
* pattern, Phase 1 of TensorEquationNode generalization).
|
|
37
37
|
*
|
|
38
38
|
* @see docs/architecture/archive/v0.7-be-x-reencoding-design-note.md §BE-50
|
|
39
|
-
* @see src/bridges/equations/be-50-wheeler-feynman.ts
|
|
40
39
|
* @module dimensional/gauge-field
|
|
41
40
|
*/
|
|
42
41
|
import { validateComponentDimension } from './field-equation-helpers.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gauge-field.js","sourceRoot":"","sources":["../../src/dimensional/gauge-field.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"gauge-field.js","sourceRoot":"","sources":["../../src/dimensional/gauge-field.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Gauge-field AST primitives for Wheeler-Feynman absorber-theory\n * time-symmetric electrodynamics.\n *\n * Wheeler-Feynman absorber theory (Wheeler & Feynman 1945\n * Rev. Mod. Phys. 17:157; Wheeler & Feynman 1949\n * Rev. Mod. Phys. 21:425) uses TIME-SYMMETRIC electrodynamics:\n * radiation reaction arises from the half-retarded +\n * half-advanced potential combination\n *\n * A_μ(x) = (1/2) [A_μ^ret(x) + A_μ^adv(x)].\n *\n * Under the absorber boundary condition (every emitted disturbance\n * is fully absorbed by future matter), this symmetric form is\n * physically equivalent to retarded-only Maxwell.\n *\n * Two primitives are provided:\n *\n * 1. `GaugeFieldNode` — tags an EM gauge field with its\n * \"arrow of time\": retarded (Liénard-Wiechert advanced\n * Green's function), advanced (retarded Green's function\n * — past-directed), or symmetric (half-half combination).\n * The consumer supplies the dimension (SI: V·s/m =\n * { L:1, M:1, T:-2, I:-1 }) or works with the ratio which\n * is dimensionless.\n *\n * 2. `TimeSymmetryPredicateNode` — asserts that the\n * dimensionless time-symmetry residual\n * |A_ret − A_adv| / |A_ret + A_adv| is bounded by ε.\n * Identically 0 under the absorber boundary condition.\n * This is a PREDICATE node (like `EinsteinFieldEquationNode`)\n * — not a value-producing expression.\n *\n * Phase 1 demonstrator pattern: follows\n * `src/dimensional/klein-gordon-equation.ts` (field-equation-helpers\n * pattern, Phase 1 of TensorEquationNode generalization).\n *\n * @see docs/architecture/archive/v0.7-be-x-reencoding-design-note.md §BE-50\n * @module dimensional/gauge-field\n */\n\nimport type { Dimension } from './types.js';\nimport { validateComponentDimension } from './field-equation-helpers.js';\n\n// ---------------------------------------------------------------------------\n// GaugeFieldNode\n// ---------------------------------------------------------------------------\n\n/**\n * Arrow-of-time tag for an electromagnetic gauge potential.\n *\n * - `'retarded'` — propagator uses the retarded Green's function\n * (∝ Liénard-Wiechert advanced solution); causal, future-directed.\n * - `'advanced'` — propagator uses the advanced Green's function\n * (∝ Liénard-Wiechert retarded solution); anti-causal, past-directed.\n * - `'symmetric'` — half-retarded + half-advanced combination\n * (Wheeler-Feynman's A_μ = (1/2)[A_μ^ret + A_μ^adv]).\n *\n * @public\n */\nexport type ArrowOfTime = 'retarded' | 'advanced' | 'symmetric';\n\n/**\n * AST node for an electromagnetic gauge potential A_μ with an explicit\n * arrow-of-time tag.\n *\n * The `dim` field carries the SI dimension of the gauge field. For the\n * Wheeler-Feynman time-symmetry ratio, the dimension of the numerator\n * and denominator cancel, yielding a dimensionless result — but the\n * `dim` field is required so the validator can confirm that both the\n * retarded and advanced fields in a `TimeSymmetryPredicateNode` share\n * the same dimension (the ratio is well-defined only if they do).\n *\n * Canonical SI dim of the magnetic vector potential A_μ:\n * [A] = V·s/m = kg·m/(A·s²) = { L: 1, M: 1, T: -2, I: -1 }\n *\n * @public\n */\nexport interface GaugeFieldNode {\n /** Discriminator: `'gauge-field'`. */\n readonly kind: 'gauge-field';\n /** Human-readable field name (e.g., `'A_ret'`, `'A_adv'`, `'A_mu'`). */\n readonly name: string;\n /**\n * Arrow-of-time tag. Documents whether this field was computed using\n * the retarded Green's function, the advanced Green's function, or\n * the symmetric half-half combination.\n */\n readonly arrowOfTime: ArrowOfTime;\n /**\n * SI dimension of the gauge field. Both retarded and advanced fields\n * must share the same dimension for the time-symmetry ratio to be\n * well-defined (dimensionless by cancellation).\n */\n readonly dim: Dimension;\n}\n\n// ---------------------------------------------------------------------------\n// TimeSymmetryPredicateNode\n// ---------------------------------------------------------------------------\n\n/**\n * AST predicate node for the Wheeler-Feynman time-symmetry condition.\n *\n * Asserts that the dimensionless time-symmetry residual\n *\n * |A_ret − A_adv| / |A_ret + A_adv| ≤ ε\n *\n * is bounded by `epsilon`. Under the absorber boundary condition\n * (Wheeler & Feynman 1945), this residual is identically 0 on\n * physical states. A non-zero `epsilon` documents the allowable\n * deviation (e.g., a Cramer 1986 experimental bound of 10⁻²).\n *\n * This is a PREDICATE node (like `EinsteinFieldEquationNode`) —\n * not a value-producing expression. Numerical evaluation of the\n * residual for specific field amplitudes is out of scope; the catalog\n * relation be-50 that consumes this node has no numerical evaluator.\n *\n * @public\n */\nexport interface TimeSymmetryPredicateNode {\n /** Discriminator: `'time-symmetry-predicate'`. */\n readonly kind: 'time-symmetry-predicate';\n /**\n * The retarded gauge potential A_μ^ret.\n * Must have `arrowOfTime: 'retarded'`.\n */\n readonly retarded: GaugeFieldNode;\n /**\n * The advanced gauge potential A_μ^adv.\n * Must have `arrowOfTime: 'advanced'`.\n */\n readonly advanced: GaugeFieldNode;\n /**\n * Bound on the time-symmetry residual: |A_ret − A_adv| / |A_ret + A_adv| ≤ epsilon.\n * Must be strictly positive and finite.\n * Set to a small value (e.g., 1e-3) to encode an experimental bound,\n * or to `Number.EPSILON` to assert near-exact absorber-theory symmetry.\n */\n readonly epsilon: number;\n}\n\n// ---------------------------------------------------------------------------\n// Validators\n// ---------------------------------------------------------------------------\n\n/**\n * Validate a `GaugeFieldNode`.\n *\n * Three predicates:\n * 1. `name` must be a non-empty string.\n * 2. `arrowOfTime` must be one of `'retarded'`, `'advanced'`, `'symmetric'`.\n * 3. `dim` must be a valid `Dimension` object (all 7 SI exponents present\n * as finite numbers).\n *\n * Throws `Error` with `'gauge-field'` in the message on any failure.\n *\n * @public\n */\nexport function validateGaugeField(node: GaugeFieldNode): void {\n if (typeof node.name !== 'string' || node.name.trim().length === 0) {\n throw new Error(\n `GaugeFieldNode: gauge-field name must be a non-empty string ` +\n `(got ${JSON.stringify(node.name)}).`,\n );\n }\n\n const validArrows: ReadonlyArray<ArrowOfTime> = ['retarded', 'advanced', 'symmetric'];\n if (!validArrows.includes(node.arrowOfTime)) {\n throw new Error(\n `GaugeFieldNode: gauge-field arrowOfTime must be 'retarded', 'advanced', ` +\n `or 'symmetric' (got ${JSON.stringify(node.arrowOfTime)}).`,\n );\n }\n\n const dim = node.dim;\n const axes: ReadonlyArray<keyof Dimension> = ['L', 'M', 'T', 'I', 'Theta', 'N', 'J'];\n for (const ax of axes) {\n if (typeof dim[ax] !== 'number' || !Number.isFinite(dim[ax])) {\n throw new Error(\n `GaugeFieldNode: gauge-field dim.${ax} must be a finite number ` +\n `(got ${JSON.stringify(dim[ax])} for field '${node.name}').`,\n );\n }\n }\n}\n\n/**\n * Result of validating a `TimeSymmetryPredicateNode`.\n *\n * @public\n */\nexport interface TimeSymmetryPredicateValidationResult {\n /**\n * The shared dimension of the retarded and advanced gauge fields.\n * The ratio |A_ret − A_adv| / |A_ret + A_adv| is dimensionless\n * because this dimension cancels.\n */\n readonly fieldDim: Dimension;\n /** The validated epsilon bound (> 0, finite). */\n readonly epsilon: number;\n}\n\n/**\n * Validate a `TimeSymmetryPredicateNode`.\n *\n * Four predicates (following the field-equation-helpers pattern):\n *\n * 1. **Arrow-of-time tags** — `retarded.arrowOfTime` must be\n * `'retarded'`; `advanced.arrowOfTime` must be `'advanced'`.\n * 2. **Per-field validity** — both `GaugeFieldNode`s pass\n * `validateGaugeField`.\n * 3. **Dimension equality** — `retarded.dim` and `advanced.dim`\n * must match (so the ratio is dimensionless by cancellation).\n * Uses `validateComponentDimension` from field-equation-helpers.\n * 4. **Epsilon bound** — `epsilon` must be strictly positive and\n * finite (`epsilon > 0` and `Number.isFinite(epsilon)`).\n *\n * Error messages contain `'symmetry'` for arrow-of-time mismatches\n * and `'dimension'` for dim-equality failures (error-keyword\n * discipline shared with EinsteinFieldEquationNode and\n * KleinGordonEquationNode).\n *\n * @public\n */\nexport function validateTimeSymmetryPredicate(\n node: TimeSymmetryPredicateNode,\n): TimeSymmetryPredicateValidationResult {\n // Predicate 1a: retarded field's arrow-of-time must be 'retarded'.\n if (node.retarded.arrowOfTime !== 'retarded') {\n throw new Error(\n `TimeSymmetryPredicateNode: symmetry mismatch — retarded field ` +\n `'${node.retarded.name}' must have arrowOfTime: 'retarded' ` +\n `(got '${node.retarded.arrowOfTime}'). The time-symmetry predicate ` +\n `requires A_ret to carry the retarded arrow-of-time tag.`,\n );\n }\n\n // Predicate 1b: advanced field's arrow-of-time must be 'advanced'.\n if (node.advanced.arrowOfTime !== 'advanced') {\n throw new Error(\n `TimeSymmetryPredicateNode: symmetry mismatch — advanced field ` +\n `'${node.advanced.name}' must have arrowOfTime: 'advanced' ` +\n `(got '${node.advanced.arrowOfTime}'). The time-symmetry predicate ` +\n `requires A_adv to carry the advanced arrow-of-time tag.`,\n );\n }\n\n // Predicate 2: both GaugeFieldNodes pass individual validation.\n validateGaugeField(node.retarded);\n validateGaugeField(node.advanced);\n\n // Predicate 3: retarded.dim and advanced.dim must match.\n // Uses validateComponentDimension from field-equation-helpers — same\n // helper used by KleinGordonEquationNode and EinsteinFieldEquationNode.\n validateComponentDimension(\n 'TimeSymmetryPredicateNode',\n `advanced field '${node.advanced.name}' dim`,\n node.advanced.dim,\n node.retarded.dim,\n `A_ret and A_adv must share the same dimension so that the ratio ` +\n `|A_ret − A_adv| / |A_ret + A_adv| is dimensionless by cancellation.`,\n );\n\n // Predicate 4: epsilon must be strictly positive and finite.\n if (!Number.isFinite(node.epsilon) || node.epsilon <= 0) {\n throw new Error(\n `TimeSymmetryPredicateNode: epsilon must be a strictly positive finite ` +\n `number (got ${node.epsilon}). epsilon bounds the time-symmetry residual ` +\n `|A_ret − A_adv| / |A_ret + A_adv| ≤ epsilon.`,\n );\n }\n\n return {\n fieldDim: node.retarded.dim,\n epsilon: node.epsilon,\n };\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hyphen-names.d.ts","sourceRoot":"","sources":["../../src/dimensional/hyphen-names.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;
|
|
1
|
+
{"version":3,"file":"hyphen-names.d.ts","sourceRoot":"","sources":["../../src/dimensional/hyphen-names.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAQH;;;GAGG;AACH,wBAAgB,qBAAqB,CACnC,IAAI,EAAE,MAAM,EACZ,YAAY,EAAE,WAAW,CAAC,MAAM,CAAC,GAAG,QAAQ,CAAC,MAAM,CAAC,GACnD,MAAM,CAkBR"}
|
|
@@ -5,6 +5,7 @@
|
|
|
5
5
|
*
|
|
6
6
|
* @module dimensional/hyphen-names
|
|
7
7
|
*/
|
|
8
|
+
import { constantRecord } from './symbolic-constants.js';
|
|
8
9
|
function escapeRegExp(s) {
|
|
9
10
|
return s.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
|
|
10
11
|
}
|
|
@@ -22,6 +23,13 @@ export function rewriteCatalogHyphens(text, catalogNames) {
|
|
|
22
23
|
const re = new RegExp(`(?<![A-Za-z0-9_])${escapeRegExp(name)}(?![A-Za-z0-9_])`, 'g');
|
|
23
24
|
out = out.replace(re, underscored);
|
|
24
25
|
}
|
|
26
|
+
// A hyphenated spelling of a registered constant (`speed-of-light`) is that constant, by its
|
|
27
|
+
// primary name (`c`), whether or not the caller declared it: the formula then reads the baked
|
|
28
|
+
// value, and the hyphens are not subtractions.
|
|
29
|
+
out = out.replace(/(?<![A-Za-z0-9_])[A-Za-z][A-Za-z0-9]*(?:-[A-Za-z0-9]+)+(?![A-Za-z0-9_])/g, (word) => {
|
|
30
|
+
const record = constantRecord(word);
|
|
31
|
+
return record === undefined ? word : record.name;
|
|
32
|
+
});
|
|
25
33
|
return out;
|
|
26
34
|
}
|
|
27
35
|
//# sourceMappingURL=hyphen-names.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hyphen-names.js","sourceRoot":"","sources":["../../src/dimensional/hyphen-names.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,SAAS,YAAY,CAAC,CAAS;IAC7B,OAAO,CAAC,CAAC,OAAO,CAAC,qBAAqB,EAAE,MAAM,CAAC,CAAC;AAClD,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,qBAAqB,CACnC,IAAY,EACZ,YAAoD;IAEpD,MAAM,KAAK,GAAG,CAAC,GAAG,YAAY,CAAC;SAC5B,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;SAC9B,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC;IAC7D,IAAI,GAAG,GAAG,IAAI,CAAC;IACf,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;QAC5C,MAAM,EAAE,GAAG,IAAI,MAAM,CAAC,oBAAoB,YAAY,CAAC,IAAI,CAAC,kBAAkB,EAAE,GAAG,CAAC,CAAC;QACrF,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,EAAE,EAAE,WAAW,CAAC,CAAC;IACrC,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC"}
|
|
1
|
+
{"version":3,"file":"hyphen-names.js","sourceRoot":"","sources":["../../src/dimensional/hyphen-names.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAEzD,SAAS,YAAY,CAAC,CAAS;IAC7B,OAAO,CAAC,CAAC,OAAO,CAAC,qBAAqB,EAAE,MAAM,CAAC,CAAC;AAClD,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,qBAAqB,CACnC,IAAY,EACZ,YAAoD;IAEpD,MAAM,KAAK,GAAG,CAAC,GAAG,YAAY,CAAC;SAC5B,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;SAC9B,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC;IAC7D,IAAI,GAAG,GAAG,IAAI,CAAC;IACf,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;QAC5C,MAAM,EAAE,GAAG,IAAI,MAAM,CAAC,oBAAoB,YAAY,CAAC,IAAI,CAAC,kBAAkB,EAAE,GAAG,CAAC,CAAC;QACrF,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,EAAE,EAAE,WAAW,CAAC,CAAC;IACrC,CAAC;IACD,6FAA6F;IAC7F,8FAA8F;IAC9F,+CAA+C;IAC/C,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,0EAA0E,EAAE,CAAC,IAAI,EAAE,EAAE;QACrG,MAAM,MAAM,GAAG,cAAc,CAAC,IAAI,CAAC,CAAC;QACpC,OAAO,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC;IACnD,CAAC,CAAC,CAAC;IACH,OAAO,GAAG,CAAC;AACb,CAAC","sourcesContent":["/**\n * Kebab catalog names are one token. A parser that treats `-` as subtraction\n * splits them. Longest match first, so a longer declared name wins over a\n * shorter one that is its suffix.\n *\n * @module dimensional/hyphen-names\n */\n\nimport { constantRecord } from './symbolic-constants.js';\n\nfunction escapeRegExp(s: string): string {\n return s.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&');\n}\n\n/**\n * Rewrite declared kebab-case names to underscores. Names without a hyphen\n * stay. A hyphen that is not a declared name stays subtraction.\n */\nexport function rewriteCatalogHyphens(\n text: string,\n catalogNames: ReadonlySet<string> | Iterable<string>,\n): string {\n const names = [...catalogNames]\n .filter((n) => n.includes('-'))\n .sort((a, b) => b.length - a.length || a.localeCompare(b));\n let out = text;\n for (const name of names) {\n const underscored = name.replace(/-/g, '_');\n const re = new RegExp(`(?<![A-Za-z0-9_])${escapeRegExp(name)}(?![A-Za-z0-9_])`, 'g');\n out = out.replace(re, underscored);\n }\n // A hyphenated spelling of a registered constant (`speed-of-light`) is that constant, by its\n // primary name (`c`), whether or not the caller declared it: the formula then reads the baked\n // value, and the hyphens are not subtractions.\n out = out.replace(/(?<![A-Za-z0-9_])[A-Za-z][A-Za-z0-9]*(?:-[A-Za-z0-9]+)+(?![A-Za-z0-9_])/g, (word) => {\n const record = constantRecord(word);\n return record === undefined ? word : record.name;\n });\n return out;\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"killing-validators.js","sourceRoot":"","sources":["../../src/dimensional/killing-validators.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AASH,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAqBxC;;;;;;;GAOG;AACH,MAAM,UAAU,qBAAqB,CACnC,IAAuB;IAEvB,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACrC,MAAM,IAAI,KAAK,CACb,uDAAuD,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE,CACpF,CAAC;IACJ,CAAC;IACD,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IACnC,IAAI,GAAG,CAAC,QAAQ,KAAK,OAAO,EAAE,CAAC;QAC7B,MAAM,IAAI,KAAK,CACb,oDAAoD,GAAG,CAAC,QAAQ,GAAG,CACpE,CAAC;IACJ,CAAC;IACD,MAAM,WAAW,GAAG,IAAI,GAAG,EAA4C,CAAC;IACxE,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;IACnD,OAAO,EAAE,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,WAAW,EAAE,CAAC;AAC/C,CAAC;AAwBD;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,uBAAuB,CACrC,IAAyB;IAEzB,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvC,MAAM,IAAI,KAAK,CACb,2DAA2D,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,EAAE,CAC1F,CAAC;IACJ,CAAC;IACD,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;IACrD,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;IAC9C,IAAI,OAAO,KAAK,MAAM,EAAE,CAAC;QACvB,MAAM,IAAI,KAAK,CACb,wDAAwD,OAAO,kBAAkB,MAAM,GAAG,CAC3F,CAAC;IACJ,CAAC;IACD,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,QAAQ,KAAK,OAAO,EAAE,CAAC;QAClD,MAAM,IAAI,KAAK,CACb,6FAA6F,CAC9F,CAAC;IACJ,CAAC;IACD,2BAA2B;IAC3B,MAAM,GAAG,GAAG,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;IACjE,uEAAuE;IACvE,OAAO,EAAE,GAAG,EAAE,WAAW,EAAE,IAAI,GAAG,EAAE,EAAE,CAAC;AACzC,CAAC"}
|
|
1
|
+
{"version":3,"file":"killing-validators.js","sourceRoot":"","sources":["../../src/dimensional/killing-validators.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AASH,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAqBxC;;;;;;;GAOG;AACH,MAAM,UAAU,qBAAqB,CACnC,IAAuB;IAEvB,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACrC,MAAM,IAAI,KAAK,CACb,uDAAuD,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE,CACpF,CAAC;IACJ,CAAC;IACD,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IACnC,IAAI,GAAG,CAAC,QAAQ,KAAK,OAAO,EAAE,CAAC;QAC7B,MAAM,IAAI,KAAK,CACb,oDAAoD,GAAG,CAAC,QAAQ,GAAG,CACpE,CAAC;IACJ,CAAC;IACD,MAAM,WAAW,GAAG,IAAI,GAAG,EAA4C,CAAC;IACxE,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;IACnD,OAAO,EAAE,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,WAAW,EAAE,CAAC;AAC/C,CAAC;AAwBD;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,uBAAuB,CACrC,IAAyB;IAEzB,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvC,MAAM,IAAI,KAAK,CACb,2DAA2D,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,EAAE,CAC1F,CAAC;IACJ,CAAC;IACD,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;IACrD,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;IAC9C,IAAI,OAAO,KAAK,MAAM,EAAE,CAAC;QACvB,MAAM,IAAI,KAAK,CACb,wDAAwD,OAAO,kBAAkB,MAAM,GAAG,CAC3F,CAAC;IACJ,CAAC;IACD,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,QAAQ,KAAK,OAAO,EAAE,CAAC;QAClD,MAAM,IAAI,KAAK,CACb,6FAA6F,CAC9F,CAAC;IACJ,CAAC;IACD,2BAA2B;IAC3B,MAAM,GAAG,GAAG,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;IACjE,uEAAuE;IACvE,OAAO,EAAE,GAAG,EAAE,WAAW,EAAE,IAAI,GAAG,EAAE,EAAE,CAAC;AACzC,CAAC","sourcesContent":["/**\n * Killing-vector machinery (v0.6.0 Phase 1, Tasks 1.1–1.2).\n *\n * A Killing vector ξ^μ generates an isometry of the metric. The defining\n * equation is the Killing equation\n *\n * ∇_μ ξ_ν + ∇_ν ξ_μ = 0\n *\n * (Carroll Eq. 3.174). Validation here is symbolic (rank + variance only);\n * the operator-valued check happens at lowering time in\n * `src/numerical/killing.ts::verifyKillingEquation`.\n *\n * @module dimensional/killing-validators\n */\n\nimport type { Dimension } from './types.js';\nimport type {\n TensorSymbolNode,\n MetricTensorNode,\n KillingVectorNode,\n ConservedChargeNode,\n} from './ast-types.js';\nimport { multiply } from './algebra.js';\n\n// Node types now live in the leaf `ast-types.ts`; re-exported for compat.\nexport type { KillingVectorNode, ConservedChargeNode } from './ast-types.js';\n\n/**\n * AST node for a Killing vector ξ^μ. Rank-1 upper-variance tensor with\n * an attached metric reference (the metric whose isometry ξ generates).\n *\n * Component-dim is free (typically `[L·T⁻¹]` for spatial Killing fields,\n * dimensionless for time-translation if c=1 normalization, or `[L]` for\n * dimensionally-pure spatial isometries).\n *\n * @public\n */\n// v0.6.1: dropped export — internal-only validation-result shape.\ninterface KillingVectorValidationResult {\n readonly dim: Dimension;\n readonly freeIndices: Map<string, { upper: number; lower: number }>;\n}\n\n/**\n * Validate a `killing-vector` node.\n *\n * Throws:\n * - Error if vector is not rank-1 (Killing fields are rank-1 by definition).\n * - Error if vector variance is not 'upper' (canonical Killing form is upper;\n * lower form is obtained by metric-lowering at lowering-time).\n */\nexport function validateKillingVector(\n node: KillingVectorNode,\n): KillingVectorValidationResult {\n if (node.vector.indices.length !== 1) {\n throw new Error(\n `KillingVectorNode: expected rank-1 vector, got rank-${node.vector.indices.length}`,\n );\n }\n const idx = node.vector.indices[0];\n if (idx.variance !== 'upper') {\n throw new Error(\n `KillingVectorNode: expected upper variance, got '${idx.variance}'`,\n );\n }\n const freeIndices = new Map<string, { upper: number; lower: number }>();\n freeIndices.set(idx.label, { upper: 1, lower: 0 });\n return { dim: node.vector.dim, freeIndices };\n}\n\n// ---------------------------------------------------------------------------\n// Task 1.2 — ConservedChargeNode\n// ---------------------------------------------------------------------------\n\n/**\n * AST node for the conserved charge Q = ξ^μ p_μ along a geodesic\n * (Carroll Eq. 3.175).\n *\n * **Sign convention**: the node encodes the raw contraction `ξ^μ p_μ`.\n * In (-,+,+,+) signature with the timelike Killing vector ξ^μ_t = (1,0,0,0),\n * `p_t < 0` for forward-time motion of massive particles, so the \"physical\n * energy\" of common usage is `E = -Q` (Carroll Eq. 8.30). The PC-1.5\n * diagnostic uses magnitude `|ΔQ / Q|` to be sign-agnostic.\n *\n * @public\n */\n// v0.6.1: dropped export — internal-only validation-result shape.\ninterface ConservedChargeValidationResult {\n readonly dim: Dimension;\n readonly freeIndices: Map<string, { upper: number; lower: number }>;\n}\n\n/**\n * Validate a `conserved-charge` node.\n *\n * Throws:\n * - Error if momentum is not rank-1.\n * - Error if the Killing-vector index label does not match the momentum\n * index label (they must contract on the same label).\n * - Error if momentum variance is not 'lower' (Q = ξ^μ p_μ requires the\n * upper Killing field to contract with the lower momentum).\n *\n * Returns a scalar result (empty freeIndices) with dimension\n * `dim(ξ) × dim(p)` via the `multiply` algebra helper.\n */\nexport function validateConservedCharge(\n node: ConservedChargeNode,\n): ConservedChargeValidationResult {\n if (node.momentum.indices.length !== 1) {\n throw new Error(\n `ConservedChargeNode: expected rank-1 momentum, got rank-${node.momentum.indices.length}`,\n );\n }\n const xiLabel = node.killing.vector.indices[0].label;\n const pLabel = node.momentum.indices[0].label;\n if (xiLabel !== pLabel) {\n throw new Error(\n `ConservedChargeNode: index label mismatch — Killing '${xiLabel}' vs momentum '${pLabel}'`,\n );\n }\n if (node.momentum.indices[0].variance !== 'lower') {\n throw new Error(\n `ConservedChargeNode: momentum must have lower variance to contract with upper Killing field`,\n );\n }\n // dim(Q) = dim(ξ) × dim(p)\n const dim = multiply(node.killing.vector.dim, node.momentum.dim);\n // Q = ξ^μ p_μ is a full contraction — no free indices remain (scalar).\n return { dim, freeIndices: new Map() };\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"klein-gordon-equation.js","sourceRoot":"","sources":["../../src/dimensional/klein-gordon-equation.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuCG;AAGH,OAAO,EACL,2BAA2B,EAC3B,0BAA0B,EAC1B,sBAAsB,GACvB,MAAM,6BAA6B,CAAC;AA0DrC,0DAA0D;AAC1D,MAAM,wBAAwB,GAAc;IAC1C,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;;GAEG;AACH,SAAS,sBAAsB,CAAC,QAAmB;IACjD,OAAO;QACL,CAAC,EAAE,QAAQ,CAAC,CAAC,GAAG,wBAAwB,CAAC,CAAC;QAC1C,CAAC,EAAE,QAAQ,CAAC,CAAC,GAAG,wBAAwB,CAAC,CAAC;QAC1C,CAAC,EAAE,QAAQ,CAAC,CAAC,GAAG,wBAAwB,CAAC,CAAC;QAC1C,CAAC,EAAE,QAAQ,CAAC,CAAC,GAAG,wBAAwB,CAAC,CAAC;QAC1C,KAAK,EAAE,QAAQ,CAAC,KAAK,GAAG,wBAAwB,CAAC,KAAK;QACtD,CAAC,EAAE,QAAQ,CAAC,CAAC,GAAG,wBAAwB,CAAC,CAAC;QAC1C,CAAC,EAAE,QAAQ,CAAC,CAAC,GAAG,wBAAwB,CAAC,CAAC;KAC3C,CAAC;AACJ,CAAC;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,UAAU,2BAA2B,CACzC,IAA6B;IAE7B,MAAM,WAAW,GAAG,sBAAsB,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAE3D,8DAA8D;IAC9D,2BAA2B,CACzB,yBAAyB,EACzB,SAAS,EACT,EAAE,EACF,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EACvB,EAAE,CACH,CAAC;IAEF,+DAA+D;IAC/D,wCAAwC;IACxC,0BAA0B,CACxB,yBAAyB,EACzB,kBAAkB,EAClB,IAAI,CAAC,IAAI,CAAC,GAAG,EACb,wBAAwB,EACxB,iGAAiG,CAClG,CAAC;IAEF,2DAA2D;IAC3D,+DAA+D;IAC/D,sBAAsB;IACtB,IAAI,IAAI,CAAC,MAAM,KAAK,IAAI,EAAE,CAAC;QACzB,0BAA0B,CACxB,yBAAyB,EACzB,cAAc,EACd,IAAI,CAAC,MAAM,CAAC,GAAG,EACf,WAAW,EACX,oEAAoE,CACrE,CAAC;IACJ,CAAC;IAED,kDAAkD;IAClD,sBAAsB,CACpB,yBAAyB,EACzB,SAAS,EACT,IAAI,CAAC,KAAK,CAAC,QAAQ,EACnB,QAAQ,EACR,0CAA0C,CAC3C,CAAC;IACF,sBAAsB,CACpB,yBAAyB,EACzB,SAAS,EACT,IAAI,CAAC,IAAI,CAAC,QAAQ,EAClB,QAAQ,EACR,2BAA2B,CAC5B,CAAC;IACF,IAAI,IAAI,CAAC,MAAM,KAAK,IAAI,EAAE,CAAC;QACzB,sBAAsB,CACpB,yBAAyB,EACzB,UAAU,EACV,IAAI,CAAC,MAAM,CAAC,QAAQ,EACpB,QAAQ,EACR,oCAAoC,CACrC,CAAC;IACJ,CAAC;IAED,OAAO;QACL,GAAG,EAAE,WAAW;QAChB,WAAW,EAAE,IAAI,GAAG,EAAE;KACvB,CAAC;AACJ,CAAC"}
|
|
1
|
+
{"version":3,"file":"klein-gordon-equation.js","sourceRoot":"","sources":["../../src/dimensional/klein-gordon-equation.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuCG;AAGH,OAAO,EACL,2BAA2B,EAC3B,0BAA0B,EAC1B,sBAAsB,GACvB,MAAM,6BAA6B,CAAC;AA0DrC,0DAA0D;AAC1D,MAAM,wBAAwB,GAAc;IAC1C,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;;GAEG;AACH,SAAS,sBAAsB,CAAC,QAAmB;IACjD,OAAO;QACL,CAAC,EAAE,QAAQ,CAAC,CAAC,GAAG,wBAAwB,CAAC,CAAC;QAC1C,CAAC,EAAE,QAAQ,CAAC,CAAC,GAAG,wBAAwB,CAAC,CAAC;QAC1C,CAAC,EAAE,QAAQ,CAAC,CAAC,GAAG,wBAAwB,CAAC,CAAC;QAC1C,CAAC,EAAE,QAAQ,CAAC,CAAC,GAAG,wBAAwB,CAAC,CAAC;QAC1C,KAAK,EAAE,QAAQ,CAAC,KAAK,GAAG,wBAAwB,CAAC,KAAK;QACtD,CAAC,EAAE,QAAQ,CAAC,CAAC,GAAG,wBAAwB,CAAC,CAAC;QAC1C,CAAC,EAAE,QAAQ,CAAC,CAAC,GAAG,wBAAwB,CAAC,CAAC;KAC3C,CAAC;AACJ,CAAC;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,UAAU,2BAA2B,CACzC,IAA6B;IAE7B,MAAM,WAAW,GAAG,sBAAsB,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAE3D,8DAA8D;IAC9D,2BAA2B,CACzB,yBAAyB,EACzB,SAAS,EACT,EAAE,EACF,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EACvB,EAAE,CACH,CAAC;IAEF,+DAA+D;IAC/D,wCAAwC;IACxC,0BAA0B,CACxB,yBAAyB,EACzB,kBAAkB,EAClB,IAAI,CAAC,IAAI,CAAC,GAAG,EACb,wBAAwB,EACxB,iGAAiG,CAClG,CAAC;IAEF,2DAA2D;IAC3D,+DAA+D;IAC/D,sBAAsB;IACtB,IAAI,IAAI,CAAC,MAAM,KAAK,IAAI,EAAE,CAAC;QACzB,0BAA0B,CACxB,yBAAyB,EACzB,cAAc,EACd,IAAI,CAAC,MAAM,CAAC,GAAG,EACf,WAAW,EACX,oEAAoE,CACrE,CAAC;IACJ,CAAC;IAED,kDAAkD;IAClD,sBAAsB,CACpB,yBAAyB,EACzB,SAAS,EACT,IAAI,CAAC,KAAK,CAAC,QAAQ,EACnB,QAAQ,EACR,0CAA0C,CAC3C,CAAC;IACF,sBAAsB,CACpB,yBAAyB,EACzB,SAAS,EACT,IAAI,CAAC,IAAI,CAAC,QAAQ,EAClB,QAAQ,EACR,2BAA2B,CAC5B,CAAC;IACF,IAAI,IAAI,CAAC,MAAM,KAAK,IAAI,EAAE,CAAC;QACzB,sBAAsB,CACpB,yBAAyB,EACzB,UAAU,EACV,IAAI,CAAC,MAAM,CAAC,QAAQ,EACpB,QAAQ,EACR,oCAAoC,CACrC,CAAC;IACJ,CAAC;IAED,OAAO;QACL,GAAG,EAAE,WAAW;QAChB,WAAW,EAAE,IAAI,GAAG,EAAE;KACvB,CAAC;AACJ,CAAC","sourcesContent":["/**\n * Klein-Gordon scalar field equation AST node.\n *\n * Phase 1 of the TensorEquationNode<LHS, RHS> generalization\n * (`docs/architecture/archive/v0.7-tensor-equation-node-design-note.md`).\n * First new field-equation node to use the Phase 0 field-equation\n * helpers shipped in commit `5cd860a`.\n *\n * Represents the predicate\n *\n * (□ + m²) φ = J\n *\n * where `□ = g^μν ∇_μ ∇_ν` is the d'Alembertian (wave operator),\n * `m` is the field's mass, and `J` is an optional rank-0 source\n * (set to `null` for the homogeneous form `(□ + m²) φ = 0`).\n *\n * The node validates three structural requirements (mirroring\n * `EinsteinFieldEquationNode`'s pattern):\n *\n * 1. **Free-index agreement** — LHS and RHS are both rank-0\n * (scalar). Trivial case of the rank-N invariant.\n * 2. **Per-component dim equality** — LHS and RHS must have the\n * same `Dimension`. The wave-operator's component dim equals\n * the field's `[fieldDim] · [L^-2]`; m² has dim `[L^-2]`; so\n * the LHS bracket combines to `[fieldDim · L^-2]`. The source\n * J must match that.\n * 3. **Symmetry agreement** — scalar fields have no symmetry\n * structure; both sides carry the trivial `'scalar'` marker.\n *\n * Note: this is a PREDICATE node like EinsteinFieldEquationNode —\n * not a value-producing expression. Numerical content for the free-\n * field plane-wave sector lives in `src/numerical/klein-gordon.ts`\n * (`evaluateKGDispersionResidual`, `verifyKleinGordonPlaneWave` —\n * the SI dispersion relation ω² = c²k² + (mc²/ℏ)²). A full FD\n * wave-operator evaluator `□φ` on coordinate grids (a separate\n * `lowerKleinGordon` step like the curvature pipeline) remains\n * out of scope / future work.\n *\n * @module dimensional/klein-gordon-equation\n */\n\nimport type { Dimension } from './types.js';\nimport {\n validateFreeIndexLabelMatch,\n validateComponentDimension,\n validateTensorSymmetry,\n} from './field-equation-helpers.js';\n\n/**\n * Scalar field node — a typed wrapper around a rank-0 (scalar) AST\n * value with explicit dimension + symmetry markers. Minimal so the\n * Klein-Gordon predicate validator can check shape without\n * recursing into the field's internal AST.\n *\n * @public\n */\nexport interface ScalarFieldNode {\n /** Discriminator: 'scalar-field'. */\n readonly kind: 'scalar-field';\n /** Human-readable field name (e.g., 'phi', 'sigma'). */\n readonly name: string;\n /** SI dimension of the scalar field value. */\n readonly dim: Dimension;\n /** Symmetry tag — 'scalar' for un-indexed scalar fields. */\n readonly symmetry: 'scalar';\n}\n\n/**\n * AST node for `(□ + m²) φ = J`.\n *\n * Fields:\n * - `field` — φ (ScalarFieldNode). The free field whose\n * dynamics this equation pins.\n * - `mass` — m² (scalar with dim [L^-2]). Required.\n * - `source` — J (ScalarFieldNode | null). Null for the\n * homogeneous Klein-Gordon (free-field) form.\n * - `coupling` — tag 'klein-gordon' (no inline numeric).\n *\n * Per-component dim of every term: `[field.dim · L^-2]` (the wave\n * operator + mass term + source all share this composite dimension).\n *\n * @public\n */\nexport interface KleinGordonEquationNode {\n readonly kind: 'klein-gordon-equation';\n readonly field: ScalarFieldNode;\n readonly mass: ScalarFieldNode; // m² with dim [L^-2]\n readonly source: ScalarFieldNode | null;\n readonly coupling: 'klein-gordon';\n}\n\n/**\n * Result of validating a `KleinGordonEquationNode`. Mirrors\n * `EinsteinFieldEquationValidationResult` shape.\n *\n * @public\n */\nexport interface KleinGordonEquationValidationResult {\n /** Composite per-component dim: `[field.dim · L^-2]`. */\n readonly dim: Dimension;\n /** Empty free-indices map (rank-0 equation). */\n readonly freeIndices: Map<string, { upper: number; lower: number }>;\n}\n\n/** The dimensional contribution of `□ + m²`: `[L^-2]`. */\nconst WAVE_OPERATOR_DIM_FACTOR: Dimension = {\n L: -2, M: 0, T: 0, I: 0, Theta: 0, N: 0, J: 0,\n};\n\n/**\n * Compose `[field.dim] × [L^-2]` (component-wise sum of exponents).\n */\nfunction composeWaveOperatorDim(fieldDim: Dimension): Dimension {\n return {\n L: fieldDim.L + WAVE_OPERATOR_DIM_FACTOR.L,\n M: fieldDim.M + WAVE_OPERATOR_DIM_FACTOR.M,\n T: fieldDim.T + WAVE_OPERATOR_DIM_FACTOR.T,\n I: fieldDim.I + WAVE_OPERATOR_DIM_FACTOR.I,\n Theta: fieldDim.Theta + WAVE_OPERATOR_DIM_FACTOR.Theta,\n N: fieldDim.N + WAVE_OPERATOR_DIM_FACTOR.N,\n J: fieldDim.J + WAVE_OPERATOR_DIM_FACTOR.J,\n };\n}\n\n/**\n * Validate a `klein-gordon-equation` node.\n *\n * Three predicates (mirroring the field-equation-helpers pattern):\n *\n * 1. **Free-index agreement** — trivially passes (both sides are\n * rank-0; `validateFreeIndexLabelMatch` with empty arrays).\n * 2. **Per-component dim equality** — m² and source J must\n * match the wave-operator's contribution.\n * 3. **Symmetry agreement** — all participants are 'scalar'.\n *\n * Errors carry the keywords 'index label', 'dimension', 'symmetry'\n * (consumers pattern-matching on the EFE error vocabulary stay\n * green).\n *\n * @public\n */\nexport function validateKleinGordonEquation(\n node: KleinGordonEquationNode,\n): KleinGordonEquationValidationResult {\n const composedDim = composeWaveOperatorDim(node.field.dim);\n\n // Predicate 1: free-index agreement (trivially: both rank-0).\n validateFreeIndexLabelMatch(\n 'KleinGordonEquationNode',\n '(□+m²)φ',\n [],\n node.source ? 'J' : '0',\n [],\n );\n\n // Predicate 2a: m² dimension must be [L^-2] (mass-squared as a\n // wave-operator term contributes this).\n validateComponentDimension(\n 'KleinGordonEquationNode',\n 'mass term m².dim',\n node.mass.dim,\n WAVE_OPERATOR_DIM_FACTOR,\n 'm² is the mass-squared term in (□+m²)φ; must have dim [L^-2] to combine with the wave operator.',\n );\n\n // Predicate 2b: source J dimension must equal the composed\n // wave-operator-acting-on-field dim. Skipped if source is null\n // (homogeneous form).\n if (node.source !== null) {\n validateComponentDimension(\n 'KleinGordonEquationNode',\n 'source J.dim',\n node.source.dim,\n composedDim,\n 'J must match (□+m²)φ on the LHS, which has dim [field.dim · L^-2].',\n );\n }\n\n // Predicate 3: symmetry agreement — all 'scalar'.\n validateTensorSymmetry(\n 'KleinGordonEquationNode',\n 'field φ',\n node.field.symmetry,\n 'scalar',\n 'Klein-Gordon is a scalar field equation.',\n );\n validateTensorSymmetry(\n 'KleinGordonEquationNode',\n 'mass m²',\n node.mass.symmetry,\n 'scalar',\n 'm² is a scalar parameter.',\n );\n if (node.source !== null) {\n validateTensorSymmetry(\n 'KleinGordonEquationNode',\n 'source J',\n node.source.symmetry,\n 'scalar',\n 'Klein-Gordon source J is a scalar.',\n );\n }\n\n return {\n dim: composedDim,\n freeIndices: new Map(),\n };\n}\n"]}
|
|
@@ -10,6 +10,7 @@
|
|
|
10
10
|
* @module dimensional/metric-validators
|
|
11
11
|
*/
|
|
12
12
|
import type { Dimension } from './types.js';
|
|
13
|
+
import type { ExprNode } from './ast-types.js';
|
|
13
14
|
import type { Role, MetricTensorNode, KroneckerDeltaNode, TensorPartialDerivativeNode } from './ast-types.js';
|
|
14
15
|
export type { MetricTensorNode, KroneckerDeltaNode, CovariantIndex, TensorPartialDerivativeNode, } from './ast-types.js';
|
|
15
16
|
/**
|
|
@@ -98,5 +99,5 @@ export interface PartialDerivativeChildResult {
|
|
|
98
99
|
* - PartialDerivativeIndexVarianceError if wrtIndex.variance !== 'lower'
|
|
99
100
|
* - IndexLabelCollisionError if wrtIndex.label collides with `of`'s free indices
|
|
100
101
|
*/
|
|
101
|
-
export declare function validatePartialDerivative(node: TensorPartialDerivativeNode, validateChild: (child:
|
|
102
|
+
export declare function validatePartialDerivative(node: TensorPartialDerivativeNode, validateChild: (child: ExprNode) => PartialDerivativeChildResult): PartialDerivativeValidationResult;
|
|
102
103
|
//# sourceMappingURL=metric-validators.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"metric-validators.d.ts","sourceRoot":"","sources":["../../src/dimensional/metric-validators.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAC5C,OAAO,KAAK,EAEV,IAAI,EAEJ,gBAAgB,EAChB,kBAAkB,EAElB,2BAA2B,EAC5B,MAAM,gBAAgB,CAAC;AAKxB,YAAY,EACV,gBAAgB,EAChB,kBAAkB,EAClB,cAAc,EACd,2BAA2B,GAC5B,MAAM,gBAAgB,CAAC;AAUxB;;;GAGG;AACH,UAAU,4BAA4B;IACpC,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;AASD;;;;;;GAMG;AACH,wBAAgB,2BAA2B,CACzC,MAAM,EAAE,gBAAgB,EACxB,MAAM,EAAE,gBAAgB,GACvB,MAAM,GAAG,IAAI,CAQf;AAED;;;;;;;;GAQG;AACH,wBAAgB,oBAAoB,CAClC,IAAI,EAAE,gBAAgB,GACrB,4BAA4B,CAgC9B;AAED;;;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;;;;;;;GAOG;AACH,wBAAgB,sBAAsB,CACpC,IAAI,EAAE,kBAAkB,GACvB,8BAA8B,CAuBhC;AAED;;;GAGG;AACH,UAAU,iCAAiC;IACzC,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;;;;GAIG;AACH,MAAM,WAAW,4BAA4B;IAC3C,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;;;;;;;;;;;GAWG;AACH,wBAAgB,yBAAyB,CACvC,IAAI,EAAE,2BAA2B,EACjC,aAAa,EAAE,CAAC,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"metric-validators.d.ts","sourceRoot":"","sources":["../../src/dimensional/metric-validators.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAC5C,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,KAAK,EAEV,IAAI,EAEJ,gBAAgB,EAChB,kBAAkB,EAElB,2BAA2B,EAC5B,MAAM,gBAAgB,CAAC;AAKxB,YAAY,EACV,gBAAgB,EAChB,kBAAkB,EAClB,cAAc,EACd,2BAA2B,GAC5B,MAAM,gBAAgB,CAAC;AAUxB;;;GAGG;AACH,UAAU,4BAA4B;IACpC,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;AASD;;;;;;GAMG;AACH,wBAAgB,2BAA2B,CACzC,MAAM,EAAE,gBAAgB,EACxB,MAAM,EAAE,gBAAgB,GACvB,MAAM,GAAG,IAAI,CAQf;AAED;;;;;;;;GAQG;AACH,wBAAgB,oBAAoB,CAClC,IAAI,EAAE,gBAAgB,GACrB,4BAA4B,CAgC9B;AAED;;;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;;;;;;;GAOG;AACH,wBAAgB,sBAAsB,CACpC,IAAI,EAAE,kBAAkB,GACvB,8BAA8B,CAuBhC;AAED;;;GAGG;AACH,UAAU,iCAAiC;IACzC,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;;;;GAIG;AACH,MAAM,WAAW,4BAA4B;IAC3C,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;;;;;;;;;;;GAWG;AACH,wBAAgB,yBAAyB,CACvC,IAAI,EAAE,2BAA2B,EACjC,aAAa,EAAE,CAAC,KAAK,EAAE,QAAQ,KAAK,4BAA4B,GAC/D,iCAAiC,CA+BnC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"metric-validators.js","sourceRoot":"","sources":["../../src/dimensional/metric-validators.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"metric-validators.js","sourceRoot":"","sources":["../../src/dimensional/metric-validators.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAaH,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAUtC,OAAO,EACL,sBAAsB,EACtB,oBAAoB,EACpB,yBAAyB,EACzB,sBAAsB,EACtB,mCAAmC,EACnC,wBAAwB,GACzB,MAAM,aAAa,CAAC;AAWrB,4EAA4E;AAC5E,SAAS,gBAAgB,CAAC,SAAiB;IACzC,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IACzC,MAAM,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACnC,OAAO,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC;AACpD,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,2BAA2B,CACzC,MAAwB,EACxB,MAAwB;IAExB,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC;IACpE,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC;IACpE,IAAI,CAAC,OAAO,IAAI,CAAC,OAAO,EAAE,CAAC;QACzB,OAAO,uCAAuC,MAAM,CAAC,IAAI,QAAQ,MAAM,CAAC,IAAI,IAAI;cAC5E,wCAAwC,CAAC;IAC/C,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,oBAAoB,CAClC,IAAsB;IAEtB,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC9B,MAAM,IAAI,sBAAsB,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IACnE,CAAC;IACD,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC;IAC5B,IAAI,CAAC,CAAC,QAAQ,KAAK,CAAC,CAAC,QAAQ,EAAE,CAAC;QAC9B,MAAM,IAAI,oBAAoB,CAC5B,IAAI,CAAC,IAAI,EACT,4BAA4B,CAAC,CAAC,QAAQ,SAAS,CAAC,CAAC,QAAQ,sBAAsB;YAC7E,kFAAkF,CACrF,CAAC;IACJ,CAAC;IACD,IAAI,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,KAAK,EAAE,CAAC;QACxB,MAAM,IAAI,oBAAoB,CAC5B,IAAI,CAAC,IAAI,EACT,0BAA0B,CAAC,CAAC,KAAK,qDAAqD,CACvF,CAAC;IACJ,CAAC;IACD,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC;QACtC,MAAM,IAAI,oBAAoB,CAC5B,IAAI,CAAC,IAAI,EACT,cAAc,IAAI,CAAC,SAAS,sDAAsD,CACnF,CAAC;IACJ,CAAC;IACD,MAAM,WAAW,GAAG,IAAI,GAAG,EAA4C,CAAC;IACxE,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;QAC/B,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,EAAE;YACzB,KAAK,EAAE,GAAG,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACvC,KAAK,EAAE,GAAG,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;SACxC,CAAC,CAAC;IACL,CAAC;IACD,OAAO,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,WAAW,EAAE,CAAC;AACxC,CAAC;AAWD;;;;;;;GAOG;AACH,MAAM,UAAU,sBAAsB,CACpC,IAAwB;IAExB,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC9B,MAAM,IAAI,yBAAyB,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IAC3D,CAAC;IACD,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC;IAC5B,IAAI,CAAC,CAAC,QAAQ,KAAK,CAAC,CAAC,QAAQ,EAAE,CAAC;QAC9B,MAAM,IAAI,sBAAsB,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;IAC/C,CAAC;IACD,IAAI,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,KAAK,EAAE,CAAC;QACxB,wEAAwE;QACxE,0EAA0E;QAC1E,kEAAkE;QAClE,4CAA4C;QAC5C,MAAM,IAAI,wBAAwB,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,uBAAuB,CAAC,CAAC,CAAC;IAC5E,CAAC;IACD,MAAM,WAAW,GAAG,IAAI,GAAG,EAA4C,CAAC;IACxE,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;QAC/B,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,EAAE;YACzB,KAAK,EAAE,GAAG,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACvC,KAAK,EAAE,GAAG,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;SACxC,CAAC,CAAC;IACL,CAAC;IACD,OAAO,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,WAAW,EAAE,CAAC;AACxC,CAAC;AAuBD;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,yBAAyB,CACvC,IAAiC,EACjC,aAAgE;IAEhE,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,KAAK,OAAO,EAAE,CAAC;QACvC,MAAM,IAAI,mCAAmC,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IACrE,CAAC;IACD,MAAM,QAAQ,GAAG,aAAa,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACxC,MAAM,SAAS,GAAG,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAE1C,uEAAuE;IACvE,oCAAoC;IACpC,IAAI,QAAQ,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;QAClD,MAAM,IAAI,wBAAwB,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC,EAAE;YACzD,oCAAoC;YACpC,gBAAgB;SACjB,CAAC,CAAC;IACL,CAAC;IAED,iEAAiE;IACjE,MAAM,WAAW,GAAG,IAAI,GAAG,EAA4C,CAAC;IACxE,KAAK,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,IAAI,QAAQ,CAAC,WAAW,EAAE,CAAC;QACnD,WAAW,CAAC,GAAG,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IACjC,CAAC;IACD,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;IAE7D,wCAAwC;IACxC,MAAM,GAAG,GAAG,MAAM,CAAC,QAAQ,CAAC,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,CAAC;IAEhD,sEAAsE;IACtE,mCAAmC;IACnC,MAAM,IAAI,GAAS,QAAQ,CAAC,IAAI,IAAI,OAAO,CAAC;IAE5C,OAAO,EAAE,GAAG,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC;AACpC,CAAC","sourcesContent":["/**\n * Per-kind validation for v0.3.0 metric-layer AST nodes.\n *\n * Mirrors the pattern of `validateTensorSymbol` in tensor.ts: each\n * validator is a pure function returning a local `{dim, freeIndices}`\n * carrier that validator.ts merges into its InferContext accumulator.\n *\n * Per docs/specification/Part-VIII-Metric-Layer.md §VIII.2-§VIII.4.\n *\n * @module dimensional/metric-validators\n */\n\nimport type { Dimension } from './types.js';\nimport type { ExprNode } from './ast-types.js';\nimport type {\n Variance,\n Role,\n TensorIndex,\n MetricTensorNode,\n KroneckerDeltaNode,\n CovariantIndex,\n TensorPartialDerivativeNode,\n} from './ast-types.js';\nimport { divide } from './algebra.js';\n\n// The node/index types now live in the leaf `ast-types.ts`; re-exported so\n// existing importers of `… from './metric-validators.js'` are unchanged.\nexport type {\n MetricTensorNode,\n KroneckerDeltaNode,\n CovariantIndex,\n TensorPartialDerivativeNode,\n} from './ast-types.js';\nimport {\n InvalidMetricRankError,\n MetricSignatureError,\n InvalidKroneckerRankError,\n KroneckerVarianceError,\n PartialDerivativeIndexVarianceError,\n IndexLabelCollisionError,\n} from './errors.js';\n\n/**\n * Result carrier for validateMetricTensor.\n * @public — exported for downstream consumers who type their own validators.\n */\ninterface MetricTensorValidationResult {\n readonly dim: Dimension;\n readonly freeIndices: Map<string, { upper: number; lower: number }>;\n}\n\n/** Parse / validate a metric signature string like '+,-,-,-' or '+,+,+'. */\nfunction isValidSignature(signature: string): boolean {\n if (signature.length === 0) return false;\n const parts = signature.split(',');\n return parts.every((p) => p === '+' || p === '-');\n}\n\n/**\n * Symbolic structural check for InverseMetricInconsistencyWarning: a\n * both-lower metric and a both-upper metric should have all-lower and\n * all-upper index variance respectively. Returns a warning note when the\n * structure is wrong, else null. The numerical residual check lives in\n * src/numerical/metric-inverse.ts.\n */\nexport function checkInverseMetricStructure(\n gLower: MetricTensorNode,\n gUpper: MetricTensorNode,\n): string | null {\n const lowerOk = gLower.indices.every((i) => i.variance === 'lower');\n const upperOk = gUpper.indices.every((i) => i.variance === 'upper');\n if (!lowerOk || !upperOk) {\n return `InverseMetricInconsistencyWarning: \"${gLower.name}\" / \"${gUpper.name}\" `\n + `do not form a lower/upper inverse pair`;\n }\n return null;\n}\n\n/**\n * Validate a metric-tensor node. Rejects:\n * - rank ≠ 2 → InvalidMetricRankError\n * - mixed-variance indices → MetricSignatureError\n * - duplicate index labels (e.g., g_μμ) → MetricSignatureError\n * - malformed/empty signature string → MetricSignatureError\n *\n * Per Part-VIII §VIII.2.\n */\nexport function validateMetricTensor(\n node: MetricTensorNode,\n): MetricTensorValidationResult {\n if (node.indices.length !== 2) {\n throw new InvalidMetricRankError(node.name, node.indices.length);\n }\n const [a, b] = node.indices;\n if (a.variance !== b.variance) {\n throw new MetricSignatureError(\n node.name,\n `mixed-variance indices ('${a.variance}' vs '${b.variance}') are not allowed; ` +\n `use raise() / lower() helpers to traverse variance, or kronecker-delta for δ^μ_ν`,\n );\n }\n if (a.label === b.label) {\n throw new MetricSignatureError(\n node.name,\n `duplicate index label '${a.label}'; a metric's two indices must have distinct labels`,\n );\n }\n if (!isValidSignature(node.signature)) {\n throw new MetricSignatureError(\n node.name,\n `signature '${node.signature}' is malformed; expected '+,-,-,-' or '+,+,+' format`,\n );\n }\n const freeIndices = new Map<string, { upper: number; lower: number }>();\n for (const idx of node.indices) {\n freeIndices.set(idx.label, {\n upper: idx.variance === 'upper' ? 1 : 0,\n lower: idx.variance === 'lower' ? 1 : 0,\n });\n }\n return { dim: node.dim, freeIndices };\n}\n\n/**\n * Result carrier for validateKroneckerDelta.\n * @public — exported for downstream consumers who type their own validators.\n */\ninterface KroneckerDeltaValidationResult {\n readonly dim: Dimension;\n readonly freeIndices: Map<string, { upper: number; lower: number }>;\n}\n\n/**\n * Validate a kronecker-delta node. Rejects:\n * - rank ≠ 2 → InvalidKroneckerRankError\n * - same-variance indices (both upper or both lower) → KroneckerVarianceError\n * - duplicate index labels (e.g., δ^μ_μ, a trace) → IndexLabelCollisionError\n *\n * Per Part-VIII §VIII.3.\n */\nexport function validateKroneckerDelta(\n node: KroneckerDeltaNode,\n): KroneckerDeltaValidationResult {\n if (node.indices.length !== 2) {\n throw new InvalidKroneckerRankError(node.indices.length);\n }\n const [a, b] = node.indices;\n if (a.variance === b.variance) {\n throw new KroneckerVarianceError(a.variance);\n }\n if (a.label === b.label) {\n // δ^μ_μ is a trace (a contraction), not a free-index expression. v0.3.0\n // doesn't yet auto-evaluate kronecker traces; reject as a label collision\n // to surface the ambiguity to the caller (same semantic as v0.2.0\n // tensor-symbol duplicate-label rejection).\n throw new IndexLabelCollisionError(a.label, 2, ['kronecker-delta-trace']);\n }\n const freeIndices = new Map<string, { upper: number; lower: number }>();\n for (const idx of node.indices) {\n freeIndices.set(idx.label, {\n upper: idx.variance === 'upper' ? 1 : 0,\n lower: idx.variance === 'lower' ? 1 : 0,\n });\n }\n return { dim: node.dim, freeIndices };\n}\n\n/**\n * Result carrier for validatePartialDerivative.\n * @public — exported for downstream consumers who type their own validators.\n */\ninterface PartialDerivativeValidationResult {\n readonly dim: Dimension;\n readonly freeIndices: Map<string, { upper: number; lower: number }>;\n readonly role?: Role;\n}\n\n/**\n * Per-child validation result the caller supplies via the recursion\n * callback. Mirrors `ChildValidationResult` in tensor.ts — same shape,\n * different home so this module stays decoupled from tensor.ts.\n */\nexport interface PartialDerivativeChildResult {\n readonly dim: Dimension;\n readonly freeIndices: Map<string, { upper: number; lower: number }>;\n readonly role?: Role;\n}\n\n/**\n * Validate a tensor-partial-derivative node.\n *\n * Pure-function module-cycle-free pattern (matches `computeContraction`):\n * recursion is injected via the `validateChild` callback. The caller\n * (validator.ts's `infer()` dispatch) supplies a resolver that returns\n * `{dim, freeIndices, role?}` for each child (the `of` and `wrt` operands).\n *\n * Per Part-VIII §VIII.4. Throws:\n * - PartialDerivativeIndexVarianceError if wrtIndex.variance !== 'lower'\n * - IndexLabelCollisionError if wrtIndex.label collides with `of`'s free indices\n */\nexport function validatePartialDerivative(\n node: TensorPartialDerivativeNode,\n validateChild: (child: ExprNode) => PartialDerivativeChildResult,\n): PartialDerivativeValidationResult {\n if (node.wrtIndex.variance !== 'lower') {\n throw new PartialDerivativeIndexVarianceError(node.wrtIndex.label);\n }\n const ofResult = validateChild(node.of);\n const wrtResult = validateChild(node.wrt);\n\n // Per §VIII.4: discard wrt's own free indices (the operator's index is\n // wrtIndex, not wrt's own indices).\n if (ofResult.freeIndices.has(node.wrtIndex.label)) {\n throw new IndexLabelCollisionError(node.wrtIndex.label, 2, [\n 'tensor-partial-derivative.wrtIndex',\n 'of.freeIndices',\n ]);\n }\n\n // Output freeIndices = of.freeIndices ∪ {wrtIndex.label: lower}.\n const freeIndices = new Map<string, { upper: number; lower: number }>();\n for (const [label, counts] of ofResult.freeIndices) {\n freeIndices.set(label, counts);\n }\n freeIndices.set(node.wrtIndex.label, { upper: 0, lower: 1 });\n\n // Output dim = divide(of.dim, wrt.dim).\n const dim = divide(ofResult.dim, wrtResult.dim);\n\n // Role: pass through of.role if present; default to 'field' otherwise\n // (Design §13 Q1 locked decision).\n const role: Role = ofResult.role ?? 'field';\n\n return { dim, freeIndices, role };\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"metric.js","sourceRoot":"","sources":["../../src/dimensional/metric.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"metric.js","sourceRoot":"","sources":["../../src/dimensional/metric.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * User-facing constructors and ergonomic helpers for v0.3.0 metric-layer\n * AST nodes. The substantive logic (alpha-conversion) lives in raise() /\n * lower() (added in Task 8 — this file's initial revision contains only\n * the trivial constructors).\n *\n * Per docs/specification/Part-VIII-Metric-Layer.md §VIII.5 (raise/lower\n * contract) and §VIII.1 (grammar).\n *\n * @module dimensional/metric\n */\n\nimport type { Dimension } from './types.js';\nimport { DIMENSIONLESS } from './types.js';\nimport { freshLabel } from './fresh-label.js';\nimport type { TensorIndex } from './tensor.js';\nimport type { TensorProductNode } from './tensor.js';\nimport type {\n MetricTensorNode,\n KroneckerDeltaNode,\n TensorPartialDerivativeNode,\n CovariantIndex,\n} from './metric-validators.js';\nimport type { ExprNode } from './validator.js';\nimport { validate } from './validator.js';\nimport { MetricSignatureError, UPTError } from './errors.js';\n\n/**\n * Construct a metric-tensor node.\n *\n * @param name Symbolic name of the metric (e.g. `'g'`).\n * @param indices Exactly two TensorIndex entries (rank-2 requirement).\n * @param dim Physical dimension of the metric components.\n * @param signature Comma-separated `'+'`/`'-'` signs (e.g. `'+,-,-,-'`).\n * @param derivativeStrategy Optional hint for the numerical engine:\n * how to compute ∂g for Christoffel / ∇_μ. `'zero'` = constant metric\n * (∂g=0, Γ=0, ∇_μ=∂_μ); `'supplied'` = caller provides ∂g components;\n * `'computed'` (the default) = the lowering treats a raw-tensor metric\n * input as constant (∂g=0) — nothing is auto-differentiated. Metric\n * closures in `inputs.fields` take the curvature paths, which\n * finite-difference the closures.\n * Omit to leave the field absent (engine defaults to `'computed'`).\n */\nexport function metric(\n name: string,\n indices: ReadonlyArray<TensorIndex>,\n dim: Dimension,\n signature: string,\n derivativeStrategy?: 'computed' | 'zero' | 'supplied',\n): MetricTensorNode {\n const node: {\n kind: 'metric-tensor';\n name: string;\n indices: ReadonlyArray<TensorIndex>;\n signature: string;\n dim: Dimension;\n derivativeStrategy?: 'computed' | 'zero' | 'supplied';\n } = { kind: 'metric-tensor', name, indices, signature, dim };\n if (derivativeStrategy !== undefined) node.derivativeStrategy = derivativeStrategy;\n return node;\n}\n\n/**\n * Construct a Kronecker delta δ^upperLabel_lowerLabel.\n * Parameter order: upper first, lower second (canonical δ^μ_ν).\n * dim defaults to DIMENSIONLESS (Design §13 Q3 locked).\n */\nexport function kronecker(\n upperLabel: string,\n lowerLabel: string,\n dim: Dimension = DIMENSIONLESS,\n): KroneckerDeltaNode {\n return {\n kind: 'kronecker-delta',\n indices: [\n { label: upperLabel, variance: 'upper' },\n { label: lowerLabel, variance: 'lower' },\n ],\n dim,\n };\n}\n\n/**\n * Construct a tensor-partial-derivative. wrtIndex.variance MUST be 'lower'\n * — TypeScript enforces this via the CovariantIndex type.\n */\nexport function pderiv(\n of: ExprNode,\n wrt: ExprNode,\n wrtIndex: CovariantIndex,\n): TensorPartialDerivativeNode {\n return { kind: 'tensor-partial-derivative', of, wrt, wrtIndex };\n}\n\n/** Thrown by raise() / lower() when the operand's label is absent or has\n * the wrong variance for the requested operation. Private to this module\n * (not part of the public error surface per Design §6). */\nclass RaiseLowerInvalidLabelError extends UPTError {\n constructor(message: string) {\n super(message);\n this.name = 'RaiseLowerInvalidLabelError';\n Object.setPrototypeOf(this, RaiseLowerInvalidLabelError.prototype);\n }\n}\n\n/**\n * Collect free-index labels from an ExprNode by calling validate(). Returns\n * a map from label → variance (whichever side has count > 0). Note: this\n * performs a full subtree validation on `operand`; cost is acceptable for\n * typical raise/lower call sites (operand is a small subtree).\n */\nfunction collectFreeIndexLabels(node: ExprNode): Map<string, 'upper' | 'lower'> {\n const result = validate(node);\n const labels = new Map<string, 'upper' | 'lower'>();\n for (const [label, counts] of result.freeIndices) {\n if (counts.upper > 0) labels.set(label, 'upper');\n else if (counts.lower > 0) labels.set(label, 'lower');\n }\n return labels;\n}\n\n/**\n * Raise an index of `operand` via the inverse metric `gInverse`.\n *\n * Internal alpha-conversion: one of `gInverse`'s labels is renamed to\n * match `label` (so the Einstein-summation contraction picks it up);\n * the other is renamed to a fresh label that doesn't collide with any\n * free index in `operand`. The fresh label becomes the resulting\n * tensor-product's only new free index.\n *\n * Per Part-VIII §VIII.5 (raise/lower contract).\n *\n * Throws:\n * - MetricSignatureError if gInverse isn't both-upper\n * - RaiseLowerInvalidLabelError if label is absent or already upper in operand\n */\nexport function raise(\n operand: ExprNode,\n gInverse: MetricTensorNode,\n label: string,\n): TensorProductNode {\n if (\n gInverse.indices[0].variance !== 'upper' ||\n gInverse.indices[1].variance !== 'upper'\n ) {\n throw new MetricSignatureError(\n gInverse.name,\n `raise() requires both indices of the inverse metric to have variance 'upper'`,\n );\n }\n const operandLabels = collectFreeIndexLabels(operand);\n const operandVariance = operandLabels.get(label);\n if (operandVariance === undefined) {\n throw new RaiseLowerInvalidLabelError(\n `raise(): label '${label}' is not a free index of the operand. ` +\n `Operand free indices: ${Array.from(operandLabels.keys()).join(', ') || '(none)'}.`,\n );\n }\n if (operandVariance === 'upper') {\n throw new RaiseLowerInvalidLabelError(\n `raise(): label '${label}' is already 'upper' in the operand. ` +\n `Use lower() to lower it, or pick a different label.`,\n );\n }\n\n // Alpha-conversion: rename gInverse[0] → label (the dummy that contracts);\n // gInverse[1] → freshLabel(gInverse[1].label, operand-free-labels).\n const taken = new Set(operandLabels.keys());\n taken.add(label);\n const renamed = freshLabel(gInverse.indices[1].label, taken);\n\n const renamedGInverse: MetricTensorNode = {\n kind: 'metric-tensor',\n name: gInverse.name,\n indices: [\n { label, variance: 'upper' },\n { label: renamed, variance: 'upper' },\n ],\n signature: gInverse.signature,\n dim: gInverse.dim,\n };\n if (gInverse.derivativeStrategy !== undefined) {\n (renamedGInverse as { derivativeStrategy: typeof gInverse.derivativeStrategy }).derivativeStrategy =\n gInverse.derivativeStrategy;\n }\n\n return { kind: 'tensor-product', args: [renamedGInverse, operand] };\n}\n\n/**\n * Lower an index of `operand` via the covariant metric `g`.\n * Symmetric to raise(). Per Part-VIII §VIII.5.\n *\n * Throws:\n * - MetricSignatureError if g isn't both-lower\n * - RaiseLowerInvalidLabelError if label is absent or already lower in operand\n */\nexport function lower(\n operand: ExprNode,\n g: MetricTensorNode,\n label: string,\n): TensorProductNode {\n if (\n g.indices[0].variance !== 'lower' ||\n g.indices[1].variance !== 'lower'\n ) {\n throw new MetricSignatureError(\n g.name,\n `lower() requires both indices of the metric to have variance 'lower'`,\n );\n }\n const operandLabels = collectFreeIndexLabels(operand);\n const operandVariance = operandLabels.get(label);\n if (operandVariance === undefined) {\n throw new RaiseLowerInvalidLabelError(\n `lower(): label '${label}' is not a free index of the operand. ` +\n `Operand free indices: ${Array.from(operandLabels.keys()).join(', ') || '(none)'}.`,\n );\n }\n if (operandVariance === 'lower') {\n throw new RaiseLowerInvalidLabelError(\n `lower(): label '${label}' is already 'lower' in the operand. ` +\n `Use raise() to raise it, or pick a different label.`,\n );\n }\n\n const taken = new Set(operandLabels.keys());\n taken.add(label);\n const renamed = freshLabel(g.indices[1].label, taken);\n\n const renamedG: MetricTensorNode = {\n kind: 'metric-tensor',\n name: g.name,\n indices: [\n { label, variance: 'lower' },\n { label: renamed, variance: 'lower' },\n ],\n signature: g.signature,\n dim: g.dim,\n };\n if (g.derivativeStrategy !== undefined) {\n (renamedG as { derivativeStrategy: typeof g.derivativeStrategy }).derivativeStrategy =\n g.derivativeStrategy;\n }\n\n return { kind: 'tensor-product', args: [renamedG, operand] };\n}\n"]}
|
|
@@ -1 +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"}
|
|
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","sourcesContent":["/**\n * Opt-in natural units. The default comparison stays SI: an energy written as\n * a mass is a mismatch. `--natural` sets ħ = c = 1; `--geometrized` also\n * sets G = 1. A mismatch is reconciled only when the exponent difference is\n * an integer combination of those constants.\n *\n * @module dimensional/natural-units\n */\n\nimport type { Dimension } from './types.js';\n\n/** Which constants may be set to 1. @internal */\nexport type UnitMode = 'si' | 'natural' | 'geometrized';\n\n/**\n * Constant values for a numeric comparison in this mode. `h = 2π` keeps\n * `h = 2π ħ` when `ħ = 1`. SI comparisons pass no overrides.\n * @internal\n */\nexport function naturalConstantOverrides(mode: Exclude<UnitMode, 'si'>): Record<string, number> {\n const overrides: Record<string, number> = { c: 1, hbar: 1, h: 2 * Math.PI };\n if (mode === 'geometrized') overrides.G = 1;\n return overrides;\n}\n\n/** The powers of G, ħ and c that reconcile two dimensions, or null. @internal */\nexport interface NaturalPowers {\n readonly nG: number;\n readonly nH: number;\n readonly nC: number;\n}\n\n/**\n * Powers of G, ħ and c such that multiplying a quantity of dimension `from`\n * by G^nG ħ^nH c^nC yields `to`. `nG` is zero unless `mode` is `geometrized`.\n * Current, temperature, amount and luminous intensity must already agree.\n * @internal\n */\nexport function naturalPowers(from: Dimension, to: Dimension, mode: Exclude<UnitMode, 'si'>): NaturalPowers | null {\n const dL = to.L - from.L;\n const dM = to.M - from.M;\n const dT = to.T - from.T;\n if (to.I - from.I !== 0 || to.Theta - from.Theta !== 0 || to.N - from.N !== 0 || to.J - from.J !== 0) {\n return null;\n }\n if ((dL + dT - dM) % 2 !== 0) return null;\n const nG = (dL + dT - dM) / 2;\n if (nG !== 0 && mode !== 'geometrized') return null;\n const nH = dM + nG;\n const nC = -dT - dM - 3 * nG;\n if (!Number.isInteger(nH) || !Number.isInteger(nC) || !Number.isInteger(nG)) return null;\n return { nG, nH, nC };\n}\n\n/** A one-line note of the powers that were set to 1, or null when none are needed. @internal */\nexport function naturalNote(powers: NaturalPowers, mode: Exclude<UnitMode, 'si'>): string | null {\n if (powers.nG === 0 && powers.nH === 0 && powers.nC === 0) return null;\n const bits: string[] = [];\n if (powers.nC !== 0) bits.push(`c^${powers.nC}`);\n if (powers.nH !== 0) bits.push(`ħ^${powers.nH}`);\n if (powers.nG !== 0) bits.push(`G^${powers.nG}`);\n const flag = mode === 'geometrized' ? '--geometrized (G = ħ = c = 1)' : '--natural (ħ = c = 1)';\n return `${flag}: the dimensions agree after multiplying by ${bits.join(' ')}, with those constants set to 1`;\n}\n"]}
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* The quantity registry. Canonical id, aliases, dimension, and whether an
|
|
3
3
|
* affine temperature is an absolute point or an interval. Synonym groups and
|
|
4
|
-
* the temperature role are projections of this table.
|
|
4
|
+
* the temperature role are projections of this table. The aliases of a
|
|
5
|
+
* quantity that is also a registered constant come from the constant registry.
|
|
5
6
|
*
|
|
6
7
|
* @module dimensional/quantity-registry
|
|
7
8
|
*/
|
|
@@ -21,6 +22,27 @@ export interface QuantityRecord {
|
|
|
21
22
|
readonly signRole?: SignRole;
|
|
22
23
|
readonly graphNode: boolean;
|
|
23
24
|
}
|
|
25
|
+
/** The shape of `data/quantities.json`. @internal */
|
|
26
|
+
export interface QuantityFile {
|
|
27
|
+
readonly quantities: readonly QuantityRecord[];
|
|
28
|
+
}
|
|
29
|
+
/** `_` written as `-`: the one fold every spelling comparison uses. */
|
|
30
|
+
export declare const foldName: (s: string) => string;
|
|
31
|
+
/**
|
|
32
|
+
* The rows of a quantity file. A constant that is also a quantity (`k_B` is
|
|
33
|
+
* `boltzmann-constant`) gives that row its spellings as aliases: the
|
|
34
|
+
* constant registry owns them and the file does not repeat them. A `kind` is
|
|
35
|
+
* the role of an affine temperature, so a row whose dimension is not Θ¹ may
|
|
36
|
+
* not carry one: there it decides nothing and misleads a reader.
|
|
37
|
+
* @internal
|
|
38
|
+
*/
|
|
39
|
+
export declare function readQuantityFile(parsed: QuantityFile): readonly QuantityRecord[];
|
|
40
|
+
/**
|
|
41
|
+
* Folded spelling → row, over every id and alias. Two rows that one folded
|
|
42
|
+
* spelling names throw: the later row would silently shadow the earlier.
|
|
43
|
+
* @internal
|
|
44
|
+
*/
|
|
45
|
+
export declare function quantitySpellingIndex(rows: readonly QuantityRecord[]): ReadonlyMap<string, QuantityRecord>;
|
|
24
46
|
/** Every quantity record, graph nodes and spellings. */
|
|
25
47
|
export declare function allQuantityRecords(): readonly QuantityRecord[];
|
|
26
48
|
/** The record `name` spells, comparing `_` and `-` as the same character. */
|