universal-physics-tensor 9.0.0 → 11.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +21 -17
- package/bin/upt.mjs +13 -1
- package/data/atlas/atlas.json +79 -68
- package/data/atlas/atlas.jsonld +1 -1
- package/data/atlas/diffusion.json +24 -23
- package/data/atlas/oscillators.json +21 -16
- package/data/atlas/waves.json +36 -31
- package/data/atlas/witness-results.json +11 -11
- package/data/bridge-catalog.json +1192 -1636
- package/data/bridge-catalog.schema.json +390 -135
- package/data/quantities.json +53 -19
- package/data/schemas/atlas-record.v0.json +184 -46
- package/data/units.json +33 -4
- package/dist/atlas/applicability.d.ts.map +1 -1
- package/dist/atlas/applicability.js +35 -18
- package/dist/atlas/applicability.js.map +1 -1
- package/dist/atlas/association.js.map +1 -1
- package/dist/atlas/benchmark/backend-shapes.d.ts.map +1 -1
- package/dist/atlas/benchmark/backend-shapes.js +5 -1
- package/dist/atlas/benchmark/backend-shapes.js.map +1 -1
- package/dist/atlas/benchmark/baselines.d.ts.map +1 -1
- package/dist/atlas/benchmark/baselines.js +8 -0
- package/dist/atlas/benchmark/baselines.js.map +1 -1
- package/dist/atlas/benchmark/hybrid-retrieval.d.ts +12 -3
- package/dist/atlas/benchmark/hybrid-retrieval.d.ts.map +1 -1
- package/dist/atlas/benchmark/hybrid-retrieval.js +30 -21
- package/dist/atlas/benchmark/hybrid-retrieval.js.map +1 -1
- package/dist/atlas/benchmark/leakage.js.map +1 -1
- package/dist/atlas/benchmark/loader.js +2 -2
- package/dist/atlas/benchmark/loader.js.map +1 -1
- package/dist/atlas/benchmark/run-atlas.d.ts.map +1 -1
- package/dist/atlas/benchmark/run-atlas.js +14 -2
- package/dist/atlas/benchmark/run-atlas.js.map +1 -1
- package/dist/atlas/benchmark/stats.d.ts +3 -3
- package/dist/atlas/benchmark/stats.d.ts.map +1 -1
- package/dist/atlas/benchmark/stats.js +16 -8
- package/dist/atlas/benchmark/stats.js.map +1 -1
- package/dist/atlas/benchmark/study.js.map +1 -1
- package/dist/atlas/benchmark/types.js.map +1 -1
- package/dist/atlas/bridge-record.d.ts +4 -4
- package/dist/atlas/bridge-record.d.ts.map +1 -1
- package/dist/atlas/bridge-record.js +6 -6
- package/dist/atlas/bridge-record.js.map +1 -1
- package/dist/atlas/catalog-formal-ref.d.ts +26 -3
- package/dist/atlas/catalog-formal-ref.d.ts.map +1 -1
- package/dist/atlas/catalog-formal-ref.js +52 -5
- package/dist/atlas/catalog-formal-ref.js.map +1 -1
- package/dist/atlas/chain-pipeline.d.ts +0 -11
- package/dist/atlas/chain-pipeline.d.ts.map +1 -1
- package/dist/atlas/chain-pipeline.js +12 -24
- package/dist/atlas/chain-pipeline.js.map +1 -1
- package/dist/atlas/composition-table.js.map +1 -1
- package/dist/atlas/conventions.js.map +1 -1
- package/dist/atlas/coverage.d.ts +2 -2
- package/dist/atlas/coverage.js.map +1 -1
- package/dist/atlas/derivation.js.map +1 -1
- package/dist/atlas/derive-evidence.d.ts +6 -4
- package/dist/atlas/derive-evidence.d.ts.map +1 -1
- package/dist/atlas/derive-evidence.js +7 -2
- package/dist/atlas/derive-evidence.js.map +1 -1
- package/dist/atlas/diffusion/bridges-closure.d.ts +0 -4
- package/dist/atlas/diffusion/bridges-closure.d.ts.map +1 -1
- package/dist/atlas/diffusion/bridges-closure.js +8 -17
- package/dist/atlas/diffusion/bridges-closure.js.map +1 -1
- package/dist/atlas/diffusion/bridges.d.ts.map +1 -1
- package/dist/atlas/diffusion/bridges.js +27 -42
- package/dist/atlas/diffusion/bridges.js.map +1 -1
- package/dist/atlas/diffusion/dimensions.d.ts +6 -14
- package/dist/atlas/diffusion/dimensions.d.ts.map +1 -1
- package/dist/atlas/diffusion/dimensions.js +8 -16
- package/dist/atlas/diffusion/dimensions.js.map +1 -1
- package/dist/atlas/diffusion/index.d.ts +1 -1
- package/dist/atlas/diffusion/index.d.ts.map +1 -1
- package/dist/atlas/diffusion/index.js.map +1 -1
- package/dist/atlas/diffusion/models.d.ts +3 -3
- package/dist/atlas/diffusion/models.d.ts.map +1 -1
- package/dist/atlas/diffusion/models.js +5 -10
- package/dist/atlas/diffusion/models.js.map +1 -1
- package/dist/atlas/diffusion/numerics.d.ts +16 -4
- package/dist/atlas/diffusion/numerics.d.ts.map +1 -1
- package/dist/atlas/diffusion/numerics.js +38 -24
- package/dist/atlas/diffusion/numerics.js.map +1 -1
- package/dist/atlas/error-algebra.d.ts +6 -0
- package/dist/atlas/error-algebra.d.ts.map +1 -1
- package/dist/atlas/error-algebra.js +26 -0
- package/dist/atlas/error-algebra.js.map +1 -1
- package/dist/atlas/export.d.ts +18 -2
- package/dist/atlas/export.d.ts.map +1 -1
- package/dist/atlas/export.js +9 -3
- package/dist/atlas/export.js.map +1 -1
- package/dist/atlas/families.d.ts +19 -2
- package/dist/atlas/families.d.ts.map +1 -1
- package/dist/atlas/families.js +26 -3
- package/dist/atlas/families.js.map +1 -1
- package/dist/atlas/family.d.ts +27 -0
- package/dist/atlas/family.d.ts.map +1 -0
- package/dist/atlas/family.js +12 -0
- package/dist/atlas/family.js.map +1 -0
- package/dist/atlas/index.d.ts +3 -2
- package/dist/atlas/index.d.ts.map +1 -1
- package/dist/atlas/index.js +2 -1
- package/dist/atlas/index.js.map +1 -1
- package/dist/atlas/link-prediction.d.ts +107 -4
- package/dist/atlas/link-prediction.d.ts.map +1 -1
- package/dist/atlas/link-prediction.js +212 -66
- package/dist/atlas/link-prediction.js.map +1 -1
- package/dist/atlas/model.js.map +1 -1
- package/dist/atlas/oscillators/bridges-coarse.d.ts.map +1 -1
- package/dist/atlas/oscillators/bridges-coarse.js +7 -12
- package/dist/atlas/oscillators/bridges-coarse.js.map +1 -1
- package/dist/atlas/oscillators/bridges-exact.d.ts.map +1 -1
- package/dist/atlas/oscillators/bridges-exact.js +6 -10
- package/dist/atlas/oscillators/bridges-exact.js.map +1 -1
- package/dist/atlas/oscillators/bridges-limits.d.ts +3 -16
- package/dist/atlas/oscillators/bridges-limits.d.ts.map +1 -1
- package/dist/atlas/oscillators/bridges-limits.js +23 -36
- package/dist/atlas/oscillators/bridges-limits.js.map +1 -1
- package/dist/atlas/oscillators/dimensions.d.ts +9 -21
- package/dist/atlas/oscillators/dimensions.d.ts.map +1 -1
- package/dist/atlas/oscillators/dimensions.js +9 -21
- package/dist/atlas/oscillators/dimensions.js.map +1 -1
- package/dist/atlas/oscillators/index.d.ts +1 -16
- package/dist/atlas/oscillators/index.d.ts.map +1 -1
- package/dist/atlas/oscillators/index.js.map +1 -1
- package/dist/atlas/oscillators/limit-witnesses.d.ts +2 -2
- package/dist/atlas/oscillators/limit-witnesses.d.ts.map +1 -1
- package/dist/atlas/oscillators/limit-witnesses.js +17 -15
- package/dist/atlas/oscillators/limit-witnesses.js.map +1 -1
- package/dist/atlas/oscillators/models.d.ts.map +1 -1
- package/dist/atlas/oscillators/models.js +2 -6
- package/dist/atlas/oscillators/models.js.map +1 -1
- package/dist/atlas/oscillators/norm-transport-witness.js.map +1 -1
- package/dist/atlas/oscillators/norm-transport.js.map +1 -1
- package/dist/atlas/oscillators/norms.js.map +1 -1
- package/dist/atlas/oscillators/pendulum-motion.d.ts +29 -6
- package/dist/atlas/oscillators/pendulum-motion.d.ts.map +1 -1
- package/dist/atlas/oscillators/pendulum-motion.js +60 -40
- package/dist/atlas/oscillators/pendulum-motion.js.map +1 -1
- package/dist/atlas/oscillators/phase-carriage.js.map +1 -1
- package/dist/atlas/oscillators/phase-translation.d.ts +0 -11
- package/dist/atlas/oscillators/phase-translation.d.ts.map +1 -1
- package/dist/atlas/oscillators/phase-translation.js +3 -4
- package/dist/atlas/oscillators/phase-translation.js.map +1 -1
- package/dist/atlas/oscillators/position-translation.d.ts +68 -7
- package/dist/atlas/oscillators/position-translation.d.ts.map +1 -1
- package/dist/atlas/oscillators/position-translation.js +123 -12
- package/dist/atlas/oscillators/position-translation.js.map +1 -1
- package/dist/atlas/oscillators/rejections.d.ts +0 -2
- package/dist/atlas/oscillators/rejections.d.ts.map +1 -1
- package/dist/atlas/oscillators/rejections.js +0 -7
- package/dist/atlas/oscillators/rejections.js.map +1 -1
- package/dist/atlas/path-bound.js.map +1 -1
- package/dist/atlas/physjs-entries.generated.d.ts +25 -24
- package/dist/atlas/physjs-entries.generated.d.ts.map +1 -1
- package/dist/atlas/physjs-entries.generated.js +25 -24
- package/dist/atlas/physjs-entries.generated.js.map +1 -1
- package/dist/atlas/physjs-ref.d.ts +107 -70
- package/dist/atlas/physjs-ref.d.ts.map +1 -1
- package/dist/atlas/physjs-ref.js +184 -101
- package/dist/atlas/physjs-ref.js.map +1 -1
- package/dist/atlas/physjs-reviewed.d.ts +31 -0
- package/dist/atlas/physjs-reviewed.d.ts.map +1 -0
- package/dist/atlas/physjs-reviewed.js +194 -0
- package/dist/atlas/physjs-reviewed.js.map +1 -0
- package/dist/atlas/poster/associations.js.map +1 -1
- package/dist/atlas/poster/derivations.js.map +1 -1
- package/dist/atlas/poster/statements.d.ts +0 -19
- package/dist/atlas/poster/statements.d.ts.map +1 -1
- package/dist/atlas/poster/statements.js +1 -1
- package/dist/atlas/poster/statements.js.map +1 -1
- package/dist/atlas/proof-target.d.ts +1 -1
- package/dist/atlas/proof-target.js +1 -1
- package/dist/atlas/proof-target.js.map +1 -1
- package/dist/atlas/public.d.ts +2 -1
- package/dist/atlas/public.d.ts.map +1 -1
- package/dist/atlas/public.js +2 -1
- package/dist/atlas/public.js.map +1 -1
- package/dist/atlas/regime.d.ts +1 -1
- package/dist/atlas/regime.d.ts.map +1 -1
- package/dist/atlas/regime.js +1 -1
- package/dist/atlas/regime.js.map +1 -1
- package/dist/atlas/serialize.d.ts +18 -12
- package/dist/atlas/serialize.d.ts.map +1 -1
- package/dist/atlas/serialize.js +28 -18
- package/dist/atlas/serialize.js.map +1 -1
- package/dist/atlas/statement.js.map +1 -1
- package/dist/atlas/text-overlap.d.ts +23 -0
- package/dist/atlas/text-overlap.d.ts.map +1 -0
- package/dist/atlas/text-overlap.js +41 -0
- package/dist/atlas/text-overlap.js.map +1 -0
- package/dist/atlas/translation-registry.js.map +1 -1
- package/dist/atlas/translation.js.map +1 -1
- package/dist/atlas/types.d.ts +9 -2
- package/dist/atlas/types.d.ts.map +1 -1
- package/dist/atlas/types.js +1 -1
- package/dist/atlas/types.js.map +1 -1
- package/dist/atlas/waves/bridges-closure.d.ts.map +1 -1
- package/dist/atlas/waves/bridges-closure.js +2 -9
- package/dist/atlas/waves/bridges-closure.js.map +1 -1
- package/dist/atlas/waves/bridges.d.ts.map +1 -1
- package/dist/atlas/waves/bridges.js +32 -52
- package/dist/atlas/waves/bridges.js.map +1 -1
- package/dist/atlas/waves/index.d.ts +1 -1
- package/dist/atlas/waves/index.d.ts.map +1 -1
- package/dist/atlas/waves/index.js.map +1 -1
- package/dist/atlas/waves/models.d.ts +5 -6
- package/dist/atlas/waves/models.d.ts.map +1 -1
- package/dist/atlas/waves/models.js +7 -13
- package/dist/atlas/waves/models.js.map +1 -1
- package/dist/atlas/waves/numerics.d.ts.map +1 -1
- package/dist/atlas/waves/numerics.js +10 -3
- package/dist/atlas/waves/numerics.js.map +1 -1
- package/dist/atlas/witness-artifact.js.map +1 -1
- package/dist/atlas/witness-dominance.d.ts +4 -3
- package/dist/atlas/witness-dominance.d.ts.map +1 -1
- package/dist/atlas/witness-dominance.js +15 -5
- package/dist/atlas/witness-dominance.js.map +1 -1
- package/dist/atlas/witness-numeric.d.ts +38 -4
- package/dist/atlas/witness-numeric.d.ts.map +1 -1
- package/dist/atlas/witness-numeric.js +80 -2
- package/dist/atlas/witness-numeric.js.map +1 -1
- package/dist/atlas/witness-result.d.ts +7 -1
- package/dist/atlas/witness-result.d.ts.map +1 -1
- package/dist/atlas/witness-result.js.map +1 -1
- package/dist/atlas/witness-specs.d.ts.map +1 -1
- package/dist/atlas/witness-specs.js +19 -0
- package/dist/atlas/witness-specs.js.map +1 -1
- package/dist/atlas/witness-symbolic.d.ts +75 -3
- package/dist/atlas/witness-symbolic.d.ts.map +1 -1
- package/dist/atlas/witness-symbolic.js +116 -10
- package/dist/atlas/witness-symbolic.js.map +1 -1
- package/dist/atlas/witnesses/quantum-support.js.map +1 -1
- package/dist/bridges/caller-table.d.ts +1 -1
- package/dist/bridges/caller-table.d.ts.map +1 -1
- package/dist/bridges/caller-table.js.map +1 -1
- package/dist/bridges/carrier-sign.d.ts.map +1 -1
- package/dist/bridges/carrier-sign.js +8 -3
- package/dist/bridges/carrier-sign.js.map +1 -1
- package/dist/bridges/catalog-adapter.d.ts +12 -3
- package/dist/bridges/catalog-adapter.d.ts.map +1 -1
- package/dist/bridges/catalog-adapter.js +17 -9
- package/dist/bridges/catalog-adapter.js.map +1 -1
- package/dist/bridges/catalog-load.d.ts +12 -2
- package/dist/bridges/catalog-load.d.ts.map +1 -1
- package/dist/bridges/catalog-load.js +181 -13
- package/dist/bridges/catalog-load.js.map +1 -1
- package/dist/bridges/catalog-types.d.ts +74 -26
- package/dist/bridges/catalog-types.d.ts.map +1 -1
- package/dist/bridges/catalog-types.js +11 -1
- package/dist/bridges/catalog-types.js.map +1 -1
- package/dist/bridges/coefficient-statement.js +1 -5
- package/dist/bridges/coefficient-statement.js.map +1 -1
- package/dist/bridges/confrontation-coverage.js.map +1 -1
- package/dist/bridges/confrontations.d.ts +1 -1
- package/dist/bridges/confrontations.d.ts.map +1 -1
- package/dist/bridges/confrontations.js +1 -1
- package/dist/bridges/confrontations.js.map +1 -1
- package/dist/bridges/evaluation-errors.d.ts +46 -3
- package/dist/bridges/evaluation-errors.d.ts.map +1 -1
- package/dist/bridges/evaluation-errors.js +40 -4
- package/dist/bridges/evaluation-errors.js.map +1 -1
- package/dist/bridges/evaluator-inputs.d.ts.map +1 -1
- package/dist/bridges/evaluator-inputs.js +7 -5
- package/dist/bridges/evaluator-inputs.js.map +1 -1
- package/dist/bridges/evaluators.d.ts +17 -2
- package/dist/bridges/evaluators.d.ts.map +1 -1
- package/dist/bridges/evaluators.js +76 -28
- package/dist/bridges/evaluators.js.map +1 -1
- package/dist/bridges/expr-parse.d.ts +38 -4
- package/dist/bridges/expr-parse.d.ts.map +1 -1
- package/dist/bridges/expr-parse.js +101 -12
- package/dist/bridges/expr-parse.js.map +1 -1
- package/dist/bridges/holds.d.ts +40 -4
- package/dist/bridges/holds.d.ts.map +1 -1
- package/dist/bridges/holds.js +128 -19
- package/dist/bridges/holds.js.map +1 -1
- package/dist/bridges/index.d.ts +15 -14
- package/dist/bridges/index.d.ts.map +1 -1
- package/dist/bridges/index.js +14 -15
- package/dist/bridges/index.js.map +1 -1
- package/dist/bridges/input-contract.js.map +1 -1
- package/dist/bridges/membership.d.ts +5 -3
- package/dist/bridges/membership.d.ts.map +1 -1
- package/dist/bridges/membership.js +5 -6
- package/dist/bridges/membership.js.map +1 -1
- package/dist/bridges/notices.d.ts.map +1 -1
- package/dist/bridges/notices.js +5 -5
- package/dist/bridges/notices.js.map +1 -1
- package/dist/bridges/observations/types.js.map +1 -1
- package/dist/bridges/rejected.d.ts +11 -17
- package/dist/bridges/rejected.d.ts.map +1 -1
- package/dist/bridges/rejected.js +13 -68
- package/dist/bridges/rejected.js.map +1 -1
- package/dist/bridges/relation-eval.d.ts +6 -7
- package/dist/bridges/relation-eval.d.ts.map +1 -1
- package/dist/bridges/relation-eval.js +20 -50
- package/dist/bridges/relation-eval.js.map +1 -1
- package/dist/bridges/rhs-registry.js.map +1 -1
- package/dist/bridges/sensitivity.d.ts +11 -3
- package/dist/bridges/sensitivity.d.ts.map +1 -1
- package/dist/bridges/sensitivity.js +27 -13
- package/dist/bridges/sensitivity.js.map +1 -1
- package/dist/bridges/tensor-index.js.map +1 -1
- package/dist/bridges/types.d.ts +1 -7
- package/dist/bridges/types.d.ts.map +1 -1
- package/dist/bridges/types.js +1 -4
- package/dist/bridges/types.js.map +1 -1
- package/dist/bridges/validity.d.ts +33 -0
- package/dist/bridges/validity.d.ts.map +1 -0
- package/dist/bridges/validity.js +67 -0
- package/dist/bridges/validity.js.map +1 -0
- package/dist/canonical/canonical-equation.js.map +1 -1
- package/dist/canonical/dimensional-fields.js.map +1 -1
- package/dist/canonical/entries/_l1-build.js.map +1 -1
- package/dist/canonical/entries/atomic.js +1 -3
- package/dist/canonical/entries/atomic.js.map +1 -1
- package/dist/canonical/entries/condensed-matter.d.ts.map +1 -1
- package/dist/canonical/entries/condensed-matter.js +8 -9
- package/dist/canonical/entries/condensed-matter.js.map +1 -1
- package/dist/canonical/entries/dimensional-classics.d.ts.map +1 -1
- package/dist/canonical/entries/dimensional-classics.js +5 -6
- package/dist/canonical/entries/dimensional-classics.js.map +1 -1
- package/dist/canonical/entries/electromagnetism.d.ts.map +1 -1
- package/dist/canonical/entries/electromagnetism.js +6 -12
- package/dist/canonical/entries/electromagnetism.js.map +1 -1
- package/dist/canonical/entries/fluids-waves.d.ts.map +1 -1
- package/dist/canonical/entries/fluids-waves.js +3 -7
- package/dist/canonical/entries/fluids-waves.js.map +1 -1
- package/dist/canonical/entries/mechanics.d.ts.map +1 -1
- package/dist/canonical/entries/mechanics.js +4 -6
- package/dist/canonical/entries/mechanics.js.map +1 -1
- package/dist/canonical/entries/nonmonomial.d.ts.map +1 -1
- package/dist/canonical/entries/nonmonomial.js +38 -39
- package/dist/canonical/entries/nonmonomial.js.map +1 -1
- package/dist/canonical/entries/relativity.d.ts.map +1 -1
- package/dist/canonical/entries/relativity.js +6 -6
- package/dist/canonical/entries/relativity.js.map +1 -1
- package/dist/canonical/entries/statistical-mechanics.js +5 -5
- package/dist/canonical/entries/statistical-mechanics.js.map +1 -1
- package/dist/canonical/entries/thermo-nuclear-cosmo.d.ts.map +1 -1
- package/dist/canonical/entries/thermo-nuclear-cosmo.js +6 -10
- package/dist/canonical/entries/thermo-nuclear-cosmo.js.map +1 -1
- package/dist/canonical/fixed-points.d.ts +94 -0
- package/dist/canonical/fixed-points.d.ts.map +1 -0
- package/dist/canonical/fixed-points.js +81 -0
- package/dist/canonical/fixed-points.js.map +1 -0
- package/dist/canonical/linkage.d.ts +29 -4
- package/dist/canonical/linkage.d.ts.map +1 -1
- package/dist/canonical/linkage.js +47 -64
- package/dist/canonical/linkage.js.map +1 -1
- package/dist/canonical/normal-form.d.ts +0 -8
- package/dist/canonical/normal-form.d.ts.map +1 -1
- package/dist/canonical/normal-form.js +22 -23
- package/dist/canonical/normal-form.js.map +1 -1
- package/dist/canonical/registry.js.map +1 -1
- package/dist/canonical/residual.js.map +1 -1
- package/dist/canonical/seed-l-layer.d.ts +7 -1
- package/dist/canonical/seed-l-layer.d.ts.map +1 -1
- package/dist/canonical/seed-l-layer.js +7 -1
- package/dist/canonical/seed-l-layer.js.map +1 -1
- package/dist/canonical/structural.d.ts +42 -21
- package/dist/canonical/structural.d.ts.map +1 -1
- package/dist/canonical/structural.js +64 -23
- package/dist/canonical/structural.js.map +1 -1
- package/dist/cases/brownian-sphere.d.ts +3 -3
- package/dist/cases/brownian-sphere.d.ts.map +1 -1
- package/dist/cases/brownian-sphere.js +10 -9
- package/dist/cases/brownian-sphere.js.map +1 -1
- package/dist/cases/damped-resonator.d.ts.map +1 -1
- package/dist/cases/damped-resonator.js +8 -11
- package/dist/cases/damped-resonator.js.map +1 -1
- package/dist/cases/index.js.map +1 -1
- package/dist/cases/kepler-rv.d.ts +1 -1
- package/dist/cases/kepler-rv.d.ts.map +1 -1
- package/dist/cases/kepler-rv.js +3 -2
- package/dist/cases/kepler-rv.js.map +1 -1
- package/dist/cases/lumped-cooling.d.ts +8 -3
- package/dist/cases/lumped-cooling.d.ts.map +1 -1
- package/dist/cases/lumped-cooling.js +22 -24
- package/dist/cases/lumped-cooling.js.map +1 -1
- package/dist/cases/quadrature.d.ts +7 -9
- package/dist/cases/quadrature.d.ts.map +1 -1
- package/dist/cases/quadrature.js +28 -32
- package/dist/cases/quadrature.js.map +1 -1
- package/dist/cases/resistor-noise.js +7 -7
- package/dist/cases/resistor-noise.js.map +1 -1
- package/dist/cases/skin-depth.d.ts +0 -4
- package/dist/cases/skin-depth.d.ts.map +1 -1
- package/dist/cases/skin-depth.js +3 -7
- package/dist/cases/skin-depth.js.map +1 -1
- package/dist/cases/types.js.map +1 -1
- package/dist/cli/args.d.ts +30 -3
- package/dist/cli/args.d.ts.map +1 -1
- package/dist/cli/args.js +47 -9
- package/dist/cli/args.js.map +1 -1
- package/dist/cli/bindings.d.ts +13 -0
- package/dist/cli/bindings.d.ts.map +1 -0
- package/dist/cli/bindings.js +33 -0
- package/dist/cli/bindings.js.map +1 -0
- package/dist/cli/closed-form-range.js.map +1 -1
- package/dist/cli/command.d.ts +8 -1
- package/dist/cli/command.d.ts.map +1 -1
- package/dist/cli/command.js.map +1 -1
- package/dist/cli/commands/_atlas-map.d.ts +2 -11
- package/dist/cli/commands/_atlas-map.d.ts.map +1 -1
- package/dist/cli/commands/_atlas-map.js +50 -35
- package/dist/cli/commands/_atlas-map.js.map +1 -1
- package/dist/cli/commands/_atlas-route.d.ts.map +1 -1
- package/dist/cli/commands/_atlas-route.js +6 -2
- package/dist/cli/commands/_atlas-route.js.map +1 -1
- package/dist/cli/commands/_discovery-opts.d.ts.map +1 -1
- package/dist/cli/commands/_discovery-opts.js +48 -14
- package/dist/cli/commands/_discovery-opts.js.map +1 -1
- package/dist/cli/commands/atlas.d.ts.map +1 -1
- package/dist/cli/commands/atlas.js +9 -8
- package/dist/cli/commands/atlas.js.map +1 -1
- package/dist/cli/commands/audit.d.ts.map +1 -1
- package/dist/cli/commands/audit.js +20 -20
- package/dist/cli/commands/audit.js.map +1 -1
- package/dist/cli/commands/axes.d.ts.map +1 -1
- package/dist/cli/commands/axes.js +20 -1
- package/dist/cli/commands/axes.js.map +1 -1
- package/dist/cli/commands/candidates.d.ts.map +1 -1
- package/dist/cli/commands/candidates.js +16 -8
- package/dist/cli/commands/candidates.js.map +1 -1
- package/dist/cli/commands/canonical.js.map +1 -1
- package/dist/cli/commands/chain.js +1 -1
- package/dist/cli/commands/chain.js.map +1 -1
- package/dist/cli/commands/confront.d.ts.map +1 -1
- package/dist/cli/commands/confront.js +22 -20
- package/dist/cli/commands/confront.js.map +1 -1
- package/dist/cli/commands/connectors.js.map +1 -1
- package/dist/cli/commands/coverage.js.map +1 -1
- package/dist/cli/commands/derive.d.ts.map +1 -1
- package/dist/cli/commands/derive.js +60 -35
- package/dist/cli/commands/derive.js.map +1 -1
- package/dist/cli/commands/discover.d.ts.map +1 -1
- package/dist/cli/commands/discover.js +20 -10
- package/dist/cli/commands/discover.js.map +1 -1
- package/dist/cli/commands/eval.d.ts.map +1 -1
- package/dist/cli/commands/eval.js +14 -10
- package/dist/cli/commands/eval.js.map +1 -1
- package/dist/cli/commands/evaluate.d.ts.map +1 -1
- package/dist/cli/commands/evaluate.js +108 -58
- package/dist/cli/commands/evaluate.js.map +1 -1
- package/dist/cli/commands/explain.d.ts.map +1 -1
- package/dist/cli/commands/explain.js +16 -8
- package/dist/cli/commands/explain.js.map +1 -1
- package/dist/cli/commands/frontier.js.map +1 -1
- package/dist/cli/commands/ground.d.ts.map +1 -1
- package/dist/cli/commands/ground.js +41 -10
- package/dist/cli/commands/ground.js.map +1 -1
- package/dist/cli/commands/index.js.map +1 -1
- package/dist/cli/commands/map.d.ts.map +1 -1
- package/dist/cli/commands/map.js +155 -92
- package/dist/cli/commands/map.js.map +1 -1
- package/dist/cli/commands/metric.d.ts.map +1 -1
- package/dist/cli/commands/metric.js +58 -20
- package/dist/cli/commands/metric.js.map +1 -1
- package/dist/cli/commands/path.d.ts +10 -0
- package/dist/cli/commands/path.d.ts.map +1 -1
- package/dist/cli/commands/path.js +29 -7
- package/dist/cli/commands/path.js.map +1 -1
- package/dist/cli/commands/predict.js.map +1 -1
- package/dist/cli/commands/priority.js.map +1 -1
- package/dist/cli/commands/probe.d.ts.map +1 -1
- package/dist/cli/commands/probe.js +105 -38
- package/dist/cli/commands/probe.js.map +1 -1
- package/dist/cli/commands/recover.js +1 -1
- package/dist/cli/commands/recover.js.map +1 -1
- package/dist/cli/commands/regime.d.ts +5 -4
- package/dist/cli/commands/regime.d.ts.map +1 -1
- package/dist/cli/commands/regime.js +25 -26
- package/dist/cli/commands/regime.js.map +1 -1
- package/dist/cli/commands/retrieve.d.ts.map +1 -1
- package/dist/cli/commands/retrieve.js +23 -14
- package/dist/cli/commands/retrieve.js.map +1 -1
- package/dist/cli/commands/search.d.ts.map +1 -1
- package/dist/cli/commands/search.js +9 -4
- package/dist/cli/commands/search.js.map +1 -1
- package/dist/cli/commands/symbolic.js +31 -36
- package/dist/cli/commands/symbolic.js.map +1 -1
- package/dist/cli/commands/testplan.d.ts.map +1 -1
- package/dist/cli/commands/testplan.js +5 -3
- package/dist/cli/commands/testplan.js.map +1 -1
- package/dist/cli/conventions.js.map +1 -1
- package/dist/cli/determination.js.map +1 -1
- package/dist/cli/errors.js.map +1 -1
- package/dist/cli/euler-guard.js.map +1 -1
- package/dist/cli/eval-numbers.js.map +1 -1
- package/dist/cli/expr-print.d.ts +28 -3
- package/dist/cli/expr-print.d.ts.map +1 -1
- package/dist/cli/expr-print.js +42 -22
- package/dist/cli/expr-print.js.map +1 -1
- package/dist/cli/flag-help.js.map +1 -1
- package/dist/cli/graphs.js.map +1 -1
- package/dist/cli/library-defaults.d.ts +19 -0
- package/dist/cli/library-defaults.d.ts.map +1 -0
- package/dist/cli/library-defaults.js +22 -0
- package/dist/cli/library-defaults.js.map +1 -0
- package/dist/cli/main.d.ts +7 -0
- package/dist/cli/main.d.ts.map +1 -1
- package/dist/cli/main.js +25 -6
- package/dist/cli/main.js.map +1 -1
- package/dist/cli/map-evidence.js.map +1 -1
- package/dist/cli/numeric-flag.d.ts +12 -0
- package/dist/cli/numeric-flag.d.ts.map +1 -0
- package/dist/cli/numeric-flag.js +44 -0
- package/dist/cli/numeric-flag.js.map +1 -0
- package/dist/cli/output.d.ts +23 -6
- package/dist/cli/output.d.ts.map +1 -1
- package/dist/cli/output.js +15 -0
- package/dist/cli/output.js.map +1 -1
- package/dist/cli/published-url.js.map +1 -1
- package/dist/cli/record-reach.d.ts +6 -0
- package/dist/cli/record-reach.d.ts.map +1 -1
- package/dist/cli/record-reach.js +17 -11
- package/dist/cli/record-reach.js.map +1 -1
- package/dist/cli/record-tables.d.ts.map +1 -1
- package/dist/cli/record-tables.js +7 -6
- package/dist/cli/record-tables.js.map +1 -1
- package/dist/cli/record.d.ts +1 -5
- package/dist/cli/record.d.ts.map +1 -1
- package/dist/cli/record.js +40 -20
- package/dist/cli/record.js.map +1 -1
- package/dist/cli/search-index.d.ts +5 -0
- package/dist/cli/search-index.d.ts.map +1 -1
- package/dist/cli/search-index.js +19 -7
- package/dist/cli/search-index.js.map +1 -1
- package/dist/cli/statuses.d.ts +0 -2
- package/dist/cli/statuses.d.ts.map +1 -1
- package/dist/cli/statuses.js +0 -7
- package/dist/cli/statuses.js.map +1 -1
- package/dist/cli/stored-results.d.ts +7 -0
- package/dist/cli/stored-results.d.ts.map +1 -0
- package/dist/cli/stored-results.js +23 -0
- package/dist/cli/stored-results.js.map +1 -0
- package/dist/cli/top-level-help.js.map +1 -1
- package/dist/cli/version.d.ts.map +1 -1
- package/dist/cli/version.js +7 -5
- package/dist/cli/version.js.map +1 -1
- package/dist/cli-api.d.ts +49 -14
- package/dist/cli-api.d.ts.map +1 -1
- package/dist/cli-api.js +42 -17
- package/dist/cli-api.js.map +1 -1
- package/dist/composition/adjudication.js.map +1 -1
- package/dist/composition/algebraic-equivalence.d.ts +43 -0
- package/dist/composition/algebraic-equivalence.d.ts.map +1 -0
- package/dist/composition/algebraic-equivalence.js +115 -0
- package/dist/composition/algebraic-equivalence.js.map +1 -0
- package/dist/composition/aliases.js.map +1 -1
- package/dist/composition/audit-coverage.d.ts +2 -0
- package/dist/composition/audit-coverage.d.ts.map +1 -1
- package/dist/composition/audit-coverage.js.map +1 -1
- package/dist/composition/axes.d.ts +6 -0
- package/dist/composition/axes.d.ts.map +1 -1
- package/dist/composition/axes.js +18 -6
- package/dist/composition/axes.js.map +1 -1
- package/dist/composition/axis-audit.d.ts +47 -20
- package/dist/composition/axis-audit.d.ts.map +1 -1
- package/dist/composition/axis-audit.js +82 -9
- package/dist/composition/axis-audit.js.map +1 -1
- package/dist/composition/bridge-analysis.d.ts +14 -15
- package/dist/composition/bridge-analysis.d.ts.map +1 -1
- package/dist/composition/bridge-analysis.js +148 -91
- package/dist/composition/bridge-analysis.js.map +1 -1
- package/dist/composition/bridge-prediction.d.ts +5 -1
- package/dist/composition/bridge-prediction.d.ts.map +1 -1
- package/dist/composition/bridge-prediction.js +12 -16
- package/dist/composition/bridge-prediction.js.map +1 -1
- package/dist/composition/buckingham-filter.js.map +1 -1
- package/dist/composition/canonical-compare.d.ts +40 -0
- package/dist/composition/canonical-compare.d.ts.map +1 -1
- package/dist/composition/canonical-compare.js +134 -26
- package/dist/composition/canonical-compare.js.map +1 -1
- package/dist/composition/canonical-graph.d.ts +9 -10
- package/dist/composition/canonical-graph.d.ts.map +1 -1
- package/dist/composition/canonical-graph.js +33 -102
- package/dist/composition/canonical-graph.js.map +1 -1
- package/dist/composition/canonical-json.js +2 -2
- package/dist/composition/canonical-json.js.map +1 -1
- package/dist/composition/canonical-prefactors.js.map +1 -1
- package/dist/composition/catalog-graph.d.ts.map +1 -1
- package/dist/composition/catalog-graph.js +8 -25
- package/dist/composition/catalog-graph.js.map +1 -1
- package/dist/composition/chain-candidate.d.ts +10 -0
- package/dist/composition/chain-candidate.d.ts.map +1 -1
- package/dist/composition/chain-candidate.js +11 -2
- package/dist/composition/chain-candidate.js.map +1 -1
- package/dist/composition/chain-match.d.ts +6 -3
- package/dist/composition/chain-match.d.ts.map +1 -1
- package/dist/composition/chain-match.js +4 -1
- package/dist/composition/chain-match.js.map +1 -1
- package/dist/composition/chain-regime.js.map +1 -1
- package/dist/composition/chain-result.d.ts.map +1 -1
- package/dist/composition/chain-result.js +2 -14
- package/dist/composition/chain-result.js.map +1 -1
- package/dist/composition/compose-surface.js.map +1 -1
- package/dist/composition/compose-symbolic.d.ts.map +1 -1
- package/dist/composition/compose-symbolic.js +3 -2
- package/dist/composition/compose-symbolic.js.map +1 -1
- package/dist/composition/compose.d.ts.map +1 -1
- package/dist/composition/compose.js +166 -41
- package/dist/composition/compose.js.map +1 -1
- package/dist/composition/composition-recovery.d.ts.map +1 -1
- package/dist/composition/composition-recovery.js +4 -7
- package/dist/composition/composition-recovery.js.map +1 -1
- package/dist/composition/consequence.d.ts.map +1 -1
- package/dist/composition/consequence.js +15 -6
- package/dist/composition/consequence.js.map +1 -1
- package/dist/composition/consistency.js.map +1 -1
- package/dist/composition/descriptor.d.ts +1 -1
- package/dist/composition/descriptor.d.ts.map +1 -1
- package/dist/composition/descriptor.js.map +1 -1
- package/dist/composition/dimension-adjacency.js.map +1 -1
- package/dist/composition/discovery.d.ts +77 -11
- package/dist/composition/discovery.d.ts.map +1 -1
- package/dist/composition/discovery.js +194 -80
- package/dist/composition/discovery.js.map +1 -1
- package/dist/composition/edge.d.ts +40 -10
- package/dist/composition/edge.d.ts.map +1 -1
- package/dist/composition/edge.js +47 -12
- package/dist/composition/edge.js.map +1 -1
- package/dist/composition/enumerate.d.ts +2 -2
- package/dist/composition/enumerate.d.ts.map +1 -1
- package/dist/composition/enumerate.js +18 -3
- package/dist/composition/enumerate.js.map +1 -1
- package/dist/composition/evaluate-relation.d.ts +35 -11
- package/dist/composition/evaluate-relation.d.ts.map +1 -1
- package/dist/composition/evaluate-relation.js +60 -39
- package/dist/composition/evaluate-relation.js.map +1 -1
- package/dist/composition/explain.d.ts +5 -9
- package/dist/composition/explain.d.ts.map +1 -1
- package/dist/composition/explain.js +38 -18
- package/dist/composition/explain.js.map +1 -1
- package/dist/composition/expr-eval.d.ts.map +1 -1
- package/dist/composition/expr-eval.js +2 -11
- package/dist/composition/expr-eval.js.map +1 -1
- package/dist/composition/expr-simplify.d.ts +16 -0
- package/dist/composition/expr-simplify.d.ts.map +1 -1
- package/dist/composition/expr-simplify.js +24 -59
- package/dist/composition/expr-simplify.js.map +1 -1
- package/dist/composition/expr-subst.js.map +1 -1
- package/dist/composition/formula-shape.d.ts +28 -0
- package/dist/composition/formula-shape.d.ts.map +1 -1
- package/dist/composition/formula-shape.js +96 -2
- package/dist/composition/formula-shape.js.map +1 -1
- package/dist/composition/frontier-account.d.ts +3 -2
- package/dist/composition/frontier-account.d.ts.map +1 -1
- package/dist/composition/frontier-account.js +7 -3
- package/dist/composition/frontier-account.js.map +1 -1
- package/dist/composition/graph-structure.d.ts +98 -0
- package/dist/composition/graph-structure.d.ts.map +1 -0
- package/dist/composition/graph-structure.js +167 -0
- package/dist/composition/graph-structure.js.map +1 -0
- package/dist/composition/graph-viz-svg.d.ts.map +1 -1
- package/dist/composition/graph-viz-svg.js +1 -1
- package/dist/composition/graph-viz-svg.js.map +1 -1
- package/dist/composition/graph-viz.d.ts.map +1 -1
- package/dist/composition/graph-viz.js +8 -37
- package/dist/composition/graph-viz.js.map +1 -1
- package/dist/composition/grounding.js.map +1 -1
- package/dist/composition/identifiability.d.ts +91 -4
- package/dist/composition/identifiability.d.ts.map +1 -1
- package/dist/composition/identifiability.js +363 -6
- package/dist/composition/identifiability.js.map +1 -1
- package/dist/composition/index.d.ts +14 -8
- package/dist/composition/index.d.ts.map +1 -1
- package/dist/composition/index.js +7 -5
- package/dist/composition/index.js.map +1 -1
- package/dist/composition/mathts-quiet.d.ts +29 -0
- package/dist/composition/mathts-quiet.d.ts.map +1 -0
- package/dist/composition/mathts-quiet.js +57 -0
- package/dist/composition/mathts-quiet.js.map +1 -0
- package/dist/composition/mathts-scalar-symbols.d.ts.map +1 -1
- package/dist/composition/mathts-scalar-symbols.js +20 -35
- package/dist/composition/mathts-scalar-symbols.js.map +1 -1
- package/dist/composition/not-composable-seeds.d.ts +3 -1
- package/dist/composition/not-composable-seeds.d.ts.map +1 -1
- package/dist/composition/not-composable-seeds.js +2 -0
- package/dist/composition/not-composable-seeds.js.map +1 -1
- package/dist/composition/probe/backend-protocol.js.map +1 -1
- package/dist/composition/probe/candidate-store.js.map +1 -1
- package/dist/composition/probe/corpus.d.ts +4 -2
- package/dist/composition/probe/corpus.d.ts.map +1 -1
- package/dist/composition/probe/corpus.js +20 -9
- package/dist/composition/probe/corpus.js.map +1 -1
- package/dist/composition/probe/dataset.d.ts +17 -0
- package/dist/composition/probe/dataset.d.ts.map +1 -1
- package/dist/composition/probe/dataset.js +95 -50
- package/dist/composition/probe/dataset.js.map +1 -1
- package/dist/composition/probe/experiment-design.d.ts +5 -1
- package/dist/composition/probe/experiment-design.d.ts.map +1 -1
- package/dist/composition/probe/experiment-design.js +44 -24
- package/dist/composition/probe/experiment-design.js.map +1 -1
- package/dist/composition/probe/expression-gaps.js.map +1 -1
- package/dist/composition/probe/falsify.d.ts +14 -3
- package/dist/composition/probe/falsify.d.ts.map +1 -1
- package/dist/composition/probe/falsify.js +16 -27
- package/dist/composition/probe/falsify.js.map +1 -1
- package/dist/composition/probe/fingerprint.js.map +1 -1
- package/dist/composition/probe/fit.d.ts +7 -1
- package/dist/composition/probe/fit.d.ts.map +1 -1
- package/dist/composition/probe/fit.js +48 -23
- package/dist/composition/probe/fit.js.map +1 -1
- package/dist/composition/probe/frontier.d.ts.map +1 -1
- package/dist/composition/probe/frontier.js +33 -15
- package/dist/composition/probe/frontier.js.map +1 -1
- package/dist/composition/probe/generator.d.ts +27 -1
- package/dist/composition/probe/generator.d.ts.map +1 -1
- package/dist/composition/probe/generator.js +53 -30
- package/dist/composition/probe/generator.js.map +1 -1
- package/dist/composition/probe/index.d.ts +18 -2
- package/dist/composition/probe/index.d.ts.map +1 -1
- package/dist/composition/probe/index.js +10 -2
- package/dist/composition/probe/index.js.map +1 -1
- package/dist/composition/probe/limits.d.ts +24 -1
- package/dist/composition/probe/limits.d.ts.map +1 -1
- package/dist/composition/probe/limits.js +53 -11
- package/dist/composition/probe/limits.js.map +1 -1
- package/dist/composition/probe/metadata.js.map +1 -1
- package/dist/composition/probe/pipeline.d.ts +5 -0
- package/dist/composition/probe/pipeline.d.ts.map +1 -1
- package/dist/composition/probe/pipeline.js +22 -9
- package/dist/composition/probe/pipeline.js.map +1 -1
- package/dist/composition/probe/power-law.d.ts +121 -0
- package/dist/composition/probe/power-law.d.ts.map +1 -0
- package/dist/composition/probe/power-law.js +255 -0
- package/dist/composition/probe/power-law.js.map +1 -0
- package/dist/composition/probe/problem.d.ts +12 -1
- package/dist/composition/probe/problem.d.ts.map +1 -1
- package/dist/composition/probe/problem.js +242 -48
- package/dist/composition/probe/problem.js.map +1 -1
- package/dist/composition/probe/report.js +1 -1
- package/dist/composition/probe/report.js.map +1 -1
- package/dist/composition/probe/residual.d.ts +6 -1
- package/dist/composition/probe/residual.d.ts.map +1 -1
- package/dist/composition/probe/residual.js +9 -7
- package/dist/composition/probe/residual.js.map +1 -1
- package/dist/composition/probe/run-manifest.js +2 -2
- package/dist/composition/probe/run-manifest.js.map +1 -1
- package/dist/composition/probe/scoring.d.ts +2 -1
- package/dist/composition/probe/scoring.d.ts.map +1 -1
- package/dist/composition/probe/scoring.js +21 -7
- package/dist/composition/probe/scoring.js.map +1 -1
- package/dist/composition/probe/search-budget.js.map +1 -1
- package/dist/composition/probe/serialize.js.map +1 -1
- package/dist/composition/probe/structure.d.ts +82 -17
- package/dist/composition/probe/structure.d.ts.map +1 -1
- package/dist/composition/probe/structure.js +129 -55
- package/dist/composition/probe/structure.js.map +1 -1
- package/dist/composition/probe/study.d.ts +35 -12
- package/dist/composition/probe/study.d.ts.map +1 -1
- package/dist/composition/probe/study.js +241 -184
- package/dist/composition/probe/study.js.map +1 -1
- package/dist/composition/probe/t-tail.d.ts +17 -0
- package/dist/composition/probe/t-tail.d.ts.map +1 -0
- package/dist/composition/probe/t-tail.js +32 -0
- package/dist/composition/probe/t-tail.js.map +1 -0
- package/dist/composition/probe/types.d.ts +6 -1
- package/dist/composition/probe/types.d.ts.map +1 -1
- package/dist/composition/probe/types.js +2 -0
- package/dist/composition/probe/types.js.map +1 -1
- package/dist/composition/proposed-bridges.d.ts +51 -13
- package/dist/composition/proposed-bridges.d.ts.map +1 -1
- package/dist/composition/proposed-bridges.js +110 -58
- package/dist/composition/proposed-bridges.js.map +1 -1
- package/dist/composition/quantities.d.ts +0 -4
- package/dist/composition/quantities.d.ts.map +1 -1
- package/dist/composition/quantities.js +5 -5
- package/dist/composition/quantities.js.map +1 -1
- package/dist/composition/quantity-clusters.d.ts +48 -0
- package/dist/composition/quantity-clusters.d.ts.map +1 -0
- package/dist/composition/quantity-clusters.js +98 -0
- package/dist/composition/quantity-clusters.js.map +1 -0
- package/dist/composition/quantity.d.ts +18 -2
- package/dist/composition/quantity.d.ts.map +1 -1
- package/dist/composition/quantity.js +35 -6
- package/dist/composition/quantity.js.map +1 -1
- package/dist/composition/rational-exponent.d.ts +40 -0
- package/dist/composition/rational-exponent.d.ts.map +1 -0
- package/dist/composition/rational-exponent.js +65 -0
- package/dist/composition/rational-exponent.js.map +1 -0
- package/dist/composition/representative-values.d.ts +22 -0
- package/dist/composition/representative-values.d.ts.map +1 -1
- package/dist/composition/representative-values.js +23 -0
- package/dist/composition/representative-values.js.map +1 -1
- package/dist/composition/retrodiction.d.ts +16 -6
- package/dist/composition/retrodiction.d.ts.map +1 -1
- package/dist/composition/retrodiction.js +36 -10
- package/dist/composition/retrodiction.js.map +1 -1
- package/dist/composition/uncertainty.js.map +1 -1
- package/dist/composition/user-equation.d.ts.map +1 -1
- package/dist/composition/user-equation.js +2 -2
- package/dist/composition/user-equation.js.map +1 -1
- package/dist/core/assignment.d.ts +19 -0
- package/dist/core/assignment.d.ts.map +1 -0
- package/dist/core/assignment.js +19 -0
- package/dist/core/assignment.js.map +1 -0
- package/dist/core/axes-registry.d.ts +8 -5
- package/dist/core/axes-registry.d.ts.map +1 -1
- package/dist/core/axes-registry.js.map +1 -1
- package/dist/core/cell.js.map +1 -1
- package/dist/core/compare.d.ts +32 -0
- package/dist/core/compare.d.ts.map +1 -0
- package/dist/core/compare.js +46 -0
- package/dist/core/compare.js.map +1 -0
- package/dist/core/constants.d.ts +35 -35
- package/dist/core/constants.d.ts.map +1 -1
- package/dist/core/constants.js +52 -37
- package/dist/core/constants.js.map +1 -1
- package/dist/core/data-file.d.ts +7 -0
- package/dist/core/data-file.d.ts.map +1 -1
- package/dist/core/data-file.js +17 -0
- package/dist/core/data-file.js.map +1 -1
- package/dist/core/flux-rules.js +1 -1
- package/dist/core/flux-rules.js.map +1 -1
- package/dist/core/format.d.ts +36 -0
- package/dist/core/format.d.ts.map +1 -0
- package/dist/core/format.js +39 -0
- package/dist/core/format.js.map +1 -0
- package/dist/core/hash.d.ts +14 -0
- package/dist/core/hash.d.ts.map +1 -0
- package/dist/core/hash.js +17 -0
- package/dist/core/hash.js.map +1 -0
- package/dist/core/json-schema.d.ts +3 -1
- package/dist/core/json-schema.d.ts.map +1 -1
- package/dist/core/json-schema.js +41 -16
- package/dist/core/json-schema.js.map +1 -1
- package/dist/core/labeled-tensor.d.ts +6 -1
- package/dist/core/labeled-tensor.d.ts.map +1 -1
- package/dist/core/labeled-tensor.js +18 -16
- package/dist/core/labeled-tensor.js.map +1 -1
- package/dist/core/mathts-read.d.ts +25 -0
- package/dist/core/mathts-read.d.ts.map +1 -0
- package/dist/core/mathts-read.js +51 -0
- package/dist/core/mathts-read.js.map +1 -0
- package/dist/core/regime-registry.d.ts +6 -2
- package/dist/core/regime-registry.d.ts.map +1 -1
- package/dist/core/regime-registry.js.map +1 -1
- package/dist/core/regime-rule-install.js.map +1 -1
- package/dist/core/regimes-builtins.js.map +1 -1
- package/dist/core/tensor.d.ts +7 -4
- package/dist/core/tensor.d.ts.map +1 -1
- package/dist/core/tensor.js +64 -8
- package/dist/core/tensor.js.map +1 -1
- package/dist/core/types.d.ts +5 -5
- package/dist/core/types.js.map +1 -1
- package/dist/core/universal-index.js.map +1 -1
- package/dist/diff/bridge-ast-gradient.d.ts +4 -5
- package/dist/diff/bridge-ast-gradient.d.ts.map +1 -1
- package/dist/diff/bridge-ast-gradient.js +10 -6
- package/dist/diff/bridge-ast-gradient.js.map +1 -1
- package/dist/diff/bridge-gradient.d.ts +43 -86
- package/dist/diff/bridge-gradient.d.ts.map +1 -1
- package/dist/diff/bridge-gradient.js +40 -109
- package/dist/diff/bridge-gradient.js.map +1 -1
- package/dist/diff/bridge-specs.d.ts +16 -5
- package/dist/diff/bridge-specs.d.ts.map +1 -1
- package/dist/diff/bridge-specs.js +19 -4
- package/dist/diff/bridge-specs.js.map +1 -1
- package/dist/dimensional/algebra.d.ts +18 -0
- package/dist/dimensional/algebra.d.ts.map +1 -1
- package/dist/dimensional/algebra.js +41 -1
- package/dist/dimensional/algebra.js.map +1 -1
- package/dist/dimensional/ast-builders.d.ts +12 -4
- package/dist/dimensional/ast-builders.d.ts.map +1 -1
- package/dist/dimensional/ast-builders.js +17 -5
- package/dist/dimensional/ast-builders.js.map +1 -1
- package/dist/dimensional/ast-leaves.d.ts +81 -0
- package/dist/dimensional/ast-leaves.d.ts.map +1 -0
- package/dist/dimensional/ast-leaves.js +146 -0
- package/dist/dimensional/ast-leaves.js.map +1 -0
- package/dist/dimensional/ast-types.js.map +1 -1
- package/dist/dimensional/bridge-check.js.map +1 -1
- package/dist/dimensional/buckingham.d.ts.map +1 -1
- package/dist/dimensional/buckingham.js +15 -27
- package/dist/dimensional/buckingham.js.map +1 -1
- package/dist/dimensional/connection-validators.d.ts +2 -1
- package/dist/dimensional/connection-validators.d.ts.map +1 -1
- package/dist/dimensional/connection-validators.js.map +1 -1
- package/dist/dimensional/connection.js.map +1 -1
- package/dist/dimensional/constant-rows.d.ts.map +1 -1
- package/dist/dimensional/constant-rows.js +17 -13
- package/dist/dimensional/constant-rows.js.map +1 -1
- package/dist/dimensional/constants.d.ts +5 -6
- package/dist/dimensional/constants.d.ts.map +1 -1
- package/dist/dimensional/constants.js +5 -6
- package/dist/dimensional/constants.js.map +1 -1
- package/dist/dimensional/curvature-composite.js.map +1 -1
- package/dist/dimensional/curvature-invariants.js.map +1 -1
- package/dist/dimensional/curvature.js.map +1 -1
- package/dist/dimensional/dimension-inference.d.ts.map +1 -1
- package/dist/dimensional/dimension-inference.js +1 -2
- package/dist/dimensional/dimension-inference.js.map +1 -1
- package/dist/dimensional/dimension-spec.d.ts +13 -7
- package/dist/dimensional/dimension-spec.d.ts.map +1 -1
- package/dist/dimensional/dimension-spec.js +49 -23
- package/dist/dimensional/dimension-spec.js.map +1 -1
- package/dist/dimensional/einstein-equation.js.map +1 -1
- package/dist/dimensional/errors.d.ts +4 -2
- package/dist/dimensional/errors.d.ts.map +1 -1
- package/dist/dimensional/errors.js +3 -17
- package/dist/dimensional/errors.js.map +1 -1
- package/dist/dimensional/exact-scale.d.ts +0 -17
- package/dist/dimensional/exact-scale.d.ts.map +1 -1
- package/dist/dimensional/exact-scale.js +8 -8
- package/dist/dimensional/exact-scale.js.map +1 -1
- package/dist/dimensional/field-equation-helpers.js.map +1 -1
- package/dist/dimensional/formula-names.js.map +1 -1
- package/dist/dimensional/fresh-label.js.map +1 -1
- package/dist/dimensional/friedmann-equation.d.ts +3 -3
- package/dist/dimensional/friedmann-equation.js +3 -3
- package/dist/dimensional/friedmann-equation.js.map +1 -1
- package/dist/dimensional/gauge-field.d.ts +2 -3
- package/dist/dimensional/gauge-field.d.ts.map +1 -1
- package/dist/dimensional/gauge-field.js +2 -3
- package/dist/dimensional/gauge-field.js.map +1 -1
- package/dist/dimensional/hyphen-names.d.ts +12 -2
- package/dist/dimensional/hyphen-names.d.ts.map +1 -1
- package/dist/dimensional/hyphen-names.js +45 -12
- package/dist/dimensional/hyphen-names.js.map +1 -1
- package/dist/dimensional/killing-validators.js.map +1 -1
- package/dist/dimensional/klein-gordon-equation.js.map +1 -1
- package/dist/dimensional/metric-validators.d.ts +2 -1
- package/dist/dimensional/metric-validators.d.ts.map +1 -1
- package/dist/dimensional/metric-validators.js.map +1 -1
- package/dist/dimensional/metric.d.ts.map +1 -1
- package/dist/dimensional/metric.js +0 -1
- package/dist/dimensional/metric.js.map +1 -1
- package/dist/dimensional/natural-units.js.map +1 -1
- package/dist/dimensional/quantity-registry.d.ts +13 -0
- package/dist/dimensional/quantity-registry.d.ts.map +1 -1
- package/dist/dimensional/quantity-registry.js +14 -6
- package/dist/dimensional/quantity-registry.js.map +1 -1
- package/dist/dimensional/rg-flow.js.map +1 -1
- package/dist/dimensional/stress-energy-validators.js.map +1 -1
- package/dist/dimensional/symbolic-constants.d.ts +9 -0
- package/dist/dimensional/symbolic-constants.d.ts.map +1 -1
- package/dist/dimensional/symbolic-constants.js +20 -3
- package/dist/dimensional/symbolic-constants.js.map +1 -1
- package/dist/dimensional/tensor-trace.js.map +1 -1
- package/dist/dimensional/tensor.js.map +1 -1
- package/dist/dimensional/types.d.ts +36 -0
- package/dist/dimensional/types.d.ts.map +1 -1
- package/dist/dimensional/types.js +45 -7
- package/dist/dimensional/types.js.map +1 -1
- package/dist/dimensional/unit-convention.d.ts +0 -2
- package/dist/dimensional/unit-convention.d.ts.map +1 -1
- package/dist/dimensional/unit-convention.js +2 -2
- package/dist/dimensional/unit-convention.js.map +1 -1
- package/dist/dimensional/unit-data.d.ts.map +1 -1
- package/dist/dimensional/unit-data.js +11 -7
- package/dist/dimensional/unit-data.js.map +1 -1
- package/dist/dimensional/units.d.ts.map +1 -1
- package/dist/dimensional/units.js +38 -20
- package/dist/dimensional/units.js.map +1 -1
- package/dist/dimensional/validator-registry.js.map +1 -1
- package/dist/dimensional/validator.d.ts +0 -16
- package/dist/dimensional/validator.d.ts.map +1 -1
- package/dist/dimensional/validator.js +65 -29
- package/dist/dimensional/validator.js.map +1 -1
- package/dist/dimensional/weyl-validators.js.map +1 -1
- package/dist/index.d.ts +59 -8
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +22 -24
- package/dist/index.js.map +1 -1
- package/dist/numerical/bianchi-residual.js.map +1 -1
- package/dist/numerical/binding-value.d.ts +11 -6
- package/dist/numerical/binding-value.d.ts.map +1 -1
- package/dist/numerical/binding-value.js +126 -122
- package/dist/numerical/binding-value.js.map +1 -1
- package/dist/numerical/christoffel-flat.d.ts.map +1 -1
- package/dist/numerical/christoffel-flat.js +3 -2
- package/dist/numerical/christoffel-flat.js.map +1 -1
- package/dist/numerical/connection-lowering-helpers.js.map +1 -1
- package/dist/numerical/covariant-eikonal.d.ts.map +1 -1
- package/dist/numerical/covariant-eikonal.js +36 -13
- package/dist/numerical/covariant-eikonal.js.map +1 -1
- package/dist/numerical/curvature-lowering-helpers.d.ts +20 -0
- package/dist/numerical/curvature-lowering-helpers.d.ts.map +1 -1
- package/dist/numerical/curvature-lowering-helpers.js +9 -5
- package/dist/numerical/curvature-lowering-helpers.js.map +1 -1
- package/dist/numerical/derivative-lowering.js.map +1 -1
- package/dist/numerical/einstein-equation.js.map +1 -1
- package/dist/numerical/engine-registry.js.map +1 -1
- package/dist/numerical/errors.d.ts +7 -3
- package/dist/numerical/errors.d.ts.map +1 -1
- package/dist/numerical/errors.js +5 -8
- package/dist/numerical/errors.js.map +1 -1
- package/dist/numerical/evaluator-uncertainty.d.ts.map +1 -1
- package/dist/numerical/evaluator-uncertainty.js +19 -2
- package/dist/numerical/evaluator-uncertainty.js.map +1 -1
- package/dist/numerical/finite-difference.d.ts +22 -0
- package/dist/numerical/finite-difference.d.ts.map +1 -0
- package/dist/numerical/finite-difference.js +27 -0
- package/dist/numerical/finite-difference.js.map +1 -0
- package/dist/numerical/formula-contract.d.ts +63 -7
- package/dist/numerical/formula-contract.d.ts.map +1 -1
- package/dist/numerical/formula-contract.js +61 -42
- package/dist/numerical/formula-contract.js.map +1 -1
- package/dist/numerical/formula-dimension.d.ts +8 -7
- package/dist/numerical/formula-dimension.d.ts.map +1 -1
- package/dist/numerical/formula-dimension.js +58 -36
- package/dist/numerical/formula-dimension.js.map +1 -1
- package/dist/numerical/formula-mathts.d.ts.map +1 -1
- package/dist/numerical/formula-mathts.js +5 -2
- package/dist/numerical/formula-mathts.js.map +1 -1
- package/dist/numerical/formula-registry.d.ts +13 -3
- package/dist/numerical/formula-registry.d.ts.map +1 -1
- package/dist/numerical/formula-registry.js +7 -2
- package/dist/numerical/formula-registry.js.map +1 -1
- package/dist/numerical/geodesic-integrator.d.ts.map +1 -1
- package/dist/numerical/geodesic-integrator.js +22 -14
- package/dist/numerical/geodesic-integrator.js.map +1 -1
- package/dist/numerical/geometrized.d.ts.map +1 -1
- package/dist/numerical/geometrized.js +0 -1
- package/dist/numerical/geometrized.js.map +1 -1
- package/dist/numerical/gl4-integrator.d.ts +28 -27
- package/dist/numerical/gl4-integrator.d.ts.map +1 -1
- package/dist/numerical/gl4-integrator.js +41 -42
- package/dist/numerical/gl4-integrator.js.map +1 -1
- package/dist/numerical/grid-field.js.map +1 -1
- package/dist/numerical/index.js.map +1 -1
- package/dist/numerical/input-validation.d.ts +3 -6
- package/dist/numerical/input-validation.d.ts.map +1 -1
- package/dist/numerical/input-validation.js +4 -8
- package/dist/numerical/input-validation.js.map +1 -1
- package/dist/numerical/killing.d.ts +8 -5
- package/dist/numerical/killing.d.ts.map +1 -1
- package/dist/numerical/killing.js.map +1 -1
- package/dist/numerical/klein-gordon.js.map +1 -1
- package/dist/numerical/kretschmann.js.map +1 -1
- package/dist/numerical/lowering-utils.js.map +1 -1
- package/dist/numerical/lowering.d.ts.map +1 -1
- package/dist/numerical/lowering.js +7 -17
- package/dist/numerical/lowering.js.map +1 -1
- package/dist/numerical/mathts-engine.d.ts.map +1 -1
- package/dist/numerical/mathts-engine.js +16 -25
- package/dist/numerical/mathts-engine.js.map +1 -1
- package/dist/numerical/metric-inverse.d.ts.map +1 -1
- package/dist/numerical/metric-inverse.js +83 -46
- package/dist/numerical/metric-inverse.js.map +1 -1
- package/dist/numerical/null-ic.js.map +1 -1
- package/dist/numerical/null-ray-integrator.d.ts +2 -1
- package/dist/numerical/null-ray-integrator.d.ts.map +1 -1
- package/dist/numerical/null-ray-integrator.js +12 -12
- package/dist/numerical/null-ray-integrator.js.map +1 -1
- package/dist/numerical/painleve-gullstrand-metric.js +2 -2
- package/dist/numerical/painleve-gullstrand-metric.js.map +1 -1
- package/dist/numerical/pderiv.d.ts.map +1 -1
- package/dist/numerical/pderiv.js +9 -2
- package/dist/numerical/pderiv.js.map +1 -1
- package/dist/numerical/perihelion-finder.d.ts +0 -36
- package/dist/numerical/perihelion-finder.d.ts.map +1 -1
- package/dist/numerical/perihelion-finder.js +41 -87
- package/dist/numerical/perihelion-finder.js.map +1 -1
- package/dist/numerical/quadrature.d.ts +5 -2
- package/dist/numerical/quadrature.d.ts.map +1 -1
- package/dist/numerical/quadrature.js +19 -4
- package/dist/numerical/quadrature.js.map +1 -1
- package/dist/numerical/rk4-trajectory.d.ts +10 -0
- package/dist/numerical/rk4-trajectory.d.ts.map +1 -0
- package/dist/numerical/rk4-trajectory.js +37 -0
- package/dist/numerical/rk4-trajectory.js.map +1 -0
- package/dist/numerical/schwarzschild.d.ts +14 -0
- package/dist/numerical/schwarzschild.d.ts.map +1 -0
- package/dist/numerical/schwarzschild.js +17 -0
- package/dist/numerical/schwarzschild.js.map +1 -0
- package/dist/numerical/spacetime-metrics.d.ts +25 -19
- package/dist/numerical/spacetime-metrics.d.ts.map +1 -1
- package/dist/numerical/spacetime-metrics.js +180 -286
- package/dist/numerical/spacetime-metrics.js.map +1 -1
- package/dist/numerical/statistics.d.ts +24 -0
- package/dist/numerical/statistics.d.ts.map +1 -0
- package/dist/numerical/statistics.js +52 -0
- package/dist/numerical/statistics.js.map +1 -0
- package/dist/numerical/strides.js.map +1 -1
- package/dist/numerical/tensor-engine.d.ts +30 -5
- package/dist/numerical/tensor-engine.d.ts.map +1 -1
- package/dist/numerical/tensor-engine.js +12 -0
- package/dist/numerical/tensor-engine.js.map +1 -1
- package/dist/numerical/types.js.map +1 -1
- package/dist/numerical/weyl-lowering.js.map +1 -1
- package/dist/relations/category.js.map +1 -1
- package/dist/relations/composition-table.d.ts +4 -4
- package/dist/relations/composition-table.js +4 -4
- package/dist/relations/composition-table.js.map +1 -1
- package/dist/relations/conventions.js.map +1 -1
- package/dist/relations/domain-regimes.js.map +1 -1
- package/dist/relations/regime-registration.js.map +1 -1
- package/dist/relations/regime-vocabularies.js.map +1 -1
- package/dist/relations/regime.d.ts +28 -8
- package/dist/relations/regime.d.ts.map +1 -1
- package/dist/relations/regime.js +44 -15
- package/dist/relations/regime.js.map +1 -1
- package/dist/relations/types.d.ts +18 -5
- package/dist/relations/types.d.ts.map +1 -1
- package/dist/relations/types.js +5 -3
- package/dist/relations/types.js.map +1 -1
- package/package.json +16 -20
- package/dist/bridges/registry.d.ts +0 -60
- package/dist/bridges/registry.d.ts.map +0 -1
- package/dist/bridges/registry.js +0 -87
- package/dist/bridges/registry.js.map +0 -1
- package/dist/cli/poster-source.d.ts +0 -154
- package/dist/cli/poster-source.d.ts.map +0 -1
- package/dist/cli/poster-source.js +0 -184
- package/dist/cli/poster-source.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fingerprint.js","sourceRoot":"","sources":["../../../src/composition/probe/fingerprint.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"fingerprint.js","sourceRoot":"","sources":["../../../src/composition/probe/fingerprint.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Candidate fingerprints — `normalForm` is the cheap algebraic hash.\n *\n * @module composition/probe/fingerprint\n */\n\nimport type { ExprNode } from '../../dimensional/ast-types.js';\nimport { validate } from '../../dimensional/validator.js';\nimport { format } from '../../dimensional/algebra.js';\nimport { normalForm } from '../../canonical/normal-form.js';\nimport { hashCanonical, sha256Hex } from './serialize.js';\nimport type { CandidateFingerprint, ComplexityMetrics, ProbeCandidateBody } from './types.js';\n\n/** Expression of a probe body. @internal */\nexport function bodyExpression(body: ProbeCandidateBody): ExprNode {\n return body.kind === 'scalar-expr' ? body.expression : body.correction;\n}\n\n/** Recursively count AST nodes. @internal */\nexport function countAstNodes(node: ExprNode): number {\n switch (node.kind) {\n case 'symbol':\n return 1;\n case 'op':\n return 1 + node.args.reduce((n, a) => n + countAstNodes(a), 0);\n case 'transcendental':\n case 'abs':\n case 'dirac-delta':\n return 1 + countAstNodes(node.arg);\n case 'integral':\n return (\n 1 +\n countAstNodes(node.integrand) +\n countAstNodes(node.over) +\n (node.lower ? countAstNodes(node.lower) : 0) +\n (node.upper ? countAstNodes(node.upper) : 0)\n );\n case 'derivative':\n return 1 + countAstNodes(node.of) + countAstNodes(node.wrt);\n case 'variational-derivative':\n return 1 + countAstNodes(node.functional) + countAstNodes(node.field) + countAstNodes(node.over);\n default:\n return 1;\n }\n}\n\n/** Operator / transcendental count. @internal */\nexport function countOperators(node: ExprNode): number {\n switch (node.kind) {\n case 'op':\n return 1 + node.args.reduce((n, a) => n + countOperators(a), 0);\n case 'transcendental':\n return 1 + countOperators(node.arg);\n case 'abs':\n case 'dirac-delta':\n return countOperators(node.arg);\n case 'integral':\n return (\n 1 +\n countOperators(node.integrand) +\n countOperators(node.over) +\n (node.lower ? countOperators(node.lower) : 0) +\n (node.upper ? countOperators(node.upper) : 0)\n );\n case 'derivative':\n return 1 + countOperators(node.of) + countOperators(node.wrt);\n default:\n return 0;\n }\n}\n\n/** Max `^` numeric exponent used as a derivative-order proxy for monomials. @internal */\nexport function maxPowerOrder(node: ExprNode): number {\n if (node.kind === 'op' && node.op === '^' && node.args[1]?.kind === 'symbol') {\n const e = Math.abs(Number(node.args[1].name));\n return Number.isFinite(e) ? e : 0;\n }\n if (node.kind === 'op') return Math.max(0, ...node.args.map(maxPowerOrder));\n if (node.kind === 'transcendental' || node.kind === 'abs') return maxPowerOrder(node.arg);\n return 0;\n}\n\n/** Complexity metrics for an expression. @internal */\nexport function complexityOf(node: ExprNode, freeParameters = 1): ComplexityMetrics {\n const astNodes = countAstNodes(node);\n const operators = countOperators(node);\n return {\n astNodes,\n operators,\n freeParameters,\n derivativeOrder: Math.round(maxPowerOrder(node)),\n descriptionLength: astNodes + operators,\n };\n}\n\n/** Fingerprint an expression under optional regime/assumption signatures. @internal */\nexport function fingerprintExpr(\n node: ExprNode,\n regimeSignature = '',\n assumptionSignature = '',\n): CandidateFingerprint {\n const syntaxHash = hashCanonical(node);\n const canonicalAstHash = sha256Hex(normalForm(node));\n const v = validate(node);\n const dimensionalSignature = v.inferredDimension ? format(v.inferredDimension) : 'invalid';\n return {\n syntaxHash,\n canonicalAstHash,\n dimensionalSignature,\n regimeSignature,\n assumptionSignature: sha256Hex(assumptionSignature),\n };\n}\n"]}
|
|
@@ -4,9 +4,15 @@
|
|
|
4
4
|
* @module composition/probe/fit
|
|
5
5
|
*/
|
|
6
6
|
import type { ExprNode } from '../../dimensional/ast-types.js';
|
|
7
|
-
import type
|
|
7
|
+
import { type ProbeDataset } from './types.js';
|
|
8
8
|
export interface FitResult {
|
|
9
9
|
readonly prefactor: number;
|
|
10
|
+
/**
|
|
11
|
+
* Standard error of the prefactor from the residual scatter of the exploratory rows
|
|
12
|
+
* (MathTS `ols`, one column, no intercept); null below two finite rows or when the
|
|
13
|
+
* form is zero on every row.
|
|
14
|
+
*/
|
|
15
|
+
readonly prefactorStderr: number | null;
|
|
10
16
|
readonly exploratoryRmse: number;
|
|
11
17
|
readonly nExploratory: number;
|
|
12
18
|
readonly holdoutRmse: number | null;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fit.d.ts","sourceRoot":"","sources":["../../../src/composition/probe/fit.ts"],"names":[],"mappings":"AAAA;;;;GAIG;
|
|
1
|
+
{"version":3,"file":"fit.d.ts","sourceRoot":"","sources":["../../../src/composition/probe/fit.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gCAAgC,CAAC;AAE/D,OAAO,EAAuB,KAAK,YAAY,EAAE,MAAM,YAAY,CAAC;AAIpE,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B;;;;OAIG;IACH,QAAQ,CAAC,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;IACxC,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IACpC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,gBAAgB,EAAE,OAAO,CAAC;CACpC;AAuDD;;;;;GAKG;AACH,wBAAgB,YAAY,CAC1B,IAAI,EAAE,QAAQ,EACd,WAAW,EAAE,YAAY,EACzB,OAAO,EAAE,YAAY,GAAG,SAAS,EACjC,UAAU,SAAsB,GAC/B,SAAS,CAuDX"}
|
|
@@ -3,7 +3,10 @@
|
|
|
3
3
|
*
|
|
4
4
|
* @module composition/probe/fit
|
|
5
5
|
*/
|
|
6
|
+
import { norm2, pairwiseDot } from '@danielsimonjr/mathts-core';
|
|
7
|
+
import { ols } from '@danielsimonjr/mathts-functions';
|
|
6
8
|
import { evalExpr } from '../expr-eval.js';
|
|
9
|
+
import { DEFAULT_HOLDOUT_TOL } from './types.js';
|
|
7
10
|
import { scalarDiscrepancy } from './residual.js';
|
|
8
11
|
import { canonicalJson } from './serialize.js';
|
|
9
12
|
function predictions(expr, rows, prefactor) {
|
|
@@ -21,6 +24,35 @@ function observed(rows) {
|
|
|
21
24
|
return y;
|
|
22
25
|
});
|
|
23
26
|
}
|
|
27
|
+
/** Root-mean-square additive discrepancy: core `norm2` of the residuals (the scaled, overflow-safe 2-norm) over √n. */
|
|
28
|
+
function rmse(observedValues, predicted) {
|
|
29
|
+
const residuals = observedValues.map((obs, i) => scalarDiscrepancy(obs, predicted[i], 'additive'));
|
|
30
|
+
return norm2(residuals) / Math.sqrt(residuals.length);
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* The standard error of the least-squares prefactor: MathTS `ols` on the single
|
|
34
|
+
* column f with no intercept, the column scaled to order one first because
|
|
35
|
+
* `ols` tests singularity with an absolute 1e-15 (a column of 1e-9 is refused
|
|
36
|
+
* unscaled), then unscaled. The estimator is the one `pairwiseDot` ratio above
|
|
37
|
+
* gives, so the coefficient itself is not read back from here. Null below two
|
|
38
|
+
* finite rows (no residual degree of freedom) or when f is zero everywhere.
|
|
39
|
+
*/
|
|
40
|
+
function prefactorStderr(fs, ys) {
|
|
41
|
+
if (fs.length < 2)
|
|
42
|
+
return null;
|
|
43
|
+
const scale = fs.reduce((m, v) => Math.max(m, Math.abs(v)), 0);
|
|
44
|
+
if (!(scale > 0))
|
|
45
|
+
return null;
|
|
46
|
+
let fit;
|
|
47
|
+
try {
|
|
48
|
+
fit = ols(fs.map((v) => [v / scale]), [...ys], { intercept: false });
|
|
49
|
+
}
|
|
50
|
+
catch {
|
|
51
|
+
return null;
|
|
52
|
+
}
|
|
53
|
+
const se = fit.stderr[0];
|
|
54
|
+
return typeof se === 'number' && Number.isFinite(se) ? se / scale : null;
|
|
55
|
+
}
|
|
24
56
|
function predictorKey(row, observable) {
|
|
25
57
|
const predictors = {};
|
|
26
58
|
for (const [key, value] of Object.entries(row)) {
|
|
@@ -35,7 +67,7 @@ function predictorKey(row, observable) {
|
|
|
35
67
|
*
|
|
36
68
|
* @internal
|
|
37
69
|
*/
|
|
38
|
-
export function fitPrefactor(expr, exploratory, holdout, holdoutTol =
|
|
70
|
+
export function fitPrefactor(expr, exploratory, holdout, holdoutTol = DEFAULT_HOLDOUT_TOL) {
|
|
39
71
|
if (exploratory.role !== 'exploratory-fit') {
|
|
40
72
|
throw new RangeError(`fit: exploratory role must be exploratory-fit (got '${exploratory.role}')`);
|
|
41
73
|
}
|
|
@@ -52,25 +84,20 @@ export function fitPrefactor(expr, exploratory, holdout, holdoutTol = 0.15) {
|
|
|
52
84
|
}
|
|
53
85
|
const y = observed(exploratory);
|
|
54
86
|
const f = predictions(expr, exploratory, 1);
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
const prefactor = den > 0 ? num / den : 1;
|
|
87
|
+
// The least-squares prefactor over the rows where the form is finite: c = f·y / f·f
|
|
88
|
+
// (core `pairwiseDot`, a pairwise sum).
|
|
89
|
+
const finite = f.map((v, i) => [v, y[i]]).filter(([v]) => Number.isFinite(v));
|
|
90
|
+
const fs = finite.map(([v]) => v);
|
|
91
|
+
const ys = finite.map(([, obs]) => obs);
|
|
92
|
+
const den = pairwiseDot(fs, fs);
|
|
93
|
+
const prefactor = den > 0 ? pairwiseDot(fs, ys) / den : 1;
|
|
94
|
+
const stderr = den > 0 ? prefactorStderr(fs, ys) : null;
|
|
64
95
|
const pred = predictions(expr, exploratory, prefactor);
|
|
65
|
-
|
|
66
|
-
for (let i = 0; i < y.length; i++) {
|
|
67
|
-
const r = scalarDiscrepancy(y[i], pred[i], 'additive');
|
|
68
|
-
acc += r * r;
|
|
69
|
-
}
|
|
70
|
-
const exploratoryRmse = Math.sqrt(acc / y.length);
|
|
96
|
+
const exploratoryRmse = rmse(y, pred);
|
|
71
97
|
if (!holdout || holdout.rows.length === 0) {
|
|
72
98
|
return {
|
|
73
99
|
prefactor,
|
|
100
|
+
prefactorStderr: stderr,
|
|
74
101
|
exploratoryRmse,
|
|
75
102
|
nExploratory: y.length,
|
|
76
103
|
holdoutRmse: null,
|
|
@@ -80,16 +107,14 @@ export function fitPrefactor(expr, exploratory, holdout, holdoutTol = 0.15) {
|
|
|
80
107
|
}
|
|
81
108
|
const yh = observed(holdout);
|
|
82
109
|
const ph = predictions(expr, holdout, prefactor);
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
}
|
|
88
|
-
const holdoutRmse = Math.sqrt(hacc / yh.length);
|
|
89
|
-
const scale = Math.max(...yh.map(Math.abs), ...ph.map(Math.abs), 1e-12);
|
|
110
|
+
const holdoutRmse = rmse(yh, ph);
|
|
111
|
+
// A reduce, not `Math.max(...rows)`: a spread of a large holdout overflows the call stack.
|
|
112
|
+
const maxAbs = (m, v) => (Number.isFinite(v) ? Math.max(m, Math.abs(v)) : m);
|
|
113
|
+
const scale = ph.reduce(maxAbs, yh.reduce(maxAbs, 1e-12));
|
|
90
114
|
const holdoutSupported = holdoutRmse <= holdoutTol * scale;
|
|
91
115
|
return {
|
|
92
116
|
prefactor,
|
|
117
|
+
prefactorStderr: stderr,
|
|
93
118
|
exploratoryRmse,
|
|
94
119
|
nExploratory: y.length,
|
|
95
120
|
holdoutRmse,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fit.js","sourceRoot":"","sources":["../../../src/composition/probe/fit.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"fit.js","sourceRoot":"","sources":["../../../src/composition/probe/fit.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAChE,OAAO,EAAE,GAAG,EAAE,MAAM,iCAAiC,CAAC;AAEtD,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAC3C,OAAO,EAAE,mBAAmB,EAAqB,MAAM,YAAY,CAAC;AACpE,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAClD,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAiB/C,SAAS,WAAW,CAAC,IAAc,EAAE,IAAkB,EAAE,SAAiB;IACxE,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE;QAC3B,MAAM,CAAC,GAAG,QAAQ,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;QAC9B,OAAO,SAAS,GAAG,CAAC,CAAC;IACvB,CAAC,CAAC,CAAC;AACL,CAAC;AAED,SAAS,QAAQ,CAAC,IAAkB;IAClC,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE;QAC3B,MAAM,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAC/B,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC;YACxB,MAAM,IAAI,UAAU,CAAC,uCAAuC,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC;QAClF,CAAC;QACD,OAAO,CAAC,CAAC;IACX,CAAC,CAAC,CAAC;AACL,CAAC;AAED,uHAAuH;AACvH,SAAS,IAAI,CAAC,cAAiC,EAAE,SAA4B;IAC3E,MAAM,SAAS,GAAG,cAAc,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC,CAAE,EAAE,UAAU,CAAC,CAAC,CAAC;IACpG,OAAO,KAAK,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;AACxD,CAAC;AAED;;;;;;;GAOG;AACH,SAAS,eAAe,CAAC,EAAqB,EAAE,EAAqB;IACnE,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC;QAAE,OAAO,IAAI,CAAC;IAC/B,MAAM,KAAK,GAAG,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAC/D,IAAI,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC;QAAE,OAAO,IAAI,CAAC;IAC9B,IAAI,GAAG,CAAC;IACR,IAAI,CAAC;QACH,GAAG,GAAG,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;IACvE,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;IACD,MAAM,EAAE,GAAY,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IAClC,OAAO,OAAO,EAAE,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC;AAC3E,CAAC;AAED,SAAS,YAAY,CAAC,GAAqC,EAAE,UAAkB;IAC7E,MAAM,UAAU,GAA2B,EAAE,CAAC;IAC9C,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;QAC/C,IAAI,GAAG,KAAK,UAAU;YAAE,UAAU,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;IAClD,CAAC;IACD,OAAO,aAAa,CAAC,UAAU,CAAC,CAAC;AACnC,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,YAAY,CAC1B,IAAc,EACd,WAAyB,EACzB,OAAiC,EACjC,UAAU,GAAG,mBAAmB;IAEhC,IAAI,WAAW,CAAC,IAAI,KAAK,iBAAiB,EAAE,CAAC;QAC3C,MAAM,IAAI,UAAU,CAAC,uDAAuD,WAAW,CAAC,IAAI,IAAI,CAAC,CAAC;IACpG,CAAC;IACD,IAAI,OAAO,EAAE,CAAC;QACZ,IAAI,OAAO,CAAC,IAAI,KAAK,oBAAoB,IAAI,OAAO,CAAC,IAAI,KAAK,sBAAsB,EAAE,CAAC;YACrF,MAAM,IAAI,UAAU,CAAC,sEAAsE,CAAC,CAAC;QAC/F,CAAC;QACD,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,YAAY,CAAC,CAAC,EAAE,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;QACvF,KAAK,MAAM,GAAG,IAAI,WAAW,CAAC,IAAI,EAAE,CAAC;YACnC,IAAI,QAAQ,CAAC,GAAG,CAAC,YAAY,CAAC,GAAG,EAAE,WAAW,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC;gBAC5D,MAAM,IAAI,UAAU,CAAC,8CAA8C,CAAC,CAAC;YACvE,CAAC;QACH,CAAC;IACH,CAAC;IACD,MAAM,CAAC,GAAG,QAAQ,CAAC,WAAW,CAAC,CAAC;IAChC,MAAM,CAAC,GAAG,WAAW,CAAC,IAAI,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC;IAC5C,oFAAoF;IACpF,wCAAwC;IACxC,MAAM,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAE,CAAU,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;IACxF,MAAM,EAAE,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;IAClC,MAAM,EAAE,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC;IACxC,MAAM,GAAG,GAAG,WAAW,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;IAChC,MAAM,SAAS,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,EAAE,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IAC1D,MAAM,MAAM,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IACxD,MAAM,IAAI,GAAG,WAAW,CAAC,IAAI,EAAE,WAAW,EAAE,SAAS,CAAC,CAAC;IACvD,MAAM,eAAe,GAAG,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;IAEtC,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC1C,OAAO;YACL,SAAS;YACT,eAAe,EAAE,MAAM;YACvB,eAAe;YACf,YAAY,EAAE,CAAC,CAAC,MAAM;YACtB,WAAW,EAAE,IAAI;YACjB,QAAQ,EAAE,CAAC;YACX,gBAAgB,EAAE,KAAK;SACxB,CAAC;IACJ,CAAC;IACD,MAAM,EAAE,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC;IAC7B,MAAM,EAAE,GAAG,WAAW,CAAC,IAAI,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC;IACjD,MAAM,WAAW,GAAG,IAAI,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;IACjC,2FAA2F;IAC3F,MAAM,MAAM,GAAG,CAAC,CAAS,EAAE,CAAS,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC7F,MAAM,KAAK,GAAG,EAAE,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC;IAC1D,MAAM,gBAAgB,GAAG,WAAW,IAAI,UAAU,GAAG,KAAK,CAAC;IAC3D,OAAO;QACL,SAAS;QACT,eAAe,EAAE,MAAM;QACvB,eAAe;QACf,YAAY,EAAE,CAAC,CAAC,MAAM;QACtB,WAAW;QACX,QAAQ,EAAE,EAAE,CAAC,MAAM;QACnB,gBAAgB;KACjB,CAAC;AACJ,CAAC","sourcesContent":["/**\n * Prefactor fit + holdout evaluation. Generation never sees holdout rows.\n *\n * @module composition/probe/fit\n */\n\nimport { norm2, pairwiseDot } from '@danielsimonjr/mathts-core';\nimport { ols } from '@danielsimonjr/mathts-functions';\nimport type { ExprNode } from '../../dimensional/ast-types.js';\nimport { evalExpr } from '../expr-eval.js';\nimport { DEFAULT_HOLDOUT_TOL, type ProbeDataset } from './types.js';\nimport { scalarDiscrepancy } from './residual.js';\nimport { canonicalJson } from './serialize.js';\n\nexport interface FitResult {\n readonly prefactor: number;\n /**\n * Standard error of the prefactor from the residual scatter of the exploratory rows\n * (MathTS `ols`, one column, no intercept); null below two finite rows or when the\n * form is zero on every row.\n */\n readonly prefactorStderr: number | null;\n readonly exploratoryRmse: number;\n readonly nExploratory: number;\n readonly holdoutRmse: number | null;\n readonly nHoldout: number;\n readonly holdoutSupported: boolean;\n}\n\nfunction predictions(expr: ExprNode, rows: ProbeDataset, prefactor: number): number[] {\n return rows.rows.map((row) => {\n const y = evalExpr(expr, row);\n return prefactor * y;\n });\n}\n\nfunction observed(rows: ProbeDataset): number[] {\n return rows.rows.map((row) => {\n const y = row[rows.observable];\n if (!Number.isFinite(y)) {\n throw new RangeError(`fit: row missing finite observable '${rows.observable}'`);\n }\n return y;\n });\n}\n\n/** Root-mean-square additive discrepancy: core `norm2` of the residuals (the scaled, overflow-safe 2-norm) over √n. */\nfunction rmse(observedValues: readonly number[], predicted: readonly number[]): number {\n const residuals = observedValues.map((obs, i) => scalarDiscrepancy(obs, predicted[i]!, 'additive'));\n return norm2(residuals) / Math.sqrt(residuals.length);\n}\n\n/**\n * The standard error of the least-squares prefactor: MathTS `ols` on the single\n * column f with no intercept, the column scaled to order one first because\n * `ols` tests singularity with an absolute 1e-15 (a column of 1e-9 is refused\n * unscaled), then unscaled. The estimator is the one `pairwiseDot` ratio above\n * gives, so the coefficient itself is not read back from here. Null below two\n * finite rows (no residual degree of freedom) or when f is zero everywhere.\n */\nfunction prefactorStderr(fs: readonly number[], ys: readonly number[]): number | null {\n if (fs.length < 2) return null;\n const scale = fs.reduce((m, v) => Math.max(m, Math.abs(v)), 0);\n if (!(scale > 0)) return null;\n let fit;\n try {\n fit = ols(fs.map((v) => [v / scale]), [...ys], { intercept: false });\n } catch {\n return null;\n }\n const se: unknown = fit.stderr[0];\n return typeof se === 'number' && Number.isFinite(se) ? se / scale : null;\n}\n\nfunction predictorKey(row: Readonly<Record<string, number>>, observable: string): string {\n const predictors: Record<string, number> = {};\n for (const [key, value] of Object.entries(row)) {\n if (key !== observable) predictors[key] = value;\n }\n return canonicalJson(predictors);\n}\n\n/**\n * Least-squares prefactor c in y ≈ c · f(x) on exploratory data, then score\n * locked holdout. Holdout must not have been in the generation context.\n *\n * @internal\n */\nexport function fitPrefactor(\n expr: ExprNode,\n exploratory: ProbeDataset,\n holdout: ProbeDataset | undefined,\n holdoutTol = DEFAULT_HOLDOUT_TOL,\n): FitResult {\n if (exploratory.role !== 'exploratory-fit') {\n throw new RangeError(`fit: exploratory role must be exploratory-fit (got '${exploratory.role}')`);\n }\n if (holdout) {\n if (holdout.role !== 'validation-holdout' && holdout.role !== 'external-replication') {\n throw new RangeError(`fit: holdout role must be validation-holdout or external-replication`);\n }\n const holdKeys = new Set(holdout.rows.map((r) => predictorKey(r, holdout.observable)));\n for (const row of exploratory.rows) {\n if (holdKeys.has(predictorKey(row, exploratory.observable))) {\n throw new RangeError('fit: holdout row leaked into exploratory set');\n }\n }\n }\n const y = observed(exploratory);\n const f = predictions(expr, exploratory, 1);\n // The least-squares prefactor over the rows where the form is finite: c = f·y / f·f\n // (core `pairwiseDot`, a pairwise sum).\n const finite = f.map((v, i) => [v, y[i]!] as const).filter(([v]) => Number.isFinite(v));\n const fs = finite.map(([v]) => v);\n const ys = finite.map(([, obs]) => obs);\n const den = pairwiseDot(fs, fs);\n const prefactor = den > 0 ? pairwiseDot(fs, ys) / den : 1;\n const stderr = den > 0 ? prefactorStderr(fs, ys) : null;\n const pred = predictions(expr, exploratory, prefactor);\n const exploratoryRmse = rmse(y, pred);\n\n if (!holdout || holdout.rows.length === 0) {\n return {\n prefactor,\n prefactorStderr: stderr,\n exploratoryRmse,\n nExploratory: y.length,\n holdoutRmse: null,\n nHoldout: 0,\n holdoutSupported: false,\n };\n }\n const yh = observed(holdout);\n const ph = predictions(expr, holdout, prefactor);\n const holdoutRmse = rmse(yh, ph);\n // A reduce, not `Math.max(...rows)`: a spread of a large holdout overflows the call stack.\n const maxAbs = (m: number, v: number) => (Number.isFinite(v) ? Math.max(m, Math.abs(v)) : m);\n const scale = ph.reduce(maxAbs, yh.reduce(maxAbs, 1e-12));\n const holdoutSupported = holdoutRmse <= holdoutTol * scale;\n return {\n prefactor,\n prefactorStderr: stderr,\n exploratoryRmse,\n nExploratory: y.length,\n holdoutRmse,\n nHoldout: yh.length,\n holdoutSupported,\n };\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"frontier.d.ts","sourceRoot":"","sources":["../../../src/composition/probe/frontier.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAMH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAC7C,OAAO,KAAK,EAAE,WAAW,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"frontier.d.ts","sourceRoot":"","sources":["../../../src/composition/probe/frontier.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAMH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAC7C,OAAO,KAAK,EAAE,WAAW,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAuB3E;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,SAAS,UAAU,EAAE,GAAG,WAAW,EAAE,CAmChF;AAED,kEAAkE;AAClE,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,SAAS,UAAU,EAAE,GAAG,WAAW,EAAE,CA2B7E;AAED,qEAAqE;AACrE,wBAAgB,cAAc,CAAC,KAAK,EAAE,SAAS,UAAU,EAAE,GAAG,WAAW,EAAE,CAwB1E;AAMD,kEAAkE;AAClE,wBAAgB,YAAY,CAAC,KAAK,EAAE,SAAS,UAAU,EAAE,GAAG,WAAW,EAAE,CAExE;AAED,6CAA6C;AAC7C,wBAAgB,eAAe,CAC7B,KAAK,EAAE,SAAS,UAAU,EAAE,EAC5B,EAAE,EAAE,MAAM,GACT,WAAW,GAAG,SAAS,CAEzB;AAED;;;;;;GAMG;AACH,wBAAgB,sBAAsB,CACpC,GAAG,EAAE,WAAW,EAChB,MAAM,EAAE,aAAa,CAAC,QAAQ,CAAC,EAC/B,SAAS,EAAE,aAAa,CAAC,WAAW,CAAC,EACrC,WAAW,CAAC,EAAE,YAAY,EAC1B,OAAO,CAAC,EAAE,YAAY,GACrB,aAAa,CA8Df"}
|
|
@@ -7,6 +7,7 @@ import { proposeLinkCandidates, proposeOrphanConnectors } from '../bridge-analys
|
|
|
7
7
|
import { predictMissingBridges } from '../bridge-prediction.js';
|
|
8
8
|
import { QUANTITY_IDENTIFICATIONS } from '../compose.js';
|
|
9
9
|
import { candidateId, candidateIdIfSlug } from '../adjudication.js';
|
|
10
|
+
import { logDesign, logDesignRank, piStructure } from './power-law.js';
|
|
10
11
|
const ALIAS_PAIRS = new Set(QUANTITY_IDENTIFICATIONS.map((id) => candidateId(id.from, id.to)));
|
|
11
12
|
/**
|
|
12
13
|
* Stable pair token. Slug pairs keep the ledger id. Other symbols are
|
|
@@ -143,32 +144,49 @@ export function problemFromResidualGap(gap, target, governing, exploratory, hold
|
|
|
143
144
|
if (gap.kind === 'relation-link' || gap.kind === 'regime-transition') {
|
|
144
145
|
throw new RangeError(`problemFromResidualGap: ${gap.kind} is not a Product B search target; use upt discover`);
|
|
145
146
|
}
|
|
147
|
+
// Identifiability is the rank of the log-design [1, log π₁, …, log πₖ] over the exploratory
|
|
148
|
+
// rows (MathTS `matrixRank`), against the k + 1 parameters of a rational power law: a
|
|
149
|
+
// prefactor and one exponent per π-group of the governing set. The row count is kept under
|
|
150
|
+
// its own name; it is not a count of independent observations (six rows with c/d = (a/b)²
|
|
151
|
+
// on every one of them carry two).
|
|
146
152
|
const nObs = exploratory?.rows.length ?? 0;
|
|
147
|
-
const
|
|
148
|
-
const
|
|
153
|
+
const { groups } = piStructure(target, governing);
|
|
154
|
+
const k = groups.length;
|
|
155
|
+
const nPar = 1 + k;
|
|
156
|
+
const design = nObs > 0 ? logDesign(groups, exploratory.rows) : { rows: [], used: 0, skipped: 0 };
|
|
157
|
+
const rank = logDesignRank(design);
|
|
158
|
+
const status = nObs === 0 ? 'unknown' : rank >= nPar ? 'identifiable' : 'partially-identifiable';
|
|
159
|
+
const parameters = k === 0 ? 'a prefactor' : `a prefactor and ${k} exponent(s)`;
|
|
160
|
+
const reasons = status === 'unknown'
|
|
161
|
+
? ['no observations: identifiability not assessed']
|
|
162
|
+
: status === 'identifiable'
|
|
163
|
+
? [`rank ${rank} of the log-design over ${design.used} usable row(s) of ${nObs}: ${parameters} identifiable`]
|
|
164
|
+
: [
|
|
165
|
+
`rank ${rank} of the log-design over ${design.used} usable row(s) of ${nObs} (${design.skipped} with a non-positive π-group), ` +
|
|
166
|
+
`against ${nPar} parameters (${parameters}): the exponents are not all identifiable; the monomial prefactor is fit on the linear scale`,
|
|
167
|
+
];
|
|
149
168
|
const enriched = {
|
|
150
169
|
...gap,
|
|
151
170
|
identifiability: {
|
|
152
171
|
kind: 'parametric',
|
|
153
172
|
parametric: {
|
|
154
|
-
status
|
|
155
|
-
rank
|
|
173
|
+
status,
|
|
174
|
+
rank,
|
|
156
175
|
nParameters: nPar,
|
|
157
|
-
nIndependentObservations:
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
: ['insufficient observations for a unique prefactor'],
|
|
176
|
+
nIndependentObservations: rank,
|
|
177
|
+
nObservations: nObs,
|
|
178
|
+
reasons,
|
|
161
179
|
},
|
|
162
180
|
},
|
|
163
181
|
searchability: {
|
|
164
|
-
searchable:
|
|
165
|
-
reasons:
|
|
166
|
-
? ['
|
|
167
|
-
:
|
|
168
|
-
? ['
|
|
169
|
-
: ['
|
|
182
|
+
searchable: true,
|
|
183
|
+
reasons: status === 'unknown'
|
|
184
|
+
? ['no data — structural generation only; status will be insufficient-evidence']
|
|
185
|
+
: status === 'identifiable'
|
|
186
|
+
? ['parametric rank sufficient for a monomial prefactor and the π-group exponents']
|
|
187
|
+
: ['the monomial prefactor is identifiable; the power-law fit abstains by itself on a rank-deficient design'],
|
|
170
188
|
},
|
|
171
|
-
status:
|
|
189
|
+
status: 'searchable',
|
|
172
190
|
};
|
|
173
191
|
return {
|
|
174
192
|
gap: enriched,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"frontier.js","sourceRoot":"","sources":["../../../src/composition/probe/frontier.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"frontier.js","sourceRoot":"","sources":["../../../src/composition/probe/frontier.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Frontier scanners — wrap Product A surfaces; residual gaps are Product B.\n *\n * @module composition/probe/frontier\n */\n\nimport { proposeLinkCandidates, proposeOrphanConnectors } from '../bridge-analysis.js';\nimport { predictMissingBridges } from '../bridge-prediction.js';\nimport { QUANTITY_IDENTIFICATIONS } from '../compose.js';\nimport { candidateId, candidateIdIfSlug } from '../adjudication.js';\nimport type { BridgeEdge } from '../edge.js';\nimport type { FrontierGap, ProbeDataset, SearchProblem } from './types.js';\nimport { logDesign, logDesignRank, piStructure } from './power-law.js';\n\nconst ALIAS_PAIRS = new Set(\n QUANTITY_IDENTIFICATIONS.map((id) => candidateId(id.from, id.to)),\n);\n\n/**\n * Stable pair token. Slug pairs keep the ledger id. Other symbols are\n * length-prefixed under `raw:` so a `~` inside a name cannot alias two\n * pairs, and the token cannot collide with a kebab `candidateId`.\n */\nfunction gapPairToken(a: string, b: string): string {\n const slug = candidateIdIfSlug(a, b);\n if (slug !== undefined) return slug;\n const [x, y] = a <= b ? [a, b] : [b, a];\n return `raw:${x.length}:${x}~${y.length}:${y}`;\n}\n\nfunction linkGapId(a: string, b: string): string {\n return `fg-link-${gapPairToken(a, b)}`;\n}\n\n/**\n * Project Product A link candidates to `relation-link` gaps.\n * Registered quantity identifications are not gaps.\n *\n * @internal\n */\nexport function wrapRelationLinkGaps(edges: readonly BridgeEdge[]): FrontierGap[] {\n const out: FrontierGap[] = [];\n for (const c of proposeLinkCandidates(edges)) {\n const slug = candidateIdIfSlug(c.a, c.b);\n if (slug !== undefined && ALIAS_PAIRS.has(slug)) continue;\n out.push({\n id: linkGapId(c.a, c.b),\n kind: 'relation-link',\n participants: [\n { kind: 'quantity-identification', id: c.a },\n { kind: 'quantity-identification', id: c.b },\n ],\n observations: [],\n regimes: [],\n assumptions: [],\n constraints: [`dim:${c.dim}`],\n evidence: {\n summary: `${c.a} ≟ ${c.b} share ${c.dim}`,\n sourceIds: ['upt candidates'],\n },\n identifiability: {\n kind: 'graph-structural',\n parametric: {\n status: 'unknown',\n reasons: ['identification gaps are Product A — use upt discover'],\n },\n },\n searchability: {\n searchable: false,\n reasons: ['relation-link gaps are reviewed by upt discover, not probe search'],\n },\n status: 'identified',\n });\n }\n return out.sort((x, y) => x.id.localeCompare(y.id));\n}\n\n/** Isolated-bridge connectors as relation-link gaps. @internal */\nexport function wrapConnectorGaps(edges: readonly BridgeEdge[]): FrontierGap[] {\n const report = proposeOrphanConnectors(edges);\n return report.connectors.map((c) => ({\n id: `fg-conn-${gapPairToken(c.orphanQuantity, c.coreQuantity)}`,\n kind: 'relation-link' as const,\n participants: [\n { kind: 'quantity-identification' as const, id: c.orphanQuantity },\n { kind: 'quantity-identification' as const, id: c.coreQuantity },\n ],\n observations: [],\n regimes: [c.orphanEdge, c.coreEdge],\n assumptions: [],\n constraints: [`dim:${c.dim}`],\n evidence: {\n summary: `orphan ${c.orphanEdge} ≟ core via ${c.orphanQuantity}~${c.coreQuantity}`,\n sourceIds: ['upt connectors'],\n },\n identifiability: {\n kind: 'graph-structural' as const,\n parametric: { status: 'unknown' as const, reasons: ['Product A connector'] },\n },\n searchability: {\n searchable: false,\n reasons: ['connectors are Product A review surfaces'],\n },\n status: 'identified' as const,\n }));\n}\n\n/** Empty (scale×force) cells as regime-transition gaps. @internal */\nexport function wrapRegimeGaps(edges: readonly BridgeEdge[]): FrontierGap[] {\n const report = predictMissingBridges(edges);\n return report.predictions.map((p, i) => ({\n id: `fg-regime-${i}-${hashSlug(p.regimeA)}-${hashSlug(p.regimeB)}`,\n kind: 'regime-transition' as const,\n participants: [],\n observations: [],\n regimes: [p.regimeA, p.regimeB],\n assumptions: [],\n constraints: [`sharedNeighbors:${p.sharedNeighbors}`],\n evidence: {\n summary: `empty regime pair ${p.regimeA} ↔ ${p.regimeB} via ${p.via.join(',')}`,\n sourceIds: ['upt predict'],\n },\n identifiability: {\n kind: 'graph-structural' as const,\n parametric: { status: 'unknown' as const, reasons: ['structural triadic closure only'] },\n },\n searchability: {\n searchable: false,\n reasons: ['regime predictions are structural hypotheses, not expression searches'],\n },\n status: 'identified' as const,\n }));\n}\n\nfunction hashSlug(s: string): string {\n return s.replace(/[^a-z0-9]+/gi, '-').replace(/^-|-$/g, '').slice(0, 40);\n}\n\n/** Combined read-only frontier (Product A wrappers). @internal */\nexport function scanFrontier(edges: readonly BridgeEdge[]): FrontierGap[] {\n return [...wrapRelationLinkGaps(edges), ...wrapConnectorGaps(edges), ...wrapRegimeGaps(edges)];\n}\n\n/** Look up a wrapped gap by id. @internal */\nexport function findFrontierGap(\n edges: readonly BridgeEdge[],\n id: string,\n): FrontierGap | undefined {\n return scanFrontier(edges).find((g) => g.id === id);\n}\n\n/**\n * Build a Product B search problem for an unexplained-observation /\n * prediction-residual gap. Relation-link and regime-transition gaps are\n * refused; the error names `upt discover`.\n *\n * @internal\n */\nexport function problemFromResidualGap(\n gap: FrontierGap,\n target: SearchProblem['target'],\n governing: SearchProblem['governing'],\n exploratory?: ProbeDataset,\n holdout?: ProbeDataset,\n): SearchProblem {\n if (gap.kind === 'relation-link' || gap.kind === 'regime-transition') {\n throw new RangeError(\n `problemFromResidualGap: ${gap.kind} is not a Product B search target; use upt discover`,\n );\n }\n // Identifiability is the rank of the log-design [1, log π₁, …, log πₖ] over the exploratory\n // rows (MathTS `matrixRank`), against the k + 1 parameters of a rational power law: a\n // prefactor and one exponent per π-group of the governing set. The row count is kept under\n // its own name; it is not a count of independent observations (six rows with c/d = (a/b)²\n // on every one of them carry two).\n const nObs = exploratory?.rows.length ?? 0;\n const { groups } = piStructure(target, governing);\n const k = groups.length;\n const nPar = 1 + k;\n const design = nObs > 0 ? logDesign(groups, exploratory!.rows) : { rows: [], used: 0, skipped: 0 };\n const rank = logDesignRank(design);\n const status: NonNullable<FrontierGap['identifiability']['parametric']>['status'] =\n nObs === 0 ? 'unknown' : rank >= nPar ? 'identifiable' : 'partially-identifiable';\n const parameters = k === 0 ? 'a prefactor' : `a prefactor and ${k} exponent(s)`;\n const reasons =\n status === 'unknown'\n ? ['no observations: identifiability not assessed']\n : status === 'identifiable'\n ? [`rank ${rank} of the log-design over ${design.used} usable row(s) of ${nObs}: ${parameters} identifiable`]\n : [\n `rank ${rank} of the log-design over ${design.used} usable row(s) of ${nObs} (${design.skipped} with a non-positive π-group), ` +\n `against ${nPar} parameters (${parameters}): the exponents are not all identifiable; the monomial prefactor is fit on the linear scale`,\n ];\n const enriched: FrontierGap = {\n ...gap,\n identifiability: {\n kind: 'parametric',\n parametric: {\n status,\n rank,\n nParameters: nPar,\n nIndependentObservations: rank,\n nObservations: nObs,\n reasons,\n },\n },\n searchability: {\n searchable: true,\n reasons:\n status === 'unknown'\n ? ['no data — structural generation only; status will be insufficient-evidence']\n : status === 'identifiable'\n ? ['parametric rank sufficient for a monomial prefactor and the π-group exponents']\n : ['the monomial prefactor is identifiable; the power-law fit abstains by itself on a rank-deficient design'],\n },\n status: 'searchable',\n };\n return {\n gap: enriched,\n target,\n governing,\n exploratory,\n holdout,\n discrepancy: gap.discrepancy,\n assumptions: gap.assumptions,\n };\n}\n"]}
|
|
@@ -8,17 +8,43 @@ import type { ExprNode } from '../../dimensional/ast-types.js';
|
|
|
8
8
|
import { type DimensionalDeterminationResult } from '../../dimensional/buckingham.js';
|
|
9
9
|
import type { DimensionalVariableRef, SearchBudget, SearchProblem } from './types.js';
|
|
10
10
|
import { type BudgetState } from './search-budget.js';
|
|
11
|
+
import { type PowerLawFit } from './power-law.js';
|
|
12
|
+
/** The power-law fit over the π-groups, re-exported beside the generator that emits it. */
|
|
13
|
+
export { powerLawDetermination, powerLawWording, rationalizeExponent } from './power-law.js';
|
|
14
|
+
/** The power-law fit's result types: the determination, one fitted exponent, and a recovered fit. */
|
|
15
|
+
export type { PowerLawDetermination, PowerLawExponent, PowerLawFit } from './power-law.js';
|
|
11
16
|
export interface RawCandidate {
|
|
12
17
|
readonly expression: ExprNode;
|
|
13
18
|
readonly monomial: Readonly<Record<string, number>> | null;
|
|
14
19
|
readonly originNote: string;
|
|
20
|
+
/** Set on a candidate the power-law fit produced: its exponents, their errors and R². */
|
|
21
|
+
readonly powerLaw?: PowerLawFit;
|
|
15
22
|
}
|
|
16
|
-
/**
|
|
23
|
+
/**
|
|
24
|
+
* Build `Π governing^exp` as an `ExprNode`: ONE product, negative exponents kept, names in
|
|
25
|
+
* code-unit order (`sort()`).
|
|
26
|
+
*
|
|
27
|
+
* This is not merged with `fromMonomial` (composition/proposed-bridges.ts), which writes a
|
|
28
|
+
* numerator over a denominator with positive exponents and orders names by `localeCompare`.
|
|
29
|
+
* The two trees differ for the same monomial (`Z·a^-0.5` against `Z/a^0.5`, and `Z` before `a`
|
|
30
|
+
* here, after it there), and both are printed (`upt probe` candidates, `upt discover --derive`
|
|
31
|
+
* proposals) and hashed, so one builder would move printed text. They share `symbolPower`, the
|
|
32
|
+
* one factor that is the same in both (tests/composition/monomial-builders.test.ts).
|
|
33
|
+
*
|
|
34
|
+
* @internal
|
|
35
|
+
*/
|
|
17
36
|
export declare function monomialToExpr(monomial: Readonly<Record<string, number>>, vars: readonly DimensionalVariableRef[]): ExprNode;
|
|
18
37
|
/**
|
|
19
38
|
* Yield dimensionally valid monomials for `problem`, honouring the budget.
|
|
20
39
|
* Invalid typed constructions are skipped (never evaluated).
|
|
21
40
|
*
|
|
41
|
+
* Two paths. The unique monomial of {@link nativeDetermination}, when there
|
|
42
|
+
* is one. Then, when the governing set leaves π-groups (the full determination
|
|
43
|
+
* is not unique) and the problem has exploratory rows, the rational power law
|
|
44
|
+
* over those groups that {@link powerLawDetermination} fits on THOSE ROWS
|
|
45
|
+
* ONLY; the holdout rows are never read here. A fit whose exponents all
|
|
46
|
+
* rationalise to 0 is the base monomial again and is kept once.
|
|
47
|
+
*
|
|
22
48
|
* @internal
|
|
23
49
|
*/
|
|
24
50
|
export declare function generateNative(problem: SearchProblem, state: BudgetState): Iterable<RawCandidate>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generator.d.ts","sourceRoot":"","sources":["../../../src/composition/probe/generator.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gCAAgC,CAAC;AAG/D,OAAO,EAA2B,KAAK,8BAA8B,EAAE,MAAM,iCAAiC,CAAC;
|
|
1
|
+
{"version":3,"file":"generator.d.ts","sourceRoot":"","sources":["../../../src/composition/probe/generator.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gCAAgC,CAAC;AAG/D,OAAO,EAA2B,KAAK,8BAA8B,EAAE,MAAM,iCAAiC,CAAC;AAG/G,OAAO,KAAK,EAAE,sBAAsB,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AACtF,OAAO,EAAoB,KAAK,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACxE,OAAO,EAAyB,KAAK,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAEzE,2FAA2F;AAC3F,OAAO,EAAE,qBAAqB,EAAE,eAAe,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AAC7F,qGAAqG;AACrG,YAAY,EAAE,qBAAqB,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAE3F,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,UAAU,EAAE,QAAQ,CAAC;IAC9B,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,GAAG,IAAI,CAAC;IAC3D,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,yFAAyF;IACzF,QAAQ,CAAC,QAAQ,CAAC,EAAE,WAAW,CAAC;CACjC;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,cAAc,CAC5B,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,EAC1C,IAAI,EAAE,SAAS,sBAAsB,EAAE,GACtC,QAAQ,CAaV;AAoCD;;;;;;;;;;;;GAYG;AACH,wBAAiB,cAAc,CAC7B,OAAO,EAAE,aAAa,EACtB,KAAK,EAAE,WAAW,GACjB,QAAQ,CAAC,YAAY,CAAC,CAmBxB;AAED;;;;;;;;GAQG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,aAAa,GAAG;IAC3D,GAAG,EAAE,8BAA8B,CAAC;IACpC,UAAU,EAAE,MAAM,EAAE,CAAC;CACtB,CAYA;AAyCD,gDAAgD;AAChD,YAAY,EAAE,YAAY,EAAE,CAAC"}
|
|
@@ -5,11 +5,27 @@
|
|
|
5
5
|
* @module composition/probe/generator
|
|
6
6
|
*/
|
|
7
7
|
import { DIMENSIONLESS } from '../../dimensional/types.js';
|
|
8
|
-
import { sym } from '../../dimensional/ast-builders.js';
|
|
8
|
+
import { sym, symbolPower } from '../../dimensional/ast-builders.js';
|
|
9
9
|
import { dimensionallyDetermines } from '../../dimensional/buckingham.js';
|
|
10
10
|
import { validate } from '../../dimensional/validator.js';
|
|
11
|
+
import { isDimensionless } from '../../dimensional/algebra.js';
|
|
11
12
|
import { canEmitCandidate } from './search-budget.js';
|
|
12
|
-
|
|
13
|
+
import { powerLawDetermination } from './power-law.js';
|
|
14
|
+
/** The power-law fit over the π-groups, re-exported beside the generator that emits it. */
|
|
15
|
+
export { powerLawDetermination, powerLawWording, rationalizeExponent } from './power-law.js';
|
|
16
|
+
/**
|
|
17
|
+
* Build `Π governing^exp` as an `ExprNode`: ONE product, negative exponents kept, names in
|
|
18
|
+
* code-unit order (`sort()`).
|
|
19
|
+
*
|
|
20
|
+
* This is not merged with `fromMonomial` (composition/proposed-bridges.ts), which writes a
|
|
21
|
+
* numerator over a denominator with positive exponents and orders names by `localeCompare`.
|
|
22
|
+
* The two trees differ for the same monomial (`Z·a^-0.5` against `Z/a^0.5`, and `Z` before `a`
|
|
23
|
+
* here, after it there), and both are printed (`upt probe` candidates, `upt discover --derive`
|
|
24
|
+
* proposals) and hashed, so one builder would move printed text. They share `symbolPower`, the
|
|
25
|
+
* one factor that is the same in both (tests/composition/monomial-builders.test.ts).
|
|
26
|
+
*
|
|
27
|
+
* @internal
|
|
28
|
+
*/
|
|
13
29
|
export function monomialToExpr(monomial, vars) {
|
|
14
30
|
const byName = new Map(vars.map((v) => [v.name, v.dim]));
|
|
15
31
|
const factors = [];
|
|
@@ -20,16 +36,7 @@ export function monomialToExpr(monomial, vars) {
|
|
|
20
36
|
const dim = byName.get(name);
|
|
21
37
|
if (!dim)
|
|
22
38
|
throw new RangeError(`monomialToExpr: unknown variable '${name}'`);
|
|
23
|
-
|
|
24
|
-
if (exp === 1)
|
|
25
|
-
factors.push(base);
|
|
26
|
-
else {
|
|
27
|
-
factors.push({
|
|
28
|
-
kind: 'op',
|
|
29
|
-
op: '^',
|
|
30
|
-
args: [base, sym(String(exp), DIMENSIONLESS)],
|
|
31
|
-
});
|
|
32
|
-
}
|
|
39
|
+
factors.push(symbolPower(sym(name, dim), exp));
|
|
33
40
|
}
|
|
34
41
|
if (factors.length === 0)
|
|
35
42
|
return sym('1', DIMENSIONLESS);
|
|
@@ -43,17 +50,10 @@ function* extraPrefactors(base) {
|
|
|
43
50
|
yield { kind: 'op', op: '*', args: [sym('2pi', DIMENSIONLESS), base] };
|
|
44
51
|
}
|
|
45
52
|
/**
|
|
46
|
-
* Yield
|
|
47
|
-
*
|
|
48
|
-
*
|
|
49
|
-
* @internal
|
|
53
|
+
* Yield `expr` and its registered prefactor variants that validate and fit the budget's
|
|
54
|
+
* depth and operator caps; `seen` keeps one copy of each construction across the paths.
|
|
50
55
|
*/
|
|
51
|
-
|
|
52
|
-
const { det } = nativeDetermination(problem);
|
|
53
|
-
if (!det.determined || !det.monomial)
|
|
54
|
-
return;
|
|
55
|
-
const expr = monomialToExpr(det.monomial, [problem.target, ...problem.governing]);
|
|
56
|
-
const seen = new Set();
|
|
56
|
+
function* emitWithPrefactors(expr, monomial, originNote, powerLaw, state, seen) {
|
|
57
57
|
for (const candidate of extraPrefactors(expr)) {
|
|
58
58
|
if (!canEmitCandidate(state))
|
|
59
59
|
return;
|
|
@@ -71,11 +71,35 @@ export function* generateNative(problem, state) {
|
|
|
71
71
|
continue;
|
|
72
72
|
seen.add(key);
|
|
73
73
|
state.candidates += 1;
|
|
74
|
-
yield {
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
74
|
+
yield { expression: candidate, monomial, originNote, ...(powerLaw ? { powerLaw } : {}) };
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* Yield dimensionally valid monomials for `problem`, honouring the budget.
|
|
79
|
+
* Invalid typed constructions are skipped (never evaluated).
|
|
80
|
+
*
|
|
81
|
+
* Two paths. The unique monomial of {@link nativeDetermination}, when there
|
|
82
|
+
* is one. Then, when the governing set leaves π-groups (the full determination
|
|
83
|
+
* is not unique) and the problem has exploratory rows, the rational power law
|
|
84
|
+
* over those groups that {@link powerLawDetermination} fits on THOSE ROWS
|
|
85
|
+
* ONLY; the holdout rows are never read here. A fit whose exponents all
|
|
86
|
+
* rationalise to 0 is the base monomial again and is kept once.
|
|
87
|
+
*
|
|
88
|
+
* @internal
|
|
89
|
+
*/
|
|
90
|
+
export function* generateNative(problem, state) {
|
|
91
|
+
const vars = [problem.target, ...problem.governing];
|
|
92
|
+
const seen = new Set();
|
|
93
|
+
const { det } = nativeDetermination(problem);
|
|
94
|
+
if (det.determined && det.monomial) {
|
|
95
|
+
yield* emitWithPrefactors(monomialToExpr(det.monomial, vars), det.monomial, det.reason, undefined, state, seen);
|
|
96
|
+
}
|
|
97
|
+
if ((problem.exploratory?.rows.length ?? 0) > 0) {
|
|
98
|
+
const pl = powerLawDetermination(problem);
|
|
99
|
+
if (pl.kind === 'fit') {
|
|
100
|
+
const note = `power-law: ${pl.exponents.map((e) => `${e.group}^(${e.rational.numerator}/${e.rational.denominator})`).join(' · ')}`;
|
|
101
|
+
yield* emitWithPrefactors(monomialToExpr(pl.monomial, vars), pl.monomial, note, pl, state, seen);
|
|
102
|
+
}
|
|
79
103
|
}
|
|
80
104
|
if (problem.baseline && problem.discrepancy) {
|
|
81
105
|
yield* generateCorrections(problem, state, seen);
|
|
@@ -94,11 +118,10 @@ export function nativeDetermination(problem) {
|
|
|
94
118
|
const det = dimensionallyDetermines(problem.target, problem.governing);
|
|
95
119
|
if (det.determined)
|
|
96
120
|
return { det, unsearched: [] };
|
|
97
|
-
const
|
|
98
|
-
const dimless = problem.governing.filter(isDimensionless);
|
|
121
|
+
const dimless = problem.governing.filter((g) => isDimensionless(g.dim));
|
|
99
122
|
if (dimless.length === 0)
|
|
100
123
|
return { det, unsearched: [] };
|
|
101
|
-
const reduced = dimensionallyDetermines(problem.target, problem.governing.filter((g) => !isDimensionless(g)));
|
|
124
|
+
const reduced = dimensionallyDetermines(problem.target, problem.governing.filter((g) => !isDimensionless(g.dim)));
|
|
102
125
|
return reduced.determined
|
|
103
126
|
? { det: reduced, unsearched: dimless.map((g) => g.name) }
|
|
104
127
|
: { det, unsearched: [] };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generator.js","sourceRoot":"","sources":["../../../src/composition/probe/generator.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"generator.js","sourceRoot":"","sources":["../../../src/composition/probe/generator.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Native bounded grammar enumerator — dimensional monomials via Buckingham-π.\n * Deterministic visit order; seed-independent.\n *\n * @module composition/probe/generator\n */\n\nimport type { ExprNode } from '../../dimensional/ast-types.js';\nimport { DIMENSIONLESS } from '../../dimensional/types.js';\nimport { sym, symbolPower } from '../../dimensional/ast-builders.js';\nimport { dimensionallyDetermines, type DimensionalDeterminationResult } from '../../dimensional/buckingham.js';\nimport { validate } from '../../dimensional/validator.js';\nimport { isDimensionless } from '../../dimensional/algebra.js';\nimport type { DimensionalVariableRef, SearchBudget, SearchProblem } from './types.js';\nimport { canEmitCandidate, type BudgetState } from './search-budget.js';\nimport { powerLawDetermination, type PowerLawFit } from './power-law.js';\n\n/** The power-law fit over the π-groups, re-exported beside the generator that emits it. */\nexport { powerLawDetermination, powerLawWording, rationalizeExponent } from './power-law.js';\n/** The power-law fit's result types: the determination, one fitted exponent, and a recovered fit. */\nexport type { PowerLawDetermination, PowerLawExponent, PowerLawFit } from './power-law.js';\n\nexport interface RawCandidate {\n readonly expression: ExprNode;\n readonly monomial: Readonly<Record<string, number>> | null;\n readonly originNote: string;\n /** Set on a candidate the power-law fit produced: its exponents, their errors and R². */\n readonly powerLaw?: PowerLawFit;\n}\n\n/**\n * Build `Π governing^exp` as an `ExprNode`: ONE product, negative exponents kept, names in\n * code-unit order (`sort()`).\n *\n * This is not merged with `fromMonomial` (composition/proposed-bridges.ts), which writes a\n * numerator over a denominator with positive exponents and orders names by `localeCompare`.\n * The two trees differ for the same monomial (`Z·a^-0.5` against `Z/a^0.5`, and `Z` before `a`\n * here, after it there), and both are printed (`upt probe` candidates, `upt discover --derive`\n * proposals) and hashed, so one builder would move printed text. They share `symbolPower`, the\n * one factor that is the same in both (tests/composition/monomial-builders.test.ts).\n *\n * @internal\n */\nexport function monomialToExpr(\n monomial: Readonly<Record<string, number>>,\n vars: readonly DimensionalVariableRef[],\n): ExprNode {\n const byName = new Map(vars.map((v) => [v.name, v.dim]));\n const factors: ExprNode[] = [];\n for (const name of Object.keys(monomial).sort()) {\n const exp = monomial[name];\n if (exp === 0) continue;\n const dim = byName.get(name);\n if (!dim) throw new RangeError(`monomialToExpr: unknown variable '${name}'`);\n factors.push(symbolPower(sym(name, dim), exp));\n }\n if (factors.length === 0) return sym('1', DIMENSIONLESS);\n if (factors.length === 1) return factors[0];\n return { kind: 'op', op: '*', args: factors };\n}\n\nfunction* extraPrefactors(base: ExprNode): Iterable<ExprNode> {\n yield base;\n // Registered `2pi` leaf (same normalForm as `base` — dimensionless constant).\n yield { kind: 'op', op: '*', args: [sym('2pi', DIMENSIONLESS), base] };\n}\n\n/**\n * Yield `expr` and its registered prefactor variants that validate and fit the budget's\n * depth and operator caps; `seen` keeps one copy of each construction across the paths.\n */\nfunction* emitWithPrefactors(\n expr: ExprNode,\n monomial: Readonly<Record<string, number>>,\n originNote: string,\n powerLaw: PowerLawFit | undefined,\n state: BudgetState,\n seen: Set<string>,\n): Iterable<RawCandidate> {\n for (const candidate of extraPrefactors(expr)) {\n if (!canEmitCandidate(state)) return;\n if (validate(candidate).ok !== true) continue;\n // Depth / operator caps\n const depth = astDepth(candidate);\n const ops = opCount(candidate);\n if (depth > state.budget.maxAstDepth) continue;\n if (ops > state.budget.maxOperators) continue;\n const key = JSON.stringify(candidate);\n if (seen.has(key)) continue;\n seen.add(key);\n state.candidates += 1;\n yield { expression: candidate, monomial, originNote, ...(powerLaw ? { powerLaw } : {}) };\n }\n}\n\n/**\n * Yield dimensionally valid monomials for `problem`, honouring the budget.\n * Invalid typed constructions are skipped (never evaluated).\n *\n * Two paths. The unique monomial of {@link nativeDetermination}, when there\n * is one. Then, when the governing set leaves π-groups (the full determination\n * is not unique) and the problem has exploratory rows, the rational power law\n * over those groups that {@link powerLawDetermination} fits on THOSE ROWS\n * ONLY; the holdout rows are never read here. A fit whose exponents all\n * rationalise to 0 is the base monomial again and is kept once.\n *\n * @internal\n */\nexport function* generateNative(\n problem: SearchProblem,\n state: BudgetState,\n): Iterable<RawCandidate> {\n const vars = [problem.target, ...problem.governing];\n const seen = new Set<string>();\n const { det } = nativeDetermination(problem);\n if (det.determined && det.monomial) {\n yield* emitWithPrefactors(monomialToExpr(det.monomial, vars), det.monomial, det.reason, undefined, state, seen);\n }\n\n if ((problem.exploratory?.rows.length ?? 0) > 0) {\n const pl = powerLawDetermination(problem);\n if (pl.kind === 'fit') {\n const note = `power-law: ${pl.exponents.map((e) => `${e.group}^(${e.rational!.numerator}/${e.rational!.denominator})`).join(' · ')}`;\n yield* emitWithPrefactors(monomialToExpr(pl.monomial, vars), pl.monomial, note, pl, state, seen);\n }\n }\n\n if (problem.baseline && problem.discrepancy) {\n yield* generateCorrections(problem, state, seen);\n }\n}\n\n/**\n * The monomial the native enumerator searches, and the dimensionless inputs it\n * leaves out (persona finding C2). A dimensionless input makes the monomial\n * non-unique, since any f(θ0) can multiply it, and the enumerator used to\n * produce nothing. When the monomial over ALL inputs is not unique, it is taken\n * from the DIMENSIONED inputs; `unsearched` names the dimensionless ones whose\n * function is not searched.\n * @internal\n */\nexport function nativeDetermination(problem: SearchProblem): {\n det: DimensionalDeterminationResult;\n unsearched: string[];\n} {\n const det = dimensionallyDetermines(problem.target, problem.governing);\n if (det.determined) return { det, unsearched: [] };\n const dimless = problem.governing.filter((g) => isDimensionless(g.dim));\n if (dimless.length === 0) return { det, unsearched: [] };\n const reduced = dimensionallyDetermines(\n problem.target,\n problem.governing.filter((g) => !isDimensionless(g.dim)),\n );\n return reduced.determined\n ? { det: reduced, unsearched: dimless.map((g) => g.name) }\n : { det, unsearched: [] };\n}\n\nfunction astDepth(node: ExprNode): number {\n if (node.kind === 'op') return 1 + Math.max(0, ...node.args.map(astDepth));\n if (node.kind === 'transcendental' || node.kind === 'abs') return 1 + astDepth(node.arg);\n return 1;\n}\n\nfunction opCount(node: ExprNode): number {\n if (node.kind === 'op') return 1 + node.args.reduce((n, a) => n + opCount(a), 0);\n return 0;\n}\n\n/**\n * Additive / relative corrections: search a monomial of the same dimension\n * as the observable to add to (or scale) the baseline.\n */\nfunction* generateCorrections(\n problem: SearchProblem,\n state: BudgetState,\n seen: Set<string>,\n): Iterable<RawCandidate> {\n const kind = problem.discrepancy!.kind;\n if (kind !== 'additive' && kind !== 'relative' && kind !== 'standardized') return;\n const { det } = nativeDetermination(problem);\n if (!det.determined || !det.monomial) return;\n if (!canEmitCandidate(state)) return;\n const corr = monomialToExpr(det.monomial, [problem.target, ...problem.governing]);\n const baseline = problem.baseline!;\n const combined: ExprNode =\n kind === 'additive'\n ? { kind: 'op', op: '+', args: [baseline, corr] }\n : { kind: 'op', op: '*', args: [baseline, { kind: 'op', op: '+', args: [sym('1', DIMENSIONLESS), corr] }] };\n if (validate(combined).ok !== true) return;\n const key = JSON.stringify(combined);\n if (seen.has(key)) return;\n seen.add(key);\n state.candidates += 1;\n yield { expression: combined, monomial: det.monomial, originNote: `correction:${kind}` };\n}\n\n/** Expose budget type for callers. @internal */\nexport type { SearchBudget };\n"]}
|
|
@@ -21,6 +21,10 @@ export { openManifest, closeManifest } from './run-manifest.js';
|
|
|
21
21
|
export { canTransition, applyStatus, statusRank, ProbeCandidateStore } from './candidate-store.js';
|
|
22
22
|
export { monomialToExpr, generateNative } from './generator.js';
|
|
23
23
|
export type { RawCandidate } from './generator.js';
|
|
24
|
+
/** The rational power law over the π-groups, and the log-design rank the frontier reads. */
|
|
25
|
+
export { powerLawDetermination, powerLawWording, rationalizeExponent, piStructure, logDesign, logDesignRank } from './power-law.js';
|
|
26
|
+
/** The power-law types: the determination, one fitted exponent, a recovered fit, the π-structure and the log-design. */
|
|
27
|
+
export type { PowerLawDetermination, PowerLawExponent, PowerLawFit, PiStructure, LogDesign } from './power-law.js';
|
|
24
28
|
export { wrapRelationLinkGaps, wrapConnectorGaps, wrapRegimeGaps, scanFrontier, findFrontierGap, problemFromResidualGap, } from './frontier.js';
|
|
25
29
|
export { expressionSearchGaps, scanWithExpressionGaps } from './expression-gaps.js';
|
|
26
30
|
export { fitPrefactor } from './fit.js';
|
|
@@ -31,22 +35,34 @@ export { compareToCorpus, corpusRelativeWording } from './corpus.js';
|
|
|
31
35
|
export type { CorpusMatch, CorpusComparisonResult } from './corpus.js';
|
|
32
36
|
export { checkDeclaredLimit, checkDeclaredLimits } from './limits.js';
|
|
33
37
|
export type { LimitCheckResult } from './limits.js';
|
|
38
|
+
/** What a declared-limit check found: held, failed, or undecided on too few evaluable rows. */
|
|
39
|
+
export type { LimitOutcome } from './limits.js';
|
|
34
40
|
export { runFalsification, DEFAULT_BATTERIES } from './falsify.js';
|
|
35
41
|
export type { FalsifyInput, FalsifyResult } from './falsify.js';
|
|
36
42
|
export { datasetFromRows, asDatasetSafe, loadDatasetFromJson, loadSplitDatasetsFromJson, loadDatasetFromCsv, loadSplitCsv, } from './dataset.js';
|
|
43
|
+
/** The strict cell reader (a finite number or a decimal string, never a coercion) and the error a dataset raises by row and column. */
|
|
44
|
+
export { readDatasetNumber, DatasetError } from './dataset.js';
|
|
37
45
|
export type { SplitFileDatasets } from './dataset.js';
|
|
38
46
|
export { suggestDiscriminatingPoint, parseDesignBounds } from './experiment-design.js';
|
|
39
47
|
export type { DesignBounds, DesignSuggestion } from './experiment-design.js';
|
|
40
48
|
export { detectMeanChangepoint, estimateScaleExponent, probeConservation, } from './structure.js';
|
|
41
49
|
export type { ChangepointInput, ChangepointResult, ScaleSymmetryInput } from './structure.js';
|
|
50
|
+
/** The scale-exponent result (slope, standard error, direct p) and the conservation verdict (slope against k·stdErr). */
|
|
51
|
+
export type { ScaleExponentResult, ConservationResult } from './structure.js';
|
|
52
|
+
/** The direct two-sided Student t tail the probes consume instead of MathTS's `2·(1 − CDF)`. */
|
|
53
|
+
export { studentTwoSidedP } from './t-tail.js';
|
|
42
54
|
export { runBackendWorker } from './backend-protocol.js';
|
|
43
55
|
export type { BackendRequest, BackendCandidate, BackendResponse } from './backend-protocol.js';
|
|
44
56
|
export { setRelationMetadata, getRelationMetadata, listRelationMetadata, clearRelationMetadata, } from './metadata.js';
|
|
45
|
-
|
|
57
|
+
/** The problem-file readers and the error a file that is not a problem file raises, naming its field. */
|
|
58
|
+
export { makeResidualGap, loadSearchProblemFromJson, searchProblemFromFile, resolveObservationsPath, parseExprJson, ProblemFileError } from './problem.js';
|
|
46
59
|
export type { ProblemFile } from './problem.js';
|
|
47
|
-
|
|
60
|
+
/** The search pipeline and the argv a Node worker is spawned with. */
|
|
61
|
+
export { runProbeSearch, nodeWorkerArgv } from './pipeline.js';
|
|
48
62
|
export type { ProbeSearchOptions, ProbeSearchResult } from './pipeline.js';
|
|
49
63
|
export { formatProbeReport, formatFrontierScan, formatFrontierGap } from './report.js';
|
|
50
64
|
export { parseStudy, loadStudyFromJson, loadStudyFile, attachReplication, studyCsvToRaw, runProbeStudy, formatProbeStudy, chiSquareSurvival, fSurvival, effectiveSigma, StudyRefusal, } from './study.js';
|
|
51
65
|
export type { ProbeStudy, ProbeStudyOptions, ProbeStudyResult, StudyVerdict, ReplicationOutcome, StudyRole, StudyProvenance, StudyObservation, StudyBaseline, SetTest, ModelTest, CandidateTest, StudyDesignSuggestion, StudyCorrection, StudyCorrectionReport, CorrectionStep, } from './study.js';
|
|
66
|
+
/** One fitted correction coefficient with its standard error and, when declared, the reference it is compared with. */
|
|
67
|
+
export type { CorrectionCoefficient } from './study.js';
|
|
52
68
|
//# sourceMappingURL=index.d.ts.map
|