universal-physics-tensor 10.0.0 → 12.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 +39 -36
- package/bin/upt.mjs +13 -1
- package/data/applied-cases.json +1892 -0
- package/data/applied-cases.schema.json +194 -0
- package/data/atlas/atlas.json +25 -25
- package/data/atlas/atlas.jsonld +1 -1
- package/data/atlas/diffusion.json +6 -6
- package/data/atlas/oscillators.json +7 -7
- package/data/atlas/waves.json +14 -14
- package/data/atlas/witness-results.json +11 -11
- package/data/bridge-catalog.json +389 -230
- package/data/bridge-catalog.schema.json +45 -7
- package/data/units.json +6 -25
- package/dist/atlas/applicability.d.ts.map +1 -1
- package/dist/atlas/applicability.js +21 -15
- package/dist/atlas/applicability.js.map +1 -1
- package/dist/atlas/benchmark/hybrid-retrieval.d.ts +9 -1
- package/dist/atlas/benchmark/hybrid-retrieval.d.ts.map +1 -1
- package/dist/atlas/benchmark/hybrid-retrieval.js +15 -13
- package/dist/atlas/benchmark/hybrid-retrieval.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/stats.d.ts +2 -2
- package/dist/atlas/benchmark/stats.d.ts.map +1 -1
- package/dist/atlas/benchmark/stats.js +9 -15
- package/dist/atlas/benchmark/stats.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.map +1 -1
- package/dist/atlas/chain-pipeline.js +7 -8
- package/dist/atlas/chain-pipeline.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 -12
- 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 -39
- 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/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/link-prediction.d.ts +106 -3
- 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/oscillators/bridges-coarse.d.ts.map +1 -1
- package/dist/atlas/oscillators/bridges-coarse.js +7 -11
- 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 -7
- 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 -34
- 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/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/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-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/physjs-entries.generated.d.ts +35 -25
- package/dist/atlas/physjs-entries.generated.d.ts.map +1 -1
- package/dist/atlas/physjs-entries.generated.js +37 -25
- package/dist/atlas/physjs-entries.generated.js.map +1 -1
- package/dist/atlas/physjs-ref.d.ts +34 -31
- package/dist/atlas/physjs-ref.d.ts.map +1 -1
- package/dist/atlas/physjs-ref.js +55 -53
- package/dist/atlas/physjs-ref.js.map +1 -1
- package/dist/atlas/physjs-reviewed.d.ts +1 -1
- package/dist/atlas/physjs-reviewed.js +15 -15
- package/dist/atlas/physjs-reviewed.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/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/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/waves/bridges-closure.d.ts.map +1 -1
- package/dist/atlas/waves/bridges-closure.js +2 -6
- 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 -48
- package/dist/atlas/waves/bridges.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-numeric.d.ts +30 -0
- package/dist/atlas/witness-numeric.d.ts.map +1 -1
- package/dist/atlas/witness-numeric.js +53 -0
- package/dist/atlas/witness-numeric.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/bridges/catalog-load.d.ts.map +1 -1
- package/dist/bridges/catalog-load.js +13 -8
- package/dist/bridges/catalog-load.js.map +1 -1
- package/dist/bridges/catalog-types.d.ts +26 -2
- 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/evaluation-errors.d.ts +31 -1
- package/dist/bridges/evaluation-errors.d.ts.map +1 -1
- package/dist/bridges/evaluation-errors.js +20 -2
- package/dist/bridges/evaluation-errors.js.map +1 -1
- package/dist/bridges/evaluator-inputs.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.map +1 -1
- package/dist/bridges/evaluators.js +27 -12
- package/dist/bridges/evaluators.js.map +1 -1
- package/dist/bridges/expr-parse.d.ts +11 -0
- package/dist/bridges/expr-parse.d.ts.map +1 -1
- package/dist/bridges/expr-parse.js +14 -5
- package/dist/bridges/expr-parse.js.map +1 -1
- package/dist/bridges/holds.d.ts +35 -3
- package/dist/bridges/holds.d.ts.map +1 -1
- package/dist/bridges/holds.js +117 -23
- package/dist/bridges/holds.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/relation-eval.d.ts +4 -4
- package/dist/bridges/relation-eval.d.ts.map +1 -1
- package/dist/bridges/relation-eval.js +15 -16
- package/dist/bridges/relation-eval.js.map +1 -1
- package/dist/bridges/sensitivity.d.ts.map +1 -1
- package/dist/bridges/sensitivity.js +3 -3
- package/dist/bridges/sensitivity.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/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 +4 -5
- 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 +3 -4
- 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 +4 -10
- 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 +9 -17
- 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/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.map +1 -1
- package/dist/canonical/linkage.js +25 -44
- package/dist/canonical/linkage.js.map +1 -1
- package/dist/canonical/normal-form.d.ts.map +1 -1
- package/dist/canonical/normal-form.js +5 -11
- package/dist/canonical/normal-form.js.map +1 -1
- package/dist/canonical/structural.d.ts +21 -21
- package/dist/canonical/structural.d.ts.map +1 -1
- package/dist/canonical/structural.js +40 -19
- package/dist/canonical/structural.js.map +1 -1
- package/dist/cases/catalog-checks.d.ts +10 -0
- package/dist/cases/catalog-checks.d.ts.map +1 -0
- package/dist/cases/catalog-checks.js +241 -0
- package/dist/cases/catalog-checks.js.map +1 -0
- package/dist/cases/catalog.d.ts +83 -0
- package/dist/cases/catalog.d.ts.map +1 -0
- package/dist/cases/catalog.js +118 -0
- package/dist/cases/catalog.js.map +1 -0
- package/dist/cases/engine.d.ts +13 -0
- package/dist/cases/engine.d.ts.map +1 -0
- package/dist/cases/engine.js +179 -0
- package/dist/cases/engine.js.map +1 -0
- package/dist/cases/index.d.ts.map +1 -1
- package/dist/cases/index.js +5 -7
- package/dist/cases/index.js.map +1 -1
- package/dist/cases/methods.d.ts +215 -0
- package/dist/cases/methods.d.ts.map +1 -0
- package/dist/cases/methods.js +743 -0
- package/dist/cases/methods.js.map +1 -0
- 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/types.d.ts +12 -0
- package/dist/cases/types.d.ts.map +1 -1
- package/dist/cases/types.js.map +1 -1
- package/dist/cli/args.d.ts +25 -1
- package/dist/cli/args.d.ts.map +1 -1
- package/dist/cli/args.js +30 -8
- package/dist/cli/args.js.map +1 -1
- package/dist/cli/bindings.d.ts.map +1 -1
- package/dist/cli/bindings.js +5 -4
- package/dist/cli/bindings.js.map +1 -1
- package/dist/cli/command.d.ts +11 -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 +0 -9
- package/dist/cli/commands/_atlas-map.d.ts.map +1 -1
- package/dist/cli/commands/_atlas-map.js +8 -18
- 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 +1 -0
- package/dist/cli/commands/_discovery-opts.d.ts.map +1 -1
- package/dist/cli/commands/_discovery-opts.js +9 -9
- 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 +8 -5
- 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 +8 -1
- 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/confront.d.ts.map +1 -1
- package/dist/cli/commands/confront.js +8 -14
- package/dist/cli/commands/confront.js.map +1 -1
- package/dist/cli/commands/derive.d.ts.map +1 -1
- package/dist/cli/commands/derive.js +22 -22
- 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 +122 -73
- 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 +1 -0
- 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 +67 -39
- 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 +24 -3
- package/dist/cli/commands/explain.js.map +1 -1
- package/dist/cli/commands/ground.d.ts.map +1 -1
- package/dist/cli/commands/ground.js +7 -1
- package/dist/cli/commands/ground.js.map +1 -1
- package/dist/cli/commands/map.d.ts.map +1 -1
- package/dist/cli/commands/map.js +84 -11
- 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 +12 -9
- 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 +25 -3
- package/dist/cli/commands/path.js.map +1 -1
- package/dist/cli/commands/probe.d.ts.map +1 -1
- package/dist/cli/commands/probe.js +59 -16
- package/dist/cli/commands/probe.js.map +1 -1
- package/dist/cli/commands/regime.d.ts.map +1 -1
- package/dist/cli/commands/regime.js +1 -0
- 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 +1 -0
- 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 +1 -0
- package/dist/cli/commands/search.js.map +1 -1
- package/dist/cli/commands/symbolic.d.ts.map +1 -1
- package/dist/cli/commands/symbolic.js +19 -28
- 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 +4 -2
- package/dist/cli/commands/testplan.js.map +1 -1
- package/dist/cli/determination.d.ts +1 -0
- package/dist/cli/determination.d.ts.map +1 -1
- package/dist/cli/determination.js.map +1 -1
- package/dist/cli/expr-print.d.ts +0 -2
- package/dist/cli/expr-print.d.ts.map +1 -1
- package/dist/cli/expr-print.js +7 -31
- package/dist/cli/expr-print.js.map +1 -1
- package/dist/cli/flag-help.d.ts +1 -0
- package/dist/cli/flag-help.d.ts.map +1 -1
- package/dist/cli/flag-help.js +1 -0
- package/dist/cli/flag-help.js.map +1 -1
- package/dist/cli/graphs.d.ts +2 -0
- package/dist/cli/graphs.d.ts.map +1 -1
- package/dist/cli/graphs.js +1 -0
- package/dist/cli/graphs.js.map +1 -1
- package/dist/cli/main.d.ts +8 -0
- package/dist/cli/main.d.ts.map +1 -1
- package/dist/cli/main.js +19 -3
- package/dist/cli/main.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 +28 -0
- package/dist/cli/output.d.ts.map +1 -1
- package/dist/cli/output.js +23 -0
- package/dist/cli/output.js.map +1 -1
- package/dist/cli/record-reach.js +2 -2
- 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 +6 -5
- 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 +9 -8
- package/dist/cli/record.js.map +1 -1
- package/dist/cli/search-index.d.ts.map +1 -1
- package/dist/cli/search-index.js +7 -6
- 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 +12 -9
- 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/version.d.ts +1 -0
- package/dist/cli/version.d.ts.map +1 -1
- package/dist/cli/version.js +8 -5
- package/dist/cli/version.js.map +1 -1
- package/dist/cli-api.d.ts +36 -5
- package/dist/cli-api.d.ts.map +1 -1
- package/dist/cli-api.js +30 -4
- package/dist/cli-api.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/axes.d.ts +0 -6
- package/dist/composition/axes.d.ts.map +1 -1
- package/dist/composition/axes.js +6 -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 +17 -0
- package/dist/composition/bridge-analysis.d.ts.map +1 -1
- package/dist/composition/bridge-analysis.js +102 -55
- package/dist/composition/bridge-analysis.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 +122 -24
- package/dist/composition/canonical-compare.js.map +1 -1
- package/dist/composition/canonical-graph.d.ts +3 -3
- package/dist/composition/canonical-graph.d.ts.map +1 -1
- package/dist/composition/canonical-graph.js +11 -38
- 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/catalog-graph.d.ts.map +1 -1
- package/dist/composition/catalog-graph.js +2 -5
- package/dist/composition/catalog-graph.js.map +1 -1
- package/dist/composition/chain-candidate.d.ts +8 -0
- package/dist/composition/chain-candidate.d.ts.map +1 -1
- package/dist/composition/chain-candidate.js +9 -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-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-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 +13 -5
- 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 +15 -5
- package/dist/composition/consequence.d.ts.map +1 -1
- package/dist/composition/consequence.js +6 -4
- package/dist/composition/consequence.js.map +1 -1
- package/dist/composition/discovery.d.ts +129 -9
- package/dist/composition/discovery.d.ts.map +1 -1
- package/dist/composition/discovery.js +171 -67
- package/dist/composition/discovery.js.map +1 -1
- package/dist/composition/edge.d.ts +21 -2
- package/dist/composition/edge.d.ts.map +1 -1
- package/dist/composition/edge.js +23 -1
- package/dist/composition/edge.js.map +1 -1
- 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 +3 -12
- package/dist/composition/explain.d.ts.map +1 -1
- package/dist/composition/explain.js +7 -20
- package/dist/composition/explain.js.map +1 -1
- package/dist/composition/expr-eval.d.ts +1 -1
- package/dist/composition/expr-eval.d.ts.map +1 -1
- package/dist/composition/expr-eval.js +6 -15
- package/dist/composition/expr-eval.js.map +1 -1
- package/dist/composition/expr-simplify.d.ts +26 -14
- package/dist/composition/expr-simplify.d.ts.map +1 -1
- package/dist/composition/expr-simplify.js +64 -72
- package/dist/composition/expr-simplify.js.map +1 -1
- package/dist/composition/formula-shape.d.ts +23 -4
- package/dist/composition/formula-shape.d.ts.map +1 -1
- package/dist/composition/formula-shape.js +57 -17
- package/dist/composition/formula-shape.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.d.ts.map +1 -1
- package/dist/composition/grounding.js +19 -7
- 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 +8 -4
- package/dist/composition/index.d.ts.map +1 -1
- package/dist/composition/index.js +3 -2
- package/dist/composition/index.js.map +1 -1
- package/dist/composition/mathts-quiet.d.ts +7 -8
- package/dist/composition/mathts-quiet.d.ts.map +1 -1
- package/dist/composition/mathts-quiet.js +7 -16
- package/dist/composition/mathts-quiet.js.map +1 -1
- package/dist/composition/mathts-scalar-symbols.d.ts.map +1 -1
- package/dist/composition/mathts-scalar-symbols.js +2 -1
- package/dist/composition/mathts-scalar-symbols.js.map +1 -1
- package/dist/composition/own-equation-magnitude.d.ts +95 -0
- package/dist/composition/own-equation-magnitude.d.ts.map +1 -0
- package/dist/composition/own-equation-magnitude.js +270 -0
- package/dist/composition/own-equation-magnitude.js.map +1 -0
- package/dist/composition/probe/backend-protocol.d.ts +3 -0
- package/dist/composition/probe/backend-protocol.d.ts.map +1 -1
- package/dist/composition/probe/backend-protocol.js.map +1 -1
- package/dist/composition/probe/candidate-store.d.ts +1 -0
- package/dist/composition/probe/candidate-store.d.ts.map +1 -1
- package/dist/composition/probe/candidate-store.js +1 -0
- package/dist/composition/probe/candidate-store.js.map +1 -1
- package/dist/composition/probe/corpus.d.ts +8 -4
- package/dist/composition/probe/corpus.d.ts.map +1 -1
- package/dist/composition/probe/corpus.js +23 -12
- package/dist/composition/probe/corpus.js.map +1 -1
- package/dist/composition/probe/dataset.d.ts +18 -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 +7 -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/falsify.d.ts +2 -0
- package/dist/composition/probe/falsify.d.ts.map +1 -1
- package/dist/composition/probe/falsify.js +2 -0
- package/dist/composition/probe/falsify.js.map +1 -1
- package/dist/composition/probe/fit.d.ts +7 -0
- package/dist/composition/probe/fit.d.ts.map +1 -1
- package/dist/composition/probe/fit.js +46 -22
- 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 +30 -1
- package/dist/composition/probe/generator.d.ts.map +1 -1
- package/dist/composition/probe/generator.js +58 -36
- package/dist/composition/probe/generator.js.map +1 -1
- package/dist/composition/probe/index.d.ts +14 -0
- package/dist/composition/probe/index.d.ts.map +1 -1
- package/dist/composition/probe/index.js +6 -0
- package/dist/composition/probe/index.js.map +1 -1
- package/dist/composition/probe/limits.d.ts +25 -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/pipeline.d.ts +5 -0
- package/dist/composition/probe/pipeline.d.ts.map +1 -1
- package/dist/composition/probe/pipeline.js +73 -24
- 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 +251 -0
- package/dist/composition/probe/power-law.js.map +1 -0
- package/dist/composition/probe/problem.d.ts +8 -4
- package/dist/composition/probe/problem.d.ts.map +1 -1
- package/dist/composition/probe/problem.js +177 -49
- 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 +7 -1
- package/dist/composition/probe/residual.d.ts.map +1 -1
- package/dist/composition/probe/residual.js +10 -7
- package/dist/composition/probe/residual.js.map +1 -1
- package/dist/composition/probe/run-manifest.d.ts +1 -0
- package/dist/composition/probe/run-manifest.d.ts.map +1 -1
- package/dist/composition/probe/run-manifest.js.map +1 -1
- package/dist/composition/probe/scalar-search.d.ts +50 -0
- package/dist/composition/probe/scalar-search.d.ts.map +1 -0
- package/dist/composition/probe/scalar-search.js +169 -0
- package/dist/composition/probe/scalar-search.js.map +1 -0
- package/dist/composition/probe/scoring.d.ts +1 -0
- package/dist/composition/probe/scoring.d.ts.map +1 -1
- package/dist/composition/probe/scoring.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 +31 -9
- package/dist/composition/probe/study.d.ts.map +1 -1
- package/dist/composition/probe/study.js +235 -184
- package/dist/composition/probe/study.js.map +1 -1
- package/dist/composition/probe/t-tail.d.ts +16 -0
- package/dist/composition/probe/t-tail.d.ts.map +1 -0
- package/dist/composition/probe/t-tail.js +29 -0
- package/dist/composition/probe/t-tail.js.map +1 -0
- package/dist/composition/probe/types.d.ts +3 -0
- package/dist/composition/probe/types.d.ts.map +1 -1
- package/dist/composition/probe/types.js.map +1 -1
- package/dist/composition/proposed-bridges.d.ts +52 -12
- package/dist/composition/proposed-bridges.d.ts.map +1 -1
- package/dist/composition/proposed-bridges.js +107 -60
- package/dist/composition/proposed-bridges.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/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 +29 -0
- package/dist/composition/representative-values.js.map +1 -1
- package/dist/composition/retrodiction.d.ts +15 -0
- package/dist/composition/retrodiction.d.ts.map +1 -1
- package/dist/composition/retrodiction.js +12 -4
- package/dist/composition/retrodiction.js.map +1 -1
- package/dist/composition/user-equation.d.ts +1 -0
- package/dist/composition/user-equation.d.ts.map +1 -1
- package/dist/composition/user-equation.js +3 -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/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 +42 -41
- package/dist/core/constants.d.ts.map +1 -1
- package/dist/core/constants.js +71 -51
- 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/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 +2 -0
- package/dist/core/json-schema.d.ts.map +1 -1
- package/dist/core/json-schema.js +14 -13
- package/dist/core/json-schema.js.map +1 -1
- package/dist/core/labeled-tensor.d.ts.map +1 -1
- package/dist/core/labeled-tensor.js +0 -8
- 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/tensor.d.ts.map +1 -1
- package/dist/core/tensor.js +24 -0
- package/dist/core/tensor.js.map +1 -1
- package/dist/core/types.d.ts +5 -5
- package/dist/diff/bridge-ast-gradient.d.ts +27 -23
- package/dist/diff/bridge-ast-gradient.d.ts.map +1 -1
- package/dist/diff/bridge-ast-gradient.js +75 -173
- package/dist/diff/bridge-ast-gradient.js.map +1 -1
- package/dist/diff/bridge-gradient.d.ts +19 -6
- package/dist/diff/bridge-gradient.d.ts.map +1 -1
- package/dist/diff/bridge-gradient.js +19 -11
- package/dist/diff/bridge-gradient.js.map +1 -1
- package/dist/diff/bridge-specs.d.ts.map +1 -1
- package/dist/diff/bridge-specs.js +3 -0
- 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 +7 -0
- package/dist/dimensional/ast-builders.d.ts.map +1 -1
- package/dist/dimensional/ast-builders.js +11 -0
- 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.d.ts +15 -0
- package/dist/dimensional/ast-types.d.ts.map +1 -1
- package/dist/dimensional/ast-types.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/constant-rows.js +9 -9
- package/dist/dimensional/constant-rows.js.map +1 -1
- package/dist/dimensional/curvature-composite.d.ts +1 -1
- package/dist/dimensional/curvature-composite.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/errors.d.ts +1 -1
- package/dist/dimensional/errors.d.ts.map +1 -1
- package/dist/dimensional/errors.js +1 -15
- package/dist/dimensional/errors.js.map +1 -1
- package/dist/dimensional/exact-scale.d.ts +24 -11
- package/dist/dimensional/exact-scale.d.ts.map +1 -1
- package/dist/dimensional/exact-scale.js +122 -130
- package/dist/dimensional/exact-scale.js.map +1 -1
- package/dist/dimensional/gauge-field.d.ts.map +1 -1
- package/dist/dimensional/gauge-field.js +2 -2
- 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 +44 -19
- package/dist/dimensional/hyphen-names.js.map +1 -1
- package/dist/dimensional/mathts-unit-delegation.d.ts +29 -0
- package/dist/dimensional/mathts-unit-delegation.d.ts.map +1 -0
- package/dist/dimensional/mathts-unit-delegation.js +187 -0
- package/dist/dimensional/mathts-unit-delegation.js.map +1 -0
- package/dist/dimensional/mathts-unit-wrapper.d.ts +33 -0
- package/dist/dimensional/mathts-unit-wrapper.d.ts.map +1 -0
- package/dist/dimensional/mathts-unit-wrapper.js +190 -0
- package/dist/dimensional/mathts-unit-wrapper.js.map +1 -0
- 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/scalar-lowering.d.ts +21 -0
- package/dist/dimensional/scalar-lowering.d.ts.map +1 -0
- package/dist/dimensional/scalar-lowering.js +45 -0
- package/dist/dimensional/scalar-lowering.js.map +1 -0
- 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 +13 -1
- package/dist/dimensional/symbolic-constants.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-data.d.ts +5 -1
- package/dist/dimensional/unit-data.d.ts.map +1 -1
- package/dist/dimensional/unit-data.js +30 -6
- package/dist/dimensional/unit-data.js.map +1 -1
- package/dist/dimensional/units.d.ts +2 -0
- package/dist/dimensional/units.d.ts.map +1 -1
- package/dist/dimensional/units.js +59 -3
- package/dist/dimensional/units.js.map +1 -1
- package/dist/dimensional/validator.d.ts +2 -0
- package/dist/dimensional/validator.d.ts.map +1 -1
- package/dist/dimensional/validator.js.map +1 -1
- package/dist/index.d.ts +9 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +10 -4
- package/dist/index.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.d.ts +3 -1
- package/dist/numerical/connection-lowering-helpers.d.ts.map +1 -1
- package/dist/numerical/connection-lowering-helpers.js +11 -15
- 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 +34 -11
- package/dist/numerical/covariant-eikonal.js.map +1 -1
- package/dist/numerical/curvature-lowering-helpers.js +3 -2
- package/dist/numerical/curvature-lowering-helpers.js.map +1 -1
- package/dist/numerical/errors.d.ts.map +1 -1
- package/dist/numerical/errors.js +0 -3
- package/dist/numerical/errors.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/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/mathts-engine.d.ts.map +1 -1
- package/dist/numerical/mathts-engine.js +10 -24
- 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-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 +2 -6
- 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.map +1 -1
- package/dist/numerical/quadrature.js +11 -13
- 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 +12 -0
- package/dist/numerical/spacetime-metrics.d.ts.map +1 -1
- package/dist/numerical/spacetime-metrics.js +72 -56
- 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.d.ts +3 -2
- package/dist/numerical/strides.d.ts.map +1 -1
- package/dist/numerical/strides.js +3 -10
- package/dist/numerical/strides.js.map +1 -1
- package/dist/numerical/tensor-engine.d.ts +21 -0
- 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/relations/regime.d.ts +10 -0
- package/dist/relations/regime.d.ts.map +1 -1
- package/dist/relations/regime.js +18 -1
- package/dist/relations/regime.js.map +1 -1
- package/package.json +9 -12
- package/dist/cases/brownian-sphere.d.ts +0 -68
- package/dist/cases/brownian-sphere.d.ts.map +0 -1
- package/dist/cases/brownian-sphere.js +0 -354
- package/dist/cases/brownian-sphere.js.map +0 -1
- package/dist/cases/damped-resonator.d.ts +0 -23
- package/dist/cases/damped-resonator.d.ts.map +0 -1
- package/dist/cases/damped-resonator.js +0 -224
- package/dist/cases/damped-resonator.js.map +0 -1
- package/dist/cases/kepler-rv.d.ts +0 -13
- package/dist/cases/kepler-rv.d.ts.map +0 -1
- package/dist/cases/kepler-rv.js +0 -172
- package/dist/cases/kepler-rv.js.map +0 -1
- package/dist/cases/lumped-cooling.d.ts +0 -46
- package/dist/cases/lumped-cooling.d.ts.map +0 -1
- package/dist/cases/lumped-cooling.js +0 -261
- package/dist/cases/lumped-cooling.js.map +0 -1
- package/dist/cases/resistor-noise.d.ts +0 -14
- package/dist/cases/resistor-noise.d.ts.map +0 -1
- package/dist/cases/resistor-noise.js +0 -215
- package/dist/cases/resistor-noise.js.map +0 -1
- package/dist/cases/skin-depth.d.ts +0 -21
- package/dist/cases/skin-depth.d.ts.map +0 -1
- package/dist/cases/skin-depth.js +0 -174
- package/dist/cases/skin-depth.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"consequence.js","sourceRoot":"","sources":["../../src/composition/consequence.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Consequence propagation — the machine pre-classifier for the human\n * adjudication ledger. A POST-PASS annotation over ranked candidates (mirrors\n * `annotateAdjudications`): reuse `deriveProposedBridges` to derive each\n * promising candidate's monomial consequence, then compare its `normalForm`\n * against the canonical registry (SAME target AND SAME governing set) to label\n * it `entailed` (re-derives known physics), `novel-consequence` (valid, no\n * match), or `inconclusive` (no monomial consequence). Annotation-only: never\n * mutates the catalog/graph, never re-orders or re-scores, never writes to\n * ADJUDICATIONS. The underlying ProposedBridge stays `status:'unadjudicated'`.\n *\n * @module composition/consequence\n */\nimport type { VettedCandidate } from './discovery.js';\nimport type { ProposedBridge } from './proposed-bridges.js';\nimport { deriveProposedBridges } from './proposed-bridges.js';\nimport { normalForm } from '../canonical/normal-form.js';\nimport { CANONICAL_EQUATIONS } from '../canonical/registry.js';\nimport type { CanonicalEquation } from '../canonical/canonical-equation.js';\n\n/** @public */\nexport type ConsequenceSignal = 'entailed' | 'novel-consequence' | 'inconclusive';\n\n/** @public */\nexport interface ConsequenceEvidence {\n readonly target: string;\n readonly governing: readonly string[];\n readonly derivedNormalForm: string;\n /** The id of the canonical equation whose normalForm matched, or null. */\n readonly canonicalMatch: string | null;\n readonly sourceEquationIds: readonly [string, string];\n}\n\n/** @public */\nexport type ConsequenceAnnotatedCandidate = VettedCandidate & {\n readonly consequence?: {\n readonly signal: ConsequenceSignal;\n readonly evidence: readonly ConsequenceEvidence[];\n };\n};\n\n/** Governing-name set equality (order-insensitive). */\nfunction sameGoverning(a: readonly { name: string }[], b: readonly { name: string }[]): boolean {\n if (a.length !== b.length) return false;\n const sa = new Set(a.map((g) => g.name));\n return b.every((g) => sa.has(g.name));\n}\n\n/**\n * Classify ONE derived proposal against the canonical registry.\n * `entailed` iff some canonical equation with a `scalarAst` has the SAME target\n * name AND SAME governing set AND a matching `normalForm`. Otherwise\n * `novel-consequence`. There is NO contradiction signal — a differing normalForm\n * for the same target is NOT a contradiction (design r2: E=mc² vs E=hf).\n * @public\n */\nexport function classifyProposal(\n proposal: Pick<ProposedBridge, 'target' | 'governing' | 'scalarAst' | 'derivedFrom'>,\n canonical: readonly CanonicalEquation[] = CANONICAL_EQUATIONS,\n): { readonly signal: Exclude<ConsequenceSignal, 'inconclusive'>; readonly evidence: ConsequenceEvidence } {\n const derivedNF = normalForm(proposal.scalarAst);\n let canonicalMatch: string | null = null;\n for (const ce of canonical) {\n if (!ce.scalarAst) continue;\n if (ce.dimensional.target.name !== proposal.target.name) continue;\n if (!sameGoverning(ce.dimensional.governing, proposal.governing)) continue;\n if (normalForm(ce.scalarAst) === derivedNF) {\n canonicalMatch = ce.id; // CanonicalEquation.id is a top-level `readonly id: string` (verified)\n break;\n }\n }\n return {\n signal: canonicalMatch ? 'entailed' : 'novel-consequence',\n evidence: {\n target: proposal.target.name,\n governing: proposal.governing.map((g) => g.name),\n derivedNormalForm: derivedNF,\n canonicalMatch,\n sourceEquationIds: proposal.derivedFrom.sourceEquationIds,\n },\n };\n}\n\n/**\n * What a derived proposal claims, in a form that travels with it: the premise,\n * whether it is a known law or a conditional identity, what the solved-for\n * symbol means, the source equations' assumptions, and the exact scope of the\n * canonical-match check.\n * @internal\n */\nexport interface DerivedClaim {\n /** The unadjudicated identification the relation rests on. */\n readonly premise: string;\n /** `known-law`: re-derives a registry equation. `conditional-identity`: holds only if the premise does. */\n readonly relation: 'known-law' | 'conditional-identity';\n /** No derived proposal has been confronted with a measurement. */\n readonly tested: false;\n readonly symbol: { readonly name: string; readonly fromEquation: string; readonly meaning: string };\n readonly assumptions: readonly { readonly equation: string; readonly assumptions: readonly string[] }[];\n readonly canonicalMatch: {\n readonly id: string | null;\n readonly sameTarget: number;\n readonly sameTargetAndGoverning: number;\n readonly scope: 'the canonical registry only';\n };\n}\n\ntype ClaimEquation = Pick<CanonicalEquation, 'id' | 'name' | 'assumptions' | 'scalarAst'> & {\n readonly dimensional: Pick<CanonicalEquation['dimensional'], 'target' | 'governing'>;\n};\n\n/**\n * Describe the claim a derived proposal makes. Pure; the proposal is unchanged.\n * @internal\n */\nexport function describeDerivedClaim(\n proposal: Pick<ProposedBridge, 'target' | 'governing' | 'scalarAst' | 'derivedFrom'>,\n canonical: readonly ClaimEquation[] = CANONICAL_EQUATIONS,\n): DerivedClaim {\n const { identification, sourceEquationIds, solvedFor } = proposal.derivedFrom;\n // `deriveProposedBridges` resolves the first source id for the smaller\n // endpoint name and the second for the larger, so each id's target is known\n // even when the source is a catalog bridge the canonical registry does not\n // hold (then `canonical.find` is undefined; the sentence once printed\n // \"equals ? (undefined)\" there, 9.0.0 audit §7 T1).\n const [t0, t1] = [identification.a, identification.b].sort();\n const endpointOf = (id: string): string => (id === sourceEquationIds[0] ? t0 : t1);\n const sources = sourceEquationIds\n .map((id) => canonical.find((e) => e.id === id))\n .filter((e): e is ClaimEquation => e !== undefined);\n const home = sources.find((e) => e.dimensional.governing.some((g) => g.name === solvedFor)) ?? sources[0];\n const homeId = home?.id ?? sourceEquationIds[0];\n const otherId = sourceEquationIds.find((id) => id !== homeId) ?? sourceEquationIds[1];\n const other = sources.find((e) => e.id === otherId);\n const homeTarget = home?.dimensional.target.name ?? endpointOf(homeId);\n const otherTarget = other?.dimensional.target.name ?? endpointOf(otherId);\n\n const derivedNF = normalForm(proposal.scalarAst);\n const sameTarget = canonical.filter((e) => e.scalarAst && e.dimensional.target.name === proposal.target.name);\n const sameGov = sameTarget.filter((e) => sameGoverning(e.dimensional.governing, proposal.governing));\n const match = sameGov.find((e) => normalForm(e.scalarAst!) === derivedNF);\n\n return {\n premise: `${identification.a} ≡ ${identification.b}`,\n relation: match ? 'known-law' : 'conditional-identity',\n tested: false,\n symbol: {\n name: solvedFor,\n fromEquation: homeId,\n meaning:\n `${solvedFor} is the ${solvedFor} of ${homeId}${home !== undefined ? ` (${home.name})` : ''}: the ${solvedFor} for which ` +\n `${homeTarget} equals ${otherTarget} (${otherId}) — an equal-${identification.dim} scale; ` +\n `the ${otherTarget} side is not given a ${solvedFor}`,\n },\n assumptions: sources.map((e) => ({ equation: e.id, assumptions: [...e.assumptions] })),\n canonicalMatch: {\n id: match?.id ?? null,\n sameTarget: sameTarget.length,\n sameTargetAndGoverning: sameGov.length,\n scope: 'the canonical registry only',\n },\n };\n}\n\n/**\n * Annotate ranked candidates with their consequence signal. Order-preserving,\n * 1:1 with the input; only `promising` candidates are classified (they are the\n * only ones `deriveProposedBridges` processes). A promising candidate with no\n * derived proposal is `inconclusive`. Generic over the input candidate type so\n * it composes with other post-pass annotators (e.g. `annotateAdjudications`)\n * without forgetting fields the caller already attached.\n * @public\n */\nexport function annotateConsequences<T extends VettedCandidate>(\n candidates: readonly T[],\n): readonly (T & {\n readonly consequence?: {\n readonly signal: ConsequenceSignal;\n readonly evidence: readonly ConsequenceEvidence[];\n };\n})[] {\n const promising = candidates.filter((c) => c.verdict === 'promising');\n const proposals = deriveProposedBridges(promising);\n\n // Group proposals + their classification by the sorted candidate-pair key.\n const byPair = new Map<string, { signal: ConsequenceSignal; evidence: ConsequenceEvidence[] }>();\n for (const p of proposals) {\n const key = [p.derivedFrom.identification.a, p.derivedFrom.identification.b].sort().join('~');\n const cls = classifyProposal(p);\n const cur = byPair.get(key);\n if (!cur) {\n byPair.set(key, { signal: cls.signal, evidence: [cls.evidence] });\n } else {\n cur.evidence.push(cls.evidence);\n // entailed dominates novel: if ANY consequence re-derives known physics, the pair is entailed.\n if (cls.signal === 'entailed') cur.signal = 'entailed';\n }\n }\n\n return candidates.map((c) => {\n if (c.verdict !== 'promising') return c;\n const key = [c.a, c.b].sort().join('~');\n const hit = byPair.get(key);\n const signal: ConsequenceSignal = hit ? hit.signal : 'inconclusive';\n return { ...c, consequence: { signal, evidence: hit?.evidence ?? [] } };\n });\n}\n"]}
|
|
1
|
+
{"version":3,"file":"consequence.js","sourceRoot":"","sources":["../../src/composition/consequence.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Consequence propagation — the machine pre-classifier for the human\n * adjudication ledger. A POST-PASS annotation over ranked candidates (mirrors\n * `annotateAdjudications`): reuse `deriveProposedBridges` to derive each\n * promising candidate's monomial consequence, then compare its `normalForm`\n * against the canonical registry (SAME target AND SAME governing set) to label\n * it `entailed` (re-derives known physics), `novel-consequence` (valid, no\n * match), or `inconclusive` (no monomial consequence). Annotation-only: never\n * mutates the catalog/graph, never re-orders or re-scores, never writes to\n * ADJUDICATIONS. The underlying ProposedBridge stays `status:'unadjudicated'`.\n *\n * @module composition/consequence\n */\nimport type { VettedCandidate } from './discovery.js';\nimport { isPromisingTier } from './discovery.js';\nimport type { ProposedBridge } from './proposed-bridges.js';\nimport { deriveProposedBridges } from './proposed-bridges.js';\nimport { normalForm } from '../canonical/normal-form.js';\nimport { CANONICAL_EQUATIONS } from '../canonical/registry.js';\nimport type { CanonicalEquation } from '../canonical/canonical-equation.js';\n\n/**\n * The consequence signal of a promising candidate: entailed, novel-consequence or inconclusive.\n * @public\n */\nexport type ConsequenceSignal = 'entailed' | 'novel-consequence' | 'inconclusive';\n\n/**\n * The evidence behind one consequence signal: the derived claim and any canonical match.\n * @public\n */\nexport interface ConsequenceEvidence {\n readonly target: string;\n readonly governing: readonly string[];\n readonly derivedNormalForm: string;\n /** The id of the canonical equation whose normalForm matched, or null. */\n readonly canonicalMatch: string | null;\n readonly sourceEquationIds: readonly [string, string];\n}\n\n/**\n * A vetted candidate, plus its optional consequence signal and evidence.\n * @public\n */\nexport type ConsequenceAnnotatedCandidate = VettedCandidate & {\n readonly consequence?: {\n readonly signal: ConsequenceSignal;\n readonly evidence: readonly ConsequenceEvidence[];\n };\n};\n\n/** Governing-name set equality (order-insensitive). */\nfunction sameGoverning(a: readonly { name: string }[], b: readonly { name: string }[]): boolean {\n if (a.length !== b.length) return false;\n const sa = new Set(a.map((g) => g.name));\n return b.every((g) => sa.has(g.name));\n}\n\n/**\n * Classify ONE derived proposal against the canonical registry.\n * `entailed` iff some canonical equation with a `scalarAst` has the SAME target\n * name AND SAME governing set AND a matching `normalForm`. Otherwise\n * `novel-consequence`. There is NO contradiction signal — a differing normalForm\n * for the same target is NOT a contradiction (design r2: E=mc² vs E=hf).\n * @public\n */\nexport function classifyProposal(\n proposal: Pick<ProposedBridge, 'target' | 'governing' | 'scalarAst' | 'derivedFrom'>,\n canonical: readonly CanonicalEquation[] = CANONICAL_EQUATIONS,\n): { readonly signal: Exclude<ConsequenceSignal, 'inconclusive'>; readonly evidence: ConsequenceEvidence } {\n const derivedNF = normalForm(proposal.scalarAst);\n let canonicalMatch: string | null = null;\n for (const ce of canonical) {\n if (!ce.scalarAst) continue;\n if (ce.dimensional.target.name !== proposal.target.name) continue;\n if (!sameGoverning(ce.dimensional.governing, proposal.governing)) continue;\n if (normalForm(ce.scalarAst) === derivedNF) {\n canonicalMatch = ce.id; // CanonicalEquation.id is a top-level `readonly id: string` (verified)\n break;\n }\n }\n return {\n signal: canonicalMatch ? 'entailed' : 'novel-consequence',\n evidence: {\n target: proposal.target.name,\n governing: proposal.governing.map((g) => g.name),\n derivedNormalForm: derivedNF,\n canonicalMatch,\n sourceEquationIds: proposal.derivedFrom.sourceEquationIds,\n },\n };\n}\n\n/**\n * What a derived proposal claims, in a form that travels with it: the premise,\n * whether it is a known law or a conditional identity, what the solved-for\n * symbol means, the source equations' assumptions, and the exact scope of the\n * canonical-match check.\n * @internal\n */\nexport interface DerivedClaim {\n /** The unadjudicated identification the relation rests on. */\n readonly premise: string;\n /** `known-law`: re-derives a registry equation. `conditional-identity`: holds only if the premise does. */\n readonly relation: 'known-law' | 'conditional-identity';\n /** No derived proposal has been confronted with a measurement. */\n readonly tested: false;\n readonly symbol: { readonly name: string; readonly fromEquation: string; readonly meaning: string };\n readonly assumptions: readonly { readonly equation: string; readonly assumptions: readonly string[] }[];\n readonly canonicalMatch: {\n readonly id: string | null;\n readonly sameTarget: number;\n readonly sameTargetAndGoverning: number;\n readonly scope: 'the canonical registry only';\n };\n}\n\ntype ClaimEquation = Pick<CanonicalEquation, 'id' | 'name' | 'assumptions' | 'scalarAst'> & {\n readonly dimensional: Pick<CanonicalEquation['dimensional'], 'target' | 'governing'>;\n};\n\n/**\n * Describe the claim a derived proposal makes. Pure; the proposal is unchanged.\n * @internal\n */\nexport function describeDerivedClaim(\n proposal: Pick<ProposedBridge, 'target' | 'governing' | 'scalarAst' | 'derivedFrom'>,\n canonical: readonly ClaimEquation[] = CANONICAL_EQUATIONS,\n): DerivedClaim {\n const { identification, sourceEquationIds, solvedFor } = proposal.derivedFrom;\n // `deriveProposedBridges` resolves the first source id for the smaller\n // endpoint name and the second for the larger, so each id's target is known\n // even when the source is a catalog bridge the canonical registry does not\n // hold (then `canonical.find` is undefined; the sentence once printed\n // \"equals ? (undefined)\" there, 9.0.0 audit §7 T1).\n const [t0, t1] = [identification.a, identification.b].sort();\n const endpointOf = (id: string): string => (id === sourceEquationIds[0] ? t0 : t1);\n const sources = sourceEquationIds\n .map((id) => canonical.find((e) => e.id === id))\n .filter((e): e is ClaimEquation => e !== undefined);\n const home = sources.find((e) => e.dimensional.governing.some((g) => g.name === solvedFor)) ?? sources[0];\n const homeId = home?.id ?? sourceEquationIds[0];\n const otherId = sourceEquationIds.find((id) => id !== homeId) ?? sourceEquationIds[1];\n const other = sources.find((e) => e.id === otherId);\n const homeTarget = home?.dimensional.target.name ?? endpointOf(homeId);\n const otherTarget = other?.dimensional.target.name ?? endpointOf(otherId);\n\n const derivedNF = normalForm(proposal.scalarAst);\n const sameTarget = canonical.filter((e) => e.scalarAst && e.dimensional.target.name === proposal.target.name);\n const sameGov = sameTarget.filter((e) => sameGoverning(e.dimensional.governing, proposal.governing));\n const match = sameGov.find((e) => normalForm(e.scalarAst!) === derivedNF);\n\n return {\n premise: `${identification.a} ≡ ${identification.b}`,\n relation: match ? 'known-law' : 'conditional-identity',\n tested: false,\n symbol: {\n name: solvedFor,\n fromEquation: homeId,\n meaning:\n `${solvedFor} is the ${solvedFor} of ${homeId}${home !== undefined ? ` (${home.name})` : ''}: the ${solvedFor} for which ` +\n `${homeTarget} equals ${otherTarget} (${otherId}) — an equal-${identification.dim} scale; ` +\n `the ${otherTarget} side is not given a ${solvedFor}`,\n },\n assumptions: sources.map((e) => ({ equation: e.id, assumptions: [...e.assumptions] })),\n canonicalMatch: {\n id: match?.id ?? null,\n sameTarget: sameTarget.length,\n sameTargetAndGoverning: sameGov.length,\n scope: 'the canonical registry only',\n },\n };\n}\n\n/**\n * Annotate ranked candidates with their consequence signal. Order-preserving,\n * 1:1 with the input; only candidates in a promising tier (`promising` or\n * `promising-unchecked`) are classified (they are the only ones\n * `deriveProposedBridges` processes). A promising candidate with no\n * derived proposal is `inconclusive`. Generic over the input candidate type so\n * it composes with other post-pass annotators (e.g. `annotateAdjudications`)\n * without forgetting fields the caller already attached.\n * @public\n */\nexport function annotateConsequences<T extends VettedCandidate>(\n candidates: readonly T[],\n): readonly (T & {\n readonly consequence?: {\n readonly signal: ConsequenceSignal;\n readonly evidence: readonly ConsequenceEvidence[];\n };\n})[] {\n const promising = candidates.filter((c) => isPromisingTier(c.verdict));\n const proposals = deriveProposedBridges(promising);\n\n // Group proposals + their classification by the sorted candidate-pair key.\n const byPair = new Map<string, { signal: ConsequenceSignal; evidence: ConsequenceEvidence[] }>();\n for (const p of proposals) {\n const key = [p.derivedFrom.identification.a, p.derivedFrom.identification.b].sort().join('~');\n const cls = classifyProposal(p);\n const cur = byPair.get(key);\n if (!cur) {\n byPair.set(key, { signal: cls.signal, evidence: [cls.evidence] });\n } else {\n cur.evidence.push(cls.evidence);\n // entailed dominates novel: if ANY consequence re-derives known physics, the pair is entailed.\n if (cls.signal === 'entailed') cur.signal = 'entailed';\n }\n }\n\n return candidates.map((c) => {\n if (!isPromisingTier(c.verdict)) return c;\n const key = [c.a, c.b].sort().join('~');\n const hit = byPair.get(key);\n const signal: ConsequenceSignal = hit ? hit.signal : 'inconclusive';\n return { ...c, consequence: { signal, evidence: hit?.evidence ?? [] } };\n });\n}\n"]}
|
|
@@ -38,6 +38,7 @@ import type { QuantityIdentification } from './compose.js';
|
|
|
38
38
|
import type { RegimeAttributes } from './quantity.js';
|
|
39
39
|
import type { LinkCandidate } from './bridge-analysis.js';
|
|
40
40
|
import type { RepresentativeValue } from './representative-values.js';
|
|
41
|
+
import type { DerivedMagnitudes } from './own-equation-magnitude.js';
|
|
41
42
|
/** The canonical quantity→attributes map (registry nodes + per-equation stamps).
|
|
42
43
|
* Exported for the axis-discrimination audit. @internal */
|
|
43
44
|
export declare const REGISTRY_ATTRIBUTES_BY_NAME: ReadonlyMap<string, RegimeAttributes>;
|
|
@@ -79,10 +80,27 @@ export interface VettedCandidate {
|
|
|
79
80
|
* value (the gate abstained — see `magnitudeChecked`).
|
|
80
81
|
*/
|
|
81
82
|
readonly ordersApart: number | null;
|
|
83
|
+
/**
|
|
84
|
+
* The calibrated STRENGTH of the magnitude falsifier against the two values' stated
|
|
85
|
+
* uncertainties: `2·Φ(−ordersApart / √(σ_a² + σ_b²))`, with σ in decades per representative
|
|
86
|
+
* value (`sigmaDecades`, default one decade: the table's "good to about one order"; an
|
|
87
|
+
* anchor-derived value takes the default; a value from the quantity's own equation, its
|
|
88
|
+
* propagated σ), through MathTS `normalCDF` of the negative
|
|
89
|
+
* argument so a far tail is not rounded to 0 by `1 − cdf`. It is reported BESIDE the verdict
|
|
90
|
+
* and changes no verdict: the clash threshold stays `ordersApart > maxOrders`. A small p says
|
|
91
|
+
* the two magnitudes are hard to reconcile at their stated precision; 2.9 decades at σ = 1
|
|
92
|
+
* is p ≈ 0.040, no longer a clean pass, while 3.1 decades stays a clash. NOT a credibility
|
|
93
|
+
* score: it says nothing about whether the identification is true. `null` when the gate
|
|
94
|
+
* abstained. Optional on the type; the funnel always sets it.
|
|
95
|
+
*/
|
|
96
|
+
readonly magnitudeP?: number | null;
|
|
82
97
|
/** Both endpoints had a representative value, so the magnitude gate ran. */
|
|
83
98
|
readonly magnitudeChecked: boolean;
|
|
84
99
|
/** The magnitude gate read at least one endpoint value from the graph at
|
|
85
|
-
* the anchor (no static table entry) rather than the sourced table.
|
|
100
|
+
* the anchor (no static table entry) rather than the sourced table. A value
|
|
101
|
+
* the graph computes from registered constants alone, with no anchor input
|
|
102
|
+
* (the target of a source-less equation), is a constant and is not
|
|
103
|
+
* anchor-derived. */
|
|
86
104
|
readonly magnitudeUsedAnchor: boolean;
|
|
87
105
|
/**
|
|
88
106
|
* The magnitude comparison used an anchor-derived value, and the ratio of the
|
|
@@ -93,17 +111,30 @@ export interface VettedCandidate {
|
|
|
93
111
|
* the temperature to the Hawking temperature of the anchor mass M, and then
|
|
94
112
|
* the thermal wavelength is exactly 4π ℓ_P for EVERY M. Its anchor-derived
|
|
95
113
|
* magnitude is not a representative magnitude of the quantity at all.
|
|
96
|
-
* A quantity whose value really is a constant
|
|
97
|
-
*
|
|
114
|
+
* A quantity whose value really is a constant is not anchor-derived: the
|
|
115
|
+
* sourced table states it, or the graph computes it from registered constants
|
|
116
|
+
* with no anchor input (`DiscoveryContext.constantValues`), and the probe does
|
|
117
|
+
* not withhold a comparison of two such values, which can fail by the clash
|
|
118
|
+
* threshold.
|
|
98
119
|
* A clash stays a clash (the graph itself fixes the two apart); only a pass is
|
|
99
120
|
* withheld, in `describeGrounding`. Optional on the type so hand-built
|
|
100
121
|
* candidates need not state it; the funnel always sets it.
|
|
101
122
|
*/
|
|
102
123
|
readonly magnitudeAnchorInvariant?: boolean;
|
|
103
124
|
/**
|
|
104
|
-
* The endpoints
|
|
105
|
-
* table
|
|
106
|
-
*
|
|
125
|
+
* The endpoints whose magnitude the gate took from the quantity's own equation
|
|
126
|
+
* (`own-equation-magnitude.ts`): no table value and no no-anchor constant, but
|
|
127
|
+
* an edge into it whose every source the table or the constants value, at a
|
|
128
|
+
* propagated σ within one decade. Such a value is not anchor-derived. Empty
|
|
129
|
+
* when neither endpoint's magnitude came from there. Optional on the type; the
|
|
130
|
+
* funnel always sets it.
|
|
131
|
+
*/
|
|
132
|
+
readonly magnitudeDerived?: readonly string[];
|
|
133
|
+
/**
|
|
134
|
+
* The endpoints with no representative magnitude (not in the sourced table,
|
|
135
|
+
* not a no-anchor constant, not derived from their own equation, not valued
|
|
136
|
+
* at the anchor) — why the magnitude gate abstained. Empty when it ran.
|
|
137
|
+
* Optional on the type; the funnel always sets it.
|
|
107
138
|
*/
|
|
108
139
|
readonly magnitudeMissing?: readonly string[];
|
|
109
140
|
/**
|
|
@@ -132,11 +163,18 @@ export interface VettedCandidate {
|
|
|
132
163
|
* compares catalog labels and runs no computation, so
|
|
133
164
|
* it is never counted or described as a falsification.
|
|
134
165
|
* - `promising` — consistent AND connects disconnected physics AND
|
|
135
|
-
* unlocks ≥1 quantity
|
|
166
|
+
* unlocks ≥1 quantity, AND the magnitude falsifier ran
|
|
167
|
+
* and could have failed ({@link hasMagnitudeEvidence}).
|
|
168
|
+
* Worth physicist review.
|
|
169
|
+
* - `promising-unchecked` — the same structure, but the magnitude falsifier
|
|
170
|
+
* never tested it: it abstained (an endpoint has no
|
|
171
|
+
* representative magnitude) or its pass is anchor-invariant
|
|
172
|
+
* and so could not fail. A separate count, never added to
|
|
173
|
+
* `promising` (AGENTS law 4).
|
|
136
174
|
* - `inert` — consistent but structurally/numerically idle (a
|
|
137
175
|
* dimensional coincidence with no consequence).
|
|
138
176
|
*/
|
|
139
|
-
readonly verdict: 'promising' | 'inert' | 'contradictory' | 'magnitude-clash' | 'axis-clash';
|
|
177
|
+
readonly verdict: 'promising' | 'promising-unchecked' | 'inert' | 'contradictory' | 'magnitude-clash' | 'axis-clash';
|
|
140
178
|
/** Composite ranking score (higher = more worth review). */
|
|
141
179
|
readonly score: number;
|
|
142
180
|
/**
|
|
@@ -164,6 +202,23 @@ export interface VettedCandidate {
|
|
|
164
202
|
* (weak name-based prior; informational). */
|
|
165
203
|
readonly touchesCanonical: boolean;
|
|
166
204
|
}
|
|
205
|
+
/**
|
|
206
|
+
* Whether the magnitude falsifier ran on a candidate AND could have failed: both endpoints had a
|
|
207
|
+
* representative magnitude (`magnitudeChecked`) and the comparison is not anchor-invariant. An
|
|
208
|
+
* anchor-invariant pass is fixed by the graph at every anchor, so it cannot fail and is not a
|
|
209
|
+
* check (AGENTS law 2). The one owner of this predicate: the verdict split between `promising`
|
|
210
|
+
* and `promising-unchecked`, the CLI readiness count and the grounding ledger all read it.
|
|
211
|
+
* @internal
|
|
212
|
+
*/
|
|
213
|
+
export declare function hasMagnitudeEvidence(c: Pick<VettedCandidate, 'magnitudeChecked' | 'magnitudeAnchorInvariant'>): boolean;
|
|
214
|
+
/**
|
|
215
|
+
* Whether a verdict is one of the two promising tiers, `promising` (with magnitude evidence) or
|
|
216
|
+
* `promising-unchecked` (without): the structural set the consequence and proposal layers
|
|
217
|
+
* process, so splitting the tiers loses no proposal. A selector, never a count: the two tiers are
|
|
218
|
+
* reported apart and never added (AGENTS law 4).
|
|
219
|
+
* @internal
|
|
220
|
+
*/
|
|
221
|
+
export declare function isPromisingTier(verdict: VettedCandidate['verdict']): boolean;
|
|
167
222
|
/** Options for the discovery loop. @internal */
|
|
168
223
|
export interface DiscoveryOptions {
|
|
169
224
|
/**
|
|
@@ -230,6 +285,19 @@ export interface DiscoveryContext {
|
|
|
230
285
|
readonly attributesByName: ReadonlyMap<string, RegimeAttributes>;
|
|
231
286
|
/** `forwardEvaluate(edges, groundTruth, baseIdents)` — anchor magnitudes. */
|
|
232
287
|
readonly anchorValues: ReadonlyMap<string, number>;
|
|
288
|
+
/**
|
|
289
|
+
* `forwardEvaluate(edges, {}, baseIdents)` — the values the graph fixes with NO anchor input:
|
|
290
|
+
* the targets of source-less equations (an all-constant right-hand side such as the Rydberg
|
|
291
|
+
* energy or the Planck length) and whatever they alone determine. Such a value is a constant,
|
|
292
|
+
* not an anchor-derived magnitude, so the magnitude gate reads it as `fromAnchor: false`.
|
|
293
|
+
*/
|
|
294
|
+
readonly constantValues: ReadonlyMap<string, number>;
|
|
295
|
+
/**
|
|
296
|
+
* The magnitudes the graph derives from the sourced table and the constants alone, never from
|
|
297
|
+
* the anchor (`deriveOwnEquationMagnitudes`), with every refusal and its reason: a σ above one
|
|
298
|
+
* decade, two disagreeing edges, or a σ that could not be measured.
|
|
299
|
+
*/
|
|
300
|
+
readonly derivedMagnitudes: DerivedMagnitudes;
|
|
233
301
|
/** The same evaluation with every anchor input times {@link ANCHOR_PROBE_FACTOR}. */
|
|
234
302
|
readonly anchorValuesProbe: ReadonlyMap<string, number>;
|
|
235
303
|
/** `quantityComponents(edges, baseIdents)` — base component roots. */
|
|
@@ -247,6 +315,56 @@ export interface DiscoveryContext {
|
|
|
247
315
|
/** Resolve options and compute the candidate-invariant discovery state once.
|
|
248
316
|
* @internal */
|
|
249
317
|
export declare function buildDiscoveryContext(edges: readonly BridgeEdge[], opts: DiscoveryOptions): DiscoveryContext;
|
|
318
|
+
/** One endpoint's magnitude for the gate: its value, where it came from, and its σ in decades. */
|
|
319
|
+
interface GateMagnitude {
|
|
320
|
+
readonly value: number;
|
|
321
|
+
readonly fromAnchor: boolean;
|
|
322
|
+
/** Derived from the quantity's own equation (`ctx.derivedMagnitudes`). */
|
|
323
|
+
readonly fromOwnEquation: boolean;
|
|
324
|
+
readonly sigmaDecades: number;
|
|
325
|
+
}
|
|
326
|
+
/** What the magnitude gate found for one candidate. @internal */
|
|
327
|
+
export interface MagnitudeGate {
|
|
328
|
+
/** The two magnitudes, when both were found (the gate ran). */
|
|
329
|
+
readonly a: GateMagnitude | undefined;
|
|
330
|
+
readonly b: GateMagnitude | undefined;
|
|
331
|
+
readonly checked: boolean;
|
|
332
|
+
readonly usedAnchor: boolean;
|
|
333
|
+
/** `|log10|a| − log10|b||`, or null when the gate abstained. */
|
|
334
|
+
readonly ordersApart: number | null;
|
|
335
|
+
/** The verdict: `ordersApart > maxOrders`. */
|
|
336
|
+
readonly clash: boolean;
|
|
337
|
+
/** The calibrated strength `2·Φ(−orders/√(σ_a² + σ_b²))`, or null when the gate abstained. */
|
|
338
|
+
readonly p: number | null;
|
|
339
|
+
/** The endpoints with no magnitude (why the gate abstained); empty when it ran. */
|
|
340
|
+
readonly missing: readonly string[];
|
|
341
|
+
/** The endpoints whose magnitude came from their own equation, in candidate order. */
|
|
342
|
+
readonly derived: readonly string[];
|
|
343
|
+
}
|
|
344
|
+
/**
|
|
345
|
+
* The two-sided tail of a gap of `orders` decades between two values whose log10 carry
|
|
346
|
+
* standard deviations `sigmaA` and `sigmaB` decades: `2·Φ(−orders/√(σ_a² + σ_b²))`, through the
|
|
347
|
+
* NEGATIVE argument (`1 − Φ` rounds a far tail to 0; the lower tail is accurate). A strength of
|
|
348
|
+
* the falsifier, not a credibility score.
|
|
349
|
+
*
|
|
350
|
+
* @internal
|
|
351
|
+
*/
|
|
352
|
+
export declare function magnitudeStrength(orders: number, sigmaA: number, sigmaB: number): number;
|
|
353
|
+
/**
|
|
354
|
+
* The magnitude gate: an INDEPENDENT falsifier the single-anchor graph cannot make. It runs only
|
|
355
|
+
* when both endpoints have a representative value and abstains (never false-rejects) otherwise.
|
|
356
|
+
* A value comes from the sourced static table first; else from the value the graph fixes with NO
|
|
357
|
+
* anchor input (a constant computed from registered constants alone, `ctx.constantValues`: not
|
|
358
|
+
* anchor-derived); else from the quantity's own equation evaluated from the table and the
|
|
359
|
+
* constants (`ctx.derivedMagnitudes`, at its propagated σ, never above one decade: not
|
|
360
|
+
* anchor-derived); else — for graph-derived quantities the table omits by design
|
|
361
|
+
* (schwarzschild-radius, thermal-de-broglie-wavelength) — from the quantity's value AT THE
|
|
362
|
+
* REGISTERED ANCHOR, a definite magnitude for this run. The constant and the anchor value take the
|
|
363
|
+
* default σ of one decade. The verdict is `ordersApart > ctx.maxOrders`; `p` is reported beside it.
|
|
364
|
+
*
|
|
365
|
+
* @internal
|
|
366
|
+
*/
|
|
367
|
+
export declare function magnitudeGate(candidate: LinkCandidate, ctx: DiscoveryContext): MagnitudeGate;
|
|
250
368
|
/**
|
|
251
369
|
* Vet one link candidate by hypothesizing the identification a≡b and
|
|
252
370
|
* measuring its structural and numerical consequences. See module docs.
|
|
@@ -265,11 +383,13 @@ export declare function vetLinkCandidate(edges: readonly BridgeEdge[], candidate
|
|
|
265
383
|
export declare function vetInContext(edges: readonly BridgeEdge[], candidate: LinkCandidate, ctx: DiscoveryContext): VettedCandidate;
|
|
266
384
|
/**
|
|
267
385
|
* Run the full discovery funnel: propose cross-cluster candidates, vet each
|
|
268
|
-
* against the inference suite, and rank — `promising` first, then
|
|
386
|
+
* against the inference suite, and rank — `promising` first, then `promising-unchecked`, then
|
|
387
|
+
* the rest, and by score within a verdict.
|
|
269
388
|
* The output is the physicist's worklist (vetted, provenance-traced), not a
|
|
270
389
|
* list of discoveries.
|
|
271
390
|
*
|
|
272
391
|
* @public
|
|
273
392
|
*/
|
|
274
393
|
export declare function rankDiscoveries(edges: readonly BridgeEdge[], opts?: DiscoveryOptions): VettedCandidate[];
|
|
394
|
+
export {};
|
|
275
395
|
//# sourceMappingURL=discovery.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"discovery.d.ts","sourceRoot":"","sources":["../../src/composition/discovery.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAC5C,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAC;AAG3D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAItD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"discovery.d.ts","sourceRoot":"","sources":["../../src/composition/discovery.ts"],"names":[],"mappings":"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"}
|
|
@@ -38,12 +38,15 @@ import { GATE_AXES } from './axes.js';
|
|
|
38
38
|
import { classifyIdentifiability, forwardClosure } from './identifiability.js';
|
|
39
39
|
import { retrodict, retrodictNode, forwardEvaluate } from './retrodiction.js';
|
|
40
40
|
import { proposeLinkCandidates } from './bridge-analysis.js';
|
|
41
|
+
import { clusterBySharedKeys } from './quantity-clusters.js';
|
|
42
|
+
import { normalCDF } from '@danielsimonjr/mathts-functions';
|
|
41
43
|
import { M_SUN_KG } from '../core/constants.js';
|
|
42
|
-
import { REPRESENTATIVE_VALUES } from './representative-values.js';
|
|
44
|
+
import { DEFAULT_SIGMA_DECADES, REPRESENTATIVE_VALUES, sigmaDecadesOf } from './representative-values.js';
|
|
43
45
|
import { conventionScaleToSI } from '../dimensional/unit-convention.js';
|
|
44
46
|
import { allQuantities } from './quantities.js';
|
|
45
47
|
import { CANONICAL_EQUATIONS } from '../canonical/registry.js';
|
|
46
48
|
import { format } from '../dimensional/algebra.js';
|
|
49
|
+
import { deriveOwnEquationMagnitudes } from './own-equation-magnitude.js';
|
|
47
50
|
// ── registry-only attribute lookup (D1 axis gate; Option-A resolution) ─────
|
|
48
51
|
// Built from the centralized `Quantity` nodes ONLY (never canonical
|
|
49
52
|
// per-equation stamps — audit adjudication F1). Names that aren't a
|
|
@@ -80,37 +83,64 @@ const CANONICAL_QUANTITY_NAMES = (() => {
|
|
|
80
83
|
}
|
|
81
84
|
return s;
|
|
82
85
|
})();
|
|
83
|
-
/**
|
|
84
|
-
*
|
|
86
|
+
/**
|
|
87
|
+
* Whether the magnitude falsifier ran on a candidate AND could have failed: both endpoints had a
|
|
88
|
+
* representative magnitude (`magnitudeChecked`) and the comparison is not anchor-invariant. An
|
|
89
|
+
* anchor-invariant pass is fixed by the graph at every anchor, so it cannot fail and is not a
|
|
90
|
+
* check (AGENTS law 2). The one owner of this predicate: the verdict split between `promising`
|
|
91
|
+
* and `promising-unchecked`, the CLI readiness count and the grounding ledger all read it.
|
|
92
|
+
* @internal
|
|
93
|
+
*/
|
|
94
|
+
export function hasMagnitudeEvidence(c) {
|
|
95
|
+
return c.magnitudeChecked && c.magnitudeAnchorInvariant !== true;
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* Whether a verdict is one of the two promising tiers, `promising` (with magnitude evidence) or
|
|
99
|
+
* `promising-unchecked` (without): the structural set the consequence and proposal layers
|
|
100
|
+
* process, so splitting the tiers loses no proposal. A selector, never a count: the two tiers are
|
|
101
|
+
* reported apart and never added (AGENTS law 4).
|
|
102
|
+
* @internal
|
|
103
|
+
*/
|
|
104
|
+
export function isPromisingTier(verdict) {
|
|
105
|
+
return verdict === 'promising' || verdict === 'promising-unchecked';
|
|
106
|
+
}
|
|
107
|
+
/**
|
|
108
|
+
* The component partition of quantity names: names in one equation are one component, and so
|
|
109
|
+
* are the two sides of every identification. The shared partition of `quantity-clusters.ts`
|
|
110
|
+
* (a name is an item; its keys are the equations and identifications it appears in). Returns
|
|
111
|
+
* name → a representative of its component (its first name), read only for equality.
|
|
112
|
+
*
|
|
113
|
+
* An equation with no source (an all-constant right-hand side, `CE-bohr-radius`) registers its
|
|
114
|
+
* target under its own key, so the target is a component member of its own and an identification
|
|
115
|
+
* touching it can merge components (the owner's decision of 2026-10-16, option 1). Before it, the
|
|
116
|
+
* union-find this replaced registered a name only when it took part in a union, so the target of
|
|
117
|
+
* every source-less equation (eight on the canonical graph) was absent from the map and no
|
|
118
|
+
* identification touching it merged anything.
|
|
119
|
+
*/
|
|
85
120
|
function quantityComponents(edges, idents) {
|
|
86
|
-
const
|
|
87
|
-
const
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
let cur = x;
|
|
94
|
-
while (parent.get(cur) !== r) {
|
|
95
|
-
const next = parent.get(cur);
|
|
96
|
-
parent.set(cur, r);
|
|
97
|
-
cur = next;
|
|
98
|
-
}
|
|
99
|
-
return r;
|
|
100
|
-
};
|
|
101
|
-
const union = (a, b) => {
|
|
102
|
-
parent.set(find(a), find(b));
|
|
121
|
+
const keysByName = new Map();
|
|
122
|
+
const tag = (name, key) => {
|
|
123
|
+
const keys = keysByName.get(name);
|
|
124
|
+
if (keys === undefined)
|
|
125
|
+
keysByName.set(name, [key]);
|
|
126
|
+
else
|
|
127
|
+
keys.push(key);
|
|
103
128
|
};
|
|
104
|
-
|
|
105
|
-
const
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
}
|
|
109
|
-
|
|
110
|
-
|
|
129
|
+
edges.forEach((e, i) => {
|
|
130
|
+
for (const s of e.sources)
|
|
131
|
+
tag(s.name, `edge:${i}`);
|
|
132
|
+
tag(e.target.name, `edge:${i}`);
|
|
133
|
+
});
|
|
134
|
+
idents.forEach((id, i) => {
|
|
135
|
+
tag(id.from, `ident:${i}`);
|
|
136
|
+
tag(id.to, `ident:${i}`);
|
|
137
|
+
});
|
|
138
|
+
const names = [...keysByName.keys()];
|
|
111
139
|
const roots = new Map();
|
|
112
|
-
for (const
|
|
113
|
-
|
|
140
|
+
for (const cluster of clusterBySharedKeys(names, (name) => keysByName.get(name) ?? [], (name) => name)) {
|
|
141
|
+
for (const name of cluster)
|
|
142
|
+
roots.set(name, cluster[0]);
|
|
143
|
+
}
|
|
114
144
|
return roots;
|
|
115
145
|
}
|
|
116
146
|
/**
|
|
@@ -161,16 +191,24 @@ export function buildDiscoveryContext(edges, opts) {
|
|
|
161
191
|
const groundTruth = opts.groundTruth ?? ANCHOR_DEFAULT;
|
|
162
192
|
const anchor = Object.keys(groundTruth);
|
|
163
193
|
const baseReport = retrodict(edges, groundTruth, { identifications: baseIdents });
|
|
194
|
+
const repVals = opts.representativeValues ?? REPRESENTATIVE_VALUES;
|
|
195
|
+
const constantValues = forwardEvaluate(edges, {}, baseIdents);
|
|
164
196
|
return {
|
|
165
197
|
baseIdents,
|
|
166
198
|
groundTruth,
|
|
167
199
|
anchor,
|
|
168
|
-
repVals
|
|
200
|
+
repVals,
|
|
169
201
|
maxOrders: opts.maxOrdersOfMagnitude ?? DEFAULT_MAX_ORDERS_OF_MAGNITUDE,
|
|
170
202
|
attributesByName: opts.quantityAttributes ?? REGISTRY_ATTRIBUTES_BY_NAME,
|
|
171
203
|
// Candidate-invariant: the anchor's forward evaluation, the base component
|
|
172
204
|
// partition, and the base forward closure all depend only on (edges, opts).
|
|
173
205
|
anchorValues: forwardEvaluate(edges, groundTruth, baseIdents),
|
|
206
|
+
constantValues,
|
|
207
|
+
derivedMagnitudes: deriveOwnEquationMagnitudes(edges, {
|
|
208
|
+
representativeValues: repVals,
|
|
209
|
+
constantValues,
|
|
210
|
+
identifications: baseIdents,
|
|
211
|
+
}),
|
|
174
212
|
anchorValuesProbe: forwardEvaluate(edges, Object.fromEntries(Object.entries(groundTruth).map(([k, v]) => [k, v * ANCHOR_PROBE_FACTOR])), baseIdents),
|
|
175
213
|
comps: quantityComponents(edges, baseIdents),
|
|
176
214
|
closureBase: forwardClosure(edges, anchor, baseIdents),
|
|
@@ -231,54 +269,116 @@ function newInconsistencies(edges, groundTruth, anchor, candidate, withHyp, base
|
|
|
231
269
|
}
|
|
232
270
|
return nodes;
|
|
233
271
|
}
|
|
272
|
+
/** MathTS `normalCDF`, read back as the number it is. */
|
|
273
|
+
function phi(z) {
|
|
274
|
+
const v = normalCDF(z);
|
|
275
|
+
if (typeof v !== 'number')
|
|
276
|
+
throw new TypeError('normalCDF did not return a number for a number argument');
|
|
277
|
+
return v;
|
|
278
|
+
}
|
|
234
279
|
/**
|
|
235
|
-
*
|
|
236
|
-
*
|
|
280
|
+
* The two-sided tail of a gap of `orders` decades between two values whose log10 carry
|
|
281
|
+
* standard deviations `sigmaA` and `sigmaB` decades: `2·Φ(−orders/√(σ_a² + σ_b²))`, through the
|
|
282
|
+
* NEGATIVE argument (`1 − Φ` rounds a far tail to 0; the lower tail is accurate). A strength of
|
|
283
|
+
* the falsifier, not a credibility score.
|
|
237
284
|
*
|
|
238
285
|
* @internal
|
|
239
286
|
*/
|
|
240
|
-
export function
|
|
241
|
-
return
|
|
287
|
+
export function magnitudeStrength(orders, sigmaA, sigmaB) {
|
|
288
|
+
return 2 * phi(-orders / Math.sqrt(sigmaA * sigmaA + sigmaB * sigmaB));
|
|
242
289
|
}
|
|
243
290
|
/**
|
|
244
|
-
* The
|
|
245
|
-
*
|
|
246
|
-
*
|
|
247
|
-
*
|
|
291
|
+
* The magnitude gate: an INDEPENDENT falsifier the single-anchor graph cannot make. It runs only
|
|
292
|
+
* when both endpoints have a representative value and abstains (never false-rejects) otherwise.
|
|
293
|
+
* A value comes from the sourced static table first; else from the value the graph fixes with NO
|
|
294
|
+
* anchor input (a constant computed from registered constants alone, `ctx.constantValues`: not
|
|
295
|
+
* anchor-derived); else from the quantity's own equation evaluated from the table and the
|
|
296
|
+
* constants (`ctx.derivedMagnitudes`, at its propagated σ, never above one decade: not
|
|
297
|
+
* anchor-derived); else — for graph-derived quantities the table omits by design
|
|
298
|
+
* (schwarzschild-radius, thermal-de-broglie-wavelength) — from the quantity's value AT THE
|
|
299
|
+
* REGISTERED ANCHOR, a definite magnitude for this run. The constant and the anchor value take the
|
|
300
|
+
* default σ of one decade. The verdict is `ordersApart > ctx.maxOrders`; `p` is reported beside it.
|
|
248
301
|
*
|
|
249
302
|
* @internal
|
|
250
303
|
*/
|
|
251
|
-
export function
|
|
252
|
-
const { baseIdents, groundTruth, anchor, repVals, maxOrders, anchorValues, anchorValuesProbe, comps, closureBase, attributesByName, baseInconsistentNodes, } = ctx;
|
|
253
|
-
// Magnitude gate: an INDEPENDENT falsifier the single-anchor graph can't make.
|
|
254
|
-
// Only fires when both endpoints have a representative value; abstains (and
|
|
255
|
-
// never false-rejects) otherwise. A value comes from the sourced static table
|
|
256
|
-
// first, else — for graph-derived quantities the table omits by design
|
|
257
|
-
// (schwarzschild-radius, thermal-de-broglie-wavelength) — from the quantity's
|
|
258
|
-
// value AT THE REGISTERED ANCHOR, which is a definite magnitude for this run.
|
|
304
|
+
export function magnitudeGate(candidate, ctx) {
|
|
259
305
|
const magnitudeOf = (name) => {
|
|
260
|
-
const rv = repVals[name];
|
|
306
|
+
const rv = ctx.repVals[name];
|
|
261
307
|
// Both paths apply the same finite-and-nonzero gate: a 0/∞/NaN magnitude
|
|
262
308
|
// would make log10 blow up (log10(0) = -∞), spoofing or silently disabling
|
|
263
309
|
// the falsifier. Symmetric validation across the table and anchor sources.
|
|
264
|
-
if (rv !== undefined && Number.isFinite(rv.value) && rv.value !== 0)
|
|
265
|
-
return { value: rv.value, fromAnchor: false };
|
|
266
|
-
|
|
310
|
+
if (rv !== undefined && Number.isFinite(rv.value) && rv.value !== 0) {
|
|
311
|
+
return { value: rv.value, fromAnchor: false, fromOwnEquation: false, sigmaDecades: sigmaDecadesOf(rv) };
|
|
312
|
+
}
|
|
313
|
+
// A value the graph fixes with no anchor input is a constant: comparing it can fail by the
|
|
314
|
+
// clash threshold at every anchor, so it is not anchor-derived and the invariance probe does
|
|
315
|
+
// not withhold it. Only a value that needs the anchor is `fromAnchor`.
|
|
316
|
+
const cv = ctx.constantValues.get(name);
|
|
317
|
+
if (cv !== undefined) {
|
|
318
|
+
const value = cv * conventionScaleToSI(name);
|
|
319
|
+
if (Number.isFinite(value) && value !== 0) {
|
|
320
|
+
return { value, fromAnchor: false, fromOwnEquation: false, sigmaDecades: DEFAULT_SIGMA_DECADES };
|
|
321
|
+
}
|
|
322
|
+
}
|
|
323
|
+
// The quantity's own equation, from the table and the constants alone (already in SI, and
|
|
324
|
+
// already refused when its σ is above one decade): not anchor-derived either.
|
|
325
|
+
const dv = ctx.derivedMagnitudes.values.get(name);
|
|
326
|
+
if (dv !== undefined) {
|
|
327
|
+
return { value: dv.value, fromAnchor: false, fromOwnEquation: true, sigmaDecades: dv.sigmaDecades };
|
|
328
|
+
}
|
|
329
|
+
const av = ctx.anchorValues.get(name);
|
|
267
330
|
if (av !== undefined) {
|
|
268
331
|
const value = av * conventionScaleToSI(name);
|
|
269
|
-
if (Number.isFinite(value) && value !== 0)
|
|
270
|
-
return { value, fromAnchor: true };
|
|
332
|
+
if (Number.isFinite(value) && value !== 0) {
|
|
333
|
+
return { value, fromAnchor: true, fromOwnEquation: false, sigmaDecades: DEFAULT_SIGMA_DECADES };
|
|
334
|
+
}
|
|
271
335
|
}
|
|
272
336
|
return undefined;
|
|
273
337
|
};
|
|
274
|
-
const
|
|
275
|
-
const
|
|
276
|
-
const
|
|
277
|
-
const
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
338
|
+
const a = magnitudeOf(candidate.a);
|
|
339
|
+
const b = magnitudeOf(candidate.b);
|
|
340
|
+
const checked = a !== undefined && b !== undefined;
|
|
341
|
+
const ordersApart = checked ? Math.abs(Math.log10(Math.abs(a.value)) - Math.log10(Math.abs(b.value))) : null;
|
|
342
|
+
return {
|
|
343
|
+
a,
|
|
344
|
+
b,
|
|
345
|
+
checked,
|
|
346
|
+
usedAnchor: checked && (a.fromAnchor || b.fromAnchor),
|
|
347
|
+
ordersApart,
|
|
348
|
+
clash: ordersApart !== null && ordersApart > ctx.maxOrders,
|
|
349
|
+
p: checked && ordersApart !== null ? magnitudeStrength(ordersApart, a.sigmaDecades, b.sigmaDecades) : null,
|
|
350
|
+
missing: [a === undefined ? candidate.a : null, b === undefined ? candidate.b : null].filter((e) => e !== null),
|
|
351
|
+
derived: [a?.fromOwnEquation === true ? candidate.a : null, b?.fromOwnEquation === true ? candidate.b : null].filter((e) => e !== null),
|
|
352
|
+
};
|
|
353
|
+
}
|
|
354
|
+
/**
|
|
355
|
+
* Vet one link candidate by hypothesizing the identification a≡b and
|
|
356
|
+
* measuring its structural and numerical consequences. See module docs.
|
|
357
|
+
*
|
|
358
|
+
* @internal
|
|
359
|
+
*/
|
|
360
|
+
export function vetLinkCandidate(edges, candidate, opts = {}) {
|
|
361
|
+
return vetInContext(edges, candidate, buildDiscoveryContext(edges, opts));
|
|
362
|
+
}
|
|
363
|
+
/**
|
|
364
|
+
* The per-candidate vetting body, given pre-computed candidate-invariant
|
|
365
|
+
* `ctx`. The hypothesis-augmented closure is per-candidate. Retrodiction is
|
|
366
|
+
* per-candidate only when an endpoint is already in the anchor closure;
|
|
367
|
+
* otherwise the identification cannot fire and the base report stands.
|
|
368
|
+
*
|
|
369
|
+
* @internal
|
|
370
|
+
*/
|
|
371
|
+
export function vetInContext(edges, candidate, ctx) {
|
|
372
|
+
const { baseIdents, groundTruth, anchor, anchorValuesProbe, comps, closureBase, attributesByName, baseInconsistentNodes, } = ctx;
|
|
373
|
+
// Magnitude gate: an INDEPENDENT falsifier the single-anchor graph can't make
|
|
374
|
+
// (`magnitudeGate`): the verdict is the hard threshold, `p` its calibrated strength.
|
|
375
|
+
const gate = magnitudeGate(candidate, ctx);
|
|
376
|
+
const va = gate.a;
|
|
377
|
+
const vb = gate.b;
|
|
378
|
+
const magnitudeChecked = gate.checked;
|
|
379
|
+
const magnitudeUsedAnchor = gate.usedAnchor;
|
|
380
|
+
const ordersApart = gate.ordersApart;
|
|
381
|
+
const magnitudeClash = gate.clash;
|
|
282
382
|
// Anchor-invariance probe: re-read each anchor-derived magnitude at the
|
|
283
383
|
// rescaled anchor. A table value is a constant and does not move.
|
|
284
384
|
const probeOf = (name, m) => {
|
|
@@ -380,7 +480,7 @@ export function vetInContext(edges, candidate, ctx) {
|
|
|
380
480
|
else if (axisClash)
|
|
381
481
|
verdict = 'axis-clash';
|
|
382
482
|
else if (mergesComponents && unlocksFromAnchor.length > 0 && !subsuming)
|
|
383
|
-
verdict = 'promising';
|
|
483
|
+
verdict = hasMagnitudeEvidence({ magnitudeChecked, magnitudeAnchorInvariant }) ? 'promising' : 'promising-unchecked';
|
|
384
484
|
else
|
|
385
485
|
verdict = 'inert';
|
|
386
486
|
// Score: all falsifications sink to the bottom; a subsuming (tautological)
|
|
@@ -413,10 +513,12 @@ export function vetInContext(edges, candidate, ctx) {
|
|
|
413
513
|
numericallyConsistent,
|
|
414
514
|
inconsistentNodes,
|
|
415
515
|
ordersApart,
|
|
516
|
+
magnitudeP: gate.p,
|
|
416
517
|
magnitudeChecked,
|
|
417
518
|
magnitudeUsedAnchor,
|
|
418
519
|
magnitudeAnchorInvariant,
|
|
419
|
-
|
|
520
|
+
magnitudeDerived: gate.derived,
|
|
521
|
+
magnitudeMissing: gate.missing,
|
|
420
522
|
axisUnstated,
|
|
421
523
|
subsuming,
|
|
422
524
|
verdict,
|
|
@@ -429,7 +531,8 @@ export function vetInContext(edges, candidate, ctx) {
|
|
|
429
531
|
}
|
|
430
532
|
/**
|
|
431
533
|
* Run the full discovery funnel: propose cross-cluster candidates, vet each
|
|
432
|
-
* against the inference suite, and rank — `promising` first, then
|
|
534
|
+
* against the inference suite, and rank — `promising` first, then `promising-unchecked`, then
|
|
535
|
+
* the rest, and by score within a verdict.
|
|
433
536
|
* The output is the physicist's worklist (vetted, provenance-traced), not a
|
|
434
537
|
* list of discoveries.
|
|
435
538
|
*
|
|
@@ -438,10 +541,11 @@ export function vetInContext(edges, candidate, ctx) {
|
|
|
438
541
|
export function rankDiscoveries(edges, opts = {}) {
|
|
439
542
|
const VERDICT_RANK = {
|
|
440
543
|
promising: 0,
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
|
|
444
|
-
|
|
544
|
+
'promising-unchecked': 1,
|
|
545
|
+
inert: 2,
|
|
546
|
+
'magnitude-clash': 3,
|
|
547
|
+
contradictory: 4,
|
|
548
|
+
'axis-clash': 5,
|
|
445
549
|
};
|
|
446
550
|
const ctx = buildDiscoveryContext(edges, opts);
|
|
447
551
|
const candidates = proposeLinkCandidates(edges);
|