universal-physics-tensor 9.0.0 → 11.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 +21 -17
- package/bin/upt.mjs +13 -1
- package/data/atlas/atlas.json +79 -68
- package/data/atlas/atlas.jsonld +1 -1
- package/data/atlas/diffusion.json +24 -23
- package/data/atlas/oscillators.json +21 -16
- package/data/atlas/waves.json +36 -31
- package/data/atlas/witness-results.json +11 -11
- package/data/bridge-catalog.json +1192 -1636
- package/data/bridge-catalog.schema.json +390 -135
- 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 +35 -18
- 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 +12 -3
- package/dist/atlas/benchmark/hybrid-retrieval.d.ts.map +1 -1
- package/dist/atlas/benchmark/hybrid-retrieval.js +30 -21
- 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 +2 -2
- 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 +3 -3
- package/dist/atlas/benchmark/stats.d.ts.map +1 -1
- package/dist/atlas/benchmark/stats.js +16 -8
- 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.d.ts +26 -3
- package/dist/atlas/catalog-formal-ref.d.ts.map +1 -1
- package/dist/atlas/catalog-formal-ref.js +52 -5
- 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 +12 -24
- 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 +0 -4
- package/dist/atlas/diffusion/bridges-closure.d.ts.map +1 -1
- package/dist/atlas/diffusion/bridges-closure.js +8 -17
- 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 +27 -42
- package/dist/atlas/diffusion/bridges.js.map +1 -1
- package/dist/atlas/diffusion/dimensions.d.ts +6 -14
- package/dist/atlas/diffusion/dimensions.d.ts.map +1 -1
- package/dist/atlas/diffusion/dimensions.js +8 -16
- 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.d.ts +3 -3
- package/dist/atlas/diffusion/models.d.ts.map +1 -1
- package/dist/atlas/diffusion/models.js +5 -10
- package/dist/atlas/diffusion/models.js.map +1 -1
- package/dist/atlas/diffusion/numerics.d.ts +16 -4
- package/dist/atlas/diffusion/numerics.d.ts.map +1 -1
- package/dist/atlas/diffusion/numerics.js +38 -24
- 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 +107 -4
- package/dist/atlas/link-prediction.d.ts.map +1 -1
- package/dist/atlas/link-prediction.js +212 -66
- 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 +7 -12
- 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 +6 -10
- package/dist/atlas/oscillators/bridges-exact.js.map +1 -1
- package/dist/atlas/oscillators/bridges-limits.d.ts +3 -16
- package/dist/atlas/oscillators/bridges-limits.d.ts.map +1 -1
- package/dist/atlas/oscillators/bridges-limits.js +23 -36
- package/dist/atlas/oscillators/bridges-limits.js.map +1 -1
- package/dist/atlas/oscillators/dimensions.d.ts +9 -21
- package/dist/atlas/oscillators/dimensions.d.ts.map +1 -1
- package/dist/atlas/oscillators/dimensions.js +9 -21
- 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.d.ts +2 -2
- package/dist/atlas/oscillators/limit-witnesses.d.ts.map +1 -1
- package/dist/atlas/oscillators/limit-witnesses.js +17 -15
- package/dist/atlas/oscillators/limit-witnesses.js.map +1 -1
- package/dist/atlas/oscillators/models.d.ts.map +1 -1
- package/dist/atlas/oscillators/models.js +2 -6
- 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.d.ts +29 -6
- package/dist/atlas/oscillators/pendulum-motion.d.ts.map +1 -1
- package/dist/atlas/oscillators/pendulum-motion.js +60 -40
- 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.d.ts +0 -11
- package/dist/atlas/oscillators/phase-translation.d.ts.map +1 -1
- package/dist/atlas/oscillators/phase-translation.js +3 -4
- package/dist/atlas/oscillators/phase-translation.js.map +1 -1
- package/dist/atlas/oscillators/position-translation.d.ts +68 -7
- package/dist/atlas/oscillators/position-translation.d.ts.map +1 -1
- package/dist/atlas/oscillators/position-translation.js +123 -12
- package/dist/atlas/oscillators/position-translation.js.map +1 -1
- package/dist/atlas/oscillators/rejections.d.ts +0 -2
- package/dist/atlas/oscillators/rejections.d.ts.map +1 -1
- package/dist/atlas/oscillators/rejections.js +0 -7
- package/dist/atlas/oscillators/rejections.js.map +1 -1
- package/dist/atlas/path-bound.js.map +1 -1
- package/dist/atlas/physjs-entries.generated.d.ts +25 -24
- package/dist/atlas/physjs-entries.generated.d.ts.map +1 -1
- package/dist/atlas/physjs-entries.generated.js +25 -24
- package/dist/atlas/physjs-entries.generated.js.map +1 -1
- package/dist/atlas/physjs-ref.d.ts +107 -70
- package/dist/atlas/physjs-ref.d.ts.map +1 -1
- package/dist/atlas/physjs-ref.js +184 -101
- 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.d.ts +0 -19
- package/dist/atlas/poster/statements.d.ts.map +1 -1
- package/dist/atlas/poster/statements.js +1 -1
- package/dist/atlas/poster/statements.js.map +1 -1
- package/dist/atlas/proof-target.d.ts +1 -1
- package/dist/atlas/proof-target.js +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.d.ts +1 -1
- package/dist/atlas/regime.d.ts.map +1 -1
- package/dist/atlas/regime.js +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/text-overlap.d.ts +23 -0
- package/dist/atlas/text-overlap.d.ts.map +1 -0
- package/dist/atlas/text-overlap.js +41 -0
- package/dist/atlas/text-overlap.js.map +1 -0
- 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 +2 -9
- 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 +32 -52
- 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.d.ts +5 -6
- package/dist/atlas/waves/models.d.ts.map +1 -1
- package/dist/atlas/waves/models.js +7 -13
- package/dist/atlas/waves/models.js.map +1 -1
- package/dist/atlas/waves/numerics.d.ts.map +1 -1
- package/dist/atlas/waves/numerics.js +10 -3
- 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 +38 -4
- package/dist/atlas/witness-numeric.d.ts.map +1 -1
- package/dist/atlas/witness-numeric.js +80 -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.d.ts.map +1 -1
- package/dist/atlas/witness-specs.js +19 -0
- package/dist/atlas/witness-specs.js.map +1 -1
- package/dist/atlas/witness-symbolic.d.ts +75 -3
- package/dist/atlas/witness-symbolic.d.ts.map +1 -1
- package/dist/atlas/witness-symbolic.js +116 -10
- 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 +181 -13
- package/dist/bridges/catalog-load.js.map +1 -1
- package/dist/bridges/catalog-types.d.ts +74 -26
- package/dist/bridges/catalog-types.d.ts.map +1 -1
- package/dist/bridges/catalog-types.js +11 -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 +46 -3
- package/dist/bridges/evaluation-errors.d.ts.map +1 -1
- package/dist/bridges/evaluation-errors.js +40 -4
- package/dist/bridges/evaluation-errors.js.map +1 -1
- package/dist/bridges/evaluator-inputs.d.ts.map +1 -1
- package/dist/bridges/evaluator-inputs.js +7 -5
- 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 +76 -28
- package/dist/bridges/evaluators.js.map +1 -1
- package/dist/bridges/expr-parse.d.ts +38 -4
- package/dist/bridges/expr-parse.d.ts.map +1 -1
- package/dist/bridges/expr-parse.js +101 -12
- package/dist/bridges/expr-parse.js.map +1 -1
- package/dist/bridges/holds.d.ts +40 -4
- package/dist/bridges/holds.d.ts.map +1 -1
- package/dist/bridges/holds.js +128 -19
- 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.d.ts.map +1 -1
- package/dist/bridges/notices.js +5 -5
- 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 +6 -7
- package/dist/bridges/relation-eval.d.ts.map +1 -1
- package/dist/bridges/relation-eval.js +20 -50
- 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 +27 -13
- 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/bridges/validity.d.ts +33 -0
- package/dist/bridges/validity.d.ts.map +1 -0
- package/dist/bridges/validity.js +67 -0
- package/dist/bridges/validity.js.map +1 -0
- 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 +1 -3
- package/dist/canonical/entries/atomic.js.map +1 -1
- package/dist/canonical/entries/condensed-matter.d.ts.map +1 -1
- package/dist/canonical/entries/condensed-matter.js +8 -9
- package/dist/canonical/entries/condensed-matter.js.map +1 -1
- package/dist/canonical/entries/dimensional-classics.d.ts.map +1 -1
- package/dist/canonical/entries/dimensional-classics.js +5 -6
- package/dist/canonical/entries/dimensional-classics.js.map +1 -1
- package/dist/canonical/entries/electromagnetism.d.ts.map +1 -1
- package/dist/canonical/entries/electromagnetism.js +6 -12
- package/dist/canonical/entries/electromagnetism.js.map +1 -1
- package/dist/canonical/entries/fluids-waves.d.ts.map +1 -1
- package/dist/canonical/entries/fluids-waves.js +3 -7
- package/dist/canonical/entries/fluids-waves.js.map +1 -1
- package/dist/canonical/entries/mechanics.d.ts.map +1 -1
- package/dist/canonical/entries/mechanics.js +4 -6
- 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 +38 -39
- package/dist/canonical/entries/nonmonomial.js.map +1 -1
- package/dist/canonical/entries/relativity.d.ts.map +1 -1
- package/dist/canonical/entries/relativity.js +6 -6
- 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.d.ts.map +1 -1
- package/dist/canonical/entries/thermo-nuclear-cosmo.js +6 -10
- package/dist/canonical/entries/thermo-nuclear-cosmo.js.map +1 -1
- package/dist/canonical/fixed-points.d.ts +94 -0
- package/dist/canonical/fixed-points.d.ts.map +1 -0
- package/dist/canonical/fixed-points.js +81 -0
- package/dist/canonical/fixed-points.js.map +1 -0
- package/dist/canonical/linkage.d.ts +29 -4
- package/dist/canonical/linkage.d.ts.map +1 -1
- package/dist/canonical/linkage.js +47 -64
- 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 +22 -23
- 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 +42 -21
- package/dist/canonical/structural.d.ts.map +1 -1
- package/dist/canonical/structural.js +64 -23
- package/dist/canonical/structural.js.map +1 -1
- package/dist/cases/brownian-sphere.d.ts +3 -3
- package/dist/cases/brownian-sphere.d.ts.map +1 -1
- package/dist/cases/brownian-sphere.js +10 -9
- package/dist/cases/brownian-sphere.js.map +1 -1
- package/dist/cases/damped-resonator.d.ts.map +1 -1
- package/dist/cases/damped-resonator.js +8 -11
- package/dist/cases/damped-resonator.js.map +1 -1
- package/dist/cases/index.js.map +1 -1
- package/dist/cases/kepler-rv.d.ts +1 -1
- package/dist/cases/kepler-rv.d.ts.map +1 -1
- package/dist/cases/kepler-rv.js +3 -2
- package/dist/cases/kepler-rv.js.map +1 -1
- package/dist/cases/lumped-cooling.d.ts +8 -3
- package/dist/cases/lumped-cooling.d.ts.map +1 -1
- package/dist/cases/lumped-cooling.js +22 -24
- package/dist/cases/lumped-cooling.js.map +1 -1
- package/dist/cases/quadrature.d.ts +7 -9
- package/dist/cases/quadrature.d.ts.map +1 -1
- package/dist/cases/quadrature.js +28 -32
- package/dist/cases/quadrature.js.map +1 -1
- package/dist/cases/resistor-noise.js +7 -7
- package/dist/cases/resistor-noise.js.map +1 -1
- package/dist/cases/skin-depth.d.ts +0 -4
- package/dist/cases/skin-depth.d.ts.map +1 -1
- package/dist/cases/skin-depth.js +3 -7
- package/dist/cases/skin-depth.js.map +1 -1
- package/dist/cases/types.js.map +1 -1
- package/dist/cli/args.d.ts +30 -3
- package/dist/cli/args.d.ts.map +1 -1
- package/dist/cli/args.js +47 -9
- 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 +33 -0
- package/dist/cli/bindings.js.map +1 -0
- package/dist/cli/closed-form-range.js.map +1 -1
- package/dist/cli/command.d.ts +8 -1
- package/dist/cli/command.d.ts.map +1 -1
- package/dist/cli/command.js.map +1 -1
- package/dist/cli/commands/_atlas-map.d.ts +2 -11
- package/dist/cli/commands/_atlas-map.d.ts.map +1 -1
- package/dist/cli/commands/_atlas-map.js +50 -35
- package/dist/cli/commands/_atlas-map.js.map +1 -1
- package/dist/cli/commands/_atlas-route.d.ts.map +1 -1
- package/dist/cli/commands/_atlas-route.js +6 -2
- 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 +48 -14
- 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 +9 -8
- 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 +20 -20
- package/dist/cli/commands/audit.js.map +1 -1
- package/dist/cli/commands/axes.d.ts.map +1 -1
- package/dist/cli/commands/axes.js +20 -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 -20
- 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 +60 -35
- 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 +20 -10
- 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 +14 -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 +108 -58
- 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 +16 -8
- package/dist/cli/commands/explain.js.map +1 -1
- package/dist/cli/commands/frontier.js.map +1 -1
- package/dist/cli/commands/ground.d.ts.map +1 -1
- package/dist/cli/commands/ground.js +41 -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 +155 -92
- package/dist/cli/commands/map.js.map +1 -1
- package/dist/cli/commands/metric.d.ts.map +1 -1
- package/dist/cli/commands/metric.js +58 -20
- package/dist/cli/commands/metric.js.map +1 -1
- package/dist/cli/commands/path.d.ts +10 -0
- package/dist/cli/commands/path.d.ts.map +1 -1
- package/dist/cli/commands/path.js +29 -7
- 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 +105 -38
- package/dist/cli/commands/probe.js.map +1 -1
- package/dist/cli/commands/recover.js +1 -1
- package/dist/cli/commands/recover.js.map +1 -1
- package/dist/cli/commands/regime.d.ts +5 -4
- package/dist/cli/commands/regime.d.ts.map +1 -1
- package/dist/cli/commands/regime.js +25 -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 +23 -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 +9 -4
- package/dist/cli/commands/search.js.map +1 -1
- package/dist/cli/commands/symbolic.js +31 -36
- package/dist/cli/commands/symbolic.js.map +1 -1
- package/dist/cli/commands/testplan.d.ts.map +1 -1
- package/dist/cli/commands/testplan.js +5 -3
- 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 +28 -3
- package/dist/cli/expr-print.d.ts.map +1 -1
- package/dist/cli/expr-print.js +42 -22
- 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.d.ts +7 -0
- package/dist/cli/main.d.ts.map +1 -1
- package/dist/cli/main.js +25 -6
- package/dist/cli/main.js.map +1 -1
- package/dist/cli/map-evidence.js.map +1 -1
- package/dist/cli/numeric-flag.d.ts +12 -0
- package/dist/cli/numeric-flag.d.ts.map +1 -0
- package/dist/cli/numeric-flag.js +44 -0
- package/dist/cli/numeric-flag.js.map +1 -0
- package/dist/cli/output.d.ts +23 -6
- package/dist/cli/output.d.ts.map +1 -1
- package/dist/cli/output.js +15 -0
- 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 +17 -11
- package/dist/cli/record-reach.js.map +1 -1
- package/dist/cli/record-tables.d.ts.map +1 -1
- package/dist/cli/record-tables.js +7 -6
- package/dist/cli/record-tables.js.map +1 -1
- package/dist/cli/record.d.ts +1 -5
- package/dist/cli/record.d.ts.map +1 -1
- package/dist/cli/record.js +40 -20
- 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 +19 -7
- package/dist/cli/search-index.js.map +1 -1
- package/dist/cli/statuses.d.ts +0 -2
- package/dist/cli/statuses.d.ts.map +1 -1
- package/dist/cli/statuses.js +0 -7
- package/dist/cli/statuses.js.map +1 -1
- package/dist/cli/stored-results.d.ts +7 -0
- package/dist/cli/stored-results.d.ts.map +1 -0
- package/dist/cli/stored-results.js +23 -0
- package/dist/cli/stored-results.js.map +1 -0
- package/dist/cli/top-level-help.js.map +1 -1
- package/dist/cli/version.d.ts.map +1 -1
- package/dist/cli/version.js +7 -5
- package/dist/cli/version.js.map +1 -1
- package/dist/cli-api.d.ts +49 -14
- package/dist/cli-api.d.ts.map +1 -1
- package/dist/cli-api.js +42 -17
- package/dist/cli-api.js.map +1 -1
- package/dist/composition/adjudication.js.map +1 -1
- package/dist/composition/algebraic-equivalence.d.ts +43 -0
- package/dist/composition/algebraic-equivalence.d.ts.map +1 -0
- package/dist/composition/algebraic-equivalence.js +115 -0
- package/dist/composition/algebraic-equivalence.js.map +1 -0
- 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 +6 -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.d.ts +47 -20
- package/dist/composition/axis-audit.d.ts.map +1 -1
- package/dist/composition/axis-audit.js +82 -9
- package/dist/composition/axis-audit.js.map +1 -1
- package/dist/composition/bridge-analysis.d.ts +14 -15
- package/dist/composition/bridge-analysis.d.ts.map +1 -1
- package/dist/composition/bridge-analysis.js +148 -91
- 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 +40 -0
- package/dist/composition/canonical-compare.d.ts.map +1 -1
- package/dist/composition/canonical-compare.js +134 -26
- package/dist/composition/canonical-compare.js.map +1 -1
- package/dist/composition/canonical-graph.d.ts +9 -10
- package/dist/composition/canonical-graph.d.ts.map +1 -1
- package/dist/composition/canonical-graph.js +33 -102
- package/dist/composition/canonical-graph.js.map +1 -1
- package/dist/composition/canonical-json.js +2 -2
- 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 +8 -25
- package/dist/composition/catalog-graph.js.map +1 -1
- package/dist/composition/chain-candidate.d.ts +10 -0
- package/dist/composition/chain-candidate.d.ts.map +1 -1
- package/dist/composition/chain-candidate.js +11 -2
- package/dist/composition/chain-candidate.js.map +1 -1
- package/dist/composition/chain-match.d.ts +6 -3
- package/dist/composition/chain-match.d.ts.map +1 -1
- package/dist/composition/chain-match.js +4 -1
- package/dist/composition/chain-match.js.map +1 -1
- package/dist/composition/chain-regime.js.map +1 -1
- package/dist/composition/chain-result.d.ts.map +1 -1
- package/dist/composition/chain-result.js +2 -14
- package/dist/composition/chain-result.js.map +1 -1
- package/dist/composition/compose-surface.js.map +1 -1
- package/dist/composition/compose-symbolic.d.ts.map +1 -1
- package/dist/composition/compose-symbolic.js +3 -2
- package/dist/composition/compose-symbolic.js.map +1 -1
- package/dist/composition/compose.d.ts.map +1 -1
- package/dist/composition/compose.js +166 -41
- package/dist/composition/compose.js.map +1 -1
- package/dist/composition/composition-recovery.d.ts.map +1 -1
- package/dist/composition/composition-recovery.js +4 -7
- 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 +77 -11
- package/dist/composition/discovery.d.ts.map +1 -1
- package/dist/composition/discovery.js +194 -80
- package/dist/composition/discovery.js.map +1 -1
- package/dist/composition/edge.d.ts +40 -10
- package/dist/composition/edge.d.ts.map +1 -1
- package/dist/composition/edge.js +47 -12
- 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 +18 -3
- package/dist/composition/enumerate.js.map +1 -1
- package/dist/composition/evaluate-relation.d.ts +35 -11
- package/dist/composition/evaluate-relation.d.ts.map +1 -1
- package/dist/composition/evaluate-relation.js +60 -39
- package/dist/composition/evaluate-relation.js.map +1 -1
- package/dist/composition/explain.d.ts +5 -9
- package/dist/composition/explain.d.ts.map +1 -1
- package/dist/composition/explain.js +38 -18
- package/dist/composition/explain.js.map +1 -1
- package/dist/composition/expr-eval.d.ts.map +1 -1
- package/dist/composition/expr-eval.js +2 -11
- package/dist/composition/expr-eval.js.map +1 -1
- package/dist/composition/expr-simplify.d.ts +16 -0
- package/dist/composition/expr-simplify.d.ts.map +1 -1
- package/dist/composition/expr-simplify.js +24 -59
- 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 +28 -0
- package/dist/composition/formula-shape.d.ts.map +1 -1
- package/dist/composition/formula-shape.js +96 -2
- 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-structure.d.ts +98 -0
- package/dist/composition/graph-structure.d.ts.map +1 -0
- package/dist/composition/graph-structure.js +167 -0
- package/dist/composition/graph-structure.js.map +1 -0
- package/dist/composition/graph-viz-svg.d.ts.map +1 -1
- package/dist/composition/graph-viz-svg.js +1 -1
- package/dist/composition/graph-viz-svg.js.map +1 -1
- package/dist/composition/graph-viz.d.ts.map +1 -1
- package/dist/composition/graph-viz.js +8 -37
- package/dist/composition/graph-viz.js.map +1 -1
- package/dist/composition/grounding.js.map +1 -1
- package/dist/composition/identifiability.d.ts +91 -4
- package/dist/composition/identifiability.d.ts.map +1 -1
- package/dist/composition/identifiability.js +363 -6
- package/dist/composition/identifiability.js.map +1 -1
- package/dist/composition/index.d.ts +14 -8
- package/dist/composition/index.d.ts.map +1 -1
- package/dist/composition/index.js +7 -5
- package/dist/composition/index.js.map +1 -1
- package/dist/composition/mathts-quiet.d.ts +29 -0
- package/dist/composition/mathts-quiet.d.ts.map +1 -0
- package/dist/composition/mathts-quiet.js +57 -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 +20 -35
- 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.d.ts +4 -2
- package/dist/composition/probe/corpus.d.ts.map +1 -1
- package/dist/composition/probe/corpus.js +20 -9
- package/dist/composition/probe/corpus.js.map +1 -1
- package/dist/composition/probe/dataset.d.ts +17 -0
- package/dist/composition/probe/dataset.d.ts.map +1 -1
- package/dist/composition/probe/dataset.js +95 -50
- package/dist/composition/probe/dataset.js.map +1 -1
- package/dist/composition/probe/experiment-design.d.ts +5 -1
- package/dist/composition/probe/experiment-design.d.ts.map +1 -1
- package/dist/composition/probe/experiment-design.js +44 -24
- 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 +16 -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 +7 -1
- package/dist/composition/probe/fit.d.ts.map +1 -1
- package/dist/composition/probe/fit.js +48 -23
- package/dist/composition/probe/fit.js.map +1 -1
- package/dist/composition/probe/frontier.d.ts.map +1 -1
- package/dist/composition/probe/frontier.js +33 -15
- package/dist/composition/probe/frontier.js.map +1 -1
- package/dist/composition/probe/generator.d.ts +27 -1
- package/dist/composition/probe/generator.d.ts.map +1 -1
- package/dist/composition/probe/generator.js +53 -30
- package/dist/composition/probe/generator.js.map +1 -1
- package/dist/composition/probe/index.d.ts +18 -2
- package/dist/composition/probe/index.d.ts.map +1 -1
- package/dist/composition/probe/index.js +10 -2
- package/dist/composition/probe/index.js.map +1 -1
- package/dist/composition/probe/limits.d.ts +24 -1
- package/dist/composition/probe/limits.d.ts.map +1 -1
- package/dist/composition/probe/limits.js +53 -11
- 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 +22 -9
- package/dist/composition/probe/pipeline.js.map +1 -1
- package/dist/composition/probe/power-law.d.ts +121 -0
- package/dist/composition/probe/power-law.d.ts.map +1 -0
- package/dist/composition/probe/power-law.js +255 -0
- package/dist/composition/probe/power-law.js.map +1 -0
- package/dist/composition/probe/problem.d.ts +12 -1
- package/dist/composition/probe/problem.d.ts.map +1 -1
- package/dist/composition/probe/problem.js +242 -48
- package/dist/composition/probe/problem.js.map +1 -1
- package/dist/composition/probe/report.js +1 -1
- package/dist/composition/probe/report.js.map +1 -1
- package/dist/composition/probe/residual.d.ts +6 -1
- package/dist/composition/probe/residual.d.ts.map +1 -1
- package/dist/composition/probe/residual.js +9 -7
- 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.d.ts +82 -17
- package/dist/composition/probe/structure.d.ts.map +1 -1
- package/dist/composition/probe/structure.js +129 -55
- package/dist/composition/probe/structure.js.map +1 -1
- package/dist/composition/probe/study.d.ts +35 -12
- package/dist/composition/probe/study.d.ts.map +1 -1
- package/dist/composition/probe/study.js +241 -184
- package/dist/composition/probe/study.js.map +1 -1
- package/dist/composition/probe/t-tail.d.ts +17 -0
- package/dist/composition/probe/t-tail.d.ts.map +1 -0
- package/dist/composition/probe/t-tail.js +32 -0
- package/dist/composition/probe/t-tail.js.map +1 -0
- package/dist/composition/probe/types.d.ts +6 -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 +51 -13
- package/dist/composition/proposed-bridges.d.ts.map +1 -1
- package/dist/composition/proposed-bridges.js +110 -58
- 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-clusters.d.ts +48 -0
- package/dist/composition/quantity-clusters.d.ts.map +1 -0
- package/dist/composition/quantity-clusters.js +98 -0
- package/dist/composition/quantity-clusters.js.map +1 -0
- 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/rational-exponent.d.ts +40 -0
- package/dist/composition/rational-exponent.d.ts.map +1 -0
- package/dist/composition/rational-exponent.js +65 -0
- package/dist/composition/rational-exponent.js.map +1 -0
- package/dist/composition/representative-values.d.ts +22 -0
- package/dist/composition/representative-values.d.ts.map +1 -1
- package/dist/composition/representative-values.js +23 -0
- 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 +36 -10
- package/dist/composition/retrodiction.js.map +1 -1
- package/dist/composition/uncertainty.js.map +1 -1
- package/dist/composition/user-equation.d.ts.map +1 -1
- package/dist/composition/user-equation.js +2 -2
- package/dist/composition/user-equation.js.map +1 -1
- package/dist/core/assignment.d.ts +19 -0
- package/dist/core/assignment.d.ts.map +1 -0
- package/dist/core/assignment.js +19 -0
- package/dist/core/assignment.js.map +1 -0
- 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/compare.d.ts +32 -0
- package/dist/core/compare.d.ts.map +1 -0
- package/dist/core/compare.js +46 -0
- package/dist/core/compare.js.map +1 -0
- package/dist/core/constants.d.ts +35 -35
- package/dist/core/constants.d.ts.map +1 -1
- package/dist/core/constants.js +52 -37
- package/dist/core/constants.js.map +1 -1
- package/dist/core/data-file.d.ts +7 -0
- package/dist/core/data-file.d.ts.map +1 -1
- package/dist/core/data-file.js +17 -0
- 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/format.d.ts +36 -0
- package/dist/core/format.d.ts.map +1 -0
- package/dist/core/format.js +39 -0
- package/dist/core/format.js.map +1 -0
- package/dist/core/hash.d.ts +14 -0
- package/dist/core/hash.d.ts.map +1 -0
- package/dist/core/hash.js +17 -0
- package/dist/core/hash.js.map +1 -0
- package/dist/core/json-schema.d.ts +3 -1
- package/dist/core/json-schema.d.ts.map +1 -1
- package/dist/core/json-schema.js +41 -16
- 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 -16
- package/dist/core/labeled-tensor.js.map +1 -1
- package/dist/core/mathts-read.d.ts +25 -0
- package/dist/core/mathts-read.d.ts.map +1 -0
- package/dist/core/mathts-read.js +51 -0
- package/dist/core/mathts-read.js.map +1 -0
- 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 +64 -8
- package/dist/core/tensor.js.map +1 -1
- package/dist/core/types.d.ts +5 -5
- 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 +43 -86
- package/dist/diff/bridge-gradient.d.ts.map +1 -1
- package/dist/diff/bridge-gradient.js +40 -109
- 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 +19 -4
- package/dist/diff/bridge-specs.js.map +1 -1
- package/dist/dimensional/algebra.d.ts +18 -0
- package/dist/dimensional/algebra.d.ts.map +1 -1
- package/dist/dimensional/algebra.js +41 -1
- package/dist/dimensional/algebra.js.map +1 -1
- package/dist/dimensional/ast-builders.d.ts +12 -4
- package/dist/dimensional/ast-builders.d.ts.map +1 -1
- package/dist/dimensional/ast-builders.js +17 -5
- package/dist/dimensional/ast-builders.js.map +1 -1
- package/dist/dimensional/ast-leaves.d.ts +81 -0
- package/dist/dimensional/ast-leaves.d.ts.map +1 -0
- package/dist/dimensional/ast-leaves.js +146 -0
- package/dist/dimensional/ast-leaves.js.map +1 -0
- package/dist/dimensional/ast-types.js.map +1 -1
- package/dist/dimensional/bridge-check.js.map +1 -1
- package/dist/dimensional/buckingham.d.ts.map +1 -1
- package/dist/dimensional/buckingham.js +15 -27
- 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 +17 -13
- 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.d.ts.map +1 -1
- package/dist/dimensional/dimension-inference.js +1 -2
- 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 +4 -2
- package/dist/dimensional/errors.d.ts.map +1 -1
- package/dist/dimensional/errors.js +3 -17
- package/dist/dimensional/errors.js.map +1 -1
- package/dist/dimensional/exact-scale.d.ts +0 -17
- package/dist/dimensional/exact-scale.d.ts.map +1 -1
- package/dist/dimensional/exact-scale.js +8 -8
- 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 +2 -3
- package/dist/dimensional/gauge-field.js.map +1 -1
- package/dist/dimensional/hyphen-names.d.ts +12 -2
- package/dist/dimensional/hyphen-names.d.ts.map +1 -1
- package/dist/dimensional/hyphen-names.js +45 -12
- 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.d.ts.map +1 -1
- package/dist/dimensional/metric.js +0 -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 +9 -0
- package/dist/dimensional/symbolic-constants.d.ts.map +1 -1
- package/dist/dimensional/symbolic-constants.js +20 -3
- 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.d.ts +36 -0
- package/dist/dimensional/types.d.ts.map +1 -1
- package/dist/dimensional/types.js +45 -7
- 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 +11 -7
- 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 +59 -8
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +22 -24
- 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.d.ts.map +1 -1
- package/dist/numerical/christoffel-flat.js +3 -2
- 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 +36 -13
- 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 +9 -5
- 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 -8
- 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/finite-difference.d.ts +22 -0
- package/dist/numerical/finite-difference.d.ts.map +1 -0
- package/dist/numerical/finite-difference.js +27 -0
- package/dist/numerical/finite-difference.js.map +1 -0
- 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.d.ts.map +1 -1
- package/dist/numerical/geodesic-integrator.js +22 -14
- package/dist/numerical/geodesic-integrator.js.map +1 -1
- package/dist/numerical/geometrized.d.ts.map +1 -1
- package/dist/numerical/geometrized.js +0 -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 +16 -25
- package/dist/numerical/mathts-engine.js.map +1 -1
- package/dist/numerical/metric-inverse.d.ts.map +1 -1
- package/dist/numerical/metric-inverse.js +83 -46
- package/dist/numerical/metric-inverse.js.map +1 -1
- package/dist/numerical/null-ic.js.map +1 -1
- package/dist/numerical/null-ray-integrator.d.ts +2 -1
- package/dist/numerical/null-ray-integrator.d.ts.map +1 -1
- package/dist/numerical/null-ray-integrator.js +12 -12
- package/dist/numerical/null-ray-integrator.js.map +1 -1
- package/dist/numerical/painleve-gullstrand-metric.js +2 -2
- 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.d.ts +0 -36
- package/dist/numerical/perihelion-finder.d.ts.map +1 -1
- package/dist/numerical/perihelion-finder.js +41 -87
- 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 +19 -4
- package/dist/numerical/quadrature.js.map +1 -1
- package/dist/numerical/rk4-trajectory.d.ts +10 -0
- package/dist/numerical/rk4-trajectory.d.ts.map +1 -0
- package/dist/numerical/rk4-trajectory.js +37 -0
- package/dist/numerical/rk4-trajectory.js.map +1 -0
- package/dist/numerical/schwarzschild.d.ts +14 -0
- package/dist/numerical/schwarzschild.d.ts.map +1 -0
- package/dist/numerical/schwarzschild.js +17 -0
- package/dist/numerical/schwarzschild.js.map +1 -0
- package/dist/numerical/spacetime-metrics.d.ts +25 -19
- package/dist/numerical/spacetime-metrics.d.ts.map +1 -1
- package/dist/numerical/spacetime-metrics.js +180 -286
- package/dist/numerical/spacetime-metrics.js.map +1 -1
- package/dist/numerical/statistics.d.ts +24 -0
- package/dist/numerical/statistics.d.ts.map +1 -0
- package/dist/numerical/statistics.js +52 -0
- package/dist/numerical/statistics.js.map +1 -0
- package/dist/numerical/strides.js.map +1 -1
- package/dist/numerical/tensor-engine.d.ts +30 -5
- package/dist/numerical/tensor-engine.d.ts.map +1 -1
- package/dist/numerical/tensor-engine.js +12 -0
- 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 +28 -8
- package/dist/relations/regime.d.ts.map +1 -1
- package/dist/relations/regime.js +44 -15
- 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 +16 -20
- package/dist/bridges/registry.d.ts +0 -60
- package/dist/bridges/registry.d.ts.map +0 -1
- package/dist/bridges/registry.js +0 -87
- package/dist/bridges/registry.js.map +0 -1
- package/dist/cli/poster-source.d.ts +0 -154
- package/dist/cli/poster-source.d.ts.map +0 -1
- package/dist/cli/poster-source.js +0 -184
- package/dist/cli/poster-source.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lowering.js","sourceRoot":"","sources":["../../src/numerical/lowering.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"lowering.js","sourceRoot":"","sources":["../../src/numerical/lowering.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * AST → EngineTensor lowering. Walks a validated ExprNode tree and emits\n * TensorEngine calls. The tensor-product case turns computeContraction()'s\n * contractionPairs into an EinsumSpec (v0.3.5-Design.md §5).\n *\n * v0.3.5 scope: flat tensor-products of contractable operands (the three\n * index-carrying nodes + tensor-partial-derivative) + scalar operands.\n * Nested products, integral/derivative numerical eval are out of scope and\n * throw clearly.\n *\n * @module numerical/lowering\n */\n\nimport type { ExprNode } from '../dimensional/validator.js';\nimport { callBuiltinFunction } from './formula-contract.js';\nimport { validate } from '../dimensional/validator.js';\nimport type { TensorIndex, TensorSymbolNode } from '../dimensional/tensor.js';\nimport type { Dimension } from '../dimensional/types.js';\nimport { computeContraction, validateTensorSymbol } from '../dimensional/tensor.js';\nimport { pderivGrid, pderivNumericalFn, pderivSymbolic } from './pderiv.js';\nimport {\n validateMetricTensor,\n validateKroneckerDelta,\n validatePartialDerivative,\n} from '../dimensional/metric-validators.js';\nimport type { MetricTensorNode } from '../dimensional/metric-validators.js';\nimport type { CovariantDerivativeNode, RiemannTensorNode } from '../dimensional/connection-validators.js';\nimport type { RicciTensorNode, EinsteinTensorNode, BianchiResidualNode } from '../dimensional/curvature.js';\nimport type { WeylTensorNode } from '../dimensional/weyl-validators.js';\nimport type { KretschmannScalarNode } from '../dimensional/curvature-invariants.js';\nimport type { CurvatureKind } from '../dimensional/curvature-composite.js';\nimport type {\n EngineTensor, TensorEngine, EinsumSpec, EinsumContraction,\n} from './tensor-engine.js';\nimport type { NumericalInputs, NestedArray } from './types.js';\nimport { NumericalBackendError } from './errors.js';\nimport { integrateGaussLegendre } from './quadrature.js';\nimport {\n zeroTensor,\n zeroTensorLike,\n flatToNested,\n flattenNA,\n tensorAdd,\n tensorAddScaled,\n computeChristoffelTensor,\n contractChristoffelWithOperand,\n getMetricDerivFlat,\n} from './connection-lowering-helpers.js';\nimport {\n christoffelAt,\n dGammaAt,\n buildRiemann,\n contractRiemannJS,\n // v0.6.1 Phase 2: the bianchi-residual + weyl-tensor arms moved into\n // these two helpers (full FD pipeline + result-wrap).\n lowerBianchiResidual,\n lowerWeylTensor,\n lowerKretschmannScalar,\n type MetricFn,\n} from './curvature-lowering-helpers.js';\n// v0.7 follow-up to v0.6.1's LOC-target miss: the four private helpers\n// (isMetricTensorNode, dimensionOf, requireValue, flattenNestedArray)\n// live in lowering-utils.ts so the new derivative-lowering.ts can\n// share them without a forward-import cycle.\nimport {\n isMetricTensorNode,\n dimensionOf,\n requireValue,\n flattenNestedArray,\n} from './lowering-utils.js';\n// v0.7 follow-up: tensor-partial-derivative + covariant-derivative\n// case arms extracted (was lines 523-820, ~298 LOC). The recursive\n// lowerNode call is threaded as a thunk to keep the module graph\n// acyclic.\nimport {\n lowerTensorPartialDerivative,\n lowerCovariantDerivative,\n} from './derivative-lowering.js';\n\n/** Operand kinds a flat tensor-product can lower in v0.3.5: the three\n * index-carrying nodes plus tensor-partial-derivative (whose effective\n * indices are `of`'s indices followed by its wrtIndex).\n *\n * NOTE: Explicitly enumerated rather than structural Extract to avoid\n * accidentally including future index-carrying nodes (e.g.,\n * StressEnergyTensorNode) that are not contractable in the einsum sense. */\ntype ContractableNode =\n | Extract<ExprNode, { kind: 'tensor-symbol' }>\n | Extract<ExprNode, { kind: 'metric-tensor' }>\n | Extract<ExprNode, { kind: 'kronecker-delta' }>\n | Extract<ExprNode, { kind: 'tensor-partial-derivative' }>;\n\nfunction isContractable(node: ExprNode): node is ContractableNode {\n return node.kind === 'tensor-symbol'\n || node.kind === 'metric-tensor'\n || node.kind === 'kronecker-delta'\n || node.kind === 'tensor-partial-derivative';\n}\n\n/** The effective index list of a contractable operand, in the SAME axis\n * order as its lowered EngineTensor. For the three index-carrying nodes\n * that is `node.indices`. For ∂_μ(of) the lowered tensor has shape\n * [...ofShape, N] (Task 10), so the effective indices are `of`'s indices\n * (v0.3.5: `of` is a tensor-symbol or metric-tensor) followed by the wrtIndex. */\nfunction operandIndices(node: ContractableNode): ReadonlyArray<TensorIndex> {\n if (node.kind === 'tensor-partial-derivative') {\n const of = node.of as ExprNode;\n if (of.kind !== 'tensor-symbol' && of.kind !== 'metric-tensor') {\n throw new NumericalBackendError(\n `lowering: a tensor-partial-derivative operand requires a tensor-symbol or `\n + `metric-tensor 'of' in v0.3.5/v0.4.0 — got '${of.kind}'`,\n );\n }\n return [...of.indices, node.wrtIndex];\n }\n return node.indices;\n}\n\n/**\n * Build the EinsumSpec for a flat tensor-product.\n *\n * NOTE: this function does NOT decide which indices contract. That authority\n * belongs to `computeContraction()` (v0.2.0 symbolic-layer) — variance-aware,\n * implicit-identity-metric rule — which already classified every label as\n * contracted or free. buildEinsumSpec only maps those already-classified\n * labels to their (operand, axis) sites. There is exactly one\n * contraction-decision implementation in the codebase.\n *\n * v0.6.1: dropped export — was @internal-tagged with no external consumer.\n * `lowerTensorProduct` (this file) is the only call site.\n */\nfunction buildEinsumSpec(\n operands: ReadonlyArray<ContractableNode>,\n contractionPairs: ReadonlyArray<{ label: string }>,\n freeIndices: ReadonlyMap<string, { upper: number; lower: number }>,\n): EinsumSpec {\n // Map every label to its (operand, axis) sites — via operandIndices() so a\n // tensor-partial-derivative operand contributes its [...of.indices, wrtIndex]\n // effective axes.\n const sites = new Map<string, Array<[number, number]>>();\n operands.forEach((op, opIndex) => {\n operandIndices(op).forEach((idx, axis) => {\n const list = sites.get(idx.label) ?? [];\n list.push([opIndex, axis]);\n sites.set(idx.label, list);\n });\n });\n\n // Contractions: computeContraction told us exactly which labels contract.\n const contractions: EinsumContraction[] = [];\n for (const { label } of contractionPairs) {\n const locs = sites.get(label);\n if (!locs || locs.length !== 2) {\n throw new NumericalBackendError(\n `buildEinsumSpec: contracted label \"${label}\" must occur at exactly 2 `\n + `operand sites, found ${locs?.length ?? 0}`,\n );\n }\n contractions.push({ pair: [locs[0], locs[1]] });\n }\n\n // Free axes in computeContraction's freeIndices order — the symbolic\n // layer's canonical ordering, so the numerical result's axis order\n // matches what the rest of UPT expects.\n const free: Array<{ operand: number; axis: number }> = [];\n for (const label of freeIndices.keys()) {\n const locs = sites.get(label);\n if (!locs || locs.length !== 1) {\n throw new NumericalBackendError(\n `buildEinsumSpec: free label \"${label}\" must occur at exactly 1 `\n + `operand site, found ${locs?.length ?? 0}`,\n );\n }\n free.push({ operand: locs[0][0], axis: locs[0][1] });\n }\n\n return { contractions, free };\n}\n\n/** Lower a contractable operand to a concrete EngineTensor. */\nfunction lowerContractable(\n node: ContractableNode, inputs: NumericalInputs, engine: TensorEngine,\n): EngineTensor {\n const N = dimensionOf(inputs);\n if (node.kind === 'kronecker-delta') return engine.identity(N);\n if (node.kind === 'tensor-partial-derivative') {\n // Delegate to lowerNode, which handles all three numericalForm paths.\n return lowerNode(node, inputs, engine);\n }\n // tensor-symbol / metric-tensor: shape is N per index.\n const shape = node.indices.map(() => N);\n return engine.fromNested(requireValue(node.name, inputs), shape);\n}\n\n/**\n * Dispatcher for the six curvature-composite AST kinds.\n *\n * v0.6.0 Task 3.10e: extracted from `lowerNode`'s switch so all curvature\n * lowering logic lives in one named helper. It switches on `node.kind`\n * directly; `CURVATURE_KIND_REGISTRY` is not read here. The numerical paths\n * are preserved verbatim from the prior per-kind arms — no logic changes.\n *\n * Called from `lowerNode` for all `CurvatureKind` discriminants.\n * @internal\n */\nfunction lowerCurvature(\n node: ExprNode & { kind: CurvatureKind },\n inputs: NumericalInputs,\n engine: TensorEngine,\n): EngineTensor {\n switch (node.kind) {\n case 'ricci-tensor': {\n // v0.5.0 Task 7 — Ricci R_μν = R^λ_{μλν} (Carroll Eq. 3.91). Lowers\n // the embedded Riemann tensor via the 'riemann-tensor' case (so all\n // FD machinery is shared), then contracts upper-ρ with the SECOND\n // lower slot (the μ slot of R^ρ_σμν — i.e., axis index 2 in the\n // [ρ, σ, μ, ν] storage) by summing R[λ][σ][λ][ν] over λ. The\n // surviving free axes are lowerIndices[0] (the σ slot, becoming\n // Ricci's first free index μ_out) and lowerIndices[2] (the ν slot,\n // becoming Ricci's second free index ν_out).\n //\n // Convention note (deviates from the Task 7 prompt's stated S1 rule\n // but agrees with Carroll Eq. 3.91 and the constant-curvature\n // identity R_μν = (n-1)·K·g_μν → R = 4Λ for de Sitter in n=4): the\n // prompt's \"contract upper↔lowerIndices[0] (σ)\" trace is the\n // first-pair antisymmetric trace `R^λ_λμν`, which is identically\n // zero for the (lowered) Riemann's first-pair antisymmetry — it\n // would zero out the de-Sitter Ricci scalar, contradicting both the\n // closed-form fixture and the test target R_scalar = 4Λ. The\n // mathematically correct contraction that satisfies the de-Sitter\n // test target is upper↔lowerIndices[1] (the middle/μ slot),\n // matching Carroll Eq. 3.91 verbatim.\n //\n // No new AST primitive in the contraction: the inner Riemann\n // returns an [N,N,N,N] EngineTensor; we materialise it via\n // engine.toNested, contract on the JS side, and lift back via\n // engine.fromNested. (Mirrors the philosophy of Task 6: walk the\n // composite node directly, no rewrite into a tensor-product.)\n const ricciNode = node as RicciTensorNode;\n const N = dimensionOf(inputs);\n // RiemannTensorNode is a member of ExprNode and CurvatureKind — cast is safe.\n const innerR = lowerCurvature(\n ricciNode.riemann as ExprNode & { kind: CurvatureKind },\n inputs,\n engine,\n );\n const flatR = flattenNestedArray(engine.toNested(innerR) as NestedArray, N * N * N * N);\n\n // Contract R[λ][μ_out][λ][ν_out] → Ricci[μ_out][ν_out] via the shared\n // `contractRiemannJS` helper (AS-1, v0.5.1). On R^ρ_{σμν} stored as\n // R[ρ][σ][μ][ν], the Carroll Eq. 3.91 contraction is upperAxis=0 (ρ)\n // against lowerAxis=2 (μ); free outputs are axes [1, 3] = (σ, ν).\n const ricci2d = contractRiemannJS(flatR, N, {\n upperAxis: 0, lowerAxis: 2, outAxes: [1, 3],\n });\n return engine.fromNested(ricci2d as NestedArray, [N, N]);\n }\n\n case 'einstein-tensor': {\n // v0.5.0 Task 8 — Einstein G_μν = R_μν − ½ R g_μν.\n //\n // Lowers in three steps and folds them on the JS side (same\n // walk-directly philosophy as ricci-tensor — no AST rewrite into a\n // 'op'/'-' tree with a tensor-valued scalar-multiply, which the\n // v0.3.5 tensor-product einsum does not natively support):\n //\n // 1. Lower the inner ricci-tensor → R_μν (4×4 number[][])\n // 2. Look up g_μν and g^μν from inputs.tensors (constant raw values\n // at the coordinate point — same pattern as the riemann-tensor\n // case uses for `xCoord` / inputs.fields).\n // 3. Compute scalar R = Σ_{μν} g^{μν} R_{μν} on the JS side.\n // 4. Form G_{μν} = R_{μν} − ½ R · g_{μν} elementwise.\n //\n // Trace identity g^μν G_μν = −R is preserved EXACTLY in the\n // arithmetic (modulo cancellation noise) because both R and the\n // ½ R g_μν trace term are constructed from the same `Ric` and `g`\n // matrices — the test pins this to machine precision.\n const eNode = node as EinsteinTensorNode;\n const N = dimensionOf(inputs);\n\n // Step 1: inner Ricci R_μν via the ricci-tensor case (which itself\n // walks the riemann-tensor case for ∂Γ etc).\n const ricciNodeInner: RicciTensorNode = {\n kind: 'ricci-tensor', riemann: eNode.riemann,\n };\n const innerR = lowerCurvature(ricciNodeInner, inputs, engine);\n const Ric = engine.toNested(innerR) as number[][];\n\n // Step 2: g_μν and g^μν from inputs.tensors (raw constant matrices at\n // the test coordinate point). Mirrors how ricci-tensor's de-Sitter\n // closed-form test sources its metrics.\n const gFlat = flattenNestedArray(requireValue(eNode.gLower.name, inputs), N * N);\n const gInvFlat = flattenNestedArray(requireValue(eNode.gInverse.name, inputs), N * N);\n\n // Step 3: scalar R = Σ g^{μν} R_{μν}.\n let Rscalar = 0;\n for (let mu = 0; mu < N; mu++) {\n for (let nu = 0; nu < N; nu++) {\n Rscalar += gInvFlat[mu * N + nu] * Ric[mu][nu];\n }\n }\n\n // Step 4: G_{μν} = R_{μν} − ½ R · g_{μν}.\n const G: number[][] = new Array(N);\n for (let i = 0; i < N; i++) {\n const row = new Array<number>(N);\n for (let j = 0; j < N; j++) row[j] = 0;\n G[i] = row;\n }\n const halfR = 0.5 * Rscalar;\n for (let mu = 0; mu < N; mu++) {\n for (let nu = 0; nu < N; nu++) {\n G[mu][nu] = Ric[mu][nu] - halfR * gFlat[mu * N + nu];\n }\n }\n return engine.fromNested(G as NestedArray, [N, N]);\n }\n\n case 'bianchi-residual': {\n // v0.5.0 Task 9 — Bianchi-identity residual B_{λμνρσ}.\n // Extracted into `lowerBianchiResidual` in v0.6.1 Phase 2; the body\n // here is just the type-narrowed dispatch.\n return lowerBianchiResidual(node as BianchiResidualNode, inputs, engine);\n }\n\n case 'riemann-tensor': {\n // v0.5.0 Task 6 (Phase 1c-ii). Walks the node directly (no AST rewrite\n // into pderiv-of-Γ): evaluates Γ(x) via the v0.4.0\n // `computeChristoffelTensor` helper, then computes ∂Γ via centered FD\n // (M11 — pderiv-style, not a new AST kind or AD pass).\n const rNode = node as RiemannTensorNode;\n const N = dimensionOf(inputs);\n\n // Coordinate value: read from inputs.tensors[xCoord.name] (a flat\n // number[] of length N). This mirrors the test fixture's\n // 'x' tensor convention.\n const xCoordName = rNode.xCoord.name;\n const xRaw = requireValue(xCoordName, inputs);\n const x = flattenNestedArray(xRaw, N);\n\n // Coordinate-dependent metric closures: required for ∂g (inner FD) and\n // ∂Γ (outer FD). Looked up by name in inputs.fields.\n const gName = rNode.gLower.name;\n const gInvName = rNode.gInverse.name;\n const gFn = inputs.fields?.get(gName) as MetricFn | undefined;\n const gInverseFn = inputs.fields?.get(gInvName) as MetricFn | undefined;\n if (!gFn || !gInverseFn) {\n throw new NumericalBackendError(\n `lowering: riemann-tensor numerical evaluation requires coordinate-` +\n `dependent metric closures in inputs.fields for \"${gName}\" and \"${gInvName}\" ` +\n `(constant-metric Riemann is identically zero — the test wouldn't fire here). ` +\n `Got fields=[${[...(inputs.fields?.keys() ?? [])].join(',')}].`,\n );\n }\n\n // Γ^ρ_{σν}(x) and ∂_λ Γ^ρ_{σν}(x).\n const gamma = christoffelAt(x, gFn, gInverseFn, N, engine);\n const dGamma = dGammaAt(x, gFn, gInverseFn, N, engine);\n\n // R[ρ][σ][μ][ν] per the Carroll formula (Adam+Eve F4-S3).\n const R = buildRiemann(gamma, dGamma, N);\n\n // Materialise back into an EngineTensor in [N,N,N,N] shape.\n return engine.fromNested(R as NestedArray, [N, N, N, N]);\n }\n\n case 'weyl-tensor': {\n // v0.6.0 Task 3.2 — Weyl C^ρ_{σμν}.\n // Extracted into `lowerWeylTensor` in v0.6.1 Phase 2; the body here\n // is just the type-narrowed dispatch.\n return lowerWeylTensor(node as WeylTensorNode, inputs, engine);\n }\n\n case 'kretschmann-scalar': {\n return lowerKretschmannScalar(node as KretschmannScalarNode, inputs, engine);\n }\n\n default: {\n // Compile-time exhaustiveness: in this default arm `node` is the\n // union of the deferred kinds (all others have explicit arms).\n // Excluding the registry-covered kinds must leave `never` — if a\n // new ExprNode kind lands without an arm OR a registry entry,\n // this assignment errors at tsc (Adam A-8 mitigation).\n const _exhaustive: never = node as Exclude<\n typeof node,\n { kind: DeferredNodeKind }\n >;\n void _exhaustive;\n throw new NumericalBackendError(\n `lowerCurvature: unhandled curvature kind ${JSON.stringify((node as { kind?: unknown }).kind)}`,\n );\n }\n }\n}\n\n/**\n * S-9 (v0.9.0): deferred-evaluator registry — the single source of\n * truth for AST kinds whose numerical evaluation lives in a dedicated\n * module instead of the lowering switch. The default arm consults this\n * registry and raises a descriptive error naming the canonical\n * evaluator; the per-kind explicit arms it replaces had drifted into\n * 5 near-identical bodies (v0.7.1 S-9 finding).\n *\n * Exhaustiveness is pinned by tests/numerical/lowering-deferred-arms.test.ts\n * (Adam A-8 mitigation: silent prose drift between registry and arms).\n */\ninterface DeferredEvaluatorEntry {\n readonly canonicalEvaluatorName: string;\n readonly moduleHint: string;\n}\n\ntype DeferredNodeKind =\n | 'killing-vector'\n | 'conserved-charge'\n | 'stress-energy'\n | 'cosmological-constant'\n | 'einstein-equation';\n\nexport const DEFERRED_EVALUATOR_REGISTRY: Record<DeferredNodeKind, DeferredEvaluatorEntry> = {\n 'killing-vector': {\n canonicalEvaluatorName: 'verifyKillingEquation',\n moduleHint: 'src/numerical/killing.ts',\n },\n 'conserved-charge': {\n canonicalEvaluatorName: 'evaluateConservedCharge',\n moduleHint: 'src/numerical/killing.ts',\n },\n 'stress-energy': {\n canonicalEvaluatorName: 'evaluateEinsteinEquationResidual',\n moduleHint: 'src/numerical/einstein-equation.ts',\n },\n 'cosmological-constant': {\n canonicalEvaluatorName: 'evaluateEinsteinEquationResidual',\n moduleHint: 'src/numerical/einstein-equation.ts',\n },\n 'einstein-equation': {\n canonicalEvaluatorName: 'evaluateEinsteinEquationResidual',\n moduleHint: 'src/numerical/einstein-equation.ts',\n },\n};\n\nfunction isDeferredNodeKind(kind: string): kind is DeferredNodeKind {\n return Object.prototype.hasOwnProperty.call(DEFERRED_EVALUATOR_REGISTRY, kind);\n}\n\n/** Lower a validated ExprNode to an EngineTensor.\n * @internal — cross-module/test use only; not part of the consumer surface. */\nexport function lowerNode(\n node: ExprNode,\n inputs: NumericalInputs,\n engine: TensorEngine,\n): EngineTensor {\n switch (node.kind) {\n case 'symbol':\n return engine.fromNested(requireValue(node.name, inputs), []);\n\n case 'tensor-symbol':\n case 'metric-tensor':\n case 'kronecker-delta':\n return lowerContractable(node, inputs, engine);\n\n case 'op': {\n if (node.op === '+' || node.op === '-') {\n if (node.args.length === 0) return engine.fromNested(0, []);\n let acc = lowerNode(node.args[0], inputs, engine);\n for (let i = 1; i < node.args.length; i++) {\n const next = lowerNode(node.args[i], inputs, engine);\n acc = node.op === '+' ? engine.add(acc, next) : engine.sub(acc, next);\n }\n return acc;\n }\n // '*' / '/' / '^' are scalar-only. Empty-op convention is aligned with\n // the validator (validator.ts: '*'/'/' with 0 args → DIMENSIONLESS) and\n // expr-eval ('*'/'/' empty → 1): an empty '/' is the multiplicative\n // identity, NOT an error, and the ≥1-arg case left-folds (1-arg → the\n // operand) consistently across all three layers. '^' still requires\n // exactly 2 operands everywhere (raw arity guard against an unvalidated\n // AST surfacing a silent NaN).\n if (node.op === '/' && node.args.length === 0) {\n return engine.fromNested(1, []);\n }\n if (node.op === '^' && node.args.length !== 2) {\n throw new NumericalBackendError(\n `lowering: op '^' requires exactly 2 operands (base, exponent), got ${node.args.length}`,\n );\n }\n // '*' / '/' / '^' are scalar-only (the validator rejects tensor\n // operands). Lower each to rank-0, do the arithmetic in JS, lift back.\n const scalars = node.args.map((a) => {\n const t = lowerNode(a, inputs, engine);\n if (t.shape.length !== 0) {\n throw new NumericalBackendError(\n `lowering: op '${node.op}' got a rank-${t.shape.length} operand — scalar ops require rank-0`,\n );\n }\n return engine.toNested(t) as number;\n });\n let value: number;\n if (node.op === '*') value = scalars.reduce((a, b) => a * b, 1);\n else if (node.op === '/') value = scalars.reduce((a, b) => a / b);\n else value = callBuiltinFunction('pow', scalars); // '^': the one table's body\n return engine.fromNested(value, []);\n }\n\n case 'transcendental': {\n // Scalar transcendental of a rank-0 dimensionless argument. Materialise\n // the arg to a number and apply the one function table's body (same\n // lower-to-JS pattern as the scalar 'op' case above). Each grammar node\n // name is a table key.\n const argT = lowerNode(node.arg, inputs, engine);\n if (argT.shape.length !== 0) {\n throw new NumericalBackendError(\n `lowering: transcendental '${node.fn}' requires a rank-0 (scalar) argument, `\n + `got rank-${argT.shape.length}`,\n );\n }\n const x = engine.toNested(argT) as number;\n return engine.fromNested(callBuiltinFunction(node.fn, [x]), []);\n }\n\n case 'abs': {\n const argT = lowerNode(node.arg, inputs, engine);\n if (argT.shape.length !== 0) {\n throw new NumericalBackendError(\n `lowering: abs requires a rank-0 (scalar) argument, got rank-${argT.shape.length}`,\n );\n }\n return engine.fromNested(callBuiltinFunction('abs', [engine.toNested(argT) as number]), []);\n }\n\n case 'tensor-product': {\n for (const arg of node.args) {\n if (arg.kind === 'tensor-product') {\n throw new NumericalBackendError(\n 'lowering: nested tensor-product numerical evaluation is not supported in v0.3.5 — '\n + 'flatten the contraction into a single product',\n );\n }\n }\n // Contractable operands (tensor-symbol / metric-tensor / kronecker-delta\n // / tensor-partial-derivative) participate in the einsum; everything\n // else must be a rank-0 scalar factor.\n const operands = node.args.filter(isContractable);\n const scalarArgs = node.args.filter((a) => !isContractable(a));\n // computeContraction is the single authority on WHICH indices contract\n // (variance-aware, implicit-metric rule). See buildEinsumSpec JSDoc.\n // The recursive validateContractionChild resolves tensor-partial-derivative\n // operands via validatePartialDerivative.\n function validateContractionChild(child: ExprNode): {\n dim: Dimension;\n freeIndices: Map<string, { upper: number; lower: number }>;\n } {\n if (child.kind === 'tensor-symbol') return validateTensorSymbol(child);\n if (child.kind === 'metric-tensor') return validateMetricTensor(child);\n if (child.kind === 'kronecker-delta') return validateKroneckerDelta(child);\n if (child.kind === 'tensor-partial-derivative') {\n const r = validatePartialDerivative(child, (g) =>\n validateContractionChild(g as ExprNode),\n );\n return { dim: r.dim, freeIndices: r.freeIndices };\n }\n throw new NumericalBackendError(\n `lowering: unexpected operand '${child.kind}' in tensor-product einsum`,\n );\n }\n const { contractionPairs, freeIndices } = computeContraction(\n operands, validateContractionChild,\n );\n const spec = buildEinsumSpec(operands, contractionPairs, freeIndices);\n const operandTensors = operands.map((n) => lowerContractable(n, inputs, engine));\n let result = engine.einsum(spec, ...operandTensors);\n // Scalar operands multiply the whole contraction.\n for (const s of scalarArgs) {\n const st = lowerNode(s, inputs, engine);\n if (st.shape.length !== 0) {\n throw new NumericalBackendError(\n 'lowering: non-scalar non-contractable operand in tensor-product',\n );\n }\n result = engine.scale(result, engine.toNested(st) as number);\n }\n return result;\n }\n\n case 'tensor-partial-derivative':\n // v0.7 follow-up to v0.6.1 LOC miss: body extracted to\n // derivative-lowering.ts. No recursive lowerNode call from\n // this arm, so the thunk parameter is not needed.\n return lowerTensorPartialDerivative(node, inputs, engine);\n\n case 'covariant-derivative':\n // v0.7 follow-up to v0.6.1 LOC miss: body extracted to\n // derivative-lowering.ts. Recursive lowerNode call threaded\n // via thunk to keep the module graph acyclic.\n return lowerCovariantDerivative(node, inputs, engine, lowerNode);\n\n case 'integral': {\n // A DEFINITE integral (with bounds) is evaluated by 16-point\n // Gauss–Legendre quadrature; the integration variable `over.name` is\n // scope-bound to each abscissa. A bound-LESS integral stays abstract\n // (dimensional-only) and is not numerically evaluated.\n if (!node.lower || !node.upper) {\n throw new NumericalBackendError(\n `lowering: an abstract (bound-less) 'integral' is not numerically evaluated; `\n + 'supply lower/upper bounds for a definite integral',\n );\n }\n if (node.over.kind !== 'symbol') {\n throw new NumericalBackendError(\n `lowering: integral 'over' must be a symbol (the integration variable), `\n + `got '${node.over.kind}'`,\n );\n }\n const overName = node.over.name;\n const toScalar = (n: ExprNode): number => {\n const t = lowerNode(n, inputs, engine);\n if (t.shape.length !== 0) {\n throw new NumericalBackendError(\n `lowering: integral bound must be rank-0 (scalar), got rank-${t.shape.length}`,\n );\n }\n return engine.toNested(t) as number;\n };\n const a = toScalar(node.lower);\n const b = toScalar(node.upper);\n const integrand = node.integrand;\n const value = integrateGaussLegendre(\n (x) => {\n const scoped: NumericalInputs = {\n ...inputs,\n tensors: new Map(inputs.tensors).set(overName, x),\n };\n const t = lowerNode(integrand, scoped, engine);\n if (t.shape.length !== 0) {\n throw new NumericalBackendError(\n `lowering: integral integrand must be rank-0 (scalar), got rank-${t.shape.length}`,\n );\n }\n return engine.toNested(t) as number;\n },\n a,\n b,\n );\n return engine.fromNested(value, []);\n }\n\n case 'derivative':\n throw new NumericalBackendError(\n `lowering: 'derivative' is not numerically evaluated in v0.3.5 — `\n + 'use tensor-partial-derivative for differentiation',\n );\n\n // v0.14 distributional/variational primitives — dimensional-grammar only,\n // not numerically evaluable (δ(0)=∞; a functional derivative needs the\n // functional's explicit form). They never appear in a composable symbolic\n // form, so the throw is correct.\n case 'dirac-delta':\n case 'variational-derivative':\n throw new NumericalBackendError(\n `lowering: '${node.kind}' is a dimensional-grammar primitive (v0.14) `\n + 'and is not numerically evaluated',\n );\n\n // v0.6.0 Task 3.10e: ricci-tensor, einstein-tensor, bianchi-residual,\n // riemann-tensor, weyl-tensor, kretschmann-scalar all delegate to\n // lowerCurvature — the extracted curvature-composite dispatcher.\n case 'ricci-tensor':\n case 'einstein-tensor':\n case 'bianchi-residual':\n case 'riemann-tensor':\n case 'weyl-tensor':\n case 'kretschmann-scalar':\n return lowerCurvature(node, inputs, engine);\n\n // S-9 (v0.9.0): the five deferred-evaluator arms (killing-vector,\n // conserved-charge, stress-energy, cosmological-constant,\n // einstein-equation) collapsed into the registry-consulting default\n // arm below. Message wording unified (no test pinned the old\n // per-arm text — verified before consolidation).\n default: {\n if (isDeferredNodeKind(node.kind)) {\n const entry = DEFERRED_EVALUATOR_REGISTRY[node.kind];\n throw new NumericalBackendError(\n `lowering: '${node.kind}' numerical evaluation is not yet implemented ` +\n `in the lowering layer. Use ${entry.canonicalEvaluatorName}() from ` +\n `${entry.moduleHint} instead.`,\n );\n }\n // Compile-time exhaustiveness: in this default arm `node` is the\n // union of the deferred kinds (all others have explicit arms).\n // Excluding the registry-covered kinds must leave `never` — if a\n // new ExprNode kind lands without an arm OR a registry entry,\n // this assignment errors at tsc (Adam A-8 mitigation).\n const _exhaustive: never = node as Exclude<\n typeof node,\n { kind: DeferredNodeKind }\n >;\n void _exhaustive;\n throw new NumericalBackendError(\n `lowering: unknown ExprNode.kind ${JSON.stringify((node as { kind?: unknown }).kind)}`,\n );\n }\n }\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mathts-engine.d.ts","sourceRoot":"","sources":["../../src/numerical/mathts-engine.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,YAAY,EAAE,YAAY,EAAE,UAAU,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AACvH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAmC9C;;;;;;;GAOG;AACH,qBAAa,YAAa,YAAW,YAAY;IAC/C,QAAQ,CAAC,IAAI,kBAAkB;IAE/B,UAAU,CAAC,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,aAAa,CAAC,MAAM,CAAC,GAAG,YAAY,CAGxE;IACD,QAAQ,CAAC,CAAC,EAAE,YAAY,GAAG,WAAW,CAErC;IAED,MAAM,CAAC,IAAI,EAAE,UAAU,EAAE,GAAG,QAAQ,EAAE,YAAY,EAAE,GAAG,YAAY,CAGlE;IACD,MAAM,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,YAAY,GAAG,YAAY,CAErD;IACD,SAAS,CAAC,CAAC,EAAE,YAAY,EAAE,IAAI,CAAC,EAAE,aAAa,CAAC,MAAM,CAAC,GAAG,YAAY,CAErE;IACD,OAAO,CAAC,CAAC,EAAE,YAAY,EAAE,KAAK,EAAE,aAAa,CAAC,MAAM,CAAC,GAAG,YAAY,CAEnE;
|
|
1
|
+
{"version":3,"file":"mathts-engine.d.ts","sourceRoot":"","sources":["../../src/numerical/mathts-engine.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,YAAY,EAAE,YAAY,EAAE,UAAU,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AACvH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAmC9C;;;;;;;GAOG;AACH,qBAAa,YAAa,YAAW,YAAY;IAC/C,QAAQ,CAAC,IAAI,kBAAkB;IAE/B,UAAU,CAAC,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,aAAa,CAAC,MAAM,CAAC,GAAG,YAAY,CAGxE;IACD,QAAQ,CAAC,CAAC,EAAE,YAAY,GAAG,WAAW,CAErC;IAED,MAAM,CAAC,IAAI,EAAE,UAAU,EAAE,GAAG,QAAQ,EAAE,YAAY,EAAE,GAAG,YAAY,CAGlE;IACD,MAAM,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,YAAY,GAAG,YAAY,CAErD;IACD,SAAS,CAAC,CAAC,EAAE,YAAY,EAAE,IAAI,CAAC,EAAE,aAAa,CAAC,MAAM,CAAC,GAAG,YAAY,CAErE;IACD,OAAO,CAAC,CAAC,EAAE,YAAY,EAAE,KAAK,EAAE,aAAa,CAAC,MAAM,CAAC,GAAG,YAAY,CAEnE;IASD,GAAG,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,YAAY,GAAG,YAAY,CAGlD;IACD,GAAG,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,YAAY,GAAG,YAAY,CAGlD;IACD,GAAG,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,YAAY,GAAG,YAAY,CAGlD;IACD,KAAK,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,MAAM,GAAG,YAAY,CAG9C;IAED,QAAQ,CAAC,CAAC,EAAE,MAAM,GAAG,YAAY,CAEhC;IACD,OAAO,CAAC,CAAC,EAAE,YAAY,GAAG,MAAM,CAE/B;IAMD,oFAAoF;IACpF,OAAO,CAAC,cAAc;IAItB,2EAA2E;IAC3E,OAAO,CAAC,gBAAgB;IAQxB;;;;;;;;;;;OAWG;IACG,WAAW,CACf,EAAE,EAAE,CAAC,CAAC,EAAE,YAAY,KAAK,YAAY,EACrC,CAAC,EAAE,YAAY,GACd,OAAO,CAAC,iBAAiB,CAAC,CAkB5B;IAMD;;;;;;;;;OASG;IACG,WAAW,CACf,EAAE,EAAE,CAAC,CAAC,EAAE,YAAY,KAAK,YAAY,EACrC,CAAC,EAAE,YAAY,EACf,SAAS,CAAC,EAAE,YAAY,GACvB,OAAO,CAAC,iBAAiB,CAAC,CAiB5B;CACF"}
|
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
*/
|
|
12
12
|
import { Tensor } from '@danielsimonjr/mathts-tensor';
|
|
13
13
|
import { NumericalBackendError } from './errors.js';
|
|
14
|
-
import { EngineCapabilityError } from './tensor-engine.js';
|
|
14
|
+
import { EngineCapabilityError, isTracedTensor, tracedMode } from './tensor-engine.js';
|
|
15
15
|
/** EngineTensor handle wrapping a MathTS Tensor. */
|
|
16
16
|
class MathTSEngineTensor {
|
|
17
17
|
inner;
|
|
@@ -56,40 +56,31 @@ export class MathTSEngine {
|
|
|
56
56
|
reshape(t, shape) {
|
|
57
57
|
return new MathTSEngineTensor(unwrap(t, 'reshape').reshape(shape));
|
|
58
58
|
}
|
|
59
|
+
// AD dispatch. `@danielsimonjr/mathts-autograd` wraps the traced input as a
|
|
60
|
+
// DualTensor (forward mode, carries `tangent`) or a TapedTensor (reverse
|
|
61
|
+
// mode, carries `tape`) and calls these methods with it. The operations a
|
|
62
|
+
// wrapped tensor implements are declared on `TracedEngineTensor`; the guard
|
|
63
|
+
// `isTracedTensor` is the dispatch. Two operands trace together only when
|
|
64
|
+
// both are wrapped in the same mode; a mixed or half-wrapped pair falls
|
|
65
|
+
// through to the plain path, whose `unwrap` refuses it.
|
|
59
66
|
add(a, b) {
|
|
60
|
-
|
|
61
|
-
// accept the wrapped tensor autograd passes in.
|
|
62
|
-
if ('tangent' in a && 'tangent' in b) {
|
|
67
|
+
if (isTracedTensor(a) && isTracedTensor(b) && tracedMode(a) === tracedMode(b))
|
|
63
68
|
return a.add(b);
|
|
64
|
-
}
|
|
65
|
-
// AD dispatch: TapedTensor (reverse-mode)
|
|
66
|
-
if ('tape' in a && 'tape' in b) {
|
|
67
|
-
return a.add(b);
|
|
68
|
-
}
|
|
69
69
|
return new MathTSEngineTensor(unwrap(a, 'add').add(unwrap(b, 'add')));
|
|
70
70
|
}
|
|
71
71
|
sub(a, b) {
|
|
72
|
-
if (
|
|
73
|
-
return a.sub(b);
|
|
74
|
-
}
|
|
75
|
-
if ('tape' in a && 'tape' in b) {
|
|
72
|
+
if (isTracedTensor(a) && isTracedTensor(b) && tracedMode(a) === tracedMode(b))
|
|
76
73
|
return a.sub(b);
|
|
77
|
-
}
|
|
78
74
|
return new MathTSEngineTensor(unwrap(a, 'sub').sub(unwrap(b, 'sub')));
|
|
79
75
|
}
|
|
80
76
|
mul(a, b) {
|
|
81
|
-
if (
|
|
82
|
-
return a.mul(b);
|
|
83
|
-
}
|
|
84
|
-
if ('tape' in a && 'tape' in b) {
|
|
77
|
+
if (isTracedTensor(a) && isTracedTensor(b) && tracedMode(a) === tracedMode(b))
|
|
85
78
|
return a.mul(b);
|
|
86
|
-
}
|
|
87
79
|
return new MathTSEngineTensor(unwrap(a, 'mul').mul(unwrap(b, 'mul')));
|
|
88
80
|
}
|
|
89
81
|
scale(t, k) {
|
|
90
|
-
if (
|
|
82
|
+
if (isTracedTensor(t))
|
|
91
83
|
return t.scale(k);
|
|
92
|
-
}
|
|
93
84
|
return new MathTSEngineTensor(unwrap(t, 'scale').scale(k));
|
|
94
85
|
}
|
|
95
86
|
identity(n) {
|
|
@@ -130,8 +121,8 @@ export class MathTSEngine {
|
|
|
130
121
|
// Narrow the dynamic import to the local call-site shape.
|
|
131
122
|
autograd = await import('@danielsimonjr/mathts-autograd');
|
|
132
123
|
}
|
|
133
|
-
catch {
|
|
134
|
-
throw new EngineCapabilityError('MathTSEngine', 'forwardGrad');
|
|
124
|
+
catch (cause) {
|
|
125
|
+
throw new EngineCapabilityError('MathTSEngine', 'forwardGrad', { cause });
|
|
135
126
|
}
|
|
136
127
|
// S1 fix: pass fn UNCHANGED. autograd.forwardGrad wraps x as a DualTensor;
|
|
137
128
|
// MathTSEngine's arithmetic methods (mul/add/sub/scale) MUST dispatch
|
|
@@ -164,8 +155,8 @@ export class MathTSEngine {
|
|
|
164
155
|
// Narrow the dynamic import to the local call-site shape.
|
|
165
156
|
autograd = await import('@danielsimonjr/mathts-autograd');
|
|
166
157
|
}
|
|
167
|
-
catch {
|
|
168
|
-
throw new EngineCapabilityError('MathTSEngine', 'reverseGrad');
|
|
158
|
+
catch (cause) {
|
|
159
|
+
throw new EngineCapabilityError('MathTSEngine', 'reverseGrad', { cause });
|
|
169
160
|
}
|
|
170
161
|
// S1 fix: pass fn UNCHANGED (see forwardGrad note above). autograd.reverseGrad
|
|
171
162
|
// wraps x as a TapedTensor; MathTSEngine's mul/add/sub/scale dispatch
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mathts-engine.js","sourceRoot":"","sources":["../../src/numerical/mathts-engine.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"mathts-engine.js","sourceRoot":"","sources":["../../src/numerical/mathts-engine.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * MathTSEngine — a TensorEngine implementation backed by\n * @danielsimonjr/mathts-tensor's rank-N Tensor. It is the only engine.\n * The MathTS packages are required dependencies; see engine-registry.ts.\n *\n * Thin adapter: it translates the TensorEngine contract onto the MathTS\n * Tensor's methods. The engine-conformance suite is what checks that\n * translation.\n *\n * @module numerical/mathts-engine\n */\nimport { Tensor } from '@danielsimonjr/mathts-tensor';\nimport type { EngineTensor, TensorEngine, EinsumSpec, ForwardGradResult, ReverseGradResult } from './tensor-engine.js';\nimport type { NestedArray } from './types.js';\nimport { NumericalBackendError } from './errors.js';\nimport { EngineCapabilityError, isTracedTensor, tracedMode } from './tensor-engine.js';\n\n/** EngineTensor handle wrapping a MathTS Tensor. */\nclass MathTSEngineTensor implements EngineTensor {\n constructor(readonly inner: Tensor) {}\n get shape(): ReadonlyArray<number> { return this.inner.shape; }\n}\n\nfunction unwrap(t: EngineTensor, op: string): Tensor {\n if (!(t instanceof MathTSEngineTensor)) {\n throw new NumericalBackendError(`MathTSEngine.${op}: operand is not a MathTSEngineTensor`);\n }\n return t.inner;\n}\n\n/**\n * Call-site shape for `@danielsimonjr/mathts-autograd`. The package is a\n * required dependency and is loaded at the call, so this interface covers\n * the dynamic-import result only.\n * @internal\n */\ninterface MathTSAutograd {\n forwardGrad(\n fn: (x: EngineTensor) => EngineTensor,\n x: Tensor,\n ): Promise<{ value: Tensor; jacobian: Tensor }>;\n reverseGrad(\n fn: (x: EngineTensor) => EngineTensor,\n x: Tensor,\n cotangent?: Tensor,\n ): Promise<{ value: Tensor; gradient: Tensor }>;\n}\n\n/**\n * `TensorEngine` backed by `@danielsimonjr/mathts-tensor`'s rank-N Tensor.\n * The MathTS packages are required dependencies.\n *\n * @public — reachable only via the\n * `universal-physics-tensor/numerical/mathts-engine` exports subpath.\n * Intentionally NOT re-exported from the root barrel.\n */\nexport class MathTSEngine implements TensorEngine {\n readonly name = 'MathTSEngine';\n\n fromNested(data: NestedArray, shape: ReadonlyArray<number>): EngineTensor {\n // UPT's NestedArray and MathTS's are the same shape; the type parameters differ.\n return new MathTSEngineTensor(Tensor.fromNested(data as never, shape));\n }\n toNested(t: EngineTensor): NestedArray {\n return unwrap(t, 'toNested').toNested();\n }\n\n einsum(spec: EinsumSpec, ...operands: EngineTensor[]): EngineTensor {\n const inner = operands.map((o, i) => unwrap(o, `einsum (operand ${i})`));\n return new MathTSEngineTensor(Tensor.einsum(spec, ...inner));\n }\n matMul(a: EngineTensor, b: EngineTensor): EngineTensor {\n return new MathTSEngineTensor(unwrap(a, 'matMul').matMul(unwrap(b, 'matMul')));\n }\n transpose(t: EngineTensor, perm?: ReadonlyArray<number>): EngineTensor {\n return new MathTSEngineTensor(unwrap(t, 'transpose').transpose(perm));\n }\n reshape(t: EngineTensor, shape: ReadonlyArray<number>): EngineTensor {\n return new MathTSEngineTensor(unwrap(t, 'reshape').reshape(shape));\n }\n\n // AD dispatch. `@danielsimonjr/mathts-autograd` wraps the traced input as a\n // DualTensor (forward mode, carries `tangent`) or a TapedTensor (reverse\n // mode, carries `tape`) and calls these methods with it. The operations a\n // wrapped tensor implements are declared on `TracedEngineTensor`; the guard\n // `isTracedTensor` is the dispatch. Two operands trace together only when\n // both are wrapped in the same mode; a mixed or half-wrapped pair falls\n // through to the plain path, whose `unwrap` refuses it.\n add(a: EngineTensor, b: EngineTensor): EngineTensor {\n if (isTracedTensor(a) && isTracedTensor(b) && tracedMode(a) === tracedMode(b)) return a.add(b);\n return new MathTSEngineTensor(unwrap(a, 'add').add(unwrap(b, 'add')));\n }\n sub(a: EngineTensor, b: EngineTensor): EngineTensor {\n if (isTracedTensor(a) && isTracedTensor(b) && tracedMode(a) === tracedMode(b)) return a.sub(b);\n return new MathTSEngineTensor(unwrap(a, 'sub').sub(unwrap(b, 'sub')));\n }\n mul(a: EngineTensor, b: EngineTensor): EngineTensor {\n if (isTracedTensor(a) && isTracedTensor(b) && tracedMode(a) === tracedMode(b)) return a.mul(b);\n return new MathTSEngineTensor(unwrap(a, 'mul').mul(unwrap(b, 'mul')));\n }\n scale(t: EngineTensor, k: number): EngineTensor {\n if (isTracedTensor(t)) return t.scale(k);\n return new MathTSEngineTensor(unwrap(t, 'scale').scale(k));\n }\n\n identity(n: number): EngineTensor {\n return new MathTSEngineTensor(Tensor.identity(n));\n }\n normInf(t: EngineTensor): number {\n return unwrap(t, 'normInf').normInf();\n }\n\n // ---------------------------------------------------------------------------\n // Internal helpers for AD boundary conversions\n // ---------------------------------------------------------------------------\n\n /** Unwrap an EngineTensor to its underlying MathTS Tensor (for the AD boundary). */\n private toMathTSTensor(t: EngineTensor): Tensor {\n return unwrap(t, 'toMathTSTensor');\n }\n\n /** Wrap a MathTS Tensor (returned by autograd) back as an EngineTensor. */\n private fromMathTSTensor(t: Tensor): EngineTensor {\n return new MathTSEngineTensor(t);\n }\n\n // ---------------------------------------------------------------------------\n // Forward-mode AD (Jacobian-vector product)\n // ---------------------------------------------------------------------------\n\n /**\n * Forward-mode automatic differentiation via a lazy-imported\n * `@danielsimonjr/mathts-autograd`. Throws `EngineCapabilityError` if that\n * import fails.\n *\n * S1 fix: `fn` is passed UNCHANGED to `autograd.forwardGrad`. The autograd\n * package wraps `x` as a DualTensor internally; MathTSEngine's arithmetic\n * methods (mul/add/sub/scale) must dispatch DualTensor inputs through to\n * mathts-autograd's dual arithmetic — there must be no fn-wrapping at the\n * boundary, which would strip DualTensor instrumentation and silence the\n * AD trace.\n */\n async forwardGrad(\n fn: (x: EngineTensor) => EngineTensor,\n x: EngineTensor,\n ): Promise<ForwardGradResult> {\n let autograd: MathTSAutograd;\n try {\n // Narrow the dynamic import to the local call-site shape.\n autograd = await import('@danielsimonjr/mathts-autograd') as unknown as MathTSAutograd;\n } catch (cause) { throw new EngineCapabilityError('MathTSEngine', 'forwardGrad', { cause }); }\n\n // S1 fix: pass fn UNCHANGED. autograd.forwardGrad wraps x as a DualTensor;\n // MathTSEngine's arithmetic methods (mul/add/sub/scale) MUST dispatch\n // DualTensor inputs to mathts-autograd's dual arithmetic via\n // `'tangent' in arg`. Wrapping fn at the boundary strips the\n // instrumentation — the v0 sketch's bug.\n const xMathts = this.toMathTSTensor(x);\n const { value, jacobian } = await autograd.forwardGrad(fn, xMathts);\n return {\n value: this.fromMathTSTensor(value),\n jacobian: this.fromMathTSTensor(jacobian),\n };\n }\n\n // ---------------------------------------------------------------------------\n // Reverse-mode AD (vector-Jacobian product)\n // ---------------------------------------------------------------------------\n\n /**\n * Reverse-mode automatic differentiation via a lazy-imported\n * `@danielsimonjr/mathts-autograd`. Throws `EngineCapabilityError` if that\n * import fails.\n *\n * S1 fix: `fn` is passed UNCHANGED (see forwardGrad note above). The\n * autograd package wraps `x` as a TapedTensor; MathTSEngine's op methods\n * must dispatch TapedTensor inputs to mathts-autograd's tape arithmetic via\n * `'tape' in arg` branching.\n */\n async reverseGrad(\n fn: (x: EngineTensor) => EngineTensor,\n x: EngineTensor,\n cotangent?: EngineTensor,\n ): Promise<ReverseGradResult> {\n let autograd: MathTSAutograd;\n try {\n // Narrow the dynamic import to the local call-site shape.\n autograd = await import('@danielsimonjr/mathts-autograd') as unknown as MathTSAutograd;\n } catch (cause) { throw new EngineCapabilityError('MathTSEngine', 'reverseGrad', { cause }); }\n\n // S1 fix: pass fn UNCHANGED (see forwardGrad note above). autograd.reverseGrad\n // wraps x as a TapedTensor; MathTSEngine's mul/add/sub/scale dispatch\n // TapedTensor inputs to mathts-autograd's tape arithmetic via `'tape' in arg`.\n const xMathts = this.toMathTSTensor(x);\n const ctMathts = cotangent ? this.toMathTSTensor(cotangent) : undefined;\n const { value, gradient } = await autograd.reverseGrad(fn, xMathts, ctMathts);\n return {\n value: this.fromMathTSTensor(value),\n gradient: this.fromMathTSTensor(gradient),\n };\n }\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"metric-inverse.d.ts","sourceRoot":"","sources":["../../src/numerical/metric-inverse.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,OAAO,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,6BAA6B,CAAC;AACvE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,qCAAqC,CAAC;AAE5E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAMlD;cACc;AACd,wBAAsB,qBAAqB,CACzC,QAAQ,EAAE,gBAAgB,EAC1B,CAAC,EAAE,gBAAgB,EACnB,MAAM,EAAE,eAAe,EACvB,SAAS,GAAE,MAA0B,EACrC,OAAO,CAAC,EAAE;IAAE,MAAM,CAAC,EAAE,YAAY,CAAA;CAAE,GAClC,OAAO,CAAC;IAAE,YAAY,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,SAAS,CAAA;CAAE,CAAC,CAkCxD;AAED;;;2EAG2E;AAC3E,wBAAgB,iBAAiB,CAC/B,IAAI,EAAE,QAAQ,GACb;IAAE,MAAM,EAAE,gBAAgB,CAAC;IAAC,MAAM,EAAE,gBAAgB,CAAA;CAAE,GAAG,IAAI,
|
|
1
|
+
{"version":3,"file":"metric-inverse.d.ts","sourceRoot":"","sources":["../../src/numerical/metric-inverse.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,OAAO,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,6BAA6B,CAAC;AACvE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,qCAAqC,CAAC;AAE5E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAMlD;cACc;AACd,wBAAsB,qBAAqB,CACzC,QAAQ,EAAE,gBAAgB,EAC1B,CAAC,EAAE,gBAAgB,EACnB,MAAM,EAAE,eAAe,EACvB,SAAS,GAAE,MAA0B,EACrC,OAAO,CAAC,EAAE;IAAE,MAAM,CAAC,EAAE,YAAY,CAAA;CAAE,GAClC,OAAO,CAAC;IAAE,YAAY,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,SAAS,CAAA;CAAE,CAAC,CAkCxD;AAED;;;2EAG2E;AAC3E,wBAAgB,iBAAiB,CAC/B,IAAI,EAAE,QAAQ,GACb;IAAE,MAAM,EAAE,gBAAgB,CAAC;IAAC,MAAM,EAAE,gBAAgB,CAAA;CAAE,GAAG,IAAI,CA0F/D"}
|
|
@@ -39,54 +39,91 @@ export async function evaluateMetricInverse(gInverse, g, inputs, tolerance = DEF
|
|
|
39
39
|
* @internal — cross-module use only; not part of the consumer surface. */
|
|
40
40
|
export function scanForMetricPair(node) {
|
|
41
41
|
const metrics = [];
|
|
42
|
+
// An exhaustive switch: a node kind added to `ExprNode` without an arm here
|
|
43
|
+
// fails to compile at the `never` arm, instead of becoming a silent leaf (the
|
|
44
|
+
// way `kretschmann-scalar` and `einstein-equation` were, so the warning never
|
|
45
|
+
// fired on them). A kind with no metric inside is listed as a leaf on purpose.
|
|
42
46
|
const walk = (n) => {
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
47
|
+
switch (n.kind) {
|
|
48
|
+
case 'metric-tensor':
|
|
49
|
+
metrics.push(n);
|
|
50
|
+
break;
|
|
51
|
+
case 'op':
|
|
52
|
+
case 'tensor-product':
|
|
53
|
+
n.args.forEach(walk);
|
|
54
|
+
break;
|
|
55
|
+
case 'integral':
|
|
56
|
+
walk(n.over);
|
|
57
|
+
walk(n.integrand);
|
|
58
|
+
if (n.lower !== undefined)
|
|
59
|
+
walk(n.lower);
|
|
60
|
+
if (n.upper !== undefined)
|
|
61
|
+
walk(n.upper);
|
|
62
|
+
break;
|
|
63
|
+
case 'derivative':
|
|
64
|
+
walk(n.of);
|
|
65
|
+
walk(n.wrt);
|
|
66
|
+
break;
|
|
67
|
+
case 'variational-derivative':
|
|
68
|
+
walk(n.functional);
|
|
69
|
+
walk(n.field);
|
|
70
|
+
walk(n.over);
|
|
71
|
+
break;
|
|
72
|
+
case 'dirac-delta':
|
|
73
|
+
case 'transcendental':
|
|
74
|
+
case 'abs':
|
|
75
|
+
walk(n.arg);
|
|
76
|
+
break;
|
|
77
|
+
case 'tensor-partial-derivative':
|
|
78
|
+
walk(n.of);
|
|
79
|
+
walk(n.wrt);
|
|
80
|
+
break;
|
|
81
|
+
case 'covariant-derivative':
|
|
82
|
+
walk(n.of);
|
|
83
|
+
walk(n.gLower);
|
|
84
|
+
walk(n.gInverse);
|
|
85
|
+
break;
|
|
86
|
+
case 'riemann-tensor':
|
|
87
|
+
walk(n.gLower);
|
|
88
|
+
walk(n.gInverse);
|
|
89
|
+
break;
|
|
90
|
+
case 'ricci-tensor':
|
|
91
|
+
case 'bianchi-residual':
|
|
92
|
+
walk(n.riemann); // the inner Riemann holds the pair
|
|
93
|
+
break;
|
|
94
|
+
case 'einstein-tensor':
|
|
95
|
+
walk(n.riemann);
|
|
96
|
+
walk(n.gLower);
|
|
97
|
+
walk(n.gInverse);
|
|
98
|
+
break;
|
|
99
|
+
case 'weyl-tensor':
|
|
100
|
+
walk(n.metric);
|
|
101
|
+
break;
|
|
102
|
+
case 'kretschmann-scalar':
|
|
103
|
+
walk(n.riemann);
|
|
104
|
+
walk(n.metric);
|
|
105
|
+
break;
|
|
106
|
+
case 'killing-vector':
|
|
107
|
+
walk(n.metric);
|
|
108
|
+
break;
|
|
109
|
+
case 'conserved-charge':
|
|
110
|
+
walk(n.killing);
|
|
111
|
+
break;
|
|
112
|
+
case 'einstein-equation':
|
|
113
|
+
walk(n.lhs);
|
|
114
|
+
walk(n.metric);
|
|
115
|
+
break;
|
|
116
|
+
case 'symbol':
|
|
117
|
+
case 'tensor-symbol':
|
|
118
|
+
case 'kronecker-delta':
|
|
119
|
+
case 'stress-energy':
|
|
120
|
+
case 'cosmological-constant':
|
|
121
|
+
break; // leaves: no metric inside
|
|
122
|
+
default: {
|
|
123
|
+
const unreachable = n;
|
|
124
|
+
throw new NumericalBackendError(`scanForMetricPair: unhandled node kind ${String(unreachable.kind)}`);
|
|
125
|
+
}
|
|
52
126
|
}
|
|
53
|
-
else if (n.kind === 'derivative') {
|
|
54
|
-
walk(n.of);
|
|
55
|
-
walk(n.wrt);
|
|
56
|
-
}
|
|
57
|
-
else if (n.kind === 'tensor-partial-derivative') {
|
|
58
|
-
walk(n.of);
|
|
59
|
-
walk(n.wrt);
|
|
60
|
-
}
|
|
61
|
-
// v0.5.1 PC-3: walk the v0.4.0+v0.5.0 curvature node kinds so that
|
|
62
|
-
// InverseMetricInconsistencyWarning fires on the GR pipeline. Prior to
|
|
63
|
-
// this, scan stopped at riemann/ricci/einstein/bianchi/covariant-derivative
|
|
64
|
-
// and the warning was silently never emitted on the whole curvature stack
|
|
65
|
-
// — "a validation mechanism that doesn't run is worse than no validation
|
|
66
|
-
// at all" (Adam, v0.5.1 audit).
|
|
67
|
-
//
|
|
68
|
-
// FUTURE: when a new curvature kind is added, this scan needs an arm.
|
|
69
|
-
else if (n.kind === 'covariant-derivative') {
|
|
70
|
-
walk(n.of);
|
|
71
|
-
walk(n.gLower);
|
|
72
|
-
walk(n.gInverse);
|
|
73
|
-
}
|
|
74
|
-
else if (n.kind === 'riemann-tensor') {
|
|
75
|
-
walk(n.gLower);
|
|
76
|
-
walk(n.gInverse);
|
|
77
|
-
}
|
|
78
|
-
else if (n.kind === 'ricci-tensor') {
|
|
79
|
-
walk(n.riemann); // inner Riemann walks its own gLower/gInverse
|
|
80
|
-
}
|
|
81
|
-
else if (n.kind === 'einstein-tensor') {
|
|
82
|
-
walk(n.riemann);
|
|
83
|
-
walk(n.gLower);
|
|
84
|
-
walk(n.gInverse);
|
|
85
|
-
}
|
|
86
|
-
else if (n.kind === 'bianchi-residual') {
|
|
87
|
-
walk(n.riemann); // recurse via inner Riemann
|
|
88
|
-
}
|
|
89
|
-
// tensor-symbol / kronecker-delta / symbol: leaves, no metric inside
|
|
90
127
|
};
|
|
91
128
|
walk(node);
|
|
92
129
|
const lower = metrics.find((m) => m.indices.every((i) => i.variance === 'lower'));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"metric-inverse.js","sourceRoot":"","sources":["../../src/numerical/metric-inverse.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"metric-inverse.js","sourceRoot":"","sources":["../../src/numerical/metric-inverse.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * InverseMetricInconsistencyWarning — numerical path. Builds g⁻¹ and g as\n * EngineTensors, computes ‖matMul(g⁻¹, g) − I‖_∞, and emits a\n * 'warning'-severity Violation when it exceeds tolerance. v0.3.5-Design.md\n * §7. Resolves the v0.3.0 §13 Q2 deferral. `scanForMetricPair` finds an\n * identifiable lower/upper metric pair in an AST so evaluateNumerical can\n * run the check automatically.\n *\n * @module numerical/metric-inverse\n */\nimport type { ExprNode, Violation } from '../dimensional/validator.js';\nimport type { MetricTensorNode } from '../dimensional/metric-validators.js';\nimport { DIMENSIONLESS } from '../dimensional/types.js';\nimport type { TensorEngine } from './tensor-engine.js';\nimport type { NumericalInputs } from './types.js';\nimport { getActiveEngine } from './engine-registry.js';\nimport { NumericalBackendError } from './errors.js';\n\nconst DEFAULT_TOLERANCE = 1e-10;\n\n/** Compute ‖g⁻¹g − I‖_∞ and, if it exceeds tolerance, return a warning.\n * @public */\nexport async function evaluateMetricInverse(\n gInverse: MetricTensorNode,\n g: MetricTensorNode,\n inputs: NumericalInputs,\n tolerance: number = DEFAULT_TOLERANCE,\n options?: { engine?: TensorEngine },\n): Promise<{ residualNorm: number; warning?: Violation }> {\n const engine = options?.engine ?? await getActiveEngine();\n const N = inputs.dimension ?? 4;\n\n const gInvData = inputs.tensors.get(gInverse.name);\n const gData = inputs.tensors.get(g.name);\n if (gInvData === undefined) {\n throw new NumericalBackendError(\n `evaluateMetricInverse: missing tensor components for \"${gInverse.name}\" in inputs.tensors`,\n );\n }\n if (gData === undefined) {\n throw new NumericalBackendError(\n `evaluateMetricInverse: missing tensor components for \"${g.name}\" in inputs.tensors`,\n );\n }\n const gInvT = engine.fromNested(gInvData, [N, N]);\n const gT = engine.fromNested(gData, [N, N]);\n const residual = engine.sub(engine.matMul(gInvT, gT), engine.identity(N));\n const residualNorm = engine.normInf(residual);\n\n if (residualNorm > tolerance) {\n const warning: Violation = {\n location: `${gInverse.name}·${g.name}`,\n expected: DIMENSIONLESS,\n actual: DIMENSIONLESS,\n note: `InverseMetricInconsistencyWarning: ‖${gInverse.name}·${g.name} − I‖_∞ = `\n + `${residualNorm.toExponential(3)} exceeds tolerance ${tolerance.toExponential(1)} — `\n + `the supplied metrics are not numerical inverses`,\n severity: 'warning',\n };\n return { residualNorm, warning };\n }\n return { residualNorm };\n}\n\n/** Walk an ExprNode tree; return the first all-lower / all-upper\n * metric-tensor pair found, or null. Cheap — evaluateNumerical already\n * walks the tree to lower it.\n * @internal — cross-module use only; not part of the consumer surface. */\nexport function scanForMetricPair(\n node: ExprNode,\n): { gLower: MetricTensorNode; gUpper: MetricTensorNode } | null {\n const metrics: MetricTensorNode[] = [];\n // An exhaustive switch: a node kind added to `ExprNode` without an arm here\n // fails to compile at the `never` arm, instead of becoming a silent leaf (the\n // way `kretschmann-scalar` and `einstein-equation` were, so the warning never\n // fired on them). A kind with no metric inside is listed as a leaf on purpose.\n const walk = (n: ExprNode): void => {\n switch (n.kind) {\n case 'metric-tensor':\n metrics.push(n);\n break;\n case 'op':\n case 'tensor-product':\n n.args.forEach(walk);\n break;\n case 'integral':\n walk(n.over);\n walk(n.integrand);\n if (n.lower !== undefined) walk(n.lower);\n if (n.upper !== undefined) walk(n.upper);\n break;\n case 'derivative':\n walk(n.of);\n walk(n.wrt);\n break;\n case 'variational-derivative':\n walk(n.functional);\n walk(n.field);\n walk(n.over);\n break;\n case 'dirac-delta':\n case 'transcendental':\n case 'abs':\n walk(n.arg);\n break;\n case 'tensor-partial-derivative':\n walk(n.of);\n walk(n.wrt);\n break;\n case 'covariant-derivative':\n walk(n.of);\n walk(n.gLower);\n walk(n.gInverse);\n break;\n case 'riemann-tensor':\n walk(n.gLower);\n walk(n.gInverse);\n break;\n case 'ricci-tensor':\n case 'bianchi-residual':\n walk(n.riemann); // the inner Riemann holds the pair\n break;\n case 'einstein-tensor':\n walk(n.riemann);\n walk(n.gLower);\n walk(n.gInverse);\n break;\n case 'weyl-tensor':\n walk(n.metric);\n break;\n case 'kretschmann-scalar':\n walk(n.riemann);\n walk(n.metric);\n break;\n case 'killing-vector':\n walk(n.metric);\n break;\n case 'conserved-charge':\n walk(n.killing);\n break;\n case 'einstein-equation':\n walk(n.lhs);\n walk(n.metric);\n break;\n case 'symbol':\n case 'tensor-symbol':\n case 'kronecker-delta':\n case 'stress-energy':\n case 'cosmological-constant':\n break; // leaves: no metric inside\n default: {\n const unreachable: never = n;\n throw new NumericalBackendError(`scanForMetricPair: unhandled node kind ${String((unreachable as { kind: unknown }).kind)}`);\n }\n }\n };\n walk(node);\n const lower = metrics.find((m) => m.indices.every((i) => i.variance === 'lower'));\n const upper = metrics.find((m) => m.indices.every((i) => i.variance === 'upper'));\n return lower && upper ? { gLower: lower, gUpper: upper } : null;\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"null-ic.js","sourceRoot":"","sources":["../../src/numerical/null-ic.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,MAAM,UAAU,iBAAiB,CAC/B,QAAsB,EACtB,GAAW,EACX,KAAa;IAEb,mEAAmE;IACnE,wCAAwC;IACxC,2CAA2C;IAC3C,MAAM,SAAS,GAAG,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,QAAQ,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,GAAG,KAAK,CAAC;IACzF,IAAI,SAAS,GAAG,CAAC,EAAE,CAAC;QAClB,MAAM,IAAI,UAAU,CAClB,4FAA4F,SAAS,GAAG,CACzG,CAAC;IACJ,CAAC;IACD,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IACjE,iDAAiD;IACjD,OAAO,CAAC,aAAa,CAAC;AACxB,CAAC"}
|
|
1
|
+
{"version":3,"file":"null-ic.js","sourceRoot":"","sources":["../../src/numerical/null-ic.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,MAAM,UAAU,iBAAiB,CAC/B,QAAsB,EACtB,GAAW,EACX,KAAa;IAEb,mEAAmE;IACnE,wCAAwC;IACxC,2CAA2C;IAC3C,MAAM,SAAS,GAAG,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,QAAQ,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,GAAG,KAAK,CAAC;IACzF,IAAI,SAAS,GAAG,CAAC,EAAE,CAAC;QAClB,MAAM,IAAI,UAAU,CAClB,4FAA4F,SAAS,GAAG,CACzG,CAAC;IACJ,CAAC;IACD,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IACjE,iDAAiD;IACjD,OAAO,CAAC,aAAa,CAAC;AACxB,CAAC","sourcesContent":["/**\n * Null initial-condition (null-IC) reconstruction helper (v0.6.0 Phase 1, Task 1.5).\n *\n * Extracted from `covariant-eikonal.ts` (lines 314–326) so that PC-1.5\n * bench harnesses measure the **actual production reconstruction** rather than\n * a toy approximation.\n *\n * The null condition for the geodesic Hamiltonian H = ½ g^{μν} p_μ p_ν = 0 in\n * the equatorial plane (p_θ = 0) with given p_t and p_φ is\n *\n * g^tt p_t² + g^rr p_r² + g^φφ p_φ² = 0\n * ⟹ p_r² = (−g^tt p_t² − g^φφ p_φ²) / g^rr\n *\n * The **negative** root is returned (inward photon: dr/dτ = g^rr p_r < 0).\n *\n * @module numerical/null-ic\n */\n\n/**\n * Solve `g^μν p_μ p_ν = 0` for `p_r` at the initial point of a null\n * geodesic, given the covariant momenta `p_t` and `p_φ` (equatorial plane,\n * `p_θ = 0`).\n *\n * This is the arithmetic the covariant-eikonal method (used by catalog\n * relation be-37) performs; extracted here so PC-1.5 bench harnesses\n * measure the exact same computation.\n *\n * @param gInverse - Contravariant metric g^{μν} at the starting point, as a\n * flat row-major `Float64Array(16)` indexed `gInverse[μ*4 + ν]` (v0.9.0 O-1).\n * Only the diagonal entries g^tt (index 0), g^rr (index 5), and g^φφ\n * (index 15) are used (static equatorial metric, `p_θ = 0`).\n * @param p_t - Covariant time momentum (affine normalization; `< 0`).\n * @param p_phi - Covariant angular momentum (impact-parameter encoding;\n * `= b * c` in the covariant-eikonal method's convention, used by\n * catalog relation be-37).\n * @returns `p_r < 0` (inward motion).\n * @throws RangeError if the null condition has no real solution at the\n * given point (impact parameter too large for the geometry).\n *\n * @public\n */\nexport function reconstructNullPr(\n gInverse: Float64Array,\n p_t: number,\n p_phi: number,\n): number {\n // v0.9.0 O-1: flat row-major layout, gInverse[mu*4 + nu] = g^{μν}.\n // g^tt p_t² + g^rr p_r² + g^φφ p_φ² = 0\n // ⟹ p_r² = (−g^tt p_t² − g^φφ p_φ²) / g^rr\n const numerator = -gInverse[0 * 4 + 0] * p_t * p_t - gInverse[3 * 4 + 3] * p_phi * p_phi;\n if (numerator < 0) {\n throw new RangeError(\n `reconstructNullPr: null condition has no real p_r (impact parameter too large; numerator=${numerator})`,\n );\n }\n const p_r_magnitude = Math.sqrt(numerator / gInverse[1 * 4 + 1]);\n // Inward motion: dr/dτ = g^rr p_r < 0 ⟹ p_r < 0.\n return -p_r_magnitude;\n}\n"]}
|
|
@@ -5,7 +5,8 @@ type ODESystem = (lambda: number, y: ReadonlyArray<number>) => number[];
|
|
|
5
5
|
/**
|
|
6
6
|
* Integrate `system` from affine parameter `lambda0` to `lambda1` in
|
|
7
7
|
* `steps` fixed RK4 steps, starting from state `y0`. Returns the final
|
|
8
|
-
* state vector. Classical 4th-order Runge-Kutta — global error O(h⁴).
|
|
8
|
+
* state vector. Classical 4th-order Runge-Kutta — global error O(h⁴). It takes
|
|
9
|
+
* exactly `steps` steps of (lambda1 − lambda0)/steps (`rk4Trajectory`).
|
|
9
10
|
*
|
|
10
11
|
* @internal — cross-module/test use only; not part of the consumer surface.
|
|
11
12
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"null-ray-integrator.d.ts","sourceRoot":"","sources":["../../src/numerical/null-ray-integrator.ts"],"names":[],"mappings":"AAcA;;+EAE+E;AAC/E,KAAK,SAAS,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,EAAE,aAAa,CAAC,MAAM,CAAC,KAAK,MAAM,EAAE,CAAC;AAUxE
|
|
1
|
+
{"version":3,"file":"null-ray-integrator.d.ts","sourceRoot":"","sources":["../../src/numerical/null-ray-integrator.ts"],"names":[],"mappings":"AAcA;;+EAE+E;AAC/E,KAAK,SAAS,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,EAAE,aAAa,CAAC,MAAM,CAAC,KAAK,MAAM,EAAE,CAAC;AAUxE;;;;;;;GAOG;AACH,wBAAgB,YAAY,CAC1B,MAAM,EAAE,SAAS,EACjB,EAAE,EAAE,aAAa,CAAC,MAAM,CAAC,EACzB,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,MAAM,GACZ,MAAM,EAAE,CAiBV"}
|
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Fixed-step classical RK4 integrator for affine-parameterized null
|
|
3
|
-
* geodesics
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
* `
|
|
7
|
-
*
|
|
8
|
-
* vectors, no TensorEngine dependency.
|
|
3
|
+
* geodesics, and the one-step RK4 the atlas and case modules call. The
|
|
4
|
+
* covariant-eikonal path (`src/numerical/covariant-eikonal.ts`) uses the
|
|
5
|
+
* symplectic `integrateGeodesicGL4` instead. The fixed steps are
|
|
6
|
+
* `rk4Trajectory` (`rk4-trajectory.ts`, MathTS `solveODESystem` with `dt`),
|
|
7
|
+
* the one owner of the step count; this module returns its last state.
|
|
8
|
+
* Operates on plain `number[]` state vectors, no TensorEngine dependency.
|
|
9
9
|
*
|
|
10
10
|
* @module numerical/null-ray-integrator
|
|
11
11
|
*/
|
|
12
|
-
import { solveODESystem } from '@danielsimonjr/mathts-functions';
|
|
13
12
|
import { NumericalBackendError } from './errors.js';
|
|
13
|
+
import { rk4Trajectory } from './rk4-trajectory.js';
|
|
14
14
|
function checkLength(k, expected) {
|
|
15
15
|
if (k.length !== expected) {
|
|
16
16
|
throw new NumericalBackendError(`integrateRK4: ODE system returned a state vector of length ${k.length}, expected ${expected}`);
|
|
@@ -19,7 +19,8 @@ function checkLength(k, expected) {
|
|
|
19
19
|
/**
|
|
20
20
|
* Integrate `system` from affine parameter `lambda0` to `lambda1` in
|
|
21
21
|
* `steps` fixed RK4 steps, starting from state `y0`. Returns the final
|
|
22
|
-
* state vector. Classical 4th-order Runge-Kutta — global error O(h⁴).
|
|
22
|
+
* state vector. Classical 4th-order Runge-Kutta — global error O(h⁴). It takes
|
|
23
|
+
* exactly `steps` steps of (lambda1 − lambda0)/steps (`rk4Trajectory`).
|
|
23
24
|
*
|
|
24
25
|
* @internal — cross-module/test use only; not part of the consumer surface.
|
|
25
26
|
*/
|
|
@@ -27,13 +28,12 @@ export function integrateRK4(system, y0, lambda0, lambda1, steps) {
|
|
|
27
28
|
if (!Number.isInteger(steps) || steps <= 0) {
|
|
28
29
|
throw new NumericalBackendError(`integrateRK4: step count must be a positive integer, got ${steps}`);
|
|
29
30
|
}
|
|
30
|
-
const h = (lambda1 - lambda0) / steps;
|
|
31
31
|
const yStart = [...y0];
|
|
32
|
-
const
|
|
32
|
+
const states = rk4Trajectory((lambda, y) => {
|
|
33
33
|
const k = system(lambda, y);
|
|
34
34
|
checkLength(k, yStart.length);
|
|
35
35
|
return k;
|
|
36
|
-
}, yStart,
|
|
37
|
-
return [
|
|
36
|
+
}, yStart, lambda0, lambda1, steps);
|
|
37
|
+
return states[states.length - 1] ?? yStart;
|
|
38
38
|
}
|
|
39
39
|
//# sourceMappingURL=null-ray-integrator.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"null-ray-integrator.js","sourceRoot":"","sources":["../../src/numerical/null-ray-integrator.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"null-ray-integrator.js","sourceRoot":"","sources":["../../src/numerical/null-ray-integrator.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,OAAO,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AACpD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAOpD,SAAS,WAAW,CAAC,CAAwB,EAAE,QAAgB;IAC7D,IAAI,CAAC,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;QAC1B,MAAM,IAAI,qBAAqB,CAC7B,8DAA8D,CAAC,CAAC,MAAM,cAAc,QAAQ,EAAE,CAC/F,CAAC;IACJ,CAAC;AACH,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,YAAY,CAC1B,MAAiB,EACjB,EAAyB,EACzB,OAAe,EACf,OAAe,EACf,KAAa;IAEb,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,KAAK,IAAI,CAAC,EAAE,CAAC;QAC3C,MAAM,IAAI,qBAAqB,CAAC,4DAA4D,KAAK,EAAE,CAAC,CAAC;IACvG,CAAC;IACD,MAAM,MAAM,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC;IACvB,MAAM,MAAM,GAAG,aAAa,CAC1B,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;QACZ,MAAM,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;QAC5B,WAAW,CAAC,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;QAC9B,OAAO,CAAC,CAAC;IACX,CAAC,EACD,MAAM,EACN,OAAO,EACP,OAAO,EACP,KAAK,CACN,CAAC;IACF,OAAO,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,MAAM,CAAC;AAC7C,CAAC","sourcesContent":["/**\n * Fixed-step classical RK4 integrator for affine-parameterized null\n * geodesics, and the one-step RK4 the atlas and case modules call. The\n * covariant-eikonal path (`src/numerical/covariant-eikonal.ts`) uses the\n * symplectic `integrateGeodesicGL4` instead. The fixed steps are\n * `rk4Trajectory` (`rk4-trajectory.ts`, MathTS `solveODESystem` with `dt`),\n * the one owner of the step count; this module returns its last state.\n * Operates on plain `number[]` state vectors, no TensorEngine dependency.\n *\n * @module numerical/null-ray-integrator\n */\nimport { NumericalBackendError } from './errors.js';\nimport { rk4Trajectory } from './rk4-trajectory.js';\n\n/** A first-order ODE system: dy/dλ = f(λ, y). `y` and the return are\n * state vectors of equal length.\n * v0.6.1: dropped export — was @internal-tagged with no external consumer. */\ntype ODESystem = (lambda: number, y: ReadonlyArray<number>) => number[];\n\nfunction checkLength(k: ReadonlyArray<number>, expected: number): void {\n if (k.length !== expected) {\n throw new NumericalBackendError(\n `integrateRK4: ODE system returned a state vector of length ${k.length}, expected ${expected}`,\n );\n }\n}\n\n/**\n * Integrate `system` from affine parameter `lambda0` to `lambda1` in\n * `steps` fixed RK4 steps, starting from state `y0`. Returns the final\n * state vector. Classical 4th-order Runge-Kutta — global error O(h⁴). It takes\n * exactly `steps` steps of (lambda1 − lambda0)/steps (`rk4Trajectory`).\n *\n * @internal — cross-module/test use only; not part of the consumer surface.\n */\nexport function integrateRK4(\n system: ODESystem,\n y0: ReadonlyArray<number>,\n lambda0: number,\n lambda1: number,\n steps: number,\n): number[] {\n if (!Number.isInteger(steps) || steps <= 0) {\n throw new NumericalBackendError(`integrateRK4: step count must be a positive integer, got ${steps}`);\n }\n const yStart = [...y0];\n const states = rk4Trajectory(\n (lambda, y) => {\n const k = system(lambda, y);\n checkLength(k, yStart.length);\n return k;\n },\n yStart,\n lambda0,\n lambda1,\n steps,\n );\n return states[states.length - 1] ?? yStart;\n}\n"]}
|
|
@@ -50,7 +50,7 @@
|
|
|
50
50
|
*
|
|
51
51
|
* @module numerical/painleve-gullstrand-metric
|
|
52
52
|
*/
|
|
53
|
-
import {
|
|
53
|
+
import { schwarzschildRadius } from './schwarzschild.js';
|
|
54
54
|
/**
|
|
55
55
|
* Schwarzschild radius `r_s = 2 G M / c²` for a body of mass `M`.
|
|
56
56
|
* Inlined here to avoid an out-of-rootDir import on the test
|
|
@@ -59,7 +59,7 @@ import { C_SI, G_SI } from '../core/constants.js';
|
|
|
59
59
|
* @internal
|
|
60
60
|
*/
|
|
61
61
|
function schwarzschildRs(M_kg) {
|
|
62
|
-
return (
|
|
62
|
+
return schwarzschildRadius(M_kg);
|
|
63
63
|
}
|
|
64
64
|
/**
|
|
65
65
|
* Builds a Painlevé-Gullstrand metric function `g_μν(T, r, θ, φ)`
|