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,10 +1,13 @@
|
|
|
1
1
|
import { classifyStructure, } from '../canonical/structural.js';
|
|
2
|
+
import { equalUpToConstant } from './algebraic-equivalence.js';
|
|
3
|
+
/** The step `classifyStructure` runs on a normal-form miss: equal up to a constant. */
|
|
4
|
+
const ALGEBRAIC_STEP = { equivalent: (left, right) => equalUpToConstant(left, right).equal };
|
|
2
5
|
/**
|
|
3
6
|
* Classify one composed chain. `edgeIds` stay in chain order.
|
|
4
7
|
*
|
|
5
8
|
* @internal
|
|
6
9
|
*/
|
|
7
10
|
export function matchChain(expr, edgeIds) {
|
|
8
|
-
return classifyStructure(expr, edgeIds);
|
|
11
|
+
return classifyStructure(expr, edgeIds, ALGEBRAIC_STEP);
|
|
9
12
|
}
|
|
10
13
|
//# sourceMappingURL=chain-match.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chain-match.js","sourceRoot":"","sources":["../../src/composition/chain-match.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"chain-match.js","sourceRoot":"","sources":["../../src/composition/chain-match.ts"],"names":[],"mappings":"AAcA,OAAO,EACL,iBAAiB,GAElB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAE/D,uFAAuF;AACvF,MAAM,cAAc,GAAG,EAAE,UAAU,EAAE,CAAC,IAAc,EAAE,KAAe,EAAW,EAAE,CAAC,iBAAiB,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,KAAK,EAAE,CAAC;AAE1H;;;;GAIG;AACH,MAAM,UAAU,UAAU,CAAC,IAAc,EAAE,OAA0B;IACnE,OAAO,iBAAiB,CAAC,IAAI,EAAE,OAAO,EAAE,cAAc,CAAC,CAAC;AAC1D,CAAC","sourcesContent":["/**\n * Pipeline match for a chain of proved edges.\n *\n * Calls {@link classifyStructure} with the algebraic-equivalence step\n * injected, so a chain that recovers a catalog right-hand side in another\n * spelling (`a/(b/c)` for `a·c/b`) is that confirmation and not a\n * provisional chain. A confirmation reports the catalog id. A restatement\n * reports the pre-declared canonical equation. Anything else is a\n * provisional `chain-` id. This function writes no catalog row, no\n * formal-reference overlay entry, and no evidence tag.\n *\n * @module composition/chain-match\n */\nimport type { ExprNode } from '../dimensional/validator.js';\nimport {\n classifyStructure,\n type ChainClassification,\n} from '../canonical/structural.js';\nimport { equalUpToConstant } from './algebraic-equivalence.js';\n\n/** The step `classifyStructure` runs on a normal-form miss: equal up to a constant. */\nconst ALGEBRAIC_STEP = { equivalent: (left: ExprNode, right: ExprNode): boolean => equalUpToConstant(left, right).equal };\n\n/**\n * Classify one composed chain. `edgeIds` stay in chain order.\n *\n * @internal\n */\nexport function matchChain(expr: ExprNode, edgeIds: readonly string[]): ChainClassification {\n return classifyStructure(expr, edgeIds, ALGEBRAIC_STEP);\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chain-regime.js","sourceRoot":"","sources":["../../src/composition/chain-regime.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"chain-regime.js","sourceRoot":"","sources":["../../src/composition/chain-regime.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Regime gate for a chain that meets on a quantity name.\n *\n * The domain is the §VI.6.1 component of the catalog category of `beId`,\n * derived by `tensorIndexComponent`. Scale and force are the gated axes\n * on the two junction ports. A recorded `Regime` on both edges is\n * compared with `regimeOverlap`. Silence on a facet is not a mismatch.\n * The rule is `docs/planning/Regime-Aware-Join-Gate-Design.md`.\n *\n * This module does not write the catalog and does not call `deriveEvidence`.\n *\n * @module composition/chain-regime\n */\n\nimport { BRIDGE_EQUATIONS } from '../bridges/index.js';\nimport {\n tensorIndexComponent,\n type TensorIndexComponent,\n} from '../bridges/tensor-index.js';\nimport { regimeOverlap } from '../relations/regime.js';\nimport { GATE_AXES } from './axes.js';\nimport { QUANTITY_IDENTIFICATIONS } from './compose.js';\nimport type { BridgeEdge } from './edge.js';\nimport type { Quantity } from './quantity.js';\n\n/** The class a regime-incompatible join is recorded as. @internal */\nexport const REGIME_MISMATCH_KIND = 'rejected: regime mismatch' as const;\n\n/** A join the regime gate refused. Not a stub and not a catalog write. @internal */\nexport interface ChainRegimeMismatch {\n readonly kind: typeof REGIME_MISMATCH_KIND;\n readonly edgeIds: readonly [string, string];\n readonly quantity: string;\n readonly reasons: readonly string[];\n}\n\nfunction edgeDomain(edge: BridgeEdge): TensorIndexComponent | undefined {\n if (edge.beId === null) return undefined;\n const entry = BRIDGE_EQUATIONS.find((row) => row.id === edge.beId);\n if (entry === undefined) return undefined;\n const component = tensorIndexComponent(entry.category);\n if (component === 'unassigned') return undefined;\n return component;\n}\n\nfunction junctionPorts(\n first: BridgeEdge,\n second: BridgeEdge,\n): { quantity: string; producer: Quantity; consumer: Quantity } {\n const named = second.sources.find((src) => src.name === first.target.name);\n if (named !== undefined) {\n return { quantity: first.target.name, producer: first.target, consumer: named };\n }\n for (const ident of QUANTITY_IDENTIFICATIONS) {\n if (ident.from !== first.target.name) continue;\n const src = second.sources.find((candidate) => candidate.name === ident.to);\n if (src !== undefined) {\n return { quantity: first.target.name, producer: first.target, consumer: src };\n }\n }\n throw new Error(`chain regime gate: ${first.id} -> ${second.id} has no junction`);\n}\n\n/**\n * The regime mismatch of a pair, or `undefined` when every facet abstains\n * or agrees.\n *\n * Reasons, in order: a domain clash, then each clashing `GATE_AXES` axis,\n * then `regime: disjoint`. The producer value is written first.\n *\n * @internal\n */\nexport function joinRegimeMismatch(\n first: BridgeEdge,\n second: BridgeEdge,\n): ChainRegimeMismatch | undefined {\n const { quantity, producer, consumer } = junctionPorts(first, second);\n const reasons: string[] = [];\n const producerDomain = edgeDomain(first);\n const consumerDomain = edgeDomain(second);\n if (\n producerDomain !== undefined &&\n consumerDomain !== undefined &&\n producerDomain !== consumerDomain\n ) {\n reasons.push(`domain: ${producerDomain} ≠ ${consumerDomain}`);\n }\n const producerAttrs = producer.attributes as Record<string, string | undefined>;\n const consumerAttrs = consumer.attributes as Record<string, string | undefined>;\n for (const axis of GATE_AXES) {\n const left = producerAttrs[axis];\n const right = consumerAttrs[axis];\n if (left !== undefined && right !== undefined && left !== right) {\n reasons.push(`${axis}: ${left} ≠ ${right}`);\n }\n }\n if (\n first.regime !== undefined &&\n second.regime !== undefined &&\n regimeOverlap(first.regime, second.regime) === 'disjoint'\n ) {\n reasons.push('regime: disjoint');\n }\n if (reasons.length === 0) return undefined;\n return {\n kind: REGIME_MISMATCH_KIND,\n edgeIds: [first.id, second.id],\n quantity,\n reasons,\n };\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chain-result.d.ts","sourceRoot":"","sources":["../../src/composition/chain-result.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AACtE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,mCAAmC,CAAC;AAC3E,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAC;AACrE,OAAO,
|
|
1
|
+
{"version":3,"file":"chain-result.d.ts","sourceRoot":"","sources":["../../src/composition/chain-result.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AACtE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,mCAAmC,CAAC;AAC3E,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAC;AACrE,OAAO,EAAwC,KAAK,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AACrG,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAE7D;;;;;;;;;;;GAWG;AACH,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;IACpC,QAAQ,CAAC,cAAc,EAAE,mBAAmB,CAAC;IAC7C,QAAQ,CAAC,OAAO,EAAE,sBAAsB,CAAC,SAAS,CAAC,CAAC;IACpD,QAAQ,CAAC,QAAQ,EAAE,mBAAmB,GAAG,SAAS,CAAC;IACnD,QAAQ,CAAC,mBAAmB,EAAE,iBAAiB,GAAG,SAAS,CAAC;CAC7D;AAED;;;;;;;;;GASG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,WAAW,GAAG,kBAAkB,CAIrE;AAED;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,SAAS,WAAW,EAAE,GAAG,WAAW,EAAE,CAMhF"}
|
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
*
|
|
9
9
|
* @module composition/chain-result
|
|
10
10
|
*/
|
|
11
|
-
import { compareChainEdgeIds } from './chain-candidate.js';
|
|
11
|
+
import { chainClassIndex, compareChainEdgeIds } from './chain-candidate.js';
|
|
12
12
|
/**
|
|
13
13
|
* The four-class order key of `record`.
|
|
14
14
|
*
|
|
@@ -26,18 +26,6 @@ export function chainOrderKey(record) {
|
|
|
26
26
|
return 'restatement';
|
|
27
27
|
return record.theorem === 'PhysJS.Dimensional.monomial_form' ? 'unique-monomial' : 'unfixed-shape';
|
|
28
28
|
}
|
|
29
|
-
function classIndex(kind) {
|
|
30
|
-
switch (kind) {
|
|
31
|
-
case 'confirmation':
|
|
32
|
-
return 0;
|
|
33
|
-
case 'restatement':
|
|
34
|
-
return 1;
|
|
35
|
-
case 'unique-monomial':
|
|
36
|
-
return 2;
|
|
37
|
-
case 'unfixed-shape':
|
|
38
|
-
return 3;
|
|
39
|
-
}
|
|
40
|
-
}
|
|
41
29
|
/**
|
|
42
30
|
* Total order of chain records by {@link chainOrderKey}, then by edge ids.
|
|
43
31
|
*
|
|
@@ -48,7 +36,7 @@ function classIndex(kind) {
|
|
|
48
36
|
*/
|
|
49
37
|
export function orderChainRecords(records) {
|
|
50
38
|
return [...records].sort((a, b) => {
|
|
51
|
-
const byClass =
|
|
39
|
+
const byClass = chainClassIndex(chainOrderKey(a)) - chainClassIndex(chainOrderKey(b));
|
|
52
40
|
if (byClass !== 0)
|
|
53
41
|
return byClass < 0 ? -1 : 1;
|
|
54
42
|
return compareChainEdgeIds(a.edgeIds, b.edgeIds);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chain-result.js","sourceRoot":"","sources":["../../src/composition/chain-result.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAKH,OAAO,EAAE,mBAAmB,EAA2B,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"chain-result.js","sourceRoot":"","sources":["../../src/composition/chain-result.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAKH,OAAO,EAAE,eAAe,EAAE,mBAAmB,EAA2B,MAAM,sBAAsB,CAAC;AAuBrG;;;;;;;;;GASG;AACH,MAAM,UAAU,aAAa,CAAC,MAAmB;IAC/C,IAAI,MAAM,CAAC,cAAc,CAAC,IAAI,KAAK,cAAc;QAAE,OAAO,cAAc,CAAC;IACzE,IAAI,MAAM,CAAC,cAAc,CAAC,IAAI,KAAK,aAAa;QAAE,OAAO,aAAa,CAAC;IACvE,OAAO,MAAM,CAAC,OAAO,KAAK,kCAAkC,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,eAAe,CAAC;AACrG,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,iBAAiB,CAAC,OAA+B;IAC/D,OAAO,CAAC,GAAG,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;QAChC,MAAM,OAAO,GAAG,eAAe,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,GAAG,eAAe,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC;QACtF,IAAI,OAAO,KAAK,CAAC;YAAE,OAAO,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC/C,OAAO,mBAAmB,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC;IACnD,CAAC,CAAC,CAAC;AACL,CAAC","sourcesContent":["/**\n * One internal chain record.\n *\n * The classifier kind, the order key, the filter theorem, a regime\n * mismatch, and the edge ids live on this value. {@link chainOrderKey}\n * and the pipeline's renderer are functions of it. A confirmation and a\n * restatement do not become a rejection.\n *\n * @module composition/chain-result\n */\n\nimport type { ChainClassification } from '../canonical/structural.js';\nimport type { CompositionResult } from '../relations/composition-table.js';\nimport type { BuckinghamFilterRecord } from './buckingham-filter.js';\nimport { chainClassIndex, compareChainEdgeIds, type ChainCandidateKind } from './chain-candidate.js';\nimport type { ChainRegimeMismatch } from './chain-regime.js';\n\n/**\n * The pipeline's one chain value.\n *\n * `classification` is the structural result. `theorem` is the Buckingham\n * filter's named shape, or null when the filter named none. `mismatch`\n * is set only for a provisional chain the regime gate refused.\n * `categoryComposition` is the category claim for the two steps. It is\n * unset when the edges have no stored category object ids. A recorded\n * `no-composite-claim` does not change the order key.\n *\n * @internal\n */\nexport interface ChainRecord {\n readonly edgeIds: readonly string[];\n readonly classification: ChainClassification;\n readonly theorem: BuckinghamFilterRecord['theorem'];\n readonly mismatch: ChainRegimeMismatch | undefined;\n readonly categoryComposition: CompositionResult | undefined;\n}\n\n/**\n * The four-class order key of `record`.\n *\n * A confirmation stays a confirmation. A restatement stays a restatement.\n * A provisional chain whose filter theorem is `monomial_form` is a unique\n * monomial. Every other provisional chain is an unfixed shape. A mismatch\n * does not change the key.\n *\n * @internal\n */\nexport function chainOrderKey(record: ChainRecord): ChainCandidateKind {\n if (record.classification.kind === 'confirmation') return 'confirmation';\n if (record.classification.kind === 'restatement') return 'restatement';\n return record.theorem === 'PhysJS.Dimensional.monomial_form' ? 'unique-monomial' : 'unfixed-shape';\n}\n\n/**\n * Total order of chain records by {@link chainOrderKey}, then by edge ids.\n *\n * Returns a new array. The input array is left as it was. A rejection is\n * not a class in this order.\n *\n * @internal\n */\nexport function orderChainRecords(records: readonly ChainRecord[]): ChainRecord[] {\n return [...records].sort((a, b) => {\n const byClass = chainClassIndex(chainOrderKey(a)) - chainClassIndex(chainOrderKey(b));\n if (byClass !== 0) return byClass < 0 ? -1 : 1;\n return compareChainEdgeIds(a.edgeIds, b.edgeIds);\n });\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"compose-surface.js","sourceRoot":"","sources":["../../src/composition/compose-surface.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,EAAE,qBAAqB,EAAE,MAAM,WAAW,CAAC;AAClD,OAAO,EAAE,yBAAyB,EAAE,MAAM,cAAc,CAAC"}
|
|
1
|
+
{"version":3,"file":"compose-surface.js","sourceRoot":"","sources":["../../src/composition/compose-surface.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,EAAE,qBAAqB,EAAE,MAAM,WAAW,CAAC;AAClD,OAAO,EAAE,yBAAyB,EAAE,MAAM,cAAc,CAAC","sourcesContent":["/**\n * v0.11 surface barrel for the namespacing-gate symbols (keeps\n * src/index.ts one-import-per-area while the implementations live in\n * compose.ts / edge.ts / enumerate.ts).\n *\n * @module composition/compose-surface\n */\nexport { CompositionAliasError } from './edge.js';\nexport { SOURCE_ALIAS_DISPOSITIONS } from './compose.js';\nexport type { AliasDisposition } from './compose.js';\nexport type { DispositionRequired } from './enumerate.js';\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"compose-symbolic.d.ts","sourceRoot":"","sources":["../../src/composition/compose-symbolic.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAIH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAC;AAC5D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AACzD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAC5C,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"compose-symbolic.d.ts","sourceRoot":"","sources":["../../src/composition/compose-symbolic.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAIH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAC;AAC5D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AACzD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAC5C,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAC;AAQ3D;;;;;GAKG;AACH,MAAM,WAAW,UAAU;IACzB,mDAAmD;IACnD,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,sBAAsB;IACtB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,4CAA4C;IAC5C,QAAQ,CAAC,GAAG,EAAE,SAAS,CAAC;IACxB,sCAAsC;IACtC,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;IACxB,6EAA6E;IAC7E,QAAQ,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC;IACnC;;;;;OAKG;IACH,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,GAAG,MAAM,CAAC;CAC5D;AAED;oEACoE;AACpE,qBAAa,wBAAyB,SAAQ,KAAK;IACjD,YAAY,OAAO,EAAE,MAAM,EAG1B;CACF;AAED,mDAAmD;AACnD,MAAM,WAAW,sBAAsB;IACrC,iEAAiE;IACjE,QAAQ,CAAC,eAAe,CAAC,EAAE,SAAS,sBAAsB,EAAE,CAAC;CAC9D;AAqCD;;;;;;;GAOG;AACH,wBAAgB,cAAc,CAC5B,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,MAAM,EACd,GAAG,EAAE,SAAS,EACd,IAAI,EAAE,QAAQ,GACb,UAAU,CA4BZ;AAED;;;;;;;GAOG;AACH,wBAAgB,eAAe,CAC7B,KAAK,EAAE,UAAU,EACjB,MAAM,EAAE,UAAU,EAClB,IAAI,GAAE,sBAA2B,GAChC,UAAU,CAmDZ"}
|
|
@@ -20,7 +20,8 @@ import { validate } from '../dimensional/validator.js';
|
|
|
20
20
|
import { QUANTITY_IDENTIFICATIONS } from './compose.js';
|
|
21
21
|
import { substitute } from './expr-subst.js';
|
|
22
22
|
import { evalExpr, SymbolicEvalError } from './expr-eval.js';
|
|
23
|
-
import {
|
|
23
|
+
import { isRegisteredConstant } from '../dimensional/symbolic-constants.js';
|
|
24
|
+
import { isDecimalLiteral } from '../dimensional/ast-leaves.js';
|
|
24
25
|
import { scalarSymbolsFromMathTs } from './mathts-scalar-symbols.js';
|
|
25
26
|
/** Symbolic composition is undefined (no junction / missing `symbolic` /
|
|
26
27
|
* zero-occurrence substitution / dimensional mismatch). @public */
|
|
@@ -57,7 +58,7 @@ function findJunctionName(first, second, identifications) {
|
|
|
57
58
|
function freeLeaves(expr) {
|
|
58
59
|
return scalarSymbolsFromMathTs(expr)
|
|
59
60
|
.map((leaf) => leaf.name)
|
|
60
|
-
.filter((n) => !(n
|
|
61
|
+
.filter((n) => !isRegisteredConstant(n) && !isDecimalLiteral(n))
|
|
61
62
|
.sort();
|
|
62
63
|
}
|
|
63
64
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"compose-symbolic.js","sourceRoot":"","sources":["../../src/composition/compose-symbolic.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"compose-symbolic.js","sourceRoot":"","sources":["../../src/composition/compose-symbolic.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Symbolic bridge composition (v0.12 — the Observable contract).\n *\n * Resolves the Part-IX §4 \"Observable contract\" deferral with a fourth\n * option the spec did not enumerate: an OPTIONAL `symbolic` ExprNode on a\n * bridge edge (leaves = source-quantity names + the `CONSTANTS` registry),\n * composed by AST SUBSTITUTION. `composeSymbolic(first, second)` substitutes\n * `first`'s symbolic form into the junction leaf of `second`'s, producing a\n * new ExprNode that is dimensionally validated and numerically evaluable —\n * not the black-box numeric closure `composeEdges` chains.\n *\n * Non-breaking (the field is optional), no per-pair adapters, and it retains\n * dimensional type-safety. Edges without a `symbolic` form fall back to\n * numeric `composeEdges` (unchanged).\n *\n * @module composition/compose-symbolic\n */\n\nimport { equals, format } from '../dimensional/algebra.js';\nimport { validate } from '../dimensional/validator.js';\nimport type { ExprNode } from '../dimensional/validator.js';\nimport type { Dimension } from '../dimensional/types.js';\nimport type { BridgeEdge } from './edge.js';\nimport type { QuantityIdentification } from './compose.js';\nimport { QUANTITY_IDENTIFICATIONS } from './compose.js';\nimport { substitute } from './expr-subst.js';\nimport { evalExpr, SymbolicEvalError } from './expr-eval.js';\nimport { isRegisteredConstant } from '../dimensional/symbolic-constants.js';\nimport { isDecimalLiteral } from '../dimensional/ast-leaves.js';\nimport { scalarSymbolsFromMathTs } from './mathts-scalar-symbols.js';\n\n/**\n * A composed quantity carrying its SYMBOLIC form and an executable\n * evaluator — the shared return contract Part-IX §4 said was missing.\n *\n * @public\n */\nexport interface Observable {\n /** Target quantity name (from `second.target`). */\n readonly name: string;\n /** Display symbol. */\n readonly symbol: string;\n /** Dimensionally-validated SI dimension. */\n readonly dim: Dimension;\n /** The composed (substituted) AST. */\n readonly expr: ExprNode;\n /** Free leaf symbols = the required inputs (constants/literals excluded). */\n readonly leaves: readonly string[];\n /**\n * Numerically evaluate the composed form. STRICT input (Eve EVE-1): every\n * `leaves` key must be supplied and no extra key is accepted. PURE symbolic\n * value — NOT domain-checked (unlike `composeEdges`, which throws\n * `DomainViolationError`); use `composeEdges` for domain-checked values.\n */\n evaluate(values: Readonly<Record<string, number>>): number;\n}\n\n/** Symbolic composition is undefined (no junction / missing `symbolic` /\n * zero-occurrence substitution / dimensional mismatch). @public */\nexport class SymbolicCompositionError extends Error {\n constructor(message: string) {\n super(message);\n this.name = 'SymbolicCompositionError';\n }\n}\n\n/** Options for {@link composeSymbolic}. @public */\nexport interface ComposeSymbolicOptions {\n /** Extra identifications consulted after the registered ones. */\n readonly identifications?: readonly QuantityIdentification[];\n}\n\n/** Find the junction source of `second` matching `first.target` (by name or\n * identification). Returns the source whose NAME is the substitution leaf —\n * `junction.name` is correct in BOTH the name-match and identification cases\n * (Eve EVE-4), avoiding the always-`ident.to` trap. */\nfunction findJunctionName(\n first: BridgeEdge,\n second: BridgeEdge,\n identifications: readonly QuantityIdentification[],\n): string {\n for (const src of second.sources) {\n if (src.name === first.target.name) return src.name;\n }\n for (const ident of identifications) {\n if (ident.from !== first.target.name) continue;\n for (const src of second.sources) {\n if (src.name === ident.to) return src.name;\n }\n }\n throw new SymbolicCompositionError(\n `Cannot symbolically compose ${first.id} -> ${second.id}: target ` +\n `'${first.target.name}' matches none of [${second.sources\n .map((s) => `'${s.name}'`)\n .join(', ')}] by name or registered identification.`,\n );\n}\n\n/** Free leaves = symbols that are neither registered constants nor numeric\n * literals (those are not inputs). The names are the MathTS symbol filter. */\nfunction freeLeaves(expr: ExprNode): string[] {\n return scalarSymbolsFromMathTs(expr)\n .map((leaf) => leaf.name)\n .filter((n) => !isRegisteredConstant(n) && !isDecimalLiteral(n))\n .sort();\n}\n\n/**\n * Build an {@link Observable} from a composed/simplified expression: computes\n * the free `leaves` and a STRICT `evaluate` closure over THIS `expr` + leaves.\n * Shared by `composeSymbolic` and `simplifyObservable` so a simplified\n * Observable gets a fresh closure (never the stale unsimplified one).\n *\n * @internal\n */\nexport function makeObservable(\n name: string,\n symbol: string,\n dim: Dimension,\n expr: ExprNode,\n): Observable {\n const leaves = freeLeaves(expr);\n return {\n name,\n symbol,\n dim,\n expr,\n leaves,\n evaluate(values) {\n for (const leaf of leaves) {\n if (!Object.prototype.hasOwnProperty.call(values, leaf)) {\n throw new SymbolicEvalError(\n `Observable(${name}).evaluate: missing required input '${leaf}' ` +\n `(leaves: ${leaves.join(', ')}).`,\n );\n }\n }\n for (const key of Object.keys(values)) {\n if (!leaves.includes(key)) {\n throw new SymbolicEvalError(\n `Observable(${name}).evaluate: unexpected input '${key}' (this ` +\n `Observable's inputs are exactly: ${leaves.join(', ') || '(none)'}).`,\n );\n }\n }\n return evalExpr(expr, values);\n },\n };\n}\n\n/**\n * Compose two bridges SYMBOLICALLY: substitute `first`'s `symbolic` form into\n * the junction leaf of `second`'s, validate the composed AST's dimension, and\n * return an {@link Observable}. Both operands must carry a `symbolic` form\n * (else throws — fall back to `composeEdges` for numeric-only composition).\n *\n * @public\n */\nexport function composeSymbolic(\n first: BridgeEdge,\n second: BridgeEdge,\n opts: ComposeSymbolicOptions = {},\n): Observable {\n const identifications = [\n ...QUANTITY_IDENTIFICATIONS,\n ...(opts.identifications ?? []),\n ];\n\n if (!first.symbolic || !second.symbolic) {\n const missing = !first.symbolic ? first.id : second.id;\n throw new SymbolicCompositionError(\n `Cannot symbolically compose ${first.id} -> ${second.id}: edge ` +\n `'${missing}' has no symbolic form (numeric-only edge — use ` +\n `composeEdges).`,\n );\n }\n\n const junctionName = findJunctionName(first, second, identifications);\n const { expr, count } = substitute(\n second.symbolic,\n junctionName,\n first.symbolic,\n );\n\n if (count === 0) {\n throw new SymbolicCompositionError(\n `Cannot symbolically compose ${first.id} -> ${second.id}: junction ` +\n `'${junctionName}' does not appear as a leaf of ${second.id}'s ` +\n `symbolic form — substitution would silently ignore ${first.id}.`,\n );\n }\n\n const v = validate(expr);\n if (!v.ok || v.inferredDimension === null) {\n throw new SymbolicCompositionError(\n `Composed symbolic form of ${first.id} -> ${second.id} failed ` +\n `dimensional validation: ${v.violations[0]?.note ?? 'not homogeneous'}.`,\n );\n }\n if (!equals(v.inferredDimension, second.target.dim)) {\n throw new SymbolicCompositionError(\n `Composed symbolic form of ${first.id} -> ${second.id} has dimension ` +\n `${format(v.inferredDimension)} but ${second.target.name} is ` +\n `${format(second.target.dim)}.`,\n );\n }\n\n return makeObservable(\n second.target.name,\n second.target.symbol,\n second.target.dim,\n expr,\n );\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"compose.d.ts","sourceRoot":"","sources":["../../src/composition/compose.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AAGH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"compose.d.ts","sourceRoot":"","sources":["../../src/composition/compose.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AAGH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AAGzD,OAAO,KAAK,EAAE,UAAU,EAAE,cAAc,EAAkB,MAAM,WAAW,CAAC;AAC5E,OAAO,KAAK,EAAY,gBAAgB,EAAE,MAAM,eAAe,CAAC;AA0DhE;;;;;;GAMG;AACH,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED;;;;;GAKG;AACH,eAAO,MAAM,wBAAwB,EAAE,SAAS,sBAAsB,EA0CrE,CAAC;AAEF;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,mBAAmB,CACjC,IAAI,EAAE,MAAM,EACZ,gBAAgB,EAAE,WAAW,CAAC,MAAM,EAAE,gBAAgB,CAAC,EACvD,MAAM,GAAE,SAAS,sBAAsB,EAA6B,GACnE,gBAAgB,CAuBlB;AAED;;;;;;;;;;GAUG;AACH,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,EAAE,QAAQ,GAAG;QAAE,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAA;KAAE,CAAC;IAC/D,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED;;;;;;GAMG;AACH,eAAO,MAAM,yBAAyB,EAAE,QAAQ,CAC9C,MAAM,CAAC,MAAM,EAAE,SAAS,gBAAgB,EAAE,CAAC,CAU5C,CAAC;AAQF;;;;;GAKG;AACH,wBAAgB,aAAa,CAC3B,CAAC,EAAE,cAAc,EACjB,CAAC,EAAE,cAAc,GAChB,cAAc,CAEhB;AAED,gDAAgD;AAChD,MAAM,WAAW,cAAc;IAC7B,kEAAkE;IAClE,QAAQ,CAAC,eAAe,CAAC,EAAE,SAAS,sBAAsB,EAAE,CAAC;IAC7D;;;;OAIG;IACH,QAAQ,CAAC,OAAO,CAAC,EAAE,SAAS,gBAAgB,EAAE,CAAC;CAChD;AAiCD;;;;;;;;GAQG;AACH,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,GAAG,OAAO,CAElF;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,YAAY,CAC1B,KAAK,EAAE,UAAU,EACjB,MAAM,EAAE,UAAU,EAClB,IAAI,GAAE,cAAmB,GACxB,UAAU,CA6NZ"}
|
|
@@ -30,14 +30,20 @@
|
|
|
30
30
|
* @module composition/compose
|
|
31
31
|
*/
|
|
32
32
|
import { equals, format } from '../dimensional/algebra.js';
|
|
33
|
+
import { validate } from '../dimensional/validator.js';
|
|
34
|
+
import { regimeAttributesOf } from './quantity.js';
|
|
35
|
+
import { AXES } from './axes.js';
|
|
33
36
|
import { conventionFactor } from '../dimensional/unit-convention.js';
|
|
34
|
-
import { CompositionAliasError, CompositionDimensionError, CompositionJunctionError, UndefinedCompositionError, } from './edge.js';
|
|
37
|
+
import { assertCoefficientSet, CompositionAliasError, CompositionDimensionError, CompositionJunctionError, UndefinedCompositionError, } from './edge.js';
|
|
35
38
|
import { DomainViolationError } from '../bridges/evaluation-errors.js';
|
|
39
|
+
import { substitute } from './expr-subst.js';
|
|
40
|
+
import { monomialExponents } from './formula-shape.js';
|
|
36
41
|
// Atlas Phase 1 overlay. The composition table is a leaf module (pure, no
|
|
37
42
|
// registry reads, no import from `src/composition/`), so this does not close a
|
|
38
43
|
// cycle — same rule as the type-only atlas import in `./edge.ts`.
|
|
39
44
|
import { composeRelation, NO_COMPOSITE_CLAIM } from '../relations/composition-table.js';
|
|
40
45
|
import { checkConventions } from '../relations/conventions.js';
|
|
46
|
+
import { intersectRegimes } from '../relations/regime.js';
|
|
41
47
|
/**
|
|
42
48
|
* The `RelationContract` a composed edge carries, given the composite TYPE the
|
|
43
49
|
* table returned and the two operand contracts.
|
|
@@ -145,20 +151,18 @@ export function effectiveAttributes(name, attributesByName, idents = QUANTITY_ID
|
|
|
145
151
|
if (folded)
|
|
146
152
|
contributors.push(folded);
|
|
147
153
|
}
|
|
148
|
-
// One-value-agrees, zero-or-conflicting-values-abstain, per axis.
|
|
149
|
-
//
|
|
150
|
-
//
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
const
|
|
154
|
-
const
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
result.information = [...infos][0];
|
|
161
|
-
return result;
|
|
154
|
+
// One-value-agrees, zero-or-conflicting-values-abstain, per REGISTRY axis.
|
|
155
|
+
// The fold reads `AXES`, so an axis the registry carries is folded here: a
|
|
156
|
+
// hand list once named scale, force and information only, and the
|
|
157
|
+
// discrimination audit then measured symmetry, topology and statistics as
|
|
158
|
+
// `checked: 0` whatever the data said (9.0.0 audit §4 C2).
|
|
159
|
+
const folded = {};
|
|
160
|
+
for (const { name } of AXES) {
|
|
161
|
+
const values = new Set(contributors.map((c) => c[name]).filter((v) => v !== undefined));
|
|
162
|
+
if (values.size === 1)
|
|
163
|
+
folded[name] = [...values][0];
|
|
164
|
+
}
|
|
165
|
+
return regimeAttributesOf(folded, `effectiveAttributes(${name})`);
|
|
162
166
|
}
|
|
163
167
|
/**
|
|
164
168
|
* Registered alias dispositions, keyed by composed id
|
|
@@ -168,18 +172,14 @@ export function effectiveAttributes(name, attributesByName, idents = QUANTITY_ID
|
|
|
168
172
|
* @public
|
|
169
173
|
*/
|
|
170
174
|
export const SOURCE_ALIAS_DISPOSITIONS = {
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
'the source of the Schwarzschild radius the photon grazes — ' +
|
|
180
|
-
'the sharing IS the stress-test physics (ST-2).',
|
|
181
|
-
},
|
|
182
|
-
],
|
|
175
|
+
// Empty. The one entry this table held, `law-schwarzschild-radius>>be-51`
|
|
176
|
+
// ("ST-2": one M is both the lens and the r_s source), keyed a composition
|
|
177
|
+
// no call can reach: the law's target `schwarzschild-radius` matches none
|
|
178
|
+
// of be-51's sources (`mass`, `impact-parameter`) by name or registered
|
|
179
|
+
// identification, so `composeEdges` throws `CompositionJunctionError`
|
|
180
|
+
// before the alias gate runs. The judgment was never applied. Retracted in
|
|
181
|
+
// the 9.0.0 audit (§4 C8); `tests/composition/compose.test.ts` now requires
|
|
182
|
+
// every key here to reach the gate.
|
|
183
183
|
};
|
|
184
184
|
const CONFIDENCE_RANK = {
|
|
185
185
|
established: 2,
|
|
@@ -196,17 +196,17 @@ export function minConfidence(a, b) {
|
|
|
196
196
|
return CONFIDENCE_RANK[a] <= CONFIDENCE_RANK[b] ? a : b;
|
|
197
197
|
}
|
|
198
198
|
function findJunction(first, second, identifications) {
|
|
199
|
-
for (const src of second.sources) {
|
|
199
|
+
for (const [index, src] of second.sources.entries()) {
|
|
200
200
|
if (src.name === first.target.name) {
|
|
201
|
-
return { junction: src, viaIdentification: null };
|
|
201
|
+
return { junction: src, index, viaIdentification: null };
|
|
202
202
|
}
|
|
203
203
|
}
|
|
204
204
|
for (const ident of identifications) {
|
|
205
205
|
if (ident.from !== first.target.name)
|
|
206
206
|
continue;
|
|
207
|
-
for (const src of second.sources) {
|
|
207
|
+
for (const [index, src] of second.sources.entries()) {
|
|
208
208
|
if (src.name === ident.to) {
|
|
209
|
-
return { junction: src, viaIdentification: ident };
|
|
209
|
+
return { junction: src, index, viaIdentification: ident };
|
|
210
210
|
}
|
|
211
211
|
}
|
|
212
212
|
}
|
|
@@ -243,7 +243,7 @@ export function composeEdges(first, second, opts = {}) {
|
|
|
243
243
|
...QUANTITY_IDENTIFICATIONS,
|
|
244
244
|
...(opts.identifications ?? []),
|
|
245
245
|
];
|
|
246
|
-
const { junction, viaIdentification } = findJunction(first, second, identifications);
|
|
246
|
+
const { junction, index: junctionIndex, viaIdentification } = findJunction(first, second, identifications);
|
|
247
247
|
if (!junctionDimensionsMatch(first.target.dim, junction.dim)) {
|
|
248
248
|
throw new CompositionDimensionError(`Cannot compose ${first.id} -> ${second.id}: junction dimension ` +
|
|
249
249
|
`mismatch — ${first.target.name} is ${format(first.target.dim)} ` +
|
|
@@ -252,7 +252,10 @@ export function composeEdges(first, second, opts = {}) {
|
|
|
252
252
|
const junctionScale = viaIdentification === null
|
|
253
253
|
? 1
|
|
254
254
|
: conventionFactor(first.target.name, junction.name);
|
|
255
|
-
|
|
255
|
+
// The pipe fills ONE slot of `second.sources`, the one `findJunction`
|
|
256
|
+
// returned. Removal by object identity would also drop a second slot that
|
|
257
|
+
// holds the same `Quantity` object, which a `shared` disposition produces.
|
|
258
|
+
const remainingSources = second.sources.filter((_, i) => i !== junctionIndex);
|
|
256
259
|
// v0.11 Option D (namespacing gate): pure name-collision rule across
|
|
257
260
|
// operands. Intra-operand duplicates (e.g. ['mass','mass'] inherited
|
|
258
261
|
// from a prior 'shared' disposition) are exempt by construction —
|
|
@@ -307,6 +310,10 @@ export function composeEdges(first, second, opts = {}) {
|
|
|
307
310
|
si[junction.name] = intermediate * junctionScale;
|
|
308
311
|
return si;
|
|
309
312
|
};
|
|
313
|
+
const id = `${first.id}>>${second.id}`;
|
|
314
|
+
// A name `second` reads under a renamed key reads it under that key here.
|
|
315
|
+
const secondKeyOf = (keyOf) => (name) => keyOf(Object.entries(renameMap).find(([, original]) => original === name)?.[0] ?? name);
|
|
316
|
+
const pipedContext = `on ${second.id}, with ${junction.name} piped from ${first.id}`;
|
|
310
317
|
const composedDomain = {
|
|
311
318
|
description: `(${first.domain.description}) AND, on the piped ` +
|
|
312
319
|
`${junction.name}, (${second.domain.description})`,
|
|
@@ -321,14 +328,19 @@ export function composeEdges(first, second, opts = {}) {
|
|
|
321
328
|
const intermediate = first.evaluate(inputs);
|
|
322
329
|
return second.domain.predicate(buildSecondInputs(inputs, intermediate));
|
|
323
330
|
},
|
|
331
|
+
violations: (inputs, keyOf = (name) => name) => {
|
|
332
|
+
const before = first.domain.violations(inputs, keyOf);
|
|
333
|
+
if (before.length > 0)
|
|
334
|
+
return before;
|
|
335
|
+
const piped = buildSecondInputs(inputs, first.evaluate(inputs));
|
|
336
|
+
return second.domain.violations(piped, secondKeyOf(keyOf));
|
|
337
|
+
},
|
|
324
338
|
};
|
|
325
|
-
const id = `${first.id}>>${second.id}`;
|
|
326
339
|
// ── Atlas Phase 1 (S1.2b): the relation overlay, and NOTHING else. ────────
|
|
327
340
|
// Entered only when BOTH operands carry a `relation`. An operand with no
|
|
328
341
|
// relation skips this block, and the composed edge then has no `relation`
|
|
329
|
-
// key.
|
|
330
|
-
//
|
|
331
|
-
// `be-51`, `be-52`, `be-55`, and `be-59` (`derivation`). Those nine stay.
|
|
342
|
+
// key. The catalog edges that carry one are the catalog's `relation` rows
|
|
343
|
+
// (`tests/composition/relation-refusal.test.ts` lists them); they stay.
|
|
332
344
|
// When both operands carry a relation, a silent table cell throws
|
|
333
345
|
// `UndefinedCompositionError`. The approximation cell throws the same
|
|
334
346
|
// error, because an edge relation carries no norm transport and this
|
|
@@ -387,15 +399,18 @@ export function composeEdges(first, second, opts = {}) {
|
|
|
387
399
|
domain: composedDomain,
|
|
388
400
|
evaluate: (inputs) => {
|
|
389
401
|
if (!first.domain.predicate(inputs)) {
|
|
390
|
-
throw new DomainViolationError(
|
|
391
|
-
`(${composedDomain.description})`);
|
|
402
|
+
throw new DomainViolationError(id, first.domain.violations(inputs), `on ${first.id}`);
|
|
392
403
|
}
|
|
404
|
+
// Each operand's unset-coefficient gate is the one `evaluateEdge`
|
|
405
|
+
// applies to a primitive edge; an operand's monomial times an absent 1
|
|
406
|
+
// must not reach the caller as a number through the pipe.
|
|
407
|
+
assertCoefficientSet(first, inputs);
|
|
393
408
|
const intermediate = first.evaluate(inputs);
|
|
394
409
|
const pipedInputs = buildSecondInputs(inputs, intermediate);
|
|
395
410
|
if (!second.domain.predicate(pipedInputs)) {
|
|
396
|
-
throw new DomainViolationError(
|
|
397
|
-
`(${composedDomain.description})`);
|
|
411
|
+
throw new DomainViolationError(id, second.domain.violations(pipedInputs, secondKeyOf((name) => name)), pipedContext);
|
|
398
412
|
}
|
|
413
|
+
assertCoefficientSet(second, pipedInputs);
|
|
399
414
|
return second.evaluate(pipedInputs);
|
|
400
415
|
},
|
|
401
416
|
citation: `${first.citation} | ${second.citation}`,
|
|
@@ -406,6 +421,116 @@ export function composeEdges(first, second, opts = {}) {
|
|
|
406
421
|
? { aliasDispositionsUsed: dispositionsUsed }
|
|
407
422
|
: {}),
|
|
408
423
|
...relationOverlay,
|
|
424
|
+
...carriedClaims(first, second, junction, junctionScale, finalRemaining, renameMap),
|
|
425
|
+
};
|
|
426
|
+
}
|
|
427
|
+
/**
|
|
428
|
+
* The claims a composed edge carries from its operands (9.0.0 audit §4 C5).
|
|
429
|
+
* A composed edge that dropped them answered differently from its operands:
|
|
430
|
+
* the regime gate abstained on every chain longer than two, an unset
|
|
431
|
+
* coefficient became a number, an even input lost its magnitude reading,
|
|
432
|
+
* a count became a Buckingham governor, and an alias key stopped working.
|
|
433
|
+
*
|
|
434
|
+
* - `regime`: the one an operand states; two of one family intersect
|
|
435
|
+
* (`intersectRegimes`, which also refuses conflicting group definitions);
|
|
436
|
+
* two of different families refuse with `UndefinedCompositionError`, since
|
|
437
|
+
* this layer does not state where a cross-family chain applies.
|
|
438
|
+
* - `coefficientUnset`: either operand's. `evaluateEdge` then refuses the
|
|
439
|
+
* composite; a bound group lifts a primitive entry only, because the group
|
|
440
|
+
* row is keyed by the entry id, so a composite with an unset operand is
|
|
441
|
+
* refused by `evaluateEdge` whatever is bound (its own `evaluate` applies
|
|
442
|
+
* each operand's gate and does lift the operand whose group is bound).
|
|
443
|
+
* - `evenInputs`, `aliases`: the first operand's, plus the second's for its
|
|
444
|
+
* remaining sources under their composed names. The piped junction is not
|
|
445
|
+
* an input and is dropped. An alias key that two quantities would share is
|
|
446
|
+
* carried for neither.
|
|
447
|
+
* - `formulaFactors`: the second operand's for its remaining sources, exact.
|
|
448
|
+
* The first operand's counts enter through the pipe with their exponent
|
|
449
|
+
* times the junction's exponent in the second's monomial, so they are
|
|
450
|
+
* carried only when `second.symbolic` is a monomial that states it.
|
|
451
|
+
* - `symbolic`: the second's form with the junction leaf replaced by the
|
|
452
|
+
* first's, when both exist, the junction carries no convention factor, no
|
|
453
|
+
* source was renamed, the leaf occurs, and the result validates to the
|
|
454
|
+
* target dimension. Otherwise absent, as on a numeric-only edge.
|
|
455
|
+
*/
|
|
456
|
+
function carriedClaims(first, second, junction, junctionScale, finalRemaining, renameMap) {
|
|
457
|
+
const out = {};
|
|
458
|
+
if (first.regime !== undefined && second.regime !== undefined) {
|
|
459
|
+
if (first.regime.family !== second.regime.family) {
|
|
460
|
+
throw new UndefinedCompositionError(`Cannot compose ${first.id} -> ${second.id}: the regimes are of different ` +
|
|
461
|
+
`families ('${first.regime.family}', '${second.regime.family}'), and this ` +
|
|
462
|
+
`layer does not state where a cross-family chain applies.`);
|
|
463
|
+
}
|
|
464
|
+
try {
|
|
465
|
+
out.regime = intersectRegimes(first.regime, second.regime);
|
|
466
|
+
}
|
|
467
|
+
catch (e) {
|
|
468
|
+
// Conflicting definitions of one group name: the composite has no regime this
|
|
469
|
+
// layer can state, the same refusal as a cross-family chain.
|
|
470
|
+
throw new UndefinedCompositionError(`Cannot compose ${first.id} -> ${second.id}: ${e.message}`);
|
|
471
|
+
}
|
|
472
|
+
}
|
|
473
|
+
else if (first.regime !== undefined || second.regime !== undefined) {
|
|
474
|
+
out.regime = first.regime ?? second.regime;
|
|
475
|
+
}
|
|
476
|
+
if (first.coefficientUnset === true || second.coefficientUnset === true)
|
|
477
|
+
out.coefficientUnset = true;
|
|
478
|
+
// Operand-internal name → the name the composite exposes it under.
|
|
479
|
+
const composedName = new Map(Object.entries(renameMap).map(([renamed, original]) => [original, renamed]));
|
|
480
|
+
const exposed = (name) => composedName.get(name) ?? name;
|
|
481
|
+
const remainingNames = new Set(finalRemaining.map((s) => s.name));
|
|
482
|
+
const secondRemaining = (name) => name !== junction.name && remainingNames.has(exposed(name));
|
|
483
|
+
const even = [
|
|
484
|
+
...(first.evenInputs ?? []),
|
|
485
|
+
...(second.evenInputs ?? []).filter(secondRemaining).map(exposed),
|
|
486
|
+
];
|
|
487
|
+
if (even.length > 0)
|
|
488
|
+
out.evenInputs = even;
|
|
489
|
+
const factors = {};
|
|
490
|
+
const junctionExponent = monomialExponents(second.symbolic)?.get(junction.name);
|
|
491
|
+
if (first.formulaFactors !== undefined && junctionExponent !== undefined) {
|
|
492
|
+
for (const [name, exp] of Object.entries(first.formulaFactors))
|
|
493
|
+
factors[name] = exp * junctionExponent;
|
|
494
|
+
}
|
|
495
|
+
for (const [name, exp] of Object.entries(second.formulaFactors ?? {})) {
|
|
496
|
+
if (secondRemaining(name))
|
|
497
|
+
factors[exposed(name)] = exp;
|
|
498
|
+
}
|
|
499
|
+
if (Object.keys(factors).length > 0)
|
|
500
|
+
out.formulaFactors = factors;
|
|
501
|
+
const aliasOwner = new Map();
|
|
502
|
+
const shared = new Set();
|
|
503
|
+
const aliases = {};
|
|
504
|
+
const addAliases = (quantity, keys) => {
|
|
505
|
+
for (const key of keys) {
|
|
506
|
+
const owner = aliasOwner.get(key);
|
|
507
|
+
if (owner !== undefined && owner !== quantity)
|
|
508
|
+
shared.add(key);
|
|
509
|
+
aliasOwner.set(key, quantity);
|
|
510
|
+
(aliases[quantity] ??= []).push(key);
|
|
511
|
+
}
|
|
409
512
|
};
|
|
513
|
+
for (const [quantity, keys] of Object.entries(first.aliases ?? {}))
|
|
514
|
+
addAliases(quantity, keys);
|
|
515
|
+
for (const [quantity, keys] of Object.entries(second.aliases ?? {})) {
|
|
516
|
+
if (secondRemaining(quantity))
|
|
517
|
+
addAliases(exposed(quantity), keys);
|
|
518
|
+
}
|
|
519
|
+
const kept = Object.fromEntries(Object.entries(aliases)
|
|
520
|
+
.map(([quantity, keys]) => [quantity, keys.filter((k) => !shared.has(k))])
|
|
521
|
+
.filter(([, keys]) => keys.length > 0));
|
|
522
|
+
if (Object.keys(kept).length > 0)
|
|
523
|
+
out.aliases = kept;
|
|
524
|
+
if (first.symbolic !== undefined &&
|
|
525
|
+
second.symbolic !== undefined &&
|
|
526
|
+
junctionScale === 1 &&
|
|
527
|
+
Object.keys(renameMap).length === 0) {
|
|
528
|
+
const { expr, count } = substitute(second.symbolic, junction.name, first.symbolic);
|
|
529
|
+
const v = count > 0 ? validate(expr) : undefined;
|
|
530
|
+
if (v !== undefined && v.ok && v.inferredDimension !== null && equals(v.inferredDimension, second.target.dim)) {
|
|
531
|
+
out.symbolic = expr;
|
|
532
|
+
}
|
|
533
|
+
}
|
|
534
|
+
return out;
|
|
410
535
|
}
|
|
411
536
|
//# sourceMappingURL=compose.js.map
|