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":"witness-numeric.d.ts","sourceRoot":"","sources":["../../src/atlas/witness-numeric.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"witness-numeric.d.ts","sourceRoot":"","sources":["../../src/atlas/witness-numeric.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsCG;AAGH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAE5D,2EAA2E;AAC3E,MAAM,WAAW,WAAW;IAC1B,oDAAoD;IACpD,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,uBAAuB;IACvB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB;;;;;;OAMG;IACH,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;CACxB;AAED;;;;;;GAMG;AACH,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,wEAAwE;AACxE,MAAM,WAAW,kBAAkB;IACjC,wBAAwB;IACxB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB;;;;OAIG;IACH,QAAQ,CAAC,QAAQ,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,MAAM,CAAC;IAClD,mFAAmF;IACnF,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAClC,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC;;;;;;OAMG;IACH,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B;;;;OAIG;IACH,QAAQ,CAAC,gBAAgB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CAC/C;AAED,mFAAmF;AACnF,MAAM,WAAW,uBAAwB,SAAQ,gBAAgB;IAC/D,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;IACzB,mEAAmE;IACnE,QAAQ,CAAC,WAAW,CAAC,EAAE,WAAW,CAAC;IACnC,8FAA8F;IAC9F,QAAQ,CAAC,aAAa,CAAC,EAAE,aAAa,CAAC;CACxC;AAoCD;;;;;;;;GAQG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,kBAAkB,GAAG,uBAAuB,CA+GnF"}
|
|
@@ -24,9 +24,54 @@
|
|
|
24
24
|
* inside the tolerance while refinement is not converging is agreement by
|
|
25
25
|
* accident, and the tolerance alone cannot tell the two apart.
|
|
26
26
|
*
|
|
27
|
+
* ## An observed order is REPORTED beside the ratio, from three or more resolutions
|
|
28
|
+
*
|
|
29
|
+
* A spec may name further resolutions (`orderResolutions`). With three or
|
|
30
|
+
* more in all, MathTS `linearRegression` of log|error| on log(1/resolution)
|
|
31
|
+
* gives an OBSERVED order with the slope's standard error, carried as
|
|
32
|
+
* {@link ObservedOrder}. The same rule applies: nothing compares it with an
|
|
33
|
+
* expected order, and it changes no verdict. The extra resolutions are
|
|
34
|
+
* evaluated after the two-resolution verdict is fixed; one that throws, is
|
|
35
|
+
* non-finite, or lands exactly on the target drops the fit and nothing else.
|
|
36
|
+
*
|
|
27
37
|
* @module atlas/witness-numeric
|
|
28
38
|
* @internal
|
|
29
39
|
*/
|
|
40
|
+
import { linearRegression } from '@danielsimonjr/mathts-functions';
|
|
41
|
+
/**
|
|
42
|
+
* The observed order over the resolutions whose errors are all finite and
|
|
43
|
+
* positive, or `undefined` when fewer than three are, or an extra
|
|
44
|
+
* evaluation throws. The fit is log|error| against log(1/resolution).
|
|
45
|
+
*/
|
|
46
|
+
function observedOrderOf(spec, errors) {
|
|
47
|
+
const points = [...errors];
|
|
48
|
+
try {
|
|
49
|
+
for (const resolution of spec.orderResolutions ?? []) {
|
|
50
|
+
points.push({ resolution, error: Math.abs(spec.evaluate(resolution) - spec.target) });
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
catch {
|
|
54
|
+
return undefined;
|
|
55
|
+
}
|
|
56
|
+
if (points.length < 3)
|
|
57
|
+
return undefined;
|
|
58
|
+
if (!points.every((p) => Number.isFinite(p.error) && p.error > 0 && Number.isFinite(p.resolution) && p.resolution > 0)) {
|
|
59
|
+
return undefined;
|
|
60
|
+
}
|
|
61
|
+
const x = points.map((p) => -Math.log(p.resolution));
|
|
62
|
+
const y = points.map((p) => Math.log(p.error));
|
|
63
|
+
const fit = linearRegression(x, y);
|
|
64
|
+
if (!Number.isFinite(fit.slope) || !Number.isFinite(fit.intercept))
|
|
65
|
+
return undefined;
|
|
66
|
+
// From @danielsimonjr/mathts-functions 0.68.5 (MathTS #371) the slope's standard error is the
|
|
67
|
+
// residual form √(Σ(y − ŷ)²/((n − 2) Σ(x − x̄)²)); before it, `syy − slope·sxy` cancelled on a
|
|
68
|
+
// near-exact fit and went negative, so an exact power law with rounded errors reported NaN and
|
|
69
|
+
// this runner recomputed the residual form itself. A non-finite value is still not reported.
|
|
70
|
+
const stdErr = fit.stdErr;
|
|
71
|
+
if (!Number.isFinite(stdErr))
|
|
72
|
+
return undefined;
|
|
73
|
+
return { slope: fit.slope, stdErr, n: points.length };
|
|
74
|
+
}
|
|
30
75
|
/**
|
|
31
76
|
* Run one numeric witness at two resolutions.
|
|
32
77
|
*
|
|
@@ -85,6 +130,11 @@ export function runNumericWitness(spec) {
|
|
|
85
130
|
// zero is 0/0: no ratio exists, and that case is reported on its own below.
|
|
86
131
|
const ratio = fine === 0 ? (coarse === 0 ? Number.NaN : Infinity) : coarse / fine;
|
|
87
132
|
const convergence = { coarse, fine, ratio };
|
|
133
|
+
const order = observedOrderOf(spec, [
|
|
134
|
+
{ resolution: spec.coarseResolution, error: coarse },
|
|
135
|
+
{ resolution: spec.fineResolution, error: fine },
|
|
136
|
+
]);
|
|
137
|
+
const observed = order === undefined ? {} : { observedOrder: order };
|
|
88
138
|
if (coarse === 0 && fine === 0) {
|
|
89
139
|
return {
|
|
90
140
|
...base,
|
|
@@ -101,6 +151,7 @@ export function runNumericWitness(spec) {
|
|
|
101
151
|
...base,
|
|
102
152
|
status: 'refuted',
|
|
103
153
|
convergence,
|
|
154
|
+
...observed,
|
|
104
155
|
detail: `The fine evaluation misses the target by ${fine}, outside the stated ` +
|
|
105
156
|
`tolerance ${spec.tolerance}.`,
|
|
106
157
|
elapsedMs: elapsed(),
|
|
@@ -112,6 +163,7 @@ export function runNumericWitness(spec) {
|
|
|
112
163
|
status: 'unresolved',
|
|
113
164
|
reason: 'no-convergence',
|
|
114
165
|
convergence,
|
|
166
|
+
...observed,
|
|
115
167
|
detail: `Refinement did not reduce the error (ratio ${ratio}). The fine value is ` +
|
|
116
168
|
'inside tolerance, but agreement that does not improve with refinement is ' +
|
|
117
169
|
'not evidence that the scheme converges to the target.',
|
|
@@ -122,6 +174,7 @@ export function runNumericWitness(spec) {
|
|
|
122
174
|
...base,
|
|
123
175
|
status: 'checked',
|
|
124
176
|
convergence,
|
|
177
|
+
...observed,
|
|
125
178
|
detail: `Fine error ${fine} is within tolerance ${spec.tolerance}, and refinement ` +
|
|
126
179
|
`reduced the error by a factor of ${ratio}.`,
|
|
127
180
|
elapsedMs: elapsed(),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"witness-numeric.js","sourceRoot":"","sources":["../../src/atlas/witness-numeric.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Atlas Phase 4, S4.2 — the numeric witness runner.\n *\n * Design note: `docs/planning/Atlas-Phase-4-Design.md` §2.3.\n *\n * A numeric witness evaluates a claim at TWO resolutions and reports whether\n * refinement moved the answer toward the target. Two resolutions are the\n * minimum that can say anything at all: one number agreeing with a target is\n * consistent with a scheme that is simply wrong by an amount the tolerance\n * happens to admit.\n *\n * ## The ratio is REPORTED, never compared against an expected order\n *\n * `convergence.ratio = |coarse − target| / |fine − target|` is the factor by\n * which refinement reduced the error. A second-order scheme halving its step\n * should give ≈ 4; a first-order one ≈ 2. **Nothing here asserts which.** The\n * witnesses in hand do not all record their scheme's order, and asserting an\n * order nobody wrote down would be fabrication of exactly the kind this sprint\n * forbids. The number goes into the results artifact; a reviewer reads it.\n *\n * What the runner DOES decide is the weaker, checkable thing: a ratio at or\n * below 1 means refinement did NOT improve the answer, and that earns\n * `'unresolved'` rather than `'checked'` — a fine value that happens to land\n * inside the tolerance while refinement is not converging is agreement by\n * accident, and the tolerance alone cannot tell the two apart.\n *\n * @module atlas/witness-numeric\n * @internal\n */\n\nimport type { WitnessRunResult } from './witness-result.js';\n\n/** The two-resolution error record a numeric witness carries. @internal */\nexport interface Convergence {\n /** |coarse − target| in the witness's own units. */\n readonly coarse: number;\n /** |fine − target|. */\n readonly fine: number;\n /**\n * `coarse / fine`. Greater than 1 ⇒ refinement helped. `Infinity` when the\n * fine error is exactly zero and the coarse one is not, which is a\n * legitimate outcome for an exact scheme and must not be reported as a\n * failure. `NaN` when BOTH errors are exactly zero: `0/0` has no value,\n * and the run is `'unresolved'` with reason `'no-error-to-reduce'`.\n */\n readonly ratio: number;\n}\n\n/** What a numeric witness asserts, and how to evaluate it. @internal */\nexport interface NumericWitnessSpec {\n /** The `Witness.id`. */\n readonly id: string;\n /**\n * Evaluate the claim at a resolution. The meaning of the argument is the\n * witness's own (a step count, a grid size, a truncation order); the runner\n * only requires that `fineResolution` is the more refined of the two.\n */\n readonly evaluate: (resolution: number) => number;\n /** The value the claim should reproduce. A non-finite target is `'unresolved'`. */\n readonly target: number;\n readonly coarseResolution: number;\n readonly fineResolution: number;\n /**\n * Absolute tolerance the FINE evaluation must meet. Required: a default\n * tolerance is a claim about accuracy that the caller, not this module,\n * is entitled to make. A tolerance that is not a finite number ≥ 0 is\n * `'unresolved'`: `fine > NaN` is false, so a NaN here would otherwise\n * report `'checked'` for any fine value.\n */\n readonly tolerance: number;\n}\n\n/** A result that also carries the two-resolution record, when one was produced. */\nexport interface NumericWitnessRunResult extends WitnessRunResult {\n readonly kind: 'numeric';\n /** Absent only when evaluation threw before any number existed. */\n readonly convergence?: Convergence;\n}\n\n/**\n * Run one numeric witness at two resolutions.\n *\n * @param spec - the claim and its two resolutions.\n * @returns a result carrying `convergence`; **never throws** — an evaluation\n * that throws is `'unresolved'` with `'parse-error'`, because a scheme that\n * blew up has not refuted the physics it was evaluating.\n * @internal\n */\nexport function runNumericWitness(spec: NumericWitnessSpec): NumericWitnessRunResult {\n const started = Date.now();\n const base = { witnessId: spec.id, kind: 'numeric' as const };\n const elapsed = (): number => Date.now() - started;\n\n // A NaN target or tolerance makes every comparison below false, which\n // would read as `'checked'`. Nothing is evaluated against a claim that\n // does not state a finite target and a finite, non-negative tolerance.\n if (!Number.isFinite(spec.target) || !Number.isFinite(spec.tolerance) || spec.tolerance < 0) {\n return {\n ...base,\n status: 'unresolved',\n reason: 'parse-error',\n detail:\n `The claim does not state a finite target and a finite non-negative tolerance ` +\n `(target ${spec.target}, tolerance ${spec.tolerance}). Nothing is concluded from it.`,\n elapsedMs: elapsed(),\n };\n }\n\n let coarseValue: number;\n let fineValue: number;\n try {\n coarseValue = spec.evaluate(spec.coarseResolution);\n fineValue = spec.evaluate(spec.fineResolution);\n } catch (err) {\n return {\n ...base,\n status: 'unresolved',\n reason: 'parse-error',\n detail: `Evaluation threw rather than producing a number: ${String(err)}.`,\n elapsedMs: elapsed(),\n };\n }\n\n if (!Number.isFinite(coarseValue) || !Number.isFinite(fineValue)) {\n return {\n ...base,\n status: 'unresolved',\n reason: 'parse-error',\n detail:\n `Evaluation produced a non-finite value (coarse ${coarseValue}, fine ` +\n `${fineValue}). Nothing is concluded from it.`,\n elapsedMs: elapsed(),\n };\n }\n\n const coarse = Math.abs(coarseValue - spec.target);\n const fine = Math.abs(fineValue - spec.target);\n // fine === 0 ⇒ an exact scheme. Infinity is the honest ratio there, and the\n // comparisons below treat it as \"refinement helped\", which it did. Both\n // zero is 0/0: no ratio exists, and that case is reported on its own below.\n const ratio = fine === 0 ? (coarse === 0 ? Number.NaN : Infinity) : coarse / fine;\n const convergence: Convergence = { coarse, fine, ratio };\n\n if (coarse === 0 && fine === 0) {\n return {\n ...base,\n status: 'unresolved',\n reason: 'no-error-to-reduce',\n convergence,\n detail:\n 'Both resolutions reproduce the target exactly, so there was no error for ' +\n 'refinement to reduce. Agreement is recorded; convergence is not shown.',\n elapsedMs: elapsed(),\n };\n }\n\n if (fine > spec.tolerance) {\n return {\n ...base,\n status: 'refuted',\n convergence,\n detail:\n `The fine evaluation misses the target by ${fine}, outside the stated ` +\n `tolerance ${spec.tolerance}.`,\n elapsedMs: elapsed(),\n };\n }\n\n if (ratio <= 1) {\n return {\n ...base,\n status: 'unresolved',\n reason: 'no-convergence',\n convergence,\n detail:\n `Refinement did not reduce the error (ratio ${ratio}). The fine value is ` +\n 'inside tolerance, but agreement that does not improve with refinement is ' +\n 'not evidence that the scheme converges to the target.',\n elapsedMs: elapsed(),\n };\n }\n\n return {\n ...base,\n status: 'checked',\n convergence,\n detail:\n `Fine error ${fine} is within tolerance ${spec.tolerance}, and refinement ` +\n `reduced the error by a factor of ${ratio}.`,\n elapsedMs: elapsed(),\n };\n}\n"]}
|
|
1
|
+
{"version":3,"file":"witness-numeric.js","sourceRoot":"","sources":["../../src/atlas/witness-numeric.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Atlas Phase 4, S4.2 — the numeric witness runner.\n *\n * Design note: `docs/planning/Atlas-Phase-4-Design.md` §2.3.\n *\n * A numeric witness evaluates a claim at TWO resolutions and reports whether\n * refinement moved the answer toward the target. Two resolutions are the\n * minimum that can say anything at all: one number agreeing with a target is\n * consistent with a scheme that is simply wrong by an amount the tolerance\n * happens to admit.\n *\n * ## The ratio is REPORTED, never compared against an expected order\n *\n * `convergence.ratio = |coarse − target| / |fine − target|` is the factor by\n * which refinement reduced the error. A second-order scheme halving its step\n * should give ≈ 4; a first-order one ≈ 2. **Nothing here asserts which.** The\n * witnesses in hand do not all record their scheme's order, and asserting an\n * order nobody wrote down would be fabrication of exactly the kind this sprint\n * forbids. The number goes into the results artifact; a reviewer reads it.\n *\n * What the runner DOES decide is the weaker, checkable thing: a ratio at or\n * below 1 means refinement did NOT improve the answer, and that earns\n * `'unresolved'` rather than `'checked'` — a fine value that happens to land\n * inside the tolerance while refinement is not converging is agreement by\n * accident, and the tolerance alone cannot tell the two apart.\n *\n * ## An observed order is REPORTED beside the ratio, from three or more resolutions\n *\n * A spec may name further resolutions (`orderResolutions`). With three or\n * more in all, MathTS `linearRegression` of log|error| on log(1/resolution)\n * gives an OBSERVED order with the slope's standard error, carried as\n * {@link ObservedOrder}. The same rule applies: nothing compares it with an\n * expected order, and it changes no verdict. The extra resolutions are\n * evaluated after the two-resolution verdict is fixed; one that throws, is\n * non-finite, or lands exactly on the target drops the fit and nothing else.\n *\n * @module atlas/witness-numeric\n * @internal\n */\n\nimport { linearRegression } from '@danielsimonjr/mathts-functions';\nimport type { WitnessRunResult } from './witness-result.js';\n\n/** The two-resolution error record a numeric witness carries. @internal */\nexport interface Convergence {\n /** |coarse − target| in the witness's own units. */\n readonly coarse: number;\n /** |fine − target|. */\n readonly fine: number;\n /**\n * `coarse / fine`. Greater than 1 ⇒ refinement helped. `Infinity` when the\n * fine error is exactly zero and the coarse one is not, which is a\n * legitimate outcome for an exact scheme and must not be reported as a\n * failure. `NaN` when BOTH errors are exactly zero: `0/0` has no value,\n * and the run is `'unresolved'` with reason `'no-error-to-reduce'`.\n */\n readonly ratio: number;\n}\n\n/**\n * The observed order of convergence over `n` resolutions: `slope` is the\n * fitted exponent p in |error| ∝ h^p with h = 1/resolution (the slope of\n * log|error| against log(1/resolution)), `stdErr` the standard error of that\n * slope from the fit (n − 2 degrees of freedom). Reported, never asserted.\n * @internal\n */\nexport interface ObservedOrder {\n readonly slope: number;\n readonly stdErr: number;\n readonly n: number;\n}\n\n/** What a numeric witness asserts, and how to evaluate it. @internal */\nexport interface NumericWitnessSpec {\n /** The `Witness.id`. */\n readonly id: string;\n /**\n * Evaluate the claim at a resolution. The meaning of the argument is the\n * witness's own (a step count, a grid size, a truncation order); the runner\n * only requires that `fineResolution` is the more refined of the two.\n */\n readonly evaluate: (resolution: number) => number;\n /** The value the claim should reproduce. A non-finite target is `'unresolved'`. */\n readonly target: number;\n readonly coarseResolution: number;\n readonly fineResolution: number;\n /**\n * Absolute tolerance the FINE evaluation must meet. Required: a default\n * tolerance is a claim about accuracy that the caller, not this module,\n * is entitled to make. A tolerance that is not a finite number ≥ 0 is\n * `'unresolved'`: `fine > NaN` is false, so a NaN here would otherwise\n * report `'checked'` for any fine value.\n */\n readonly tolerance: number;\n /**\n * Further resolutions, beyond `coarseResolution` and `fineResolution`,\n * evaluated only to fit the observed order. They enter no verdict, no\n * convergence record and no detail sentence.\n */\n readonly orderResolutions?: readonly number[];\n}\n\n/** A result that also carries the two-resolution record, when one was produced. */\nexport interface NumericWitnessRunResult extends WitnessRunResult {\n readonly kind: 'numeric';\n /** Absent only when evaluation threw before any number existed. */\n readonly convergence?: Convergence;\n /** Present only when `orderResolutions` gave three or more finite, non-zero errors to fit. */\n readonly observedOrder?: ObservedOrder;\n}\n\n/**\n * The observed order over the resolutions whose errors are all finite and\n * positive, or `undefined` when fewer than three are, or an extra\n * evaluation throws. The fit is log|error| against log(1/resolution).\n */\nfunction observedOrderOf(\n spec: NumericWitnessSpec,\n errors: readonly { readonly resolution: number; readonly error: number }[],\n): ObservedOrder | undefined {\n const points = [...errors];\n try {\n for (const resolution of spec.orderResolutions ?? []) {\n points.push({ resolution, error: Math.abs(spec.evaluate(resolution) - spec.target) });\n }\n } catch {\n return undefined;\n }\n if (points.length < 3) return undefined;\n if (!points.every((p) => Number.isFinite(p.error) && p.error > 0 && Number.isFinite(p.resolution) && p.resolution > 0)) {\n return undefined;\n }\n const x = points.map((p) => -Math.log(p.resolution));\n const y = points.map((p) => Math.log(p.error));\n const fit = linearRegression(x, y);\n if (!Number.isFinite(fit.slope) || !Number.isFinite(fit.intercept)) return undefined;\n // From @danielsimonjr/mathts-functions 0.68.5 (MathTS #371) the slope's standard error is the\n // residual form √(Σ(y − ŷ)²/((n − 2) Σ(x − x̄)²)); before it, `syy − slope·sxy` cancelled on a\n // near-exact fit and went negative, so an exact power law with rounded errors reported NaN and\n // this runner recomputed the residual form itself. A non-finite value is still not reported.\n const stdErr: number = fit.stdErr;\n if (!Number.isFinite(stdErr)) return undefined;\n return { slope: fit.slope, stdErr, n: points.length };\n}\n\n/**\n * Run one numeric witness at two resolutions.\n *\n * @param spec - the claim and its two resolutions.\n * @returns a result carrying `convergence`; **never throws** — an evaluation\n * that throws is `'unresolved'` with `'parse-error'`, because a scheme that\n * blew up has not refuted the physics it was evaluating.\n * @internal\n */\nexport function runNumericWitness(spec: NumericWitnessSpec): NumericWitnessRunResult {\n const started = Date.now();\n const base = { witnessId: spec.id, kind: 'numeric' as const };\n const elapsed = (): number => Date.now() - started;\n\n // A NaN target or tolerance makes every comparison below false, which\n // would read as `'checked'`. Nothing is evaluated against a claim that\n // does not state a finite target and a finite, non-negative tolerance.\n if (!Number.isFinite(spec.target) || !Number.isFinite(spec.tolerance) || spec.tolerance < 0) {\n return {\n ...base,\n status: 'unresolved',\n reason: 'parse-error',\n detail:\n `The claim does not state a finite target and a finite non-negative tolerance ` +\n `(target ${spec.target}, tolerance ${spec.tolerance}). Nothing is concluded from it.`,\n elapsedMs: elapsed(),\n };\n }\n\n let coarseValue: number;\n let fineValue: number;\n try {\n coarseValue = spec.evaluate(spec.coarseResolution);\n fineValue = spec.evaluate(spec.fineResolution);\n } catch (err) {\n return {\n ...base,\n status: 'unresolved',\n reason: 'parse-error',\n detail: `Evaluation threw rather than producing a number: ${String(err)}.`,\n elapsedMs: elapsed(),\n };\n }\n\n if (!Number.isFinite(coarseValue) || !Number.isFinite(fineValue)) {\n return {\n ...base,\n status: 'unresolved',\n reason: 'parse-error',\n detail:\n `Evaluation produced a non-finite value (coarse ${coarseValue}, fine ` +\n `${fineValue}). Nothing is concluded from it.`,\n elapsedMs: elapsed(),\n };\n }\n\n const coarse = Math.abs(coarseValue - spec.target);\n const fine = Math.abs(fineValue - spec.target);\n // fine === 0 ⇒ an exact scheme. Infinity is the honest ratio there, and the\n // comparisons below treat it as \"refinement helped\", which it did. Both\n // zero is 0/0: no ratio exists, and that case is reported on its own below.\n const ratio = fine === 0 ? (coarse === 0 ? Number.NaN : Infinity) : coarse / fine;\n const convergence: Convergence = { coarse, fine, ratio };\n const order = observedOrderOf(spec, [\n { resolution: spec.coarseResolution, error: coarse },\n { resolution: spec.fineResolution, error: fine },\n ]);\n const observed = order === undefined ? {} : { observedOrder: order };\n\n if (coarse === 0 && fine === 0) {\n return {\n ...base,\n status: 'unresolved',\n reason: 'no-error-to-reduce',\n convergence,\n detail:\n 'Both resolutions reproduce the target exactly, so there was no error for ' +\n 'refinement to reduce. Agreement is recorded; convergence is not shown.',\n elapsedMs: elapsed(),\n };\n }\n\n if (fine > spec.tolerance) {\n return {\n ...base,\n status: 'refuted',\n convergence,\n ...observed,\n detail:\n `The fine evaluation misses the target by ${fine}, outside the stated ` +\n `tolerance ${spec.tolerance}.`,\n elapsedMs: elapsed(),\n };\n }\n\n if (ratio <= 1) {\n return {\n ...base,\n status: 'unresolved',\n reason: 'no-convergence',\n convergence,\n ...observed,\n detail:\n `Refinement did not reduce the error (ratio ${ratio}). The fine value is ` +\n 'inside tolerance, but agreement that does not improve with refinement is ' +\n 'not evidence that the scheme converges to the target.',\n elapsedMs: elapsed(),\n };\n }\n\n return {\n ...base,\n status: 'checked',\n convergence,\n ...observed,\n detail:\n `Fine error ${fine} is within tolerance ${spec.tolerance}, and refinement ` +\n `reduced the error by a factor of ${ratio}.`,\n elapsedMs: elapsed(),\n };\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"witness-specs.d.ts","sourceRoot":"","sources":["../../src/atlas/witness-specs.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"witness-specs.d.ts","sourceRoot":"","sources":["../../src/atlas/witness-specs.ts"],"names":[],"mappings":"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"}
|
|
@@ -176,6 +176,7 @@ export const WITNESS_REGISTRY = [
|
|
|
176
176
|
coarseResolution: 160,
|
|
177
177
|
fineResolution: 640,
|
|
178
178
|
tolerance: 1e-9,
|
|
179
|
+
orderResolutions: [2560, 10240],
|
|
179
180
|
},
|
|
180
181
|
},
|
|
181
182
|
{
|
|
@@ -190,6 +191,7 @@ export const WITNESS_REGISTRY = [
|
|
|
190
191
|
coarseResolution: 100,
|
|
191
192
|
fineResolution: 1000,
|
|
192
193
|
tolerance: 1e-4,
|
|
194
|
+
orderResolutions: [10000, 100000],
|
|
193
195
|
},
|
|
194
196
|
},
|
|
195
197
|
{
|
|
@@ -204,6 +206,7 @@ export const WITNESS_REGISTRY = [
|
|
|
204
206
|
coarseResolution: 80,
|
|
205
207
|
fineResolution: 160,
|
|
206
208
|
tolerance: 5e-4,
|
|
209
|
+
orderResolutions: [320, 640],
|
|
207
210
|
},
|
|
208
211
|
},
|
|
209
212
|
{
|
|
@@ -231,6 +234,7 @@ export const WITNESS_REGISTRY = [
|
|
|
231
234
|
coarseResolution: 1,
|
|
232
235
|
fineResolution: 4,
|
|
233
236
|
tolerance: 1e-3,
|
|
237
|
+
orderResolutions: [16, 64],
|
|
234
238
|
},
|
|
235
239
|
},
|
|
236
240
|
{
|
|
@@ -246,6 +250,7 @@ export const WITNESS_REGISTRY = [
|
|
|
246
250
|
coarseResolution: 40,
|
|
247
251
|
fineResolution: 80,
|
|
248
252
|
tolerance: 2e-4,
|
|
253
|
+
orderResolutions: [160, 320],
|
|
249
254
|
},
|
|
250
255
|
},
|
|
251
256
|
{
|
|
@@ -259,6 +264,7 @@ export const WITNESS_REGISTRY = [
|
|
|
259
264
|
coarseResolution: 4,
|
|
260
265
|
fineResolution: 8,
|
|
261
266
|
tolerance: 2e-3,
|
|
267
|
+
orderResolutions: [16, 32],
|
|
262
268
|
},
|
|
263
269
|
},
|
|
264
270
|
{
|
|
@@ -273,6 +279,7 @@ export const WITNESS_REGISTRY = [
|
|
|
273
279
|
coarseResolution: 64,
|
|
274
280
|
fineResolution: 128,
|
|
275
281
|
tolerance: 2e-4,
|
|
282
|
+
orderResolutions: [256, 512],
|
|
276
283
|
},
|
|
277
284
|
},
|
|
278
285
|
{
|
|
@@ -286,6 +293,7 @@ export const WITNESS_REGISTRY = [
|
|
|
286
293
|
coarseResolution: 1,
|
|
287
294
|
fineResolution: 2,
|
|
288
295
|
tolerance: 2e-3,
|
|
296
|
+
orderResolutions: [4, 8],
|
|
289
297
|
},
|
|
290
298
|
claim: {
|
|
291
299
|
name: 'bound',
|
|
@@ -304,6 +312,8 @@ export const WITNESS_REGISTRY = [
|
|
|
304
312
|
coarseResolution: 10,
|
|
305
313
|
fineResolution: 100,
|
|
306
314
|
tolerance: 0.02,
|
|
315
|
+
// 1000 τ_p only: 161 ms; 10000 τ_p measured 1.4 s.
|
|
316
|
+
orderResolutions: [1000],
|
|
307
317
|
},
|
|
308
318
|
},
|
|
309
319
|
{
|
|
@@ -327,6 +337,7 @@ export const WITNESS_REGISTRY = [
|
|
|
327
337
|
coarseResolution: 2,
|
|
328
338
|
fineResolution: 4,
|
|
329
339
|
tolerance: 0.03,
|
|
340
|
+
orderResolutions: [8, 16],
|
|
330
341
|
},
|
|
331
342
|
claim: {
|
|
332
343
|
name: 'bound',
|
|
@@ -344,6 +355,7 @@ export const WITNESS_REGISTRY = [
|
|
|
344
355
|
coarseResolution: 1,
|
|
345
356
|
fineResolution: 2,
|
|
346
357
|
tolerance: 3e-3,
|
|
358
|
+
orderResolutions: [4, 8],
|
|
347
359
|
},
|
|
348
360
|
claim: {
|
|
349
361
|
name: 'bound',
|
|
@@ -365,6 +377,8 @@ export const WITNESS_REGISTRY = [
|
|
|
365
377
|
coarseResolution: 2,
|
|
366
378
|
fineResolution: 4,
|
|
367
379
|
tolerance: 0.025,
|
|
380
|
+
// The approach to the steady state is exponential in t, not a power law; the fit reports what it sees.
|
|
381
|
+
orderResolutions: [8, 16],
|
|
368
382
|
},
|
|
369
383
|
},
|
|
370
384
|
{
|
|
@@ -378,6 +392,7 @@ export const WITNESS_REGISTRY = [
|
|
|
378
392
|
coarseResolution: 1,
|
|
379
393
|
fineResolution: 2,
|
|
380
394
|
tolerance: 1e-3,
|
|
395
|
+
orderResolutions: [4, 8],
|
|
381
396
|
},
|
|
382
397
|
// The spec reads only x = ck/ω₀; c = ω₀ = 1 is one point with that x.
|
|
383
398
|
claim: { name: 'bound', at: (resolution) => ({ c: 1, omega0: 1, k: WS5_FIXTURE.x0 / resolution }) },
|
|
@@ -393,6 +408,7 @@ export const WITNESS_REGISTRY = [
|
|
|
393
408
|
coarseResolution: 50,
|
|
394
409
|
fineResolution: 100,
|
|
395
410
|
tolerance: 3e-4,
|
|
411
|
+
orderResolutions: [200, 400],
|
|
396
412
|
},
|
|
397
413
|
},
|
|
398
414
|
{
|
|
@@ -406,6 +422,7 @@ export const WITNESS_REGISTRY = [
|
|
|
406
422
|
coarseResolution: 1,
|
|
407
423
|
fineResolution: 2,
|
|
408
424
|
tolerance: 0.15,
|
|
425
|
+
orderResolutions: [4, 8],
|
|
409
426
|
},
|
|
410
427
|
claim: {
|
|
411
428
|
name: 'bound',
|
|
@@ -431,6 +448,7 @@ export const WITNESS_REGISTRY = [
|
|
|
431
448
|
coarseResolution: 1,
|
|
432
449
|
fineResolution: 2,
|
|
433
450
|
tolerance: 0.002507,
|
|
451
|
+
orderResolutions: [4, 8],
|
|
434
452
|
},
|
|
435
453
|
claim: { name: 'bound', at: (resolution) => ({ theta0: W7_FIXTURE.theta0 / resolution }) },
|
|
436
454
|
},
|
|
@@ -447,6 +465,7 @@ export const WITNESS_REGISTRY = [
|
|
|
447
465
|
coarseResolution: 1,
|
|
448
466
|
fineResolution: 2,
|
|
449
467
|
tolerance: dampedOffsetBoundAt({ m: W8B_FIXTURE.m / 2, b: W8B_FIXTURE.b, k: W8B_FIXTURE.k, x0: W8B_FIXTURE.x0, v0: W8B_FIXTURE.v0 }),
|
|
468
|
+
orderResolutions: [4, 8],
|
|
450
469
|
},
|
|
451
470
|
claim: {
|
|
452
471
|
name: 'bound-holds-at',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"witness-specs.js","sourceRoot":"","sources":["../../src/atlas/witness-specs.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Atlas Phase 4, S4.3 — the EXECUTABLE witness registry.\n *\n * Design note: `docs/planning/Atlas-Phase-4-Design.md` §3.\n *\n * A `Witness` record names a check and the test file that runs it; it carries\n * nothing a runner can execute. This module holds the executable form of every\n * witness the results artifact covers, keyed by the record it supports. The\n * Lead-run `scripts/emit-witness-results.mjs` runs exactly this list, and\n * `tests/atlas/witness-results.test.ts` deep-equals the committed artifact\n * against a fresh run of it.\n *\n * ## The symbolic specs apply the bridge's DICTIONARY, they do not restate it\n *\n * Writing `lhs` and `rhs` as two hand-typed ASTs that happen to be equal would\n * check nothing but the typist. Each spec below starts from the PREMISE\n * model's expression and pushes it through the bridge's variable dictionary\n * with `substitute`; the CAS then has to show that the result equals the\n * CONCLUSION model's expression. What is checked is the dictionary.\n *\n * @module atlas/witness-specs\n * @internal\n */\n\nimport type { ExprNode } from '../dimensional/ast-types.js';\nimport { sym } from '../dimensional/ast-builders.js';\nimport { DIMENSIONLESS, ENERGY, LENGTH, MASS } from '../dimensional/types.js';\nimport { substitute } from '../composition/expr-subst.js';\nimport {\n CAPACITANCE,\n DAMPING,\n INDUCTANCE,\n RESISTANCE,\n SPRING_CONSTANT,\n} from './oscillators/dimensions.js';\nimport {\n heatSteadyDeviation,\n langevinMsdRatio,\n telegraphSlowRateRatio,\n telegraphWaveFrequencyRatio,\n diffusionKernel,\n gaussianSpread,\n heatFtcsCentre,\n randomWalkCentralDensity,\n wickHeatResidual,\n} from './diffusion/numerics.js';\nimport type {\n HeatFixture,\n LangevinFixture,\n SteadyStateFixture,\n WickFixture,\n} from './diffusion/numerics.js';\nimport { DENSITY, DIFFUSIVITY, SPECIFIC_HEAT, THERMAL_CONDUCTIVITY } from './diffusion/dimensions.js';\nimport { VISCOSITY } from './diffusion/models.js';\nimport { wickRotatedFreeKernel } from './witnesses/quantum-support.js';\nimport {\n kgNonrelativisticError,\n kgUniformModeValue,\n stiffStringPhaseVelocity,\n acousticLeapfrogQuarter,\n dalembertResidual,\n kleinGordonPhaseVelocity,\n stringLeapfrogMidpoint,\n} from './waves/numerics.js';\nimport type { AcousticFixture, DalembertFixture, StringFixture } from './waves/numerics.js';\nimport { pendulumPeriodErrorAt } from './oscillators/bridges-limits.js';\nimport { SPRING_LC_RELATIVE_PERIOD_TRANSPORT, W1TAU_FIXTURE } from './oscillators/norm-transport.js';\nimport { measureTransportedPeriodError } from './oscillators/norm-transport-witness.js';\nimport { dampedOffsetBoundAt } from './oscillators/bridges-limits.js';\nimport { dispersionErrorApproximation } from './oscillators/bridges-coarse.js';\nimport {\n measureChainDispersionError,\n measureMasslessOffset,\n measurePendulumPeriodRatio,\n W7_FIXTURE,\n W8B_FIXTURE,\n W9_FIXTURE,\n} from './oscillators/limit-witnesses.js';\nimport type { NumericWitnessSpec } from './witness-numeric.js';\nimport type { SymbolicWitnessSpec } from './witness-symbolic.js';\n\n/** A symbolic spec bound to the record it supports. @internal */\nexport interface RegisteredSymbolicWitness {\n /** The `AtlasBridge.id` (or other record id) the witness belongs to. */\n readonly recordId: string;\n readonly kind: 'symbolic';\n readonly spec: SymbolicWitnessSpec;\n}\n\n/**\n * The claim of its record a witness tests. `tests/atlas/witness-claims.test.ts`\n * checks each attribution against the spec.\n *\n * - `'bound'`: at `at(fineResolution)`, a point inside the record's regime, the\n * witness's error is the bound's own quantity in the bound's norm (it equals\n * `deltaAt` there: the bound is sharp), and its tolerance is no looser than\n * `delta`, so the bound failing there refutes the witness.\n * - `'bound-holds-at'`: for a bound that is not sharp. At that point, inside the\n * regime, the witness's error is measured in the bound's norm and its\n * tolerance IS `deltaAt` there, so the bound failing at that point refutes the\n * witness. That the spec measures the bound's norm is checked beside the spec.\n * - `'preserves'`: the witness tests `item`, one entry of the record's\n * `preserves`, at a point inside the regime.\n *\n * @internal\n */\nexport type WitnessClaim =\n | {\n readonly name: 'bound' | 'bound-holds-at';\n /** The point the spec evaluates at a resolution, in the names the bound's `deltaAt` reads. */\n readonly at: (resolution: number) => Readonly<Record<string, number>>;\n }\n | {\n readonly name: 'preserves';\n /** One entry of the record's `preserves`, verbatim. */\n readonly item: string;\n /** The point the spec evaluates at a resolution, in the names the regime's groups read. */\n readonly at: (resolution: number) => Readonly<Record<string, number>>;\n };\n\n/** A numeric spec bound to the record it supports. @internal */\nexport interface RegisteredNumericWitness {\n readonly recordId: string;\n readonly kind: 'numeric';\n readonly spec: NumericWitnessSpec;\n /** Absent: the witness is not attributed to any one claim of its record. */\n readonly claim?: WitnessClaim;\n}\n\n/** One entry of the registry. @internal */\nexport type RegisteredWitness = RegisteredSymbolicWitness | RegisteredNumericWitness;\n\nconst op = (o: '*' | '/' | '+' | '-' | '^', ...args: ExprNode[]): ExprNode => ({\n kind: 'op',\n op: o,\n args,\n});\nconst n = (value: number): ExprNode => sym(String(value), DIMENSIONLESS);\n\n/**\n * Push `expr` through a variable dictionary, REFUSING a mapping that matches no\n * leaf. A zero-occurrence substitution is a silent no-op that would leave the\n * premise variable in place and let the check pass or fail for the wrong\n * reason — the same guard `composeSymbolic` applies (Adam A-3).\n */\nfunction applyDictionary(expr: ExprNode, dictionary: Readonly<Record<string, ExprNode>>): ExprNode {\n let out = expr;\n for (const [name, replacement] of Object.entries(dictionary)) {\n const r = substitute(out, name, replacement);\n if (r.count === 0) {\n throw new Error(`witness-specs: dictionary entry '${name}' matches no leaf`);\n }\n out = r.expr;\n }\n return out;\n}\n\n// Spring and LC symbols, with the dimensions the oscillator models declare.\nconst m = sym('m', MASS);\nconst k = sym('k', SPRING_CONSTANT);\nconst b = sym('b', DAMPING);\nconst L = sym('L', INDUCTANCE);\nconst C = sym('C', CAPACITANCE);\nconst R = sym('R', RESISTANCE);\n\n/** The spring ↔ circuit dictionary of `ab-spring-lc` / `ab-damped-rlc`: m ↔ L, k ↔ 1/C, b ↔ R. */\nconst SPRING_TO_CIRCUIT: Readonly<Record<string, ExprNode>> = {\n m: L,\n k: op('/', n(1), C),\n b: R,\n};\n\n// ── Diffusion family (S4.4) ────────────────────────────────────────────────\n\n/** WD1 fixture: D and t, fixed while the walk is refined. @internal */\nexport const WD1_FIXTURE = { D: 0.5, t: 2 } as const;\n\n/**\n * WD2 fixture. κ, ρ and c_p are chosen so the heat equation's own variables\n * are all different from 1 while κ/(ρ c_p) = 1: a dictionary that dropped or\n * inverted a factor would move the answer.\n *\n * @internal\n */\nexport const WD2_FIXTURE: HeatFixture = {\n kappa: 2,\n rho: 4,\n cp: 0.5,\n s0: 0.05,\n tEnd: 0.2,\n halfWidth: 4,\n};\n\n/** WD3 fixture: an off-centre point, so no symmetry zeroes a derivative. @internal */\nexport const WD3_FIXTURE: WickFixture = { hbar: 1, m: 0.5, s: 0.7, x: 0.3, tau: 0.4, h0: 0.1 };\n\nconst kappa = sym('kappa', THERMAL_CONDUCTIVITY);\nconst rho = sym('rho', DENSITY);\nconst cp = sym('cp', SPECIFIC_HEAT);\nconst D = sym('D', DIFFUSIVITY);\nconst q = sym('q', { ...LENGTH, L: -1 });\n\n// ── Wave family (S4.5) ─────────────────────────────────────────────────────\n\n/** WS1 fixture: F and μ both ≠ 1 while c = √(F/μ) = 2. @internal */\nexport const WS1_FIXTURE: StringFixture = { tension: 2, mu: 0.5, tEnd: 0.3 };\n\n/** WS2 fixture: an off-centre point where both profiles contribute. @internal */\nexport const WS2_FIXTURE: DalembertFixture = { c: 1.5, x: 0.4, t: 0.3, h0: 0.1 };\n\n/** WS3 fixture: γ = 1.4 with nondimensional p₀ = 1, ρ₀ = 1.2. @internal */\nexport const WS3_FIXTURE: AcousticFixture = { p0: 1, rho0: 1.2, gamma: 1.4, tEnd: 0.37 };\n\n/** WS4 fixture: ω₀ = c = 1, base wavenumber k₀ = 10 (the domain edge ω₀/(ck) = 0.1). @internal */\nexport const WS4_FIXTURE = { omega0: 1, c: 1, k0: 10 } as const;\n\n// ── Sprint 4 closure ───────────────────────────────────────────────────────\n\n/** WD4 fixture: m, γ, k_BT all ≠ 1; τ_p = m/γ = 4. @internal */\nexport const WD4_FIXTURE: LangevinFixture = { m: 2, gamma: 0.5, kT: 1.5 };\n\n/** WD6 base: τ₀ = 0.1 with D = q = 1, so ε = τ at the resolution's τ = τ₀/resolution. @internal */\nexport const WD6_FIXTURE = { tau0: 0.1, D: 1, q: 1 } as const;\n\n/** WD7 base: ε = 25 · resolution with D = q = 1. @internal */\nexport const WD7_FIXTURE = { eps0: 25, D: 1, q: 1 } as const;\n\n/** WD8 fixture: a unit rod held at 2 and 5, base time 0.1 (Fourier number 0.1 per unit). @internal */\nexport const WD8_FIXTURE: SteadyStateFixture = {\n alpha: 1,\n ell: 1,\n tLeft: 2,\n tRight: 5,\n t0: 0.1,\n cells: 40,\n};\n\n/** WS5 base: x₀ = ck/ω₀ = 0.1, halved per resolution step. @internal */\nexport const WS5_FIXTURE = { x0: 0.1 } as const;\n\n/** WS6 fixture: c = 1, ω₀ = 2, t = 3; resolution = time steps. @internal */\nexport const WS6_FIXTURE = { c: 1, omega0: 2, tEnd: 3 } as const;\n\n/** WS7 fixture: F = 100, μ = 0.01 (so √(F/μ) = 100), EI = 0.01, k₀ = 10 (β = 0.01 at res 1). @internal */\nexport const WS7_FIXTURE = { F: 100, mu: 0.01, EI: 0.01, k0: 10 } as const;\n\nconst kT = sym('kT', ENERGY);\nconst gammaSym = sym('gamma', DAMPING);\nconst eta = sym('eta', VISCOSITY);\nconst a = sym('a', LENGTH);\nconst pi = sym('pi', DIMENSIONLESS);\n\n/**\n * Every witness the results artifact covers, in a fixed order (the artifact is\n * emitted in this order, so reordering is a reviewable diff, not churn).\n *\n * @internal\n */\nexport const WITNESS_REGISTRY: readonly RegisteredWitness[] = [\n {\n // ω0² of the spring, pushed through the dictionary, is ω0² of the LC circuit.\n recordId: 'ab-spring-lc',\n kind: 'symbolic',\n spec: {\n id: 'W1s',\n lhs: applyDictionary(op('/', k, m), { m: SPRING_TO_CIRCUIT['m']!, k: SPRING_TO_CIRCUIT['k']! }),\n rhs: op('/', n(1), op('*', L, C)),\n },\n },\n {\n // ζ² of the damped spring, b²/(4mk), pushed through the dictionary, is ζ² of\n // the RLC circuit, R²C/(4L). The squared form avoids a fractional exponent\n // on a dimensioned base, which the grammar forbids.\n recordId: 'ab-damped-rlc',\n kind: 'symbolic',\n spec: {\n id: 'W2s',\n lhs: applyDictionary(op('/', op('^', b, n(2)), op('*', n(4), m, k)), SPRING_TO_CIRCUIT),\n rhs: op('/', op('*', op('^', R, n(2)), C), op('*', n(4), L)),\n },\n },\n {\n // Norm transport, not a bridge claim: the pendulum's image under ab-spring-lc's\n // map, integrated in circuit time, has K times the pendulum's relative period\n // error against the circuit. Keyed by the transport id, so the bridge's own\n // evidence is not derived from it (ADR-transported-norm-composition.md §4).\n recordId: SPRING_LC_RELATIVE_PERIOD_TRANSPORT.id,\n kind: 'numeric',\n spec: {\n id: SPRING_LC_RELATIVE_PERIOD_TRANSPORT.witness.id,\n evaluate: (steps) => measureTransportedPeriodError(W1TAU_FIXTURE.theta0, steps),\n target: SPRING_LC_RELATIVE_PERIOD_TRANSPORT.KAt({}) * pendulumPeriodErrorAt({ theta0: W1TAU_FIXTURE.theta0 }),\n coarseResolution: 160,\n fineResolution: 640,\n tolerance: 1e-9,\n },\n },\n {\n // Coarse-graining: the walk's density at the origin converges to the\n // diffusion kernel as the closure D = Δx²/(2Δt) is held and Δt → 0.\n recordId: 'ab-walk-diffusion',\n kind: 'numeric',\n spec: {\n id: 'WD1',\n evaluate: (steps) => randomWalkCentralDensity(steps, WD1_FIXTURE.D, WD1_FIXTURE.t),\n target: diffusionKernel(0, WD1_FIXTURE.t, WD1_FIXTURE.D),\n coarseResolution: 100,\n fineResolution: 1000,\n tolerance: 1e-4,\n },\n },\n {\n // Exact equivalence: the HEAT equation, solved in κ, ρ, c_p, reproduces the\n // FICK solution with D = κ/(ρ c_p).\n recordId: 'ab-heat-diffusion',\n kind: 'numeric',\n spec: {\n id: 'WD2',\n evaluate: (cells) => heatFtcsCentre(cells, WD2_FIXTURE),\n target: gaussianSpread(\n 0,\n WD2_FIXTURE.tEnd,\n WD2_FIXTURE.kappa / (WD2_FIXTURE.rho * WD2_FIXTURE.cp),\n WD2_FIXTURE.s0,\n ),\n coarseResolution: 80,\n fineResolution: 160,\n tolerance: 5e-4,\n },\n },\n {\n // The heat side's Fourier-mode decay rate κq²/(ρ c_p), pushed through the\n // inverse dictionary κ ↦ D ρ c_p, is the Fick side's D q².\n recordId: 'ab-heat-diffusion',\n kind: 'symbolic',\n spec: {\n id: 'WD2s',\n lhs: applyDictionary(op('/', op('*', kappa, op('^', q, n(2))), op('*', rho, cp)), {\n kappa: op('*', D, rho, cp),\n }),\n rhs: op('*', D, op('^', q, n(2))),\n },\n },\n {\n // Analytic continuation: the Wick-rotated free kernel satisfies the\n // diffusion equation with D = ħ/(2m); the residual's target is zero.\n recordId: 'ab-schrodinger-diffusion',\n kind: 'numeric',\n spec: {\n id: 'WD3',\n evaluate: (resolution) => wickHeatResidual(resolution, WD3_FIXTURE, wickRotatedFreeKernel),\n target: 0,\n coarseResolution: 1,\n fineResolution: 4,\n tolerance: 1e-3,\n },\n },\n {\n // Restriction: the string, solved in F and μ, reproduces the 1-D wave\n // solution with c = √(F/μ).\n recordId: 'ab-string-wave',\n kind: 'numeric',\n spec: {\n id: 'WS1',\n evaluate: (cells) => stringLeapfrogMidpoint(cells, WS1_FIXTURE),\n target:\n Math.sin(Math.PI * 0.5) *\n Math.cos(Math.PI * Math.sqrt(WS1_FIXTURE.tension / WS1_FIXTURE.mu) * WS1_FIXTURE.tEnd),\n coarseResolution: 40,\n fineResolution: 80,\n tolerance: 2e-4,\n },\n },\n {\n // Derivation: d'Alembert's form satisfies the wave equation; residual → 0.\n recordId: 'ab-wave-dalembert',\n kind: 'numeric',\n spec: {\n id: 'WS2',\n evaluate: (resolution) => dalembertResidual(resolution, WS2_FIXTURE),\n target: 0,\n coarseResolution: 4,\n fineResolution: 8,\n tolerance: 2e-3,\n },\n },\n {\n // Hyperedge: linearized Euler closed by the adiabatic EOS reproduces the\n // sound model with c_s² = γp₀/ρ₀.\n recordId: 'ab-sound-speed',\n kind: 'numeric',\n spec: {\n id: 'WS3',\n evaluate: (cells) => acousticLeapfrogQuarter(cells, WS3_FIXTURE),\n target: Math.cos(\n 2 * Math.PI * Math.sqrt((WS3_FIXTURE.gamma * WS3_FIXTURE.p0) / WS3_FIXTURE.rho0) * WS3_FIXTURE.tEnd,\n ),\n coarseResolution: 64,\n fineResolution: 128,\n tolerance: 2e-4,\n },\n },\n {\n // Approximation: the Klein–Gordon phase velocity tends to c as k grows.\n recordId: 'ab-klein-gordon-wave',\n kind: 'numeric',\n spec: {\n id: 'WS4',\n evaluate: (resolution) =>\n kleinGordonPhaseVelocity(resolution, WS4_FIXTURE.omega0, WS4_FIXTURE.c, WS4_FIXTURE.k0),\n target: WS4_FIXTURE.c,\n coarseResolution: 1,\n fineResolution: 2,\n tolerance: 2e-3,\n },\n claim: {\n name: 'bound',\n at: (resolution) => ({ omega0: WS4_FIXTURE.omega0, c: WS4_FIXTURE.c, k: WS4_FIXTURE.k0 * resolution }),\n },\n },\n // ── Sprint 4 closure ─────────────────────────────────────────────────────\n {\n // Coarse-graining: Langevin second moments at t = resolution · τ_p, over 2Dt.\n recordId: 'ab-langevin-diffusion',\n kind: 'numeric',\n spec: {\n id: 'WD4',\n evaluate: (resolution) => langevinMsdRatio(resolution, WD4_FIXTURE),\n target: 1,\n coarseResolution: 10,\n fineResolution: 100,\n tolerance: 0.02,\n },\n },\n {\n // Hyperedge: γ = 6πηa pushed into Einstein's D = k_BT/γ.\n recordId: 'ab-stokes-einstein',\n kind: 'symbolic',\n spec: {\n id: 'WD5s',\n lhs: applyDictionary(op('/', kT, gammaSym), { gamma: op('*', n(6), pi, eta, a) }),\n rhs: op('/', kT, op('*', n(6), pi, eta, a)),\n },\n },\n {\n // Singular limit τ → 0: the telegraph slow rate over Dq² tends to 1.\n recordId: 'ab-telegraph-diffusion',\n kind: 'numeric',\n spec: {\n id: 'WD6',\n evaluate: (resolution) =>\n telegraphSlowRateRatio(WD6_FIXTURE.tau0 / resolution, WD6_FIXTURE.D, WD6_FIXTURE.q),\n target: 1,\n coarseResolution: 2,\n fineResolution: 4,\n tolerance: 0.03,\n },\n claim: {\n name: 'bound',\n at: (resolution) => ({ tau: WD6_FIXTURE.tau0 / resolution, D: WD6_FIXTURE.D, q: WD6_FIXTURE.q }),\n },\n },\n {\n // ε → ∞: the telegraph oscillation frequency over c q tends to 1.\n recordId: 'ab-telegraph-wave',\n kind: 'numeric',\n spec: {\n id: 'WD7',\n evaluate: (resolution) =>\n telegraphWaveFrequencyRatio(WD7_FIXTURE.eps0 * resolution, WD7_FIXTURE.D, WD7_FIXTURE.q),\n target: 1,\n coarseResolution: 1,\n fineResolution: 2,\n tolerance: 3e-3,\n },\n claim: {\n name: 'bound',\n at: (resolution) => ({\n tau: (WD7_FIXTURE.eps0 * resolution) / (WD7_FIXTURE.D * WD7_FIXTURE.q ** 2),\n D: WD7_FIXTURE.D,\n q: WD7_FIXTURE.q,\n }),\n },\n },\n {\n // Steady state: the heat solution's deviation from the Laplace profile → 0.\n recordId: 'ab-heat-laplace',\n kind: 'numeric',\n spec: {\n id: 'WD8',\n evaluate: (resolution) => heatSteadyDeviation(resolution, WD8_FIXTURE),\n target: 0,\n coarseResolution: 2,\n fineResolution: 4,\n tolerance: 0.025,\n },\n },\n {\n // Non-relativistic limit: kinetic-frequency error → 0 as x = ck/ω₀ halves.\n recordId: 'ab-kg-schrodinger',\n kind: 'numeric',\n spec: {\n id: 'WS5',\n evaluate: (resolution) => kgNonrelativisticError(WS5_FIXTURE.x0 / resolution),\n target: 0,\n coarseResolution: 1,\n fineResolution: 2,\n tolerance: 1e-3,\n },\n // The spec reads only x = ck/ω₀; c = ω₀ = 1 is one point with that x.\n claim: { name: 'bound', at: (resolution) => ({ c: 1, omega0: 1, k: WS5_FIXTURE.x0 / resolution }) },\n },\n {\n // Uniform-mode restriction: the full KG PDE, uniform data, vs cos(ω₀t).\n recordId: 'ab-kg-oscillator',\n kind: 'numeric',\n spec: {\n id: 'WS6',\n evaluate: (steps) =>\n kgUniformModeValue(steps, WS6_FIXTURE.c, WS6_FIXTURE.omega0, WS6_FIXTURE.tEnd),\n target: Math.cos(WS6_FIXTURE.omega0 * WS6_FIXTURE.tEnd),\n coarseResolution: 50,\n fineResolution: 100,\n tolerance: 3e-4,\n },\n },\n {\n // Flexible-string limit: stiff-string phase velocity → √(F/μ) as k shrinks.\n recordId: 'ab-stiff-string',\n kind: 'numeric',\n spec: {\n id: 'WS7',\n evaluate: (resolution) =>\n stiffStringPhaseVelocity(resolution, WS7_FIXTURE.F, WS7_FIXTURE.mu, WS7_FIXTURE.EI, WS7_FIXTURE.k0),\n target: Math.sqrt(WS7_FIXTURE.F / WS7_FIXTURE.mu),\n coarseResolution: 1,\n fineResolution: 2,\n tolerance: 0.15,\n },\n claim: {\n name: 'bound',\n at: (resolution) => ({\n F: WS7_FIXTURE.F,\n mu: WS7_FIXTURE.mu,\n EI: WS7_FIXTURE.EI,\n k: WS7_FIXTURE.k0 / resolution,\n }),\n },\n },\n // ── The three oscillator bridges that had no in-process witness ──────────\n {\n // Regular limit θ0 → 0: T/T0 of the pendulum, integrated by RK4, tends to 1.\n // The tolerance is the upper end W7 records, 0.002507 at θ0 = 0.2; the\n // bound's deltaAt there is the AGM form, a second method.\n recordId: 'ab-pendulum-linear',\n kind: 'numeric',\n spec: {\n id: 'W7',\n evaluate: (resolution) => measurePendulumPeriodRatio(W7_FIXTURE.theta0 / resolution),\n target: 1,\n coarseResolution: 1,\n fineResolution: 2,\n tolerance: 0.002507,\n },\n claim: { name: 'bound', at: (resolution) => ({ theta0: W7_FIXTURE.theta0 / resolution }) },\n },\n {\n // Singular limit m → 0: the full damped spring's offset from the reduced\n // model outside the layer, integrated by RK4; the tolerance is the bound's\n // own deltaAt at the fine mass, which is not sharp there.\n recordId: 'ab-damped-massless',\n kind: 'numeric',\n spec: {\n id: 'W8b',\n evaluate: (resolution) => measureMasslessOffset(W8B_FIXTURE.m / resolution),\n target: 0,\n coarseResolution: 1,\n fineResolution: 2,\n tolerance: dampedOffsetBoundAt({ m: W8B_FIXTURE.m / 2, b: W8B_FIXTURE.b, k: W8B_FIXTURE.k, x0: W8B_FIXTURE.x0, v0: W8B_FIXTURE.v0 }),\n },\n claim: {\n name: 'bound-holds-at',\n at: (resolution) => ({ m: W8B_FIXTURE.m / resolution, b: W8B_FIXTURE.b, k: W8B_FIXTURE.k, x0: W8B_FIXTURE.x0, v0: W8B_FIXTURE.v0 }),\n },\n },\n {\n // Coarse-graining, long wavelength: 1 − ω/(c q) measured on the integrated\n // ring, over (qa)²/24, tends to 1 within the 0.5% W9 records.\n recordId: 'ab-chain-wave',\n kind: 'numeric',\n spec: {\n id: 'W9',\n evaluate: (resolution) => {\n const masses = W9_FIXTURE.masses * resolution;\n return measureChainDispersionError(masses) / dispersionErrorApproximation((2 * Math.PI) / masses);\n },\n target: 1,\n coarseResolution: 1,\n fineResolution: 2,\n tolerance: 0.005,\n },\n claim: {\n name: 'preserves',\n item: 'long-wavelength dispersion ω ≈ c q',\n at: (resolution) => ({ qa: (2 * Math.PI) / (W9_FIXTURE.masses * resolution) }),\n },\n },\n];\n"]}
|
|
1
|
+
{"version":3,"file":"witness-specs.js","sourceRoot":"","sources":["../../src/atlas/witness-specs.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Atlas Phase 4, S4.3 — the EXECUTABLE witness registry.\n *\n * Design note: `docs/planning/Atlas-Phase-4-Design.md` §3.\n *\n * A `Witness` record names a check and the test file that runs it; it carries\n * nothing a runner can execute. This module holds the executable form of every\n * witness the results artifact covers, keyed by the record it supports. The\n * Lead-run `scripts/emit-witness-results.mjs` runs exactly this list, and\n * `tests/atlas/witness-results.test.ts` deep-equals the committed artifact\n * against a fresh run of it.\n *\n * ## The symbolic specs apply the bridge's DICTIONARY, they do not restate it\n *\n * Writing `lhs` and `rhs` as two hand-typed ASTs that happen to be equal would\n * check nothing but the typist. Each spec below starts from the PREMISE\n * model's expression and pushes it through the bridge's variable dictionary\n * with `substitute`; the CAS then has to show that the result equals the\n * CONCLUSION model's expression. What is checked is the dictionary.\n *\n * @module atlas/witness-specs\n * @internal\n */\n\nimport type { ExprNode } from '../dimensional/ast-types.js';\nimport { sym } from '../dimensional/ast-builders.js';\nimport { DIMENSIONLESS, ENERGY, LENGTH, MASS } from '../dimensional/types.js';\nimport { substitute } from '../composition/expr-subst.js';\nimport {\n CAPACITANCE,\n DAMPING,\n INDUCTANCE,\n RESISTANCE,\n SPRING_CONSTANT,\n} from './oscillators/dimensions.js';\nimport {\n heatSteadyDeviation,\n langevinMsdRatio,\n telegraphSlowRateRatio,\n telegraphWaveFrequencyRatio,\n diffusionKernel,\n gaussianSpread,\n heatFtcsCentre,\n randomWalkCentralDensity,\n wickHeatResidual,\n} from './diffusion/numerics.js';\nimport type {\n HeatFixture,\n LangevinFixture,\n SteadyStateFixture,\n WickFixture,\n} from './diffusion/numerics.js';\nimport { DENSITY, DIFFUSIVITY, SPECIFIC_HEAT, THERMAL_CONDUCTIVITY } from './diffusion/dimensions.js';\nimport { VISCOSITY } from './diffusion/models.js';\nimport { wickRotatedFreeKernel } from './witnesses/quantum-support.js';\nimport {\n kgNonrelativisticError,\n kgUniformModeValue,\n stiffStringPhaseVelocity,\n acousticLeapfrogQuarter,\n dalembertResidual,\n kleinGordonPhaseVelocity,\n stringLeapfrogMidpoint,\n} from './waves/numerics.js';\nimport type { AcousticFixture, DalembertFixture, StringFixture } from './waves/numerics.js';\nimport { pendulumPeriodErrorAt } from './oscillators/bridges-limits.js';\nimport { SPRING_LC_RELATIVE_PERIOD_TRANSPORT, W1TAU_FIXTURE } from './oscillators/norm-transport.js';\nimport { measureTransportedPeriodError } from './oscillators/norm-transport-witness.js';\nimport { dampedOffsetBoundAt } from './oscillators/bridges-limits.js';\nimport { dispersionErrorApproximation } from './oscillators/bridges-coarse.js';\nimport {\n measureChainDispersionError,\n measureMasslessOffset,\n measurePendulumPeriodRatio,\n W7_FIXTURE,\n W8B_FIXTURE,\n W9_FIXTURE,\n} from './oscillators/limit-witnesses.js';\nimport type { NumericWitnessSpec } from './witness-numeric.js';\nimport type { SymbolicWitnessSpec } from './witness-symbolic.js';\n\n/** A symbolic spec bound to the record it supports. @internal */\nexport interface RegisteredSymbolicWitness {\n /** The `AtlasBridge.id` (or other record id) the witness belongs to. */\n readonly recordId: string;\n readonly kind: 'symbolic';\n readonly spec: SymbolicWitnessSpec;\n}\n\n/**\n * The claim of its record a witness tests. `tests/atlas/witness-claims.test.ts`\n * checks each attribution against the spec.\n *\n * - `'bound'`: at `at(fineResolution)`, a point inside the record's regime, the\n * witness's error is the bound's own quantity in the bound's norm (it equals\n * `deltaAt` there: the bound is sharp), and its tolerance is no looser than\n * `delta`, so the bound failing there refutes the witness.\n * - `'bound-holds-at'`: for a bound that is not sharp. At that point, inside the\n * regime, the witness's error is measured in the bound's norm and its\n * tolerance IS `deltaAt` there, so the bound failing at that point refutes the\n * witness. That the spec measures the bound's norm is checked beside the spec.\n * - `'preserves'`: the witness tests `item`, one entry of the record's\n * `preserves`, at a point inside the regime.\n *\n * @internal\n */\nexport type WitnessClaim =\n | {\n readonly name: 'bound' | 'bound-holds-at';\n /** The point the spec evaluates at a resolution, in the names the bound's `deltaAt` reads. */\n readonly at: (resolution: number) => Readonly<Record<string, number>>;\n }\n | {\n readonly name: 'preserves';\n /** One entry of the record's `preserves`, verbatim. */\n readonly item: string;\n /** The point the spec evaluates at a resolution, in the names the regime's groups read. */\n readonly at: (resolution: number) => Readonly<Record<string, number>>;\n };\n\n/** A numeric spec bound to the record it supports. @internal */\nexport interface RegisteredNumericWitness {\n readonly recordId: string;\n readonly kind: 'numeric';\n readonly spec: NumericWitnessSpec;\n /** Absent: the witness is not attributed to any one claim of its record. */\n readonly claim?: WitnessClaim;\n}\n\n/** One entry of the registry. @internal */\nexport type RegisteredWitness = RegisteredSymbolicWitness | RegisteredNumericWitness;\n\nconst op = (o: '*' | '/' | '+' | '-' | '^', ...args: ExprNode[]): ExprNode => ({\n kind: 'op',\n op: o,\n args,\n});\nconst n = (value: number): ExprNode => sym(String(value), DIMENSIONLESS);\n\n/**\n * Push `expr` through a variable dictionary, REFUSING a mapping that matches no\n * leaf. A zero-occurrence substitution is a silent no-op that would leave the\n * premise variable in place and let the check pass or fail for the wrong\n * reason — the same guard `composeSymbolic` applies (Adam A-3).\n */\nfunction applyDictionary(expr: ExprNode, dictionary: Readonly<Record<string, ExprNode>>): ExprNode {\n let out = expr;\n for (const [name, replacement] of Object.entries(dictionary)) {\n const r = substitute(out, name, replacement);\n if (r.count === 0) {\n throw new Error(`witness-specs: dictionary entry '${name}' matches no leaf`);\n }\n out = r.expr;\n }\n return out;\n}\n\n// Spring and LC symbols, with the dimensions the oscillator models declare.\nconst m = sym('m', MASS);\nconst k = sym('k', SPRING_CONSTANT);\nconst b = sym('b', DAMPING);\nconst L = sym('L', INDUCTANCE);\nconst C = sym('C', CAPACITANCE);\nconst R = sym('R', RESISTANCE);\n\n/** The spring ↔ circuit dictionary of `ab-spring-lc` / `ab-damped-rlc`: m ↔ L, k ↔ 1/C, b ↔ R. */\nconst SPRING_TO_CIRCUIT: Readonly<Record<string, ExprNode>> = {\n m: L,\n k: op('/', n(1), C),\n b: R,\n};\n\n// ── Diffusion family (S4.4) ────────────────────────────────────────────────\n\n/** WD1 fixture: D and t, fixed while the walk is refined. @internal */\nexport const WD1_FIXTURE = { D: 0.5, t: 2 } as const;\n\n/**\n * WD2 fixture. κ, ρ and c_p are chosen so the heat equation's own variables\n * are all different from 1 while κ/(ρ c_p) = 1: a dictionary that dropped or\n * inverted a factor would move the answer.\n *\n * @internal\n */\nexport const WD2_FIXTURE: HeatFixture = {\n kappa: 2,\n rho: 4,\n cp: 0.5,\n s0: 0.05,\n tEnd: 0.2,\n halfWidth: 4,\n};\n\n/** WD3 fixture: an off-centre point, so no symmetry zeroes a derivative. @internal */\nexport const WD3_FIXTURE: WickFixture = { hbar: 1, m: 0.5, s: 0.7, x: 0.3, tau: 0.4, h0: 0.1 };\n\nconst kappa = sym('kappa', THERMAL_CONDUCTIVITY);\nconst rho = sym('rho', DENSITY);\nconst cp = sym('cp', SPECIFIC_HEAT);\nconst D = sym('D', DIFFUSIVITY);\nconst q = sym('q', { ...LENGTH, L: -1 });\n\n// ── Wave family (S4.5) ─────────────────────────────────────────────────────\n\n/** WS1 fixture: F and μ both ≠ 1 while c = √(F/μ) = 2. @internal */\nexport const WS1_FIXTURE: StringFixture = { tension: 2, mu: 0.5, tEnd: 0.3 };\n\n/** WS2 fixture: an off-centre point where both profiles contribute. @internal */\nexport const WS2_FIXTURE: DalembertFixture = { c: 1.5, x: 0.4, t: 0.3, h0: 0.1 };\n\n/** WS3 fixture: γ = 1.4 with nondimensional p₀ = 1, ρ₀ = 1.2. @internal */\nexport const WS3_FIXTURE: AcousticFixture = { p0: 1, rho0: 1.2, gamma: 1.4, tEnd: 0.37 };\n\n/** WS4 fixture: ω₀ = c = 1, base wavenumber k₀ = 10 (the domain edge ω₀/(ck) = 0.1). @internal */\nexport const WS4_FIXTURE = { omega0: 1, c: 1, k0: 10 } as const;\n\n// ── Sprint 4 closure ───────────────────────────────────────────────────────\n\n/** WD4 fixture: m, γ, k_BT all ≠ 1; τ_p = m/γ = 4. @internal */\nexport const WD4_FIXTURE: LangevinFixture = { m: 2, gamma: 0.5, kT: 1.5 };\n\n/** WD6 base: τ₀ = 0.1 with D = q = 1, so ε = τ at the resolution's τ = τ₀/resolution. @internal */\nexport const WD6_FIXTURE = { tau0: 0.1, D: 1, q: 1 } as const;\n\n/** WD7 base: ε = 25 · resolution with D = q = 1. @internal */\nexport const WD7_FIXTURE = { eps0: 25, D: 1, q: 1 } as const;\n\n/** WD8 fixture: a unit rod held at 2 and 5, base time 0.1 (Fourier number 0.1 per unit). @internal */\nexport const WD8_FIXTURE: SteadyStateFixture = {\n alpha: 1,\n ell: 1,\n tLeft: 2,\n tRight: 5,\n t0: 0.1,\n cells: 40,\n};\n\n/** WS5 base: x₀ = ck/ω₀ = 0.1, halved per resolution step. @internal */\nexport const WS5_FIXTURE = { x0: 0.1 } as const;\n\n/** WS6 fixture: c = 1, ω₀ = 2, t = 3; resolution = time steps. @internal */\nexport const WS6_FIXTURE = { c: 1, omega0: 2, tEnd: 3 } as const;\n\n/** WS7 fixture: F = 100, μ = 0.01 (so √(F/μ) = 100), EI = 0.01, k₀ = 10 (β = 0.01 at res 1). @internal */\nexport const WS7_FIXTURE = { F: 100, mu: 0.01, EI: 0.01, k0: 10 } as const;\n\nconst kT = sym('kT', ENERGY);\nconst gammaSym = sym('gamma', DAMPING);\nconst eta = sym('eta', VISCOSITY);\nconst a = sym('a', LENGTH);\nconst pi = sym('pi', DIMENSIONLESS);\n\n/**\n * Every witness the results artifact covers, in a fixed order (the artifact is\n * emitted in this order, so reordering is a reviewable diff, not churn).\n *\n * @internal\n */\nexport const WITNESS_REGISTRY: readonly RegisteredWitness[] = [\n {\n // ω0² of the spring, pushed through the dictionary, is ω0² of the LC circuit.\n recordId: 'ab-spring-lc',\n kind: 'symbolic',\n spec: {\n id: 'W1s',\n lhs: applyDictionary(op('/', k, m), { m: SPRING_TO_CIRCUIT['m']!, k: SPRING_TO_CIRCUIT['k']! }),\n rhs: op('/', n(1), op('*', L, C)),\n },\n },\n {\n // ζ² of the damped spring, b²/(4mk), pushed through the dictionary, is ζ² of\n // the RLC circuit, R²C/(4L). The squared form avoids a fractional exponent\n // on a dimensioned base, which the grammar forbids.\n recordId: 'ab-damped-rlc',\n kind: 'symbolic',\n spec: {\n id: 'W2s',\n lhs: applyDictionary(op('/', op('^', b, n(2)), op('*', n(4), m, k)), SPRING_TO_CIRCUIT),\n rhs: op('/', op('*', op('^', R, n(2)), C), op('*', n(4), L)),\n },\n },\n {\n // Norm transport, not a bridge claim: the pendulum's image under ab-spring-lc's\n // map, integrated in circuit time, has K times the pendulum's relative period\n // error against the circuit. Keyed by the transport id, so the bridge's own\n // evidence is not derived from it (ADR-transported-norm-composition.md §4).\n recordId: SPRING_LC_RELATIVE_PERIOD_TRANSPORT.id,\n kind: 'numeric',\n spec: {\n id: SPRING_LC_RELATIVE_PERIOD_TRANSPORT.witness.id,\n evaluate: (steps) => measureTransportedPeriodError(W1TAU_FIXTURE.theta0, steps),\n target: SPRING_LC_RELATIVE_PERIOD_TRANSPORT.KAt({}) * pendulumPeriodErrorAt({ theta0: W1TAU_FIXTURE.theta0 }),\n coarseResolution: 160,\n fineResolution: 640,\n tolerance: 1e-9,\n orderResolutions: [2560, 10240],\n },\n },\n {\n // Coarse-graining: the walk's density at the origin converges to the\n // diffusion kernel as the closure D = Δx²/(2Δt) is held and Δt → 0.\n recordId: 'ab-walk-diffusion',\n kind: 'numeric',\n spec: {\n id: 'WD1',\n evaluate: (steps) => randomWalkCentralDensity(steps, WD1_FIXTURE.D, WD1_FIXTURE.t),\n target: diffusionKernel(0, WD1_FIXTURE.t, WD1_FIXTURE.D),\n coarseResolution: 100,\n fineResolution: 1000,\n tolerance: 1e-4,\n orderResolutions: [10000, 100000],\n },\n },\n {\n // Exact equivalence: the HEAT equation, solved in κ, ρ, c_p, reproduces the\n // FICK solution with D = κ/(ρ c_p).\n recordId: 'ab-heat-diffusion',\n kind: 'numeric',\n spec: {\n id: 'WD2',\n evaluate: (cells) => heatFtcsCentre(cells, WD2_FIXTURE),\n target: gaussianSpread(\n 0,\n WD2_FIXTURE.tEnd,\n WD2_FIXTURE.kappa / (WD2_FIXTURE.rho * WD2_FIXTURE.cp),\n WD2_FIXTURE.s0,\n ),\n coarseResolution: 80,\n fineResolution: 160,\n tolerance: 5e-4,\n orderResolutions: [320, 640],\n },\n },\n {\n // The heat side's Fourier-mode decay rate κq²/(ρ c_p), pushed through the\n // inverse dictionary κ ↦ D ρ c_p, is the Fick side's D q².\n recordId: 'ab-heat-diffusion',\n kind: 'symbolic',\n spec: {\n id: 'WD2s',\n lhs: applyDictionary(op('/', op('*', kappa, op('^', q, n(2))), op('*', rho, cp)), {\n kappa: op('*', D, rho, cp),\n }),\n rhs: op('*', D, op('^', q, n(2))),\n },\n },\n {\n // Analytic continuation: the Wick-rotated free kernel satisfies the\n // diffusion equation with D = ħ/(2m); the residual's target is zero.\n recordId: 'ab-schrodinger-diffusion',\n kind: 'numeric',\n spec: {\n id: 'WD3',\n evaluate: (resolution) => wickHeatResidual(resolution, WD3_FIXTURE, wickRotatedFreeKernel),\n target: 0,\n coarseResolution: 1,\n fineResolution: 4,\n tolerance: 1e-3,\n orderResolutions: [16, 64],\n },\n },\n {\n // Restriction: the string, solved in F and μ, reproduces the 1-D wave\n // solution with c = √(F/μ).\n recordId: 'ab-string-wave',\n kind: 'numeric',\n spec: {\n id: 'WS1',\n evaluate: (cells) => stringLeapfrogMidpoint(cells, WS1_FIXTURE),\n target:\n Math.sin(Math.PI * 0.5) *\n Math.cos(Math.PI * Math.sqrt(WS1_FIXTURE.tension / WS1_FIXTURE.mu) * WS1_FIXTURE.tEnd),\n coarseResolution: 40,\n fineResolution: 80,\n tolerance: 2e-4,\n orderResolutions: [160, 320],\n },\n },\n {\n // Derivation: d'Alembert's form satisfies the wave equation; residual → 0.\n recordId: 'ab-wave-dalembert',\n kind: 'numeric',\n spec: {\n id: 'WS2',\n evaluate: (resolution) => dalembertResidual(resolution, WS2_FIXTURE),\n target: 0,\n coarseResolution: 4,\n fineResolution: 8,\n tolerance: 2e-3,\n orderResolutions: [16, 32],\n },\n },\n {\n // Hyperedge: linearized Euler closed by the adiabatic EOS reproduces the\n // sound model with c_s² = γp₀/ρ₀.\n recordId: 'ab-sound-speed',\n kind: 'numeric',\n spec: {\n id: 'WS3',\n evaluate: (cells) => acousticLeapfrogQuarter(cells, WS3_FIXTURE),\n target: Math.cos(\n 2 * Math.PI * Math.sqrt((WS3_FIXTURE.gamma * WS3_FIXTURE.p0) / WS3_FIXTURE.rho0) * WS3_FIXTURE.tEnd,\n ),\n coarseResolution: 64,\n fineResolution: 128,\n tolerance: 2e-4,\n orderResolutions: [256, 512],\n },\n },\n {\n // Approximation: the Klein–Gordon phase velocity tends to c as k grows.\n recordId: 'ab-klein-gordon-wave',\n kind: 'numeric',\n spec: {\n id: 'WS4',\n evaluate: (resolution) =>\n kleinGordonPhaseVelocity(resolution, WS4_FIXTURE.omega0, WS4_FIXTURE.c, WS4_FIXTURE.k0),\n target: WS4_FIXTURE.c,\n coarseResolution: 1,\n fineResolution: 2,\n tolerance: 2e-3,\n orderResolutions: [4, 8],\n },\n claim: {\n name: 'bound',\n at: (resolution) => ({ omega0: WS4_FIXTURE.omega0, c: WS4_FIXTURE.c, k: WS4_FIXTURE.k0 * resolution }),\n },\n },\n // ── Sprint 4 closure ─────────────────────────────────────────────────────\n {\n // Coarse-graining: Langevin second moments at t = resolution · τ_p, over 2Dt.\n recordId: 'ab-langevin-diffusion',\n kind: 'numeric',\n spec: {\n id: 'WD4',\n evaluate: (resolution) => langevinMsdRatio(resolution, WD4_FIXTURE),\n target: 1,\n coarseResolution: 10,\n fineResolution: 100,\n tolerance: 0.02,\n // 1000 τ_p only: 161 ms; 10000 τ_p measured 1.4 s.\n orderResolutions: [1000],\n },\n },\n {\n // Hyperedge: γ = 6πηa pushed into Einstein's D = k_BT/γ.\n recordId: 'ab-stokes-einstein',\n kind: 'symbolic',\n spec: {\n id: 'WD5s',\n lhs: applyDictionary(op('/', kT, gammaSym), { gamma: op('*', n(6), pi, eta, a) }),\n rhs: op('/', kT, op('*', n(6), pi, eta, a)),\n },\n },\n {\n // Singular limit τ → 0: the telegraph slow rate over Dq² tends to 1.\n recordId: 'ab-telegraph-diffusion',\n kind: 'numeric',\n spec: {\n id: 'WD6',\n evaluate: (resolution) =>\n telegraphSlowRateRatio(WD6_FIXTURE.tau0 / resolution, WD6_FIXTURE.D, WD6_FIXTURE.q),\n target: 1,\n coarseResolution: 2,\n fineResolution: 4,\n tolerance: 0.03,\n orderResolutions: [8, 16],\n },\n claim: {\n name: 'bound',\n at: (resolution) => ({ tau: WD6_FIXTURE.tau0 / resolution, D: WD6_FIXTURE.D, q: WD6_FIXTURE.q }),\n },\n },\n {\n // ε → ∞: the telegraph oscillation frequency over c q tends to 1.\n recordId: 'ab-telegraph-wave',\n kind: 'numeric',\n spec: {\n id: 'WD7',\n evaluate: (resolution) =>\n telegraphWaveFrequencyRatio(WD7_FIXTURE.eps0 * resolution, WD7_FIXTURE.D, WD7_FIXTURE.q),\n target: 1,\n coarseResolution: 1,\n fineResolution: 2,\n tolerance: 3e-3,\n orderResolutions: [4, 8],\n },\n claim: {\n name: 'bound',\n at: (resolution) => ({\n tau: (WD7_FIXTURE.eps0 * resolution) / (WD7_FIXTURE.D * WD7_FIXTURE.q ** 2),\n D: WD7_FIXTURE.D,\n q: WD7_FIXTURE.q,\n }),\n },\n },\n {\n // Steady state: the heat solution's deviation from the Laplace profile → 0.\n recordId: 'ab-heat-laplace',\n kind: 'numeric',\n spec: {\n id: 'WD8',\n evaluate: (resolution) => heatSteadyDeviation(resolution, WD8_FIXTURE),\n target: 0,\n coarseResolution: 2,\n fineResolution: 4,\n tolerance: 0.025,\n // The approach to the steady state is exponential in t, not a power law; the fit reports what it sees.\n orderResolutions: [8, 16],\n },\n },\n {\n // Non-relativistic limit: kinetic-frequency error → 0 as x = ck/ω₀ halves.\n recordId: 'ab-kg-schrodinger',\n kind: 'numeric',\n spec: {\n id: 'WS5',\n evaluate: (resolution) => kgNonrelativisticError(WS5_FIXTURE.x0 / resolution),\n target: 0,\n coarseResolution: 1,\n fineResolution: 2,\n tolerance: 1e-3,\n orderResolutions: [4, 8],\n },\n // The spec reads only x = ck/ω₀; c = ω₀ = 1 is one point with that x.\n claim: { name: 'bound', at: (resolution) => ({ c: 1, omega0: 1, k: WS5_FIXTURE.x0 / resolution }) },\n },\n {\n // Uniform-mode restriction: the full KG PDE, uniform data, vs cos(ω₀t).\n recordId: 'ab-kg-oscillator',\n kind: 'numeric',\n spec: {\n id: 'WS6',\n evaluate: (steps) =>\n kgUniformModeValue(steps, WS6_FIXTURE.c, WS6_FIXTURE.omega0, WS6_FIXTURE.tEnd),\n target: Math.cos(WS6_FIXTURE.omega0 * WS6_FIXTURE.tEnd),\n coarseResolution: 50,\n fineResolution: 100,\n tolerance: 3e-4,\n orderResolutions: [200, 400],\n },\n },\n {\n // Flexible-string limit: stiff-string phase velocity → √(F/μ) as k shrinks.\n recordId: 'ab-stiff-string',\n kind: 'numeric',\n spec: {\n id: 'WS7',\n evaluate: (resolution) =>\n stiffStringPhaseVelocity(resolution, WS7_FIXTURE.F, WS7_FIXTURE.mu, WS7_FIXTURE.EI, WS7_FIXTURE.k0),\n target: Math.sqrt(WS7_FIXTURE.F / WS7_FIXTURE.mu),\n coarseResolution: 1,\n fineResolution: 2,\n tolerance: 0.15,\n orderResolutions: [4, 8],\n },\n claim: {\n name: 'bound',\n at: (resolution) => ({\n F: WS7_FIXTURE.F,\n mu: WS7_FIXTURE.mu,\n EI: WS7_FIXTURE.EI,\n k: WS7_FIXTURE.k0 / resolution,\n }),\n },\n },\n // ── The three oscillator bridges that had no in-process witness ──────────\n {\n // Regular limit θ0 → 0: T/T0 of the pendulum, integrated by RK4, tends to 1.\n // The tolerance is the upper end W7 records, 0.002507 at θ0 = 0.2; the\n // bound's deltaAt there is the AGM form, a second method.\n recordId: 'ab-pendulum-linear',\n kind: 'numeric',\n spec: {\n id: 'W7',\n evaluate: (resolution) => measurePendulumPeriodRatio(W7_FIXTURE.theta0 / resolution),\n target: 1,\n coarseResolution: 1,\n fineResolution: 2,\n tolerance: 0.002507,\n orderResolutions: [4, 8],\n },\n claim: { name: 'bound', at: (resolution) => ({ theta0: W7_FIXTURE.theta0 / resolution }) },\n },\n {\n // Singular limit m → 0: the full damped spring's offset from the reduced\n // model outside the layer, integrated by RK4; the tolerance is the bound's\n // own deltaAt at the fine mass, which is not sharp there.\n recordId: 'ab-damped-massless',\n kind: 'numeric',\n spec: {\n id: 'W8b',\n evaluate: (resolution) => measureMasslessOffset(W8B_FIXTURE.m / resolution),\n target: 0,\n coarseResolution: 1,\n fineResolution: 2,\n tolerance: dampedOffsetBoundAt({ m: W8B_FIXTURE.m / 2, b: W8B_FIXTURE.b, k: W8B_FIXTURE.k, x0: W8B_FIXTURE.x0, v0: W8B_FIXTURE.v0 }),\n orderResolutions: [4, 8],\n },\n claim: {\n name: 'bound-holds-at',\n at: (resolution) => ({ m: W8B_FIXTURE.m / resolution, b: W8B_FIXTURE.b, k: W8B_FIXTURE.k, x0: W8B_FIXTURE.x0, v0: W8B_FIXTURE.v0 }),\n },\n },\n {\n // Coarse-graining, long wavelength: 1 − ω/(c q) measured on the integrated\n // ring, over (qa)²/24, tends to 1 within the 0.5% W9 records.\n recordId: 'ab-chain-wave',\n kind: 'numeric',\n spec: {\n id: 'W9',\n evaluate: (resolution) => {\n const masses = W9_FIXTURE.masses * resolution;\n return measureChainDispersionError(masses) / dispersionErrorApproximation((2 * Math.PI) / masses);\n },\n target: 1,\n coarseResolution: 1,\n fineResolution: 2,\n tolerance: 0.005,\n },\n claim: {\n name: 'preserves',\n item: 'long-wavelength dispersion ω ≈ c q',\n at: (resolution) => ({ qa: (2 * Math.PI) / (W9_FIXTURE.masses * resolution) }),\n },\n },\n];\n"]}
|
|
@@ -31,6 +31,19 @@
|
|
|
31
31
|
* `lhs − rhs = 0`; the capability needed is SIMPLIFICATION, which lives in
|
|
32
32
|
* `expr-simplify.ts` (a different peer, `@danielsimonjr/mathts-functions`).
|
|
33
33
|
*
|
|
34
|
+
* ## The numeric probe is a SECOND result, never folded into the CAS status
|
|
35
|
+
*
|
|
36
|
+
* A simplifier that fails on everything would leave every wrong dictionary
|
|
37
|
+
* `'unresolved'`, which is "not checked", not "shown wrong" (the weaker
|
|
38
|
+
* guarantee NOTES.md records). {@link probeSymbolicWitness} therefore
|
|
39
|
+
* evaluates both sides at seeded random positive points through `evalExpr`
|
|
40
|
+
* and REFUTES on disagreement. Its outcome is its own kind
|
|
41
|
+
* ({@link NumericProbeKind}), carried on the run result beside `status`:
|
|
42
|
+
* a probe that agrees never makes a run `'checked'`, a probe that refutes
|
|
43
|
+
* never makes it `'refuted'`, and the two are tallied as two sets of
|
|
44
|
+
* numbers ({@link tallySymbolicResults}; AGENTS law 4). MathTS
|
|
45
|
+
* `symbolicEqual` is not used: it is the same simplifier, not a second method.
|
|
46
|
+
*
|
|
34
47
|
* @module atlas/witness-symbolic
|
|
35
48
|
* @internal
|
|
36
49
|
*/
|
|
@@ -64,6 +77,64 @@ export interface SymbolicWitnessSpec {
|
|
|
64
77
|
*/
|
|
65
78
|
readonly budgetMs?: number;
|
|
66
79
|
}
|
|
80
|
+
/**
|
|
81
|
+
* What the numeric probe concluded: its own kind, never the CAS status.
|
|
82
|
+
*
|
|
83
|
+
* - `'numeric-refuted'`: some seeded point gives |lhs − rhs|/(|lhs| + |rhs|)
|
|
84
|
+
* above {@link NUMERIC_PROBE_TOLERANCE}.
|
|
85
|
+
* - `'numeric-agrees'`: every point is within it. Agreement at finitely
|
|
86
|
+
* many points is not a proof, so this never lights an evidence tag.
|
|
87
|
+
* - `'numeric-not-run'`: a side could not be evaluated to a finite number.
|
|
88
|
+
*
|
|
89
|
+
* @internal
|
|
90
|
+
*/
|
|
91
|
+
export type NumericProbeKind = 'numeric-refuted' | 'numeric-agrees' | 'numeric-not-run';
|
|
92
|
+
/** The numeric probe's record. @internal */
|
|
93
|
+
export interface NumericProbe {
|
|
94
|
+
readonly kind: NumericProbeKind;
|
|
95
|
+
/** Points evaluated; 0 when not run. */
|
|
96
|
+
readonly points: number;
|
|
97
|
+
/** max |lhs − rhs|/(|lhs| + |rhs|) over the points; absent when not run. */
|
|
98
|
+
readonly worst?: number;
|
|
99
|
+
readonly detail: string;
|
|
100
|
+
}
|
|
101
|
+
/** Seeded points per probe. @internal */
|
|
102
|
+
export declare const NUMERIC_PROBE_POINTS = 8;
|
|
103
|
+
/** The relative difference above which a point refutes. @internal */
|
|
104
|
+
export declare const NUMERIC_PROBE_TOLERANCE = 1e-12;
|
|
105
|
+
/**
|
|
106
|
+
* Evaluate a symbolic witness's two sides at `points` seeded random points,
|
|
107
|
+
* every free symbol drawn from [0.5, 2) by MathTS `random` after
|
|
108
|
+
* `seedProbabilityRng(spec.id)`, so a re-run sees the same points. The free
|
|
109
|
+
* symbols are the scalar leaves (`scalarSymbolsFromMathTs`) that do not
|
|
110
|
+
* evaluate on their own. Never throws.
|
|
111
|
+
*
|
|
112
|
+
* @internal
|
|
113
|
+
*/
|
|
114
|
+
export declare function probeSymbolicWitness(spec: SymbolicWitnessSpec, points?: number): NumericProbe;
|
|
115
|
+
/** A symbolic run: the CAS status, and the numeric probe beside it. @internal */
|
|
116
|
+
export interface SymbolicWitnessRunResult extends WitnessRunResult {
|
|
117
|
+
readonly kind: 'symbolic';
|
|
118
|
+
readonly numericProbe: NumericProbe;
|
|
119
|
+
}
|
|
120
|
+
/**
|
|
121
|
+
* The CAS outcomes and the numeric outcomes of symbolic runs, as two separate
|
|
122
|
+
* tallies. They are never added together.
|
|
123
|
+
*
|
|
124
|
+
* @internal
|
|
125
|
+
*/
|
|
126
|
+
export declare function tallySymbolicResults(results: readonly SymbolicWitnessRunResult[]): {
|
|
127
|
+
readonly cas: {
|
|
128
|
+
readonly checked: number;
|
|
129
|
+
readonly refuted: number;
|
|
130
|
+
readonly unresolved: number;
|
|
131
|
+
};
|
|
132
|
+
readonly numeric: {
|
|
133
|
+
readonly agrees: number;
|
|
134
|
+
readonly refuted: number;
|
|
135
|
+
readonly notRun: number;
|
|
136
|
+
};
|
|
137
|
+
};
|
|
67
138
|
/**
|
|
68
139
|
* Run one symbolic witness.
|
|
69
140
|
*
|
|
@@ -71,9 +142,10 @@ export interface SymbolicWitnessSpec {
|
|
|
71
142
|
* @param simplifier - the CAS capability, or `null` when the optional peer is
|
|
72
143
|
* absent. When omitted, resolves to `simplifyExpr` if the peer is available and
|
|
73
144
|
* to `null` otherwise. Pass `null` EXPLICITLY to exercise the absent path.
|
|
74
|
-
* @returns a result
|
|
75
|
-
*
|
|
145
|
+
* @returns a result carrying the CAS status and, beside it, the numeric
|
|
146
|
+
* probe; **never throws**, because a thrown error forces callers into a
|
|
147
|
+
* `catch` that cannot distinguish "did not run" from "failed".
|
|
76
148
|
* @internal
|
|
77
149
|
*/
|
|
78
|
-
export declare function runSymbolicWitness(spec: SymbolicWitnessSpec, simplifier?: SymbolicSimplifier | null): Promise<
|
|
150
|
+
export declare function runSymbolicWitness(spec: SymbolicWitnessSpec, simplifier?: SymbolicSimplifier | null): Promise<SymbolicWitnessRunResult>;
|
|
79
151
|
//# sourceMappingURL=witness-symbolic.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"witness-symbolic.d.ts","sourceRoot":"","sources":["../../src/atlas/witness-symbolic.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"witness-symbolic.d.ts","sourceRoot":"","sources":["../../src/atlas/witness-symbolic.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgDG;AAGH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAC;AAM5D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAG5D;;;;;;GAMG;AACH,MAAM,MAAM,kBAAkB,GAAG,CAC/B,IAAI,EAAE,QAAQ,KACX,OAAO,CAAC;IAAE,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;IAAC,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAA;CAAE,CAAC,CAAC;AAExE,iDAAiD;AACjD,MAAM,WAAW,mBAAmB;IAClC,kCAAkC;IAClC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,GAAG,EAAE,QAAQ,CAAC;IACvB,QAAQ,CAAC,GAAG,EAAE,QAAQ,CAAC;IACvB;;;;;;;;OAQG;IACH,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;CAC5B;AAID;;;;;;;;;;GAUG;AACH,MAAM,MAAM,gBAAgB,GAAG,iBAAiB,GAAG,gBAAgB,GAAG,iBAAiB,CAAC;AAExF,4CAA4C;AAC5C,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,IAAI,EAAE,gBAAgB,CAAC;IAChC,wCAAwC;IACxC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,4EAA4E;IAC5E,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB;AAED,yCAAyC;AACzC,eAAO,MAAM,oBAAoB,IAAI,CAAC;AACtC,qEAAqE;AACrE,eAAO,MAAM,uBAAuB,QAAQ,CAAC;AAkB7C;;;;;;;;GAQG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,mBAAmB,EAAE,MAAM,GAAE,MAA6B,GAAG,YAAY,CAoCnH;AAED,iFAAiF;AACjF,MAAM,WAAW,wBAAyB,SAAQ,gBAAgB;IAChE,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;IAC1B,QAAQ,CAAC,YAAY,EAAE,YAAY,CAAC;CACrC;AAED;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,SAAS,wBAAwB,EAAE,GAAG;IAClF,QAAQ,CAAC,GAAG,EAAE;QAAE,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;KAAE,CAAC;IAClG,QAAQ,CAAC,OAAO,EAAE;QAAE,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;CAClG,CAUA;AAWD;;;;;;;;;;;GAWG;AACH,wBAAsB,kBAAkB,CACtC,IAAI,EAAE,mBAAmB,EACzB,UAAU,CAAC,EAAE,kBAAkB,GAAG,IAAI,GACrC,OAAO,CAAC,wBAAwB,CAAC,CAqFnC"}
|