universal-physics-tensor 9.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 +19 -16
- package/data/atlas/atlas.json +55 -44
- package/data/atlas/atlas.jsonld +1 -1
- package/data/atlas/diffusion.json +19 -18
- package/data/atlas/oscillators.json +15 -10
- package/data/atlas/waves.json +23 -18
- package/data/bridge-catalog.json +886 -1473
- package/data/bridge-catalog.schema.json +349 -132
- package/data/quantities.json +53 -19
- package/data/schemas/atlas-record.v0.json +184 -46
- package/data/units.json +33 -4
- 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.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 +15 -8
- 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.js.map +1 -1
- package/dist/atlas/physjs-ref.d.ts +79 -45
- package/dist/atlas/physjs-ref.d.ts.map +1 -1
- package/dist/atlas/physjs-ref.js +143 -62
- 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.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 +17 -9
- package/dist/bridges/catalog-adapter.js.map +1 -1
- package/dist/bridges/catalog-load.d.ts +12 -2
- package/dist/bridges/catalog-load.d.ts.map +1 -1
- package/dist/bridges/catalog-load.js +171 -8
- package/dist/bridges/catalog-load.js.map +1 -1
- package/dist/bridges/catalog-types.d.ts +48 -24
- 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 +15 -2
- package/dist/bridges/evaluation-errors.d.ts.map +1 -1
- package/dist/bridges/evaluation-errors.js +20 -2
- package/dist/bridges/evaluation-errors.js.map +1 -1
- package/dist/bridges/evaluator-inputs.js.map +1 -1
- package/dist/bridges/evaluators.d.ts +17 -2
- package/dist/bridges/evaluators.d.ts.map +1 -1
- package/dist/bridges/evaluators.js +49 -16
- package/dist/bridges/evaluators.js.map +1 -1
- package/dist/bridges/expr-parse.d.ts +27 -4
- package/dist/bridges/expr-parse.d.ts.map +1 -1
- package/dist/bridges/expr-parse.js +90 -10
- package/dist/bridges/expr-parse.js.map +1 -1
- package/dist/bridges/holds.d.ts +5 -1
- package/dist/bridges/holds.d.ts.map +1 -1
- package/dist/bridges/holds.js +18 -3
- 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.js.map +1 -1
- 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.js.map +1 -1
- 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.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.js.map +1 -1
- package/dist/canonical/entries/condensed-matter.js +4 -4
- package/dist/canonical/entries/condensed-matter.js.map +1 -1
- package/dist/canonical/entries/dimensional-classics.js +2 -2
- package/dist/canonical/entries/dimensional-classics.js.map +1 -1
- package/dist/canonical/entries/electromagnetism.js +2 -2
- package/dist/canonical/entries/electromagnetism.js.map +1 -1
- package/dist/canonical/entries/fluids-waves.js.map +1 -1
- 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 +29 -22
- package/dist/canonical/entries/nonmonomial.js.map +1 -1
- package/dist/canonical/entries/relativity.js.map +1 -1
- package/dist/canonical/entries/statistical-mechanics.js +5 -5
- package/dist/canonical/entries/statistical-mechanics.js.map +1 -1
- 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.js.map +1 -1
- 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.map +1 -1
- package/dist/cli/commands/_discovery-opts.js +42 -7
- 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 +1 -3
- 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 -20
- 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.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 +42 -17
- 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 +15 -9
- 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 +13 -10
- package/dist/cli/commands/eval.js.map +1 -1
- package/dist/cli/commands/evaluate.d.ts.map +1 -1
- package/dist/cli/commands/evaluate.js +53 -31
- 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 +14 -7
- 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 +40 -10
- 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 +82 -89
- 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 -18
- 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 +24 -26
- 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 +13 -9
- package/dist/cli/commands/symbolic.js.map +1 -1
- package/dist/cli/commands/testplan.js +1 -1
- package/dist/cli/commands/testplan.js.map +1 -1
- 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.js.map +1 -1
- 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.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.js +1 -1
- 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 +15 -9
- package/dist/cli-api.d.ts.map +1 -1
- package/dist/cli-api.js +14 -13
- package/dist/cli-api.js.map +1 -1
- package/dist/composition/adjudication.js.map +1 -1
- 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 -18
- package/dist/composition/bridge-analysis.d.ts.map +1 -1
- package/dist/composition/bridge-analysis.js +57 -47
- 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 +8 -9
- package/dist/composition/canonical-graph.d.ts.map +1 -1
- package/dist/composition/canonical-graph.js +25 -67
- package/dist/composition/canonical-graph.js.map +1 -1
- package/dist/composition/canonical-json.js.map +1 -1
- 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 +153 -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 +21 -11
- package/dist/composition/discovery.d.ts.map +1 -1
- package/dist/composition/discovery.js +81 -21
- package/dist/composition/discovery.js.map +1 -1
- package/dist/composition/edge.d.ts +19 -8
- package/dist/composition/edge.d.ts.map +1 -1
- package/dist/composition/edge.js +24 -11
- 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.js.map +1 -1
- package/dist/composition/explain.d.ts +14 -9
- package/dist/composition/explain.d.ts.map +1 -1
- package/dist/composition/explain.js +46 -13
- package/dist/composition/explain.js.map +1 -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 +6 -4
- package/dist/composition/index.d.ts.map +1 -1
- package/dist/composition/index.js +4 -3
- 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 +11 -4
- 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 +16 -6
- package/dist/composition/retrodiction.d.ts.map +1 -1
- package/dist/composition/retrodiction.js +34 -9
- package/dist/composition/retrodiction.js.map +1 -1
- package/dist/composition/uncertainty.js.map +1 -1
- 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 +8 -8
- package/dist/core/constants.d.ts.map +1 -1
- package/dist/core/constants.js +8 -10
- package/dist/core/constants.js.map +1 -1
- package/dist/core/data-file.js.map +1 -1
- package/dist/core/flux-rules.js +1 -1
- package/dist/core/flux-rules.js.map +1 -1
- package/dist/core/json-schema.d.ts +1 -1
- package/dist/core/json-schema.d.ts.map +1 -1
- package/dist/core/json-schema.js +31 -7
- package/dist/core/json-schema.js.map +1 -1
- 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.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 +10 -6
- 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 +16 -5
- package/dist/diff/bridge-specs.d.ts.map +1 -1
- package/dist/diff/bridge-specs.js +16 -4
- 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.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.map +1 -1
- package/dist/dimensional/constant-rows.js +9 -5
- package/dist/dimensional/constant-rows.js.map +1 -1
- package/dist/dimensional/constants.d.ts +5 -6
- package/dist/dimensional/constants.d.ts.map +1 -1
- package/dist/dimensional/constants.js +5 -6
- 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 +13 -7
- package/dist/dimensional/dimension-spec.d.ts.map +1 -1
- package/dist/dimensional/dimension-spec.js +49 -23
- 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.js.map +1 -1
- package/dist/dimensional/field-equation-helpers.js.map +1 -1
- 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 +13 -0
- package/dist/dimensional/quantity-registry.d.ts.map +1 -1
- package/dist/dimensional/quantity-registry.js +14 -6
- 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.map +1 -1
- package/dist/dimensional/symbolic-constants.js +7 -2
- 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.map +1 -1
- package/dist/dimensional/unit-data.js +9 -5
- package/dist/dimensional/unit-data.js.map +1 -1
- package/dist/dimensional/units.d.ts.map +1 -1
- package/dist/dimensional/units.js +38 -20
- 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 +50 -5
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +12 -20
- package/dist/index.js.map +1 -1
- package/dist/numerical/bianchi-residual.js.map +1 -1
- package/dist/numerical/binding-value.d.ts +11 -6
- package/dist/numerical/binding-value.d.ts.map +1 -1
- package/dist/numerical/binding-value.js +126 -122
- 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.map +1 -1
- package/dist/numerical/evaluator-uncertainty.js +19 -2
- package/dist/numerical/evaluator-uncertainty.js.map +1 -1
- package/dist/numerical/formula-contract.d.ts +63 -7
- package/dist/numerical/formula-contract.d.ts.map +1 -1
- package/dist/numerical/formula-contract.js +61 -42
- package/dist/numerical/formula-contract.js.map +1 -1
- package/dist/numerical/formula-dimension.d.ts +8 -7
- package/dist/numerical/formula-dimension.d.ts.map +1 -1
- package/dist/numerical/formula-dimension.js +58 -36
- 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 +5 -2
- 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 +41 -42
- 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 +13 -19
- package/dist/numerical/spacetime-metrics.d.ts.map +1 -1
- package/dist/numerical/spacetime-metrics.js +126 -248
- 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 +18 -5
- package/dist/relations/types.d.ts.map +1 -1
- package/dist/relations/types.js +5 -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
|
@@ -3,9 +3,14 @@
|
|
|
3
3
|
* so CLI users can declare a quantity's dimensions without TypeScript.
|
|
4
4
|
*
|
|
5
5
|
* Accepts (in priority order):
|
|
6
|
-
* 1. a named dimension —
|
|
7
|
-
* `
|
|
8
|
-
* `temperature`, `entropy`, `charge`, `area`,
|
|
6
|
+
* 1. a named dimension — the `types.ts` constants (`length`, `time`,
|
|
7
|
+
* `mass`, `velocity`, `acceleration`, `force`, `energy`, `power`,
|
|
8
|
+
* `action`, `frequency`, `temperature`, `entropy`, `charge`, `area`,
|
|
9
|
+
* `dimensionless`, `density`) and the dimensions of the SI units
|
|
10
|
+
* `m^3`, `Pa`, `Pa*s`, `ohm`, `T`, `H/m`, `A`, `mol`, `cd` under the
|
|
11
|
+
* names `volume`, `pressure`, `viscosity`, `resistance`,
|
|
12
|
+
* `magnetic-field`, `permeability`, `current`, `amount` (or
|
|
13
|
+
* `amount-of-substance`), `luminous-intensity`;
|
|
9
14
|
* 2. a fundamental constant by name — `hbar`/`ℏ`, `c`, `G`, `k_B`/`kB`,
|
|
10
15
|
* `e` (its SI dimension);
|
|
11
16
|
* 3. a product/quotient of named dimensions or constants — `power/area`,
|
|
@@ -22,17 +27,19 @@
|
|
|
22
27
|
* ({@link parseFormulaPNode}). The dimension notation differs from a formula
|
|
23
28
|
* only in spelling, and {@link formulaSyntax} rewrites those spellings
|
|
24
29
|
* before the parse: a `.` between factors is `*`, a space between factors is
|
|
25
|
-
* `*`, a glued exponent (`L2`, `T-2`) takes its
|
|
26
|
-
*
|
|
27
|
-
*
|
|
28
|
-
*
|
|
30
|
+
* `*`, a glued exponent (`L2`, `T-2`) takes its `^` unless the letters and
|
|
31
|
+
* the digit together spell a registered atom (`mu0`, `eps0`), a fractional
|
|
32
|
+
* exponent (`T^1/2`) is parenthesized, and a hyphen inside a name
|
|
33
|
+
* (`magnetic-field`) is `_`. There is no subtraction in a dimension, so `-`
|
|
34
|
+
* after a name is always an exponent's sign.
|
|
29
35
|
*
|
|
30
36
|
* @module dimensional/dimension-spec
|
|
31
37
|
*/
|
|
32
|
-
import { DIMENSIONLESS, LENGTH, AREA, TIME, FREQUENCY, MASS, VELOCITY, ACCELERATION, FORCE, ENERGY, POWER, ACTION, TEMPERATURE, ENTROPY, CHARGE, } from './types.js';
|
|
38
|
+
import { DIMENSIONLESS, LENGTH, AREA, TIME, FREQUENCY, MASS, MASS_DENSITY, VELOCITY, ACCELERATION, FORCE, ENERGY, POWER, ACTION, TEMPERATURE, ENTROPY, CHARGE, } from './types.js';
|
|
33
39
|
import { divide, multiply, power } from './algebra.js';
|
|
34
40
|
import { dim } from './ast-builders.js';
|
|
35
41
|
import { CONSTANT_REGISTRY } from './symbolic-constants.js';
|
|
42
|
+
import { unitDimension } from './units.js';
|
|
36
43
|
import { parseFormulaPNode } from '../numerical/formula-dimension.js';
|
|
37
44
|
/** A bad dimension spec. */
|
|
38
45
|
export class DimensionSpecError extends Error {
|
|
@@ -41,16 +48,20 @@ export class DimensionSpecError extends Error {
|
|
|
41
48
|
this.name = 'DimensionSpecError';
|
|
42
49
|
}
|
|
43
50
|
}
|
|
44
|
-
/**
|
|
45
|
-
|
|
46
|
-
|
|
51
|
+
/**
|
|
52
|
+
* Named dimensions — matched case-insensitively. Each is a `types.ts`
|
|
53
|
+
* constant or the dimension of an SI unit read by the one unit reader; no
|
|
54
|
+
* exponent tuple is typed here.
|
|
55
|
+
*/
|
|
47
56
|
const NAMED_DIMS = {
|
|
48
57
|
dimensionless: DIMENSIONLESS,
|
|
49
58
|
length: LENGTH,
|
|
50
59
|
area: AREA,
|
|
60
|
+
volume: unitDimension('m^3'),
|
|
51
61
|
time: TIME,
|
|
52
62
|
frequency: FREQUENCY,
|
|
53
63
|
mass: MASS,
|
|
64
|
+
density: MASS_DENSITY,
|
|
54
65
|
velocity: VELOCITY,
|
|
55
66
|
acceleration: ACCELERATION,
|
|
56
67
|
force: FORCE,
|
|
@@ -60,13 +71,16 @@ const NAMED_DIMS = {
|
|
|
60
71
|
temperature: TEMPERATURE,
|
|
61
72
|
entropy: ENTROPY,
|
|
62
73
|
charge: CHARGE,
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
74
|
+
current: unitDimension('A'),
|
|
75
|
+
electric_current: unitDimension('A'),
|
|
76
|
+
amount: unitDimension('mol'),
|
|
77
|
+
amount_of_substance: unitDimension('mol'),
|
|
78
|
+
luminous_intensity: unitDimension('cd'),
|
|
79
|
+
pressure: unitDimension('Pa'),
|
|
80
|
+
viscosity: unitDimension('Pa*s'),
|
|
81
|
+
resistance: unitDimension('ohm'),
|
|
82
|
+
magnetic_field: unitDimension('T'),
|
|
83
|
+
permeability: unitDimension('H/m'),
|
|
70
84
|
};
|
|
71
85
|
/**
|
|
72
86
|
* One constant's exact-case spellings, projected from the constant registry.
|
|
@@ -101,10 +115,20 @@ function resolveAtom(raw) {
|
|
|
101
115
|
return NAMED_DIMS[key] ?? NAMED_DIMS[s.toLowerCase()] ?? null;
|
|
102
116
|
}
|
|
103
117
|
function baseAtom(id) {
|
|
104
|
-
|
|
118
|
+
// A single base letter is read in its own case: `m` is the metre's symbol, not mass,
|
|
119
|
+
// and `t`, `i`, `n`, `j` are not bases either (Tom's second round; it read `m^3` as M³).
|
|
120
|
+
// `Theta`/`THETA`/`Θ` are the one multi-letter base and stay case-insensitive.
|
|
121
|
+
if (id.length === 1 && /[a-z]/.test(id)) {
|
|
122
|
+
const upper = id.toUpperCase();
|
|
123
|
+
if (BASES[upper] !== undefined) {
|
|
124
|
+
throw new DimensionSpecError(`'${id}' is not a base letter: the bases are L M T I Θ N J in that case (mass is M, length is L); a unit symbol is not a dimension`);
|
|
125
|
+
}
|
|
126
|
+
return null;
|
|
127
|
+
}
|
|
128
|
+
const baseKey = id.length > 1 ? BASES[id.toUpperCase()] ?? BASES[id] : BASES[id];
|
|
105
129
|
if (!baseKey)
|
|
106
130
|
return null;
|
|
107
|
-
const out =
|
|
131
|
+
const out = dim();
|
|
108
132
|
out[baseKey] = 1;
|
|
109
133
|
return out;
|
|
110
134
|
}
|
|
@@ -120,8 +144,10 @@ function formulaSyntax(spec) {
|
|
|
120
144
|
// Spaces around an operator carry nothing; between two factors they multiply.
|
|
121
145
|
.replace(/\s*([*/^().])\s*/g, '$1')
|
|
122
146
|
.replace(/\s+/g, '*')
|
|
123
|
-
// A glued exponent: `L2`, `T-2`, `T-2.5
|
|
124
|
-
|
|
147
|
+
// A glued exponent: `L2`, `T-2`, `T-2.5`. The letters and the digit
|
|
148
|
+
// together may spell a registered atom (`mu0`, `eps0`, `mu_0`); that
|
|
149
|
+
// token is a name, not a base with an exponent.
|
|
150
|
+
.replace(/([A-Za-zΘ_]+)([+-]?\d)/g, (token, word, digit) => resolveAtom(token) !== null ? token : `${word}^${digit}`)
|
|
125
151
|
// A fractional exponent: `T^1/2` is `T^(1/2)`.
|
|
126
152
|
.replace(/\^([+-]?\d+(?:\.\d+)?)\/(\d+(?:\.\d+)?)/g, '^($1/$2)')
|
|
127
153
|
// A dot between factors is a product; a dot before a digit is a decimal point.
|
|
@@ -164,7 +190,7 @@ function dimensionOf(node, spec) {
|
|
|
164
190
|
case 'num':
|
|
165
191
|
// A literal 1 is the dimensionless numerator: `1/time`.
|
|
166
192
|
if (node.value === 1)
|
|
167
|
-
return
|
|
193
|
+
return dim();
|
|
168
194
|
throw new DimensionSpecError(`a number is not a dimension term ('${node.value}' in '${spec}')`);
|
|
169
195
|
case 'pow': {
|
|
170
196
|
const exponent = exponentOf(node.exp, spec);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dimension-spec.js","sourceRoot":"","sources":["../../src/dimensional/dimension-spec.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"dimension-spec.js","sourceRoot":"","sources":["../../src/dimensional/dimension-spec.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Dimension-spec parser — turns a human string into a {@link Dimension},\n * so CLI users can declare a quantity's dimensions without TypeScript.\n *\n * Accepts (in priority order):\n * 1. a named dimension — the `types.ts` constants (`length`, `time`,\n * `mass`, `velocity`, `acceleration`, `force`, `energy`, `power`,\n * `action`, `frequency`, `temperature`, `entropy`, `charge`, `area`,\n * `dimensionless`, `density`) and the dimensions of the SI units\n * `m^3`, `Pa`, `Pa*s`, `ohm`, `T`, `H/m`, `A`, `mol`, `cd` under the\n * names `volume`, `pressure`, `viscosity`, `resistance`,\n * `magnetic-field`, `permeability`, `current`, `amount` (or\n * `amount-of-substance`), `luminous-intensity`;\n * 2. a fundamental constant by name — `hbar`/`ℏ`, `c`, `G`, `k_B`/`kB`,\n * `e` (its SI dimension);\n * 3. a product/quotient of named dimensions or constants — `power/area`,\n * `length*temperature` (persona finding L1); parentheses group a\n * denominator or factor (`power/(area*temperature^4)`), a name may\n * carry an exponent (`mass/length^3`), and a single base letter works\n * in a quotient (`M/L^3`). A slash that is only the bar of a fractional\n * exponent (`T^1/2`) stays on the explicit-base path;\n * 4. explicit base exponents — `L^3.M^-1.T^-2` (bases L M T I Theta/Θ N J,\n * separated by `.`, `*`, or spaces; `^` optional; fractional exponents\n * like `T^1/2` allowed).\n *\n * Forms 3 and 4 are one grammar, the formula grammar MathTS parses\n * ({@link parseFormulaPNode}). The dimension notation differs from a formula\n * only in spelling, and {@link formulaSyntax} rewrites those spellings\n * before the parse: a `.` between factors is `*`, a space between factors is\n * `*`, a glued exponent (`L2`, `T-2`) takes its `^` unless the letters and\n * the digit together spell a registered atom (`mu0`, `eps0`), a fractional\n * exponent (`T^1/2`) is parenthesized, and a hyphen inside a name\n * (`magnetic-field`) is `_`. There is no subtraction in a dimension, so `-`\n * after a name is always an exponent's sign.\n *\n * @module dimensional/dimension-spec\n */\n\nimport type { Dimension } from './types.js';\nimport {\n DIMENSIONLESS,\n LENGTH,\n AREA,\n TIME,\n FREQUENCY,\n MASS,\n MASS_DENSITY,\n VELOCITY,\n ACCELERATION,\n FORCE,\n ENERGY,\n POWER,\n ACTION,\n TEMPERATURE,\n ENTROPY,\n CHARGE,\n} from './types.js';\nimport { divide, multiply, power } from './algebra.js';\nimport { dim } from './ast-builders.js';\nimport { CONSTANT_REGISTRY } from './symbolic-constants.js';\nimport { unitDimension } from './units.js';\nimport { parseFormulaPNode, type FormulaPNode } from '../numerical/formula-dimension.js';\n\n/** A bad dimension spec. */\nexport class DimensionSpecError extends Error {\n constructor(message: string) {\n super(message);\n this.name = 'DimensionSpecError';\n }\n}\n\n/**\n * Named dimensions — matched case-insensitively. Each is a `types.ts`\n * constant or the dimension of an SI unit read by the one unit reader; no\n * exponent tuple is typed here.\n */\nconst NAMED_DIMS: Readonly<Record<string, Dimension>> = {\n dimensionless: DIMENSIONLESS,\n length: LENGTH,\n area: AREA,\n volume: unitDimension('m^3'),\n time: TIME,\n frequency: FREQUENCY,\n mass: MASS,\n density: MASS_DENSITY,\n velocity: VELOCITY,\n acceleration: ACCELERATION,\n force: FORCE,\n energy: ENERGY,\n power: POWER,\n action: ACTION,\n temperature: TEMPERATURE,\n entropy: ENTROPY,\n charge: CHARGE,\n current: unitDimension('A'),\n electric_current: unitDimension('A'),\n amount: unitDimension('mol'),\n amount_of_substance: unitDimension('mol'),\n luminous_intensity: unitDimension('cd'),\n pressure: unitDimension('Pa'),\n viscosity: unitDimension('Pa*s'),\n resistance: unitDimension('ohm'),\n magnetic_field: unitDimension('T'),\n permeability: unitDimension('H/m'),\n};\n\n/**\n * One constant's exact-case spellings, projected from the constant registry.\n * The first name is the formula name the equation path rewrites the others\n * to. `upt eval` binds the same names. A dimension term reads this record.\n *\n * @internal\n */\nexport const CONSTANT_SPELLINGS: readonly { readonly names: readonly string[]; readonly dim: Dimension }[] =\n CONSTANT_REGISTRY.map((row) => ({ names: [row.name, ...row.spellings], dim: row.dim }));\n\n/** Fundamental constants by their SI dimension — matched EXACT-case, so\n * `G` (Newton's constant) is never confused with `g` (acceleration). */\nconst CONST_DIMS: Readonly<Record<string, Dimension>> = Object.fromEntries(\n CONSTANT_SPELLINGS.flatMap(({ names, dim }) => names.map((name) => [name, dim])),\n);\n\nconst BASES: Record<string, keyof Dimension> = {\n L: 'L',\n M: 'M',\n T: 'T',\n I: 'I',\n THETA: 'Theta',\n 'Θ': 'Theta',\n N: 'N',\n J: 'J',\n};\n\n/** Resolve one atom: constant (exact case, `_` or `-`) or named dimension (case-insensitive). */\nfunction resolveAtom(raw: string): Dimension | null {\n const s = raw.trim();\n if (!s) return null;\n const constant = CONST_DIMS[s] ?? CONST_DIMS[s.replaceAll('_', '-')];\n if (constant) return constant;\n const key = s.toLowerCase().replace(/[\\s-]+/g, '_');\n return NAMED_DIMS[key] ?? NAMED_DIMS[s.toLowerCase()] ?? null;\n}\n\nfunction baseAtom(id: string): Dimension | null {\n // A single base letter is read in its own case: `m` is the metre's symbol, not mass,\n // and `t`, `i`, `n`, `j` are not bases either (Tom's second round; it read `m^3` as M³).\n // `Theta`/`THETA`/`Θ` are the one multi-letter base and stay case-insensitive.\n if (id.length === 1 && /[a-z]/.test(id)) {\n const upper = id.toUpperCase();\n if (BASES[upper] !== undefined) {\n throw new DimensionSpecError(`'${id}' is not a base letter: the bases are L M T I Θ N J in that case (mass is M, length is L); a unit symbol is not a dimension`);\n }\n return null;\n }\n const baseKey = id.length > 1 ? BASES[id.toUpperCase()] ?? BASES[id] : BASES[id];\n if (!baseKey) return null;\n const out = dim();\n out[baseKey] = 1;\n return out;\n}\n\n/**\n * The dimension notation in formula syntax. Each rewrite is a spelling the\n * notation allows and a formula does not; none adds an operator a reader\n * did not write.\n */\nfunction formulaSyntax(spec: string): string {\n return (\n spec\n // A hyphen inside a name: `magnetic-field` is `magnetic_field`.\n .replace(/(?<=[A-Za-zΘ])-(?=[A-Za-zΘ])/g, '_')\n // Spaces around an operator carry nothing; between two factors they multiply.\n .replace(/\\s*([*/^().])\\s*/g, '$1')\n .replace(/\\s+/g, '*')\n // A glued exponent: `L2`, `T-2`, `T-2.5`. The letters and the digit\n // together may spell a registered atom (`mu0`, `eps0`, `mu_0`); that\n // token is a name, not a base with an exponent.\n .replace(/([A-Za-zΘ_]+)([+-]?\\d)/g, (token, word: string, digit: string) =>\n resolveAtom(token) !== null ? token : `${word}^${digit}`,\n )\n // A fractional exponent: `T^1/2` is `T^(1/2)`.\n .replace(/\\^([+-]?\\d+(?:\\.\\d+)?)\\/(\\d+(?:\\.\\d+)?)/g, '^($1/$2)')\n // A dot between factors is a product; a dot before a digit is a decimal point.\n .replace(/\\.(?!\\d)/g, '*')\n );\n}\n\n/** A numeric exponent: a number, a signed number, or a quotient or product of numbers. */\nfunction exponentOf(node: FormulaPNode, spec: string): number {\n switch (node.kind) {\n case 'num':\n return node.value;\n case 'neg':\n return -exponentOf(node.arg, spec);\n case 'op': {\n const values = node.args.map((arg) => exponentOf(arg, spec));\n if (node.op === '/') return values.reduce((a, b) => a / b);\n if (node.op === '*') return values.reduce((a, b) => a * b, 1);\n if (node.op === '+') return values.reduce((a, b) => a + b, 0);\n return values.length === 1 ? -values[0]! : values.reduce((a, b) => a - b);\n }\n default:\n throw new DimensionSpecError(`bad exponent in '${spec}'`);\n }\n}\n\nfunction unknownTerm(id: string): DimensionSpecError {\n return new DimensionSpecError(\n `unknown base dimension '${id}' (use L M T I Theta N J, a named dimension, a constant name, ` +\n 'or a named product/quotient like power/area)',\n );\n}\n\n/** The dimension a parsed spec states. */\nfunction dimensionOf(node: FormulaPNode, spec: string): Dimension {\n switch (node.kind) {\n case 'sym': {\n const found = resolveAtom(node.name) ?? baseAtom(node.name);\n if (found === null) throw unknownTerm(node.name);\n return { ...found };\n }\n case 'num':\n // A literal 1 is the dimensionless numerator: `1/time`.\n if (node.value === 1) return dim();\n throw new DimensionSpecError(`a number is not a dimension term ('${node.value}' in '${spec}')`);\n case 'pow': {\n const exponent = exponentOf(node.exp, spec);\n if (!Number.isFinite(exponent)) throw new DimensionSpecError(`bad exponent in '${spec}'`);\n return { ...power(dimensionOf(node.base, spec), exponent) };\n }\n case 'op': {\n if (node.op !== '*' && node.op !== '/') {\n throw new DimensionSpecError(`unrecognized dimension term '${spec}' (a dimension has no '${node.op}')`);\n }\n const [first, ...rest] = node.args.map((arg) => dimensionOf(arg, spec));\n return { ...rest.reduce((acc, next) => (node.op === '*' ? multiply(acc, next) : divide(acc, next)), first!) };\n }\n case 'neg':\n throw new DimensionSpecError(`unrecognized dimension term '${spec}' (a dimension has no sign)`);\n case 'call':\n throw new DimensionSpecError(`unrecognized dimension term '${node.fn}' in '${spec}'`);\n }\n}\n\n/** Parse a dimension spec string into a {@link Dimension}. @internal */\nexport function parseDimensionSpec(spec: string): Dimension {\n const s = spec.trim();\n if (!s) throw new DimensionSpecError('empty dimension spec');\n // A whole name: a constant (exact case, so G is not g) or a named dimension.\n const whole = resolveAtom(s);\n if (whole) return whole;\n let node: FormulaPNode;\n try {\n node = parseFormulaPNode(formulaSyntax(s));\n } catch (error) {\n throw new DimensionSpecError(\n `unrecognized dimension spec '${s}' (${error instanceof Error ? error.message : String(error)})`,\n );\n }\n const out = dimensionOf(node, s);\n // A zero exponent raised to a negative power is -0; a dimension has no signed zero.\n for (const key of Object.keys(out) as (keyof Dimension)[]) if (out[key] === 0) out[key] = 0;\n return out;\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"einstein-equation.js","sourceRoot":"","sources":["../../src/dimensional/einstein-equation.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAcH,OAAO,EACL,2BAA2B,EAC3B,0BAA0B,EAC1B,sBAAsB,GACvB,MAAM,6BAA6B,CAAC;AAkCrC,yDAAyD;AACzD,MAAM,UAAU,GAAc,EAAE,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,EAAE,CAAC;AAEhF,4EAA4E;AAC5E,0EAA0E;AAC1E,MAAM,SAAS,GAAc,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;AAEhF;;;;;;;GAOG;AACH,SAAS,uBAAuB,CAAC,GAAuB;IACtD,MAAM,EAAE,GAAG,GAAG,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;IAC7C,MAAM,EAAE,GAAG,GAAG,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;IAC7C,OAAO,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;AAClB,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuDG;AACH,MAAM,UAAU,6BAA6B,CAC3C,IAA+B;IAE/B,wEAAwE;IACxE,4DAA4D;IAC5D,mEAAmE;IACnE,gEAAgE;IAChE,wDAAwD;IAExD,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,GAAG,uBAAuB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAEzD,6EAA6E;IAC7E,2BAA2B,CACzB,2BAA2B,EAC3B,MAAM,EACN,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,MAAM,EACN,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CACvD,CAAC;IAEF,8EAA8E;IAC9E,0BAA0B,CACxB,2BAA2B,EAC3B,mBAAmB,EACnB,IAAI,CAAC,GAAG,CAAC,YAAY,EACrB,SAAS,EACT,yEAAyE;QACvE,4DAA4D,CAC/D,CAAC;IAEF,6EAA6E;IAC7E,sBAAsB,CACpB,2BAA2B,EAC3B,MAAM,EACN,IAAI,CAAC,GAAG,CAAC,QAAQ,EACjB,WAAW,EACX,+CAA+C,CAChD,CAAC;IAEF,6EAA6E;IAC7E,MAAM,WAAW,GAAG,IAAI,GAAG,EAA4C,CAAC;IACxE,WAAW,CAAC,GAAG,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;IAC/C,WAAW,CAAC,GAAG,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;IAE/C,OAAO,EAAE,GAAG,EAAE,UAAU,EAAE,WAAW,EAAE,CAAC;AAC1C,CAAC"}
|
|
1
|
+
{"version":3,"file":"einstein-equation.js","sourceRoot":"","sources":["../../src/dimensional/einstein-equation.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAcH,OAAO,EACL,2BAA2B,EAC3B,0BAA0B,EAC1B,sBAAsB,GACvB,MAAM,6BAA6B,CAAC;AAkCrC,yDAAyD;AACzD,MAAM,UAAU,GAAc,EAAE,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,EAAE,CAAC;AAEhF,4EAA4E;AAC5E,0EAA0E;AAC1E,MAAM,SAAS,GAAc,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;AAEhF;;;;;;;GAOG;AACH,SAAS,uBAAuB,CAAC,GAAuB;IACtD,MAAM,EAAE,GAAG,GAAG,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;IAC7C,MAAM,EAAE,GAAG,GAAG,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;IAC7C,OAAO,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;AAClB,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuDG;AACH,MAAM,UAAU,6BAA6B,CAC3C,IAA+B;IAE/B,wEAAwE;IACxE,4DAA4D;IAC5D,mEAAmE;IACnE,gEAAgE;IAChE,wDAAwD;IAExD,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,GAAG,uBAAuB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAEzD,6EAA6E;IAC7E,2BAA2B,CACzB,2BAA2B,EAC3B,MAAM,EACN,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,MAAM,EACN,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CACvD,CAAC;IAEF,8EAA8E;IAC9E,0BAA0B,CACxB,2BAA2B,EAC3B,mBAAmB,EACnB,IAAI,CAAC,GAAG,CAAC,YAAY,EACrB,SAAS,EACT,yEAAyE;QACvE,4DAA4D,CAC/D,CAAC;IAEF,6EAA6E;IAC7E,sBAAsB,CACpB,2BAA2B,EAC3B,MAAM,EACN,IAAI,CAAC,GAAG,CAAC,QAAQ,EACjB,WAAW,EACX,+CAA+C,CAChD,CAAC;IAEF,6EAA6E;IAC7E,MAAM,WAAW,GAAG,IAAI,GAAG,EAA4C,CAAC;IACxE,WAAW,CAAC,GAAG,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;IAC/C,WAAW,CAAC,GAAG,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;IAE/C,OAAO,EAAE,GAAG,EAAE,UAAU,EAAE,WAAW,EAAE,CAAC;AAC1C,CAAC","sourcesContent":["/**\n * Einstein field equation AST node (v0.6.0 Phase 2, Task 2.3).\n *\n * Represents the predicate\n *\n * G_μν + Λ g_μν = (8πG/c⁴) T_μν\n *\n * as a first-class structural node in the ExprNode union. The node is a\n * predicate (an equation), not a value-producing expression — it validates\n * the three structural requirements (Decision #3):\n *\n * 1. **Free-index agreement** — G_μν and T_μν must be rank-(0,2) lower-lower\n * with the SAME index labels.\n * 2. **Per-component dim equality** — each term reduces to [L⁻²]:\n * G_μν ~ [L⁻²]\n * (8πG/c⁴) T_μν ~ [T²·M⁻¹·L⁻¹] · [M·L⁻¹·T⁻²] = [L⁻²]\n * Λ g_μν ~ [L⁻²] · dimensionless = [L⁻²]\n * 3. **Symmetry agreement** — both sides symmetric in (μ,ν). T_μν has\n * `symmetry: 'symmetric'`; G_μν is symmetric by construction.\n *\n * The coupling constant `8πG/c⁴` is represented symbolically by the tag\n * `coupling: 'einstein'` (Decision #3). No inline numeric value — mirrors\n * the constants-discipline requirement.\n *\n * @module dimensional/einstein-equation\n */\n\nimport type { Dimension } from './types.js';\nimport type {\n CovariantIndex,\n MetricTensorNode,\n EinsteinTensorNode,\n StressEnergyTensorNode,\n CosmologicalConstantNode,\n EinsteinFieldEquationNode,\n} from './ast-types.js';\n\n// The field-equation node now lives in the leaf `ast-types.ts`; re-exported.\nexport type { EinsteinFieldEquationNode } from './ast-types.js';\nimport {\n validateFreeIndexLabelMatch,\n validateComponentDimension,\n validateTensorSymmetry,\n} from './field-equation-helpers.js';\n\n// ─────────────────────────────────────────────────────────────────────────────\n// EinsteinFieldEquationNode\n// ─────────────────────────────────────────────────────────────────────────────\n\n/**\n * AST node for the Einstein field equation G_μν + Λ g_μν = (8πG/c⁴) T_μν.\n *\n * Fields:\n * - `lhs` — G_μν (EinsteinTensorNode, shipped in v0.5.0)\n * - `cosmological` — CosmologicalConstantNode for the Λ term; null when the\n * Λ-free form `G_μν = (8πG/c⁴) T_μν` is intended\n * (Decision #11: null = Λ-omitted, not Λ=0).\n * - `metric` — g_μν for the `Λ g_μν` cosmological term.\n * - `rhs` — T_μν (StressEnergyTensorNode).\n * - `coupling` — tag `'einstein'` representing 8πG/c⁴ (symbolic only).\n *\n * @public\n */\n/**\n * Result of validating an EinsteinFieldEquationNode.\n *\n * The equation as a whole is a rank-2 lower-lower tensor identity,\n * so `freeIndices` carries the same {μ: lower, ν: lower} pair as G_μν and T_μν.\n * `dim` is [L⁻²] — the common per-component dimension of every term.\n *\n * @public\n */\nexport interface EinsteinFieldEquationValidationResult {\n readonly dim: Dimension;\n readonly freeIndices: Map<string, { upper: number; lower: number }>;\n}\n\n// Expected per-component dimension of every term: [L⁻²].\nconst DIM_L_INV2: Dimension = { L: -2, M: 0, T: 0, I: 0, Theta: 0, N: 0, J: 0 };\n\n// Expected dimension of T_μν components: [M·L⁻¹·T⁻²] (energy density / Pa).\n// (8πG/c⁴) ~ [T²·M⁻¹·L⁻¹]; product = [M·L⁻¹·T⁻²] × [T²·M⁻¹·L⁻¹] = [L⁻²] ✓\nconst DIM_T_MUV: Dimension = { L: -1, M: 1, T: -2, I: 0, Theta: 0, N: 0, J: 0 };\n\n/**\n * Extract the free-index labels from an EinsteinTensorNode.\n *\n * The Einstein tensor's free indices come from its embedded Riemann's\n * lowerIndices[0] (σ slot) and lowerIndices[2] (ν slot) — the surviving\n * indices after the Carroll Eq. 3.91 contraction. These become G_μν's\n * own μ_out and ν_out labels.\n */\nfunction einsteinFreeIndexLabels(lhs: EinsteinTensorNode): [string, string] {\n const mu = lhs.riemann.lowerIndices[0].label;\n const nu = lhs.riemann.lowerIndices[2].label;\n return [mu, nu];\n}\n\n/**\n * Validate an `einstein-equation` node.\n *\n * Checks three predicates (Decision #3):\n *\n * 1. **Free-index agreement** — G_μν (lhs) and T_μν (rhs) must share the\n * same two lower index labels (extracted from EinsteinTensorNode's embedded\n * Riemann, following the Carroll Eq. 3.91 contraction convention).\n * Throws an Error with \"index label\" in the message on mismatch.\n *\n * 2. **Per-component dim equality** — T_μν.componentDim must equal\n * [M·L⁻¹·T⁻²] so that (8πG/c⁴)·T_μν ~ [L⁻²]. Throws an Error with\n * \"dimension\" in the message on mismatch.\n *\n * 3. **Symmetry agreement** — T_μν must have `symmetry: 'symmetric'`. Throws\n * an Error with \"symmetry\" in the message if not.\n *\n * Note: `lhs.riemann` structural validation is intentionally deferred to the\n * `einstein-tensor` case arm in `validator.ts::infer()` — this function is\n * a pure predicate-level check, not a full recursive walk.\n *\n * @example\n * ```typescript\n * import { validateEinsteinFieldEquation } from 'universal-physics-tensor';\n * import type {\n * EinsteinFieldEquationNode,\n * EinsteinTensorNode,\n * StressEnergyTensorNode,\n * } from 'universal-physics-tensor';\n *\n * // Minimal EFE node (G_μν = κ T_μν, Λ = 0)\n * const efeNode: EinsteinFieldEquationNode = {\n * kind: 'einstein-equation',\n * lhs: { ... } as EinsteinTensorNode, // G_μν from einstein()\n * cosmological: null, // Λ = 0\n * metric: { kind: 'metric-tensor', ... },\n * rhs: {\n * kind: 'stress-energy',\n * symbol: 'T',\n * indices: [\n * { label: 'mu', variance: 'lower' },\n * { label: 'nu', variance: 'lower' },\n * ],\n * symmetry: 'symmetric',\n * componentDim: { L: -1, M: 1, T: -2, I: 0, Theta: 0, N: 0, J: 0 },\n * },\n * coupling: 'einstein',\n * };\n *\n * const result = validateEinsteinFieldEquation(efeNode);\n * // result.dim = { L: -2, M: 0, T: 0, ... } ([L⁻²])\n * // result.freeIndices.get('mu') = { upper: 0, lower: 1 }\n * ```\n *\n * @public\n */\nexport function validateEinsteinFieldEquation(\n node: EinsteinFieldEquationNode,\n): EinsteinFieldEquationValidationResult {\n // v0.7 follow-up Phase 0 (`docs/architecture/v0.7-tensor-equation-node-\n // design-note.md`): the three predicates below are now thin\n // delegations to `field-equation-helpers.ts`. Behavior preserved —\n // error messages contain the same \"index label\" / \"dimension\" /\n // \"symmetry\" keywords any test pattern-matches against.\n\n const [lhsMu, lhsNu] = einsteinFreeIndexLabels(node.lhs);\n\n // ── Predicate 1: free-index label agreement ───────────────────────────────\n validateFreeIndexLabelMatch(\n 'EinsteinFieldEquationNode',\n 'G_μν',\n [lhsMu, lhsNu],\n 'T_μν',\n [node.rhs.indices[0].label, node.rhs.indices[1].label],\n );\n\n // ── Predicate 2: per-component dim equality ────────────────────────────────\n validateComponentDimension(\n 'EinsteinFieldEquationNode',\n 'T_μν componentDim',\n node.rhs.componentDim,\n DIM_T_MUV,\n `(should be [M·L⁻¹·T⁻²] / energy density so that (8πG/c⁴)·T_μν ~ [L⁻²]; ` +\n `per-component dim of every EFE term must reduce to [L⁻²]).`,\n );\n\n // ── Predicate 3: symmetry agreement ───────────────────────────────────────\n validateTensorSymmetry(\n 'EinsteinFieldEquationNode',\n 'T_μν',\n node.rhs.symmetry,\n 'symmetric',\n `Both sides of the EFE are symmetric in (μ,ν).`,\n );\n\n // All predicates passed — return the equation's rank-2 lower-lower identity.\n const freeIndices = new Map<string, { upper: number; lower: number }>();\n freeIndices.set(lhsMu, { upper: 0, lower: 1 });\n freeIndices.set(lhsNu, { upper: 0, lower: 1 });\n\n return { dim: DIM_L_INV2, freeIndices };\n}\n"]}
|
|
@@ -8,7 +8,9 @@
|
|
|
8
8
|
import { Dimension } from './types.js';
|
|
9
9
|
/** Base class for all UPT-source errors. */
|
|
10
10
|
export declare class UPTError extends Error {
|
|
11
|
-
constructor(message: string
|
|
11
|
+
constructor(message: string, options?: {
|
|
12
|
+
readonly cause?: unknown;
|
|
13
|
+
});
|
|
12
14
|
}
|
|
13
15
|
/**
|
|
14
16
|
* Thrown by add/sub and equation-level checks when dimensions disagree.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/dimensional/errors.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAEvC,4CAA4C;AAC5C,qBAAa,QAAS,SAAQ,KAAK;IACjC,YAAY,OAAO,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/dimensional/errors.ts"],"names":[],"mappings":"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"}
|
|
@@ -7,8 +7,8 @@
|
|
|
7
7
|
*/
|
|
8
8
|
/** Base class for all UPT-source errors. */
|
|
9
9
|
export class UPTError extends Error {
|
|
10
|
-
constructor(message) {
|
|
11
|
-
super(message);
|
|
10
|
+
constructor(message, options) {
|
|
11
|
+
super(message, options);
|
|
12
12
|
this.name = 'UPTError';
|
|
13
13
|
// Restore prototype chain (needed for instanceof after ES5 transpilation).
|
|
14
14
|
Object.setPrototypeOf(this, UPTError.prototype);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/dimensional/errors.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/dimensional/errors.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * UPT error hierarchy. All UPT-source errors subclass UPTError so\n * downstream consumers (mathjs, threejs, TensorJS) can discriminate\n * with `err instanceof UPTError`.\n *\n * @module dimensional/errors\n */\n\nimport { Dimension } from './types.js';\n\n/** Base class for all UPT-source errors. */\nexport class UPTError extends Error {\n constructor(message: string, options?: { readonly cause?: unknown }) {\n super(message, options);\n this.name = 'UPTError';\n // Restore prototype chain (needed for instanceof after ES5 transpilation).\n Object.setPrototypeOf(this, UPTError.prototype);\n }\n}\n\n/**\n * Thrown by add/sub and equation-level checks when dimensions disagree.\n * (Moved from src/dimensional/algebra.ts as part of the v0.2.0 UPTError\n * refactor. Behavior unchanged.)\n */\nexport class DimensionMismatchError extends UPTError {\n public readonly expected: Dimension;\n public readonly actual: Dimension;\n constructor(message: string, expected: Dimension, actual: Dimension) {\n super(message);\n this.name = 'DimensionMismatchError';\n this.expected = expected;\n this.actual = actual;\n Object.setPrototypeOf(this, DimensionMismatchError.prototype);\n }\n}\n\n/**\n * Thrown when a tensor-symbol's indices list contains the same label\n * more than once (e.g., T^μ_μ_μ). Per Part-VII §VII.4.\n *\n * NOTE: this error fires on DECLARATION-TIME duplicates within a single\n * tensor-symbol's indices list. Those indices are *free*, not \"dummy\"\n * (a dummy index in tensor calculus is one that is summed over). The\n * earlier name `RepeatedDummyLabelError` was a misnomer; that deprecated\n * alias was removed in v0.4.5.\n */\nexport class DuplicateIndexLabelError extends UPTError {\n public readonly tensorName: string;\n public readonly label: string;\n constructor(tensorName: string, label: string) {\n super(\n `Tensor '${tensorName}' has repeated index label '${label}'. ` +\n `A label may appear at most twice (once upper, once lower) within ` +\n `a single tensor-symbol's indices list.`,\n );\n this.name = 'DuplicateIndexLabelError';\n this.tensorName = tensorName;\n this.label = label;\n Object.setPrototypeOf(this, DuplicateIndexLabelError.prototype);\n }\n}\n\n/**\n * Thrown when an index label appears more than twice across a\n * tensor-product's operands. Einstein contraction requires exactly two\n * occurrences (one upper + one lower) per dummy label. Per Part-VII §VII.4.\n */\nexport class IndexLabelCollisionError extends UPTError {\n public readonly label: string;\n public readonly totalCount: number;\n /**\n * Tensor names that contributed occurrences of the colliding label,\n * if the caller has them available. May be undefined for callers that\n * don't track per-operand provenance.\n */\n public readonly sources?: ReadonlyArray<string>;\n constructor(\n label: string,\n totalCount: number,\n sources?: ReadonlyArray<string>,\n ) {\n const sourceClause =\n sources && sources.length > 0\n ? ` (sources: ${sources.join(', ')})`\n : '';\n super(\n `Index label '${label}' appears ${totalCount} times across the ` +\n `tensor-product operands${sourceClause} (max allowed: 2 for Einstein ` +\n `contraction). Rename one of the offending indices.`,\n );\n this.name = 'IndexLabelCollisionError';\n this.label = label;\n this.totalCount = totalCount;\n this.sources = sources;\n Object.setPrototypeOf(this, IndexLabelCollisionError.prototype);\n }\n}\n\n/**\n * Thrown when an index label appears twice in a tensor-product but both\n * occurrences share the same variance (both upper or both lower). v0.2.0\n * has no metric tensor available to raise/lower indices, so such a\n * contraction is rejected at validation time. Per Part-VII §VII.4.\n */\nexport class VarianceMismatchError extends UPTError {\n public readonly label: string;\n public readonly variance: 'upper' | 'lower';\n constructor(label: string, variance: 'upper' | 'lower') {\n super(\n `Index label '${label}' appears twice but both with variance '${variance}'. ` +\n `Einstein contraction requires one upper and one lower. ` +\n `If this is intentional, use raise(operand, gInverse, '${label}') or ` +\n `lower(operand, g, '${label}') to traverse variance via the metric ` +\n `before contracting.`,\n );\n this.name = 'VarianceMismatchError';\n this.label = label;\n this.variance = variance;\n Object.setPrototypeOf(this, VarianceMismatchError.prototype);\n }\n}\n\n/**\n * Thrown by `op '*'` / `'/'` / `'^'` when an operand carries non-empty\n * freeIndices. Scalar operators in v0.2.0 are strict: any tensor-valued\n * operand must instead pass through `tensor-product`. Per Part-VII §VII.5\n * (op-tensor boundary rules).\n */\nexport class TensorInScalarOpError extends UPTError {\n public readonly op: string;\n constructor(op: string) {\n super(\n `Operator '${op}' is scalar-only; received a tensor argument with ` +\n `non-empty freeIndices. Use 'tensor-product' for tensor multiplication.`,\n );\n this.name = 'TensorInScalarOpError';\n this.op = op;\n Object.setPrototypeOf(this, TensorInScalarOpError.prototype);\n }\n}\n\n/**\n * Thrown by `op '+'` / `'-'` when the operand freeIndices maps differ.\n * Addition / subtraction across tensors requires identical free-index\n * signatures (same labels, same per-label upper/lower counts). Per\n * Part-VII §VII.5.\n */\nexport class FreeIndexMismatchError extends UPTError {\n constructor(message: string) {\n super(message);\n this.name = 'FreeIndexMismatchError';\n Object.setPrototypeOf(this, FreeIndexMismatchError.prototype);\n }\n}\n\n/**\n * Thrown by the validator's tensor-product child resolver when a non-tensor\n * operand to a `tensor-product` fails dimension inference. Subclassing\n * UPTError (rather than throwing a plain `Error`) preserves the §14.7\n * forward-compat invariant that downstream consumers can discriminate\n * UPT-source errors with `err instanceof UPTError`.\n */\nexport class TensorProductChildInferenceError extends UPTError {\n constructor(message: string) {\n super(message);\n this.name = 'TensorProductChildInferenceError';\n Object.setPrototypeOf(this, TensorProductChildInferenceError.prototype);\n }\n}\n\n/**\n * Thrown when a `metric-tensor` node has rank other than 2. Per\n * Part-VIII §VIII.2 (metric-tensor-rank-2-only TENSOR-RULE). The metric\n * is fundamentally a rank-2 object in v0.3.0; higher-rank generalizations\n * are out of scope.\n */\nexport class InvalidMetricRankError extends UPTError {\n public readonly tensorName: string;\n public readonly actualRank: number;\n constructor(tensorName: string, actualRank: number) {\n super(\n `Metric tensor '${tensorName}' has rank ${actualRank}, but a ` +\n `metric must be rank-2 (exactly two indices). Per Part-VIII §VIII.2.`,\n );\n this.name = 'InvalidMetricRankError';\n this.tensorName = tensorName;\n this.actualRank = actualRank;\n Object.setPrototypeOf(this, InvalidMetricRankError.prototype);\n }\n}\n\n/**\n * Thrown when a `metric-tensor` has mixed-variance indices, an empty\n * signature, an invalid signature string, or other structural problem\n * orthogonal to rank. Per Part-VIII §VIII.2 and §VIII.5 (raise/lower\n * variance requirements).\n */\nexport class MetricSignatureError extends UPTError {\n public readonly tensorName: string;\n public readonly reason: string;\n constructor(tensorName: string, reason: string) {\n super(\n `Metric tensor '${tensorName}': ${reason}. Per Part-VIII §VIII.2.`,\n );\n this.name = 'MetricSignatureError';\n this.tensorName = tensorName;\n this.reason = reason;\n Object.setPrototypeOf(this, MetricSignatureError.prototype);\n }\n}\n\n/**\n * Thrown when a `kronecker-delta` node has rank other than 2.\n * Per Part-VIII §VIII.3.\n */\nexport class InvalidKroneckerRankError extends UPTError {\n public readonly actualRank: number;\n constructor(actualRank: number) {\n super(\n `Kronecker delta has rank ${actualRank}, but must be rank-2 ` +\n `(exactly one upper + one lower index). Per Part-VIII §VIII.3.`,\n );\n this.name = 'InvalidKroneckerRankError';\n this.actualRank = actualRank;\n Object.setPrototypeOf(this, InvalidKroneckerRankError.prototype);\n }\n}\n\n/**\n * Thrown when a `kronecker-delta`'s two indices share the same variance\n * (both upper or both lower). Per Part-VIII §VIII.3, the canonical\n * δ^μ_ν requires mixed variance.\n */\nexport class KroneckerVarianceError extends UPTError {\n public readonly bothVariance: 'upper' | 'lower';\n constructor(bothVariance: 'upper' | 'lower') {\n super(\n `Kronecker delta indices both have variance '${bothVariance}'; ` +\n `must be one upper + one lower (canonical δ^μ_ν form). ` +\n `Per Part-VIII §VIII.3.`,\n );\n this.name = 'KroneckerVarianceError';\n this.bothVariance = bothVariance;\n Object.setPrototypeOf(this, KroneckerVarianceError.prototype);\n }\n}\n\n/**\n * Thrown when a `tensor-partial-derivative` node's `wrtIndex.variance`\n * is `'upper'`. The differentiation operator ∂/∂x^μ is fundamentally\n * covariant (lower) regardless of the variance of the coordinate. Per\n * Part-VIII §VIII.4 (pderiv-wrtIndex-always-lower TENSOR-RULE).\n */\nexport class PartialDerivativeIndexVarianceError extends UPTError {\n public readonly label: string;\n constructor(label: string) {\n super(\n `Partial-derivative index '${label}' has variance 'upper', but ` +\n `∂_μ is fundamentally covariant — wrtIndex.variance must always ` +\n `be 'lower'. Per Part-VIII §VIII.4.`,\n );\n this.name = 'PartialDerivativeIndexVarianceError';\n this.label = label;\n Object.setPrototypeOf(this, PartialDerivativeIndexVarianceError.prototype);\n }\n}\n\n/**\n * Emitted (not thrown) via `process.emitWarning` when a covariant-derivative's\n * `wrt` coordinate label collides with an existing free index of the operand\n * and the env var `UPT_ALLOW_COORD_SHADOW=1` has opted in to downgraded\n * handling. By default the collision throws `MetricSignatureError` (soundness\n * over friendliness — silent wrong results are the worst failure mode).\n *\n * Lives here (dimensional/errors.ts) rather than numerical/index.ts to avoid\n * a dimensional → numerical import cycle; re-exported from numerical/index.ts\n * for the public API surface per v0.4.0-Implementation-Plan Task 13.\n *\n * Uses `Object.setPrototypeOf` for correct `instanceof` after ES5 transpilation.\n *\n * @public\n */\nexport class DuplicateCoordinateWarning extends Error {\n constructor(coord: string, conflictingIndex: string) {\n super(\n `Covariant-derivative wrt='${coord}' collides with existing free index ` +\n `'${conflictingIndex}' of the operand; result will silently misbehave. ` +\n `Rename the operand's free index or pick a different wrt label.`,\n );\n this.name = 'DuplicateCoordinateWarning';\n Object.setPrototypeOf(this, DuplicateCoordinateWarning.prototype);\n }\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"exact-scale.js","sourceRoot":"","sources":["../../src/dimensional/exact-scale.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"exact-scale.js","sourceRoot":"","sources":["../../src/dimensional/exact-scale.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Exact unit scales.\n *\n * A unit's scale to SI is a rational number times one floating factor that\n * holds its irrational part (π for an angle, ln 2 for a bit). Prefixes,\n * products, quotients and integer powers multiply the rationals exactly, so\n * `g/cm^3` is 1000 and `72 mN/m` is 0.072 with no float noise to round away.\n * The one rounding is {@link scaleToNumber}, which rounds the rational\n * correctly and then multiplies by the irrational factor once.\n *\n * A decimal literal is read digit for digit. A JavaScript number is read\n * through its shortest round-trip decimal (`String(x)`), which is the\n * literal a constant was written with.\n *\n * @module dimensional/exact-scale\n * @internal\n */\n\n/** `num / den × irrational`, with `den > 0` and the fraction in lowest terms. @internal */\nexport interface ExactScale {\n readonly num: bigint;\n readonly den: bigint;\n /** The factor no rational states (π, ln 2). 1 for a rational scale. */\n readonly irrational: number;\n}\n\nfunction gcd(a: bigint, b: bigint): bigint {\n let x = a < 0n ? -a : a;\n let y = b < 0n ? -b : b;\n while (y !== 0n) [x, y] = [y, x % y];\n return x;\n}\n\nfunction make(num: bigint, den: bigint, irrational: number): ExactScale {\n if (den === 0n) throw new RangeError('exact scale: zero denominator');\n if (den < 0n) {\n num = -num;\n den = -den;\n }\n const g = gcd(num, den);\n return g > 1n ? { num: num / g, den: den / g, irrational } : { num, den, irrational };\n}\n\n/** The scale 1. @internal */\nexport const UNIT_SCALE: ExactScale = { num: 1n, den: 1n, irrational: 1 };\n\nconst DECIMAL = /^([+-]?)(\\d*)(?:\\.(\\d*))?(?:[eE]([+-]?\\d+))?$/;\n\n/**\n * The exact value of a decimal literal (`72`, `0.45359237`, `1.602176634e-19`),\n * or null when `text` is not one.\n * @internal\n */\nexport function decimalScale(text: string): ExactScale | null {\n const m = DECIMAL.exec(text.trim());\n if (m === null) return null;\n const whole = m[2] ?? '';\n const fraction = m[3] ?? '';\n if (whole === '' && fraction === '') return null;\n const exponent = Number(m[4] ?? '0') - fraction.length;\n if (!Number.isSafeInteger(exponent) || Math.abs(exponent) > 10_000) return null;\n let num = BigInt(whole + fraction);\n if (m[1] === '-') num = -num;\n return exponent >= 0 ? make(num * 10n ** BigInt(exponent), 1n, 1) : make(num, 10n ** BigInt(-exponent), 1);\n}\n\n/** The exact scale a finite JavaScript number was written as. @internal */\nexport function scaleOf(x: number): ExactScale {\n if (!Number.isFinite(x)) throw new RangeError(`exact scale: ${x} is not finite`);\n return decimalScale(String(x))!;\n}\n\n/** `num / den`, exactly. @internal */\nexport function ratioScale(num: number | bigint, den: number | bigint): ExactScale {\n return make(BigInt(num), BigInt(den), 1);\n}\n\n/** A factor no rational states, such as π or ln 2. @internal */\nexport function irrationalScale(x: number): ExactScale {\n if (!Number.isFinite(x)) throw new RangeError(`exact scale: ${x} is not finite`);\n return { num: 1n, den: 1n, irrational: x };\n}\n\n/** `a × b × …`. @internal */\nexport function multiplyScales(...factors: readonly ExactScale[]): ExactScale {\n let num = 1n;\n let den = 1n;\n let irrational = 1;\n for (const f of factors) {\n num *= f.num;\n den *= f.den;\n irrational *= f.irrational;\n }\n return make(num, den, irrational);\n}\n\n/** `a / b`. @internal */\nexport function divideScales(a: ExactScale, b: ExactScale): ExactScale {\n if (b.num === 0n) throw new RangeError('exact scale: division by zero');\n return make(a.num * b.den, a.den * b.num, a.irrational / b.irrational);\n}\n\n/**\n * `a ^ n`. An integer power stays exact. A fractional power has no exact\n * rational in general, so it becomes one floating factor.\n * @internal\n */\nexport function powerScale(a: ExactScale, n: number): ExactScale {\n if (Number.isInteger(n)) {\n const k = BigInt(Math.abs(n));\n const up = make(a.num ** k, a.den ** k, a.irrational ** Math.abs(n));\n return n >= 0 ? up : divideScales(UNIT_SCALE, up);\n }\n return irrationalScale(scaleToNumber(a) ** n);\n}\n\n/** `a + b`: exact when both are rational multiples of the same irrational factor. @internal */\nexport function addScales(a: ExactScale, b: ExactScale): ExactScale {\n if (a.irrational === b.irrational) return make(a.num * b.den + b.num * a.den, a.den * b.den, a.irrational);\n return irrationalScale(scaleToNumber(a) + scaleToNumber(b));\n}\n\n/** The fewest significant digits kept before the sticky digit; far beyond a double's 17. */\nconst MIN_DIGITS = 40;\n\n/** Decimal places of `1 / den` when it terminates (`den` = 2^a·5^b): max(a, b). Null otherwise. */\nfunction terminatingPlaces(den: bigint): number | null {\n let d = den;\n let twos = 0;\n let fives = 0;\n while (d % 2n === 0n) {\n d /= 2n;\n twos++;\n }\n while (d % 5n === 0n) {\n d /= 5n;\n fives++;\n }\n return d === 1n ? Math.max(twos, fives) : null;\n}\n\n/**\n * The rational `num / den` (`den > 0`), reduced, rounded once to the nearest double.\n *\n * A terminating quotient (`den` = 2^a·5^b) is written out exactly, every digit,\n * and parsed: a tie between two doubles is a dyadic rational, so it always\n * lands here and rounds half to even. Any other quotient is not a tie, and it\n * is at least `1 / (den·2^54)` of its magnitude away from every tie; truncating\n * it to `max(40, digits(den) + 20)` significant digits stays closer than that,\n * and a sticky `1` puts the string strictly inside the truncation interval, so\n * the string rounds the way the quotient does for any denominator.\n */\nfunction rationalToNumber(num: bigint, den: bigint): number {\n if (num === 0n) return 0;\n const negative = num < 0n;\n const g = gcd(num, den);\n const a = (negative ? -num : num) / g;\n den /= g;\n const places = terminatingPlaces(den);\n if (places !== null) {\n const value = Number(`${(a * 10n ** BigInt(places)) / den}e-${places}`);\n return negative ? -value : value;\n }\n const digits = Math.max(MIN_DIGITS, den.toString().length + 20);\n const shift = digits - (a.toString().length - den.toString().length);\n let q: bigint;\n if (shift >= 0) {\n q = (a * 10n ** BigInt(shift)) / den;\n } else {\n q = a / (den * 10n ** BigInt(-shift));\n }\n // Not terminating, so the remainder is never zero: the sticky digit is always due.\n const value = Number(`${q.toString()}1e${-(shift + 1)}`);\n return negative ? -value : value;\n}\n\n/** The scale as a double: the rational rounded once, times the irrational factor. @internal */\nexport function scaleToNumber(s: ExactScale): number {\n const rational = rationalToNumber(s.num, s.den);\n return s.irrational === 1 ? rational : rational * s.irrational;\n}\n\nconst FACTOR = /^([^*/^\\s]+)(?:\\^([+-]?\\d+))?$/;\n\n/**\n * The two sides of a unit text or a scale expression under the single-solidus\n * convention of ISO 80000-1: everything after the first `/` is the\n * denominator, so a chain is one denominator (`km/s/Mpc` is km/(s·Mpc), and\n * `W/m*K` is W/(m·K), not (W/m)·K). The denominator comes back as one\n * `*`-joined product, each `/`-part's outer parentheses dropped. `units.ts`\n * and {@link readScaleExpression} both split here, so a unit text and a scale\n * expression in `data/units.json` read a `/` the same way.\n * @internal\n */\nexport function solidusSides(text: string): { readonly numerator: string; readonly denominator: string } {\n const parts = text.split('/');\n return {\n numerator: parts[0]!,\n denominator: parts\n .slice(1)\n .map((part) => part.replace(/^\\((.*)\\)$/, '$1'))\n .join('*'),\n };\n}\n\n/**\n * The exact value of a scale expression, the form `data/units.json` stores:\n * factors joined by `*`, then optionally `/` and the denominator's factors,\n * each a decimal literal or a name with an optional integer power\n * (`4.1868*453.59237/1.8`, `pi/180`, `lbf/inch^2`). A `/` follows the unit\n * grammar ({@link solidusSides}): `a/b*c` is a/(b·c). `resolve` gives a name\n * its scale and returns undefined for a name it does not know, which throws\n * here. A decimal literal is read digit for digit, so the result is the\n * rational the text states.\n * @internal\n */\nexport function readScaleExpression(text: string, resolve: (name: string) => ExactScale | undefined): ExactScale {\n const product = (side: string): ExactScale => {\n let scale = UNIT_SCALE;\n for (const part of side.split('*')) {\n const m = FACTOR.exec(part);\n if (m === null) throw new RangeError(`exact scale: '${text}' is not a product of factors`);\n const atom = m[1]!;\n const base = decimalScale(atom) ?? resolve(atom);\n if (base === undefined) throw new RangeError(`exact scale: '${text}' names '${atom}', which is not a known scale`);\n scale = multiplyScales(scale, m[2] === undefined ? base : powerScale(base, Number(m[2])));\n }\n return scale;\n };\n const trimmed = text.trim();\n const { numerator, denominator } = solidusSides(trimmed);\n const top = product(numerator);\n return trimmed.includes('/') ? divideScales(top, product(denominator)) : top;\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"field-equation-helpers.js","sourceRoot":"","sources":["../../src/dimensional/field-equation-helpers.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAIH,8EAA8E;AAC9E,wCAAwC;AACxC,8EAA8E;AAE9E;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,UAAU,2BAA2B,CACzC,YAAoB,EACpB,OAAe,EACf,SAAgC,EAChC,OAAe,EACf,SAAgC;IAEhC,IAAI,SAAS,CAAC,MAAM,KAAK,SAAS,CAAC,MAAM,EAAE,CAAC;QAC1C,MAAM,IAAI,KAAK,CACb,GAAG,YAAY,qCAAqC,OAAO,OAAO;YAClE,GAAG,SAAS,CAAC,MAAM,kBAAkB,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY;YACrE,GAAG,OAAO,QAAQ,SAAS,CAAC,MAAM,KAAK,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK;YAChE,sCAAsC,CACvC,CAAC;IACJ,CAAC;IACD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QAC1C,IAAI,SAAS,CAAC,CAAC,CAAC,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC;YAClC,MAAM,IAAI,KAAK,CACb,GAAG,YAAY,gCAAgC,OAAO,YAAY;gBAClE,YAAY,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,OAAO,OAAO;gBAC3D,IAAI,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,0CAA0C;gBAClE,sCAAsC,CACvC,CAAC;QACJ,CAAC;IACH,CAAC;AACH,CAAC;AAED,8EAA8E;AAC9E,gDAAgD;AAChD,8EAA8E;AAE9E;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,UAAU,0BAA0B,CACxC,YAAoB,EACpB,UAAkB,EAClB,MAAiB,EACjB,QAAmB,EACnB,WAAoB;IAEpB,IACE,MAAM,CAAC,CAAC,KAAK,QAAQ,CAAC,CAAC;QACvB,MAAM,CAAC,CAAC,KAAK,QAAQ,CAAC,CAAC;QACvB,MAAM,CAAC,CAAC,KAAK,QAAQ,CAAC,CAAC;QACvB,MAAM,CAAC,CAAC,KAAK,QAAQ,CAAC,CAAC;QACvB,MAAM,CAAC,KAAK,KAAK,QAAQ,CAAC,KAAK;QAC/B,MAAM,CAAC,CAAC,KAAK,QAAQ,CAAC,CAAC;QACvB,MAAM,CAAC,CAAC,KAAK,QAAQ,CAAC,CAAC,EACvB,CAAC;QACD,MAAM,IAAI,GAAG,WAAW,CAAC,CAAC,CAAC,IAAI,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAClD,MAAM,IAAI,KAAK,CACb,GAAG,YAAY,0BAA0B,UAAU,WAAW;YAC9D,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,YAAY,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,IAAI,EAAE,CACxE,CAAC;IACJ,CAAC;AACH,CAAC;AAED,8EAA8E;AAC9E,uCAAuC;AACvC,8EAA8E;AAE9E;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,sBAAsB,CACpC,YAAoB,EACpB,UAAkB,EAClB,MAAc,EACd,QAAgB,EAChB,WAAoB;IAEpB,IAAI,MAAM,KAAK,QAAQ,EAAE,CAAC;QACxB,MAAM,IAAI,GAAG,WAAW,CAAC,CAAC,CAAC,IAAI,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAClD,MAAM,IAAI,KAAK,CACb,GAAG,YAAY,yBAAyB,UAAU,aAAa;YAC/D,cAAc,QAAQ,WAAW,MAAM,MAAM,IAAI,EAAE,CACpD,CAAC;IACJ,CAAC;AACH,CAAC"}
|
|
1
|
+
{"version":3,"file":"field-equation-helpers.js","sourceRoot":"","sources":["../../src/dimensional/field-equation-helpers.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAIH,8EAA8E;AAC9E,wCAAwC;AACxC,8EAA8E;AAE9E;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,UAAU,2BAA2B,CACzC,YAAoB,EACpB,OAAe,EACf,SAAgC,EAChC,OAAe,EACf,SAAgC;IAEhC,IAAI,SAAS,CAAC,MAAM,KAAK,SAAS,CAAC,MAAM,EAAE,CAAC;QAC1C,MAAM,IAAI,KAAK,CACb,GAAG,YAAY,qCAAqC,OAAO,OAAO;YAClE,GAAG,SAAS,CAAC,MAAM,kBAAkB,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY;YACrE,GAAG,OAAO,QAAQ,SAAS,CAAC,MAAM,KAAK,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK;YAChE,sCAAsC,CACvC,CAAC;IACJ,CAAC;IACD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QAC1C,IAAI,SAAS,CAAC,CAAC,CAAC,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC;YAClC,MAAM,IAAI,KAAK,CACb,GAAG,YAAY,gCAAgC,OAAO,YAAY;gBAClE,YAAY,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,OAAO,OAAO;gBAC3D,IAAI,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,0CAA0C;gBAClE,sCAAsC,CACvC,CAAC;QACJ,CAAC;IACH,CAAC;AACH,CAAC;AAED,8EAA8E;AAC9E,gDAAgD;AAChD,8EAA8E;AAE9E;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,UAAU,0BAA0B,CACxC,YAAoB,EACpB,UAAkB,EAClB,MAAiB,EACjB,QAAmB,EACnB,WAAoB;IAEpB,IACE,MAAM,CAAC,CAAC,KAAK,QAAQ,CAAC,CAAC;QACvB,MAAM,CAAC,CAAC,KAAK,QAAQ,CAAC,CAAC;QACvB,MAAM,CAAC,CAAC,KAAK,QAAQ,CAAC,CAAC;QACvB,MAAM,CAAC,CAAC,KAAK,QAAQ,CAAC,CAAC;QACvB,MAAM,CAAC,KAAK,KAAK,QAAQ,CAAC,KAAK;QAC/B,MAAM,CAAC,CAAC,KAAK,QAAQ,CAAC,CAAC;QACvB,MAAM,CAAC,CAAC,KAAK,QAAQ,CAAC,CAAC,EACvB,CAAC;QACD,MAAM,IAAI,GAAG,WAAW,CAAC,CAAC,CAAC,IAAI,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAClD,MAAM,IAAI,KAAK,CACb,GAAG,YAAY,0BAA0B,UAAU,WAAW;YAC9D,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,YAAY,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,IAAI,EAAE,CACxE,CAAC;IACJ,CAAC;AACH,CAAC;AAED,8EAA8E;AAC9E,uCAAuC;AACvC,8EAA8E;AAE9E;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,sBAAsB,CACpC,YAAoB,EACpB,UAAkB,EAClB,MAAc,EACd,QAAgB,EAChB,WAAoB;IAEpB,IAAI,MAAM,KAAK,QAAQ,EAAE,CAAC;QACxB,MAAM,IAAI,GAAG,WAAW,CAAC,CAAC,CAAC,IAAI,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAClD,MAAM,IAAI,KAAK,CACb,GAAG,YAAY,yBAAyB,UAAU,aAAa;YAC/D,cAAc,QAAQ,WAAW,MAAM,MAAM,IAAI,EAAE,CACpD,CAAC;IACJ,CAAC;AACH,CAAC","sourcesContent":["/**\n * Shared validation helpers for field-equation predicate AST nodes\n * (`EinsteinFieldEquationNode`, and future `MaxwellEquationNode`,\n * `KleinGordonEquationNode`, etc.).\n *\n * Per `docs/architecture/archive/v0.7-tensor-equation-node-design-note.md`\n * Phase 0 — extract the 3 invariant checks from\n * `validateEinsteinFieldEquation` so future field equations get\n * them for free, instead of copy-pasting the predicate bodies.\n * Investment-upfront pattern: same shape as v0.6.1's\n * validator-registry refactor.\n *\n * Three helpers, all behavior-preserving extractions:\n *\n * - `validateFreeIndexLabelMatch` — checks lhs and rhs carry\n * the same free-index labels in the same order. Generic over\n * rank (works for rank-1 Maxwell `∇_μ F^{μν}`, rank-2 EFE,\n * etc.).\n *\n * - `validateComponentDimension` — checks a tensor's\n * `componentDim` matches an expected `Dimension`. Generic\n * over which tensor and what equation context.\n *\n * - `validateTensorSymmetry` — checks a tensor's `symmetry`\n * field equals an expected value. Generic over tensor +\n * equation context.\n *\n * @module dimensional/field-equation-helpers\n */\n\nimport type { Dimension } from './types.js';\n\n// ---------------------------------------------------------------------------\n// Helper 1 — Free-index label agreement\n// ---------------------------------------------------------------------------\n\n/**\n * Assert that the LHS and RHS of a field-equation predicate carry\n * the same free-index labels in the same order.\n *\n * Throws `Error` with `\"index label\"` in the message (matches the\n * existing `validateEinsteinFieldEquation` error prose, so any\n * test pattern-matching that string stays green).\n *\n * @param equationKind - Discriminator for the error message\n * (e.g., `'EinsteinFieldEquationNode'`, `'MaxwellEquationNode'`).\n * @param lhsName - Human label for the LHS in the error (e.g., `'G_μν'`).\n * @param lhsLabels - Free-index labels from the LHS, in axis order.\n * @param rhsName - Human label for the RHS (e.g., `'T_μν'`).\n * @param rhsLabels - Free-index labels from the RHS, in axis order.\n *\n * @internal\n */\nexport function validateFreeIndexLabelMatch(\n equationKind: string,\n lhsName: string,\n lhsLabels: ReadonlyArray<string>,\n rhsName: string,\n rhsLabels: ReadonlyArray<string>,\n): void {\n if (lhsLabels.length !== rhsLabels.length) {\n throw new Error(\n `${equationKind}: index label rank mismatch — LHS ${lhsName} has ` +\n `${lhsLabels.length} free indices (${lhsLabels.join(', ')}) but RHS ` +\n `${rhsName} has ${rhsLabels.length} (${rhsLabels.join(', ')}). ` +\n `Both sides must carry the same rank.`,\n );\n }\n for (let i = 0; i < lhsLabels.length; i++) {\n if (lhsLabels[i] !== rhsLabels[i]) {\n throw new Error(\n `${equationKind}: index label mismatch — LHS ${lhsName} has free ` +\n `indices (${lhsLabels.join(', ')}) but RHS ${rhsName} has ` +\n `(${rhsLabels.join(', ')}). Both sides must carry the same lower ` +\n `index labels in the same axis order.`,\n );\n }\n }\n}\n\n// ---------------------------------------------------------------------------\n// Helper 2 — Per-component dimensional equality\n// ---------------------------------------------------------------------------\n\n/**\n * Assert that an `actual: Dimension` equals an `expected: Dimension`\n * across all seven base SI axes (L, M, T, I, Theta, N, J).\n *\n * Throws `Error` with `\"dimension\"` in the message (matches the\n * existing error prose convention).\n *\n * @param equationKind - Discriminator (e.g., `'EinsteinFieldEquationNode'`).\n * @param tensorName - Human label for the tensor being checked\n * (e.g., `'T_μν componentDim'`).\n * @param actual - The actual `Dimension` from the AST node.\n * @param expected - The expected `Dimension`.\n * @param explanation - Optional trailing message explaining why\n * this dimension is required (e.g., `\"so that (8πG/c⁴)·T_μν ~ [L⁻²]\"`).\n *\n * @internal\n */\nexport function validateComponentDimension(\n equationKind: string,\n tensorName: string,\n actual: Dimension,\n expected: Dimension,\n explanation?: string,\n): void {\n if (\n actual.L !== expected.L ||\n actual.M !== expected.M ||\n actual.T !== expected.T ||\n actual.I !== expected.I ||\n actual.Theta !== expected.Theta ||\n actual.N !== expected.N ||\n actual.J !== expected.J\n ) {\n const tail = explanation ? ` ${explanation}` : '';\n throw new Error(\n `${equationKind}: dimension mismatch — ${tensorName} must be ` +\n `${JSON.stringify(expected)} but got ${JSON.stringify(actual)}.${tail}`,\n );\n }\n}\n\n// ---------------------------------------------------------------------------\n// Helper 3 — Tensor symmetry agreement\n// ---------------------------------------------------------------------------\n\n/**\n * Assert that a tensor's `symmetry` field equals `expected`.\n *\n * Throws `Error` with `\"symmetry\"` in the message.\n *\n * @param equationKind - Discriminator (e.g., `'EinsteinFieldEquationNode'`).\n * @param tensorName - Human label (e.g., `'T_μν'`).\n * @param actual - The tensor's actual `symmetry` value.\n * @param expected - The required `symmetry` value (e.g., `'symmetric'`).\n * @param explanation - Optional trailing message (e.g., `\"Both sides of\n * the EFE are symmetric in (μ,ν)\"`).\n *\n * @internal\n */\nexport function validateTensorSymmetry(\n equationKind: string,\n tensorName: string,\n actual: string,\n expected: string,\n explanation?: string,\n): void {\n if (actual !== expected) {\n const tail = explanation ? ` ${explanation}` : '';\n throw new Error(\n `${equationKind}: symmetry mismatch — ${tensorName} must have ` +\n `symmetry: '${expected}' (got '${actual}').${tail}`,\n );\n }\n}\n"]}
|
|
@@ -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';
|