universal-physics-tensor 8.0.0 → 10.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +26 -21
- package/data/atlas/atlas.json +75 -64
- package/data/atlas/atlas.jsonld +1 -1
- package/data/atlas/diffusion.json +23 -22
- package/data/atlas/oscillators.json +21 -16
- package/data/atlas/waves.json +33 -28
- package/data/bridge-catalog.json +1356 -1791
- package/data/bridge-catalog.schema.json +789 -46
- package/data/quantities.json +280 -234
- package/data/quantities.schema.json +52 -0
- package/data/schemas/atlas-record.v0.json +184 -46
- package/data/units.json +1178 -0
- package/data/units.schema.json +124 -0
- package/dist/atlas/applicability.d.ts.map +1 -1
- package/dist/atlas/applicability.js +14 -3
- package/dist/atlas/applicability.js.map +1 -1
- package/dist/atlas/association.d.ts +1 -1
- package/dist/atlas/association.js.map +1 -1
- package/dist/atlas/benchmark/backend-shapes.d.ts.map +1 -1
- package/dist/atlas/benchmark/backend-shapes.js +5 -1
- package/dist/atlas/benchmark/backend-shapes.js.map +1 -1
- package/dist/atlas/benchmark/baselines.d.ts.map +1 -1
- package/dist/atlas/benchmark/baselines.js +8 -0
- package/dist/atlas/benchmark/baselines.js.map +1 -1
- package/dist/atlas/benchmark/hybrid-retrieval.d.ts +3 -2
- package/dist/atlas/benchmark/hybrid-retrieval.d.ts.map +1 -1
- package/dist/atlas/benchmark/hybrid-retrieval.js +16 -12
- package/dist/atlas/benchmark/hybrid-retrieval.js.map +1 -1
- package/dist/atlas/benchmark/leakage.js.map +1 -1
- package/dist/atlas/benchmark/loader.js.map +1 -1
- package/dist/atlas/benchmark/run-atlas.d.ts.map +1 -1
- package/dist/atlas/benchmark/run-atlas.js +14 -2
- package/dist/atlas/benchmark/run-atlas.js.map +1 -1
- package/dist/atlas/benchmark/stats.d.ts +1 -1
- package/dist/atlas/benchmark/stats.d.ts.map +1 -1
- package/dist/atlas/benchmark/stats.js +1 -1
- package/dist/atlas/benchmark/stats.js.map +1 -1
- package/dist/atlas/benchmark/study.js.map +1 -1
- package/dist/atlas/benchmark/types.js.map +1 -1
- package/dist/atlas/bridge-record.d.ts +4 -4
- package/dist/atlas/bridge-record.d.ts.map +1 -1
- package/dist/atlas/bridge-record.js +6 -6
- package/dist/atlas/bridge-record.js.map +1 -1
- package/dist/atlas/catalog-formal-ref.js.map +1 -1
- package/dist/atlas/chain-pipeline.d.ts +0 -11
- package/dist/atlas/chain-pipeline.d.ts.map +1 -1
- package/dist/atlas/chain-pipeline.js +5 -16
- package/dist/atlas/chain-pipeline.js.map +1 -1
- package/dist/atlas/composition-table.js.map +1 -1
- package/dist/atlas/conventions.js.map +1 -1
- package/dist/atlas/coverage.d.ts +2 -2
- package/dist/atlas/coverage.js.map +1 -1
- package/dist/atlas/derivation.js.map +1 -1
- package/dist/atlas/derive-evidence.d.ts +6 -4
- package/dist/atlas/derive-evidence.d.ts.map +1 -1
- package/dist/atlas/derive-evidence.js +7 -2
- package/dist/atlas/derive-evidence.js.map +1 -1
- package/dist/atlas/diffusion/bridges-closure.d.ts.map +1 -1
- package/dist/atlas/diffusion/bridges-closure.js +0 -5
- package/dist/atlas/diffusion/bridges-closure.js.map +1 -1
- package/dist/atlas/diffusion/bridges.d.ts.map +1 -1
- package/dist/atlas/diffusion/bridges.js +0 -3
- package/dist/atlas/diffusion/bridges.js.map +1 -1
- package/dist/atlas/diffusion/dimensions.js.map +1 -1
- package/dist/atlas/diffusion/index.d.ts +1 -1
- package/dist/atlas/diffusion/index.d.ts.map +1 -1
- package/dist/atlas/diffusion/index.js.map +1 -1
- package/dist/atlas/diffusion/models.js.map +1 -1
- package/dist/atlas/diffusion/numerics.js.map +1 -1
- package/dist/atlas/error-algebra.d.ts +6 -0
- package/dist/atlas/error-algebra.d.ts.map +1 -1
- package/dist/atlas/error-algebra.js +26 -0
- package/dist/atlas/error-algebra.js.map +1 -1
- package/dist/atlas/export.d.ts +18 -2
- package/dist/atlas/export.d.ts.map +1 -1
- package/dist/atlas/export.js +9 -3
- package/dist/atlas/export.js.map +1 -1
- package/dist/atlas/families.d.ts +19 -2
- package/dist/atlas/families.d.ts.map +1 -1
- package/dist/atlas/families.js +26 -3
- package/dist/atlas/families.js.map +1 -1
- package/dist/atlas/family.d.ts +27 -0
- package/dist/atlas/family.d.ts.map +1 -0
- package/dist/atlas/family.js +12 -0
- package/dist/atlas/family.js.map +1 -0
- package/dist/atlas/index.d.ts +3 -2
- package/dist/atlas/index.d.ts.map +1 -1
- package/dist/atlas/index.js +2 -1
- package/dist/atlas/index.js.map +1 -1
- package/dist/atlas/link-prediction.d.ts +1 -1
- package/dist/atlas/link-prediction.d.ts.map +1 -1
- package/dist/atlas/link-prediction.js.map +1 -1
- package/dist/atlas/model.js.map +1 -1
- package/dist/atlas/oscillators/bridges-coarse.d.ts.map +1 -1
- package/dist/atlas/oscillators/bridges-coarse.js +0 -1
- package/dist/atlas/oscillators/bridges-coarse.js.map +1 -1
- package/dist/atlas/oscillators/bridges-exact.d.ts.map +1 -1
- package/dist/atlas/oscillators/bridges-exact.js +0 -3
- package/dist/atlas/oscillators/bridges-exact.js.map +1 -1
- package/dist/atlas/oscillators/bridges-limits.d.ts.map +1 -1
- package/dist/atlas/oscillators/bridges-limits.js +0 -2
- package/dist/atlas/oscillators/bridges-limits.js.map +1 -1
- package/dist/atlas/oscillators/dimensions.js.map +1 -1
- package/dist/atlas/oscillators/index.d.ts +1 -16
- package/dist/atlas/oscillators/index.d.ts.map +1 -1
- package/dist/atlas/oscillators/index.js.map +1 -1
- package/dist/atlas/oscillators/limit-witnesses.js.map +1 -1
- package/dist/atlas/oscillators/models.js.map +1 -1
- package/dist/atlas/oscillators/norm-transport-witness.js.map +1 -1
- package/dist/atlas/oscillators/norm-transport.js.map +1 -1
- package/dist/atlas/oscillators/norms.js.map +1 -1
- package/dist/atlas/oscillators/pendulum-motion.js.map +1 -1
- package/dist/atlas/oscillators/phase-carriage.js.map +1 -1
- package/dist/atlas/oscillators/phase-translation.js.map +1 -1
- package/dist/atlas/oscillators/position-translation.js.map +1 -1
- package/dist/atlas/oscillators/rejections.js.map +1 -1
- package/dist/atlas/path-bound.js.map +1 -1
- package/dist/atlas/physjs-entries.generated.d.ts +1601 -220
- package/dist/atlas/physjs-entries.generated.d.ts.map +1 -1
- package/dist/atlas/physjs-entries.generated.js +1854 -345
- package/dist/atlas/physjs-entries.generated.js.map +1 -1
- package/dist/atlas/physjs-ref.d.ts +151 -117
- package/dist/atlas/physjs-ref.d.ts.map +1 -1
- package/dist/atlas/physjs-ref.js +244 -211
- package/dist/atlas/physjs-ref.js.map +1 -1
- package/dist/atlas/physjs-reviewed.d.ts +31 -0
- package/dist/atlas/physjs-reviewed.d.ts.map +1 -0
- package/dist/atlas/physjs-reviewed.js +194 -0
- package/dist/atlas/physjs-reviewed.js.map +1 -0
- package/dist/atlas/poster/associations.js.map +1 -1
- package/dist/atlas/poster/derivations.js.map +1 -1
- package/dist/atlas/poster/statements.js.map +1 -1
- package/dist/atlas/proof-target.d.ts +16 -8
- package/dist/atlas/proof-target.d.ts.map +1 -1
- package/dist/atlas/proof-target.js +34 -31
- package/dist/atlas/proof-target.js.map +1 -1
- package/dist/atlas/public.d.ts +2 -1
- package/dist/atlas/public.d.ts.map +1 -1
- package/dist/atlas/public.js +2 -1
- package/dist/atlas/public.js.map +1 -1
- package/dist/atlas/regime.js.map +1 -1
- package/dist/atlas/serialize.d.ts +18 -12
- package/dist/atlas/serialize.d.ts.map +1 -1
- package/dist/atlas/serialize.js +28 -18
- package/dist/atlas/serialize.js.map +1 -1
- package/dist/atlas/statement.js.map +1 -1
- package/dist/atlas/translation-registry.js.map +1 -1
- package/dist/atlas/translation.js.map +1 -1
- package/dist/atlas/types.d.ts +9 -2
- package/dist/atlas/types.d.ts.map +1 -1
- package/dist/atlas/types.js +1 -1
- package/dist/atlas/types.js.map +1 -1
- package/dist/atlas/waves/bridges-closure.d.ts.map +1 -1
- package/dist/atlas/waves/bridges-closure.js +0 -3
- package/dist/atlas/waves/bridges-closure.js.map +1 -1
- package/dist/atlas/waves/bridges.d.ts.map +1 -1
- package/dist/atlas/waves/bridges.js +0 -4
- package/dist/atlas/waves/bridges.js.map +1 -1
- package/dist/atlas/waves/index.d.ts +1 -1
- package/dist/atlas/waves/index.d.ts.map +1 -1
- package/dist/atlas/waves/index.js.map +1 -1
- package/dist/atlas/waves/models.js.map +1 -1
- package/dist/atlas/waves/numerics.js.map +1 -1
- package/dist/atlas/witness-artifact.js.map +1 -1
- package/dist/atlas/witness-dominance.d.ts +4 -3
- package/dist/atlas/witness-dominance.d.ts.map +1 -1
- package/dist/atlas/witness-dominance.js +15 -5
- package/dist/atlas/witness-dominance.js.map +1 -1
- package/dist/atlas/witness-numeric.d.ts +8 -4
- package/dist/atlas/witness-numeric.d.ts.map +1 -1
- package/dist/atlas/witness-numeric.js +27 -2
- package/dist/atlas/witness-numeric.js.map +1 -1
- package/dist/atlas/witness-result.d.ts +7 -1
- package/dist/atlas/witness-result.d.ts.map +1 -1
- package/dist/atlas/witness-result.js.map +1 -1
- package/dist/atlas/witness-specs.js.map +1 -1
- package/dist/atlas/witness-symbolic.js.map +1 -1
- package/dist/atlas/witnesses/quantum-support.js.map +1 -1
- package/dist/bridges/caller-table.d.ts +1 -1
- package/dist/bridges/caller-table.d.ts.map +1 -1
- package/dist/bridges/caller-table.js.map +1 -1
- package/dist/bridges/carrier-sign.d.ts.map +1 -1
- package/dist/bridges/carrier-sign.js +8 -3
- package/dist/bridges/carrier-sign.js.map +1 -1
- package/dist/bridges/catalog-adapter.d.ts +12 -3
- package/dist/bridges/catalog-adapter.d.ts.map +1 -1
- package/dist/bridges/catalog-adapter.js +22 -14
- package/dist/bridges/catalog-adapter.js.map +1 -1
- package/dist/bridges/catalog-load.d.ts +19 -2
- package/dist/bridges/catalog-load.d.ts.map +1 -1
- package/dist/bridges/catalog-load.js +233 -14
- package/dist/bridges/catalog-load.js.map +1 -1
- package/dist/bridges/catalog-types.d.ts +96 -27
- package/dist/bridges/catalog-types.d.ts.map +1 -1
- package/dist/bridges/catalog-types.js.map +1 -1
- package/dist/bridges/coefficient-statement.js +1 -5
- package/dist/bridges/coefficient-statement.js.map +1 -1
- package/dist/bridges/confrontation-coverage.js.map +1 -1
- package/dist/bridges/confrontations.d.ts +1 -1
- package/dist/bridges/confrontations.d.ts.map +1 -1
- package/dist/bridges/confrontations.js +1 -1
- package/dist/bridges/confrontations.js.map +1 -1
- package/dist/bridges/evaluation-errors.d.ts +89 -0
- package/dist/bridges/evaluation-errors.d.ts.map +1 -0
- package/dist/bridges/evaluation-errors.js +136 -0
- package/dist/bridges/evaluation-errors.js.map +1 -0
- package/dist/bridges/evaluator-inputs.d.ts +5 -3
- package/dist/bridges/evaluator-inputs.d.ts.map +1 -1
- package/dist/bridges/evaluator-inputs.js +24 -24
- package/dist/bridges/evaluator-inputs.js.map +1 -1
- package/dist/bridges/evaluators.d.ts +48 -8
- package/dist/bridges/evaluators.d.ts.map +1 -1
- package/dist/bridges/evaluators.js +173 -38
- package/dist/bridges/evaluators.js.map +1 -1
- package/dist/bridges/expr-parse.d.ts +38 -7
- package/dist/bridges/expr-parse.d.ts.map +1 -1
- package/dist/bridges/expr-parse.js +129 -156
- package/dist/bridges/expr-parse.js.map +1 -1
- package/dist/bridges/holds.d.ts +16 -8
- package/dist/bridges/holds.d.ts.map +1 -1
- package/dist/bridges/holds.js +130 -236
- package/dist/bridges/holds.js.map +1 -1
- package/dist/bridges/index.d.ts +15 -14
- package/dist/bridges/index.d.ts.map +1 -1
- package/dist/bridges/index.js +14 -15
- package/dist/bridges/index.js.map +1 -1
- package/dist/bridges/input-contract.d.ts +65 -0
- package/dist/bridges/input-contract.d.ts.map +1 -0
- package/dist/bridges/input-contract.js +97 -0
- package/dist/bridges/input-contract.js.map +1 -0
- package/dist/bridges/membership.d.ts +5 -3
- package/dist/bridges/membership.d.ts.map +1 -1
- package/dist/bridges/membership.js +5 -6
- package/dist/bridges/membership.js.map +1 -1
- package/dist/bridges/notices.d.ts +11 -0
- package/dist/bridges/notices.d.ts.map +1 -0
- package/dist/bridges/notices.js +22 -0
- package/dist/bridges/notices.js.map +1 -0
- package/dist/bridges/observations/types.js.map +1 -1
- package/dist/bridges/rejected.d.ts +11 -17
- package/dist/bridges/rejected.d.ts.map +1 -1
- package/dist/bridges/rejected.js +13 -68
- package/dist/bridges/rejected.js.map +1 -1
- package/dist/bridges/relation-eval.d.ts +5 -6
- package/dist/bridges/relation-eval.d.ts.map +1 -1
- package/dist/bridges/relation-eval.js +9 -38
- package/dist/bridges/relation-eval.js.map +1 -1
- package/dist/bridges/rhs-registry.js.map +1 -1
- package/dist/bridges/sensitivity.d.ts +11 -3
- package/dist/bridges/sensitivity.d.ts.map +1 -1
- package/dist/bridges/sensitivity.js +24 -10
- package/dist/bridges/sensitivity.js.map +1 -1
- package/dist/bridges/tensor-index.js.map +1 -1
- package/dist/bridges/types.d.ts +1 -7
- package/dist/bridges/types.d.ts.map +1 -1
- package/dist/bridges/types.js +1 -4
- package/dist/bridges/types.js.map +1 -1
- package/dist/canonical/canonical-equation.d.ts +31 -0
- package/dist/canonical/canonical-equation.d.ts.map +1 -1
- package/dist/canonical/canonical-equation.js.map +1 -1
- package/dist/canonical/dimensional-fields.js.map +1 -1
- package/dist/canonical/entries/_l1-build.js.map +1 -1
- package/dist/canonical/entries/atomic.d.ts.map +1 -1
- package/dist/canonical/entries/atomic.js +11 -1
- package/dist/canonical/entries/atomic.js.map +1 -1
- package/dist/canonical/entries/condensed-matter.d.ts.map +1 -1
- package/dist/canonical/entries/condensed-matter.js +7 -4
- package/dist/canonical/entries/condensed-matter.js.map +1 -1
- package/dist/canonical/entries/dimensional-classics.d.ts.map +1 -1
- package/dist/canonical/entries/dimensional-classics.js +50 -2
- package/dist/canonical/entries/dimensional-classics.js.map +1 -1
- package/dist/canonical/entries/electromagnetism.d.ts.map +1 -1
- package/dist/canonical/entries/electromagnetism.js +32 -2
- package/dist/canonical/entries/electromagnetism.js.map +1 -1
- package/dist/canonical/entries/fluids-waves.d.ts.map +1 -1
- package/dist/canonical/entries/fluids-waves.js +34 -0
- package/dist/canonical/entries/fluids-waves.js.map +1 -1
- package/dist/canonical/entries/mechanics.d.ts.map +1 -1
- package/dist/canonical/entries/mechanics.js +24 -0
- package/dist/canonical/entries/mechanics.js.map +1 -1
- package/dist/canonical/entries/nonmonomial.d.ts.map +1 -1
- package/dist/canonical/entries/nonmonomial.js +42 -24
- package/dist/canonical/entries/nonmonomial.js.map +1 -1
- package/dist/canonical/entries/relativity.d.ts.map +1 -1
- package/dist/canonical/entries/relativity.js +6 -0
- package/dist/canonical/entries/relativity.js.map +1 -1
- package/dist/canonical/entries/statistical-mechanics.d.ts.map +1 -1
- package/dist/canonical/entries/statistical-mechanics.js +24 -5
- package/dist/canonical/entries/statistical-mechanics.js.map +1 -1
- package/dist/canonical/entries/thermo-nuclear-cosmo.d.ts.map +1 -1
- package/dist/canonical/entries/thermo-nuclear-cosmo.js +15 -0
- package/dist/canonical/entries/thermo-nuclear-cosmo.js.map +1 -1
- package/dist/canonical/linkage.d.ts +29 -4
- package/dist/canonical/linkage.d.ts.map +1 -1
- package/dist/canonical/linkage.js +31 -29
- package/dist/canonical/linkage.js.map +1 -1
- package/dist/canonical/normal-form.d.ts +0 -8
- package/dist/canonical/normal-form.d.ts.map +1 -1
- package/dist/canonical/normal-form.js +17 -12
- package/dist/canonical/normal-form.js.map +1 -1
- package/dist/canonical/registry.js.map +1 -1
- package/dist/canonical/residual.js.map +1 -1
- package/dist/canonical/seed-l-layer.d.ts +7 -1
- package/dist/canonical/seed-l-layer.d.ts.map +1 -1
- package/dist/canonical/seed-l-layer.js +7 -1
- package/dist/canonical/seed-l-layer.js.map +1 -1
- package/dist/canonical/structural.d.ts +21 -0
- package/dist/canonical/structural.d.ts.map +1 -1
- package/dist/canonical/structural.js +24 -4
- package/dist/canonical/structural.js.map +1 -1
- package/dist/cases/brownian-sphere.js +4 -4
- package/dist/cases/brownian-sphere.js.map +1 -1
- package/dist/cases/damped-resonator.js +2 -2
- package/dist/cases/damped-resonator.js.map +1 -1
- package/dist/cases/index.d.ts +9 -2
- package/dist/cases/index.d.ts.map +1 -1
- package/dist/cases/index.js +26 -7
- package/dist/cases/index.js.map +1 -1
- package/dist/cases/kepler-rv.js +6 -6
- package/dist/cases/kepler-rv.js.map +1 -1
- package/dist/cases/lumped-cooling.js +1 -1
- package/dist/cases/lumped-cooling.js.map +1 -1
- package/dist/cases/quadrature.js.map +1 -1
- package/dist/cases/resistor-noise.js +3 -3
- package/dist/cases/resistor-noise.js.map +1 -1
- package/dist/cases/skin-depth.js.map +1 -1
- package/dist/cases/types.js.map +1 -1
- package/dist/cli/args.d.ts +7 -2
- package/dist/cli/args.d.ts.map +1 -1
- package/dist/cli/args.js +18 -2
- package/dist/cli/args.js.map +1 -1
- package/dist/cli/bindings.d.ts +13 -0
- package/dist/cli/bindings.d.ts.map +1 -0
- package/dist/cli/bindings.js +32 -0
- package/dist/cli/bindings.js.map +1 -0
- package/dist/cli/closed-form-range.js.map +1 -1
- package/dist/cli/command.js.map +1 -1
- package/dist/cli/commands/_atlas-map.d.ts +3 -3
- package/dist/cli/commands/_atlas-map.d.ts.map +1 -1
- package/dist/cli/commands/_atlas-map.js +43 -18
- package/dist/cli/commands/_atlas-map.js.map +1 -1
- package/dist/cli/commands/_atlas-route.js.map +1 -1
- package/dist/cli/commands/_discovery-opts.d.ts +2 -1
- package/dist/cli/commands/_discovery-opts.d.ts.map +1 -1
- package/dist/cli/commands/_discovery-opts.js +48 -18
- package/dist/cli/commands/_discovery-opts.js.map +1 -1
- package/dist/cli/commands/atlas.d.ts.map +1 -1
- package/dist/cli/commands/atlas.js +7 -12
- package/dist/cli/commands/atlas.js.map +1 -1
- package/dist/cli/commands/audit.d.ts.map +1 -1
- package/dist/cli/commands/audit.js +13 -21
- package/dist/cli/commands/audit.js.map +1 -1
- package/dist/cli/commands/axes.js.map +1 -1
- package/dist/cli/commands/candidates.d.ts.map +1 -1
- package/dist/cli/commands/candidates.js +16 -8
- package/dist/cli/commands/candidates.js.map +1 -1
- package/dist/cli/commands/canonical.js.map +1 -1
- package/dist/cli/commands/chain.js +1 -1
- package/dist/cli/commands/chain.js.map +1 -1
- package/dist/cli/commands/confront.d.ts.map +1 -1
- package/dist/cli/commands/confront.js +22 -14
- package/dist/cli/commands/confront.js.map +1 -1
- package/dist/cli/commands/connectors.d.ts.map +1 -1
- package/dist/cli/commands/connectors.js +8 -9
- package/dist/cli/commands/connectors.js.map +1 -1
- package/dist/cli/commands/coverage.js.map +1 -1
- package/dist/cli/commands/derive.d.ts.map +1 -1
- package/dist/cli/commands/derive.js +50 -26
- package/dist/cli/commands/derive.js.map +1 -1
- package/dist/cli/commands/discover.d.ts.map +1 -1
- package/dist/cli/commands/discover.js +18 -13
- package/dist/cli/commands/discover.js.map +1 -1
- package/dist/cli/commands/eval.d.ts.map +1 -1
- package/dist/cli/commands/eval.js +29 -26
- package/dist/cli/commands/eval.js.map +1 -1
- package/dist/cli/commands/evaluate.d.ts +1 -35
- package/dist/cli/commands/evaluate.d.ts.map +1 -1
- package/dist/cli/commands/evaluate.js +99 -208
- package/dist/cli/commands/evaluate.js.map +1 -1
- package/dist/cli/commands/explain.d.ts.map +1 -1
- package/dist/cli/commands/explain.js +57 -45
- package/dist/cli/commands/explain.js.map +1 -1
- package/dist/cli/commands/frontier.js.map +1 -1
- package/dist/cli/commands/ground.d.ts.map +1 -1
- package/dist/cli/commands/ground.js +41 -11
- package/dist/cli/commands/ground.js.map +1 -1
- package/dist/cli/commands/index.js.map +1 -1
- package/dist/cli/commands/map.d.ts.map +1 -1
- package/dist/cli/commands/map.js +84 -92
- package/dist/cli/commands/map.js.map +1 -1
- package/dist/cli/commands/metric.d.ts.map +1 -1
- package/dist/cli/commands/metric.js +53 -15
- package/dist/cli/commands/metric.js.map +1 -1
- package/dist/cli/commands/path.js +4 -4
- package/dist/cli/commands/path.js.map +1 -1
- package/dist/cli/commands/predict.js.map +1 -1
- package/dist/cli/commands/priority.js.map +1 -1
- package/dist/cli/commands/probe.d.ts.map +1 -1
- package/dist/cli/commands/probe.js +50 -26
- package/dist/cli/commands/probe.js.map +1 -1
- package/dist/cli/commands/recover.js +1 -1
- package/dist/cli/commands/recover.js.map +1 -1
- package/dist/cli/commands/regime.d.ts +5 -4
- package/dist/cli/commands/regime.d.ts.map +1 -1
- package/dist/cli/commands/regime.js +25 -27
- package/dist/cli/commands/regime.js.map +1 -1
- package/dist/cli/commands/retrieve.d.ts.map +1 -1
- package/dist/cli/commands/retrieve.js +22 -14
- package/dist/cli/commands/retrieve.js.map +1 -1
- package/dist/cli/commands/search.d.ts.map +1 -1
- package/dist/cli/commands/search.js +8 -4
- package/dist/cli/commands/search.js.map +1 -1
- package/dist/cli/commands/symbolic.d.ts.map +1 -1
- package/dist/cli/commands/symbolic.js +14 -7
- package/dist/cli/commands/symbolic.js.map +1 -1
- package/dist/cli/commands/testplan.js +4 -4
- package/dist/cli/commands/testplan.js.map +1 -1
- package/dist/cli/conventions.d.ts +6 -7
- package/dist/cli/conventions.d.ts.map +1 -1
- package/dist/cli/conventions.js +19 -28
- package/dist/cli/conventions.js.map +1 -1
- package/dist/cli/determination.js.map +1 -1
- package/dist/cli/errors.js.map +1 -1
- package/dist/cli/euler-guard.d.ts +13 -2
- package/dist/cli/euler-guard.d.ts.map +1 -1
- package/dist/cli/euler-guard.js +17 -3
- package/dist/cli/euler-guard.js.map +1 -1
- package/dist/cli/eval-numbers.d.ts +4 -9
- package/dist/cli/eval-numbers.d.ts.map +1 -1
- package/dist/cli/eval-numbers.js +11 -41
- package/dist/cli/eval-numbers.js.map +1 -1
- package/dist/cli/expr-print.d.ts +29 -2
- package/dist/cli/expr-print.d.ts.map +1 -1
- package/dist/cli/expr-print.js +46 -2
- package/dist/cli/expr-print.js.map +1 -1
- package/dist/cli/flag-help.js.map +1 -1
- package/dist/cli/graphs.js.map +1 -1
- package/dist/cli/library-defaults.d.ts +19 -0
- package/dist/cli/library-defaults.d.ts.map +1 -0
- package/dist/cli/library-defaults.js +22 -0
- package/dist/cli/library-defaults.js.map +1 -0
- package/dist/cli/main.js +7 -3
- package/dist/cli/main.js.map +1 -1
- package/dist/cli/map-evidence.js.map +1 -1
- package/dist/cli/output.d.ts +3 -6
- package/dist/cli/output.d.ts.map +1 -1
- package/dist/cli/output.js.map +1 -1
- package/dist/cli/published-url.d.ts +2 -0
- package/dist/cli/published-url.d.ts.map +1 -1
- package/dist/cli/published-url.js +5 -0
- package/dist/cli/published-url.js.map +1 -1
- package/dist/cli/record-reach.d.ts +6 -0
- package/dist/cli/record-reach.d.ts.map +1 -1
- package/dist/cli/record-reach.js +16 -10
- package/dist/cli/record-reach.js.map +1 -1
- package/dist/cli/record-tables.d.ts +2 -1
- package/dist/cli/record-tables.d.ts.map +1 -1
- package/dist/cli/record-tables.js +8 -3
- package/dist/cli/record-tables.js.map +1 -1
- package/dist/cli/record.d.ts.map +1 -1
- package/dist/cli/record.js +31 -12
- package/dist/cli/record.js.map +1 -1
- package/dist/cli/search-index.d.ts +5 -0
- package/dist/cli/search-index.d.ts.map +1 -1
- package/dist/cli/search-index.js +12 -1
- package/dist/cli/search-index.js.map +1 -1
- package/dist/cli/statuses.js.map +1 -1
- package/dist/cli/top-level-help.js.map +1 -1
- package/dist/cli/version.js.map +1 -1
- package/dist/cli-api.d.ts +57 -18
- package/dist/cli-api.d.ts.map +1 -1
- package/dist/cli-api.js +49 -21
- package/dist/cli-api.js.map +1 -1
- package/dist/composition/adjudication.d.ts +8 -30
- package/dist/composition/adjudication.d.ts.map +1 -1
- package/dist/composition/adjudication.js +15 -67
- package/dist/composition/adjudication.js.map +1 -1
- package/dist/composition/aliases.d.ts +1 -1
- package/dist/composition/aliases.d.ts.map +1 -1
- package/dist/composition/aliases.js +10 -20
- package/dist/composition/aliases.js.map +1 -1
- package/dist/composition/audit-coverage.d.ts +2 -0
- package/dist/composition/audit-coverage.d.ts.map +1 -1
- package/dist/composition/audit-coverage.js.map +1 -1
- package/dist/composition/axes.d.ts +12 -0
- package/dist/composition/axes.d.ts.map +1 -1
- package/dist/composition/axes.js +18 -6
- package/dist/composition/axes.js.map +1 -1
- package/dist/composition/axis-audit.js.map +1 -1
- package/dist/composition/bridge-analysis.d.ts +0 -14
- package/dist/composition/bridge-analysis.d.ts.map +1 -1
- package/dist/composition/bridge-analysis.js +66 -57
- package/dist/composition/bridge-analysis.js.map +1 -1
- package/dist/composition/bridge-prediction.d.ts +5 -1
- package/dist/composition/bridge-prediction.d.ts.map +1 -1
- package/dist/composition/bridge-prediction.js +12 -16
- package/dist/composition/bridge-prediction.js.map +1 -1
- package/dist/composition/buckingham-filter.js.map +1 -1
- package/dist/composition/canonical-compare.d.ts.map +1 -1
- package/dist/composition/canonical-compare.js +12 -2
- package/dist/composition/canonical-compare.js.map +1 -1
- package/dist/composition/canonical-graph.d.ts +15 -18
- package/dist/composition/canonical-graph.d.ts.map +1 -1
- package/dist/composition/canonical-graph.js +59 -85
- package/dist/composition/canonical-graph.js.map +1 -1
- package/dist/composition/canonical-json.js.map +1 -1
- package/dist/composition/canonical-prefactors.d.ts +10 -29
- package/dist/composition/canonical-prefactors.d.ts.map +1 -1
- package/dist/composition/canonical-prefactors.js +15 -202
- package/dist/composition/canonical-prefactors.js.map +1 -1
- package/dist/composition/catalog-graph.d.ts.map +1 -1
- package/dist/composition/catalog-graph.js +6 -20
- package/dist/composition/catalog-graph.js.map +1 -1
- package/dist/composition/chain-candidate.d.ts +2 -0
- package/dist/composition/chain-candidate.d.ts.map +1 -1
- package/dist/composition/chain-candidate.js +2 -0
- package/dist/composition/chain-candidate.js.map +1 -1
- package/dist/composition/chain-match.js.map +1 -1
- package/dist/composition/chain-regime.js.map +1 -1
- package/dist/composition/chain-result.js.map +1 -1
- package/dist/composition/compose-surface.js.map +1 -1
- package/dist/composition/compose-symbolic.js.map +1 -1
- package/dist/composition/compose.d.ts.map +1 -1
- package/dist/composition/compose.js +154 -36
- package/dist/composition/compose.js.map +1 -1
- package/dist/composition/composition-recovery.js.map +1 -1
- package/dist/composition/consequence.d.ts.map +1 -1
- package/dist/composition/consequence.js +15 -6
- package/dist/composition/consequence.js.map +1 -1
- package/dist/composition/consistency.js.map +1 -1
- package/dist/composition/descriptor.d.ts +1 -1
- package/dist/composition/descriptor.d.ts.map +1 -1
- package/dist/composition/descriptor.js.map +1 -1
- package/dist/composition/dimension-adjacency.js.map +1 -1
- package/dist/composition/discovery.d.ts +67 -7
- package/dist/composition/discovery.d.ts.map +1 -1
- package/dist/composition/discovery.js +83 -23
- package/dist/composition/discovery.js.map +1 -1
- package/dist/composition/edge.d.ts +19 -22
- package/dist/composition/edge.d.ts.map +1 -1
- package/dist/composition/edge.js +25 -28
- package/dist/composition/edge.js.map +1 -1
- package/dist/composition/enumerate.d.ts +2 -2
- package/dist/composition/enumerate.d.ts.map +1 -1
- package/dist/composition/enumerate.js.map +1 -1
- package/dist/composition/evaluate-relation.d.ts +29 -5
- package/dist/composition/evaluate-relation.d.ts.map +1 -1
- package/dist/composition/evaluate-relation.js +100 -72
- package/dist/composition/evaluate-relation.js.map +1 -1
- package/dist/composition/explain.d.ts +14 -4
- package/dist/composition/explain.d.ts.map +1 -1
- package/dist/composition/explain.js +53 -19
- package/dist/composition/explain.js.map +1 -1
- package/dist/composition/expr-eval.d.ts.map +1 -1
- package/dist/composition/expr-eval.js +2 -1
- package/dist/composition/expr-eval.js.map +1 -1
- package/dist/composition/expr-simplify.d.ts.map +1 -1
- package/dist/composition/expr-simplify.js +9 -39
- package/dist/composition/expr-simplify.js.map +1 -1
- package/dist/composition/expr-subst.js.map +1 -1
- package/dist/composition/formula-shape.d.ts +9 -0
- package/dist/composition/formula-shape.d.ts.map +1 -1
- package/dist/composition/formula-shape.js +54 -0
- package/dist/composition/formula-shape.js.map +1 -1
- package/dist/composition/frontier-account.d.ts +3 -2
- package/dist/composition/frontier-account.d.ts.map +1 -1
- package/dist/composition/frontier-account.js +7 -3
- package/dist/composition/frontier-account.js.map +1 -1
- package/dist/composition/graph-viz-svg.js.map +1 -1
- package/dist/composition/graph-viz.js.map +1 -1
- package/dist/composition/grounding.js.map +1 -1
- package/dist/composition/identifiability.js.map +1 -1
- package/dist/composition/index.d.ts +9 -5
- package/dist/composition/index.d.ts.map +1 -1
- package/dist/composition/index.js +7 -4
- package/dist/composition/index.js.map +1 -1
- package/dist/composition/mathts-quiet.d.ts +28 -0
- package/dist/composition/mathts-quiet.d.ts.map +1 -0
- package/dist/composition/mathts-quiet.js +56 -0
- package/dist/composition/mathts-quiet.js.map +1 -0
- package/dist/composition/mathts-scalar-symbols.d.ts.map +1 -1
- package/dist/composition/mathts-scalar-symbols.js +18 -34
- package/dist/composition/mathts-scalar-symbols.js.map +1 -1
- package/dist/composition/not-composable-seeds.d.ts +3 -1
- package/dist/composition/not-composable-seeds.d.ts.map +1 -1
- package/dist/composition/not-composable-seeds.js +2 -0
- package/dist/composition/not-composable-seeds.js.map +1 -1
- package/dist/composition/probe/backend-protocol.js.map +1 -1
- package/dist/composition/probe/candidate-store.js.map +1 -1
- package/dist/composition/probe/corpus.js.map +1 -1
- package/dist/composition/probe/dataset.js.map +1 -1
- package/dist/composition/probe/experiment-design.js.map +1 -1
- package/dist/composition/probe/expression-gaps.js.map +1 -1
- package/dist/composition/probe/falsify.d.ts +14 -3
- package/dist/composition/probe/falsify.d.ts.map +1 -1
- package/dist/composition/probe/falsify.js +14 -27
- package/dist/composition/probe/falsify.js.map +1 -1
- package/dist/composition/probe/fingerprint.js.map +1 -1
- package/dist/composition/probe/fit.d.ts +1 -1
- package/dist/composition/probe/fit.d.ts.map +1 -1
- package/dist/composition/probe/fit.js +2 -1
- package/dist/composition/probe/fit.js.map +1 -1
- package/dist/composition/probe/frontier.js.map +1 -1
- package/dist/composition/probe/generator.js.map +1 -1
- package/dist/composition/probe/index.d.ts +4 -2
- package/dist/composition/probe/index.d.ts.map +1 -1
- package/dist/composition/probe/index.js +4 -2
- package/dist/composition/probe/index.js.map +1 -1
- package/dist/composition/probe/limits.js.map +1 -1
- package/dist/composition/probe/metadata.js.map +1 -1
- package/dist/composition/probe/pipeline.d.ts +5 -0
- package/dist/composition/probe/pipeline.d.ts.map +1 -1
- package/dist/composition/probe/pipeline.js +13 -6
- package/dist/composition/probe/pipeline.js.map +1 -1
- package/dist/composition/probe/problem.d.ts +8 -0
- package/dist/composition/probe/problem.d.ts.map +1 -1
- package/dist/composition/probe/problem.js +78 -12
- package/dist/composition/probe/problem.js.map +1 -1
- package/dist/composition/probe/report.js.map +1 -1
- package/dist/composition/probe/residual.js.map +1 -1
- package/dist/composition/probe/run-manifest.js +2 -2
- package/dist/composition/probe/run-manifest.js.map +1 -1
- package/dist/composition/probe/scoring.d.ts +2 -1
- package/dist/composition/probe/scoring.d.ts.map +1 -1
- package/dist/composition/probe/scoring.js +21 -7
- package/dist/composition/probe/scoring.js.map +1 -1
- package/dist/composition/probe/search-budget.js.map +1 -1
- package/dist/composition/probe/serialize.js.map +1 -1
- package/dist/composition/probe/structure.js.map +1 -1
- package/dist/composition/probe/study.d.ts +4 -3
- package/dist/composition/probe/study.d.ts.map +1 -1
- package/dist/composition/probe/study.js +5 -3
- package/dist/composition/probe/study.js.map +1 -1
- package/dist/composition/probe/types.d.ts +3 -1
- package/dist/composition/probe/types.d.ts.map +1 -1
- package/dist/composition/probe/types.js +2 -0
- package/dist/composition/probe/types.js.map +1 -1
- package/dist/composition/proposed-bridges.d.ts +11 -4
- package/dist/composition/proposed-bridges.d.ts.map +1 -1
- package/dist/composition/proposed-bridges.js +14 -6
- package/dist/composition/proposed-bridges.js.map +1 -1
- package/dist/composition/quantities.d.ts +0 -4
- package/dist/composition/quantities.d.ts.map +1 -1
- package/dist/composition/quantities.js +5 -5
- package/dist/composition/quantities.js.map +1 -1
- package/dist/composition/quantity.d.ts +18 -2
- package/dist/composition/quantity.d.ts.map +1 -1
- package/dist/composition/quantity.js +35 -6
- package/dist/composition/quantity.js.map +1 -1
- package/dist/composition/representative-values.js.map +1 -1
- package/dist/composition/retrodiction.d.ts +18 -0
- package/dist/composition/retrodiction.d.ts.map +1 -1
- package/dist/composition/retrodiction.js +37 -7
- package/dist/composition/retrodiction.js.map +1 -1
- package/dist/composition/uncertainty.js.map +1 -1
- package/dist/composition/user-equation.d.ts +11 -7
- package/dist/composition/user-equation.d.ts.map +1 -1
- package/dist/composition/user-equation.js +24 -26
- package/dist/composition/user-equation.js.map +1 -1
- package/dist/core/axes-registry.d.ts +8 -5
- package/dist/core/axes-registry.d.ts.map +1 -1
- package/dist/core/axes-registry.js.map +1 -1
- package/dist/core/cell.js.map +1 -1
- package/dist/core/constants.d.ts +35 -12
- package/dist/core/constants.d.ts.map +1 -1
- package/dist/core/constants.js +46 -15
- package/dist/core/constants.js.map +1 -1
- package/dist/core/data-file.d.ts +27 -0
- package/dist/core/data-file.d.ts.map +1 -0
- package/dist/core/data-file.js +48 -0
- package/dist/core/data-file.js.map +1 -0
- package/dist/core/flux-rules.js +1 -1
- package/dist/core/flux-rules.js.map +1 -1
- package/dist/core/json-schema.d.ts +27 -0
- package/dist/core/json-schema.d.ts.map +1 -0
- package/dist/core/json-schema.js +177 -0
- package/dist/core/json-schema.js.map +1 -0
- package/dist/core/labeled-tensor.d.ts +6 -1
- package/dist/core/labeled-tensor.d.ts.map +1 -1
- package/dist/core/labeled-tensor.js +18 -8
- package/dist/core/labeled-tensor.js.map +1 -1
- package/dist/core/regime-registry.d.ts +6 -2
- package/dist/core/regime-registry.d.ts.map +1 -1
- package/dist/core/regime-registry.js.map +1 -1
- package/dist/core/regime-rule-install.js.map +1 -1
- package/dist/core/regimes-builtins.js.map +1 -1
- package/dist/core/tensor.d.ts +7 -4
- package/dist/core/tensor.d.ts.map +1 -1
- package/dist/core/tensor.js +40 -8
- package/dist/core/tensor.js.map +1 -1
- package/dist/core/types.d.ts +3 -2
- package/dist/core/types.d.ts.map +1 -1
- package/dist/core/types.js +16 -14
- package/dist/core/types.js.map +1 -1
- package/dist/core/universal-index.js.map +1 -1
- package/dist/diff/bridge-ast-gradient.d.ts +4 -5
- package/dist/diff/bridge-ast-gradient.d.ts.map +1 -1
- package/dist/diff/bridge-ast-gradient.js +16 -23
- package/dist/diff/bridge-ast-gradient.js.map +1 -1
- package/dist/diff/bridge-gradient.d.ts +24 -80
- package/dist/diff/bridge-gradient.d.ts.map +1 -1
- package/dist/diff/bridge-gradient.js +21 -98
- package/dist/diff/bridge-gradient.js.map +1 -1
- package/dist/diff/bridge-specs.d.ts +18 -6
- package/dist/diff/bridge-specs.d.ts.map +1 -1
- package/dist/diff/bridge-specs.js +17 -5
- package/dist/diff/bridge-specs.js.map +1 -1
- package/dist/dimensional/algebra.js.map +1 -1
- package/dist/dimensional/ast-builders.d.ts +5 -4
- package/dist/dimensional/ast-builders.d.ts.map +1 -1
- package/dist/dimensional/ast-builders.js +6 -5
- package/dist/dimensional/ast-builders.js.map +1 -1
- package/dist/dimensional/ast-types.js.map +1 -1
- package/dist/dimensional/bridge-check.d.ts.map +1 -1
- package/dist/dimensional/bridge-check.js +3 -5
- package/dist/dimensional/bridge-check.js.map +1 -1
- package/dist/dimensional/buckingham.js.map +1 -1
- package/dist/dimensional/connection-validators.d.ts +2 -1
- package/dist/dimensional/connection-validators.d.ts.map +1 -1
- package/dist/dimensional/connection-validators.js.map +1 -1
- package/dist/dimensional/connection.js.map +1 -1
- package/dist/dimensional/constant-rows.d.ts +54 -0
- package/dist/dimensional/constant-rows.d.ts.map +1 -0
- package/dist/dimensional/constant-rows.js +115 -0
- package/dist/dimensional/constant-rows.js.map +1 -0
- package/dist/dimensional/constants.d.ts +7 -17
- package/dist/dimensional/constants.d.ts.map +1 -1
- package/dist/dimensional/constants.js +12 -21
- package/dist/dimensional/constants.js.map +1 -1
- package/dist/dimensional/curvature-composite.js.map +1 -1
- package/dist/dimensional/curvature-invariants.js.map +1 -1
- package/dist/dimensional/curvature.js.map +1 -1
- package/dist/dimensional/dimension-inference.js.map +1 -1
- package/dist/dimensional/dimension-spec.d.ts +21 -6
- package/dist/dimensional/dimension-spec.d.ts.map +1 -1
- package/dist/dimensional/dimension-spec.js +150 -160
- package/dist/dimensional/dimension-spec.js.map +1 -1
- package/dist/dimensional/einstein-equation.js.map +1 -1
- package/dist/dimensional/errors.d.ts +3 -1
- package/dist/dimensional/errors.d.ts.map +1 -1
- package/dist/dimensional/errors.js +2 -2
- package/dist/dimensional/errors.js.map +1 -1
- package/dist/dimensional/exact-scale.d.ts +79 -0
- package/dist/dimensional/exact-scale.d.ts.map +1 -0
- package/dist/dimensional/exact-scale.js +222 -0
- package/dist/dimensional/exact-scale.js.map +1 -0
- package/dist/dimensional/field-equation-helpers.js.map +1 -1
- package/dist/dimensional/formula-names.d.ts +13 -12
- package/dist/dimensional/formula-names.d.ts.map +1 -1
- package/dist/dimensional/formula-names.js +28 -51
- package/dist/dimensional/formula-names.js.map +1 -1
- package/dist/dimensional/fresh-label.js.map +1 -1
- package/dist/dimensional/friedmann-equation.d.ts +3 -3
- package/dist/dimensional/friedmann-equation.js +3 -3
- package/dist/dimensional/friedmann-equation.js.map +1 -1
- package/dist/dimensional/gauge-field.d.ts +2 -3
- package/dist/dimensional/gauge-field.d.ts.map +1 -1
- package/dist/dimensional/gauge-field.js +0 -1
- package/dist/dimensional/gauge-field.js.map +1 -1
- package/dist/dimensional/hyphen-names.d.ts.map +1 -1
- package/dist/dimensional/hyphen-names.js +8 -0
- package/dist/dimensional/hyphen-names.js.map +1 -1
- package/dist/dimensional/killing-validators.js.map +1 -1
- package/dist/dimensional/klein-gordon-equation.js.map +1 -1
- package/dist/dimensional/metric-validators.d.ts +2 -1
- package/dist/dimensional/metric-validators.d.ts.map +1 -1
- package/dist/dimensional/metric-validators.js.map +1 -1
- package/dist/dimensional/metric.js.map +1 -1
- package/dist/dimensional/natural-units.js.map +1 -1
- package/dist/dimensional/quantity-registry.d.ts +23 -1
- package/dist/dimensional/quantity-registry.d.ts.map +1 -1
- package/dist/dimensional/quantity-registry.js +55 -18
- package/dist/dimensional/quantity-registry.js.map +1 -1
- package/dist/dimensional/rg-flow.js.map +1 -1
- package/dist/dimensional/stress-energy-validators.js.map +1 -1
- package/dist/dimensional/symbolic-constants.d.ts +63 -19
- package/dist/dimensional/symbolic-constants.d.ts.map +1 -1
- package/dist/dimensional/symbolic-constants.js +114 -92
- package/dist/dimensional/symbolic-constants.js.map +1 -1
- package/dist/dimensional/tensor-trace.js.map +1 -1
- package/dist/dimensional/tensor.js.map +1 -1
- package/dist/dimensional/types.js.map +1 -1
- package/dist/dimensional/unit-convention.d.ts +0 -2
- package/dist/dimensional/unit-convention.d.ts.map +1 -1
- package/dist/dimensional/unit-convention.js +2 -2
- package/dist/dimensional/unit-convention.js.map +1 -1
- package/dist/dimensional/unit-data.d.ts +70 -0
- package/dist/dimensional/unit-data.d.ts.map +1 -0
- package/dist/dimensional/unit-data.js +139 -0
- package/dist/dimensional/unit-data.js.map +1 -0
- package/dist/dimensional/units.d.ts +87 -24
- package/dist/dimensional/units.d.ts.map +1 -1
- package/dist/dimensional/units.js +290 -295
- package/dist/dimensional/units.js.map +1 -1
- package/dist/dimensional/validator-registry.js.map +1 -1
- package/dist/dimensional/validator.d.ts +0 -16
- package/dist/dimensional/validator.d.ts.map +1 -1
- package/dist/dimensional/validator.js +65 -29
- package/dist/dimensional/validator.js.map +1 -1
- package/dist/dimensional/weyl-validators.js.map +1 -1
- package/dist/index.d.ts +65 -18
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +19 -24
- package/dist/index.js.map +1 -1
- package/dist/numerical/bianchi-residual.js.map +1 -1
- package/dist/numerical/binding-value.d.ts +32 -7
- package/dist/numerical/binding-value.d.ts.map +1 -1
- package/dist/numerical/binding-value.js +218 -209
- package/dist/numerical/binding-value.js.map +1 -1
- package/dist/numerical/christoffel-flat.js.map +1 -1
- package/dist/numerical/connection-lowering-helpers.js.map +1 -1
- package/dist/numerical/covariant-eikonal.d.ts.map +1 -1
- package/dist/numerical/covariant-eikonal.js +2 -2
- package/dist/numerical/covariant-eikonal.js.map +1 -1
- package/dist/numerical/curvature-lowering-helpers.d.ts +20 -0
- package/dist/numerical/curvature-lowering-helpers.d.ts.map +1 -1
- package/dist/numerical/curvature-lowering-helpers.js +6 -3
- package/dist/numerical/curvature-lowering-helpers.js.map +1 -1
- package/dist/numerical/derivative-lowering.js.map +1 -1
- package/dist/numerical/einstein-equation.js.map +1 -1
- package/dist/numerical/engine-registry.js.map +1 -1
- package/dist/numerical/errors.d.ts +7 -3
- package/dist/numerical/errors.d.ts.map +1 -1
- package/dist/numerical/errors.js +5 -5
- package/dist/numerical/errors.js.map +1 -1
- package/dist/numerical/evaluator-uncertainty.d.ts +34 -0
- package/dist/numerical/evaluator-uncertainty.d.ts.map +1 -0
- package/dist/numerical/evaluator-uncertainty.js +134 -0
- package/dist/numerical/evaluator-uncertainty.js.map +1 -0
- package/dist/numerical/formula-contract.d.ts +67 -7
- package/dist/numerical/formula-contract.d.ts.map +1 -1
- package/dist/numerical/formula-contract.js +68 -42
- package/dist/numerical/formula-contract.js.map +1 -1
- package/dist/numerical/formula-dimension.d.ts +17 -7
- package/dist/numerical/formula-dimension.d.ts.map +1 -1
- package/dist/numerical/formula-dimension.js +120 -44
- package/dist/numerical/formula-dimension.js.map +1 -1
- package/dist/numerical/formula-mathts.d.ts.map +1 -1
- package/dist/numerical/formula-mathts.js +10 -3
- package/dist/numerical/formula-mathts.js.map +1 -1
- package/dist/numerical/formula-registry.d.ts +13 -3
- package/dist/numerical/formula-registry.d.ts.map +1 -1
- package/dist/numerical/formula-registry.js +7 -2
- package/dist/numerical/formula-registry.js.map +1 -1
- package/dist/numerical/geodesic-integrator.js.map +1 -1
- package/dist/numerical/geometrized.js.map +1 -1
- package/dist/numerical/gl4-integrator.d.ts +28 -27
- package/dist/numerical/gl4-integrator.d.ts.map +1 -1
- package/dist/numerical/gl4-integrator.js +44 -45
- package/dist/numerical/gl4-integrator.js.map +1 -1
- package/dist/numerical/grid-field.js.map +1 -1
- package/dist/numerical/index.js.map +1 -1
- package/dist/numerical/input-validation.d.ts +3 -6
- package/dist/numerical/input-validation.d.ts.map +1 -1
- package/dist/numerical/input-validation.js +4 -8
- package/dist/numerical/input-validation.js.map +1 -1
- package/dist/numerical/killing.d.ts +8 -5
- package/dist/numerical/killing.d.ts.map +1 -1
- package/dist/numerical/killing.js.map +1 -1
- package/dist/numerical/klein-gordon.js.map +1 -1
- package/dist/numerical/kretschmann.js.map +1 -1
- package/dist/numerical/lowering-utils.js.map +1 -1
- package/dist/numerical/lowering.d.ts.map +1 -1
- package/dist/numerical/lowering.js +7 -17
- package/dist/numerical/lowering.js.map +1 -1
- package/dist/numerical/mathts-engine.d.ts.map +1 -1
- package/dist/numerical/mathts-engine.js +11 -6
- package/dist/numerical/mathts-engine.js.map +1 -1
- package/dist/numerical/metric-inverse.js.map +1 -1
- package/dist/numerical/null-ic.js.map +1 -1
- package/dist/numerical/null-ray-integrator.js +4 -4
- package/dist/numerical/null-ray-integrator.js.map +1 -1
- package/dist/numerical/painleve-gullstrand-metric.js.map +1 -1
- package/dist/numerical/pderiv.d.ts.map +1 -1
- package/dist/numerical/pderiv.js +9 -2
- package/dist/numerical/pderiv.js.map +1 -1
- package/dist/numerical/perihelion-finder.js.map +1 -1
- package/dist/numerical/quadrature.d.ts +5 -2
- package/dist/numerical/quadrature.d.ts.map +1 -1
- package/dist/numerical/quadrature.js +20 -3
- package/dist/numerical/quadrature.js.map +1 -1
- package/dist/numerical/spacetime-metrics.d.ts +17 -19
- package/dist/numerical/spacetime-metrics.d.ts.map +1 -1
- package/dist/numerical/spacetime-metrics.js +158 -250
- package/dist/numerical/spacetime-metrics.js.map +1 -1
- package/dist/numerical/strides.js.map +1 -1
- package/dist/numerical/tensor-engine.d.ts +9 -5
- package/dist/numerical/tensor-engine.d.ts.map +1 -1
- package/dist/numerical/tensor-engine.js.map +1 -1
- package/dist/numerical/types.js.map +1 -1
- package/dist/numerical/weyl-lowering.js.map +1 -1
- package/dist/relations/category.js.map +1 -1
- package/dist/relations/composition-table.d.ts +4 -4
- package/dist/relations/composition-table.js +4 -4
- package/dist/relations/composition-table.js.map +1 -1
- package/dist/relations/conventions.js.map +1 -1
- package/dist/relations/domain-regimes.js.map +1 -1
- package/dist/relations/regime-registration.js.map +1 -1
- package/dist/relations/regime-vocabularies.js.map +1 -1
- package/dist/relations/regime.d.ts +18 -8
- package/dist/relations/regime.d.ts.map +1 -1
- package/dist/relations/regime.js +26 -14
- package/dist/relations/regime.js.map +1 -1
- package/dist/relations/types.d.ts +26 -6
- package/dist/relations/types.d.ts.map +1 -1
- package/dist/relations/types.js +15 -3
- package/dist/relations/types.js.map +1 -1
- package/package.json +10 -14
- package/dist/bridges/registry.d.ts +0 -60
- package/dist/bridges/registry.d.ts.map +0 -1
- package/dist/bridges/registry.js +0 -87
- package/dist/bridges/registry.js.map +0 -1
- package/dist/cli/poster-source.d.ts +0 -154
- package/dist/cli/poster-source.d.ts.map +0 -1
- package/dist/cli/poster-source.js +0 -184
- package/dist/cli/poster-source.js.map +0 -1
|
@@ -10,9 +10,10 @@
|
|
|
10
10
|
*
|
|
11
11
|
* @module bridges/evaluator-inputs
|
|
12
12
|
*/
|
|
13
|
-
import { unitConventionNotes, UnitError } from '../dimensional/units.js';
|
|
14
|
-
import { resolveQuantityName, synonymGroup,
|
|
13
|
+
import { affineReadingNote, unitConventionNotes, UnitError } from '../dimensional/units.js';
|
|
14
|
+
import { resolveQuantityName, synonymGroup, synonymDisagreement, temperatureQuantityRole, } from '../dimensional/formula-names.js';
|
|
15
15
|
import { readNamedBinding } from '../numerical/binding-value.js';
|
|
16
|
+
import { DuplicateInputError, UnknownInputError } from './evaluation-errors.js';
|
|
16
17
|
/** 15 significant digits: the value itself is passed unrounded. */
|
|
17
18
|
const show = (v) => Number(v.toPrecision(15));
|
|
18
19
|
/** Disclosures that a unit symbol does not carry by itself. */
|
|
@@ -30,27 +31,26 @@ function convert(p, raw, reading, siblings, givenName) {
|
|
|
30
31
|
const read = readNamedBinding(givenName, raw, { reading, siblings, declaredUnit: p.unit });
|
|
31
32
|
if (!read.dimensioned)
|
|
32
33
|
return { value: read.value };
|
|
33
|
-
|
|
34
|
-
const
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
const base = `${raw.trim()} → ${show(read.value)} ${p.unit || '(dimensionless)'}${offset}${unitAside(raw)}`;
|
|
45
|
-
const temperature = read.notes.find((note) => note.includes('k_B T'));
|
|
46
|
-
return { value: read.value, note: temperature === undefined ? base : `${base}. ${temperature}` };
|
|
34
|
+
// How an affine reading was applied comes from the unit table's own row (scale and ice point).
|
|
35
|
+
const offset = read.affine === undefined ? '' : ` (${affineReadingNote(read.affine, reading)})`;
|
|
36
|
+
// An angular input counts radians; a cycle-counting unit (the `cycles` flag on its row) takes 2π per cycle.
|
|
37
|
+
const turns = p.angular === true ? read.cycles : 0;
|
|
38
|
+
if (Number.isNaN(turns)) {
|
|
39
|
+
throw new UnitError(`'${raw.trim()}' adds a cycle rate to a plain rate, so its radians per second are not defined`);
|
|
40
|
+
}
|
|
41
|
+
const value = turns === 0 ? read.value : read.value * (2 * Math.PI) ** turns;
|
|
42
|
+
const turnsNote = turns === 0 ? '' : turns === 1 ? ' (cycles: × 2π)' : ` (cycles: × (2π)^${turns})`;
|
|
43
|
+
const base = `${raw.trim()} → ${show(value)} ${p.unit || '(dimensionless)'}${offset}${turnsNote}${unitAside(raw)}`;
|
|
44
|
+
return { value, note: read.temperatureNote === undefined ? base : `${base}. ${read.temperatureNote}` };
|
|
47
45
|
}
|
|
48
46
|
/**
|
|
49
|
-
* Resolve `args` against `parameters`.
|
|
50
|
-
* @throws
|
|
47
|
+
* Resolve `args` against `parameters`. `id` names the evaluated id in an input error.
|
|
48
|
+
* @throws UnknownInputError on an unknown key.
|
|
49
|
+
* @throws DuplicateInputError on an input given twice.
|
|
50
|
+
* @throws UnitError on a unit that does not fit.
|
|
51
51
|
* @internal
|
|
52
52
|
*/
|
|
53
|
-
export function resolveEvaluatorInputs(parameters, args) {
|
|
53
|
+
export function resolveEvaluatorInputs(parameters, args, id) {
|
|
54
54
|
const inputs = {};
|
|
55
55
|
const resolved = [];
|
|
56
56
|
const known = parameters.flatMap((p) => [p.key, ...(p.alternates ?? []).map((a) => a.key)]);
|
|
@@ -67,9 +67,10 @@ export function resolveEvaluatorInputs(parameters, args) {
|
|
|
67
67
|
const viaSynonym = viaName === null ? undefined : parameters.find((p) => p.key === viaName);
|
|
68
68
|
const p = direct ?? viaAlt ?? viaSynonym;
|
|
69
69
|
if (p === undefined)
|
|
70
|
-
throw new
|
|
70
|
+
throw new UnknownInputError(id, key, known);
|
|
71
71
|
const earlier = resolved.find((r) => r.key === p.key);
|
|
72
|
-
const
|
|
72
|
+
const role = temperatureQuantityRole(p.quantity) === 'difference' ? 'difference' : temperatureQuantityRole(key);
|
|
73
|
+
const c = convert(p, raw, role, siblings, key);
|
|
73
74
|
const alt = direct === undefined && viaAlt !== undefined ? p.alternates.find((a) => a.key === key) : undefined;
|
|
74
75
|
const value = alt === undefined ? c.value : c.value * alt.toKey;
|
|
75
76
|
if (earlier !== undefined) {
|
|
@@ -79,10 +80,9 @@ export function resolveEvaluatorInputs(parameters, args) {
|
|
|
79
80
|
if (synonymRepeat && earlier.value === value)
|
|
80
81
|
continue;
|
|
81
82
|
if (synonymRepeat) {
|
|
82
|
-
throw
|
|
83
|
+
throw synonymDisagreement([earlierName, key], { [earlierName]: earlier.value, [key]: value });
|
|
83
84
|
}
|
|
84
|
-
|
|
85
|
-
throw new UnitError(`'${p.key}' is given twice${throughAlternate ? ' (once through an alternate)' : ''}`);
|
|
85
|
+
throw new DuplicateInputError(id, p.key, [earlierName, key]);
|
|
86
86
|
}
|
|
87
87
|
inputs[p.key] = value;
|
|
88
88
|
resolved.push({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"evaluator-inputs.js","sourceRoot":"","sources":["../../src/bridges/evaluator-inputs.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"evaluator-inputs.js","sourceRoot":"","sources":["../../src/bridges/evaluator-inputs.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * `key=value[unit]` arguments → an evaluator's numeric inputs, through the\n * evaluator's declared parameters.\n *\n * Every argument must name a declared input or a declared alternate: an\n * unrecognised key is refused rather than ignored, because an ignored\n * `radius_m=` beside a required `diameter_m` is exactly the silent mistake the\n * declarations exist to catch. A value may carry a unit; it is converted into\n * the declared unit only when the dimensions agree.\n *\n * @module bridges/evaluator-inputs\n */\nimport { affineReadingNote, unitConventionNotes, UnitError, type TemperatureReading } from '../dimensional/units.js';\nimport {\n resolveQuantityName,\n synonymGroup,\n synonymDisagreement,\n temperatureQuantityRole,\n} from '../dimensional/formula-names.js';\nimport { readNamedBinding, type NamedBindingSibling } from '../numerical/binding-value.js';\nimport type { EvaluatorParameter } from './evaluators.js';\nimport { DuplicateInputError, UnknownInputError } from './evaluation-errors.js';\n\n/** One input as it was given and as the evaluator receives it. @internal */\nexport interface ResolvedInput {\n readonly key: string;\n readonly value: number;\n readonly unit: string;\n readonly given: string;\n /** The alternate key it was given under, when it was. */\n readonly via?: string;\n readonly note?: string;\n}\n\n/** 15 significant digits: the value itself is passed unrounded. */\nconst show = (v: number): number => Number(v.toPrecision(15));\n\n/** Disclosures that a unit symbol does not carry by itself. */\nfunction unitAside(given: string): string {\n const notes = unitConventionNotes(given);\n return notes.length === 0 ? '' : ` — ${notes.join('; ')}`;\n}\n\nconst splitArg = (a: string): [string, string] => {\n const eq = a.indexOf('=');\n if (eq <= 0) throw new UnitError(`'${a}' must be key=value (e.g. d_m=1um)`);\n return [a.slice(0, eq), a.slice(eq + 1)];\n};\n\nfunction convert(\n p: EvaluatorParameter,\n raw: string,\n reading: TemperatureReading,\n siblings: readonly NamedBindingSibling[],\n givenName: string,\n): { value: number; note?: string } {\n const read = readNamedBinding(givenName, raw, { reading, siblings, declaredUnit: p.unit });\n if (!read.dimensioned) return { value: read.value };\n // How an affine reading was applied comes from the unit table's own row (scale and ice point).\n const offset = read.affine === undefined ? '' : ` (${affineReadingNote(read.affine, reading)})`;\n // An angular input counts radians; a cycle-counting unit (the `cycles` flag on its row) takes 2π per cycle.\n const turns = p.angular === true ? read.cycles : 0;\n if (Number.isNaN(turns)) {\n throw new UnitError(`'${raw.trim()}' adds a cycle rate to a plain rate, so its radians per second are not defined`);\n }\n const value = turns === 0 ? read.value : read.value * (2 * Math.PI) ** turns;\n const turnsNote = turns === 0 ? '' : turns === 1 ? ' (cycles: × 2π)' : ` (cycles: × (2π)^${turns})`;\n const base = `${raw.trim()} → ${show(value)} ${p.unit || '(dimensionless)'}${offset}${turnsNote}${unitAside(raw)}`;\n return { value, note: read.temperatureNote === undefined ? base : `${base}. ${read.temperatureNote}` };\n}\n\n/**\n * Resolve `args` against `parameters`. `id` names the evaluated id in an input error.\n * @throws UnknownInputError on an unknown key.\n * @throws DuplicateInputError on an input given twice.\n * @throws UnitError on a unit that does not fit.\n * @internal\n */\nexport function resolveEvaluatorInputs(\n parameters: readonly EvaluatorParameter[],\n args: readonly string[],\n id?: string,\n): { inputs: Record<string, number>; resolved: ResolvedInput[] } {\n const inputs: Record<string, number> = {};\n const resolved: ResolvedInput[] = [];\n const known = parameters.flatMap((p) => [p.key, ...(p.alternates ?? []).map((a) => a.key)]);\n const parameterNames = new Set(parameters.map((p) => p.key));\n const siblings: NamedBindingSibling[] = args.map((arg) => {\n const [key, raw] = splitArg(arg);\n return { name: key, raw };\n });\n for (const arg of args) {\n const [key, raw] = splitArg(arg);\n const direct = parameters.find((p) => p.key === key);\n const viaAlt = parameters.find((p) => (p.alternates ?? []).some((a) => a.key === key));\n const viaName = direct === undefined && viaAlt === undefined ? resolveQuantityName(key, parameterNames) : null;\n const viaSynonym = viaName === null ? undefined : parameters.find((p) => p.key === viaName);\n const p = direct ?? viaAlt ?? viaSynonym;\n if (p === undefined) throw new UnknownInputError(id, key, known);\n const earlier = resolved.find((r) => r.key === p.key);\n const role = temperatureQuantityRole(p.quantity) === 'difference' ? 'difference' : temperatureQuantityRole(key);\n const c = convert(p, raw, role, siblings, key);\n const alt = direct === undefined && viaAlt !== undefined ? p.alternates!.find((a) => a.key === key)! : undefined;\n const value = alt === undefined ? c.value : c.value * alt.toKey;\n if (earlier !== undefined) {\n const earlierName = earlier.via ?? earlier.key;\n const group = synonymGroup(key);\n const synonymRepeat =\n group !== undefined && earlierName !== key && group.includes(earlierName) && group.includes(key);\n if (synonymRepeat && earlier.value === value) continue;\n if (synonymRepeat) {\n throw synonymDisagreement([earlierName, key], { [earlierName]: earlier.value, [key]: value })!;\n }\n throw new DuplicateInputError(id, p.key, [earlierName, key]);\n }\n inputs[p.key] = value;\n resolved.push({\n key: p.key,\n value,\n unit: p.unit,\n given: raw,\n ...(alt !== undefined || viaSynonym !== undefined ? { via: key } : {}),\n ...(alt !== undefined\n ? { note: `${key}=${raw.trim()} is ${alt.meaning}; ${p.key} = ${alt.toKey} × ${show(c.value)} = ${show(value)} ${p.unit}` }\n : c.note === undefined\n ? {}\n : { note: c.note }),\n });\n }\n return { inputs, resolved };\n}\n"]}
|
|
@@ -2,9 +2,15 @@
|
|
|
2
2
|
* Closed-form evaluators projected from the catalog. `run` evaluates the
|
|
3
3
|
* relation expression. It does not switch on a catalog id.
|
|
4
4
|
*
|
|
5
|
+
* `run` is the one evaluation of a catalog closed form: `evaluateRelation`,
|
|
6
|
+
* the CLI and the uncertainty probes all call it. It checks the bindings
|
|
7
|
+
* against the evaluator's {@link InputContract} before the validity domain,
|
|
8
|
+
* so an absent input is a {@link MissingInputError}, never a domain failure.
|
|
9
|
+
*
|
|
5
10
|
* @module bridges/evaluators
|
|
6
11
|
*/
|
|
7
|
-
import type {
|
|
12
|
+
import type { CatalogEvaluator, CatalogEvaluatorOutput } from './catalog-types.js';
|
|
13
|
+
import { type EvaluationWant, type InputContract } from './input-contract.js';
|
|
8
14
|
/** How a length input is read: radius, diameter, separation, impact parameter, or semi-major axis. @public */
|
|
9
15
|
export type GeometryRole = 'radius' | 'diameter' | 'separation' | 'impact-parameter' | 'semi-major-axis';
|
|
10
16
|
/** A second key that converts into the parameter's key. @public */
|
|
@@ -22,7 +28,12 @@ export interface EvaluatorParameter {
|
|
|
22
28
|
readonly meaning: string;
|
|
23
29
|
readonly geometry?: GeometryRole;
|
|
24
30
|
readonly temperature?: 'absolute';
|
|
31
|
+
/** The sign this input must have; the catalog loader turns it into a validity clause. */
|
|
32
|
+
readonly sign?: 'positive' | 'nonnegative' | 'any';
|
|
33
|
+
/** An angular frequency in rad/s. A cycle unit (Hz, rpm) given to it is multiplied by 2π. */
|
|
34
|
+
readonly angular?: true;
|
|
25
35
|
readonly alternates?: readonly ParameterAlternate[];
|
|
36
|
+
/** Derived: the parameter binds no relation source, so only an extra output reads it. */
|
|
26
37
|
readonly optional?: true;
|
|
27
38
|
}
|
|
28
39
|
/** A callable bridge evaluator with its input contract. @public */
|
|
@@ -31,19 +42,48 @@ export interface EvaluatorSpec {
|
|
|
31
42
|
readonly name: string;
|
|
32
43
|
readonly inputKeys: readonly string[];
|
|
33
44
|
readonly parameters: readonly EvaluatorParameter[];
|
|
34
|
-
run
|
|
45
|
+
/** Further numbers `run` returns beside `value`, keyed by `name`. */
|
|
46
|
+
readonly outputs: readonly CatalogEvaluatorOutput[];
|
|
47
|
+
/** Every spelling that binds an input, and which inputs are required. `run` checks it first. */
|
|
48
|
+
readonly contract: InputContract;
|
|
49
|
+
/**
|
|
50
|
+
* Evaluate at `inputs`, keyed by parameter key, quantity, relation source,
|
|
51
|
+
* alias or alternate. Throws `UnknownInputError`, `InputTypeError`,
|
|
52
|
+
* `DuplicateInputError` or `MissingInputError` before any
|
|
53
|
+
* `DomainViolationError`. With `want` `'value'` it returns `{ value }`
|
|
54
|
+
* alone, and an input only an extra output reads is not required.
|
|
55
|
+
*/
|
|
56
|
+
run(inputs: Readonly<Record<string, number>>, want?: EvaluationWant): Record<string, number>;
|
|
35
57
|
}
|
|
36
|
-
/**
|
|
37
|
-
|
|
58
|
+
/**
|
|
59
|
+
* Keys of the parameters whose source does not appear in the relation's
|
|
60
|
+
* expression. They are checked against the validity domain and do not change
|
|
61
|
+
* the value, so a caller who varies one sees no effect.
|
|
62
|
+
*/
|
|
63
|
+
export declare function unusedInputKeys(spec: EvaluatorSpec): string[];
|
|
64
|
+
/**
|
|
65
|
+
* The spec of one catalog evaluator row. A parameter that binds no relation
|
|
66
|
+
* source is read only by an extra output and is optional: the output is left
|
|
67
|
+
* out when it is not given. An output expression reads the scope by
|
|
68
|
+
* parameter key, so a key that names a registered constant (be-66's
|
|
69
|
+
* reflectance `R`) may bind the relation's source but may not be read by an
|
|
70
|
+
* output: building the spec refuses it.
|
|
71
|
+
* @internal
|
|
72
|
+
*/
|
|
73
|
+
export declare function buildEvaluatorSpec(row: CatalogEvaluator): EvaluatorSpec;
|
|
38
74
|
/** Bridge id → evaluator. @internal */
|
|
39
75
|
export declare const BRIDGE_EVALUATORS: ReadonlyMap<number, EvaluatorSpec>;
|
|
40
|
-
/**
|
|
76
|
+
/**
|
|
77
|
+
* What to say when an id is not in {@link BRIDGE_EVALUATORS}: an id outside
|
|
78
|
+
* the catalog and a catalog row with no evaluator are two different facts.
|
|
79
|
+
* @internal
|
|
80
|
+
*/
|
|
41
81
|
export declare function missingEvaluatorMessage(bridgeId: number): string;
|
|
42
82
|
/**
|
|
43
|
-
* Evaluate a catalog id with a numeric input record
|
|
44
|
-
*
|
|
83
|
+
* Evaluate a catalog id with a numeric input record: the evaluator's `run`,
|
|
84
|
+
* which checks the inputs first. Throws on an unknown id.
|
|
45
85
|
*
|
|
46
86
|
* @internal
|
|
47
87
|
*/
|
|
48
|
-
export declare function evaluateBridge(bridgeId: number, inputs: Readonly<Record<string, number>>):
|
|
88
|
+
export declare function evaluateBridge(bridgeId: number, inputs: Readonly<Record<string, number>>): Record<string, number>;
|
|
49
89
|
//# sourceMappingURL=evaluators.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"evaluators.d.ts","sourceRoot":"","sources":["../../src/bridges/evaluators.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"evaluators.d.ts","sourceRoot":"","sources":["../../src/bridges/evaluators.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAIH,OAAO,KAAK,EAAE,gBAAgB,EAAE,sBAAsB,EAA8C,MAAM,oBAAoB,CAAC;AAK/H,OAAO,EAA8B,KAAK,cAAc,EAAE,KAAK,aAAa,EAAkB,MAAM,qBAAqB,CAAC;AAE1H,8GAA8G;AAC9G,MAAM,MAAM,YAAY,GAAG,QAAQ,GAAG,UAAU,GAAG,YAAY,GAAG,kBAAkB,GAAG,iBAAiB,CAAC;AAEzG,mEAAmE;AACnE,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;CACxB;AAED,+CAA+C;AAC/C,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,QAAQ,CAAC,EAAE,YAAY,CAAC;IACjC,QAAQ,CAAC,WAAW,CAAC,EAAE,UAAU,CAAC;IAClC,yFAAyF;IACzF,QAAQ,CAAC,IAAI,CAAC,EAAE,UAAU,GAAG,aAAa,GAAG,KAAK,CAAC;IACnD,6FAA6F;IAC7F,QAAQ,CAAC,OAAO,CAAC,EAAE,IAAI,CAAC;IACxB,QAAQ,CAAC,UAAU,CAAC,EAAE,SAAS,kBAAkB,EAAE,CAAC;IACpD,yFAAyF;IACzF,QAAQ,CAAC,QAAQ,CAAC,EAAE,IAAI,CAAC;CAC1B;AAED,mEAAmE;AACnE,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,SAAS,EAAE,SAAS,MAAM,EAAE,CAAC;IACtC,QAAQ,CAAC,UAAU,EAAE,SAAS,kBAAkB,EAAE,CAAC;IACnD,qEAAqE;IACrE,QAAQ,CAAC,OAAO,EAAE,SAAS,sBAAsB,EAAE,CAAC;IACpD,gGAAgG;IAChG,QAAQ,CAAC,QAAQ,EAAE,aAAa,CAAC;IACjC;;;;;;OAMG;IACH,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,cAAc,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC9F;AAoCD;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,aAAa,GAAG,MAAM,EAAE,CAc7D;AAsED;;;;;;;;GAQG;AACH,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,gBAAgB,GAAG,aAAa,CAKvE;AAsDD,uCAAuC;AACvC,eAAO,MAAM,iBAAiB,EAAE,WAAW,CAAC,MAAM,EAAE,aAAa,CAEhE,CAAC;AAEF;;;;GAIG;AACH,wBAAgB,uBAAuB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAOhE;AAED;;;;;GAKG;AACH,wBAAgB,cAAc,CAC5B,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,GACvC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAIxB"}
|
|
@@ -2,13 +2,20 @@
|
|
|
2
2
|
* Closed-form evaluators projected from the catalog. `run` evaluates the
|
|
3
3
|
* relation expression. It does not switch on a catalog id.
|
|
4
4
|
*
|
|
5
|
+
* `run` is the one evaluation of a catalog closed form: `evaluateRelation`,
|
|
6
|
+
* the CLI and the uncertainty probes all call it. It checks the bindings
|
|
7
|
+
* against the evaluator's {@link InputContract} before the validity domain,
|
|
8
|
+
* so an absent input is a {@link MissingInputError}, never a domain failure.
|
|
9
|
+
*
|
|
5
10
|
* @module bridges/evaluators
|
|
6
11
|
*/
|
|
7
12
|
import { FORMULA_NAMED } from '../dimensional/formula-names.js';
|
|
8
|
-
import { primaryRelation } from './catalog-load.js';
|
|
9
|
-
import {
|
|
13
|
+
import { catalogEntries, catalogEntry, catalogEvaluators, primaryRelation } from './catalog-load.js';
|
|
14
|
+
import { evaluateFormula, formulaVariables, parseCatalogExpression, reservedFormulaNames } from './expr-parse.js';
|
|
10
15
|
import { evaluateCatalogRelation, relationHolds } from './relation-eval.js';
|
|
11
|
-
|
|
16
|
+
import { DomainViolationError } from './evaluation-errors.js';
|
|
17
|
+
import { checkInputs, inputContract } from './input-contract.js';
|
|
18
|
+
function toParameter(row, optional) {
|
|
12
19
|
return {
|
|
13
20
|
key: row.key,
|
|
14
21
|
quantity: row.quantity,
|
|
@@ -17,72 +24,204 @@ function toParameter(row) {
|
|
|
17
24
|
meaning: row.meaning,
|
|
18
25
|
...(row.geometry !== undefined ? { geometry: row.geometry } : {}),
|
|
19
26
|
...(row.temperature !== undefined ? { temperature: row.temperature } : {}),
|
|
27
|
+
...(row.sign !== undefined ? { sign: row.sign } : {}),
|
|
28
|
+
...(row.angular === true ? { angular: true } : {}),
|
|
20
29
|
...(row.alternates !== undefined ? { alternates: row.alternates } : {}),
|
|
21
|
-
...(
|
|
30
|
+
...(optional ? { optional: true } : {}),
|
|
22
31
|
};
|
|
23
32
|
}
|
|
24
33
|
const NAMED_DEFAULT = new Map(FORMULA_NAMED.map((named) => [named.name, named.value]));
|
|
25
|
-
/**
|
|
26
|
-
|
|
27
|
-
const sourceOfKey = new Map();
|
|
34
|
+
/** The relation source a parameter is the input for, or undefined when it owns none. */
|
|
35
|
+
function sourceOfParameter(relation, parameter) {
|
|
28
36
|
for (const source of relation.sources) {
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
sourceOfKey.set(alias, source);
|
|
37
|
+
if (source === parameter.key || (relation.aliases[source] ?? []).includes(parameter.key))
|
|
38
|
+
return source;
|
|
32
39
|
}
|
|
40
|
+
return relation.sources.includes(parameter.quantity) ? parameter.quantity : undefined;
|
|
41
|
+
}
|
|
42
|
+
/** Every symbol name in an expression tree. */
|
|
43
|
+
function symbolNames(node) {
|
|
44
|
+
if (node.kind === 'symbol')
|
|
45
|
+
return [node.name];
|
|
46
|
+
if (node.kind === 'op')
|
|
47
|
+
return node.args.flatMap(symbolNames);
|
|
48
|
+
if (node.kind === 'abs' || node.kind === 'transcendental')
|
|
49
|
+
return symbolNames(node.arg);
|
|
50
|
+
return [];
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Keys of the parameters whose source does not appear in the relation's
|
|
54
|
+
* expression. They are checked against the validity domain and do not change
|
|
55
|
+
* the value, so a caller who varies one sees no effect.
|
|
56
|
+
*/
|
|
57
|
+
export function unusedInputKeys(spec) {
|
|
58
|
+
const relation = primaryRelation(spec.bridgeId);
|
|
59
|
+
if (relation === undefined)
|
|
60
|
+
return [];
|
|
61
|
+
const used = new Set(symbolNames(parseCatalogExpression(relation.expression)));
|
|
62
|
+
// An output reads the scope names its parsed expression names, the same parse `run` evaluates.
|
|
63
|
+
const outputReads = new Set(spec.outputs.flatMap((output) => formulaVariables(output.expression)));
|
|
64
|
+
const readByOutput = (key) => outputReads.has(key.replaceAll('-', '_'));
|
|
65
|
+
return spec.parameters
|
|
66
|
+
.filter((parameter) => {
|
|
67
|
+
const source = sourceOfParameter(relation, parameter);
|
|
68
|
+
// A parameter that owns no relation source is read only by an extra output.
|
|
69
|
+
return (source === undefined || !used.has(source)) && !readByOutput(parameter.key);
|
|
70
|
+
})
|
|
71
|
+
.map((parameter) => parameter.key);
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* The declared inputs of a catalog evaluator: one slot per parameter, spelled
|
|
75
|
+
* by its key, its relation source and that source's aliases, and its quantity
|
|
76
|
+
* when no other slot shares it; then one optional, unlisted slot per relation
|
|
77
|
+
* source no parameter owns, which a named constant fills when not given.
|
|
78
|
+
* Building it throws when one spelling would bind two slots.
|
|
79
|
+
*/
|
|
80
|
+
function evaluatorContract(catalogId, relation, parameters) {
|
|
81
|
+
const quantityCount = new Map();
|
|
82
|
+
for (const p of parameters)
|
|
83
|
+
quantityCount.set(p.quantity, (quantityCount.get(p.quantity) ?? 0) + 1);
|
|
84
|
+
const owned = new Set();
|
|
85
|
+
const slots = parameters.map((p) => {
|
|
86
|
+
const source = sourceOfParameter(relation, p);
|
|
87
|
+
if (source !== undefined)
|
|
88
|
+
owned.add(source);
|
|
89
|
+
const spellings = [
|
|
90
|
+
p.key,
|
|
91
|
+
...(source === undefined ? [] : [source, ...(relation.aliases[source] ?? [])]),
|
|
92
|
+
...(quantityCount.get(p.quantity) === 1 ? [p.quantity] : []),
|
|
93
|
+
];
|
|
94
|
+
return {
|
|
95
|
+
key: p.key,
|
|
96
|
+
spellings: [...new Set(spellings)],
|
|
97
|
+
alternates: (p.alternates ?? []).map((alt) => ({ key: alt.key, toKey: alt.toKey })),
|
|
98
|
+
optional: p.optional === true,
|
|
99
|
+
readBy: source === undefined ? 'outputs' : 'value',
|
|
100
|
+
listed: true,
|
|
101
|
+
};
|
|
102
|
+
});
|
|
103
|
+
for (const source of relation.sources) {
|
|
104
|
+
if (owned.has(source))
|
|
105
|
+
continue;
|
|
106
|
+
slots.push({
|
|
107
|
+
key: source,
|
|
108
|
+
spellings: [source, ...(relation.aliases[source] ?? [])],
|
|
109
|
+
alternates: [],
|
|
110
|
+
optional: NAMED_DEFAULT.has(source.replaceAll('-', '_')),
|
|
111
|
+
readBy: 'value',
|
|
112
|
+
listed: false,
|
|
113
|
+
});
|
|
114
|
+
}
|
|
115
|
+
return inputContract(`be-${catalogId}`, slots);
|
|
116
|
+
}
|
|
117
|
+
/**
|
|
118
|
+
* Checked inputs (keyed by slot key) onto catalog source names. A source no
|
|
119
|
+
* parameter owns takes its given value, else its named constant.
|
|
120
|
+
*/
|
|
121
|
+
function bindRelationInputs(relation, parameters, inputs) {
|
|
33
122
|
const bound = {};
|
|
34
123
|
const owned = new Set();
|
|
35
124
|
for (const parameter of parameters) {
|
|
36
|
-
const source =
|
|
37
|
-
(relation.sources.includes(parameter.quantity) ? parameter.quantity : undefined);
|
|
125
|
+
const source = sourceOfParameter(relation, parameter);
|
|
38
126
|
if (source === undefined)
|
|
39
127
|
continue;
|
|
40
128
|
owned.add(source);
|
|
41
129
|
const value = inputs[parameter.key];
|
|
42
|
-
if (value
|
|
43
|
-
|
|
44
|
-
bound[source] = value;
|
|
130
|
+
if (value !== undefined)
|
|
131
|
+
bound[source] = value;
|
|
45
132
|
}
|
|
46
133
|
for (const source of relation.sources) {
|
|
47
|
-
if (
|
|
134
|
+
if (owned.has(source))
|
|
48
135
|
continue;
|
|
49
|
-
const value = NAMED_DEFAULT.get(source.replaceAll('-', '_'));
|
|
136
|
+
const value = inputs[source] ?? NAMED_DEFAULT.get(source.replaceAll('-', '_'));
|
|
50
137
|
if (value !== undefined)
|
|
51
138
|
bound[source] = value;
|
|
52
139
|
}
|
|
53
140
|
return bound;
|
|
54
141
|
}
|
|
55
|
-
|
|
142
|
+
/**
|
|
143
|
+
* The spec of one catalog evaluator row. A parameter that binds no relation
|
|
144
|
+
* source is read only by an extra output and is optional: the output is left
|
|
145
|
+
* out when it is not given. An output expression reads the scope by
|
|
146
|
+
* parameter key, so a key that names a registered constant (be-66's
|
|
147
|
+
* reflectance `R`) may bind the relation's source but may not be read by an
|
|
148
|
+
* output: building the spec refuses it.
|
|
149
|
+
* @internal
|
|
150
|
+
*/
|
|
151
|
+
export function buildEvaluatorSpec(row) {
|
|
152
|
+
const relation = primaryRelation(row.catalogId);
|
|
153
|
+
if (relation === undefined)
|
|
154
|
+
throw new Error(missingEvaluatorMessage(row.catalogId));
|
|
155
|
+
const parameters = row.parameters.map((p) => toParameter(p, sourceOfParameter(relation, p) === undefined));
|
|
156
|
+
return buildSpec(row.catalogId, row.name, parameters, row.outputs ?? []);
|
|
157
|
+
}
|
|
158
|
+
function buildSpec(catalogId, name, parameters, outputs) {
|
|
159
|
+
const relation = primaryRelation(catalogId);
|
|
160
|
+
if (relation === undefined)
|
|
161
|
+
throw new Error(missingEvaluatorMessage(catalogId));
|
|
162
|
+
const contract = evaluatorContract(catalogId, relation, parameters);
|
|
163
|
+
const keys = parameters.map((parameter) => parameter.key);
|
|
164
|
+
const reserved = reservedFormulaNames();
|
|
165
|
+
for (const output of outputs) {
|
|
166
|
+
const shadowed = formulaVariables(output.expression).find((name) => reserved.has(name) && keys.includes(name));
|
|
167
|
+
if (shadowed !== undefined) {
|
|
168
|
+
throw new Error(`be-${catalogId}: output '${output.name}' reads '${shadowed}', which names a registered constant`);
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
// An output reads the parameter keys and `value`; a key that shadows a constant is refused above.
|
|
172
|
+
const outputScope = [...keys, 'value'];
|
|
173
|
+
// An output is computed when every parameter key it reads was given.
|
|
174
|
+
const reads = outputs.map((output) => formulaVariables(output.expression).filter((name) => keys.includes(name)));
|
|
56
175
|
return {
|
|
57
176
|
bridgeId: catalogId,
|
|
58
177
|
name,
|
|
59
178
|
inputKeys: parameters.filter((parameter) => parameter.optional !== true).map((parameter) => parameter.key),
|
|
60
179
|
parameters,
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
const bound = bindRelationInputs(relation, parameters, inputs);
|
|
180
|
+
outputs,
|
|
181
|
+
contract,
|
|
182
|
+
run(inputs, want = 'all') {
|
|
183
|
+
const given = checkInputs(contract, inputs, want);
|
|
184
|
+
const bound = bindRelationInputs(relation, parameters, given);
|
|
67
185
|
if (!relationHolds(relation, bound)) {
|
|
68
|
-
throw new
|
|
186
|
+
throw new DomainViolationError(`${relation.id}: inputs violate validity domain (${relation.domain})`);
|
|
187
|
+
}
|
|
188
|
+
for (const parameter of parameters) {
|
|
189
|
+
const value = given[parameter.key];
|
|
190
|
+
if (parameter.optional === true && parameter.sign === 'positive' && value !== undefined && !(value > 0)) {
|
|
191
|
+
throw new DomainViolationError(`${relation.id}: ${parameter.key} must be > 0`);
|
|
192
|
+
}
|
|
69
193
|
}
|
|
70
|
-
|
|
194
|
+
const value = evaluateCatalogRelation(relation, bound);
|
|
195
|
+
const result = { value };
|
|
196
|
+
if (want === 'value')
|
|
197
|
+
return result;
|
|
198
|
+
outputs.forEach((output, i) => {
|
|
199
|
+
if (reads[i].some((key) => given[key] === undefined))
|
|
200
|
+
return;
|
|
201
|
+
result[output.name] = evaluateFormula(output.expression, { ...given, value }, outputScope);
|
|
202
|
+
});
|
|
203
|
+
return result;
|
|
71
204
|
},
|
|
72
205
|
};
|
|
73
206
|
}
|
|
74
207
|
/** Bridge id → evaluator. @internal */
|
|
75
|
-
export const BRIDGE_EVALUATORS = new Map(catalogEvaluators().map((row) =>
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
208
|
+
export const BRIDGE_EVALUATORS = new Map(catalogEvaluators().map((row) => [row.catalogId, buildEvaluatorSpec(row)]));
|
|
209
|
+
/**
|
|
210
|
+
* What to say when an id is not in {@link BRIDGE_EVALUATORS}: an id outside
|
|
211
|
+
* the catalog and a catalog row with no evaluator are two different facts.
|
|
212
|
+
* @internal
|
|
213
|
+
*/
|
|
80
214
|
export function missingEvaluatorMessage(bridgeId) {
|
|
81
|
-
|
|
215
|
+
const entry = catalogEntry(bridgeId);
|
|
216
|
+
if (entry === undefined) {
|
|
217
|
+
const ids = catalogEntries().map((e) => e.id);
|
|
218
|
+
return `be-${bridgeId} is not a catalog id (the catalog holds be-${Math.min(...ids)} to be-${Math.max(...ids)})`;
|
|
219
|
+
}
|
|
220
|
+
return `be-${bridgeId} (${entry.name}) has no evaluator; \`upt atlas be-${bridgeId}\` prints its record, and \`upt evaluate\` with no id lists the evaluable ids`;
|
|
82
221
|
}
|
|
83
222
|
/**
|
|
84
|
-
* Evaluate a catalog id with a numeric input record
|
|
85
|
-
*
|
|
223
|
+
* Evaluate a catalog id with a numeric input record: the evaluator's `run`,
|
|
224
|
+
* which checks the inputs first. Throws on an unknown id.
|
|
86
225
|
*
|
|
87
226
|
* @internal
|
|
88
227
|
*/
|
|
@@ -90,10 +229,6 @@ export function evaluateBridge(bridgeId, inputs) {
|
|
|
90
229
|
const spec = BRIDGE_EVALUATORS.get(bridgeId);
|
|
91
230
|
if (spec === undefined)
|
|
92
231
|
throw new Error(missingEvaluatorMessage(bridgeId));
|
|
93
|
-
const missing = spec.inputKeys.filter((key) => !(key in inputs) || !Number.isFinite(inputs[key]));
|
|
94
|
-
if (missing.length > 0) {
|
|
95
|
-
throw new Error(`evaluateBridge: catalog id ${bridgeId} (${spec.name}) needs {${spec.inputKeys.join(', ')}}; missing/non-finite: ${missing.join(', ')}`);
|
|
96
|
-
}
|
|
97
232
|
return spec.run(inputs);
|
|
98
233
|
}
|
|
99
234
|
//# sourceMappingURL=evaluators.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"evaluators.js","sourceRoot":"","sources":["../../src/bridges/evaluators.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"evaluators.js","sourceRoot":"","sources":["../../src/bridges/evaluators.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Closed-form evaluators projected from the catalog. `run` evaluates the\n * relation expression. It does not switch on a catalog id.\n *\n * `run` is the one evaluation of a catalog closed form: `evaluateRelation`,\n * the CLI and the uncertainty probes all call it. It checks the bindings\n * against the evaluator's {@link InputContract} before the validity domain,\n * so an absent input is a {@link MissingInputError}, never a domain failure.\n *\n * @module bridges/evaluators\n */\n\nimport { FORMULA_NAMED } from '../dimensional/formula-names.js';\nimport { catalogEntries, catalogEntry, catalogEvaluators, primaryRelation } from './catalog-load.js';\nimport type { CatalogEvaluator, CatalogEvaluatorOutput, CatalogEvaluatorParameter, CatalogRelation } from './catalog-types.js';\nimport { evaluateFormula, formulaVariables, parseCatalogExpression, reservedFormulaNames } from './expr-parse.js';\nimport type { ExprNode } from '../dimensional/ast-types.js';\nimport { evaluateCatalogRelation, relationHolds } from './relation-eval.js';\nimport { DomainViolationError } from './evaluation-errors.js';\nimport { checkInputs, inputContract, type EvaluationWant, type InputContract, type InputSlot } from './input-contract.js';\n\n/** How a length input is read: radius, diameter, separation, impact parameter, or semi-major axis. @public */\nexport type GeometryRole = 'radius' | 'diameter' | 'separation' | 'impact-parameter' | 'semi-major-axis';\n\n/** A second key that converts into the parameter's key. @public */\nexport interface ParameterAlternate {\n readonly key: string;\n readonly meaning: string;\n readonly toKey: number;\n}\n\n/** One named input of an evaluator. @public */\nexport interface EvaluatorParameter {\n readonly key: string;\n readonly quantity: string;\n readonly symbol: string;\n readonly unit: string;\n readonly meaning: string;\n readonly geometry?: GeometryRole;\n readonly temperature?: 'absolute';\n /** The sign this input must have; the catalog loader turns it into a validity clause. */\n readonly sign?: 'positive' | 'nonnegative' | 'any';\n /** An angular frequency in rad/s. A cycle unit (Hz, rpm) given to it is multiplied by 2π. */\n readonly angular?: true;\n readonly alternates?: readonly ParameterAlternate[];\n /** Derived: the parameter binds no relation source, so only an extra output reads it. */\n readonly optional?: true;\n}\n\n/** A callable bridge evaluator with its input contract. @public */\nexport interface EvaluatorSpec {\n readonly bridgeId: number;\n readonly name: string;\n readonly inputKeys: readonly string[];\n readonly parameters: readonly EvaluatorParameter[];\n /** Further numbers `run` returns beside `value`, keyed by `name`. */\n readonly outputs: readonly CatalogEvaluatorOutput[];\n /** Every spelling that binds an input, and which inputs are required. `run` checks it first. */\n readonly contract: InputContract;\n /**\n * Evaluate at `inputs`, keyed by parameter key, quantity, relation source,\n * alias or alternate. Throws `UnknownInputError`, `InputTypeError`,\n * `DuplicateInputError` or `MissingInputError` before any\n * `DomainViolationError`. With `want` `'value'` it returns `{ value }`\n * alone, and an input only an extra output reads is not required.\n */\n run(inputs: Readonly<Record<string, number>>, want?: EvaluationWant): Record<string, number>;\n}\n\nfunction toParameter(row: CatalogEvaluatorParameter, optional: boolean): EvaluatorParameter {\n return {\n key: row.key,\n quantity: row.quantity,\n symbol: row.symbol,\n unit: row.unit,\n meaning: row.meaning,\n ...(row.geometry !== undefined ? { geometry: row.geometry } : {}),\n ...(row.temperature !== undefined ? { temperature: row.temperature } : {}),\n ...(row.sign !== undefined ? { sign: row.sign } : {}),\n ...(row.angular === true ? { angular: true as const } : {}),\n ...(row.alternates !== undefined ? { alternates: row.alternates } : {}),\n ...(optional ? { optional: true as const } : {}),\n };\n}\n\nconst NAMED_DEFAULT = new Map(FORMULA_NAMED.map((named) => [named.name, named.value]));\n\n/** The relation source a parameter is the input for, or undefined when it owns none. */\nfunction sourceOfParameter(relation: CatalogRelation, parameter: Pick<EvaluatorParameter, 'key' | 'quantity'>): string | undefined {\n for (const source of relation.sources) {\n if (source === parameter.key || (relation.aliases[source] ?? []).includes(parameter.key)) return source;\n }\n return relation.sources.includes(parameter.quantity) ? parameter.quantity : undefined;\n}\n\n/** Every symbol name in an expression tree. */\nfunction symbolNames(node: ExprNode): string[] {\n if (node.kind === 'symbol') return [node.name];\n if (node.kind === 'op') return node.args.flatMap(symbolNames);\n if (node.kind === 'abs' || node.kind === 'transcendental') return symbolNames(node.arg);\n return [];\n}\n\n/**\n * Keys of the parameters whose source does not appear in the relation's\n * expression. They are checked against the validity domain and do not change\n * the value, so a caller who varies one sees no effect.\n */\nexport function unusedInputKeys(spec: EvaluatorSpec): string[] {\n const relation = primaryRelation(spec.bridgeId);\n if (relation === undefined) return [];\n const used = new Set(symbolNames(parseCatalogExpression(relation.expression)));\n // An output reads the scope names its parsed expression names, the same parse `run` evaluates.\n const outputReads = new Set(spec.outputs.flatMap((output) => formulaVariables(output.expression)));\n const readByOutput = (key: string): boolean => outputReads.has(key.replaceAll('-', '_'));\n return spec.parameters\n .filter((parameter) => {\n const source = sourceOfParameter(relation, parameter);\n // A parameter that owns no relation source is read only by an extra output.\n return (source === undefined || !used.has(source)) && !readByOutput(parameter.key);\n })\n .map((parameter) => parameter.key);\n}\n\n/**\n * The declared inputs of a catalog evaluator: one slot per parameter, spelled\n * by its key, its relation source and that source's aliases, and its quantity\n * when no other slot shares it; then one optional, unlisted slot per relation\n * source no parameter owns, which a named constant fills when not given.\n * Building it throws when one spelling would bind two slots.\n */\nfunction evaluatorContract(catalogId: number, relation: CatalogRelation, parameters: readonly EvaluatorParameter[]): InputContract {\n const quantityCount = new Map<string, number>();\n for (const p of parameters) quantityCount.set(p.quantity, (quantityCount.get(p.quantity) ?? 0) + 1);\n const owned = new Set<string>();\n const slots: InputSlot[] = parameters.map((p) => {\n const source = sourceOfParameter(relation, p);\n if (source !== undefined) owned.add(source);\n const spellings = [\n p.key,\n ...(source === undefined ? [] : [source, ...(relation.aliases[source] ?? [])]),\n ...(quantityCount.get(p.quantity) === 1 ? [p.quantity] : []),\n ];\n return {\n key: p.key,\n spellings: [...new Set(spellings)],\n alternates: (p.alternates ?? []).map((alt) => ({ key: alt.key, toKey: alt.toKey })),\n optional: p.optional === true,\n readBy: source === undefined ? ('outputs' as const) : ('value' as const),\n listed: true,\n };\n });\n for (const source of relation.sources) {\n if (owned.has(source)) continue;\n slots.push({\n key: source,\n spellings: [source, ...(relation.aliases[source] ?? [])],\n alternates: [],\n optional: NAMED_DEFAULT.has(source.replaceAll('-', '_')),\n readBy: 'value',\n listed: false,\n });\n }\n return inputContract(`be-${catalogId}`, slots);\n}\n\n/**\n * Checked inputs (keyed by slot key) onto catalog source names. A source no\n * parameter owns takes its given value, else its named constant.\n */\nfunction bindRelationInputs(\n relation: CatalogRelation,\n parameters: readonly EvaluatorParameter[],\n inputs: Readonly<Record<string, number>>,\n): Record<string, number> {\n const bound: Record<string, number> = {};\n const owned = new Set<string>();\n for (const parameter of parameters) {\n const source = sourceOfParameter(relation, parameter);\n if (source === undefined) continue;\n owned.add(source);\n const value = inputs[parameter.key];\n if (value !== undefined) bound[source] = value;\n }\n for (const source of relation.sources) {\n if (owned.has(source)) continue;\n const value = inputs[source] ?? NAMED_DEFAULT.get(source.replaceAll('-', '_'));\n if (value !== undefined) bound[source] = value;\n }\n return bound;\n}\n\n/**\n * The spec of one catalog evaluator row. A parameter that binds no relation\n * source is read only by an extra output and is optional: the output is left\n * out when it is not given. An output expression reads the scope by\n * parameter key, so a key that names a registered constant (be-66's\n * reflectance `R`) may bind the relation's source but may not be read by an\n * output: building the spec refuses it.\n * @internal\n */\nexport function buildEvaluatorSpec(row: CatalogEvaluator): EvaluatorSpec {\n const relation = primaryRelation(row.catalogId);\n if (relation === undefined) throw new Error(missingEvaluatorMessage(row.catalogId));\n const parameters = row.parameters.map((p) => toParameter(p, sourceOfParameter(relation, p) === undefined));\n return buildSpec(row.catalogId, row.name, parameters, row.outputs ?? []);\n}\n\nfunction buildSpec(\n catalogId: number,\n name: string,\n parameters: readonly EvaluatorParameter[],\n outputs: readonly CatalogEvaluatorOutput[],\n): EvaluatorSpec {\n const relation = primaryRelation(catalogId);\n if (relation === undefined) throw new Error(missingEvaluatorMessage(catalogId));\n const contract = evaluatorContract(catalogId, relation, parameters);\n const keys = parameters.map((parameter) => parameter.key);\n const reserved = reservedFormulaNames();\n for (const output of outputs) {\n const shadowed = formulaVariables(output.expression).find((name) => reserved.has(name) && keys.includes(name));\n if (shadowed !== undefined) {\n throw new Error(`be-${catalogId}: output '${output.name}' reads '${shadowed}', which names a registered constant`);\n }\n }\n // An output reads the parameter keys and `value`; a key that shadows a constant is refused above.\n const outputScope = [...keys, 'value'];\n // An output is computed when every parameter key it reads was given.\n const reads = outputs.map((output) => formulaVariables(output.expression).filter((name) => keys.includes(name)));\n return {\n bridgeId: catalogId,\n name,\n inputKeys: parameters.filter((parameter) => parameter.optional !== true).map((parameter) => parameter.key),\n parameters,\n outputs,\n contract,\n run(inputs, want = 'all') {\n const given = checkInputs(contract, inputs, want);\n const bound = bindRelationInputs(relation, parameters, given);\n if (!relationHolds(relation, bound)) {\n throw new DomainViolationError(`${relation.id}: inputs violate validity domain (${relation.domain})`);\n }\n for (const parameter of parameters) {\n const value = given[parameter.key];\n if (parameter.optional === true && parameter.sign === 'positive' && value !== undefined && !(value > 0)) {\n throw new DomainViolationError(`${relation.id}: ${parameter.key} must be > 0`);\n }\n }\n const value = evaluateCatalogRelation(relation, bound);\n const result: Record<string, number> = { value };\n if (want === 'value') return result;\n outputs.forEach((output, i) => {\n if (reads[i]!.some((key) => given[key] === undefined)) return;\n result[output.name] = evaluateFormula(output.expression, { ...given, value }, outputScope);\n });\n return result;\n },\n };\n}\n\n/** Bridge id → evaluator. @internal */\nexport const BRIDGE_EVALUATORS: ReadonlyMap<number, EvaluatorSpec> = new Map(\n catalogEvaluators().map((row) => [row.catalogId, buildEvaluatorSpec(row)] as const),\n);\n\n/**\n * What to say when an id is not in {@link BRIDGE_EVALUATORS}: an id outside\n * the catalog and a catalog row with no evaluator are two different facts.\n * @internal\n */\nexport function missingEvaluatorMessage(bridgeId: number): string {\n const entry = catalogEntry(bridgeId);\n if (entry === undefined) {\n const ids = catalogEntries().map((e) => e.id);\n return `be-${bridgeId} is not a catalog id (the catalog holds be-${Math.min(...ids)} to be-${Math.max(...ids)})`;\n }\n return `be-${bridgeId} (${entry.name}) has no evaluator; \\`upt atlas be-${bridgeId}\\` prints its record, and \\`upt evaluate\\` with no id lists the evaluable ids`;\n}\n\n/**\n * Evaluate a catalog id with a numeric input record: the evaluator's `run`,\n * which checks the inputs first. Throws on an unknown id.\n *\n * @internal\n */\nexport function evaluateBridge(\n bridgeId: number,\n inputs: Readonly<Record<string, number>>,\n): Record<string, number> {\n const spec = BRIDGE_EVALUATORS.get(bridgeId);\n if (spec === undefined) throw new Error(missingEvaluatorMessage(bridgeId));\n return spec.run(inputs);\n}\n"]}
|
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* One expression parser for a catalog formula.
|
|
2
|
+
* One expression parser for a catalog formula: MathTS.
|
|
3
3
|
*
|
|
4
|
-
* Numeric evaluation is MathTS `parseFormula` on the hyphen-rewritten string
|
|
4
|
+
* Numeric evaluation is MathTS `parseFormula` on the hyphen-rewritten string,
|
|
5
|
+
* and the dimensional `ExprNode` is built from the MathTS parse tree of the
|
|
6
|
+
* same string, so the number and the tree can never disagree on precedence.
|
|
5
7
|
* The `ExprNode` keeps hyphenated quantity names and unary minus, so symbolic
|
|
6
8
|
* composition and dimensional checks see the same formula.
|
|
7
9
|
*
|
|
@@ -10,10 +12,39 @@
|
|
|
10
12
|
import type { ExprNode } from '../dimensional/ast-types.js';
|
|
11
13
|
/** Names a formula may mention: quantities, constants, and formula overlays. */
|
|
12
14
|
export declare function formulaNames(): ReadonlySet<string>;
|
|
13
|
-
/**
|
|
14
|
-
export declare function
|
|
15
|
-
/**
|
|
16
|
-
|
|
17
|
-
|
|
15
|
+
/** π, the registered constants and the formula overlays: names a caller may not bind. */
|
|
16
|
+
export declare function reservedFormulaNames(): ReadonlySet<string>;
|
|
17
|
+
/**
|
|
18
|
+
* Numeric scope: constants, formula overlays, and π, then the caller's inputs.
|
|
19
|
+
* An input whose name is reserved is refused with {@link ConstantInputError}
|
|
20
|
+
* unless `declared` names it: a relation's own source may carry a constant's
|
|
21
|
+
* name as a default the caller overrides (be-63's Lane-Emden ω₃).
|
|
22
|
+
* {@link evaluateFormula} first drops a reserved key its expression does not
|
|
23
|
+
* read; this builder refuses every undeclared one.
|
|
24
|
+
*/
|
|
25
|
+
export declare function formulaScope(inputs?: Readonly<Record<string, number>>, declared?: readonly string[]): Record<string, number>;
|
|
26
|
+
/**
|
|
27
|
+
* The free variables of a catalog expression, read from the same MathTS parse
|
|
28
|
+
* {@link evaluateFormula} evaluates: the scope names it reads, a hyphenated
|
|
29
|
+
* quantity written with underscores.
|
|
30
|
+
*/
|
|
31
|
+
export declare function formulaVariables(expression: string): readonly string[];
|
|
32
|
+
/**
|
|
33
|
+
* `inputs` without the reserved keys that `reads` does not name. A reserved
|
|
34
|
+
* key the formula reads and `declared` does not name is refused: the caller's
|
|
35
|
+
* number would replace the constant. One the formula does not read is not an
|
|
36
|
+
* input of this formula; it is dropped, as any other extra key is on the
|
|
37
|
+
* graph path (a composed edge forwards every input to each component).
|
|
38
|
+
*/
|
|
39
|
+
export declare function withoutUnreadConstants(inputs: Readonly<Record<string, number>>, reads: ReadonlySet<string>, declared: readonly string[]): Record<string, number>;
|
|
40
|
+
/**
|
|
41
|
+
* Evaluate a catalog expression with MathTS. Inputs are quantity names.
|
|
42
|
+
* `declared` are the names the caller may bind although they are reserved
|
|
43
|
+
* (the relation's sources); a reserved key the expression reads and
|
|
44
|
+
* `declared` does not name is a {@link ConstantInputError}, and one it does
|
|
45
|
+
* not read is dropped ({@link withoutUnreadConstants}).
|
|
46
|
+
*/
|
|
47
|
+
export declare function evaluateFormula(expression: string, inputs: Readonly<Record<string, number>>, declared?: readonly string[]): number;
|
|
48
|
+
/** Parse a catalog expression into a sign-preserving `ExprNode`, through the one MathTS parser. */
|
|
18
49
|
export declare function parseCatalogExpression(expression: string): ExprNode;
|
|
19
50
|
//# sourceMappingURL=expr-parse.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"expr-parse.d.ts","sourceRoot":"","sources":["../../src/bridges/expr-parse.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"expr-parse.d.ts","sourceRoot":"","sources":["../../src/bridges/expr-parse.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAGH,OAAO,KAAK,EAAE,QAAQ,EAAoB,MAAM,6BAA6B,CAAC;AAgC9E,gFAAgF;AAChF,wBAAgB,YAAY,IAAI,WAAW,CAAC,MAAM,CAAC,CAMlD;AAID,yFAAyF;AACzF,wBAAgB,oBAAoB,IAAI,WAAW,CAAC,MAAM,CAAC,CAE1D;AAID;;;;;;;GAOG;AACH,wBAAgB,YAAY,CAC1B,MAAM,GAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAM,EAC7C,QAAQ,GAAE,SAAS,MAAM,EAAO,GAC/B,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAWxB;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,UAAU,EAAE,MAAM,GAAG,SAAS,MAAM,EAAE,CAEtE;AAgBD;;;;;;GAMG;AACH,wBAAgB,sBAAsB,CACpC,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,EACxC,KAAK,EAAE,WAAW,CAAC,MAAM,CAAC,EAC1B,QAAQ,EAAE,SAAS,MAAM,EAAE,GAC1B,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAYxB;AAED;;;;;;GAMG;AACH,wBAAgB,eAAe,CAC7B,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,EACxC,QAAQ,GAAE,SAAS,MAAM,EAAO,GAC/B,MAAM,CAUR;AA8FD,mGAAmG;AACnG,wBAAgB,sBAAsB,CAAC,UAAU,EAAE,MAAM,GAAG,QAAQ,CAGnE"}
|