universal-physics-tensor 0.45.2 → 0.47.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 +85 -66
- package/bin/upt.mjs +22 -22
- package/dist/atlas/applicability.d.ts +108 -0
- package/dist/atlas/applicability.d.ts.map +1 -0
- package/dist/atlas/applicability.js +301 -0
- package/dist/atlas/applicability.js.map +1 -0
- package/dist/atlas/association.d.ts +92 -0
- package/dist/atlas/association.d.ts.map +1 -0
- package/dist/atlas/association.js +112 -0
- package/dist/atlas/association.js.map +1 -0
- package/dist/atlas/benchmark/backend-shapes.d.ts +47 -0
- package/dist/atlas/benchmark/backend-shapes.d.ts.map +1 -0
- package/dist/atlas/benchmark/backend-shapes.js +58 -0
- package/dist/atlas/benchmark/backend-shapes.js.map +1 -0
- package/dist/atlas/benchmark/baselines.d.ts +64 -0
- package/dist/atlas/benchmark/baselines.d.ts.map +1 -0
- package/dist/atlas/benchmark/baselines.js +112 -0
- package/dist/atlas/benchmark/baselines.js.map +1 -0
- package/dist/atlas/benchmark/leakage.d.ts +56 -0
- package/dist/atlas/benchmark/leakage.d.ts.map +1 -0
- package/dist/atlas/benchmark/leakage.js +100 -0
- package/dist/atlas/benchmark/leakage.js.map +1 -0
- package/dist/atlas/benchmark/loader.d.ts +56 -0
- package/dist/atlas/benchmark/loader.d.ts.map +1 -0
- package/dist/atlas/benchmark/loader.js +104 -0
- package/dist/atlas/benchmark/loader.js.map +1 -0
- package/dist/atlas/benchmark/run-atlas.d.ts +72 -0
- package/dist/atlas/benchmark/run-atlas.d.ts.map +1 -0
- package/dist/atlas/benchmark/run-atlas.js +210 -0
- package/dist/atlas/benchmark/run-atlas.js.map +1 -0
- package/dist/atlas/benchmark/stats.d.ts +90 -0
- package/dist/atlas/benchmark/stats.d.ts.map +1 -0
- package/dist/atlas/benchmark/stats.js +159 -0
- package/dist/atlas/benchmark/stats.js.map +1 -0
- package/dist/atlas/benchmark/study.d.ts +120 -0
- package/dist/atlas/benchmark/study.d.ts.map +1 -0
- package/dist/atlas/benchmark/study.js +192 -0
- package/dist/atlas/benchmark/study.js.map +1 -0
- package/dist/atlas/benchmark/types.d.ts +79 -0
- package/dist/atlas/benchmark/types.d.ts.map +1 -0
- package/dist/atlas/benchmark/types.js +46 -0
- package/dist/atlas/benchmark/types.js.map +1 -0
- package/dist/atlas/composition-table.d.ts +55 -0
- package/dist/atlas/composition-table.d.ts.map +1 -0
- package/dist/atlas/composition-table.js +133 -0
- package/dist/atlas/composition-table.js.map +1 -0
- package/dist/atlas/conventions.d.ts +63 -0
- package/dist/atlas/conventions.d.ts.map +1 -0
- package/dist/atlas/conventions.js +93 -0
- package/dist/atlas/conventions.js.map +1 -0
- package/dist/atlas/coverage.d.ts +93 -0
- package/dist/atlas/coverage.d.ts.map +1 -0
- package/dist/atlas/coverage.js +69 -0
- package/dist/atlas/coverage.js.map +1 -0
- package/dist/atlas/derivation.d.ts +137 -0
- package/dist/atlas/derivation.d.ts.map +1 -0
- package/dist/atlas/derivation.js +190 -0
- package/dist/atlas/derivation.js.map +1 -0
- package/dist/atlas/derive-evidence.d.ts +218 -0
- package/dist/atlas/derive-evidence.d.ts.map +1 -0
- package/dist/atlas/derive-evidence.js +225 -0
- package/dist/atlas/derive-evidence.js.map +1 -0
- package/dist/atlas/diffusion/bridges-closure.d.ts +63 -0
- package/dist/atlas/diffusion/bridges-closure.d.ts.map +1 -0
- package/dist/atlas/diffusion/bridges-closure.js +350 -0
- package/dist/atlas/diffusion/bridges-closure.js.map +1 -0
- package/dist/atlas/diffusion/bridges.d.ts +36 -0
- package/dist/atlas/diffusion/bridges.d.ts.map +1 -0
- package/dist/atlas/diffusion/bridges.js +226 -0
- package/dist/atlas/diffusion/bridges.js.map +1 -0
- package/dist/atlas/diffusion/dimensions.d.ts +21 -0
- package/dist/atlas/diffusion/dimensions.d.ts.map +1 -0
- package/dist/atlas/diffusion/dimensions.js +21 -0
- package/dist/atlas/diffusion/dimensions.js.map +1 -0
- package/dist/atlas/diffusion/index.d.ts +16 -0
- package/dist/atlas/diffusion/index.d.ts.map +1 -0
- package/dist/atlas/diffusion/index.js +23 -0
- package/dist/atlas/diffusion/index.js.map +1 -0
- package/dist/atlas/diffusion/models.d.ts +24 -0
- package/dist/atlas/diffusion/models.d.ts.map +1 -0
- package/dist/atlas/diffusion/models.js +139 -0
- package/dist/atlas/diffusion/models.js.map +1 -0
- package/dist/atlas/diffusion/numerics.d.ts +181 -0
- package/dist/atlas/diffusion/numerics.d.ts.map +1 -0
- package/dist/atlas/diffusion/numerics.js +251 -0
- package/dist/atlas/diffusion/numerics.js.map +1 -0
- package/dist/atlas/error-algebra.d.ts +52 -0
- package/dist/atlas/error-algebra.d.ts.map +1 -0
- package/dist/atlas/error-algebra.js +55 -0
- package/dist/atlas/error-algebra.js.map +1 -0
- package/dist/atlas/export.d.ts +48 -0
- package/dist/atlas/export.d.ts.map +1 -0
- package/dist/atlas/export.js +106 -0
- package/dist/atlas/export.js.map +1 -0
- package/dist/atlas/families.d.ts +14 -0
- package/dist/atlas/families.d.ts.map +1 -0
- package/dist/atlas/families.js +20 -0
- package/dist/atlas/families.js.map +1 -0
- package/dist/atlas/index.d.ts +90 -0
- package/dist/atlas/index.d.ts.map +1 -0
- package/dist/atlas/index.js +69 -0
- package/dist/atlas/index.js.map +1 -0
- package/dist/atlas/link-prediction.d.ts +71 -0
- package/dist/atlas/link-prediction.d.ts.map +1 -0
- package/dist/atlas/link-prediction.js +128 -0
- package/dist/atlas/link-prediction.js.map +1 -0
- package/dist/atlas/model.d.ts +70 -0
- package/dist/atlas/model.d.ts.map +1 -0
- package/dist/atlas/model.js +26 -0
- package/dist/atlas/model.js.map +1 -0
- package/dist/atlas/oscillators/bridges-coarse.d.ts +71 -0
- package/dist/atlas/oscillators/bridges-coarse.d.ts.map +1 -0
- package/dist/atlas/oscillators/bridges-coarse.js +146 -0
- package/dist/atlas/oscillators/bridges-coarse.js.map +1 -0
- package/dist/atlas/oscillators/bridges-exact.d.ts +70 -0
- package/dist/atlas/oscillators/bridges-exact.d.ts.map +1 -0
- package/dist/atlas/oscillators/bridges-exact.js +230 -0
- package/dist/atlas/oscillators/bridges-exact.js.map +1 -0
- package/dist/atlas/oscillators/bridges-limits.d.ts +118 -0
- package/dist/atlas/oscillators/bridges-limits.d.ts.map +1 -0
- package/dist/atlas/oscillators/bridges-limits.js +345 -0
- package/dist/atlas/oscillators/bridges-limits.js.map +1 -0
- package/dist/atlas/oscillators/dimensions.d.ts +34 -0
- package/dist/atlas/oscillators/dimensions.d.ts.map +1 -0
- package/dist/atlas/oscillators/dimensions.js +34 -0
- package/dist/atlas/oscillators/dimensions.js.map +1 -0
- package/dist/atlas/oscillators/index.d.ts +38 -0
- package/dist/atlas/oscillators/index.d.ts.map +1 -0
- package/dist/atlas/oscillators/index.js +37 -0
- package/dist/atlas/oscillators/index.js.map +1 -0
- package/dist/atlas/oscillators/models.d.ts +25 -0
- package/dist/atlas/oscillators/models.d.ts.map +1 -0
- package/dist/atlas/oscillators/models.js +160 -0
- package/dist/atlas/oscillators/models.js.map +1 -0
- package/dist/atlas/oscillators/rejections.d.ts +21 -0
- package/dist/atlas/oscillators/rejections.d.ts.map +1 -0
- package/dist/atlas/oscillators/rejections.js +54 -0
- package/dist/atlas/oscillators/rejections.js.map +1 -0
- package/dist/atlas/path-bound.d.ts +143 -0
- package/dist/atlas/path-bound.d.ts.map +1 -0
- package/dist/atlas/path-bound.js +268 -0
- package/dist/atlas/path-bound.js.map +1 -0
- package/dist/atlas/poster/associations.d.ts +66 -0
- package/dist/atlas/poster/associations.d.ts.map +1 -0
- package/dist/atlas/poster/associations.js +90 -0
- package/dist/atlas/poster/associations.js.map +1 -0
- package/dist/atlas/poster/derivations.d.ts +156 -0
- package/dist/atlas/poster/derivations.d.ts.map +1 -0
- package/dist/atlas/poster/derivations.js +430 -0
- package/dist/atlas/poster/derivations.js.map +1 -0
- package/dist/atlas/poster/statements.d.ts +198 -0
- package/dist/atlas/poster/statements.d.ts.map +1 -0
- package/dist/atlas/poster/statements.js +365 -0
- package/dist/atlas/poster/statements.js.map +1 -0
- package/dist/atlas/public.d.ts +26 -0
- package/dist/atlas/public.d.ts.map +1 -0
- package/dist/atlas/public.js +21 -0
- package/dist/atlas/public.js.map +1 -0
- package/dist/atlas/regime.d.ts +171 -0
- package/dist/atlas/regime.d.ts.map +1 -0
- package/dist/atlas/regime.js +309 -0
- package/dist/atlas/regime.js.map +1 -0
- package/dist/atlas/serialize.d.ts +50 -0
- package/dist/atlas/serialize.d.ts.map +1 -0
- package/dist/atlas/serialize.js +180 -0
- package/dist/atlas/serialize.js.map +1 -0
- package/dist/atlas/statement.d.ts +165 -0
- package/dist/atlas/statement.d.ts.map +1 -0
- package/dist/atlas/statement.js +176 -0
- package/dist/atlas/statement.js.map +1 -0
- package/dist/atlas/types.d.ts +325 -0
- package/dist/atlas/types.d.ts.map +1 -0
- package/dist/atlas/types.js +61 -0
- package/dist/atlas/types.js.map +1 -0
- package/dist/atlas/waves/bridges-closure.d.ts +39 -0
- package/dist/atlas/waves/bridges-closure.d.ts.map +1 -0
- package/dist/atlas/waves/bridges-closure.js +226 -0
- package/dist/atlas/waves/bridges-closure.js.map +1 -0
- package/dist/atlas/waves/bridges.d.ts +49 -0
- package/dist/atlas/waves/bridges.d.ts.map +1 -0
- package/dist/atlas/waves/bridges.js +266 -0
- package/dist/atlas/waves/bridges.js.map +1 -0
- package/dist/atlas/waves/index.d.ts +16 -0
- package/dist/atlas/waves/index.d.ts.map +1 -0
- package/dist/atlas/waves/index.js +23 -0
- package/dist/atlas/waves/index.js.map +1 -0
- package/dist/atlas/waves/models.d.ts +29 -0
- package/dist/atlas/waves/models.d.ts.map +1 -0
- package/dist/atlas/waves/models.js +127 -0
- package/dist/atlas/waves/models.js.map +1 -0
- package/dist/atlas/waves/numerics.d.ts +149 -0
- package/dist/atlas/waves/numerics.d.ts.map +1 -0
- package/dist/atlas/waves/numerics.js +218 -0
- package/dist/atlas/waves/numerics.js.map +1 -0
- package/dist/atlas/witness-artifact.d.ts +65 -0
- package/dist/atlas/witness-artifact.d.ts.map +1 -0
- package/dist/atlas/witness-artifact.js +78 -0
- package/dist/atlas/witness-artifact.js.map +1 -0
- package/dist/atlas/witness-numeric.d.ts +81 -0
- package/dist/atlas/witness-numeric.d.ts.map +1 -0
- package/dist/atlas/witness-numeric.js +105 -0
- package/dist/atlas/witness-numeric.js.map +1 -0
- package/dist/atlas/witness-result.d.ts +77 -0
- package/dist/atlas/witness-result.d.ts.map +1 -0
- package/dist/atlas/witness-result.js +39 -0
- package/dist/atlas/witness-result.js.map +1 -0
- package/dist/atlas/witness-specs.d.ts +110 -0
- package/dist/atlas/witness-specs.d.ts.map +1 -0
- package/dist/atlas/witness-specs.js +372 -0
- package/dist/atlas/witness-specs.js.map +1 -0
- package/dist/atlas/witness-symbolic.d.ts +79 -0
- package/dist/atlas/witness-symbolic.d.ts.map +1 -0
- package/dist/atlas/witness-symbolic.js +140 -0
- package/dist/atlas/witness-symbolic.js.map +1 -0
- package/dist/atlas/witnesses/quantum-support.d.ts +50 -0
- package/dist/atlas/witnesses/quantum-support.d.ts.map +1 -0
- package/dist/atlas/witnesses/quantum-support.js +48 -0
- package/dist/atlas/witnesses/quantum-support.js.map +1 -0
- package/dist/bridges/be11-decoherence-confrontation.js.map +1 -1
- package/dist/bridges/be21-kss-confrontation.js.map +1 -1
- package/dist/bridges/be23-planckian-confrontation.js.map +1 -1
- package/dist/bridges/be35-bootstrap-confrontation.js.map +1 -1
- package/dist/bridges/be36-gw170817-confrontation.js.map +1 -1
- package/dist/bridges/be37-cassini-confrontation.js.map +1 -1
- package/dist/bridges/be48-collapse-confrontation.js.map +1 -1
- package/dist/bridges/be51-lensing-confrontation.d.ts.map +1 -1
- package/dist/bridges/be51-lensing-confrontation.js +5 -3
- package/dist/bridges/be51-lensing-confrontation.js.map +1 -1
- package/dist/bridges/be52-mercury-confrontation.d.ts.map +1 -1
- package/dist/bridges/be52-mercury-confrontation.js +4 -1
- package/dist/bridges/be52-mercury-confrontation.js.map +1 -1
- package/dist/bridges/be55-quantum-hall-confrontation.js.map +1 -1
- package/dist/bridges/be56-casimir-confrontation.js.map +1 -1
- package/dist/bridges/be58-johnson-nyquist-confrontation.js.map +1 -1
- package/dist/bridges/be59-ac-josephson-confrontation.js.map +1 -1
- package/dist/bridges/be60-fractional-qh-confrontation.js.map +1 -1
- package/dist/bridges/be61-wiedemann-franz-confrontation.js.map +1 -1
- package/dist/bridges/be62-bcs-gap-confrontation.js.map +1 -1
- package/dist/bridges/be63-chandrasekhar-mass-confrontation.js.map +1 -1
- package/dist/bridges/be64-eddington-luminosity-confrontation.js.map +1 -1
- package/dist/bridges/be65-jeans-mass-confrontation.js.map +1 -1
- package/dist/bridges/bridge-equations.d.ts +2 -2
- package/dist/bridges/bridge-equations.d.ts.map +1 -1
- package/dist/bridges/bridge-equations.js +2 -2
- package/dist/bridges/bridge-equations.js.map +1 -1
- package/dist/bridges/catalog-adapter.d.ts.map +1 -1
- package/dist/bridges/catalog-adapter.js.map +1 -1
- package/dist/bridges/confrontations.d.ts.map +1 -1
- package/dist/bridges/confrontations.js +7 -0
- package/dist/bridges/confrontations.js.map +1 -1
- package/dist/bridges/equations/_be-helpers.d.ts +2 -2
- package/dist/bridges/equations/_be-helpers.js +2 -2
- package/dist/bridges/equations/be-20-vacuum-energy.js.map +1 -1
- package/dist/bridges/equations/be-35-conformal-bootstrap.d.ts +59 -72
- package/dist/bridges/equations/be-35-conformal-bootstrap.d.ts.map +1 -1
- package/dist/bridges/equations/be-35-conformal-bootstrap.js +66 -98
- package/dist/bridges/equations/be-35-conformal-bootstrap.js.map +1 -1
- package/dist/bridges/equations/be-48-grw-localization.d.ts +9 -8
- package/dist/bridges/equations/be-48-grw-localization.d.ts.map +1 -1
- package/dist/bridges/equations/be-48-grw-localization.js +9 -8
- package/dist/bridges/equations/be-48-grw-localization.js.map +1 -1
- package/dist/bridges/gravitational-lensing.d.ts +10 -0
- package/dist/bridges/gravitational-lensing.d.ts.map +1 -1
- package/dist/bridges/gravitational-lensing.js.map +1 -1
- package/dist/bridges/index.d.ts +125 -7
- package/dist/bridges/index.d.ts.map +1 -1
- package/dist/bridges/index.js +483 -20
- package/dist/bridges/index.js.map +1 -1
- package/dist/bridges/observations/types.d.ts +14 -0
- package/dist/bridges/observations/types.d.ts.map +1 -1
- package/dist/bridges/observations/types.js.map +1 -1
- package/dist/bridges/perihelion-precession.d.ts +10 -0
- package/dist/bridges/perihelion-precession.d.ts.map +1 -1
- package/dist/bridges/perihelion-precession.js.map +1 -1
- package/dist/bridges/rhs-registry.js +2 -2
- package/dist/canonical/canonical-equation.d.ts +15 -0
- package/dist/canonical/canonical-equation.d.ts.map +1 -1
- package/dist/canonical/entries/_l1-build.d.ts +1 -1
- package/dist/canonical/entries/_l1-build.d.ts.map +1 -1
- package/dist/canonical/entries/atomic.d.ts.map +1 -1
- package/dist/canonical/entries/atomic.js +23 -0
- package/dist/canonical/entries/atomic.js.map +1 -1
- package/dist/canonical/entries/nonmonomial.d.ts.map +1 -1
- package/dist/canonical/entries/nonmonomial.js +93 -0
- package/dist/canonical/entries/nonmonomial.js.map +1 -1
- package/dist/canonical/normal-form.js.map +1 -1
- package/dist/canonical/residual.d.ts +28 -0
- package/dist/canonical/residual.d.ts.map +1 -0
- package/dist/canonical/residual.js +31 -0
- package/dist/canonical/residual.js.map +1 -0
- package/dist/cli/command.d.ts +8 -0
- package/dist/cli/command.d.ts.map +1 -1
- package/dist/cli/command.js +10 -0
- package/dist/cli/command.js.map +1 -1
- package/dist/cli/commands/atlas.d.ts +3 -0
- package/dist/cli/commands/atlas.d.ts.map +1 -0
- package/dist/cli/commands/atlas.js +158 -0
- package/dist/cli/commands/atlas.js.map +1 -0
- package/dist/cli/commands/audit.js +3 -3
- package/dist/cli/commands/candidates.js +3 -3
- package/dist/cli/commands/canonical.js +3 -3
- package/dist/cli/commands/confront.d.ts.map +1 -1
- package/dist/cli/commands/confront.js +8 -1
- package/dist/cli/commands/confront.js.map +1 -1
- package/dist/cli/commands/connectors.js +7 -7
- package/dist/cli/commands/coverage.js +3 -3
- package/dist/cli/commands/derive.d.ts.map +1 -1
- package/dist/cli/commands/derive.js +40 -9
- 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 +46 -27
- package/dist/cli/commands/discover.js.map +1 -1
- package/dist/cli/commands/evaluate.d.ts.map +1 -1
- package/dist/cli/commands/evaluate.js +2 -1
- 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 +19 -6
- package/dist/cli/commands/explain.js.map +1 -1
- package/dist/cli/commands/index.d.ts +3 -0
- package/dist/cli/commands/index.d.ts.map +1 -1
- package/dist/cli/commands/index.js +3 -0
- package/dist/cli/commands/index.js.map +1 -1
- package/dist/cli/commands/map.d.ts.map +1 -1
- package/dist/cli/commands/map.js +187 -36
- package/dist/cli/commands/map.js.map +1 -1
- package/dist/cli/commands/path.d.ts +3 -0
- package/dist/cli/commands/path.d.ts.map +1 -0
- package/dist/cli/commands/path.js +228 -0
- package/dist/cli/commands/path.js.map +1 -0
- package/dist/cli/commands/predict.js +4 -4
- package/dist/cli/commands/priority.js +2 -2
- package/dist/cli/commands/probe.d.ts.map +1 -1
- package/dist/cli/commands/probe.js +59 -2
- package/dist/cli/commands/probe.js.map +1 -1
- package/dist/cli/commands/recover.d.ts.map +1 -1
- package/dist/cli/commands/recover.js +25 -6
- package/dist/cli/commands/recover.js.map +1 -1
- package/dist/cli/commands/regime.d.ts +41 -0
- package/dist/cli/commands/regime.d.ts.map +1 -0
- package/dist/cli/commands/regime.js +243 -0
- package/dist/cli/commands/regime.js.map +1 -0
- package/dist/cli/commands/symbolic.js +5 -5
- package/dist/cli/errors.d.ts +13 -1
- package/dist/cli/errors.d.ts.map +1 -1
- package/dist/cli/errors.js +13 -1
- package/dist/cli/errors.js.map +1 -1
- package/dist/cli/graphs.d.ts.map +1 -1
- package/dist/cli/graphs.js +5 -1
- package/dist/cli/graphs.js.map +1 -1
- package/dist/cli/main.d.ts.map +1 -1
- package/dist/cli/main.js +29 -2
- package/dist/cli/main.js.map +1 -1
- package/dist/cli/output.d.ts +6 -1
- package/dist/cli/output.d.ts.map +1 -1
- package/dist/cli/output.js.map +1 -1
- package/dist/cli/version.js.map +1 -1
- package/dist/cli-api.d.ts +21 -1
- package/dist/cli-api.d.ts.map +1 -1
- package/dist/cli-api.js +23 -1
- package/dist/cli-api.js.map +1 -1
- package/dist/composition/axis-audit.js.map +1 -1
- package/dist/composition/bridge-prediction.d.ts.map +1 -1
- package/dist/composition/bridge-prediction.js +0 -0
- package/dist/composition/bridge-prediction.js.map +1 -1
- package/dist/composition/canonical-compare.d.ts +65 -0
- package/dist/composition/canonical-compare.d.ts.map +1 -0
- package/dist/composition/canonical-compare.js +237 -0
- package/dist/composition/canonical-compare.js.map +1 -0
- package/dist/composition/canonical-graph.d.ts +2 -2
- package/dist/composition/canonical-graph.js +2 -2
- package/dist/composition/canonical-graph.js.map +1 -1
- package/dist/composition/canonical-prefactors.d.ts +32 -0
- package/dist/composition/canonical-prefactors.d.ts.map +1 -0
- package/dist/composition/canonical-prefactors.js +80 -0
- package/dist/composition/canonical-prefactors.js.map +1 -0
- package/dist/composition/compose-symbolic.d.ts.map +1 -1
- package/dist/composition/compose-symbolic.js.map +1 -1
- package/dist/composition/compose.d.ts.map +1 -1
- package/dist/composition/compose.js +80 -1
- package/dist/composition/compose.js.map +1 -1
- package/dist/composition/consequence.js.map +1 -1
- package/dist/composition/discovery.d.ts +20 -3
- package/dist/composition/discovery.d.ts.map +1 -1
- package/dist/composition/discovery.js +30 -4
- package/dist/composition/discovery.js.map +1 -1
- package/dist/composition/edge.d.ts +64 -0
- package/dist/composition/edge.d.ts.map +1 -1
- package/dist/composition/edge.js +29 -0
- package/dist/composition/edge.js.map +1 -1
- package/dist/composition/edges/calibration.d.ts.map +1 -1
- package/dist/composition/edges/calibration.js +46 -0
- package/dist/composition/edges/calibration.js.map +1 -1
- package/dist/composition/edges/catalog-quantum.d.ts.map +1 -1
- package/dist/composition/edges/catalog-quantum.js +9 -0
- package/dist/composition/edges/catalog-quantum.js.map +1 -1
- package/dist/composition/edges/catalog-tranche.d.ts.map +1 -1
- package/dist/composition/edges/catalog-tranche.js +18 -0
- package/dist/composition/edges/catalog-tranche.js.map +1 -1
- package/dist/composition/enumerate.js.map +1 -1
- package/dist/composition/explain.d.ts +9 -1
- package/dist/composition/explain.d.ts.map +1 -1
- package/dist/composition/explain.js +34 -8
- package/dist/composition/explain.js.map +1 -1
- package/dist/composition/expr-eval.d.ts.map +1 -1
- package/dist/composition/expr-eval.js.map +1 -1
- package/dist/composition/expr-simplify.d.ts +13 -0
- package/dist/composition/expr-simplify.d.ts.map +1 -1
- package/dist/composition/expr-simplify.js +25 -0
- package/dist/composition/expr-simplify.js.map +1 -1
- package/dist/composition/expr-subst.js.map +1 -1
- package/dist/composition/graph-viz-svg.d.ts.map +1 -1
- package/dist/composition/graph-viz.d.ts +118 -1
- package/dist/composition/graph-viz.d.ts.map +1 -1
- package/dist/composition/graph-viz.js +189 -6
- package/dist/composition/graph-viz.js.map +1 -1
- package/dist/composition/grounding.d.ts.map +1 -1
- package/dist/composition/grounding.js +6 -1
- package/dist/composition/grounding.js.map +1 -1
- package/dist/composition/identifiability.js.map +1 -1
- package/dist/composition/index.d.ts +4 -2
- package/dist/composition/index.d.ts.map +1 -1
- package/dist/composition/index.js +2 -1
- package/dist/composition/index.js.map +1 -1
- package/dist/composition/poster-source.d.ts +153 -0
- package/dist/composition/poster-source.d.ts.map +1 -0
- package/dist/composition/poster-source.js +183 -0
- package/dist/composition/poster-source.js.map +1 -0
- package/dist/composition/probe/backend-protocol.d.ts +34 -1
- package/dist/composition/probe/backend-protocol.d.ts.map +1 -1
- package/dist/composition/probe/backend-protocol.js +9 -2
- package/dist/composition/probe/backend-protocol.js.map +1 -1
- package/dist/composition/probe/candidate-store.d.ts.map +1 -1
- package/dist/composition/probe/corpus.d.ts +12 -0
- package/dist/composition/probe/corpus.d.ts.map +1 -1
- package/dist/composition/probe/corpus.js +100 -0
- package/dist/composition/probe/corpus.js.map +1 -1
- package/dist/composition/probe/generator.d.ts +14 -0
- package/dist/composition/probe/generator.d.ts.map +1 -1
- package/dist/composition/probe/generator.js +24 -2
- package/dist/composition/probe/generator.js.map +1 -1
- 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 +20 -3
- package/dist/composition/probe/pipeline.js.map +1 -1
- package/dist/composition/probe/problem.js.map +1 -1
- package/dist/composition/probe/report.d.ts.map +1 -1
- package/dist/composition/probe/report.js +2 -0
- package/dist/composition/probe/report.js.map +1 -1
- package/dist/composition/probe/residual.d.ts.map +1 -1
- package/dist/composition/probe/residual.js.map +1 -1
- package/dist/composition/probe/search-budget.js.map +1 -1
- package/dist/composition/proposed-bridges.d.ts +2 -2
- package/dist/composition/proposed-bridges.d.ts.map +1 -1
- package/dist/composition/proposed-bridges.js +1 -1
- package/dist/composition/proposed-bridges.js.map +1 -1
- package/dist/composition/retrodiction.js.map +1 -1
- package/dist/composition/uncertainty.d.ts +52 -2
- package/dist/composition/uncertainty.d.ts.map +1 -1
- package/dist/composition/uncertainty.js +38 -2
- package/dist/composition/uncertainty.js.map +1 -1
- package/dist/composition/user-equation.d.ts.map +1 -1
- package/dist/core/constants.d.ts +13 -0
- package/dist/core/constants.d.ts.map +1 -1
- package/dist/core/constants.js +13 -0
- package/dist/core/constants.js.map +1 -1
- package/dist/core/flux-rules.d.ts.map +1 -1
- package/dist/core/flux-rules.js.map +1 -1
- package/dist/core/labeled-tensor.d.ts.map +1 -1
- package/dist/core/regime-registry.d.ts.map +1 -1
- package/dist/core/regime-rule-install.js.map +1 -1
- package/dist/core/tensor.d.ts.map +1 -1
- package/dist/core/tensor.js.map +1 -1
- package/dist/core/types.d.ts.map +1 -1
- package/dist/diff/bridge-ast-gradient.js.map +1 -1
- package/dist/diff/bridge-gradient.d.ts +1 -1
- package/dist/diff/bridge-gradient.js +1 -1
- package/dist/dimensional/ast-types.d.ts +31 -1
- package/dist/dimensional/ast-types.d.ts.map +1 -1
- package/dist/dimensional/bridge-check.d.ts +1 -1
- package/dist/dimensional/bridge-check.js +1 -1
- package/dist/dimensional/buckingham.d.ts.map +1 -1
- package/dist/dimensional/connection.d.ts +2 -0
- package/dist/dimensional/connection.d.ts.map +1 -1
- package/dist/dimensional/connection.js +2 -0
- package/dist/dimensional/connection.js.map +1 -1
- package/dist/dimensional/curvature-composite.d.ts +5 -3
- package/dist/dimensional/curvature-composite.d.ts.map +1 -1
- package/dist/dimensional/curvature-composite.js +1 -0
- package/dist/dimensional/curvature-composite.js.map +1 -1
- package/dist/dimensional/curvature-invariants.d.ts +2 -0
- package/dist/dimensional/curvature-invariants.d.ts.map +1 -1
- package/dist/dimensional/curvature-invariants.js +2 -0
- package/dist/dimensional/curvature-invariants.js.map +1 -1
- package/dist/dimensional/dimension-spec.d.ts.map +1 -1
- package/dist/dimensional/einstein-equation.d.ts +3 -3
- package/dist/dimensional/einstein-equation.js +3 -3
- package/dist/dimensional/errors.d.ts.map +1 -1
- package/dist/dimensional/metric.d.ts +5 -2
- package/dist/dimensional/metric.d.ts.map +1 -1
- package/dist/dimensional/metric.js +5 -2
- package/dist/dimensional/metric.js.map +1 -1
- package/dist/dimensional/tensor-trace.js.map +1 -1
- package/dist/dimensional/validator-registry.js.map +1 -1
- package/dist/dimensional/validator.d.ts +3 -2
- package/dist/dimensional/validator.d.ts.map +1 -1
- package/dist/dimensional/validator.js +23 -4
- package/dist/dimensional/validator.js.map +1 -1
- package/dist/index.d.ts +4 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -1
- package/dist/index.js.map +1 -1
- package/dist/numerical/curvature-lowering-helpers.d.ts.map +1 -1
- package/dist/numerical/curvature-lowering-helpers.js +104 -0
- package/dist/numerical/curvature-lowering-helpers.js.map +1 -1
- package/dist/numerical/errors.d.ts.map +1 -1
- package/dist/numerical/errors.js.map +1 -1
- package/dist/numerical/float64-engine.d.ts.map +1 -1
- package/dist/numerical/float64-engine.js +51 -24
- package/dist/numerical/float64-engine.js.map +1 -1
- package/dist/numerical/formula-dimension.d.ts.map +1 -1
- package/dist/numerical/formula-dimension.js.map +1 -1
- package/dist/numerical/formula.d.ts.map +1 -1
- package/dist/numerical/formula.js.map +1 -1
- package/dist/numerical/geometrized.d.ts.map +1 -1
- package/dist/numerical/gl4-integrator.d.ts +3 -3
- package/dist/numerical/gl4-integrator.js +3 -3
- package/dist/numerical/killing.d.ts +47 -5
- package/dist/numerical/killing.d.ts.map +1 -1
- package/dist/numerical/killing.js +41 -3
- package/dist/numerical/killing.js.map +1 -1
- package/dist/numerical/klein-gordon.d.ts +2 -2
- package/dist/numerical/klein-gordon.js +2 -2
- package/dist/numerical/lowering.d.ts +2 -2
- package/dist/numerical/lowering.d.ts.map +1 -1
- package/dist/numerical/lowering.js +5 -3
- package/dist/numerical/lowering.js.map +1 -1
- package/dist/numerical/mathts-engine.d.ts.map +1 -1
- package/dist/numerical/mathts-engine.js.map +1 -1
- package/dist/numerical/metric-inverse.js.map +1 -1
- package/dist/numerical/perihelion-finder.d.ts +15 -13
- package/dist/numerical/perihelion-finder.d.ts.map +1 -1
- package/dist/numerical/perihelion-finder.js +15 -13
- package/dist/numerical/perihelion-finder.js.map +1 -1
- package/dist/numerical/weyl-lowering.d.ts.map +1 -1
- package/dist/numerical/weyl-lowering.js +90 -40
- package/dist/numerical/weyl-lowering.js.map +1 -1
- package/package.json +163 -104
|
@@ -0,0 +1,146 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Bridge 5 of the oscillator pilot: the COARSE-GRAINING bridge from the
|
|
3
|
+
* discrete mass–spring chain to the 1-D wave equation.
|
|
4
|
+
*
|
|
5
|
+
* This is the only Phase 0 bridge whose relation is `coarse-graining`: the
|
|
6
|
+
* reduction map `u_n(t) ↦ u(x = na, t)` is not invertible, and the
|
|
7
|
+
* short-wavelength half of the lattice Brillouin zone (`q > π/a`) has no image
|
|
8
|
+
* in the continuum model. The information loss is therefore recorded in
|
|
9
|
+
* `doesNotPreserve` and witnessed numerically by `W9`.
|
|
10
|
+
*
|
|
11
|
+
* @module atlas/oscillators/bridges-coarse
|
|
12
|
+
*/
|
|
13
|
+
import { LENGTH, MASS, VELOCITY } from '../../dimensional/types.js';
|
|
14
|
+
import { deriveRegimeGroups } from '../regime.js';
|
|
15
|
+
import { relationContractOf } from './bridges-exact.js';
|
|
16
|
+
import { SPRING_CONSTANT } from './dimensions.js';
|
|
17
|
+
const FAMILY = 'oscillators';
|
|
18
|
+
/**
|
|
19
|
+
* The lattice dispersion relation of `m u_n″ = κ(u_{n+1} − 2u_n + u_{n−1})`:
|
|
20
|
+
* `ω(q) = 2 √(κ/m) |sin(qa/2)|`.
|
|
21
|
+
*
|
|
22
|
+
* @internal
|
|
23
|
+
*/
|
|
24
|
+
export function latticeDispersion(q, a, kappa, m) {
|
|
25
|
+
return 2 * Math.sqrt(kappa / m) * Math.abs(Math.sin((q * a) / 2));
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* The continuum dispersion relation of `u_tt = c² u_xx` with `c² = κ a² / m`:
|
|
29
|
+
* `ω = c q`.
|
|
30
|
+
*
|
|
31
|
+
* @internal
|
|
32
|
+
*/
|
|
33
|
+
export function continuumDispersion(q, a, kappa, m) {
|
|
34
|
+
return Math.sqrt((kappa * a * a) / m) * Math.abs(q);
|
|
35
|
+
}
|
|
36
|
+
/** The long-wavelength wave speed `c = a √(κ/m)`. @internal */
|
|
37
|
+
export function chainWaveSpeed(a, kappa, m) {
|
|
38
|
+
return a * Math.sqrt(kappa / m);
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* The band edge of the lattice, at `qa = π`: `ω_max = 2 √(κ/m)`.
|
|
42
|
+
* The continuum relation `ω = c q` is unbounded and has no counterpart —
|
|
43
|
+
* that absence IS the information the coarse-graining discards.
|
|
44
|
+
*
|
|
45
|
+
* @internal
|
|
46
|
+
*/
|
|
47
|
+
export function latticeBandEdge(kappa, m) {
|
|
48
|
+
return 2 * Math.sqrt(kappa / m);
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Leading-order relative dispersion error `1 − ω_lattice/ω_continuum`,
|
|
52
|
+
* approximated as `(qa)²/24`.
|
|
53
|
+
*
|
|
54
|
+
* Convention note (fixed for the whole sprint): with `x = qa/2`,
|
|
55
|
+
* `1 − sin x / x = x²/6 − x⁴/120 + …`, so the true relative error is
|
|
56
|
+
* `(qa)²/24 − (qa)⁴/1920`. The quartic term makes `(qa)²/24` an
|
|
57
|
+
* OVERESTIMATE; the signed deviation `(true − approx)/approx` is therefore
|
|
58
|
+
* NEGATIVE and equals `−(qa)²/80` to leading order. The W9 assertion is on
|
|
59
|
+
* the MAGNITUDE, so the sign convention does not change the test — it is
|
|
60
|
+
* stated here so the next reader does not rederive it.
|
|
61
|
+
*
|
|
62
|
+
* @internal
|
|
63
|
+
*/
|
|
64
|
+
export function dispersionErrorApproximation(qa) {
|
|
65
|
+
return (qa * qa) / 24;
|
|
66
|
+
}
|
|
67
|
+
/** Bridge 5: chain → wave equation by coarse-graining. @internal */
|
|
68
|
+
export const BRIDGE_CHAIN_WAVE = {
|
|
69
|
+
id: 'ab-chain-wave',
|
|
70
|
+
relation: 'coarse-graining',
|
|
71
|
+
premises: ['model-chain'],
|
|
72
|
+
conclusion: 'model-wave-1d',
|
|
73
|
+
transformation: 'u_n(t) ↦ u(x = n a, t), with c² = κ a² / m',
|
|
74
|
+
preserves: [
|
|
75
|
+
'long-wavelength dispersion ω ≈ c q',
|
|
76
|
+
'wave speed c = a √(κ/m)',
|
|
77
|
+
'linearity',
|
|
78
|
+
],
|
|
79
|
+
doesNotPreserve: [
|
|
80
|
+
'modes with q > π/a',
|
|
81
|
+
'the band edge ω_max = 2 √(κ/m) at qa = π',
|
|
82
|
+
'the discrete lattice spacing a as an independent scale',
|
|
83
|
+
],
|
|
84
|
+
sideConditions: ['long-wavelength, qa ≪ 1'],
|
|
85
|
+
regime: {
|
|
86
|
+
family: FAMILY,
|
|
87
|
+
inequalities: [{ group: 'qa', op: '<', bound: 1, alias: 'qa ≪ 1' }],
|
|
88
|
+
groupDefinitions: deriveRegimeGroups(FAMILY, [
|
|
89
|
+
{ name: 'm', dim: MASS },
|
|
90
|
+
{ name: 'kappa', dim: SPRING_CONSTANT },
|
|
91
|
+
{ name: 'a', dim: LENGTH },
|
|
92
|
+
{ name: 'c', dim: VELOCITY },
|
|
93
|
+
], ['qa']),
|
|
94
|
+
},
|
|
95
|
+
counterexamples: [
|
|
96
|
+
{
|
|
97
|
+
description: 'A mode at the band edge qa = π has ω = 2√(κ/m) on the lattice, while the ' +
|
|
98
|
+
'continuum relation ω = c q is unbounded: the coarse-grained model has no ' +
|
|
99
|
+
'band edge at all.',
|
|
100
|
+
witness: 'W9',
|
|
101
|
+
},
|
|
102
|
+
],
|
|
103
|
+
evidence: new Set(['proposed', 'dimension-checked', 'numerically-supported']),
|
|
104
|
+
witnesses: [
|
|
105
|
+
{
|
|
106
|
+
id: 'W9',
|
|
107
|
+
kind: 'numeric',
|
|
108
|
+
test: 'tests/atlas/oscillators-coarse.test.ts',
|
|
109
|
+
tolerance: 'relative dispersion error matches (qa)²/24 within 0.5% of itself',
|
|
110
|
+
},
|
|
111
|
+
{
|
|
112
|
+
id: 'W9b',
|
|
113
|
+
kind: 'numeric',
|
|
114
|
+
test: 'tests/atlas/oscillators-coarse.test.ts',
|
|
115
|
+
tolerance: 'ring of 64 masses integrated: ω matches the lattice dispersion within 1e-9 and the coarse error ' +
|
|
116
|
+
'(qa)²/24 within 1%; superposition within 1e-10 (linearity); a 10% wrong κ and a cubic on-site force each fail',
|
|
117
|
+
},
|
|
118
|
+
],
|
|
119
|
+
// The monatomic-chain dispersion omega(q) = 2 sqrt(kappa/m) |sin(qa/2)| and its
|
|
120
|
+
// long-wavelength continuum limit are standard solid-state results. Work and topic are
|
|
121
|
+
// cited rather than a precise section number, which would be fabrication in a more
|
|
122
|
+
// confident costume. This array was EMPTY, which is honest but leaves a textbook result
|
|
123
|
+
// looking unsourced.
|
|
124
|
+
citations: [
|
|
125
|
+
'Kittel, Introduction to Solid State Physics - Phonons I: the monatomic linear chain, its dispersion relation and the qa << 1 continuum limit',
|
|
126
|
+
'Ashcroft & Mermin, Solid State Physics - the one-dimensional monatomic Bravais lattice and the first Brillouin zone band edge at qa = pi',
|
|
127
|
+
],
|
|
128
|
+
reviewStatus: 'proposed',
|
|
129
|
+
};
|
|
130
|
+
/**
|
|
131
|
+
* Bridge 5 re-registered through `RelationContract`.
|
|
132
|
+
*
|
|
133
|
+
* `coarse-graining` leaves `bound` OPTIONAL, and this record carries none: the
|
|
134
|
+
* `qa²/24` dispersion residual is a per-mode series term, not a Lipschitz
|
|
135
|
+
* constant with a uniform offset in a stated norm. The union permits the
|
|
136
|
+
* absence rather than forcing an invented `K` and `delta`.
|
|
137
|
+
*
|
|
138
|
+
* No `deltaAt` either, for the same reason and by the same rule: `deltaAt` is
|
|
139
|
+
* the machine form OF a `delta`, so a record with no `delta` has nothing for
|
|
140
|
+
* it to be the machine form of. `admitApproximation` requires `deltaAt` only
|
|
141
|
+
* of an `approximation`, so this record passes admission unchanged.
|
|
142
|
+
*
|
|
143
|
+
* @internal
|
|
144
|
+
*/
|
|
145
|
+
export const CONTRACT_CHAIN_WAVE = relationContractOf(BRIDGE_CHAIN_WAVE);
|
|
146
|
+
//# sourceMappingURL=bridges-coarse.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bridges-coarse.js","sourceRoot":"","sources":["../../../src/atlas/oscillators/bridges-coarse.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The two Phase 0 `exact-equivalence` bridges of design note §3.
|
|
3
|
+
*
|
|
4
|
+
* - `ab-spring-lc` — the lossless mechanical/electrical dictionary, exact with
|
|
5
|
+
* no side condition beyond positivity and losslessness.
|
|
6
|
+
* - `ab-damped-rlc` — exact only ON a side condition: the two damping ratios
|
|
7
|
+
* must agree, `b/(2√(mk)) = (R/2)√(C/L)`.
|
|
8
|
+
*
|
|
9
|
+
* **Regimes carry no inequalities.** `RegimeInequality` expresses `<`, `<=`,
|
|
10
|
+
* `>`, `>=` only, so the bridge-2 side condition — an EQUALITY between two
|
|
11
|
+
* derived ratios — cannot be written as one. It is carried in
|
|
12
|
+
* `sideConditions` as prose instead, and the equality is what witness W2
|
|
13
|
+
* executes. Writing an inequality that merely resembles it would be a
|
|
14
|
+
* fabricated constraint, so none is written. `groupDefinitions` is derived
|
|
15
|
+
* from the premise and conclusion parameters by `deriveRegimeGroups`, exactly
|
|
16
|
+
* as the models do; nothing there is hand-authored.
|
|
17
|
+
*
|
|
18
|
+
* **Evidence tags are witness-gated.** A tag appears only because a witness in
|
|
19
|
+
* `tests/atlas/oscillators-exact.test.ts` passes and shows it.
|
|
20
|
+
*
|
|
21
|
+
* @module atlas/oscillators/bridges-exact
|
|
22
|
+
*/
|
|
23
|
+
import type { AtlasBridge, RelationContract } from '../types.js';
|
|
24
|
+
/**
|
|
25
|
+
* Bridge 1 — the lossless spring ↔ LC dictionary.
|
|
26
|
+
*
|
|
27
|
+
* `m ↔ L`, `k ↔ 1/C`, `x ↔ q`. Under `u = x/x0` (or `q/q0`) and `τ = ω0 t`
|
|
28
|
+
* both systems become `u'' + u = 0`, so the equivalence is exact and
|
|
29
|
+
* invertible.
|
|
30
|
+
*
|
|
31
|
+
* Its counterexample is W2b, which lives on THIS bridge: it shows that adding
|
|
32
|
+
* a resistor to the LC side breaks the equivalence, so bridge 1 is a statement
|
|
33
|
+
* about the LOSSLESS pair only.
|
|
34
|
+
*
|
|
35
|
+
* @internal
|
|
36
|
+
*/
|
|
37
|
+
export declare const BRIDGE_SPRING_LC: AtlasBridge;
|
|
38
|
+
/**
|
|
39
|
+
* Bridge 2 — damped spring ↔ RLC, exact ON a side condition.
|
|
40
|
+
*
|
|
41
|
+
* The undamped dictionary of bridge 1 does not extend for free: `b` and `R`
|
|
42
|
+
* are independent parameters, and the nondimensional systems coincide only
|
|
43
|
+
* when the damping ratios match. The side condition is that equality, and W2
|
|
44
|
+
* DERIVES `R` from it rather than assuming a value.
|
|
45
|
+
*
|
|
46
|
+
* @internal
|
|
47
|
+
*/
|
|
48
|
+
export declare const BRIDGE_DAMPED_RLC: AtlasBridge;
|
|
49
|
+
/**
|
|
50
|
+
* Re-register an `AtlasBridge` through the Phase 1 `RelationContract` union.
|
|
51
|
+
*
|
|
52
|
+
* `AtlasBridge` states its two conditional requirements — `exact-equivalence`
|
|
53
|
+
* needs `inverse`, `approximation` needs `bound` — only in doc comments, so a
|
|
54
|
+
* record that breaks them type-checks. `RelationContract` states them in the
|
|
55
|
+
* type system. This function is the one place the Sprint 0 records cross from
|
|
56
|
+
* the weaker shape to the stronger one, and it THROWS on the two cases the
|
|
57
|
+
* doc comments could only describe.
|
|
58
|
+
*
|
|
59
|
+
* It copies rather than restates: every field comes off the bridge, so a
|
|
60
|
+
* contract cannot drift from the record it re-registers.
|
|
61
|
+
*
|
|
62
|
+
* @throws TypeError when the bridge omits the field its relation requires.
|
|
63
|
+
* @internal
|
|
64
|
+
*/
|
|
65
|
+
export declare function relationContractOf(bridge: AtlasBridge): RelationContract;
|
|
66
|
+
/** Bridge 1 re-registered through the Phase 1 contract. @internal */
|
|
67
|
+
export declare const CONTRACT_SPRING_LC: RelationContract;
|
|
68
|
+
/** Bridge 2 re-registered through the Phase 1 contract. @internal */
|
|
69
|
+
export declare const CONTRACT_DAMPED_RLC: RelationContract;
|
|
70
|
+
//# sourceMappingURL=bridges-exact.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bridges-exact.d.ts","sourceRoot":"","sources":["../../../src/atlas/oscillators/bridges-exact.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAIH,OAAO,KAAK,EAAE,WAAW,EAAuB,gBAAgB,EAAE,MAAM,aAAa,CAAC;AA+CtF;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,gBAAgB,EAAE,WA2D9B,CAAC;AAEF;;;;;;;;;GASG;AACH,eAAO,MAAM,iBAAiB,EAAE,WAoC/B,CAAC;AAMF;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,WAAW,GAAG,gBAAgB,CAwBxE;AAED,qEAAqE;AACrE,eAAO,MAAM,kBAAkB,EAAE,gBAAuD,CAAC;AAEzF,qEAAqE;AACrE,eAAO,MAAM,mBAAmB,EAAE,gBAAwD,CAAC"}
|
|
@@ -0,0 +1,230 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The two Phase 0 `exact-equivalence` bridges of design note §3.
|
|
3
|
+
*
|
|
4
|
+
* - `ab-spring-lc` — the lossless mechanical/electrical dictionary, exact with
|
|
5
|
+
* no side condition beyond positivity and losslessness.
|
|
6
|
+
* - `ab-damped-rlc` — exact only ON a side condition: the two damping ratios
|
|
7
|
+
* must agree, `b/(2√(mk)) = (R/2)√(C/L)`.
|
|
8
|
+
*
|
|
9
|
+
* **Regimes carry no inequalities.** `RegimeInequality` expresses `<`, `<=`,
|
|
10
|
+
* `>`, `>=` only, so the bridge-2 side condition — an EQUALITY between two
|
|
11
|
+
* derived ratios — cannot be written as one. It is carried in
|
|
12
|
+
* `sideConditions` as prose instead, and the equality is what witness W2
|
|
13
|
+
* executes. Writing an inequality that merely resembles it would be a
|
|
14
|
+
* fabricated constraint, so none is written. `groupDefinitions` is derived
|
|
15
|
+
* from the premise and conclusion parameters by `deriveRegimeGroups`, exactly
|
|
16
|
+
* as the models do; nothing there is hand-authored.
|
|
17
|
+
*
|
|
18
|
+
* **Evidence tags are witness-gated.** A tag appears only because a witness in
|
|
19
|
+
* `tests/atlas/oscillators-exact.test.ts` passes and shows it.
|
|
20
|
+
*
|
|
21
|
+
* @module atlas/oscillators/bridges-exact
|
|
22
|
+
*/
|
|
23
|
+
import { deriveRegimeGroups } from '../regime.js';
|
|
24
|
+
import { getAtlasModel } from './models.js';
|
|
25
|
+
const FAMILY = 'oscillators';
|
|
26
|
+
/** The witness test file every witness below runs in. */
|
|
27
|
+
const TEST = 'tests/atlas/oscillators-exact.test.ts';
|
|
28
|
+
/** Where the CAS witnesses W1s and W2s are named; the artifact pin runs them. */
|
|
29
|
+
const WITNESS_RESULTS_TEST = 'tests/atlas/witness-results.test.ts';
|
|
30
|
+
/**
|
|
31
|
+
* Literature for the electromechanical analogy, NOT a pointer at our own plan.
|
|
32
|
+
*
|
|
33
|
+
* The previous value here was `docs/planning/Atlas-Phase-0-Design.md §3, §6` - a citation
|
|
34
|
+
* naming the document that ASSERTED the claim. That is circular, and it is worse than an
|
|
35
|
+
* empty array because it LOOKS sourced and would satisfy any check that only asks whether
|
|
36
|
+
* `citations[]` is non-empty. Same failure class as the evidence-tag theatre that
|
|
37
|
+
* `tests/atlas/evidence-rule.test.ts` exists to catch.
|
|
38
|
+
*
|
|
39
|
+
* Work and topic are cited rather than precise section numbers, because a section number
|
|
40
|
+
* stated without checking the edition in hand is the same fabrication in a more confident
|
|
41
|
+
* costume. `reviewStatus` stays 'proposed' until the independent physicist review lands.
|
|
42
|
+
*/
|
|
43
|
+
const CITATIONS = [
|
|
44
|
+
'Olson, Dynamical Analogies - the force-voltage (impedance) analogy between a mass-spring–damper and a series RLC circuit',
|
|
45
|
+
'Feynman, Lectures on Physics Vol. II, chapter on resonance - the LC oscillator and its mechanical counterpart',
|
|
46
|
+
];
|
|
47
|
+
/**
|
|
48
|
+
* Regime coordinates spanning a bridge's premise and conclusion parameters.
|
|
49
|
+
*
|
|
50
|
+
* The two models' parameter names are disjoint in both bridges, so the union
|
|
51
|
+
* is a legal `deriveRegimeGroups` input.
|
|
52
|
+
*/
|
|
53
|
+
function bridgeRegime(premiseId, conclusionId) {
|
|
54
|
+
const parameters = [
|
|
55
|
+
...getAtlasModel(premiseId).parameters,
|
|
56
|
+
...getAtlasModel(conclusionId).parameters,
|
|
57
|
+
];
|
|
58
|
+
return {
|
|
59
|
+
family: FAMILY,
|
|
60
|
+
inequalities: [],
|
|
61
|
+
groupDefinitions: deriveRegimeGroups(FAMILY, parameters, []),
|
|
62
|
+
};
|
|
63
|
+
}
|
|
64
|
+
const evidence = (...tags) => new Set(tags);
|
|
65
|
+
/**
|
|
66
|
+
* Bridge 1 — the lossless spring ↔ LC dictionary.
|
|
67
|
+
*
|
|
68
|
+
* `m ↔ L`, `k ↔ 1/C`, `x ↔ q`. Under `u = x/x0` (or `q/q0`) and `τ = ω0 t`
|
|
69
|
+
* both systems become `u'' + u = 0`, so the equivalence is exact and
|
|
70
|
+
* invertible.
|
|
71
|
+
*
|
|
72
|
+
* Its counterexample is W2b, which lives on THIS bridge: it shows that adding
|
|
73
|
+
* a resistor to the LC side breaks the equivalence, so bridge 1 is a statement
|
|
74
|
+
* about the LOSSLESS pair only.
|
|
75
|
+
*
|
|
76
|
+
* @internal
|
|
77
|
+
*/
|
|
78
|
+
export const BRIDGE_SPRING_LC = {
|
|
79
|
+
id: 'ab-spring-lc',
|
|
80
|
+
relation: 'exact-equivalence',
|
|
81
|
+
premises: ['model-spring'],
|
|
82
|
+
conclusion: 'model-lc',
|
|
83
|
+
// Two nondimensionalizations, each with its own ω0; composed, the spring→LC map is
|
|
84
|
+
// q(t) = (q0/x0)·x(ω_LC t / ω_s). The dimensioned frequencies differ (W1a: ω_s = 2,
|
|
85
|
+
// ω_LC = 2√2); what is preserved is the frequency in units of ω0.
|
|
86
|
+
transformation: 'force–voltage analogy m ↔ L, k ↔ 1/C, x ↔ q (so ω0² = k/m ↔ 1/(LC)); ' +
|
|
87
|
+
'u = x/x0 or q/q0, τ = ω0 t; composed, q(t) = (q0/x0)·x(ω_LC t / ω_s)',
|
|
88
|
+
inverse: 'x = x0 u, t = τ/ω0',
|
|
89
|
+
preserves: ['the natural frequency in units of ω0 (ω = 1 in τ = ω0 t)', 'energy up to scale', 'phase portrait'],
|
|
90
|
+
doesNotPreserve: ['physical interpretation', 'units'],
|
|
91
|
+
sideConditions: ['m, k, L, C > 0', 'lossless', 'unforced', 'x0, q0 nonzero'],
|
|
92
|
+
regime: bridgeRegime('model-spring', 'model-lc'),
|
|
93
|
+
counterexamples: [
|
|
94
|
+
{
|
|
95
|
+
description: 'adding R to bridge 1 breaks it: the circuit L = 2, C = 0.125 of witness W2b with R = 4 has ' +
|
|
96
|
+
'ζ_RLC = (R/2)√(C/L) = 0.5, ' +
|
|
97
|
+
'which no lossless spring matches — the trajectories separate by more than 1e-2 at τ = π',
|
|
98
|
+
witness: 'W2b',
|
|
99
|
+
},
|
|
100
|
+
],
|
|
101
|
+
// `symbolically-checked` is NOT stored here any more (Phase 4 S4.3): it is
|
|
102
|
+
// DERIVED from `data/atlas/witness-results.json`, where W1s records the CAS
|
|
103
|
+
// check of this bridge's dictionary. A stored copy would be a second source
|
|
104
|
+
// of truth that no run could falsify.
|
|
105
|
+
evidence: evidence('proposed', 'numerically-supported'),
|
|
106
|
+
witnesses: [
|
|
107
|
+
{
|
|
108
|
+
id: 'W1',
|
|
109
|
+
kind: 'symbolic',
|
|
110
|
+
test: TEST,
|
|
111
|
+
tolerance: 'exact — rational exponent arithmetic, no floating point',
|
|
112
|
+
},
|
|
113
|
+
{
|
|
114
|
+
id: 'W1a',
|
|
115
|
+
kind: 'numeric',
|
|
116
|
+
test: TEST,
|
|
117
|
+
tolerance: '|u_spring − u_lc| < 1e-8; each within 1e-8 of cos τ',
|
|
118
|
+
},
|
|
119
|
+
{
|
|
120
|
+
id: 'W1b',
|
|
121
|
+
kind: 'numeric',
|
|
122
|
+
test: TEST,
|
|
123
|
+
tolerance: 'inverse-mapped trajectory solves m x″ + k x = 0 within 1e-8; a 1% wrong ω0 fails',
|
|
124
|
+
},
|
|
125
|
+
{ id: 'W2b', kind: 'numeric', test: TEST, tolerance: 'separation > 1e-2 at τ = π' },
|
|
126
|
+
{
|
|
127
|
+
id: 'W1s',
|
|
128
|
+
kind: 'symbolic',
|
|
129
|
+
test: WITNESS_RESULTS_TEST,
|
|
130
|
+
tolerance: 'CAS: k/m under m ↔ L, k ↔ 1/C minus 1/(LC) simplifies to literal 0',
|
|
131
|
+
},
|
|
132
|
+
],
|
|
133
|
+
citations: CITATIONS,
|
|
134
|
+
reviewStatus: 'proposed',
|
|
135
|
+
};
|
|
136
|
+
/**
|
|
137
|
+
* Bridge 2 — damped spring ↔ RLC, exact ON a side condition.
|
|
138
|
+
*
|
|
139
|
+
* The undamped dictionary of bridge 1 does not extend for free: `b` and `R`
|
|
140
|
+
* are independent parameters, and the nondimensional systems coincide only
|
|
141
|
+
* when the damping ratios match. The side condition is that equality, and W2
|
|
142
|
+
* DERIVES `R` from it rather than assuming a value.
|
|
143
|
+
*
|
|
144
|
+
* @internal
|
|
145
|
+
*/
|
|
146
|
+
export const BRIDGE_DAMPED_RLC = {
|
|
147
|
+
id: 'ab-damped-rlc',
|
|
148
|
+
relation: 'exact-equivalence',
|
|
149
|
+
premises: ['model-damped-spring'],
|
|
150
|
+
conclusion: 'model-rlc',
|
|
151
|
+
transformation: 'force–voltage analogy m ↔ L, k ↔ 1/C, b ↔ R, x ↔ q; ' +
|
|
152
|
+
'u = x/x0 or q/q0, τ = ω0 t; composed, q(t) = (q0/x0)·x(ω_RLC t / ω_mech)',
|
|
153
|
+
inverse: 'x = x0 u, t = τ/ω0',
|
|
154
|
+
preserves: ['the natural frequency in units of ω0 (ω = 1 in τ = ω0 t)', 'damping ratio', 'phase portrait'],
|
|
155
|
+
doesNotPreserve: ['physical interpretation', 'units'],
|
|
156
|
+
sideConditions: [
|
|
157
|
+
'b/√(mk) = R√(C/L), equivalently ζ_mech = b/(2√(mk)) equals ζ_RLC = (R/2)√(C/L)',
|
|
158
|
+
'm, b, k, L, R, C > 0',
|
|
159
|
+
'unforced',
|
|
160
|
+
'x0, q0 nonzero',
|
|
161
|
+
],
|
|
162
|
+
regime: bridgeRegime('model-damped-spring', 'model-rlc'),
|
|
163
|
+
counterexamples: [],
|
|
164
|
+
evidence: evidence('proposed', 'numerically-supported'),
|
|
165
|
+
witnesses: [
|
|
166
|
+
{
|
|
167
|
+
id: 'W2',
|
|
168
|
+
kind: 'numeric',
|
|
169
|
+
test: TEST,
|
|
170
|
+
tolerance: 'R derived exactly; |u_mech − u_rlc| < 1e-8 at four τ',
|
|
171
|
+
},
|
|
172
|
+
{
|
|
173
|
+
id: 'W2s',
|
|
174
|
+
kind: 'symbolic',
|
|
175
|
+
test: WITNESS_RESULTS_TEST,
|
|
176
|
+
tolerance: 'CAS: b²/(4mk) under m ↔ L, k ↔ 1/C, b ↔ R minus R²C/(4L) simplifies to literal 0',
|
|
177
|
+
},
|
|
178
|
+
],
|
|
179
|
+
citations: CITATIONS,
|
|
180
|
+
reviewStatus: 'proposed',
|
|
181
|
+
};
|
|
182
|
+
// ─────────────────────────────────────────────────────────────────────────────
|
|
183
|
+
// Phase 1 re-registration: the Sprint 0 bridges through `RelationContract`
|
|
184
|
+
// ─────────────────────────────────────────────────────────────────────────────
|
|
185
|
+
/**
|
|
186
|
+
* Re-register an `AtlasBridge` through the Phase 1 `RelationContract` union.
|
|
187
|
+
*
|
|
188
|
+
* `AtlasBridge` states its two conditional requirements — `exact-equivalence`
|
|
189
|
+
* needs `inverse`, `approximation` needs `bound` — only in doc comments, so a
|
|
190
|
+
* record that breaks them type-checks. `RelationContract` states them in the
|
|
191
|
+
* type system. This function is the one place the Sprint 0 records cross from
|
|
192
|
+
* the weaker shape to the stronger one, and it THROWS on the two cases the
|
|
193
|
+
* doc comments could only describe.
|
|
194
|
+
*
|
|
195
|
+
* It copies rather than restates: every field comes off the bridge, so a
|
|
196
|
+
* contract cannot drift from the record it re-registers.
|
|
197
|
+
*
|
|
198
|
+
* @throws TypeError when the bridge omits the field its relation requires.
|
|
199
|
+
* @internal
|
|
200
|
+
*/
|
|
201
|
+
export function relationContractOf(bridge) {
|
|
202
|
+
const { relation, transformation } = bridge;
|
|
203
|
+
switch (relation) {
|
|
204
|
+
case 'exact-equivalence': {
|
|
205
|
+
if (bridge.inverse === undefined) {
|
|
206
|
+
throw new TypeError(`${bridge.id}: exact-equivalence without an inverse`);
|
|
207
|
+
}
|
|
208
|
+
return { type: relation, transformation, inverse: bridge.inverse };
|
|
209
|
+
}
|
|
210
|
+
case 'approximation': {
|
|
211
|
+
if (bridge.bound === undefined) {
|
|
212
|
+
throw new TypeError(`${bridge.id}: approximation without a bound`);
|
|
213
|
+
}
|
|
214
|
+
return { type: relation, transformation, bound: bridge.bound };
|
|
215
|
+
}
|
|
216
|
+
case 'coarse-graining':
|
|
217
|
+
// `bound` is OPTIONAL here: the chain/wave bridge carries none, and the
|
|
218
|
+
// union allows that rather than forcing an invented one.
|
|
219
|
+
return bridge.bound === undefined
|
|
220
|
+
? { type: relation, transformation }
|
|
221
|
+
: { type: relation, transformation, bound: bridge.bound };
|
|
222
|
+
default:
|
|
223
|
+
return { type: relation, transformation };
|
|
224
|
+
}
|
|
225
|
+
}
|
|
226
|
+
/** Bridge 1 re-registered through the Phase 1 contract. @internal */
|
|
227
|
+
export const CONTRACT_SPRING_LC = relationContractOf(BRIDGE_SPRING_LC);
|
|
228
|
+
/** Bridge 2 re-registered through the Phase 1 contract. @internal */
|
|
229
|
+
export const CONTRACT_DAMPED_RLC = relationContractOf(BRIDGE_DAMPED_RLC);
|
|
230
|
+
//# sourceMappingURL=bridges-exact.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bridges-exact.js","sourceRoot":"","sources":["../../../src/atlas/oscillators/bridges-exact.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The two Phase 0 APPROXIMATION bridges — design note §3, bridges 3 and 4.
|
|
3
|
+
*
|
|
4
|
+
* - `ab-pendulum-linear` — a REGULAR limit. `θ'' + ω0² sin θ = 0` reduces to
|
|
5
|
+
* `θ'' + ω0² θ = 0` as `θ0 → 0`. The order of the system does not drop, the
|
|
6
|
+
* error is `O(θ0²)` in the relative period, and the approximation is
|
|
7
|
+
* NON-UNIFORM in time: a fixed relative period error accumulates phase
|
|
8
|
+
* without bound, so the bound carries the horizon `t ≪ 16 T0/θ0²`.
|
|
9
|
+
* - `ab-damped-massless` — a SINGULAR limit. `m x'' + b x' + k x = 0` reduces
|
|
10
|
+
* to `b x' + k x = 0` as `m → 0`. The order DROPS from two to one, one
|
|
11
|
+
* initial condition is lost, and the reduced model cannot satisfy `x'(0)`.
|
|
12
|
+
* The bound therefore holds only OUTSIDE the boundary layer, `t ≥ 5 m/b`.
|
|
13
|
+
*
|
|
14
|
+
* On the position offset of the singular bridge: `x_full − x_red` is an
|
|
15
|
+
* `O((1 + |v0|) m)` deviation that PERSISTS THROUGHOUT THE OUTER REGION and
|
|
16
|
+
* decays only on the slow time scale `b/k`. It is the matched-asymptotics
|
|
17
|
+
* correction, not a boundary-layer transient, and waiting out the fast mode
|
|
18
|
+
* does not remove it. (Design note §9 YELLOW (5) — "non-vanishing" was the
|
|
19
|
+
* imprecise wording this replaces: the offset does go to zero as `t → ∞`.)
|
|
20
|
+
*
|
|
21
|
+
* @module atlas/oscillators/bridges-limits
|
|
22
|
+
*/
|
|
23
|
+
import type { ApproximationBound, AtlasBridge, RelationContract } from '../types.js';
|
|
24
|
+
/**
|
|
25
|
+
* Build an `ApproximationBound`, rejecting one with no prose horizon.
|
|
26
|
+
*
|
|
27
|
+
* Every `approximation` bridge in this module is constructed through here, so
|
|
28
|
+
* the mandatory-horizon rule of `ApproximationBound` has something that FAILS
|
|
29
|
+
* rather than a comment asking for compliance. `horizonHolds` is mandatory by
|
|
30
|
+
* the type; the prose `horizon` is the field a caller can satisfy with `''`,
|
|
31
|
+
* so it is the one checked at run time. `uniformity: null` is accepted: not
|
|
32
|
+
* yet analysed is a real state, and the refusal lives in `boundPath`.
|
|
33
|
+
*
|
|
34
|
+
* @throws MissingHorizonError if `horizon` is empty or whitespace.
|
|
35
|
+
* @internal
|
|
36
|
+
*/
|
|
37
|
+
export declare function makeApproximation(bound: ApproximationBound): ApproximationBound;
|
|
38
|
+
/**
|
|
39
|
+
* The EXACT relative period error of the pendulum at amplitude `theta0`:
|
|
40
|
+
* `(2/π) K(sin(θ0/2)) − 1 = 1/AGM(1, cos(θ0/2)) − 1`.
|
|
41
|
+
*
|
|
42
|
+
* This is the machine form of `ab-pendulum-linear`'s `delta`. It is SHARP —
|
|
43
|
+
* the bound equals the error it bounds — and it is strictly increasing in
|
|
44
|
+
* `|θ0|`, so its value at the edge of a declared amplitude range is the
|
|
45
|
+
* supremum over that range. That last property is what lets the record state
|
|
46
|
+
* one scalar for the whole domain honestly.
|
|
47
|
+
*
|
|
48
|
+
* The series `θ0²/16` is the LEADING TERM of this quantity, not an upper bound
|
|
49
|
+
* on it: at the domain edge `θ0 = 0.5` the series gives `0.0156250` while the
|
|
50
|
+
* exact error is `0.0158525311`, so the series UNDERSTATES by 1.456%. A record
|
|
51
|
+
* that declares the series value is violated at its own boundary.
|
|
52
|
+
*
|
|
53
|
+
* @returns `Infinity` outside `|θ0| < π`, where no finite period error exists.
|
|
54
|
+
* @internal
|
|
55
|
+
*/
|
|
56
|
+
export declare function pendulumPeriodErrorAt(params: Readonly<Record<string, number>>): number;
|
|
57
|
+
/**
|
|
58
|
+
* The position-offset bound of `ab-damped-massless` at a point:
|
|
59
|
+
* `2 (1 + |v0|) m / b`, the formula this record's docstring has always
|
|
60
|
+
* carried. It is a bound ONLY at the witness normalisation `b = k = x0 = 1`:
|
|
61
|
+
* the leading offset is `(m/b)(v0 + k x0/b)`, and the formula has no `k` or
|
|
62
|
+
* `x0` in it. At `m = 1e-3, b = 1, k = 100` (inside `m k/b² < 1/4`) the true
|
|
63
|
+
* error is more than 20 times the formula.
|
|
64
|
+
*
|
|
65
|
+
* @returns `Infinity` unless `m`, `b`, `k`, `x0` and `v0` are all finite and
|
|
66
|
+
* `b = k = x0 = 1` — a missing parameter would otherwise silently return a
|
|
67
|
+
* bound for a normalisation the caller did not ask about.
|
|
68
|
+
* @internal
|
|
69
|
+
*/
|
|
70
|
+
export declare function dampedOffsetBoundAt(params: Readonly<Record<string, number>>): number;
|
|
71
|
+
/**
|
|
72
|
+
* `ab-pendulum-linear` — small-angle pendulum → harmonic spring.
|
|
73
|
+
*
|
|
74
|
+
* `θ0²/16` is the leading term of the exact relative period error
|
|
75
|
+
* `(2/π) K(sin(θ0/2)) − 1`. At `θ0 = 0.2` the residual is `5.744e-6`, which
|
|
76
|
+
* the next series term `11 θ0⁴/3072 = 5.729e-6` accounts for to `1.5e-8`.
|
|
77
|
+
*
|
|
78
|
+
* `delta` is the EXACT error at the edge of the declared range, not that
|
|
79
|
+
* series term. The record previously declared `0.5²/16 = 0.0156250`, which is
|
|
80
|
+
* the series evaluated at `θ0 = 0.5` — and the exact error there is
|
|
81
|
+
* `0.0158525311`, so the declared bound was VIOLATED AT ITS OWN BOUNDARY by
|
|
82
|
+
* 1.456%. A truncated series is an approximation of the error, not a bound on
|
|
83
|
+
* it, and the sign of its omitted tail decides which. Here the tail is
|
|
84
|
+
* positive, so the series sits below what it was asked to cover.
|
|
85
|
+
*
|
|
86
|
+
* @internal
|
|
87
|
+
*/
|
|
88
|
+
export declare const AB_PENDULUM_LINEAR: AtlasBridge;
|
|
89
|
+
/**
|
|
90
|
+
* `ab-damped-massless` — the SINGULAR `m → 0` limit of the damped spring.
|
|
91
|
+
*
|
|
92
|
+
* `deltaAt = 2(1 + |v0|) m/b` bounds the position offset outside the boundary
|
|
93
|
+
* layer, and `delta` is its supremum over the declared range rather than its
|
|
94
|
+
* value at one fixture. The lost initial condition is visible in the VELOCITY: inside the
|
|
95
|
+
* layer the reduced model's `x'` is wrong by O(1/m·…), and it is only after
|
|
96
|
+
* `t ≈ 5 m/b` that the fast mode has decayed.
|
|
97
|
+
*
|
|
98
|
+
* @internal
|
|
99
|
+
*/
|
|
100
|
+
export declare const AB_DAMPED_MASSLESS: AtlasBridge;
|
|
101
|
+
/** The two approximation bridges of this module, in design-note order. @internal */
|
|
102
|
+
export declare const LIMIT_BRIDGES: readonly AtlasBridge[];
|
|
103
|
+
/**
|
|
104
|
+
* The two approximation bridges re-registered through `RelationContract`.
|
|
105
|
+
*
|
|
106
|
+
* The union REQUIRES `bound` on an `approximation`, and `ApproximationBound`
|
|
107
|
+
* requires its own machine `horizonHolds`, so these two lines are what turn
|
|
108
|
+
* Sprint 0's doc-comment requirement into a compile-and-throw one. Both bounds
|
|
109
|
+
* are the records' own, measured ones — nothing is restated here.
|
|
110
|
+
*
|
|
111
|
+
* @internal
|
|
112
|
+
*/
|
|
113
|
+
export declare const CONTRACT_PENDULUM_LINEAR: RelationContract;
|
|
114
|
+
/** @internal */
|
|
115
|
+
export declare const CONTRACT_DAMPED_MASSLESS: RelationContract;
|
|
116
|
+
/** The two limit contracts, in design-note order. @internal */
|
|
117
|
+
export declare const LIMIT_CONTRACTS: readonly RelationContract[];
|
|
118
|
+
//# sourceMappingURL=bridges-limits.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bridges-limits.d.ts","sourceRoot":"","sources":["../../../src/atlas/oscillators/bridges-limits.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAIH,OAAO,KAAK,EAAE,kBAAkB,EAAE,WAAW,EAAE,gBAAgB,EAAU,MAAM,aAAa,CAAC;AAQ7F;;;;;;;;;;;;GAYG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,kBAAkB,GAAG,kBAAkB,CAO/E;AAYD;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,GAAG,MAAM,CAItF;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,GAAG,MAAM,CAKpF;AAuCD;;;;;;;;;;;;;;;;GAgBG;AACH,eAAO,MAAM,kBAAkB,EAAE,WA4FhC,CAAC;AAEF;;;;;;;;;;GAUG;AACH,eAAO,MAAM,kBAAkB,EAAE,WA2EhC,CAAC;AAEF,oFAAoF;AACpF,eAAO,MAAM,aAAa,EAAE,SAAS,WAAW,EAA6C,CAAC;AAE9F;;;;;;;;;GASG;AACH,eAAO,MAAM,wBAAwB,EAAE,gBACC,CAAC;AAEzC,gBAAgB;AAChB,eAAO,MAAM,wBAAwB,EAAE,gBACC,CAAC;AAEzC,+DAA+D;AAC/D,eAAO,MAAM,eAAe,EAAE,SAAS,gBAAgB,EAGtD,CAAC"}
|